#include "angband.h"
+#include "core.h"
#include "util.h"
+#include "bldg.h"
+#include "quest.h"
#include "player-move.h"
#include "player-status.h"
+#include "player-effects.h"
+#include "player-skill.h"
+#include "player-race.h"
+#include "player-class.h"
+#include "player-personality.h"
+#include "player-damage.h"
#include "floor.h"
#include "floor-events.h"
#include "feature.h"
#include "artifact.h"
#include "avatar.h"
+#include "spells.h"
#include "spells-status.h"
#include "object.h"
#include "object-hook.h"
+#include "object-ego.h"
#include "monster.h"
#include "monster-status.h"
#include "monsterrace-hook.h"
#include "mutation.h"
#include "patron.h"
#include "realm-hex.h"
+#include "realm-song.h"
#include "cmd-pet.h"
#include "cmd-spell.h"
-#include "player-effects.h"
+#include "dungeon.h"
+#include "objectkind.h"
+#include "monsterrace.h"
+#include "autopick.h"
+#include "cmd-dump.h"
+#include "melee.h"
+#include "world.h"
+#include "view-mainwindow.h"
+#include "files.h"
+#include "cmd-magiceat.h"
+
+/*!
+ * @brief 能力値テーブル / Abbreviations of healthy stats
+ */
+const concptr stat_names[6] =
+{
+#ifdef JP
+ "腕力 :", "知能 :", "賢さ :", "器用 :", "耐久 :", "魅力 :"
+#else
+ "STR : ", "INT : ", "WIS : ", "DEX : ", "CON : ", "CHR : "
+#endif
+
+};
+
+/*!
+ * @brief 能力値テーブル(能力低下時) / Abbreviations of damaged stats
+ */
+const concptr stat_names_reduced[6] =
+{
+#ifdef JP
+ "腕力x:", "知能x:", "賢さx:", "器用x:", "耐久x:", "魅力x:"
+#else
+ "Str : ", "Int : ", "Wis : ", "Dex : ", "Con : ", "Chr : "
+#endif
+
+};
+
+/* ELDRITCH_HORRORによるsanity blast処理に関するメッセージの最大数 / Number of entries in the sanity-blast descriptions */
+#define MAX_SAN_HORROR 20 /*!< 恐ろしい対象の形容数(正常時) */
+#define MAX_SAN_FUNNY 22 /*!< 恐ろしい対象の形容数(幻覚時) */
+#define MAX_SAN_COMMENT 5 /*!< 恐ろしい対象を見たときの絶叫メッセージ数(幻覚時) */
/*!
* @var horror_desc
};
+/*!
+ * 知力/賢さによるレベル毎の習得可能魔法数テーブル
+ * Stat Table (INT/WIS) -- Number of half-spells per level
+ */
+const byte adj_mag_study[] =
+{
+ 0 /* 3 */,
+ 0 /* 4 */,
+ 0 /* 5 */,
+ 0 /* 6 */,
+ 0 /* 7 */,
+ 1 /* 8 */,
+ 1 /* 9 */,
+ 1 /* 10 */,
+ 1 /* 11 */,
+ 2 /* 12 */,
+ 2 /* 13 */,
+ 2 /* 14 */,
+ 2 /* 15 */,
+ 2 /* 16 */,
+ 2 /* 17 */,
+ 2 /* 18/00-18/09 */,
+ 2 /* 18/10-18/19 */,
+ 2 /* 18/20-18/29 */,
+ 2 /* 18/30-18/39 */,
+ 2 /* 18/40-18/49 */,
+ 3 /* 18/50-18/59 */,
+ 3 /* 18/60-18/69 */,
+ 3 /* 18/70-18/79 */,
+ 3 /* 18/80-18/89 */,
+ 4 /* 18/90-18/99 */,
+ 4 /* 18/100-18/109 */,
+ 4 /* 18/110-18/119 */,
+ 5 /* 18/120-18/129 */,
+ 5 /* 18/130-18/139 */,
+ 5 /* 18/140-18/149 */,
+ 5 /* 18/150-18/159 */,
+ 5 /* 18/160-18/169 */,
+ 5 /* 18/170-18/179 */,
+ 5 /* 18/180-18/189 */,
+ 5 /* 18/190-18/199 */,
+ 5 /* 18/200-18/209 */,
+ 6 /* 18/210-18/219 */,
+ 6 /* 18/220+ */
+};
+
+
+/*!
+ * 知力/賢さによるMP修正テーブル
+ * Stat Table (INT/WIS) -- extra 1/4-mana-points per level
+ */
+const byte adj_mag_mana[] =
+{
+ 0 /* 3 */,
+ 0 /* 4 */,
+ 0 /* 5 */,
+ 0 /* 6 */,
+ 0 /* 7 */,
+ 1 /* 8 */,
+ 2 /* 9 */,
+ 3 /* 10 */,
+ 4 /* 11 */,
+ 5 /* 12 */,
+ 5 /* 13 */,
+ 6 /* 14 */,
+ 7 /* 15 */,
+ 8 /* 16 */,
+ 9 /* 17 */,
+ 10 /* 18/00-18/09 */,
+ 11 /* 18/10-18/19 */,
+ 11 /* 18/20-18/29 */,
+ 12 /* 18/30-18/39 */,
+ 12 /* 18/40-18/49 */,
+ 13 /* 18/50-18/59 */,
+ 14 /* 18/60-18/69 */,
+ 15 /* 18/70-18/79 */,
+ 16 /* 18/80-18/89 */,
+ 17 /* 18/90-18/99 */,
+ 18 /* 18/100-18/109 */,
+ 19 /* 18/110-18/119 */,
+ 20 /* 18/120-18/129 */,
+ 21 /* 18/130-18/139 */,
+ 22 /* 18/140-18/149 */,
+ 23 /* 18/150-18/159 */,
+ 24 /* 18/160-18/169 */,
+ 25 /* 18/170-18/179 */,
+ 26 /* 18/180-18/189 */,
+ 27 /* 18/190-18/199 */,
+ 28 /* 18/200-18/209 */,
+ 29 /* 18/210-18/219 */,
+ 30 /* 18/220+ */
+};
+
+
+/*!
+ * 知力/賢さによる最低魔法失敗率テーブル
+ * Stat Table (INT/WIS) -- Minimum failure rate (percentage)
+ */
+const byte adj_mag_fail[] =
+{
+ 99 /* 3 */,
+ 99 /* 4 */,
+ 99 /* 5 */,
+ 99 /* 6 */,
+ 99 /* 7 */,
+ 50 /* 8 */,
+ 30 /* 9 */,
+ 20 /* 10 */,
+ 15 /* 11 */,
+ 12 /* 12 */,
+ 11 /* 13 */,
+ 10 /* 14 */,
+ 9 /* 15 */,
+ 8 /* 16 */,
+ 7 /* 17 */,
+ 6 /* 18/00-18/09 */,
+ 6 /* 18/10-18/19 */,
+ 5 /* 18/20-18/29 */,
+ 5 /* 18/30-18/39 */,
+ 5 /* 18/40-18/49 */,
+ 4 /* 18/50-18/59 */,
+ 4 /* 18/60-18/69 */,
+ 4 /* 18/70-18/79 */,
+ 4 /* 18/80-18/89 */,
+ 3 /* 18/90-18/99 */,
+ 3 /* 18/100-18/109 */,
+ 2 /* 18/110-18/119 */,
+ 2 /* 18/120-18/129 */,
+ 2 /* 18/130-18/139 */,
+ 2 /* 18/140-18/149 */,
+ 1 /* 18/150-18/159 */,
+ 1 /* 18/160-18/169 */,
+ 1 /* 18/170-18/179 */,
+ 1 /* 18/180-18/189 */,
+ 1 /* 18/190-18/199 */,
+ 0 /* 18/200-18/209 */,
+ 0 /* 18/210-18/219 */,
+ 0 /* 18/220+ */
+};
+
+
+/*!
+ * 知力/賢さによる魔法失敗率修正テーブル
+ * Stat Table (INT/WIS) -- Various things
+ */
+const byte adj_mag_stat[] =
+{
+ 0 /* 3 */,
+ 0 /* 4 */,
+ 0 /* 5 */,
+ 0 /* 6 */,
+ 0 /* 7 */,
+ 1 /* 8 */,
+ 1 /* 9 */,
+ 1 /* 10 */,
+ 1 /* 11 */,
+ 1 /* 12 */,
+ 1 /* 13 */,
+ 1 /* 14 */,
+ 2 /* 15 */,
+ 2 /* 16 */,
+ 2 /* 17 */,
+ 3 /* 18/00-18/09 */,
+ 3 /* 18/10-18/19 */,
+ 3 /* 18/20-18/29 */,
+ 3 /* 18/30-18/39 */,
+ 3 /* 18/40-18/49 */,
+ 4 /* 18/50-18/59 */,
+ 4 /* 18/60-18/69 */,
+ 5 /* 18/70-18/79 */,
+ 6 /* 18/80-18/89 */,
+ 7 /* 18/90-18/99 */,
+ 8 /* 18/100-18/109 */,
+ 9 /* 18/110-18/119 */,
+ 10 /* 18/120-18/129 */,
+ 11 /* 18/130-18/139 */,
+ 12 /* 18/140-18/149 */,
+ 13 /* 18/150-18/159 */,
+ 14 /* 18/160-18/169 */,
+ 15 /* 18/170-18/179 */,
+ 16 /* 18/180-18/189 */,
+ 17 /* 18/190-18/199 */,
+ 18 /* 18/200-18/209 */,
+ 19 /* 18/210-18/219 */,
+ 20 /* 18/220+ */
+};
+
+
+/*!
+ * 魅力による店での取引修正テーブル
+ * Stat Table (CHR) -- payment percentages
+ */
+const byte adj_chr_gold[] =
+{
+ 130 /* 3 */,
+ 125 /* 4 */,
+ 122 /* 5 */,
+ 120 /* 6 */,
+ 118 /* 7 */,
+ 116 /* 8 */,
+ 114 /* 9 */,
+ 112 /* 10 */,
+ 110 /* 11 */,
+ 108 /* 12 */,
+ 106 /* 13 */,
+ 104 /* 14 */,
+ 103 /* 15 */,
+ 102 /* 16 */,
+ 101 /* 17 */,
+ 100 /* 18/00-18/09 */,
+ 99 /* 18/10-18/19 */,
+ 98 /* 18/20-18/29 */,
+ 97 /* 18/30-18/39 */,
+ 96 /* 18/40-18/49 */,
+ 95 /* 18/50-18/59 */,
+ 94 /* 18/60-18/69 */,
+ 93 /* 18/70-18/79 */,
+ 92 /* 18/80-18/89 */,
+ 91 /* 18/90-18/99 */,
+ 90 /* 18/100-18/109 */,
+ 89 /* 18/110-18/119 */,
+ 88 /* 18/120-18/129 */,
+ 87 /* 18/130-18/139 */,
+ 86 /* 18/140-18/149 */,
+ 85 /* 18/150-18/159 */,
+ 84 /* 18/160-18/169 */,
+ 83 /* 18/170-18/179 */,
+ 82 /* 18/180-18/189 */,
+ 81 /* 18/190-18/199 */,
+ 80 /* 18/200-18/209 */,
+ 79 /* 18/210-18/219 */,
+ 78 /* 18/220+ */
+};
+
+
+/*!
+ * 知力による魔道具使用修正テーブル
+ * Stat Table (INT) -- Magic devices
+ */
+const byte adj_int_dev[] =
+{
+ 0 /* 3 */,
+ 0 /* 4 */,
+ 0 /* 5 */,
+ 0 /* 6 */,
+ 0 /* 7 */,
+ 1 /* 8 */,
+ 1 /* 9 */,
+ 1 /* 10 */,
+ 1 /* 11 */,
+ 1 /* 12 */,
+ 1 /* 13 */,
+ 1 /* 14 */,
+ 2 /* 15 */,
+ 2 /* 16 */,
+ 2 /* 17 */,
+ 3 /* 18/00-18/09 */,
+ 3 /* 18/10-18/19 */,
+ 4 /* 18/20-18/29 */,
+ 4 /* 18/30-18/39 */,
+ 5 /* 18/40-18/49 */,
+ 5 /* 18/50-18/59 */,
+ 6 /* 18/60-18/69 */,
+ 6 /* 18/70-18/79 */,
+ 7 /* 18/80-18/89 */,
+ 7 /* 18/90-18/99 */,
+ 8 /* 18/100-18/109 */,
+ 9 /* 18/110-18/119 */,
+ 10 /* 18/120-18/129 */,
+ 11 /* 18/130-18/139 */,
+ 12 /* 18/140-18/149 */,
+ 13 /* 18/150-18/159 */,
+ 14 /* 18/160-18/169 */,
+ 15 /* 18/170-18/179 */,
+ 16 /* 18/180-18/189 */,
+ 17 /* 18/190-18/199 */,
+ 18 /* 18/200-18/209 */,
+ 19 /* 18/210-18/219 */,
+ 20 /* 18/220+ */
+};
+
+
+/*!
+ * 賢さによる魔法防御修正テーブル
+ * Stat Table (WIS) -- Saving throw
+ */
+const byte adj_wis_sav[] =
+{
+ 0 /* 3 */,
+ 0 /* 4 */,
+ 0 /* 5 */,
+ 0 /* 6 */,
+ 0 /* 7 */,
+ 1 /* 8 */,
+ 1 /* 9 */,
+ 1 /* 10 */,
+ 1 /* 11 */,
+ 1 /* 12 */,
+ 1 /* 13 */,
+ 1 /* 14 */,
+ 2 /* 15 */,
+ 2 /* 16 */,
+ 2 /* 17 */,
+ 3 /* 18/00-18/09 */,
+ 3 /* 18/10-18/19 */,
+ 3 /* 18/20-18/29 */,
+ 3 /* 18/30-18/39 */,
+ 3 /* 18/40-18/49 */,
+ 4 /* 18/50-18/59 */,
+ 4 /* 18/60-18/69 */,
+ 5 /* 18/70-18/79 */,
+ 5 /* 18/80-18/89 */,
+ 6 /* 18/90-18/99 */,
+ 7 /* 18/100-18/109 */,
+ 8 /* 18/110-18/119 */,
+ 9 /* 18/120-18/129 */,
+ 10 /* 18/130-18/139 */,
+ 11 /* 18/140-18/149 */,
+ 12 /* 18/150-18/159 */,
+ 13 /* 18/160-18/169 */,
+ 14 /* 18/170-18/179 */,
+ 15 /* 18/180-18/189 */,
+ 16 /* 18/190-18/199 */,
+ 17 /* 18/200-18/209 */,
+ 18 /* 18/210-18/219 */,
+ 19 /* 18/220+ */
+};
+
+
+/*!
+ * 器用さによるトラップ解除修正テーブル
+ * Stat Table (DEX) -- disarming
+ */
+const byte adj_dex_dis[] =
+{
+ 0 /* 3 */,
+ 0 /* 4 */,
+ 0 /* 5 */,
+ 0 /* 6 */,
+ 0 /* 7 */,
+ 0 /* 8 */,
+ 0 /* 9 */,
+ 0 /* 10 */,
+ 0 /* 11 */,
+ 0 /* 12 */,
+ 1 /* 13 */,
+ 1 /* 14 */,
+ 1 /* 15 */,
+ 2 /* 16 */,
+ 2 /* 17 */,
+ 4 /* 18/00-18/09 */,
+ 4 /* 18/10-18/19 */,
+ 4 /* 18/20-18/29 */,
+ 4 /* 18/30-18/39 */,
+ 5 /* 18/40-18/49 */,
+ 5 /* 18/50-18/59 */,
+ 5 /* 18/60-18/69 */,
+ 6 /* 18/70-18/79 */,
+ 6 /* 18/80-18/89 */,
+ 7 /* 18/90-18/99 */,
+ 8 /* 18/100-18/109 */,
+ 8 /* 18/110-18/119 */,
+ 8 /* 18/120-18/129 */,
+ 8 /* 18/130-18/139 */,
+ 8 /* 18/140-18/149 */,
+ 9 /* 18/150-18/159 */,
+ 9 /* 18/160-18/169 */,
+ 9 /* 18/170-18/179 */,
+ 9 /* 18/180-18/189 */,
+ 9 /* 18/190-18/199 */,
+ 10 /* 18/200-18/209 */,
+ 10 /* 18/210-18/219 */,
+ 10 /* 18/220+ */
+};
+
+
+/*!
+ * 知力によるトラップ解除修正テーブル
+ * Stat Table (INT) -- disarming
+ */
+const byte adj_int_dis[] =
+{
+ 0 /* 3 */,
+ 0 /* 4 */,
+ 0 /* 5 */,
+ 0 /* 6 */,
+ 0 /* 7 */,
+ 1 /* 8 */,
+ 1 /* 9 */,
+ 1 /* 10 */,
+ 1 /* 11 */,
+ 1 /* 12 */,
+ 1 /* 13 */,
+ 1 /* 14 */,
+ 2 /* 15 */,
+ 2 /* 16 */,
+ 2 /* 17 */,
+ 3 /* 18/00-18/09 */,
+ 3 /* 18/10-18/19 */,
+ 3 /* 18/20-18/29 */,
+ 4 /* 18/30-18/39 */,
+ 4 /* 18/40-18/49 */,
+ 5 /* 18/50-18/59 */,
+ 6 /* 18/60-18/69 */,
+ 7 /* 18/70-18/79 */,
+ 8 /* 18/80-18/89 */,
+ 9 /* 18/90-18/99 */,
+ 10 /* 18/100-18/109 */,
+ 10 /* 18/110-18/119 */,
+ 11 /* 18/120-18/129 */,
+ 12 /* 18/130-18/139 */,
+ 13 /* 18/140-18/149 */,
+ 14 /* 18/150-18/159 */,
+ 15 /* 18/160-18/169 */,
+ 16 /* 18/170-18/179 */,
+ 17 /* 18/180-18/189 */,
+ 18 /* 18/190-18/199 */,
+ 19 /* 18/200-18/209 */,
+ 19 /* 18/210-18/219 */,
+ 20 /* 18/220+ */
+};
+
+
+/*!
+ * 器用さによるAC修正テーブル
+ * Stat Table (DEX) -- bonus to ac (plus 128)
+ */
+const byte adj_dex_ta[] =
+{
+ 128 + -4 /* 3 */,
+ 128 + -3 /* 4 */,
+ 128 + -2 /* 5 */,
+ 128 + -1 /* 6 */,
+ 128 + 0 /* 7 */,
+ 128 + 0 /* 8 */,
+ 128 + 0 /* 9 */,
+ 128 + 0 /* 10 */,
+ 128 + 0 /* 11 */,
+ 128 + 0 /* 12 */,
+ 128 + 0 /* 13 */,
+ 128 + 0 /* 14 */,
+ 128 + 1 /* 15 */,
+ 128 + 1 /* 16 */,
+ 128 + 1 /* 17 */,
+ 128 + 2 /* 18/00-18/09 */,
+ 128 + 2 /* 18/10-18/19 */,
+ 128 + 2 /* 18/20-18/29 */,
+ 128 + 2 /* 18/30-18/39 */,
+ 128 + 2 /* 18/40-18/49 */,
+ 128 + 3 /* 18/50-18/59 */,
+ 128 + 3 /* 18/60-18/69 */,
+ 128 + 3 /* 18/70-18/79 */,
+ 128 + 4 /* 18/80-18/89 */,
+ 128 + 5 /* 18/90-18/99 */,
+ 128 + 6 /* 18/100-18/109 */,
+ 128 + 7 /* 18/110-18/119 */,
+ 128 + 8 /* 18/120-18/129 */,
+ 128 + 9 /* 18/130-18/139 */,
+ 128 + 9 /* 18/140-18/149 */,
+ 128 + 10 /* 18/150-18/159 */,
+ 128 + 11 /* 18/160-18/169 */,
+ 128 + 12 /* 18/170-18/179 */,
+ 128 + 13 /* 18/180-18/189 */,
+ 128 + 14 /* 18/190-18/199 */,
+ 128 + 15 /* 18/200-18/209 */,
+ 128 + 15 /* 18/210-18/219 */,
+ 128 + 16 /* 18/220+ */
+};
+
+
+/*!
+ * 腕力によるダメージ修正テーブル
+ * Stat Table (STR) -- bonus to dam (plus 128)
+ */
+const byte adj_str_td[] =
+{
+ 128 + -2 /* 3 */,
+ 128 + -2 /* 4 */,
+ 128 + -1 /* 5 */,
+ 128 + -1 /* 6 */,
+ 128 + 0 /* 7 */,
+ 128 + 0 /* 8 */,
+ 128 + 0 /* 9 */,
+ 128 + 0 /* 10 */,
+ 128 + 0 /* 11 */,
+ 128 + 0 /* 12 */,
+ 128 + 0 /* 13 */,
+ 128 + 0 /* 14 */,
+ 128 + 0 /* 15 */,
+ 128 + 1 /* 16 */,
+ 128 + 2 /* 17 */,
+ 128 + 2 /* 18/00-18/09 */,
+ 128 + 2 /* 18/10-18/19 */,
+ 128 + 3 /* 18/20-18/29 */,
+ 128 + 3 /* 18/30-18/39 */,
+ 128 + 3 /* 18/40-18/49 */,
+ 128 + 3 /* 18/50-18/59 */,
+ 128 + 3 /* 18/60-18/69 */,
+ 128 + 4 /* 18/70-18/79 */,
+ 128 + 5 /* 18/80-18/89 */,
+ 128 + 5 /* 18/90-18/99 */,
+ 128 + 6 /* 18/100-18/109 */,
+ 128 + 7 /* 18/110-18/119 */,
+ 128 + 8 /* 18/120-18/129 */,
+ 128 + 9 /* 18/130-18/139 */,
+ 128 + 10 /* 18/140-18/149 */,
+ 128 + 11 /* 18/150-18/159 */,
+ 128 + 12 /* 18/160-18/169 */,
+ 128 + 13 /* 18/170-18/179 */,
+ 128 + 14 /* 18/180-18/189 */,
+ 128 + 15 /* 18/190-18/199 */,
+ 128 + 16 /* 18/200-18/209 */,
+ 128 + 18 /* 18/210-18/219 */,
+ 128 + 20 /* 18/220+ */
+};
+
+
+/*!
+ * 器用度による命中修正テーブル
+ * Stat Table (DEX) -- bonus to hit (plus 128)
+ */
+const byte adj_dex_th[] =
+{
+ 128 + -3 /* 3 */,
+ 128 + -2 /* 4 */,
+ 128 + -2 /* 5 */,
+ 128 + -1 /* 6 */,
+ 128 + -1 /* 7 */,
+ 128 + 0 /* 8 */,
+ 128 + 0 /* 9 */,
+ 128 + 0 /* 10 */,
+ 128 + 0 /* 11 */,
+ 128 + 0 /* 12 */,
+ 128 + 0 /* 13 */,
+ 128 + 0 /* 14 */,
+ 128 + 0 /* 15 */,
+ 128 + 1 /* 16 */,
+ 128 + 2 /* 17 */,
+ 128 + 3 /* 18/00-18/09 */,
+ 128 + 3 /* 18/10-18/19 */,
+ 128 + 3 /* 18/20-18/29 */,
+ 128 + 3 /* 18/30-18/39 */,
+ 128 + 3 /* 18/40-18/49 */,
+ 128 + 4 /* 18/50-18/59 */,
+ 128 + 4 /* 18/60-18/69 */,
+ 128 + 4 /* 18/70-18/79 */,
+ 128 + 4 /* 18/80-18/89 */,
+ 128 + 5 /* 18/90-18/99 */,
+ 128 + 6 /* 18/100-18/109 */,
+ 128 + 7 /* 18/110-18/119 */,
+ 128 + 8 /* 18/120-18/129 */,
+ 128 + 9 /* 18/130-18/139 */,
+ 128 + 9 /* 18/140-18/149 */,
+ 128 + 10 /* 18/150-18/159 */,
+ 128 + 11 /* 18/160-18/169 */,
+ 128 + 12 /* 18/170-18/179 */,
+ 128 + 13 /* 18/180-18/189 */,
+ 128 + 14 /* 18/190-18/199 */,
+ 128 + 15 /* 18/200-18/209 */,
+ 128 + 15 /* 18/210-18/219 */,
+ 128 + 16 /* 18/220+ */
+};
+
+
+/*!
+ * 腕力による命中修正テーブル
+ * Stat Table (STR) -- bonus to hit (plus 128)
+ */
+const byte adj_str_th[] =
+{
+ 128 + -3 /* 3 */,
+ 128 + -2 /* 4 */,
+ 128 + -1 /* 5 */,
+ 128 + -1 /* 6 */,
+ 128 + 0 /* 7 */,
+ 128 + 0 /* 8 */,
+ 128 + 0 /* 9 */,
+ 128 + 0 /* 10 */,
+ 128 + 0 /* 11 */,
+ 128 + 0 /* 12 */,
+ 128 + 0 /* 13 */,
+ 128 + 0 /* 14 */,
+ 128 + 0 /* 15 */,
+ 128 + 0 /* 16 */,
+ 128 + 0 /* 17 */,
+ 128 + 1 /* 18/00-18/09 */,
+ 128 + 1 /* 18/10-18/19 */,
+ 128 + 1 /* 18/20-18/29 */,
+ 128 + 1 /* 18/30-18/39 */,
+ 128 + 1 /* 18/40-18/49 */,
+ 128 + 1 /* 18/50-18/59 */,
+ 128 + 1 /* 18/60-18/69 */,
+ 128 + 2 /* 18/70-18/79 */,
+ 128 + 3 /* 18/80-18/89 */,
+ 128 + 4 /* 18/90-18/99 */,
+ 128 + 5 /* 18/100-18/109 */,
+ 128 + 6 /* 18/110-18/119 */,
+ 128 + 7 /* 18/120-18/129 */,
+ 128 + 8 /* 18/130-18/139 */,
+ 128 + 9 /* 18/140-18/149 */,
+ 128 + 10 /* 18/150-18/159 */,
+ 128 + 11 /* 18/160-18/169 */,
+ 128 + 12 /* 18/170-18/179 */,
+ 128 + 13 /* 18/180-18/189 */,
+ 128 + 14 /* 18/190-18/199 */,
+ 128 + 15 /* 18/200-18/209 */,
+ 128 + 15 /* 18/210-18/219 */,
+ 128 + 16 /* 18/220+ */
+};
+
+
+/*!
+ * 腕力による基本所持重量値テーブル
+ * Stat Table (STR) -- weight limit in deca-pounds
+ */
+const byte adj_str_wgt[] =
+{
+ 10 /* 3 */,
+ 11 /* 4 */,
+ 12 /* 5 */,
+ 13 /* 6 */,
+ 14 /* 7 */,
+ 15 /* 8 */,
+ 16 /* 9 */,
+ 17 /* 10 */,
+ 18 /* 11 */,
+ 19 /* 12 */,
+ 20 /* 13 */,
+ 21 /* 14 */,
+ 22 /* 15 */,
+ 23 /* 16 */,
+ 24 /* 17 */,
+ 25 /* 18/00-18/09 */,
+ 26 /* 18/10-18/19 */,
+ 27 /* 18/20-18/29 */,
+ 28 /* 18/30-18/39 */,
+ 29 /* 18/40-18/49 */,
+ 30 /* 18/50-18/59 */,
+ 31 /* 18/60-18/69 */,
+ 31 /* 18/70-18/79 */,
+ 32 /* 18/80-18/89 */,
+ 32 /* 18/90-18/99 */,
+ 33 /* 18/100-18/109 */,
+ 33 /* 18/110-18/119 */,
+ 34 /* 18/120-18/129 */,
+ 34 /* 18/130-18/139 */,
+ 35 /* 18/140-18/149 */,
+ 35 /* 18/150-18/159 */,
+ 36 /* 18/160-18/169 */,
+ 36 /* 18/170-18/179 */,
+ 37 /* 18/180-18/189 */,
+ 37 /* 18/190-18/199 */,
+ 38 /* 18/200-18/209 */,
+ 38 /* 18/210-18/219 */,
+ 39 /* 18/220+ */
+};
+
+
+/*!
+ * 腕力による武器重量限界値テーブル
+ * Stat Table (STR) -- weapon weight limit in pounds
+ */
+const byte adj_str_hold[] =
+{
+ 4 /* 3 */,
+ 5 /* 4 */,
+ 6 /* 5 */,
+ 7 /* 6 */,
+ 8 /* 7 */,
+ 9 /* 8 */,
+ 10 /* 9 */,
+ 11 /* 10 */,
+ 12 /* 11 */,
+ 13 /* 12 */,
+ 14 /* 13 */,
+ 15 /* 14 */,
+ 16 /* 15 */,
+ 17 /* 16 */,
+ 18 /* 17 */,
+ 19 /* 18/00-18/09 */,
+ 20 /* 18/10-18/19 */,
+ 21 /* 18/20-18/29 */,
+ 22 /* 18/30-18/39 */,
+ 23 /* 18/40-18/49 */,
+ 24 /* 18/50-18/59 */,
+ 25 /* 18/60-18/69 */,
+ 26 /* 18/70-18/79 */,
+ 27 /* 18/80-18/89 */,
+ 28 /* 18/90-18/99 */,
+ 30 /* 18/100-18/109 */,
+ 31 /* 18/110-18/119 */,
+ 32 /* 18/120-18/129 */,
+ 33 /* 18/130-18/139 */,
+ 34 /* 18/140-18/149 */,
+ 35 /* 18/150-18/159 */,
+ 37 /* 18/160-18/169 */,
+ 40 /* 18/170-18/179 */,
+ 44 /* 18/180-18/189 */,
+ 48 /* 18/190-18/199 */,
+ 50 /* 18/200-18/209 */,
+ 50 /* 18/210-18/219 */,
+ 50 /* 18/220+ */
+};
+
+
+/*!
+ * 腕力による採掘能力修正値テーブル
+ * Stat Table (STR) -- digging value
+ */
+const byte adj_str_dig[] =
+{
+ 0 /* 3 */,
+ 0 /* 4 */,
+ 1 /* 5 */,
+ 2 /* 6 */,
+ 3 /* 7 */,
+ 4 /* 8 */,
+ 4 /* 9 */,
+ 5 /* 10 */,
+ 5 /* 11 */,
+ 6 /* 12 */,
+ 6 /* 13 */,
+ 7 /* 14 */,
+ 7 /* 15 */,
+ 8 /* 16 */,
+ 8 /* 17 */,
+ 9 /* 18/00-18/09 */,
+ 10 /* 18/10-18/19 */,
+ 12 /* 18/20-18/29 */,
+ 15 /* 18/30-18/39 */,
+ 20 /* 18/40-18/49 */,
+ 25 /* 18/50-18/59 */,
+ 30 /* 18/60-18/69 */,
+ 35 /* 18/70-18/79 */,
+ 40 /* 18/80-18/89 */,
+ 45 /* 18/90-18/99 */,
+ 50 /* 18/100-18/109 */,
+ 55 /* 18/110-18/119 */,
+ 60 /* 18/120-18/129 */,
+ 65 /* 18/130-18/139 */,
+ 70 /* 18/140-18/149 */,
+ 75 /* 18/150-18/159 */,
+ 80 /* 18/160-18/169 */,
+ 85 /* 18/170-18/179 */,
+ 90 /* 18/180-18/189 */,
+ 95 /* 18/190-18/199 */,
+ 100 /* 18/200-18/209 */,
+ 100 /* 18/210-18/219 */,
+ 100 /* 18/220+ */
+};
+
+/*!
+ * 器用さによる盗難防止&体当たり成功判定修正テーブル
+ * Stat Table (DEX) -- chance of avoiding "theft" and "falling"
+ */
+const byte adj_dex_safe[] =
+{
+ 0 /* 3 */,
+ 1 /* 4 */,
+ 2 /* 5 */,
+ 3 /* 6 */,
+ 4 /* 7 */,
+ 5 /* 8 */,
+ 5 /* 9 */,
+ 6 /* 10 */,
+ 6 /* 11 */,
+ 7 /* 12 */,
+ 7 /* 13 */,
+ 8 /* 14 */,
+ 8 /* 15 */,
+ 9 /* 16 */,
+ 9 /* 17 */,
+ 10 /* 18/00-18/09 */,
+ 10 /* 18/10-18/19 */,
+ 15 /* 18/20-18/29 */,
+ 15 /* 18/30-18/39 */,
+ 20 /* 18/40-18/49 */,
+ 25 /* 18/50-18/59 */,
+ 30 /* 18/60-18/69 */,
+ 35 /* 18/70-18/79 */,
+ 40 /* 18/80-18/89 */,
+ 45 /* 18/90-18/99 */,
+ 50 /* 18/100-18/109 */,
+ 60 /* 18/110-18/119 */,
+ 70 /* 18/120-18/129 */,
+ 80 /* 18/130-18/139 */,
+ 90 /* 18/140-18/149 */,
+ 100 /* 18/150-18/159 */,
+ 100 /* 18/160-18/169 */,
+ 100 /* 18/170-18/179 */,
+ 100 /* 18/180-18/189 */,
+ 100 /* 18/190-18/199 */,
+ 100 /* 18/200-18/209 */,
+ 100 /* 18/210-18/219 */,
+ 100 /* 18/220+ */
+};
+
+
+/*!
+ * 耐久による基本HP自然治癒値テーブル /
+ * Stat Table (CON) -- base regeneration rate
+ */
+const byte adj_con_fix[] =
+{
+ 0 /* 3 */,
+ 0 /* 4 */,
+ 0 /* 5 */,
+ 0 /* 6 */,
+ 0 /* 7 */,
+ 0 /* 8 */,
+ 0 /* 9 */,
+ 0 /* 10 */,
+ 0 /* 11 */,
+ 0 /* 12 */,
+ 0 /* 13 */,
+ 1 /* 14 */,
+ 1 /* 15 */,
+ 1 /* 16 */,
+ 1 /* 17 */,
+ 2 /* 18/00-18/09 */,
+ 2 /* 18/10-18/19 */,
+ 2 /* 18/20-18/29 */,
+ 2 /* 18/30-18/39 */,
+ 2 /* 18/40-18/49 */,
+ 3 /* 18/50-18/59 */,
+ 3 /* 18/60-18/69 */,
+ 3 /* 18/70-18/79 */,
+ 3 /* 18/80-18/89 */,
+ 3 /* 18/90-18/99 */,
+ 4 /* 18/100-18/109 */,
+ 4 /* 18/110-18/119 */,
+ 5 /* 18/120-18/129 */,
+ 6 /* 18/130-18/139 */,
+ 6 /* 18/140-18/149 */,
+ 7 /* 18/150-18/159 */,
+ 7 /* 18/160-18/169 */,
+ 8 /* 18/170-18/179 */,
+ 8 /* 18/180-18/189 */,
+ 8 /* 18/190-18/199 */,
+ 9 /* 18/200-18/209 */,
+ 9 /* 18/210-18/219 */,
+ 9 /* 18/220+ */
+};
+
+
+/*!
+ * 耐久による基本HP自然治癒値テーブル /
+ * Stat Table (CON) -- extra 1/4-hitpoints per level (plus 128)
+ */
+const byte adj_con_mhp[] =
+{
+ 128 + -8 /* 3 */,
+ 128 + -6 /* 4 */,
+ 128 + -4 /* 5 */,
+ 128 + -2 /* 6 */,
+ 128 + -1 /* 7 */,
+ 128 + 0 /* 8 */,
+ 128 + 0 /* 9 */,
+ 128 + 0 /* 10 */,
+ 128 + 0 /* 11 */,
+ 128 + 0 /* 12 */,
+ 128 + 0 /* 13 */,
+ 128 + 1 /* 14 */,
+ 128 + 1 /* 15 */,
+ 128 + 2 /* 16 */,
+ 128 + 3 /* 17 */,
+ 128 + 4 /* 18/00-18/09 */,
+ 128 + 5 /* 18/10-18/19 */,
+ 128 + 6 /* 18/20-18/29 */,
+ 128 + 7 /* 18/30-18/39 */,
+ 128 + 8 /* 18/40-18/49 */,
+ 128 + 9 /* 18/50-18/59 */,
+ 128 + 10 /* 18/60-18/69 */,
+ 128 + 11 /* 18/70-18/79 */,
+ 128 + 12 /* 18/80-18/89 */,
+ 128 + 14 /* 18/90-18/99 */,
+ 128 + 17 /* 18/100-18/109 */,
+ 128 + 20 /* 18/110-18/119 */,
+ 128 + 23 /* 18/120-18/129 */,
+ 128 + 26 /* 18/130-18/139 */,
+ 128 + 29 /* 18/140-18/149 */,
+ 128 + 32 /* 18/150-18/159 */,
+ 128 + 35 /* 18/160-18/169 */,
+ 128 + 38 /* 18/170-18/179 */,
+ 128 + 40 /* 18/180-18/189 */,
+ 128 + 42 /* 18/190-18/199 */,
+ 128 + 44 /* 18/200-18/209 */,
+ 128 + 46 /* 18/210-18/219 */,
+ 128 + 48 /* 18/220+ */
+};
+
+
+/*!
+ * 魅力による魅了能力修正テーブル /
+ * Stat Table (CHR) -- charm
+ */
+const byte adj_chr_chm[] =
+{
+ 0 /* 3 */,
+ 0 /* 4 */,
+ 1 /* 5 */,
+ 2 /* 6 */,
+ 3 /* 7 */,
+ 4 /* 8 */,
+ 4 /* 9 */,
+ 5 /* 10 */,
+ 5 /* 11 */,
+ 6 /* 12 */,
+ 6 /* 13 */,
+ 7 /* 14 */,
+ 7 /* 15 */,
+ 8 /* 16 */,
+ 8 /* 17 */,
+ 9 /* 18/00-18/09 */,
+ 10 /* 18/10-18/19 */,
+ 12 /* 18/20-18/29 */,
+ 15 /* 18/30-18/39 */,
+ 18 /* 18/40-18/49 */,
+ 21 /* 18/50-18/59 */,
+ 24 /* 18/60-18/69 */,
+ 28 /* 18/70-18/79 */,
+ 32 /* 18/80-18/89 */,
+ 36 /* 18/90-18/99 */,
+ 39 /* 18/100-18/109 */,
+ 42 /* 18/110-18/119 */,
+ 45 /* 18/120-18/129 */,
+ 49 /* 18/130-18/139 */,
+ 53 /* 18/140-18/149 */,
+ 57 /* 18/150-18/159 */,
+ 61 /* 18/160-18/169 */,
+ 65 /* 18/170-18/179 */,
+ 69 /* 18/180-18/189 */,
+ 73 /* 18/190-18/199 */,
+ 77 /* 18/200-18/209 */,
+ 81 /* 18/210-18/219 */,
+ 85 /* 18/220+ */
+};
+
+
+/*** Player information ***/
+
+/*
+ * Static player info record
+ */
+player_type p_body;
+
+/*
+ * Pointer to the player info
+ */
+player_type *p_ptr = &p_body;
+
/*
* Return alignment title
*/
if (CAN_TWO_HANDS_WIELDING())
{
if (p_ptr->migite && (empty_hands(FALSE) == EMPTY_HAND_LARM) &&
- object_allow_two_hands_wielding(&inventory[INVEN_RARM]))
+ object_allow_two_hands_wielding(&p_ptr->inventory_list[INVEN_RARM]))
{
p_ptr->ryoute = TRUE;
}
else if (p_ptr->hidarite && (empty_hands(FALSE) == EMPTY_HAND_RARM) &&
- object_allow_two_hands_wielding(&inventory[INVEN_LARM]))
+ object_allow_two_hands_wielding(&p_ptr->inventory_list[INVEN_LARM]))
{
p_ptr->ryoute = TRUE;
}
{
if (!(empty_hands_status & EMPTY_HAND_RARM))
{
- set_action(ACTION_NONE);
+ set_action(p_ptr, ACTION_NONE);
}
}
/* Unencumbered Monks become faster every 10 levels */
if (!(heavy_armor()))
{
- if (!(prace_is_(RACE_KLACKON) ||
- prace_is_(RACE_SPRITE) ||
+ if (!(PRACE_IS_(p_ptr, RACE_KLACKON) ||
+ PRACE_IS_(p_ptr, RACE_SPRITE) ||
(p_ptr->pseikaku == SEIKAKU_MUNCHKIN)))
new_speed += (p_ptr->lev) / 10;
new_speed -= (p_ptr->lev) / 10;
p_ptr->skill_stl -= (p_ptr->lev) / 10;
}
- else if ((!inventory[INVEN_RARM].k_idx || p_ptr->migite) &&
- (!inventory[INVEN_LARM].k_idx || p_ptr->hidarite))
+ else if ((!p_ptr->inventory_list[INVEN_RARM].k_idx || p_ptr->migite) &&
+ (!p_ptr->inventory_list[INVEN_LARM].k_idx || p_ptr->hidarite))
{
new_speed += 3;
- if (!(prace_is_(RACE_KLACKON) ||
- prace_is_(RACE_SPRITE) ||
+ if (!(PRACE_IS_(p_ptr, RACE_KLACKON) ||
+ PRACE_IS_(p_ptr, RACE_SPRITE) ||
(p_ptr->pseikaku == SEIKAKU_MUNCHKIN)))
new_speed += (p_ptr->lev) / 10;
p_ptr->skill_stl += (p_ptr->lev) / 10;
if (p_ptr->lev > 24)
p_ptr->free_act = TRUE;
}
- if ((!inventory[INVEN_RARM].k_idx || p_ptr->migite) &&
- (!inventory[INVEN_LARM].k_idx || p_ptr->hidarite))
+ if ((!p_ptr->inventory_list[INVEN_RARM].k_idx || p_ptr->migite) &&
+ (!p_ptr->inventory_list[INVEN_LARM].k_idx || p_ptr->hidarite))
{
p_ptr->to_a += p_ptr->lev / 2 + 5;
p_ptr->dis_to_a += p_ptr->lev / 2 + 5;
break;
case RACE_ENT:
/* Ents dig like maniacs, but only with their hands. */
- if (!inventory[INVEN_RARM].k_idx)
+ if (!p_ptr->inventory_list[INVEN_RARM].k_idx)
p_ptr->skill_dig += p_ptr->lev * 10;
/* Ents get tougher and stronger as they age, but lose dexterity. */
if (p_ptr->lev > 25) p_ptr->stat_add[A_STR]++;
p_ptr->stat_add[A_CON] += 4;
}
- /* Scan the usable inventory */
+ /* Scan the usable p_ptr->inventory_list */
for (i = INVEN_RARM; i < INVEN_TOTAL; i++)
{
int bonus_to_h, bonus_to_d;
- o_ptr = &inventory[i];
-
- /* Skip non-objects */
+ o_ptr = &p_ptr->inventory_list[i];
if (!o_ptr->k_idx) continue;
- /* Extract the item flags */
object_flags(o_ptr, flgs);
p_ptr->cursed |= (o_ptr->curse_flags & (0xFFFFFFF0L));
}
/* Shield skill bonus */
- if (object_is_armour(&inventory[INVEN_RARM]) || object_is_armour(&inventory[INVEN_LARM]))
+ if (object_is_armour(&p_ptr->inventory_list[INVEN_RARM]) || object_is_armour(&p_ptr->inventory_list[INVEN_LARM]))
{
p_ptr->ac += p_ptr->skill_exp[GINOU_SHIELD] * (1 + p_ptr->lev / 22) / 2000;
p_ptr->dis_ac += p_ptr->skill_exp[GINOU_SHIELD] * (1 + p_ptr->lev / 22) / 2000;
/* Monks get extra ac for armour _not worn_ */
if (((p_ptr->pclass == CLASS_MONK) || (p_ptr->pclass == CLASS_FORCETRAINER)) && !heavy_armor())
{
- if (!(inventory[INVEN_BODY].k_idx))
+ if (!(p_ptr->inventory_list[INVEN_BODY].k_idx))
{
p_ptr->to_a += (p_ptr->lev * 3) / 2;
p_ptr->dis_to_a += (p_ptr->lev * 3) / 2;
}
- if (!(inventory[INVEN_OUTER].k_idx) && (p_ptr->lev > 15))
+ if (!(p_ptr->inventory_list[INVEN_OUTER].k_idx) && (p_ptr->lev > 15))
{
p_ptr->to_a += ((p_ptr->lev - 13) / 3);
p_ptr->dis_to_a += ((p_ptr->lev - 13) / 3);
}
- if (!(inventory[INVEN_LARM].k_idx) && (p_ptr->lev > 10))
+ if (!(p_ptr->inventory_list[INVEN_LARM].k_idx) && (p_ptr->lev > 10))
{
p_ptr->to_a += ((p_ptr->lev - 8) / 3);
p_ptr->dis_to_a += ((p_ptr->lev - 8) / 3);
}
- if (!(inventory[INVEN_HEAD].k_idx) && (p_ptr->lev > 4))
+ if (!(p_ptr->inventory_list[INVEN_HEAD].k_idx) && (p_ptr->lev > 4))
{
p_ptr->to_a += (p_ptr->lev - 2) / 3;
p_ptr->dis_to_a += (p_ptr->lev - 2) / 3;
}
- if (!(inventory[INVEN_HANDS].k_idx))
+ if (!(p_ptr->inventory_list[INVEN_HANDS].k_idx))
{
p_ptr->to_a += (p_ptr->lev / 2);
p_ptr->dis_to_a += (p_ptr->lev / 2);
}
- if (!(inventory[INVEN_FEET].k_idx))
+ if (!(p_ptr->inventory_list[INVEN_FEET].k_idx))
{
p_ptr->to_a += (p_ptr->lev / 3);
p_ptr->dis_to_a += (p_ptr->lev / 3);
if (p_ptr->sh_fire) p_ptr->lite = TRUE;
/* Golems also get an intrinsic AC bonus */
- if (prace_is_(RACE_GOLEM) || prace_is_(RACE_ANDROID))
+ if (PRACE_IS_(p_ptr, RACE_GOLEM) || PRACE_IS_(p_ptr, RACE_ANDROID))
{
p_ptr->to_a += 10 + (p_ptr->lev * 2 / 5);
p_ptr->dis_to_a += 10 + (p_ptr->lev * 2 / 5);
for (i = INVEN_RARM; i <= INVEN_FEET; i++)
{
ARMOUR_CLASS ac = 0;
- o_ptr = &inventory[i];
+ o_ptr = &p_ptr->inventory_list[i];
if (!o_ptr->k_idx) continue;
if (!object_is_armour(o_ptr)) continue;
if (!object_is_cursed(o_ptr)) continue;
if (has_melee_weapon(INVEN_RARM) && has_melee_weapon(INVEN_LARM))
{
int penalty1, penalty2;
- penalty1 = ((100 - p_ptr->skill_exp[GINOU_NITOURYU] / 160) - (130 - inventory[INVEN_RARM].weight) / 8);
- penalty2 = ((100 - p_ptr->skill_exp[GINOU_NITOURYU] / 160) - (130 - inventory[INVEN_LARM].weight) / 8);
- if ((inventory[INVEN_RARM].name1 == ART_QUICKTHORN) && (inventory[INVEN_LARM].name1 == ART_TINYTHORN))
+ penalty1 = ((100 - p_ptr->skill_exp[GINOU_NITOURYU] / 160) - (130 - p_ptr->inventory_list[INVEN_RARM].weight) / 8);
+ penalty2 = ((100 - p_ptr->skill_exp[GINOU_NITOURYU] / 160) - (130 - p_ptr->inventory_list[INVEN_LARM].weight) / 8);
+ if ((p_ptr->inventory_list[INVEN_RARM].name1 == ART_QUICKTHORN) && (p_ptr->inventory_list[INVEN_LARM].name1 == ART_TINYTHORN))
{
penalty1 = penalty1 / 2 - 5;
penalty2 = penalty2 / 2 - 5;
if (penalty1 > 0) penalty1 /= 2;
if (penalty2 > 0) penalty2 /= 2;
}
- else if ((inventory[INVEN_LARM].tval == TV_SWORD) && ((inventory[INVEN_LARM].sval == SV_MAIN_GAUCHE) || (inventory[INVEN_LARM].sval == SV_WAKIZASHI)))
+ else if ((p_ptr->inventory_list[INVEN_LARM].tval == TV_SWORD) && ((p_ptr->inventory_list[INVEN_LARM].sval == SV_MAIN_GAUCHE) || (p_ptr->inventory_list[INVEN_LARM].sval == SV_WAKIZASHI)))
{
penalty1 = MAX(0, penalty1 - 10);
penalty2 = MAX(0, penalty2 - 10);
}
- if ((inventory[INVEN_RARM].name1 == ART_MUSASI_KATANA) && (inventory[INVEN_LARM].name1 == ART_MUSASI_WAKIZASI))
+ if ((p_ptr->inventory_list[INVEN_RARM].name1 == ART_MUSASI_KATANA) && (p_ptr->inventory_list[INVEN_LARM].name1 == ART_MUSASI_WAKIZASI))
{
penalty1 = MIN(0, penalty1);
penalty2 = MIN(0, penalty2);
}
else
{
- if ((inventory[INVEN_RARM].name1 == ART_MUSASI_KATANA) && (penalty1 > 0))
+ if ((p_ptr->inventory_list[INVEN_RARM].name1 == ART_MUSASI_KATANA) && (penalty1 > 0))
penalty1 /= 2;
- if ((inventory[INVEN_LARM].name1 == ART_MUSASI_WAKIZASI) && (penalty2 > 0))
+ if ((p_ptr->inventory_list[INVEN_LARM].name1 == ART_MUSASI_WAKIZASI) && (penalty2 > 0))
penalty2 /= 2;
}
- if (inventory[INVEN_RARM].tval == TV_POLEARM) penalty1 += 10;
- if (inventory[INVEN_LARM].tval == TV_POLEARM) penalty2 += 10;
+ if (p_ptr->inventory_list[INVEN_RARM].tval == TV_POLEARM) penalty1 += 10;
+ if (p_ptr->inventory_list[INVEN_LARM].tval == TV_POLEARM) penalty2 += 10;
p_ptr->to_h[0] -= (s16b)penalty1;
p_ptr->to_h[1] -= (s16b)penalty2;
p_ptr->dis_to_h[0] -= (s16b)penalty1;
/* Examine the "current bow" */
- o_ptr = &inventory[INVEN_BOW];
+ o_ptr = &p_ptr->inventory_list[INVEN_BOW];
/* It is hard to carholdry a heavy bow */
p_ptr->heavy_shoot = is_heavy_shoot(o_ptr);
for (i = 0; i < 2; i++)
{
/* Examine the "main weapon" */
- o_ptr = &inventory[INVEN_RARM + i];
+ o_ptr = &p_ptr->inventory_list[INVEN_RARM + i];
object_flags(o_ptr, flgs);
{
if (has_melee_weapon(INVEN_RARM + i))
{
- OBJECT_TYPE_VALUE tval = inventory[INVEN_RARM + i].tval - TV_WEAPON_BEGIN;
- OBJECT_SUBTYPE_VALUE sval = inventory[INVEN_RARM + i].sval;
+ OBJECT_TYPE_VALUE tval = p_ptr->inventory_list[INVEN_RARM + i].tval - TV_WEAPON_BEGIN;
+ OBJECT_SUBTYPE_VALUE sval = p_ptr->inventory_list[INVEN_RARM + i].sval;
p_ptr->to_h[i] += (p_ptr->weapon_exp[tval][sval] - WEAPON_EXP_BEGINNER) / 200;
p_ptr->dis_to_h[i] += (p_ptr->weapon_exp[tval][sval] - WEAPON_EXP_BEGINNER) / 200;
}
else if (p_ptr->pclass == CLASS_NINJA)
{
- if ((s_info[CLASS_NINJA].w_max[tval][sval] <= WEAPON_EXP_BEGINNER) || (inventory[INVEN_LARM - i].tval == TV_SHIELD))
+ if ((s_info[CLASS_NINJA].w_max[tval][sval] <= WEAPON_EXP_BEGINNER) || (p_ptr->inventory_list[INVEN_LARM - i].tval == TV_SHIELD))
{
p_ptr->to_h[i] -= 40;
p_ptr->dis_to_h[i] -= 40;
p_ptr->skill_tht += ((cp_ptr->x_thb * p_ptr->lev / 10) + (ap_ptr->a_thb * p_ptr->lev / 50));
- if ((prace_is_(RACE_S_FAIRY)) && (p_ptr->pseikaku != SEIKAKU_SEXY) && (p_ptr->cursed & TRC_AGGRAVATE))
+ if ((PRACE_IS_(p_ptr, RACE_S_FAIRY)) && (p_ptr->pseikaku != SEIKAKU_SEXY) && (p_ptr->cursed & TRC_AGGRAVATE))
{
p_ptr->cursed &= ~(TRC_AGGRAVATE);
p_ptr->skill_stl = MIN(p_ptr->skill_stl - 3, (p_ptr->skill_stl + 2) / 2);
/* Hack -- handle "xtra" mode */
- if (character_xtra) return;
+ if (current_world_ptr->character_xtra) return;
/* Take note when "heavy bow" changes */
if (p_ptr->old_heavy_shoot != p_ptr->heavy_shoot)
{
msg_print(_("こんな重い弓を装備しているのは大変だ。", "You have trouble wielding such a heavy bow."));
}
- else if (inventory[INVEN_BOW].k_idx)
+ else if (p_ptr->inventory_list[INVEN_BOW].k_idx)
{
msg_print(_("この弓なら装備していても辛くない。", "You have no trouble wielding your bow."));
}
if (p_ptr->icky_wield[i])
{
msg_print(_("今の装備はどうも自分にふさわしくない気がする。", "You do not feel comfortable with your weapon."));
- if (is_loading_now)
+ if (current_world_ptr->is_loading_now)
{
- chg_virtue(V_FAITH, -1);
+ chg_virtue(p_ptr, V_FAITH, -1);
}
}
else if (has_melee_weapon(INVEN_RARM + i))
if (heavy_armor())
{
msg_print(_("装備が重くてバランスを取れない。", "The weight of your armor disrupts your balance."));
- if (is_loading_now)
+ if (current_world_ptr->is_loading_now)
{
- chg_virtue(V_HARMONY, -1);
+ chg_virtue(p_ptr, V_HARMONY, -1);
}
}
else
for (i = 0; i < INVEN_PACK; i++)
{
#if 0
- if ((inventory[i].tval == TV_SORCERY_BOOK) && (inventory[i].sval == 2)) have_dd_s = TRUE;
- if ((inventory[i].tval == TV_TRUMP_BOOK) && (inventory[i].sval == 1)) have_dd_t = TRUE;
+ if ((p_ptr->inventory_list[i].tval == TV_SORCERY_BOOK) && (p_ptr->inventory_list[i].sval == 2)) have_dd_s = TRUE;
+ if ((p_ptr->inventory_list[i].tval == TV_TRUMP_BOOK) && (p_ptr->inventory_list[i].sval == 1)) have_dd_t = TRUE;
#endif
- if ((inventory[i].tval == TV_NATURE_BOOK) && (inventory[i].sval == 2)) have_sw = TRUE;
- if ((inventory[i].tval == TV_CRAFT_BOOK) && (inventory[i].sval == 2)) have_kabe = TRUE;
+ if ((p_ptr->inventory_list[i].tval == TV_NATURE_BOOK) && (p_ptr->inventory_list[i].sval == 2)) have_sw = TRUE;
+ if ((p_ptr->inventory_list[i].tval == TV_CRAFT_BOOK) && (p_ptr->inventory_list[i].sval == 2)) have_kabe = TRUE;
}
for (this_o_idx = current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].o_idx; this_o_idx; this_o_idx = next_o_idx)
p_ptr->align = 0;
int i, j, neutral[2];
- for (m_idx = m_max - 1; m_idx >= 1; m_idx--)
+ for (m_idx = current_floor_ptr->m_max - 1; m_idx >= 1; m_idx--)
{
monster_type *m_ptr;
monster_race *r_ptr;
{
if (has_melee_weapon(INVEN_RARM + i))
{
- if (inventory[INVEN_RARM + i].name1 == ART_IRON_BALL) p_ptr->align -= 1000;
+ if (p_ptr->inventory_list[INVEN_RARM + i].name1 == ART_IRON_BALL) p_ptr->align -= 1000;
}
}
#ifdef JP
/* レベルアップの時は上昇量を表示する */
- if ((level_up == 1) && (mhp > p_ptr->mhp))
+ if (p_ptr->level_up_message && (mhp > p_ptr->mhp))
{
msg_format("最大ヒット・ポイントが %d 増加した!", (mhp - p_ptr->mhp));
}
/* Loop through all wielded items */
for (i = INVEN_RARM; i < INVEN_TOTAL; i++)
{
- o_ptr = &inventory[i];
+ o_ptr = &p_ptr->inventory_list[i];
/* Skip empty slots */
if (!o_ptr->k_idx) continue;
}
/* max radius is 14 (was 5) without rewriting other code -- */
- /* see current_floor_ptr->grid_array.c:update_lite() and defines.h:LITE_MAX */
if (d_info[p_ptr->dungeon_idx].flags1 & DF1_DARKNESS && p_ptr->cur_lite > 1)
p_ptr->cur_lite = 1;
p_ptr->old_lite = p_ptr->cur_lite;
if ((p_ptr->cur_lite > 0) && (p_ptr->special_defense & NINJA_S_STEALTH))
- set_superstealth(FALSE);
+ set_superstealth(p_ptr, FALSE);
}
}
if (!mp_ptr->spell_book) return;
/* Hack -- wait for creation */
- if (!character_generated) return;
+ if (!current_world_ptr->character_generated) return;
/* Hack -- handle "xtra" mode */
- if (character_xtra) return;
+ if (current_world_ptr->character_xtra) return;
if ((p_ptr->pclass == CLASS_SORCERER) || (p_ptr->pclass == CLASS_RED_MAGE))
{
p_ptr->cumber_glove = FALSE;
/* Get the gloves */
- o_ptr = &inventory[INVEN_HANDS];
+ o_ptr = &p_ptr->inventory_list[INVEN_HANDS];
/* Examine the gloves */
object_flags(o_ptr, flgs);
/* Weigh the armor */
cur_wgt = 0;
- if (inventory[INVEN_RARM].tval > TV_SWORD) cur_wgt += inventory[INVEN_RARM].weight;
- if (inventory[INVEN_LARM].tval > TV_SWORD) cur_wgt += inventory[INVEN_LARM].weight;
- cur_wgt += inventory[INVEN_BODY].weight;
- cur_wgt += inventory[INVEN_HEAD].weight;
- cur_wgt += inventory[INVEN_OUTER].weight;
- cur_wgt += inventory[INVEN_HANDS].weight;
- cur_wgt += inventory[INVEN_FEET].weight;
+ if (p_ptr->inventory_list[INVEN_RARM].tval > TV_SWORD) cur_wgt += p_ptr->inventory_list[INVEN_RARM].weight;
+ if (p_ptr->inventory_list[INVEN_LARM].tval > TV_SWORD) cur_wgt += p_ptr->inventory_list[INVEN_LARM].weight;
+ cur_wgt += p_ptr->inventory_list[INVEN_BODY].weight;
+ cur_wgt += p_ptr->inventory_list[INVEN_HEAD].weight;
+ cur_wgt += p_ptr->inventory_list[INVEN_OUTER].weight;
+ cur_wgt += p_ptr->inventory_list[INVEN_HANDS].weight;
+ cur_wgt += p_ptr->inventory_list[INVEN_FEET].weight;
/* Subtract a percentage of maximum mana. */
switch (p_ptr->pclass)
case CLASS_FORCETRAINER:
case CLASS_SORCERER:
{
- if (inventory[INVEN_RARM].tval <= TV_SWORD) cur_wgt += inventory[INVEN_RARM].weight;
- if (inventory[INVEN_LARM].tval <= TV_SWORD) cur_wgt += inventory[INVEN_LARM].weight;
+ if (p_ptr->inventory_list[INVEN_RARM].tval <= TV_SWORD) cur_wgt += p_ptr->inventory_list[INVEN_RARM].weight;
+ if (p_ptr->inventory_list[INVEN_LARM].tval <= TV_SWORD) cur_wgt += p_ptr->inventory_list[INVEN_LARM].weight;
break;
}
case CLASS_BARD:
case CLASS_TOURIST:
{
- if (inventory[INVEN_RARM].tval <= TV_SWORD) cur_wgt += inventory[INVEN_RARM].weight * 2 / 3;
- if (inventory[INVEN_LARM].tval <= TV_SWORD) cur_wgt += inventory[INVEN_LARM].weight * 2 / 3;
+ if (p_ptr->inventory_list[INVEN_RARM].tval <= TV_SWORD) cur_wgt += p_ptr->inventory_list[INVEN_RARM].weight * 2 / 3;
+ if (p_ptr->inventory_list[INVEN_LARM].tval <= TV_SWORD) cur_wgt += p_ptr->inventory_list[INVEN_LARM].weight * 2 / 3;
break;
}
case CLASS_BEASTMASTER:
case CLASS_MIRROR_MASTER:
{
- if (inventory[INVEN_RARM].tval <= TV_SWORD) cur_wgt += inventory[INVEN_RARM].weight / 2;
- if (inventory[INVEN_LARM].tval <= TV_SWORD) cur_wgt += inventory[INVEN_LARM].weight / 2;
+ if (p_ptr->inventory_list[INVEN_RARM].tval <= TV_SWORD) cur_wgt += p_ptr->inventory_list[INVEN_RARM].weight / 2;
+ if (p_ptr->inventory_list[INVEN_LARM].tval <= TV_SWORD) cur_wgt += p_ptr->inventory_list[INVEN_LARM].weight / 2;
break;
}
case CLASS_RED_MAGE:
case CLASS_WARRIOR_MAGE:
{
- if (inventory[INVEN_RARM].tval <= TV_SWORD) cur_wgt += inventory[INVEN_RARM].weight / 3;
- if (inventory[INVEN_LARM].tval <= TV_SWORD) cur_wgt += inventory[INVEN_LARM].weight / 3;
+ if (p_ptr->inventory_list[INVEN_RARM].tval <= TV_SWORD) cur_wgt += p_ptr->inventory_list[INVEN_RARM].weight / 3;
+ if (p_ptr->inventory_list[INVEN_LARM].tval <= TV_SWORD) cur_wgt += p_ptr->inventory_list[INVEN_LARM].weight / 3;
break;
}
case CLASS_PALADIN:
case CLASS_CHAOS_WARRIOR:
{
- if (inventory[INVEN_RARM].tval <= TV_SWORD) cur_wgt += inventory[INVEN_RARM].weight / 5;
- if (inventory[INVEN_LARM].tval <= TV_SWORD) cur_wgt += inventory[INVEN_LARM].weight / 5;
+ if (p_ptr->inventory_list[INVEN_RARM].tval <= TV_SWORD) cur_wgt += p_ptr->inventory_list[INVEN_RARM].weight / 5;
+ if (p_ptr->inventory_list[INVEN_LARM].tval <= TV_SWORD) cur_wgt += p_ptr->inventory_list[INVEN_LARM].weight / 5;
break;
}
#ifdef JP
/* レベルアップの時は上昇量を表示する */
- if ((level_up == 1) && (msp > p_ptr->msp))
+ if (p_ptr->level_up_message && (msp > p_ptr->msp))
{
msg_format("最大マジック・ポイントが %d 増加した!", (msp - p_ptr->msp));
}
/* Hack -- handle "xtra" mode */
- if (character_xtra) return;
+ if (current_world_ptr->character_xtra) return;
/* Take note when "glove state" changes */
if (p_ptr->old_cumber_glove != p_ptr->cumber_glove)
object_type *q_ptr;
BIT_FLAGS flgs[TR_FLAG_SIZE];
- /* Scan the usable inventory */
+ /* Scan the usable p_ptr->inventory_list */
for (i = INVEN_RARM; i < INVEN_TOTAL; i++)
{
- q_ptr = &inventory[i];
-
- /* Skip non-objects */
+ q_ptr = &p_ptr->inventory_list[i];
if (!q_ptr->k_idx) continue;
/* Do not apply current equip */
if (i == INVEN_BOW) continue;
- /* Extract the item flags */
object_flags(q_ptr, flgs);
/* Boost shots */
*/
bool has_melee_weapon(int i)
{
- return ((inventory[i].k_idx && object_is_melee_weapon(&inventory[i])) ? TRUE : FALSE);
+ return ((p_ptr->inventory_list[i].k_idx && object_is_melee_weapon(&p_ptr->inventory_list[i])) ? TRUE : FALSE);
}
/*!
{
BIT_FLAGS16 status = EMPTY_HAND_NONE;
- if (!inventory[INVEN_RARM].k_idx) status |= EMPTY_HAND_RARM;
- if (!inventory[INVEN_LARM].k_idx) status |= EMPTY_HAND_LARM;
+ if (!p_ptr->inventory_list[INVEN_RARM].k_idx) status |= EMPTY_HAND_RARM;
+ if (!p_ptr->inventory_list[INVEN_LARM].k_idx) status |= EMPTY_HAND_LARM;
if (riding_control && (status != EMPTY_HAND_NONE) && p_ptr->riding && !(p_ptr->pet_extra_flags & PF_RYOUTE))
{
if ((p_ptr->pclass != CLASS_MONK) && (p_ptr->pclass != CLASS_FORCETRAINER) && (p_ptr->pclass != CLASS_NINJA)) return FALSE;
/* Weight the armor */
- if (inventory[INVEN_RARM].tval > TV_SWORD) monk_arm_wgt += inventory[INVEN_RARM].weight;
- if (inventory[INVEN_LARM].tval > TV_SWORD) monk_arm_wgt += inventory[INVEN_LARM].weight;
- monk_arm_wgt += inventory[INVEN_BODY].weight;
- monk_arm_wgt += inventory[INVEN_HEAD].weight;
- monk_arm_wgt += inventory[INVEN_OUTER].weight;
- monk_arm_wgt += inventory[INVEN_HANDS].weight;
- monk_arm_wgt += inventory[INVEN_FEET].weight;
+ if (p_ptr->inventory_list[INVEN_RARM].tval > TV_SWORD) monk_arm_wgt += p_ptr->inventory_list[INVEN_RARM].weight;
+ if (p_ptr->inventory_list[INVEN_LARM].tval > TV_SWORD) monk_arm_wgt += p_ptr->inventory_list[INVEN_LARM].weight;
+ monk_arm_wgt += p_ptr->inventory_list[INVEN_BODY].weight;
+ monk_arm_wgt += p_ptr->inventory_list[INVEN_HEAD].weight;
+ monk_arm_wgt += p_ptr->inventory_list[INVEN_OUTER].weight;
+ monk_arm_wgt += p_ptr->inventory_list[INVEN_HANDS].weight;
+ monk_arm_wgt += p_ptr->inventory_list[INVEN_FEET].weight;
return (monk_arm_wgt > (100 + (p_ptr->lev * 4)));
}
}
/* Character is not ready yet, no screen updates */
- if (!character_generated) return;
+ if (!current_world_ptr->character_generated) return;
/* Character is in "icky" mode, no screen updates */
- if (character_icky) return;
+ if (current_world_ptr->character_icky) return;
if (creature_ptr->update & (PU_UN_LITE))
{
for (i = 0; i < INVEN_PACK; i++)
{
- o_ptr = &inventory[i];
+ o_ptr = &p_ptr->inventory_list[i];
if (o_ptr->k_idx && check_book_realm(o_ptr->tval, o_ptr->sval)) return FALSE;
}
msg_print(_("パターンを血で汚してしまった!", "You bleed on the Pattern!"));
msg_print(_("何か恐ろしい事が起こった!", "Something terrible happens!"));
- if (!IS_INVULN()) take_hit(DAMAGE_NOESCAPE, damroll(10, 8), _("パターン損壊", "corrupting the Pattern"), -1);
+ if (!IS_INVULN()) take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(10, 8), _("パターン損壊", "corrupting the Pattern"), -1);
to_ruin = randint1(45) + 35;
while (to_ruin--)
{
int power = 100;
- if (p_ptr->inside_battle || !character_dungeon) return;
+ if (p_ptr->phase_out || !current_world_ptr->character_dungeon) return;
if (!necro && m_ptr)
{
}
else power *= 2;
- if (!is_loading_now)
+ if (!current_world_ptr->is_loading_now)
return; /* No effect yet, just loaded... */
if (!m_ptr->ml)
r_ptr->r_flags2 |= RF2_ELDRITCH_HORROR;
/* Demon characters are unaffected */
- if (prace_is_(RACE_IMP) || prace_is_(RACE_DEMON) || (mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_DEMON)) return;
+ if (PRACE_IS_(p_ptr, RACE_IMP) || PRACE_IS_(p_ptr, RACE_DEMON) || (mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_DEMON)) return;
if (p_ptr->wizard) return;
/* Undead characters are 50% likely to be unaffected */
- if (prace_is_(RACE_SKELETON) || prace_is_(RACE_ZOMBIE)
- || prace_is_(RACE_VAMPIRE) || prace_is_(RACE_SPECTRE) ||
+ if (PRACE_IS_(p_ptr, RACE_SKELETON) || PRACE_IS_(p_ptr, RACE_ZOMBIE)
+ || PRACE_IS_(p_ptr, RACE_VAMPIRE) || PRACE_IS_(p_ptr, RACE_SPECTRE) ||
(mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_UNDEAD))
{
if (saving_throw(25 + p_ptr->lev)) return;
}
do {
- (void)do_dec_stat(A_INT);
+ (void)do_dec_stat(p_ptr, A_INT);
} while (randint0(100) > p_ptr->skill_sav && one_in_(2));
do {
- (void)do_dec_stat(A_WIS);
+ (void)do_dec_stat(p_ptr, A_WIS);
} while (randint0(100) > p_ptr->skill_sav && one_in_(2));
switch (randint1(21))
/* Brain smash */
if (!p_ptr->resist_conf)
{
- (void)set_confused(p_ptr->confused + randint0(4) + 4);
+ (void)set_confused(p_ptr, p_ptr->confused + randint0(4) + 4);
}
if (!p_ptr->free_act)
{
- (void)set_paralyzed(p_ptr->paralyzed + randint0(4) + 4);
+ (void)set_paralyzed(p_ptr, p_ptr->paralyzed + randint0(4) + 4);
}
if (!p_ptr->resist_chaos)
{
- (void)set_image(p_ptr->image + randint0(250) + 150);
+ (void)set_image(p_ptr, p_ptr->image + randint0(250) + 150);
}
break;
case 17:
case 20:
case 21:
/* Amnesia */
- if (lose_all_info())
+ if (lose_all_info(p_ptr))
msg_print(_("あまりの恐怖に全てのことを忘れてしまった!", "You forget everything in your utmost terror!"));
break;
}
p_ptr->window |= (PW_PLAYER | PW_SPELL | PW_INVEN);
/* HPとMPの上昇量を表示 */
- level_up = 1;
+ p_ptr->level_up_message = TRUE;
handle_stuff();
- level_up = 0;
+ p_ptr->level_up_message = FALSE;
if (level_inc_stat)
{
prt("", n + 2, 14);
if (get_check(_("よろしいですか?", "Are you sure? "))) break;
}
- do_inc_stat(choice - 'a');
+ do_inc_stat(p_ptr, choice - 'a');
screen_load();
}
else if (!(p_ptr->max_plv % 2))
- do_inc_stat(randint0(6));
+ do_inc_stat(p_ptr, randint0(6));
}
if (level_mutation)
*/
if (level_reward)
{
- gain_level_reward(0);
+ gain_level_reward(p_ptr, 0);
level_reward = FALSE;
}
return point;
}
+
+void cheat_death(player_type *creature_ptr)
+{
+ /* Mark social class, reset age, if needed */
+ if (creature_ptr->sc) creature_ptr->sc = creature_ptr->age = 0;
+
+ /* Increase age */
+ creature_ptr->age++;
+
+ /* Mark savefile */
+ creature_ptr->noscore |= 0x0001;
+
+ msg_print(_("ウィザードモードに念を送り、死を欺いた。", "You invoke wizard mode and cheat death."));
+ msg_print(NULL);
+
+ (void)life_stream(FALSE, FALSE);
+
+ if (creature_ptr->pclass == CLASS_MAGIC_EATER)
+ {
+ int magic_idx;
+ for (magic_idx = 0; magic_idx < EATER_EXT * 2; magic_idx++)
+ {
+ creature_ptr->magic_num1[magic_idx] = creature_ptr->magic_num2[magic_idx] * EATER_CHARGE;
+ }
+ for (; magic_idx < EATER_EXT * 3; magic_idx++)
+ {
+ creature_ptr->magic_num1[magic_idx] = 0;
+ }
+ }
+
+ /* Restore spell points */
+ creature_ptr->csp = creature_ptr->msp;
+ creature_ptr->csp_frac = 0;
+
+ /* Hack -- cancel recall */
+ if (creature_ptr->word_recall)
+ {
+ msg_print(_("張りつめた大気が流れ去った...", "A tension leaves the air around you..."));
+ msg_print(NULL);
+
+ /* Hack -- Prevent recall */
+ creature_ptr->word_recall = 0;
+ creature_ptr->redraw |= (PR_STATUS);
+ }
+
+ /* Hack -- cancel alter */
+ if (creature_ptr->alter_reality)
+ {
+ /* Hack -- Prevent alter */
+ creature_ptr->alter_reality = 0;
+ creature_ptr->redraw |= (PR_STATUS);
+ }
+
+ /* Note cause of death */
+ (void)strcpy(creature_ptr->died_from, _("死の欺き", "Cheating death"));
+
+ /* Do not die */
+ creature_ptr->is_dead = FALSE;
+
+ /* Hack -- Prevent starvation */
+ (void)set_food(p_ptr, PY_FOOD_MAX - 1);
+
+ current_floor_ptr->dun_level = 0;
+ creature_ptr->inside_arena = FALSE;
+ creature_ptr->phase_out = FALSE;
+ leaving_quest = 0;
+ creature_ptr->inside_quest = 0;
+ if (p_ptr->dungeon_idx) creature_ptr->recall_dungeon = p_ptr->dungeon_idx;
+ p_ptr->dungeon_idx = 0;
+ if (lite_town || vanilla_town)
+ {
+ creature_ptr->wilderness_y = 1;
+ creature_ptr->wilderness_x = 1;
+ if (vanilla_town)
+ {
+ creature_ptr->oldpy = 10;
+ creature_ptr->oldpx = 34;
+ }
+ else
+ {
+ creature_ptr->oldpy = 33;
+ creature_ptr->oldpx = 131;
+ }
+ }
+ else
+ {
+ creature_ptr->wilderness_y = 48;
+ creature_ptr->wilderness_x = 5;
+ creature_ptr->oldpy = 33;
+ creature_ptr->oldpx = 131;
+ }
+ creature_ptr->wild_mode = FALSE;
+ creature_ptr->leaving = TRUE;
+
+ do_cmd_write_nikki(NIKKI_BUNSHOU, 1,
+ _(" しかし、生き返った。",
+ " but revived."));
+
+ /* Prepare next floor */
+ leave_floor(p_ptr->change_floor_mode);
+ wipe_m_list();
+
+}