OSDN Git Service

[Refactor] #37353 グローバル変数 dungeon_type を他の慣例に従い dungeon_idx に改名。 / Rename dungeon_typ...
[hengband/hengband.git] / src / cmd-quaff.c
index c675aff..5a4d695 100644 (file)
@@ -9,6 +9,10 @@
 #include "angband.h"\r
 #include "selfinfo.h"\r
 #include "object-hook.h"\r
+#include "mutation.h"\r
+#include "avatar.h"\r
+#include "spells-status.h"\r
+#include "realm-hex.h"\r
 \r
 /*!\r
  * @brief 薬を飲むコマンドのサブルーチン /\r
@@ -25,7 +29,7 @@ void do_cmd_quaff_potion_aux(INVENTORY_IDX item)
        object_type *q_ptr;\r
 \r
 \r
-       if (world_player)\r
+       if (p_ptr->timewalk)\r
        {\r
                if (flush_failure) flush();\r
                msg_print(_("瓶から水が流れ出てこない!", "The potion doesn't flow out from a bottle."));\r
@@ -151,37 +155,8 @@ void do_cmd_quaff_potion_aux(INVENTORY_IDX item)
                        }\r
                        break;\r
 \r
-               case SV_POTION_CONFUSION: /* Booze */\r
-                       if (p_ptr->pclass != CLASS_MONK) chg_virtue(V_HARMONY, -1);\r
-                       else if (!p_ptr->resist_conf) p_ptr->special_attack |= ATTACK_SUIKEN;\r
-                       if (!p_ptr->resist_conf)\r
-                       {\r
-                               if (set_confused(randint0(20) + 15))\r
-                               {\r
-                                       ident = TRUE;\r
-                               }\r
-                       }\r
-\r
-                       if (!p_ptr->resist_chaos)\r
-                       {\r
-                               if (one_in_(2))\r
-                               {\r
-                                       if (set_image(p_ptr->image + randint0(150) + 150))\r
-                                       {\r
-                                               ident = TRUE;\r
-                                       }\r
-                               }\r
-                               if (one_in_(13) && (p_ptr->pclass != CLASS_MONK))\r
-                               {\r
-                                       ident = TRUE;\r
-                                       if (one_in_(3)) lose_all_info();\r
-                                       else wiz_dark();\r
-                                       (void)teleport_player_aux(100, TELEPORT_NONMAGICAL | TELEPORT_PASSIVE);\r
-                                       wiz_dark();\r
-                                       msg_print(_("知らない場所で目が醒めた。頭痛がする。", "You wake up somewhere with a sore head..."));\r
-                                       msg_print(_("何も思い出せない。どうやってここへ来たのかも分からない!", "You can't remember a thing, or how you got here!"));\r
-                               }\r
-                       }\r
+               case SV_POTION_BOOZE:\r
+                       ident = booze(p_ptr);\r
                        break;\r
 \r
                case SV_POTION_SLEEP:\r
@@ -252,12 +227,7 @@ void do_cmd_quaff_potion_aux(INVENTORY_IDX item)
                        break;\r
 \r
                case SV_POTION_DETONATIONS:\r
-                       msg_print(_("体の中で激しい爆発が起きた!", "Massive explosions rupture your body!"));\r
-                       take_hit(DAMAGE_NOESCAPE, damroll(50, 20), _("爆発の薬", "a potion of Detonation"), -1);\r
-\r
-                       (void)set_stun(p_ptr->stun + 75);\r
-                       (void)set_cut(p_ptr->cut + 5000);\r
-                       ident = TRUE;\r
+                       ident = detonation(p_ptr);\r
                        break;\r
 \r
                case SV_POTION_DEATH:\r
@@ -482,7 +452,7 @@ void do_cmd_quaff_potion_aux(INVENTORY_IDX item)
                        break;\r
 \r
                case SV_POTION_NEW_LIFE:\r
-                       do_cmd_rerate(FALSE);\r
+                       roll_hitdice(0L);\r
                        get_max_stats();\r
                        p_ptr->update |= PU_BONUS;\r
                        lose_all_mutations();\r
@@ -532,8 +502,6 @@ void do_cmd_quaff_potion_aux(INVENTORY_IDX item)
                msg_print(_("液体の一部はあなたのアゴを素通りして落ちた!", "Some of the fluid falls through your jaws!"));\r
                (void)potion_smash_effect(0, p_ptr->y, p_ptr->x, q_ptr->k_idx);\r
        }\r
-\r
-       /* Combine / Reorder the pack (later) */\r
        p_ptr->update |= (PU_COMBINE | PU_REORDER);\r
 \r
        if (!(object_is_aware(q_ptr)))\r
@@ -623,12 +591,7 @@ void do_cmd_quaff_potion(void)
                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