#include "angband.h"
#include "cmd-activate.h"
#include "cmd-eat.h"
+#include "cmd-item.h"
+#include "cmd-magiceat.h"
#include "cmd-quaff.h"
-
-#define TY_CURSE_CHANCE 200 /*!<太古の怨念の1ターン毎の発動確率(1/n)*/
-#define CHAINSWORD_NOISE 100 /*!<チェンソーの1ターン毎の発動確率(1/n)*/
+#include "cmd-read.h"
+#include "cmd-usestaff.h"
+#include "cmd-zaprod.h"
+#include "cmd-zapwand.h"
+#include "cmd-pet.h"
static bool load = TRUE; /*!<ロード処理中の分岐フラグ*/
static int wild_regen = 20; /*!<広域マップ移動時の自然回復処理カウンタ(広域マップ1マス毎に20回処理を基本とする)*/
* @param o_ptr 擬似鑑定を行うオブジェクトの参照ポインタ。
* @return 擬似鑑定結果のIDを返す。
*/
-static byte value_check_aux1(object_type *o_ptr)
+byte value_check_aux1(object_type *o_ptr)
{
/* Artifacts */
if (object_is_artifact(o_ptr))
* @param o_ptr 擬似鑑定を行うオブジェクトの参照ポインタ。
* @return 擬似鑑定結果のIDを返す。
*/
-static byte value_check_aux2(object_type *o_ptr)
+byte value_check_aux2(object_type *o_ptr)
{
/* Cursed items (all of them) */
if (object_is_cursed(o_ptr)) return FEEL_CURSED;
switch (pattern_type)
{
case PATTERN_TILE_END:
- (void)set_poisoned(0);
(void)set_image(0);
- (void)set_stun(0);
- (void)set_cut(0);
- (void)set_blind(0);
- (void)set_afraid(0);
- (void)do_res_stat(A_STR);
- (void)do_res_stat(A_INT);
- (void)do_res_stat(A_WIS);
- (void)do_res_stat(A_DEX);
- (void)do_res_stat(A_CON);
- (void)do_res_stat(A_CHR);
+ (void)restore_all_status();
(void)restore_level();
- (void)hp_player(1000);
+ (void)cure_critical_wounds(1000);
cave_set_feat(p_ptr->y, p_ptr->x, feat_pattern_old);
msg_print(_("「パターン」のこの部分は他の部分より強力でないようだ。", "This section of the Pattern looks less powerful."));
}
}
-/*!
- * @brief 超能力者のサイコメトリー処理/ Forcibly pseudo-identify an object in the inventory (or on the floor)
- * @return なし
- * @todo mind.cにこの関数を移動させるべき。
- * @note
- * currently this function allows pseudo-id of any object,
- * including silly ones like potions & scrolls, which always
- * get '{average}'. This should be changed, either to stop such
- * items from being pseudo-id'd, or to allow psychometry to
- * detect whether the unidentified potion/scroll/etc is
- * good (Cure Light Wounds, Restore Strength, etc) or
- * bad (Poison, Weakness etc) or 'useless' (Slime Mold Juice, etc).
- */
-bool psychometry(void)
-{
- OBJECT_IDX item;
- object_type *o_ptr;
- char o_name[MAX_NLEN];
- byte feel;
- cptr q, s;
- bool okay = FALSE;
-
- item_tester_no_ryoute = TRUE;
- /* Get an item */
- q = _("どのアイテムを調べますか?", "Meditate on which item? ");
- s = _("調べるアイテムがありません。", "You have nothing appropriate.");
-
- if (!get_item(&item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR))) return (FALSE);
-
- /* Get the item (in the pack) */
- if (item >= 0)
- {
- o_ptr = &inventory[item];
- }
-
- /* Get the item (on the floor) */
- else
- {
- o_ptr = &o_list[0 - item];
- }
-
- /* It is fully known, no information needed */
- if (object_is_known(o_ptr))
- {
- msg_print(_("何も新しいことは判らなかった。", "You cannot find out anything more about that."));
- return TRUE;
- }
-
- /* Check for a feeling */
- feel = value_check_aux1(o_ptr);
-
- /* Get an object description */
- object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
-
- /* Skip non-feelings */
- if (!feel)
- {
- msg_format(_("%sからは特に変わった事は感じとれなかった。", "You do not perceive anything unusual about the %s."), o_name);
- return TRUE;
- }
-
-#ifdef JP
-msg_format("%sは%sという感じがする...",
- o_name, game_inscriptions[feel]);
-#else
- msg_format("You feel that the %s %s %s...",
- o_name, ((o_ptr->number == 1) ? "is" : "are"),
- game_inscriptions[feel]);
-#endif
-
-
- /* We have "felt" it */
- o_ptr->ident |= (IDENT_SENSE);
-
- /* "Inscribe" it */
- o_ptr->feeling = feel;
-
- /* Player touches it */
- o_ptr->marked |= OM_TOUCHED;
-
- /* Combine / Reorder the pack (later) */
- p_ptr->notice |= (PN_COMBINE | PN_REORDER);
-
- /* Window stuff */
- p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);
-
- /* Valid "tval" codes */
- switch (o_ptr->tval)
- {
- case TV_SHOT:
- case TV_ARROW:
- case TV_BOLT:
- case TV_BOW:
- case TV_DIGGING:
- case TV_HAFTED:
- case TV_POLEARM:
- case TV_SWORD:
- case TV_BOOTS:
- case TV_GLOVES:
- case TV_HELM:
- case TV_CROWN:
- case TV_SHIELD:
- case TV_CLOAK:
- case TV_SOFT_ARMOR:
- case TV_HARD_ARMOR:
- case TV_DRAG_ARMOR:
- case TV_CARD:
- case TV_RING:
- case TV_AMULET:
- case TV_LITE:
- case TV_FIGURINE:
- okay = TRUE;
- break;
- }
-
- /* Auto-inscription/destroy */
- autopick_alter_item(item, (bool)(okay && destroy_feeling));
-
- /* Something happened */
- return (TRUE);
-}
/*!
* @brief !!を刻んだ魔道具の時間経過による再充填を知らせる処理 / If player has inscribed the object with "!!", let him know when it's recharged. -LM-
/* Throw an item */
case 'v':
{
- if (!p_ptr->wild_mode)
- {
- do_cmd_throw();
- }
+ if (!p_ptr->wild_mode) do_cmd_throw(1, FALSE, -1);
break;
}
/* Open the high score file, for reading/writing */
highscore_fd = fd_open(buf, O_RDWR);
+ /* 町名消失バグ対策(#38205) Init the wilderness */
+ process_dungeon_file("w_info.txt", 0, 0, max_wild_y, max_wild_x);
+
/* Handle score, show Top scores */
success = send_world_score(TRUE);
msg_print(_("ウィザードモードに念を送り、死を欺いた。", "You invoke wizard mode and cheat death."));
msg_print(NULL);
- /* Restore hit points */
- p_ptr->chp = p_ptr->mhp;
- p_ptr->chp_frac = 0;
+ (void)life_stream(FALSE, FALSE);
if (p_ptr->pclass == CLASS_MAGIC_EATER)
{
p_ptr->magic_num1[magic_idx] = 0;
}
}
+
/* Restore spell points */
p_ptr->csp = p_ptr->msp;
p_ptr->csp_frac = 0;
/* Do not die */
p_ptr->is_dead = FALSE;
- /* Hack -- Healing */
- (void)set_blind(0);
- (void)set_confused(0);
- (void)set_poisoned(0);
- (void)set_afraid(0);
- (void)set_paralyzed(0);
- (void)set_image(0);
- (void)set_stun(0);
- (void)set_cut(0);
-
/* Hack -- Prevent starvation */
(void)set_food(PY_FOOD_MAX - 1);