#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
object_type forge;\r
object_type *q_ptr;\r
\r
- p_ptr->energy_use = 100; /* Take a turn */\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
{\r
o_ptr = &o_list[0 - item];\r
}\r
-\r
- /* Get local object */\r
q_ptr = &forge;\r
\r
/* Obtain a local object */\r
}\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
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
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
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->notice |= (PN_COMBINE | PN_REORDER);\r
+ p_ptr->update |= (PU_COMBINE | PU_REORDER);\r
\r
if (!(object_is_aware(q_ptr)))\r
{\r
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
/* Potions can feed the player */\r
void do_cmd_quaff_potion(void)\r
{\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 (cmd_limit_arena(p_ptr)) return;\r
\r
if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))\r
{\r
/* Restrict choices to potions */\r
item_tester_hook = item_tester_hook_quaff;\r
\r
- /* Get an item */\r
q = _("どの薬を飲みますか? ", "Quaff which potion? ");\r
s = _("飲める薬がない。", "You have no potions to quaff.");\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
/* Quaff the potion */\r
do_cmd_quaff_potion_aux(item);\r