OSDN Git Service

[Refactor] #37353 型の置換(C_MAKE)。 / Type replacement(C_MAKE).
[hengband/hengband.git] / src / cmd-read.c
index 45d5c2d..c408a3d 100644 (file)
@@ -6,8 +6,9 @@
  * cmd6.cより分離。\r
  */\r
 \r
-\r
 #include "angband.h"\r
+#include "object-hook.h"\r
+#include "spells-summon.h"\r
 \r
 /*!\r
  * @brief 巻物を読むコマンドのサブルーチン\r
@@ -22,7 +23,7 @@
  * cancelled before use.  XXX Reading them still takes a turn, though.\r
  * </pre>\r
  */\r
-void do_cmd_read_scroll_aux(int item, bool known)\r
+void do_cmd_read_scroll_aux(INVENTORY_IDX item, bool known)\r
 {\r
        int         k, used_up, ident, lev;\r
        object_type *o_ptr;\r
@@ -41,7 +42,6 @@ void do_cmd_read_scroll_aux(int item, bool known)
        }\r
 \r
 \r
-       /* Take a turn */\r
        p_ptr->energy_use = 100;\r
 \r
        if (world_player)\r
@@ -118,7 +118,7 @@ void do_cmd_read_scroll_aux(int item, bool known)
                {\r
                        for (k = 0; k < randint1(3); k++)\r
                        {\r
-                               if (summon_specific(0, p_ptr->y, p_ptr->x, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))\r
+                               if (summon_specific(0, p_ptr->y, p_ptr->x, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0'))\r
                                {\r
                                        ident = TRUE;\r
                                }\r
@@ -130,7 +130,7 @@ void do_cmd_read_scroll_aux(int item, bool known)
                {\r
                        for (k = 0; k < randint1(3); k++)\r
                        {\r
-                               if (summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))\r
+                               if (summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0'))\r
                                {\r
                                        ident = TRUE;\r
                                }\r
@@ -140,7 +140,7 @@ void do_cmd_read_scroll_aux(int item, bool known)
 \r
                case SV_SCROLL_SUMMON_PET:\r
                {\r
-                       if (summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, 0, (PM_ALLOW_GROUP | PM_FORCE_PET)))\r
+                       if (summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, 0, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0'))\r
                        {\r
                                ident = TRUE;\r
                        }\r
@@ -185,7 +185,7 @@ void do_cmd_read_scroll_aux(int item, bool known)
 \r
                case SV_SCROLL_WORD_OF_RECALL:\r
                {\r
-                       if (!word_of_recall()) used_up = FALSE;\r
+                       if (!recall_player(p_ptr, randint0(21) + 15)) used_up = FALSE;\r
                        ident = TRUE;\r
                        break;\r
                }\r
@@ -208,7 +208,6 @@ void do_cmd_read_scroll_aux(int item, bool known)
                {\r
                        if (remove_curse())\r
                        {\r
-                               msg_print(_("誰かに見守られているような気がする。", "You feel as if someone is watching over you."));\r
                                ident = TRUE;\r
                        }\r
                        break;\r
@@ -218,9 +217,8 @@ void do_cmd_read_scroll_aux(int item, bool known)
                {\r
                        if (remove_all_curse())\r
                        {\r
-                               msg_print(_("誰かに見守られているような気がする。", "You feel as if someone is watching over you."));\r
+                               ident = TRUE;\r
                        }\r
-                       ident = TRUE;\r
                        break;\r
                }\r
 \r
@@ -534,11 +532,9 @@ void do_cmd_read_scroll_aux(int item, bool known)
        }\r
        else if (o_ptr->tval==TV_PARCHMENT)\r
        {\r
-               cptr q;\r
-               char o_name[MAX_NLEN];\r
+               concptr q;\r
+               GAME_TEXT o_name[MAX_NLEN];\r
                char buf[1024];\r
-\r
-               /* Save screen */\r
                screen_save();\r
 \r
                q=format("book-%d_jp.txt",o_ptr->sval);\r
@@ -551,8 +547,6 @@ void do_cmd_read_scroll_aux(int item, bool known)
 \r
                /* Peruse the help file */\r
                (void)show_file(TRUE, buf, o_name, 0, 0);\r
-\r
-               /* Load screen */\r
                screen_load();\r
 \r
                used_up=FALSE;\r
@@ -560,7 +554,7 @@ void do_cmd_read_scroll_aux(int item, bool known)
 \r
 \r
        /* Combine / Reorder the pack (later) */\r
-       p_ptr->notice |= (PN_COMBINE | PN_REORDER);\r
+       p_ptr->update |= (PU_COMBINE | PU_REORDER);\r
 \r
        if (!(object_is_aware(o_ptr)))\r
        {\r
@@ -579,7 +573,6 @@ void do_cmd_read_scroll_aux(int item, bool known)
                gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);\r
        }\r
 \r
-       /* Window stuff */\r
        p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);\r
 \r
 \r
@@ -609,20 +602,6 @@ void do_cmd_read_scroll_aux(int item, bool known)
 }\r
 \r
 /*!\r
- * @brief オブジェクトをプレイヤーが読むことができるかを判定する /\r
- * Hook to determine if an object is readable\r
- * @param o_ptr 判定したいオブジェクトの構造体参照ポインタ\r
- * @return 読むことが可能ならばTRUEを返す\r
- */\r
-static bool item_tester_hook_readable(object_type *o_ptr)\r
-{\r
-       if ((o_ptr->tval==TV_SCROLL) || (o_ptr->tval==TV_PARCHMENT) || (o_ptr->name1 == ART_GHB) || (o_ptr->name1 == ART_POWER)) return (TRUE);\r
-\r
-       /* Assume not */\r
-       return (FALSE);\r
-}\r
-\r
-/*!\r
  * @brief 読むコマンドのメインルーチン /\r
  * Eat some food (from the pack or floor)\r
  * @return なし\r
@@ -631,7 +610,19 @@ void do_cmd_read_scroll(void)
 {\r
        object_type *o_ptr;\r
        OBJECT_IDX item;\r
-       cptr q, s;\r
+       concptr q, s;\r
+\r
+       if (p_ptr->wild_mode)\r
+       {\r
+               return;\r
+       }\r
+\r
+       if (p_ptr->inside_arena)\r
+       {\r
+               msg_print(_("アリーナが魔法を吸収した!", "The arena absorbs all attempted magic!"));\r
+               msg_print(NULL);\r
+               return;\r
+       }\r
 \r
        if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))\r
        {\r
@@ -659,23 +650,11 @@ void do_cmd_read_scroll(void)
        /* Restrict choices to scrolls */\r
        item_tester_hook = item_tester_hook_readable;\r
 \r
-       /* Get an item */\r
        q = _("どの巻物を読みますか? ", "Read which scroll? ");\r
        s = _("読める巻物がない。", "You have no scrolls to read.");\r
 \r
-       if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return;\r
-\r
-       /* Get the item (in the pack) */\r
-       if (item >= 0)\r
-       {\r
-               o_ptr = &inventory[item];\r
-       }\r
-\r
-       /* Get the item (on the floor) */\r
-       else\r
-       {\r
-               o_ptr = &o_list[0 - item];\r
-       }\r
+       o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_FLOOR));\r
+       if (!o_ptr) return;\r
 \r
        /* Read the scroll */\r
        do_cmd_read_scroll_aux(item, object_is_aware(o_ptr));\r