OSDN Git Service

[Refactor] #38824 get_item() を choose_object() に置換中。 / Replacing get_item() to choose...
[hengband/hengband.git] / src / cmd-eat.c
index e9073fe..db3179f 100644 (file)
@@ -8,13 +8,14 @@
 \r
 \r
 #include "angband.h"\r
+#include "object-hook.h"\r
 \r
 /*!\r
  * @brief 食料を食べるコマンドのサブルーチン\r
  * @param item 食べるオブジェクトの所持品ID\r
  * @return なし\r
  */\r
-void do_cmd_eat_food_aux(int item)\r
+void do_cmd_eat_food_aux(INVENTORY_IDX item)\r
 {\r
        int ident, lev;\r
        object_type *o_ptr;\r
@@ -34,10 +35,8 @@ void do_cmd_eat_food_aux(int item)
                o_ptr = &o_list[0 - item];\r
        }\r
 \r
-       /* Sound */\r
        sound(SOUND_EAT);\r
 \r
-       /* Take a turn */\r
        p_ptr->energy_use = 100;\r
 \r
        /* Identity not known yet */\r
@@ -197,7 +196,7 @@ void do_cmd_eat_food_aux(int item)
 \r
                case SV_FOOD_CURE_SERIOUS:\r
                {\r
-                       if (hp_player(damroll(4, 8))) ident = TRUE;\r
+                       ident = cure_serious_wounds(4, 8);\r
                        break;\r
                }\r
 \r
@@ -215,12 +214,7 @@ void do_cmd_eat_food_aux(int item)
 \r
                case SV_FOOD_RESTORING:\r
                {\r
-                       if (do_res_stat(A_STR)) ident = TRUE;\r
-                       if (do_res_stat(A_INT)) ident = TRUE;\r
-                       if (do_res_stat(A_WIS)) ident = TRUE;\r
-                       if (do_res_stat(A_DEX)) ident = TRUE;\r
-                       if (do_res_stat(A_CON)) ident = TRUE;\r
-                       if (do_res_stat(A_CHR)) ident = TRUE;\r
+                       ident = restore_all_status();\r
                        break;\r
                }\r
 \r
@@ -304,7 +298,7 @@ void do_cmd_eat_food_aux(int item)
        }\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
@@ -323,7 +317,6 @@ void do_cmd_eat_food_aux(int item)
                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
@@ -362,7 +355,7 @@ void do_cmd_eat_food_aux(int item)
                        o_ptr->ident |= (IDENT_EMPTY);\r
 \r
                        /* Combine / Reorder the pack (later) */\r
-                       p_ptr->notice |= (PN_COMBINE | PN_REORDER);\r
+                       p_ptr->update |= (PU_COMBINE | PU_REORDER);\r
                        p_ptr->window |= (PW_INVEN);\r
 \r
                        return;\r
@@ -381,8 +374,6 @@ void do_cmd_eat_food_aux(int item)
                {\r
                        object_type forge;\r
                        object_type *q_ptr;\r
-\r
-                       /* Get local object */\r
                        q_ptr = &forge;\r
 \r
                        /* Obtain a local object */\r
@@ -399,7 +390,6 @@ void do_cmd_eat_food_aux(int item)
                        p_ptr->total_weight -= q_ptr->weight;\r
                        item = inven_carry(q_ptr);\r
 \r
-                       /* Message */\r
                        msg_format(_("杖をまとめなおした。", "You unstack your staff."));\r
                }\r
 \r
@@ -415,7 +405,6 @@ void do_cmd_eat_food_aux(int item)
                        floor_item_charges(0 - item);\r
                }\r
 \r
-               /* Window stuff */\r
                p_ptr->window |= (PW_INVEN | PW_EQUIP);\r
 \r
                /* Don't eat a staff/wand itself */\r
@@ -427,7 +416,7 @@ void do_cmd_eat_food_aux(int item)
                        my_strchr("pht", r_info[o_ptr->pval].d_char)))\r
        {\r
                /* Drain vitality of humanoids */\r
-               char o_name[MAX_NLEN];\r
+               GAME_TEXT o_name[MAX_NLEN];\r
                object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));\r
                msg_format(_("%sは燃え上り灰になった。精力を吸収した気がする。", "%^s is burnt to ashes.  You absorb its vitality!"), o_name);\r
                (void)set_food(PY_FOOD_MAX - 1);\r
@@ -451,8 +440,6 @@ void do_cmd_eat_food_aux(int item)
                                object_type *q_ptr = &forge;\r
 \r
                                msg_print(_("食べ物がアゴを素通りして落ちた!", "The food falls through your jaws!"));\r
-\r
-                               /* Create the item */\r
                                object_prep(q_ptr, lookup_kind(o_ptr->tval, o_ptr->sval));\r
 \r
                                /* Drop the object from heaven */\r
@@ -504,48 +491,6 @@ void do_cmd_eat_food_aux(int item)
 \r
 \r
 /*!\r
- * @brief オブジェクトをプレイヤーが食べることができるかを判定する /\r
- * Hook to determine if an object is eatable\r
- * @param o_ptr 判定したいオブジェクトの構造体参照ポインタ\r
- * @return 食べることが可能ならばTRUEを返す\r
- */\r
-static bool item_tester_hook_eatable(object_type *o_ptr)\r
-{\r
-       if (o_ptr->tval == TV_FOOD) return TRUE;\r
-\r
-#if 0\r
-       if (prace_is_(RACE_SKELETON))\r
-       {\r
-               if (o_ptr->tval == TV_SKELETON ||\r
-                       (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_SKELETON))\r
-                       return TRUE;\r
-       }\r
-       else\r
-#endif\r
-\r
-               if (prace_is_(RACE_SKELETON) ||\r
-                       prace_is_(RACE_GOLEM) ||\r
-                       prace_is_(RACE_ZOMBIE) ||\r
-                       prace_is_(RACE_SPECTRE))\r
-               {\r
-                       if (o_ptr->tval == TV_STAFF || o_ptr->tval == TV_WAND)\r
-                               return TRUE;\r
-               }\r
-               else if (prace_is_(RACE_DEMON) ||\r
-                       (mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_DEMON))\r
-               {\r
-                       if (o_ptr->tval == TV_CORPSE &&\r
-                               o_ptr->sval == SV_CORPSE &&\r
-                               my_strchr("pht", r_info[o_ptr->pval].d_char))\r
-                               return TRUE;\r
-               }\r
-\r
-       /* Assume not */\r
-       return (FALSE);\r
-}\r
-\r
-\r
-/*!\r
  * @brief 食料を食べるコマンドのメインルーチン /\r
  * Eat some food (from the pack or floor)\r
  * @return なし\r
@@ -555,7 +500,6 @@ void do_cmd_eat_food(void)
        OBJECT_IDX item;\r
        cptr        q, s;\r
 \r
-\r
        if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))\r
        {\r
                set_action(ACTION_NONE);\r
@@ -564,11 +508,10 @@ void do_cmd_eat_food(void)
        /* Restrict choices to food */\r
        item_tester_hook = item_tester_hook_eatable;\r
 \r
-       /* Get an item */\r
        q = _("どれを食べますか? ", "Eat which item? ");\r
        s = _("食べ物がない。", "You have nothing to eat.");\r
 \r
-       if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return;\r
+       if (!choose_object(&item, q, s, (USE_INVEN | USE_FLOOR))) return;\r
 \r
        /* Eat the object */\r
        do_cmd_eat_food_aux(item);\r