OSDN Git Service

[Refactor] #37353 アリーナのコマンド制限処理を cmd_limit_arena() に統合。 / Integrate command limitatio...
[hengband/hengband.git] / src / cmd-read.c
index c3b4e80..d789a1b 100644 (file)
@@ -9,6 +9,12 @@
 #include "angband.h"\r
 #include "object-hook.h"\r
 #include "spells-summon.h"\r
+#include "artifact.h"\r
+#include "avatar.h"\r
+#include "player-status.h"\r
+#include "spells-status.h"\r
+#include "rumor.h"\r
+#include "realm-hex.h"\r
 \r
 /*!\r
  * @brief 巻物を読むコマンドのサブルーチン\r
@@ -104,12 +110,12 @@ void do_cmd_read_scroll_aux(INVENTORY_IDX item, bool known)
                case SV_SCROLL_CURSE_WEAPON:\r
                {\r
                        k = 0;\r
-                       if (buki_motteruka(INVEN_RARM))\r
+                       if (has_melee_weapon(INVEN_RARM))\r
                        {\r
                                k = INVEN_RARM;\r
-                               if (buki_motteruka(INVEN_LARM) && one_in_(2)) k = INVEN_LARM;\r
+                               if (has_melee_weapon(INVEN_LARM) && one_in_(2)) k = INVEN_LARM;\r
                        }\r
-                       else if (buki_motteruka(INVEN_LARM)) k = INVEN_LARM;\r
+                       else if (has_melee_weapon(INVEN_LARM)) k = INVEN_LARM;\r
                        if (k && curse_weapon(FALSE, k)) ident = TRUE;\r
                        break;\r
                }\r
@@ -185,7 +191,7 @@ void do_cmd_read_scroll_aux(INVENTORY_IDX 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
@@ -532,7 +538,7 @@ void do_cmd_read_scroll_aux(INVENTORY_IDX item, bool known)
        }\r
        else if (o_ptr->tval==TV_PARCHMENT)\r
        {\r
-               cptr q;\r
+               concptr q;\r
                GAME_TEXT o_name[MAX_NLEN];\r
                char buf[1024];\r
                screen_save();\r
@@ -552,8 +558,6 @@ void do_cmd_read_scroll_aux(INVENTORY_IDX item, bool known)
                used_up=FALSE;\r
        }\r
 \r
-\r
-       /* Combine / Reorder the pack (later) */\r
        p_ptr->update |= (PU_COMBINE | PU_REORDER);\r
 \r
        if (!(object_is_aware(o_ptr)))\r
@@ -610,19 +614,14 @@ 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
+       if (cmd_limit_arena(p_ptr)) return;\r
 \r
        if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))\r
        {\r
@@ -653,19 +652,8 @@ void do_cmd_read_scroll(void)
        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