OSDN Git Service

b3e363b1156e968aabe296413d04648b469c3129
[hengband/hengband.git] / src / player-info / self-info.c
1 /*!
2  * @brief 自己分析処理/ Self knowledge
3  * @date 2018/09/07
4  * @author
5  * <pre>
6  * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
7  * This software may be copied and distributed for educational, research,
8  * and not for profit purposes provided that this copyright and statement
9  * are included in all such copies.  Other copyrights may also apply.
10  * </pre>
11  * 2018 Deskull
12  * @details
13  * spell2s.cから分離
14  */
15
16 #include "player-info/self-info.h"
17 #include "inventory/inventory-slot-types.h"
18 #include "io/input-key-acceptor.h"
19 #include "mutation/mutation-flag-types.h"
20 #include "object-enchant/tr-types.h"
21 #include "object-enchant/trc-types.h"
22 #include "object/object-flags.h"
23 #include "player-info/avatar.h"
24 #include "player-info/class-ability-info.h"
25 #include "player-info/race-ability-info.h"
26 #include "player-info/self-info-util.h"
27 #include "player/attack-defense-types.h"
28 #include "player/player-class.h"
29 #include "player/player-race-types.h"
30 #include "player/player-race.h"
31 #include "player/player-status-flags.h"
32 #include "realm/realm-names-table.h"
33 #include "realm/realm-song-numbers.h"
34 #include "status/element-resistance.h"
35 #include "term/screen-processor.h"
36 #include "util/bit-flags-calculator.h"
37
38 void display_life_rating(player_type *creature_ptr, self_info_type *si_ptr)
39 {
40     creature_ptr->knowledge |= KNOW_STAT | KNOW_HPRATE;
41     strcpy(si_ptr->plev_buf, "");
42     int percent
43         = (int)(((long)creature_ptr->player_hp[PY_MAX_LEVEL - 1] * 200L) / (2 * creature_ptr->hitdie + ((PY_MAX_LEVEL - 1 + 3) * (creature_ptr->hitdie + 1))));
44     sprintf(si_ptr->plev_buf, _("現在の体力ランク : %d/100", "Your current Life Rating is %d/100."), percent);
45     strcpy(si_ptr->buf[0], si_ptr->plev_buf);
46     si_ptr->info[si_ptr->line++] = si_ptr->buf[0];
47     si_ptr->info[si_ptr->line++] = "";
48 }
49
50 void display_max_base_status(player_type *creature_ptr, self_info_type *si_ptr)
51 {
52     si_ptr->info[si_ptr->line++] = _("能力の最大値", "Limits of maximum stats");
53     for (base_status_type v_nr = 0; v_nr < A_MAX; v_nr++) {
54         char stat_desc[80];
55         sprintf(stat_desc, "%s 18/%d", stat_names[v_nr], creature_ptr->stat_max_max[v_nr] - 18);
56         strcpy(si_ptr->s_string[v_nr], stat_desc);
57         si_ptr->info[si_ptr->line++] = si_ptr->s_string[v_nr];
58     }
59 }
60
61 void display_virtue(player_type *creature_ptr, self_info_type *si_ptr)
62 {
63     si_ptr->info[si_ptr->line++] = "";
64     sprintf(si_ptr->plev_buf, _("現在の属性 : %s(%ld)", "Your alignment : %s(%ld)"), your_alignment(creature_ptr), (long int)creature_ptr->align);
65     strcpy(si_ptr->buf[1], si_ptr->plev_buf);
66     si_ptr->info[si_ptr->line++] = si_ptr->buf[1];
67     for (int v_nr = 0; v_nr < 8; v_nr++) {
68         GAME_TEXT vir_name[20];
69         char vir_desc[80];
70         int tester = creature_ptr->virtues[v_nr];
71         strcpy(vir_name, virtue[(creature_ptr->vir_types[v_nr]) - 1]);
72         sprintf(vir_desc, _("おっと。%sの情報なし。", "Oops. No info about %s."), vir_name);
73         if (tester < -100)
74             sprintf(vir_desc, _("[%s]の対極 (%d)", "You are the polar opposite of %s (%d)."), vir_name, tester);
75         else if (tester < -80)
76             sprintf(vir_desc, _("[%s]の大敵 (%d)", "You are an arch-enemy of %s (%d)."), vir_name, tester);
77         else if (tester < -60)
78             sprintf(vir_desc, _("[%s]の強敵 (%d)", "You are a bitter enemy of %s (%d)."), vir_name, tester);
79         else if (tester < -40)
80             sprintf(vir_desc, _("[%s]の敵 (%d)", "You are an enemy of %s (%d)."), vir_name, tester);
81         else if (tester < -20)
82             sprintf(vir_desc, _("[%s]の罪者 (%d)", "You have sinned against %s (%d)."), vir_name, tester);
83         else if (tester < 0)
84             sprintf(vir_desc, _("[%s]の迷道者 (%d)", "You have strayed from the path of %s (%d)."), vir_name, tester);
85         else if (tester == 0)
86             sprintf(vir_desc, _("[%s]の中立者 (%d)", "You are neutral to %s (%d)."), vir_name, tester);
87         else if (tester < 20)
88             sprintf(vir_desc, _("[%s]の小徳者 (%d)", "You are somewhat virtuous in %s (%d)."), vir_name, tester);
89         else if (tester < 40)
90             sprintf(vir_desc, _("[%s]の中徳者 (%d)", "You are virtuous in %s (%d)."), vir_name, tester);
91         else if (tester < 60)
92             sprintf(vir_desc, _("[%s]の高徳者 (%d)", "You are very virtuous in %s (%d)."), vir_name, tester);
93         else if (tester < 80)
94             sprintf(vir_desc, _("[%s]の覇者 (%d)", "You are a champion of %s (%d)."), vir_name, tester);
95         else if (tester < 100)
96             sprintf(vir_desc, _("[%s]の偉大な覇者 (%d)", "You are a great champion of %s (%d)."), vir_name, tester);
97         else
98             sprintf(vir_desc, _("[%s]の具現者 (%d)", "You are the living embodiment of %s (%d)."), vir_name, tester);
99
100         strcpy(si_ptr->v_string[v_nr], vir_desc);
101         si_ptr->info[si_ptr->line++] = si_ptr->v_string[v_nr];
102     }
103 }
104
105 void display_mimic_race_ability(player_type *creature_ptr, self_info_type *si_ptr)
106 {
107     switch (creature_ptr->mimic_form) {
108     case MIMIC_DEMON:
109     case MIMIC_DEMON_LORD:
110         sprintf(si_ptr->plev_buf, _("あなたは %d ダメージの地獄か火炎のブレスを吐くことができる。(%d MP)", "You can nether breathe, dam. %d (cost %d)."),
111             3 * creature_ptr->lev, 10 + creature_ptr->lev / 3);
112
113         si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
114         break;
115     case MIMIC_VAMPIRE:
116         if (creature_ptr->lev <= 1)
117             break;
118
119         sprintf(si_ptr->plev_buf, _("あなたは敵から %d-%d HP の生命力を吸収できる。(%d MP)", "You can steal life from a foe, dam. %d-%d (cost %d)."),
120             creature_ptr->lev + MAX(1, creature_ptr->lev / 10), creature_ptr->lev + creature_ptr->lev * MAX(1, creature_ptr->lev / 10),
121             1 + (creature_ptr->lev / 3));
122         si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
123         break;
124     }
125 }
126
127 void display_equipment_influence(player_type *creature_ptr, self_info_type *si_ptr)
128 {
129     for (int k = INVEN_RARM; k < INVEN_TOTAL; k++) {
130         u32b tflgs[TR_FLAG_SIZE];
131         si_ptr->o_ptr = &creature_ptr->inventory_list[k];
132         if (si_ptr->o_ptr->k_idx == 0)
133             continue;
134
135         object_flags(creature_ptr, si_ptr->o_ptr, tflgs);
136         for (int j = 0; j < TR_FLAG_SIZE; j++)
137             si_ptr->flags[j] |= tflgs[j];
138     }
139
140     if (have_flag(si_ptr->flags, TR_STR))
141         si_ptr->info[si_ptr->line++] = _("あなたの腕力は装備によって影響を受けている。", "Your strength is affected by your equipment.");
142
143     if (have_flag(si_ptr->flags, TR_INT))
144         si_ptr->info[si_ptr->line++] = _("あなたの知能は装備によって影響を受けている。", "Your intelligence is affected by your equipment.");
145
146     if (have_flag(si_ptr->flags, TR_WIS))
147         si_ptr->info[si_ptr->line++] = _("あなたの賢さは装備によって影響を受けている。", "Your wisdom is affected by your equipment.");
148
149     if (have_flag(si_ptr->flags, TR_DEX))
150         si_ptr->info[si_ptr->line++] = _("あなたの器用さは装備によって影響を受けている。", "Your dexterity is affected by your equipment.");
151
152     if (have_flag(si_ptr->flags, TR_CON))
153         si_ptr->info[si_ptr->line++] = _("あなたの耐久力は装備によって影響を受けている。", "Your constitution is affected by your equipment.");
154
155     if (have_flag(si_ptr->flags, TR_CHR))
156         si_ptr->info[si_ptr->line++] = _("あなたの魅力は装備によって影響を受けている。", "Your charisma is affected by your equipment.");
157
158     if (have_flag(si_ptr->flags, TR_STEALTH))
159         si_ptr->info[si_ptr->line++] = _("あなたの隠密行動能力は装備によって影響を受けている。", "Your stealth is affected by your equipment.");
160
161     if (have_flag(si_ptr->flags, TR_SEARCH))
162         si_ptr->info[si_ptr->line++] = _("あなたの探索能力は装備によって影響を受けている。", "Your searching ability is affected by your equipment.");
163
164     if (have_flag(si_ptr->flags, TR_INFRA))
165         si_ptr->info[si_ptr->line++] = _("あなたの赤外線視力は装備によって影響を受けている。", "Your infravision is affected by your equipment.");
166
167     if (have_flag(si_ptr->flags, TR_TUNNEL))
168         si_ptr->info[si_ptr->line++] = _("あなたの採掘能力は装備によって影響を受けている。", "Your digging ability is affected by your equipment.");
169
170     if (have_flag(si_ptr->flags, TR_SPEED))
171         si_ptr->info[si_ptr->line++] = _("あなたのスピードは装備によって影響を受けている。", "Your speed is affected by your equipment.");
172
173     if (have_flag(si_ptr->flags, TR_BLOWS))
174         si_ptr->info[si_ptr->line++] = _("あなたの攻撃速度は装備によって影響を受けている。", "Your attack speed is affected by your equipment.");
175 }
176
177 /*!
178  * @brief 自己分析処理(Nethackからのアイデア) / self-knowledge... idea from nethack.
179  * @return なし
180  * @details
181  * <pre>
182  * Useful for determining powers and
183  * resistences of items.  It saves the screen, clears it, then starts listing
184  * attributes, a screenful at a time.  (There are a LOT of attributes to
185  * list.  It will probably take 2 or 3 screens for a powerful character whose
186  * using several artifacts...) -CFT
187  *
188  * It is now a lot more efficient. -BEN-
189  *
190  * See also "identify_fully()".
191  *
192  * Use the "show_file()" method, perhaps.
193  * </pre>
194  */
195 void self_knowledge(player_type *creature_ptr)
196 {
197     self_info_type tmp_si;
198     self_info_type *si_ptr = initialize_self_info_type(&tmp_si);
199     display_life_rating(creature_ptr, si_ptr);
200     chg_virtue(creature_ptr, V_KNOWLEDGE, 1);
201     chg_virtue(creature_ptr, V_ENLIGHTEN, 1);
202     display_max_base_status(creature_ptr, si_ptr);
203     display_virtue(creature_ptr, si_ptr);
204     si_ptr->info[si_ptr->line++] = "";
205     if (creature_ptr->mimic_form)
206         display_mimic_race_ability(creature_ptr, si_ptr);
207     else
208         set_race_ability_info(creature_ptr, si_ptr);
209
210     set_class_ability_info(creature_ptr, si_ptr);
211     if (creature_ptr->muta1) {
212         if (creature_ptr->muta1 & MUT1_SPIT_ACID) {
213             si_ptr->info[si_ptr->line++] = _("あなたは酸を吹きかけることができる。(ダメージ レベルX1)", "You can spit acid (dam lvl).");
214         }
215         if (creature_ptr->muta1 & MUT1_BR_FIRE) {
216             si_ptr->info[si_ptr->line++] = _("あなたは炎のブレスを吐くことができる。(ダメージ レベルX2)", "You can breathe fire (dam lvl * 2).");
217         }
218         if (creature_ptr->muta1 & MUT1_HYPN_GAZE) {
219             si_ptr->info[si_ptr->line++] = _("あなたの睨みは催眠効果をもつ。", "Your gaze is hypnotic.");
220         }
221         if (creature_ptr->muta1 & MUT1_TELEKINES) {
222             si_ptr->info[si_ptr->line++] = _("あなたは念動力をもっている。", "You are telekinetic.");
223         }
224         if (creature_ptr->muta1 & MUT1_VTELEPORT) {
225             si_ptr->info[si_ptr->line++] = _("あなたは自分の意思でテレポートできる。", "You can teleport at will.");
226         }
227         if (creature_ptr->muta1 & MUT1_MIND_BLST) {
228             si_ptr->info[si_ptr->line++] = _("あなたは精神攻撃を行える。(ダメージ 3~12d3)", "You can Mind Blast your enemies (3 to 12d3 dam).");
229         }
230         if (creature_ptr->muta1 & MUT1_RADIATION) {
231             si_ptr->info[si_ptr->line++]
232                 = _("あなたは自分の意思で強い放射線を発生することができる。(ダメージ レベルX2)", "You can emit hard radiation at will (dam lvl * 2).");
233         }
234         if (creature_ptr->muta1 & MUT1_VAMPIRISM) {
235             si_ptr->info[si_ptr->line++] = _("あなたは吸血鬼のように敵から生命力を吸収することができる。(ダメージ レベルX2)",
236                 "Like a vampire, you can drain life from a foe (dam lvl * 2).");
237         }
238         if (creature_ptr->muta1 & MUT1_SMELL_MET) {
239             si_ptr->info[si_ptr->line++] = _("あなたは近くにある貴金属をかぎ分けることができる。", "You can smell nearby precious metal.");
240         }
241         if (creature_ptr->muta1 & MUT1_SMELL_MON) {
242             si_ptr->info[si_ptr->line++] = _("あなたは近くのモンスターの存在をかぎ分けることができる。", "You can smell nearby monsters.");
243         }
244         if (creature_ptr->muta1 & MUT1_BLINK) {
245             si_ptr->info[si_ptr->line++] = _("あなたは短い距離をテレポートできる。", "You can teleport yourself short distances.");
246         }
247         if (creature_ptr->muta1 & MUT1_EAT_ROCK) {
248             si_ptr->info[si_ptr->line++] = _("あなたは硬い岩を食べることができる。", "You can consume solid rock.");
249         }
250         if (creature_ptr->muta1 & MUT1_SWAP_POS) {
251             si_ptr->info[si_ptr->line++] = _("あなたは他の者と場所を入れ替わることができる。", "You can switch locations with another being.");
252         }
253         if (creature_ptr->muta1 & MUT1_SHRIEK) {
254             si_ptr->info[si_ptr->line++]
255                 = _("あなたは身の毛もよだつ叫び声を発することができる。(ダメージ レベルX2)", "You can emit a horrible shriek (dam 2 * lvl).");
256         }
257         if (creature_ptr->muta1 & MUT1_ILLUMINE) {
258             si_ptr->info[si_ptr->line++] = _("あなたは明るい光を放つことができる。", "You can emit bright light.");
259         }
260         if (creature_ptr->muta1 & MUT1_DET_CURSE) {
261             si_ptr->info[si_ptr->line++] = _("あなたは邪悪な魔法の危険を感じとることができる。", "You can feel the danger of evil magic.");
262         }
263         if (creature_ptr->muta1 & MUT1_BERSERK) {
264             si_ptr->info[si_ptr->line++] = _("あなたは自分の意思で狂乱戦闘状態になることができる。", "You can drive yourself into a berserk frenzy.");
265         }
266         if (creature_ptr->muta1 & MUT1_POLYMORPH) {
267             si_ptr->info[si_ptr->line++] = _("あなたは自分の意志で変化できる。", "You can polymorph yourself at will.");
268         }
269         if (creature_ptr->muta1 & MUT1_MIDAS_TCH) {
270             si_ptr->info[si_ptr->line++] = _("あなたは通常アイテムを金に変えることができる。", "You can turn ordinary items to gold.");
271         }
272         if (creature_ptr->muta1 & MUT1_GROW_MOLD) {
273             si_ptr->info[si_ptr->line++] = _("あなたは周囲にキノコを生やすことができる。", "You can cause mold to grow near you.");
274         }
275         if (creature_ptr->muta1 & MUT1_RESIST) {
276             si_ptr->info[si_ptr->line++] = _("あなたは元素の攻撃に対して身を硬くすることができる。", "You can harden yourself to the ravages of the elements.");
277         }
278         if (creature_ptr->muta1 & MUT1_EARTHQUAKE) {
279             si_ptr->info[si_ptr->line++] = _("あなたは周囲のダンジョンを崩壊させることができる。", "You can bring down the dungeon around your ears.");
280         }
281         if (creature_ptr->muta1 & MUT1_EAT_MAGIC) {
282             si_ptr->info[si_ptr->line++] = _("あなたは魔法のエネルギーを自分の物として使用できる。", "You can consume magic energy for your own use.");
283         }
284         if (creature_ptr->muta1 & MUT1_WEIGH_MAG) {
285             si_ptr->info[si_ptr->line++]
286                 = _("あなたは自分に影響を与える魔法の力を感じることができる。", "You can feel the strength of the magics affecting you.");
287         }
288         if (creature_ptr->muta1 & MUT1_STERILITY) {
289             si_ptr->info[si_ptr->line++] = _("あなたは集団的生殖不能を起こすことができる。", "You can cause mass impotence.");
290         }
291         if (creature_ptr->muta1 & MUT1_HIT_AND_AWAY) {
292             si_ptr->info[si_ptr->line++] = _("あなたは攻撃した後身を守るため逃げることができる。", "You can run for your life after hitting something.");
293         }
294         if (creature_ptr->muta1 & MUT1_DAZZLE) {
295             si_ptr->info[si_ptr->line++] = _("あなたは混乱と盲目を引き起こす放射能を発生することができる。 ", "You can emit confusing, blinding radiation.");
296         }
297         if (creature_ptr->muta1 & MUT1_LASER_EYE) {
298             si_ptr->info[si_ptr->line++]
299                 = _("あなたは目からレーザー光線を発することができる。(ダメージ レベルX2)", "Your eyes can fire laser beams (dam 2 * lvl).");
300         }
301         if (creature_ptr->muta1 & MUT1_RECALL) {
302             si_ptr->info[si_ptr->line++] = _("あなたは街とダンジョンの間を行き来することができる。", "You can travel between town and the depths.");
303         }
304         if (creature_ptr->muta1 & MUT1_BANISH) {
305             si_ptr->info[si_ptr->line++] = _("あなたは邪悪なモンスターを地獄に落とすことができる。", "You can send evil creatures directly to Hell.");
306         }
307         if (creature_ptr->muta1 & MUT1_COLD_TOUCH) {
308             si_ptr->info[si_ptr->line++]
309                 = _("あなたは敵を触って凍らせることができる。(ダメージ レベルX3)", "You can freeze things with a touch (dam 3 * lvl).");
310         }
311         if (creature_ptr->muta1 & MUT1_LAUNCHER) {
312             si_ptr->info[si_ptr->line++] = _("あなたはアイテムを力強く投げることができる。", "You can hurl objects with great force.");
313         }
314     }
315
316     if (creature_ptr->muta2) {
317         if (creature_ptr->muta2 & MUT2_BERS_RAGE) {
318             si_ptr->info[si_ptr->line++] = _("あなたは狂戦士化の発作を起こす。", "You are subject to berserker fits.");
319         }
320         if (creature_ptr->muta2 & MUT2_COWARDICE) {
321             si_ptr->info[si_ptr->line++] = _("あなたは時々臆病になる。", "You are subject to cowardice.");
322         }
323         if (creature_ptr->muta2 & MUT2_RTELEPORT) {
324             si_ptr->info[si_ptr->line++] = _("あなたはランダムにテレポートする。", "You may randomly teleport.");
325         }
326         if (creature_ptr->muta2 & MUT2_ALCOHOL) {
327             si_ptr->info[si_ptr->line++] = _("あなたの体はアルコールを分泌する。", "Your body produces alcohol.");
328         }
329         if (creature_ptr->muta2 & MUT2_HALLU) {
330             si_ptr->info[si_ptr->line++] = _("あなたは幻覚を引き起こす精神錯乱に侵されている。", "You have a hallucinatory insanity.");
331         }
332         if (creature_ptr->muta2 & MUT2_FLATULENT) {
333             si_ptr->info[si_ptr->line++] = _("あなたは制御できない強烈な屁をこく。", "You are subject to uncontrollable flatulence.");
334         }
335         if (creature_ptr->muta2 & MUT2_PROD_MANA) {
336             si_ptr->info[si_ptr->line++] = _("あなたは制御不能な魔法のエネルギーを発している。", "You produce magical energy uncontrollably.");
337         }
338         if (creature_ptr->muta2 & MUT2_ATT_DEMON) {
339             si_ptr->info[si_ptr->line++] = _("あなたはデーモンを引きつける。", "You attract demons.");
340         }
341         if (creature_ptr->muta2 & MUT2_SCOR_TAIL) {
342             si_ptr->info[si_ptr->line++] = _("あなたはサソリの尻尾が生えている。(毒、ダメージ 3d7)", "You have a scorpion tail (poison, 3d7).");
343         }
344         if (creature_ptr->muta2 & MUT2_HORNS) {
345             si_ptr->info[si_ptr->line++] = _("あなたは角が生えている。(ダメージ 2d6)", "You have horns (dam. 2d6).");
346         }
347         if (creature_ptr->muta2 & MUT2_BEAK) {
348             si_ptr->info[si_ptr->line++] = _("あなたはクチバシが生えている。(ダメージ 2d4)", "You have a beak (dam. 2d4).");
349         }
350         if (creature_ptr->muta2 & MUT2_SPEED_FLUX) {
351             si_ptr->info[si_ptr->line++] = _("あなたはランダムに早く動いたり遅く動いたりする。", "You move faster or slower randomly.");
352         }
353         if (creature_ptr->muta2 & MUT2_BANISH_ALL) {
354             si_ptr->info[si_ptr->line++] = _("あなたは時々近くのモンスターを消滅させる。", "You sometimes cause nearby creatures to vanish.");
355         }
356         if (creature_ptr->muta2 & MUT2_EAT_LIGHT) {
357             si_ptr->info[si_ptr->line++] = _("あなたは時々周囲の光を吸収して栄養にする。", "You sometimes feed off of the light around you.");
358         }
359         if (creature_ptr->muta2 & MUT2_TRUNK) {
360             si_ptr->info[si_ptr->line++] = _("あなたは象のような鼻を持っている。(ダメージ 1d4)", "You have an elephantine trunk (dam 1d4).");
361         }
362         if (creature_ptr->muta2 & MUT2_ATT_ANIMAL) {
363             si_ptr->info[si_ptr->line++] = _("あなたは動物を引きつける。", "You attract animals.");
364         }
365         if (creature_ptr->muta2 & MUT2_TENTACLES) {
366             si_ptr->info[si_ptr->line++] = _("あなたは邪悪な触手を持っている。(ダメージ 2d5)", "You have evil looking tentacles (dam 2d5).");
367         }
368         if (creature_ptr->muta2 & MUT2_RAW_CHAOS) {
369             si_ptr->info[si_ptr->line++] = _("あなたはしばしば純カオスに包まれる。", "You occasionally are surrounded with raw chaos.");
370         }
371         if (creature_ptr->muta2 & MUT2_NORMALITY) {
372             si_ptr->info[si_ptr->line++] = _("あなたは変異していたが、回復してきている。", "You may be mutated, but you're recovering.");
373         }
374         if (creature_ptr->muta2 & MUT2_WRAITH) {
375             si_ptr->info[si_ptr->line++] = _("あなたの肉体は幽体化したり実体化したりする。", "You fade in and out of physical reality.");
376         }
377         if (creature_ptr->muta2 & MUT2_POLY_WOUND) {
378             si_ptr->info[si_ptr->line++] = _("あなたの健康はカオスの力に影響を受ける。", "Your health is subject to chaotic forces.");
379         }
380         if (creature_ptr->muta2 & MUT2_WASTING) {
381             si_ptr->info[si_ptr->line++] = _("あなたは衰弱する恐ろしい病気にかかっている。", "You have a horrible wasting disease.");
382         }
383         if (creature_ptr->muta2 & MUT2_ATT_DRAGON) {
384             si_ptr->info[si_ptr->line++] = _("あなたはドラゴンを引きつける。", "You attract dragons.");
385         }
386         if (creature_ptr->muta2 & MUT2_WEIRD_MIND) {
387             si_ptr->info[si_ptr->line++] = _("あなたの精神はランダムに拡大したり縮小したりしている。", "Your mind randomly expands and contracts.");
388         }
389         if (creature_ptr->muta2 & MUT2_NAUSEA) {
390             si_ptr->info[si_ptr->line++] = _("あなたの胃は非常に落ち着きがない。", "You have a seriously upset stomach.");
391         }
392         if (creature_ptr->muta2 & MUT2_CHAOS_GIFT) {
393             si_ptr->info[si_ptr->line++] = _("あなたはカオスの守護悪魔から褒美をうけとる。", "Chaos deities give you gifts.");
394         }
395         if (creature_ptr->muta2 & MUT2_WALK_SHAD) {
396             si_ptr->info[si_ptr->line++] = _("あなたはしばしば他の「影」に迷い込む。", "You occasionally stumble into other shadows.");
397         }
398         if (creature_ptr->muta2 & MUT2_WARNING) {
399             si_ptr->info[si_ptr->line++] = _("あなたは敵に関する警告を感じる。", "You receive warnings about your foes.");
400         }
401         if (creature_ptr->muta2 & MUT2_INVULN) {
402             si_ptr->info[si_ptr->line++] = _("あなたは時々負け知らずな気分になる。", "You occasionally feel invincible.");
403         }
404         if (creature_ptr->muta2 & MUT2_SP_TO_HP) {
405             si_ptr->info[si_ptr->line++] = _("あなたは時々血が筋肉にどっと流れる。", "Your blood sometimes rushes to your muscles.");
406         }
407         if (creature_ptr->muta2 & MUT2_HP_TO_SP) {
408             si_ptr->info[si_ptr->line++] = _("あなたは時々頭に血がどっと流れる。", "Your blood sometimes rushes to your head.");
409         }
410         if (creature_ptr->muta2 & MUT2_DISARM) {
411             si_ptr->info[si_ptr->line++] = _("あなたはよくつまづいて物を落とす。", "You occasionally stumble and drop things.");
412         }
413     }
414
415     if (creature_ptr->muta3) {
416         if (creature_ptr->muta3 & MUT3_HYPER_STR) {
417             si_ptr->info[si_ptr->line++] = _("あなたは超人的に強い。(腕力+4)", "You are superhumanly strong (+4 STR).");
418         }
419         if (creature_ptr->muta3 & MUT3_PUNY) {
420             si_ptr->info[si_ptr->line++] = _("あなたは虚弱だ。(腕力-4)", "You are puny (-4 STR).");
421         }
422         if (creature_ptr->muta3 & MUT3_HYPER_INT) {
423             si_ptr->info[si_ptr->line++] = _("あなたの脳は生体コンピュータだ。(知能&賢さ+4)", "Your brain is a living computer (+4 INT/WIS).");
424         }
425         if (creature_ptr->muta3 & MUT3_MORONIC) {
426             si_ptr->info[si_ptr->line++] = _("あなたは精神薄弱だ。(知能&賢さ-4)", "You are moronic (-4 INT/WIS).");
427         }
428         if (creature_ptr->muta3 & MUT3_RESILIENT) {
429             si_ptr->info[si_ptr->line++] = _("あなたは非常にタフだ。(耐久+4)", "You are very resilient (+4 CON).");
430         }
431         if (creature_ptr->muta3 & MUT3_XTRA_FAT) {
432             si_ptr->info[si_ptr->line++] = _("あなたは極端に太っている。(耐久+2,スピード-2)", "You are extremely fat (+2 CON, -2 speed).");
433         }
434         if (creature_ptr->muta3 & MUT3_ALBINO) {
435             si_ptr->info[si_ptr->line++] = _("あなたはアルビノだ。(耐久-4)", "You are an albino (-4 CON).");
436         }
437         if (creature_ptr->muta3 & MUT3_FLESH_ROT) {
438             si_ptr->info[si_ptr->line++] = _("あなたの肉体は腐敗している。(耐久-2,魅力-1)", "Your flesh is rotting (-2 CON, -1 CHR).");
439         }
440         if (creature_ptr->muta3 & MUT3_SILLY_VOI) {
441             si_ptr->info[si_ptr->line++] = _("あなたの声は間抜けなキーキー声だ。(魅力-4)", "Your voice is a silly squeak (-4 CHR).");
442         }
443         if (creature_ptr->muta3 & MUT3_BLANK_FAC) {
444             si_ptr->info[si_ptr->line++] = _("あなたはのっぺらぼうだ。(魅力-1)", "Your face is featureless (-1 CHR).");
445         }
446         if (creature_ptr->muta3 & MUT3_ILL_NORM) {
447             si_ptr->info[si_ptr->line++] = _("あなたは幻影に覆われている。", "Your appearance is masked with illusion.");
448         }
449         if (creature_ptr->muta3 & MUT3_XTRA_EYES) {
450             si_ptr->info[si_ptr->line++] = _("あなたは余分に二つの目を持っている。(探索+15)", "You have an extra pair of eyes (+15 search).");
451         }
452         if (creature_ptr->muta3 & MUT3_MAGIC_RES) {
453             si_ptr->info[si_ptr->line++] = _("あなたは魔法への耐性をもっている。", "You are resistant to magic.");
454         }
455         if (creature_ptr->muta3 & MUT3_XTRA_NOIS) {
456             si_ptr->info[si_ptr->line++] = _("あなたは変な音を発している。(隠密-3)", "You make a lot of strange noise (-3 stealth).");
457         }
458         if (creature_ptr->muta3 & MUT3_INFRAVIS) {
459             si_ptr->info[si_ptr->line++] = _("あなたは素晴らしい赤外線視力を持っている。(+3)", "You have remarkable infravision (+3).");
460         }
461         if (creature_ptr->muta3 & MUT3_XTRA_LEGS) {
462             si_ptr->info[si_ptr->line++] = _("あなたは余分に二本の足が生えている。(加速+3)", "You have an extra pair of legs (+3 speed).");
463         }
464         if (creature_ptr->muta3 & MUT3_SHORT_LEG) {
465             si_ptr->info[si_ptr->line++] = _("あなたの足は短い突起だ。(加速-3)", "Your legs are short stubs (-3 speed).");
466         }
467         if (creature_ptr->muta3 & MUT3_ELEC_TOUC) {
468             si_ptr->info[si_ptr->line++] = _("あなたの血管には電流が流れている。", "Electricity is running through your veins.");
469         }
470         if (creature_ptr->muta3 & MUT3_FIRE_BODY) {
471             si_ptr->info[si_ptr->line++] = _("あなたの体は炎につつまれている。", "Your body is enveloped in flames.");
472         }
473         if (creature_ptr->muta3 & MUT3_WART_SKIN) {
474             si_ptr->info[si_ptr->line++] = _("あなたの肌はイボに被われている。(魅力-2, AC+5)", "Your skin is covered with warts (-2 CHR, +5 AC).");
475         }
476         if (creature_ptr->muta3 & MUT3_SCALES) {
477             si_ptr->info[si_ptr->line++] = _("あなたの肌は鱗になっている。(魅力-1, AC+10)", "Your skin has turned into scales (-1 CHR, +10 AC).");
478         }
479         if (creature_ptr->muta3 & MUT3_IRON_SKIN) {
480             si_ptr->info[si_ptr->line++] = _("あなたの肌は鉄でできている。(器用-1, AC+25)", "Your skin is made of steel (-1 DEX, +25 AC).");
481         }
482         if (creature_ptr->muta3 & MUT3_WINGS) {
483             si_ptr->info[si_ptr->line++] = _("あなたは羽を持っている。", "You have wings.");
484         }
485         if (creature_ptr->muta3 & MUT3_FEARLESS) {
486             /* Unnecessary */
487         }
488         if (creature_ptr->muta3 & MUT3_REGEN) {
489             /* Unnecessary */
490         }
491         if (creature_ptr->muta3 & MUT3_ESP) {
492             /* Unnecessary */
493         }
494         if (creature_ptr->muta3 & MUT3_LIMBER) {
495             si_ptr->info[si_ptr->line++] = _("あなたの体は非常にしなやかだ。(器用+3)", "Your body is very limber (+3 DEX).");
496         }
497         if (creature_ptr->muta3 & MUT3_ARTHRITIS) {
498             si_ptr->info[si_ptr->line++] = _("あなたはいつも関節に痛みを感じている。(器用-3)", "Your joints ache constantly (-3 DEX).");
499         }
500         if (creature_ptr->muta3 & MUT3_VULN_ELEM) {
501             si_ptr->info[si_ptr->line++] = _("あなたは元素の攻撃に弱い。", "You are susceptible to damage from the elements.");
502         }
503         if (creature_ptr->muta3 & MUT3_MOTION) {
504             si_ptr->info[si_ptr->line++] = _("あなたの動作は正確で力強い。(隠密+1)", "Your movements are precise and forceful (+1 STL).");
505         }
506         if (have_good_luck(creature_ptr)) {
507             si_ptr->info[si_ptr->line++] = _("あなたは白いオーラにつつまれている。", "There is a white aura surrounding you.");
508         }
509         if (creature_ptr->muta3 & MUT3_BAD_LUCK) {
510             si_ptr->info[si_ptr->line++] = _("あなたは黒いオーラにつつまれている。", "There is a black aura surrounding you.");
511         }
512     }
513
514     if (creature_ptr->blind) {
515         si_ptr->info[si_ptr->line++] = _("あなたは目が見えない。", "You cannot see.");
516     }
517     if (creature_ptr->confused) {
518         si_ptr->info[si_ptr->line++] = _("あなたは混乱している。", "You are confused.");
519     }
520     if (creature_ptr->afraid) {
521         si_ptr->info[si_ptr->line++] = _("あなたは恐怖に侵されている。", "You are terrified.");
522     }
523     if (creature_ptr->cut) {
524         si_ptr->info[si_ptr->line++] = _("あなたは出血している。", "You are bleeding.");
525     }
526     if (creature_ptr->stun) {
527         si_ptr->info[si_ptr->line++] = _("あなたはもうろうとしている。", "You are stunned.");
528     }
529     if (creature_ptr->poisoned) {
530         si_ptr->info[si_ptr->line++] = _("あなたは毒に侵されている。", "You are poisoned.");
531     }
532     if (creature_ptr->image) {
533         si_ptr->info[si_ptr->line++] = _("あなたは幻覚を見ている。", "You are hallucinating.");
534     }
535     if (creature_ptr->cursed & TRC_TY_CURSE) {
536         si_ptr->info[si_ptr->line++] = _("あなたは邪悪な怨念に包まれている。", "You carry an ancient foul curse.");
537     }
538     if (creature_ptr->cursed & TRC_AGGRAVATE) {
539         si_ptr->info[si_ptr->line++] = _("あなたはモンスターを怒らせている。", "You aggravate monsters.");
540     }
541     if (creature_ptr->cursed & TRC_DRAIN_EXP) {
542         si_ptr->info[si_ptr->line++] = _("あなたは経験値を吸われている。", "You occasionally lose experience for no reason.");
543     }
544     if (creature_ptr->cursed & TRC_SLOW_REGEN) {
545         si_ptr->info[si_ptr->line++] = _("あなたの回復力は非常に遅い。", "You regenerate slowly.");
546     }
547     if (creature_ptr->cursed & TRC_ADD_L_CURSE) {
548         si_ptr->info[si_ptr->line++] = _("あなたの弱い呪いは増える。", "Your weak curses multiply."); /* 暫定的 -- henkma */
549     }
550     if (creature_ptr->cursed & TRC_ADD_H_CURSE) {
551         si_ptr->info[si_ptr->line++] = _("あなたの強い呪いは増える。", "Your heavy curses multiply."); /* 暫定的 -- henkma */
552     }
553     if (creature_ptr->cursed & TRC_CALL_ANIMAL) {
554         si_ptr->info[si_ptr->line++] = _("あなたは動物に狙われている。", "You attract animals.");
555     }
556     if (creature_ptr->cursed & TRC_CALL_DEMON) {
557         si_ptr->info[si_ptr->line++] = _("あなたは悪魔に狙われている。", "You attract demons.");
558     }
559     if (creature_ptr->cursed & TRC_CALL_DRAGON) {
560         si_ptr->info[si_ptr->line++] = _("あなたはドラゴンに狙われている。", "You attract dragons.");
561     }
562     if (creature_ptr->cursed & TRC_COWARDICE) {
563         si_ptr->info[si_ptr->line++] = _("あなたは時々臆病になる。", "You are subject to cowardice.");
564     }
565     if (creature_ptr->cursed & TRC_TELEPORT) {
566         si_ptr->info[si_ptr->line++] = _("あなたの位置はひじょうに不安定だ。", "Your position is very uncertain.");
567     }
568     if (creature_ptr->cursed & TRC_LOW_MELEE) {
569         si_ptr->info[si_ptr->line++] = _("あなたの武器は攻撃を外しやすい。", "Your weapon causes you to miss blows.");
570     }
571     if (creature_ptr->cursed & TRC_LOW_AC) {
572         si_ptr->info[si_ptr->line++] = _("あなたは攻撃を受けやすい。", "You are subject to be hit.");
573     }
574     if (creature_ptr->cursed & TRC_LOW_MAGIC) {
575         si_ptr->info[si_ptr->line++] = _("あなたは魔法を失敗しやすい。", "Your spells fail more frequently.");
576     }
577     if (creature_ptr->cursed & TRC_FAST_DIGEST) {
578         si_ptr->info[si_ptr->line++] = _("あなたはすぐお腹がへる。", "You have a good appetite.");
579     }
580     if (creature_ptr->cursed & TRC_DRAIN_HP) {
581         si_ptr->info[si_ptr->line++] = _("あなたは体力を吸われている。", "You occasionally lose hit points for no reason.");
582     }
583     if (creature_ptr->cursed & TRC_DRAIN_MANA) {
584         si_ptr->info[si_ptr->line++] = _("あなたは魔力を吸われている。", "You occasionally lose spell points for no reason.");
585     }
586     if (is_blessed(creature_ptr)) {
587         si_ptr->info[si_ptr->line++] = _("あなたは高潔さを感じている。", "You feel rightous.");
588     }
589     if (is_hero(creature_ptr)) {
590         si_ptr->info[si_ptr->line++] = _("あなたはヒーロー気分だ。", "You feel heroic.");
591     }
592     if (creature_ptr->shero) {
593         si_ptr->info[si_ptr->line++] = _("あなたは戦闘狂だ。", "You are in a battle rage.");
594     }
595     if (creature_ptr->protevil) {
596         si_ptr->info[si_ptr->line++] = _("あなたは邪悪なる存在から守られている。", "You are protected from evil.");
597     }
598     if (creature_ptr->shield) {
599         si_ptr->info[si_ptr->line++] = _("あなたは神秘のシールドで守られている。", "You are protected by a mystic shield.");
600     }
601     if (is_invuln(creature_ptr)) {
602         si_ptr->info[si_ptr->line++] = _("あなたは現在傷つかない。", "You are temporarily invulnerable.");
603     }
604     if (creature_ptr->wraith_form) {
605         si_ptr->info[si_ptr->line++] = _("あなたは一時的に幽体化している。", "You are temporarily incorporeal.");
606     }
607     if (creature_ptr->special_attack & ATTACK_CONFUSE) {
608         si_ptr->info[si_ptr->line++] = _("あなたの手は赤く輝いている。", "Your hands are glowing dull red.");
609     }
610     if (creature_ptr->special_attack & ATTACK_FIRE) {
611         si_ptr->info[si_ptr->line++] = _("あなたの手は火炎に覆われている。", "You can strike the enemy with flame.");
612     }
613     if (creature_ptr->special_attack & ATTACK_COLD) {
614         si_ptr->info[si_ptr->line++] = _("あなたの手は冷気に覆われている。", "You can strike the enemy with cold.");
615     }
616     if (creature_ptr->special_attack & ATTACK_ACID) {
617         si_ptr->info[si_ptr->line++] = _("あなたの手は酸に覆われている。", "You can strike the enemy with acid.");
618     }
619     if (creature_ptr->special_attack & ATTACK_ELEC) {
620         si_ptr->info[si_ptr->line++] = _("あなたの手は電撃に覆われている。", "You can strike the enemy with electoric shock.");
621     }
622     if (creature_ptr->special_attack & ATTACK_POIS) {
623         si_ptr->info[si_ptr->line++] = _("あなたの手は毒に覆われている。", "You can strike the enemy with poison.");
624     }
625     switch (creature_ptr->action) {
626     case ACTION_SEARCH:
627         si_ptr->info[si_ptr->line++] = _("あなたはひじょうに注意深く周囲を見渡している。", "You are looking around very carefully.");
628         break;
629     }
630     if (creature_ptr->new_spells) {
631         si_ptr->info[si_ptr->line++] = _("あなたは呪文や祈りを学ぶことができる。", "You can learn some spells/prayers.");
632     }
633     if (creature_ptr->word_recall) {
634         si_ptr->info[si_ptr->line++] = _("あなたはすぐに帰還するだろう。", "You will soon be recalled.");
635     }
636     if (creature_ptr->alter_reality) {
637         si_ptr->info[si_ptr->line++] = _("あなたはすぐにこの世界を離れるだろう。", "You will soon be altered.");
638     }
639     if (creature_ptr->see_infra) {
640         si_ptr->info[si_ptr->line++] = _("あなたの瞳は赤外線に敏感である。", "Your eyes are sensitive to infrared light.");
641     }
642     if (creature_ptr->see_inv) {
643         si_ptr->info[si_ptr->line++] = _("あなたは透明なモンスターを見ることができる。", "You can see invisible creatures.");
644     }
645     if (creature_ptr->levitation) {
646         si_ptr->info[si_ptr->line++] = _("あなたは飛ぶことができる。", "You can fly.");
647     }
648     if (creature_ptr->free_act) {
649         si_ptr->info[si_ptr->line++] = _("あなたは麻痺知らずの効果を持っている。", "You have free action.");
650     }
651     if (creature_ptr->regenerate) {
652         si_ptr->info[si_ptr->line++] = _("あなたは素早く体力を回復する。", "You regenerate quickly.");
653     }
654     if (creature_ptr->slow_digest) {
655         si_ptr->info[si_ptr->line++] = _("あなたは食欲が少ない。", "Your appetite is small.");
656     }
657     if (creature_ptr->telepathy) {
658         si_ptr->info[si_ptr->line++] = _("あなたはテレパシー能力を持っている。", "You have ESP.");
659     }
660     if (creature_ptr->esp_animal) {
661         si_ptr->info[si_ptr->line++] = _("あなたは自然界の生物の存在を感じる能力を持っている。", "You sense natural creatures.");
662     }
663     if (creature_ptr->esp_undead) {
664         si_ptr->info[si_ptr->line++] = _("あなたはアンデッドの存在を感じる能力を持っている。", "You sense undead.");
665     }
666     if (creature_ptr->esp_demon) {
667         si_ptr->info[si_ptr->line++] = _("あなたは悪魔の存在を感じる能力を持っている。", "You sense demons.");
668     }
669     if (creature_ptr->esp_orc) {
670         si_ptr->info[si_ptr->line++] = _("あなたはオークの存在を感じる能力を持っている。", "You sense orcs.");
671     }
672     if (creature_ptr->esp_troll) {
673         si_ptr->info[si_ptr->line++] = _("あなたはトロルの存在を感じる能力を持っている。", "You sense trolls.");
674     }
675     if (creature_ptr->esp_giant) {
676         si_ptr->info[si_ptr->line++] = _("あなたは巨人の存在を感じる能力を持っている。", "You sense giants.");
677     }
678     if (creature_ptr->esp_dragon) {
679         si_ptr->info[si_ptr->line++] = _("あなたはドラゴンの存在を感じる能力を持っている。", "You sense dragons.");
680     }
681     if (creature_ptr->esp_human) {
682         si_ptr->info[si_ptr->line++] = _("あなたは人間の存在を感じる能力を持っている。", "You sense humans.");
683     }
684     if (creature_ptr->esp_evil) {
685         si_ptr->info[si_ptr->line++] = _("あなたは邪悪な生き物の存在を感じる能力を持っている。", "You sense evil creatures.");
686     }
687     if (creature_ptr->esp_good) {
688         si_ptr->info[si_ptr->line++] = _("あなたは善良な生き物の存在を感じる能力を持っている。", "You sense good creatures.");
689     }
690     if (creature_ptr->esp_nonliving) {
691         si_ptr->info[si_ptr->line++] = _("あなたは活動する無生物体の存在を感じる能力を持っている。", "You sense non-living creatures.");
692     }
693     if (creature_ptr->esp_unique) {
694         si_ptr->info[si_ptr->line++] = _("あなたは特別な強敵の存在を感じる能力を持っている。", "You sense unique monsters.");
695     }
696     if (creature_ptr->hold_exp) {
697         si_ptr->info[si_ptr->line++] = _("あなたは自己の経験値をしっかりと維持する。", "You have a firm hold on your experience.");
698     }
699     if (creature_ptr->reflect) {
700         si_ptr->info[si_ptr->line++] = _("あなたは矢の呪文を反射する。", "You reflect bolt spells.");
701     }
702     if (creature_ptr->sh_fire) {
703         si_ptr->info[si_ptr->line++] = _("あなたは炎のオーラに包まれている。", "You are surrounded with a fiery aura.");
704     }
705     if (creature_ptr->sh_elec) {
706         si_ptr->info[si_ptr->line++] = _("あなたは電気に包まれている。", "You are surrounded with electricity.");
707     }
708     if (creature_ptr->sh_cold) {
709         si_ptr->info[si_ptr->line++] = _("あなたは冷気のオーラに包まれている。", "You are surrounded with an aura of coldness.");
710     }
711     if (creature_ptr->tim_sh_holy) {
712         si_ptr->info[si_ptr->line++] = _("あなたは聖なるオーラに包まれている。", "You are surrounded with a holy aura.");
713     }
714     if (creature_ptr->tim_sh_touki) {
715         si_ptr->info[si_ptr->line++] = _("あなたは闘気のオーラに包まれている。", "You are surrounded with an energy aura.");
716     }
717     if (creature_ptr->anti_magic) {
718         si_ptr->info[si_ptr->line++] = _("あなたは反魔法シールドに包まれている。", "You are surrounded by an anti-magic shell.");
719     }
720     if (creature_ptr->anti_tele) {
721         si_ptr->info[si_ptr->line++] = _("あなたはテレポートできない。", "You cannot teleport.");
722     }
723     if (creature_ptr->lite) {
724         si_ptr->info[si_ptr->line++] = _("あなたの身体は光っている。", "You are carrying a permanent light.");
725     }
726     if (creature_ptr->warning) {
727         si_ptr->info[si_ptr->line++] = _("あなたは行動の前に危険を察知することができる。", "You will be warned before dangerous actions.");
728     }
729     if (creature_ptr->dec_mana) {
730         si_ptr->info[si_ptr->line++] = _("あなたは少ない消費魔力で魔法を唱えることができる。", "You can cast spells with fewer mana points.");
731     }
732     if (creature_ptr->easy_spell) {
733         si_ptr->info[si_ptr->line++] = _("あなたは低い失敗率で魔法を唱えることができる。", "Fail rate of your magic is decreased.");
734     }
735     if (creature_ptr->heavy_spell) {
736         si_ptr->info[si_ptr->line++] = _("あなたは高い失敗率で魔法を唱えなければいけない。", "Fail rate of your magic is increased.");
737     }
738     if (creature_ptr->mighty_throw) {
739         si_ptr->info[si_ptr->line++] = _("あなたは強く物を投げる。", "You can throw objects powerfully.");
740     }
741
742     if (creature_ptr->immune_acid) {
743         si_ptr->info[si_ptr->line++] = _("あなたは酸に対する完全なる免疫を持っている。", "You are completely immune to acid.");
744     } else if (creature_ptr->resist_acid && is_oppose_acid(creature_ptr)) {
745         si_ptr->info[si_ptr->line++] = _("あなたは酸への強力な耐性を持っている。", "You resist acid exceptionally well.");
746     } else if (creature_ptr->resist_acid || is_oppose_acid(creature_ptr)) {
747         si_ptr->info[si_ptr->line++] = _("あなたは酸への耐性を持っている。", "You are resistant to acid.");
748     }
749
750     if (creature_ptr->immune_elec) {
751         si_ptr->info[si_ptr->line++] = _("あなたは電撃に対する完全なる免疫を持っている。", "You are completely immune to lightning.");
752     } else if (creature_ptr->resist_elec && is_oppose_elec(creature_ptr)) {
753         si_ptr->info[si_ptr->line++] = _("あなたは電撃への強力な耐性を持っている。", "You resist lightning exceptionally well.");
754     } else if (creature_ptr->resist_elec || is_oppose_elec(creature_ptr)) {
755         si_ptr->info[si_ptr->line++] = _("あなたは電撃への耐性を持っている。", "You are resistant to lightning.");
756     }
757
758     if (is_specific_player_race(creature_ptr, RACE_ANDROID) && !creature_ptr->immune_elec) {
759         si_ptr->info[si_ptr->line++] = _("あなたは電撃に弱い。", "You are susceptible to damage from lightning.");
760     }
761
762     if (creature_ptr->immune_fire) {
763         si_ptr->info[si_ptr->line++] = _("あなたは火に対する完全なる免疫を持っている。", "You are completely immune to fire.");
764     } else if (creature_ptr->resist_fire && is_oppose_fire(creature_ptr)) {
765         si_ptr->info[si_ptr->line++] = _("あなたは火への強力な耐性を持っている。", "You resist fire exceptionally well.");
766     } else if (creature_ptr->resist_fire || is_oppose_fire(creature_ptr)) {
767         si_ptr->info[si_ptr->line++] = _("あなたは火への耐性を持っている。", "You are resistant to fire.");
768     }
769
770     if (is_specific_player_race(creature_ptr, RACE_ENT) && !creature_ptr->immune_fire) {
771         si_ptr->info[si_ptr->line++] = _("あなたは火に弱い。", "You are susceptible to damage from fire.");
772     }
773
774     if (creature_ptr->immune_cold) {
775         si_ptr->info[si_ptr->line++] = _("あなたは冷気に対する完全なる免疫を持っている。", "You are completely immune to cold.");
776     } else if (creature_ptr->resist_cold && is_oppose_cold(creature_ptr)) {
777         si_ptr->info[si_ptr->line++] = _("あなたは冷気への強力な耐性を持っている。", "You resist cold exceptionally well.");
778     } else if (creature_ptr->resist_cold || is_oppose_cold(creature_ptr)) {
779         si_ptr->info[si_ptr->line++] = _("あなたは冷気への耐性を持っている。", "You are resistant to cold.");
780     }
781
782     if (creature_ptr->resist_pois && is_oppose_pois(creature_ptr)) {
783         si_ptr->info[si_ptr->line++] = _("あなたは毒への強力な耐性を持っている。", "You resist poison exceptionally well.");
784     } else if (creature_ptr->resist_pois || is_oppose_pois(creature_ptr)) {
785         si_ptr->info[si_ptr->line++] = _("あなたは毒への耐性を持っている。", "You are resistant to poison.");
786     }
787
788     if (creature_ptr->resist_lite) {
789         si_ptr->info[si_ptr->line++] = _("あなたは閃光への耐性を持っている。", "You are resistant to bright light.");
790     }
791
792     if (is_specific_player_race(creature_ptr, RACE_VAMPIRE) || is_specific_player_race(creature_ptr, RACE_S_FAIRY)
793         || (creature_ptr->mimic_form == MIMIC_VAMPIRE)) {
794         si_ptr->info[si_ptr->line++] = _("あなたは閃光に弱い。", "You are susceptible to damage from bright light.");
795     }
796
797     if (is_specific_player_race(creature_ptr, RACE_VAMPIRE) || (creature_ptr->mimic_form == MIMIC_VAMPIRE) || creature_ptr->wraith_form) {
798         si_ptr->info[si_ptr->line++] = _("あなたは暗黒に対する完全なる免疫を持っている。", "You are completely immune to darkness.");
799     }
800
801     else if (creature_ptr->resist_dark) {
802         si_ptr->info[si_ptr->line++] = _("あなたは暗黒への耐性を持っている。", "You are resistant to darkness.");
803     }
804     if (creature_ptr->resist_conf) {
805         si_ptr->info[si_ptr->line++] = _("あなたは混乱への耐性を持っている。", "You are resistant to confusion.");
806     }
807     if (creature_ptr->resist_sound) {
808         si_ptr->info[si_ptr->line++] = _("あなたは音波の衝撃への耐性を持っている。", "You are resistant to sonic attacks.");
809     }
810     if (creature_ptr->resist_disen) {
811         si_ptr->info[si_ptr->line++] = _("あなたは劣化への耐性を持っている。", "You are resistant to disenchantment.");
812     }
813     if (creature_ptr->resist_chaos) {
814         si_ptr->info[si_ptr->line++] = _("あなたはカオスの力への耐性を持っている。", "You are resistant to chaos.");
815     }
816     if (creature_ptr->resist_shard) {
817         si_ptr->info[si_ptr->line++] = _("あなたは破片の攻撃への耐性を持っている。", "You are resistant to blasts of shards.");
818     }
819     if (creature_ptr->resist_nexus) {
820         si_ptr->info[si_ptr->line++] = _("あなたは因果混乱の攻撃への耐性を持っている。", "You are resistant to nexus attacks.");
821     }
822
823     if (is_specific_player_race(creature_ptr, RACE_SPECTRE)) {
824         si_ptr->info[si_ptr->line++] = _("あなたは地獄の力を吸収できる。", "You can drain nether forces.");
825     } else if (creature_ptr->resist_neth) {
826         si_ptr->info[si_ptr->line++] = _("あなたは地獄の力への耐性を持っている。", "You are resistant to nether forces.");
827     }
828     if (creature_ptr->resist_fear) {
829         si_ptr->info[si_ptr->line++] = _("あなたは全く恐怖を感じない。", "You are completely fearless.");
830     }
831     if (creature_ptr->resist_blind) {
832         si_ptr->info[si_ptr->line++] = _("あなたの目は盲目への耐性を持っている。", "Your eyes are resistant to blindness.");
833     }
834     if (creature_ptr->resist_time) {
835         si_ptr->info[si_ptr->line++] = _("あなたは時間逆転への耐性を持っている。", "You are resistant to time.");
836     }
837
838     if (creature_ptr->sustain_str) {
839         si_ptr->info[si_ptr->line++] = _("あなたの腕力は維持されている。", "Your strength is sustained.");
840     }
841     if (creature_ptr->sustain_int) {
842         si_ptr->info[si_ptr->line++] = _("あなたの知能は維持されている。", "Your intelligence is sustained.");
843     }
844     if (creature_ptr->sustain_wis) {
845         si_ptr->info[si_ptr->line++] = _("あなたの賢さは維持されている。", "Your wisdom is sustained.");
846     }
847     if (creature_ptr->sustain_con) {
848         si_ptr->info[si_ptr->line++] = _("あなたの耐久力は維持されている。", "Your constitution is sustained.");
849     }
850     if (creature_ptr->sustain_dex) {
851         si_ptr->info[si_ptr->line++] = _("あなたの器用さは維持されている。", "Your dexterity is sustained.");
852     }
853     if (creature_ptr->sustain_chr) {
854         si_ptr->info[si_ptr->line++] = _("あなたの魅力は維持されている。", "Your charisma is sustained.");
855     }
856
857     display_equipment_influence(creature_ptr, si_ptr);
858
859     /* Access the current weapon */
860     si_ptr->o_ptr = &creature_ptr->inventory_list[INVEN_RARM];
861
862     /* Analyze the weapon */
863     if (si_ptr->o_ptr->k_idx) {
864         /* Indicate Blessing */
865         if (have_flag(si_ptr->flags, TR_BLESSED)) {
866             si_ptr->info[si_ptr->line++] = _("あなたの武器は神の祝福を受けている。", "Your weapon has been blessed by the gods.");
867         }
868
869         if (have_flag(si_ptr->flags, TR_CHAOTIC)) {
870             si_ptr->info[si_ptr->line++] = _("あなたの武器はログルスの徴の属性をもつ。", "Your weapon is branded with the Sign of Logrus.");
871         }
872
873         if (have_flag(si_ptr->flags, TR_IMPACT)) {
874             si_ptr->info[si_ptr->line++] = _("あなたの武器は打撃で地震を発生することができる。", "The impact of your weapon can cause earthquakes.");
875         }
876
877         if (have_flag(si_ptr->flags, TR_VORPAL)) {
878             si_ptr->info[si_ptr->line++] = _("あなたの武器は非常に鋭い。", "Your weapon is very sharp.");
879         }
880
881         if (have_flag(si_ptr->flags, TR_VAMPIRIC)) {
882             si_ptr->info[si_ptr->line++] = _("あなたの武器は敵から生命力を吸収する。", "Your weapon drains life from your foes.");
883         }
884
885         /* Special "Attack Bonuses" */
886         if (have_flag(si_ptr->flags, TR_BRAND_ACID)) {
887             si_ptr->info[si_ptr->line++] = _("あなたの武器は敵を溶かす。", "Your weapon melts your foes.");
888         }
889         if (have_flag(si_ptr->flags, TR_BRAND_ELEC)) {
890             si_ptr->info[si_ptr->line++] = _("あなたの武器は敵を感電させる。", "Your weapon shocks your foes.");
891         }
892         if (have_flag(si_ptr->flags, TR_BRAND_FIRE)) {
893             si_ptr->info[si_ptr->line++] = _("あなたの武器は敵を燃やす。", "Your weapon burns your foes.");
894         }
895         if (have_flag(si_ptr->flags, TR_BRAND_COLD)) {
896             si_ptr->info[si_ptr->line++] = _("あなたの武器は敵を凍らせる。", "Your weapon freezes your foes.");
897         }
898         if (have_flag(si_ptr->flags, TR_BRAND_POIS)) {
899             si_ptr->info[si_ptr->line++] = _("あなたの武器は敵を毒で侵す。", "Your weapon poisons your foes.");
900         }
901
902         /* Special "slay" si_ptr->flags */
903         if (have_flag(si_ptr->flags, TR_KILL_ANIMAL)) {
904             si_ptr->info[si_ptr->line++] = _("あなたの武器は動物の天敵である。", "Your weapon is a great bane of animals.");
905         } else if (have_flag(si_ptr->flags, TR_SLAY_ANIMAL)) {
906             si_ptr->info[si_ptr->line++] = _("あなたの武器は動物に対して強い力を発揮する。", "Your weapon strikes at animals with extra force.");
907         }
908         if (have_flag(si_ptr->flags, TR_KILL_EVIL)) {
909             si_ptr->info[si_ptr->line++] = _("あなたの武器は邪悪なる存在の天敵である。", "Your weapon is a great bane of evil.");
910         } else if (have_flag(si_ptr->flags, TR_SLAY_EVIL)) {
911             si_ptr->info[si_ptr->line++] = _("あなたの武器は邪悪なる存在に対して強い力を発揮する。", "Your weapon strikes at evil with extra force.");
912         }
913         if (have_flag(si_ptr->flags, TR_KILL_HUMAN)) {
914             si_ptr->info[si_ptr->line++] = _("あなたの武器は人間の天敵である。", "Your weapon is a great bane of humans.");
915         } else if (have_flag(si_ptr->flags, TR_SLAY_HUMAN)) {
916             si_ptr->info[si_ptr->line++] = _("あなたの武器は人間に対して特に強い力を発揮する。", "Your weapon is especially deadly against humans.");
917         }
918         if (have_flag(si_ptr->flags, TR_KILL_UNDEAD)) {
919             si_ptr->info[si_ptr->line++] = _("あなたの武器はアンデッドの天敵である。", "Your weapon is a great bane of undead.");
920         } else if (have_flag(si_ptr->flags, TR_SLAY_UNDEAD)) {
921             si_ptr->info[si_ptr->line++] = _("あなたの武器はアンデッドに対して神聖なる力を発揮する。", "Your weapon strikes at undead with holy wrath.");
922         }
923         if (have_flag(si_ptr->flags, TR_KILL_DEMON)) {
924             si_ptr->info[si_ptr->line++] = _("あなたの武器はデーモンの天敵である。", "Your weapon is a great bane of demons.");
925         } else if (have_flag(si_ptr->flags, TR_SLAY_DEMON)) {
926             si_ptr->info[si_ptr->line++] = _("あなたの武器はデーモンに対して神聖なる力を発揮する。", "Your weapon strikes at demons with holy wrath.");
927         }
928         if (have_flag(si_ptr->flags, TR_KILL_ORC)) {
929             si_ptr->info[si_ptr->line++] = _("あなたの武器はオークの天敵である。", "Your weapon is a great bane of orcs.");
930         } else if (have_flag(si_ptr->flags, TR_SLAY_ORC)) {
931             si_ptr->info[si_ptr->line++] = _("あなたの武器はオークに対して特に強い力を発揮する。", "Your weapon is especially deadly against orcs.");
932         }
933         if (have_flag(si_ptr->flags, TR_KILL_TROLL)) {
934             si_ptr->info[si_ptr->line++] = _("あなたの武器はトロルの天敵である。", "Your weapon is a great bane of trolls.");
935         } else if (have_flag(si_ptr->flags, TR_SLAY_TROLL)) {
936             si_ptr->info[si_ptr->line++] = _("あなたの武器はトロルに対して特に強い力を発揮する。", "Your weapon is especially deadly against trolls.");
937         }
938         if (have_flag(si_ptr->flags, TR_KILL_GIANT)) {
939             si_ptr->info[si_ptr->line++] = _("あなたの武器は巨人の天敵である。", "Your weapon is a great bane of giants.");
940         } else if (have_flag(si_ptr->flags, TR_SLAY_GIANT)) {
941             si_ptr->info[si_ptr->line++] = _("あなたの武器は巨人に対して特に強い力を発揮する。", "Your weapon is especially deadly against giants.");
942         }
943         /* Special "kill" si_ptr->flags */
944         if (have_flag(si_ptr->flags, TR_KILL_DRAGON)) {
945             si_ptr->info[si_ptr->line++] = _("あなたの武器はドラゴンの天敵である。", "Your weapon is a great bane of dragons.");
946         } else if (have_flag(si_ptr->flags, TR_SLAY_DRAGON)) {
947             si_ptr->info[si_ptr->line++] = _("あなたの武器はドラゴンに対して特に強い力を発揮する。", "Your weapon is especially deadly against dragons.");
948         }
949
950         if (have_flag(si_ptr->flags, TR_FORCE_WEAPON))
951             si_ptr->info[si_ptr->line++] = _("あなたの武器はMPを使って攻撃する。", "Your weapon causes greate damages using your MP.");
952
953         if (have_flag(si_ptr->flags, TR_THROW))
954             si_ptr->info[si_ptr->line++] = _("あなたの武器は投げやすい。", "Your weapon can be thrown well.");
955     }
956
957     screen_save();
958     for (int k = 1; k < 24; k++)
959         prt("", k, 13);
960
961     prt(_("        あなたの状態:", "     Your Attributes:"), 1, 15);
962     int k = 2;
963     for (int j = 0; j < si_ptr->line; j++) {
964         prt(si_ptr->info[j], k++, 15);
965
966         /* Every 20 entries (lines 2 to 21), start over */
967         if ((k != 22) || (j + 1 >= si_ptr->line))
968             continue;
969
970         prt(_("-- 続く --", "-- more --"), k, 15);
971         inkey();
972         for (; k > 2; k--)
973             prt("", k, 15);
974     }
975
976     prt(_("[何かキーを押すとゲームに戻ります]", "[Press any key to continue]"), k, 13);
977     inkey();
978     screen_load();
979 }
980
981 /*!
982  * @brief 魔法効果時間のターン数に基づいて表現IDを返す。
983  * @param dur 効果ターン数
984  * @return 効果時間の表現ID
985  */
986 static int report_magics_aux(int dur)
987 {
988     if (dur <= 5) {
989         return 0;
990     } else if (dur <= 10) {
991         return 1;
992     } else if (dur <= 20) {
993         return 2;
994     } else if (dur <= 50) {
995         return 3;
996     } else if (dur <= 100) {
997         return 4;
998     } else if (dur <= 200) {
999         return 5;
1000     } else {
1001         return 6;
1002     }
1003 }
1004
1005 static concptr report_magic_durations[] = {
1006 #ifdef JP
1007     "ごく短い間", "少しの間", "しばらくの間", "多少長い間", "長い間", "非常に長い間", "信じ難いほど長い間", "モンスターを攻撃するまで"
1008 #else
1009     "for a short time", "for a little while", "for a while", "for a long while", "for a long time", "for a very long time", "for an incredibly long time",
1010     "until you hit a monster"
1011 #endif
1012
1013 };
1014
1015 /*!
1016  * @brief 現在の一時的効果一覧を返す / Report all currently active magical effects.
1017  * @return なし
1018  */
1019 void report_magics(player_type *creature_ptr)
1020 {
1021     int i = 0, j, k;
1022     char Dummy[80];
1023     concptr info[128];
1024     int info2[128];
1025
1026     if (creature_ptr->blind) {
1027         info2[i] = report_magics_aux(creature_ptr->blind);
1028         info[i++] = _("あなたは目が見えない", "You cannot see");
1029     }
1030     if (creature_ptr->confused) {
1031         info2[i] = report_magics_aux(creature_ptr->confused);
1032         info[i++] = _("あなたは混乱している", "You are confused");
1033     }
1034     if (creature_ptr->afraid) {
1035         info2[i] = report_magics_aux(creature_ptr->afraid);
1036         info[i++] = _("あなたは恐怖に侵されている", "You are terrified");
1037     }
1038     if (creature_ptr->poisoned) {
1039         info2[i] = report_magics_aux(creature_ptr->poisoned);
1040         info[i++] = _("あなたは毒に侵されている", "You are poisoned");
1041     }
1042     if (creature_ptr->image) {
1043         info2[i] = report_magics_aux(creature_ptr->image);
1044         info[i++] = _("あなたは幻覚を見ている", "You are hallucinating");
1045     }
1046     if (creature_ptr->blessed) {
1047         info2[i] = report_magics_aux(creature_ptr->blessed);
1048         info[i++] = _("あなたは高潔さを感じている", "You feel rightous");
1049     }
1050     if (creature_ptr->hero) {
1051         info2[i] = report_magics_aux(creature_ptr->hero);
1052         info[i++] = _("あなたはヒーロー気分だ", "You feel heroic");
1053     }
1054     if (creature_ptr->shero) {
1055         info2[i] = report_magics_aux(creature_ptr->shero);
1056         info[i++] = _("あなたは戦闘狂だ", "You are in a battle rage");
1057     }
1058     if (creature_ptr->protevil) {
1059         info2[i] = report_magics_aux(creature_ptr->protevil);
1060         info[i++] = _("あなたは邪悪なる存在から守られている", "You are protected from evil");
1061     }
1062     if (creature_ptr->shield) {
1063         info2[i] = report_magics_aux(creature_ptr->shield);
1064         info[i++] = _("あなたは神秘のシールドで守られている", "You are protected by a mystic shield");
1065     }
1066     if (creature_ptr->invuln) {
1067         info2[i] = report_magics_aux(creature_ptr->invuln);
1068         info[i++] = _("あなたは無敵だ", "You are invulnerable");
1069     }
1070     if (creature_ptr->wraith_form) {
1071         info2[i] = report_magics_aux(creature_ptr->wraith_form);
1072         info[i++] = _("あなたは幽体化している", "You are incorporeal");
1073     }
1074     if (creature_ptr->special_attack & ATTACK_CONFUSE) {
1075         info2[i] = 7;
1076         info[i++] = _("あなたの手は赤く輝いている", "Your hands are glowing dull red.");
1077     }
1078     if (creature_ptr->word_recall) {
1079         info2[i] = report_magics_aux(creature_ptr->word_recall);
1080         info[i++] = _("この後帰還の詔が発動する", "You are waiting to be recalled");
1081     }
1082     if (creature_ptr->alter_reality) {
1083         info2[i] = report_magics_aux(creature_ptr->alter_reality);
1084         info[i++] = _("この後現実変容が発動する", "You waiting to be altered");
1085     }
1086     if (creature_ptr->oppose_acid) {
1087         info2[i] = report_magics_aux(creature_ptr->oppose_acid);
1088         info[i++] = _("あなたは酸への耐性を持っている", "You are resistant to acid");
1089     }
1090     if (creature_ptr->oppose_elec) {
1091         info2[i] = report_magics_aux(creature_ptr->oppose_elec);
1092         info[i++] = _("あなたは電撃への耐性を持っている", "You are resistant to lightning");
1093     }
1094     if (creature_ptr->oppose_fire) {
1095         info2[i] = report_magics_aux(creature_ptr->oppose_fire);
1096         info[i++] = _("あなたは火への耐性を持っている", "You are resistant to fire");
1097     }
1098     if (creature_ptr->oppose_cold) {
1099         info2[i] = report_magics_aux(creature_ptr->oppose_cold);
1100         info[i++] = _("あなたは冷気への耐性を持っている", "You are resistant to cold");
1101     }
1102     if (creature_ptr->oppose_pois) {
1103         info2[i] = report_magics_aux(creature_ptr->oppose_pois);
1104         info[i++] = _("あなたは毒への耐性を持っている", "You are resistant to poison");
1105     }
1106     screen_save();
1107
1108     /* Erase the screen */
1109     for (k = 1; k < 24; k++)
1110         prt("", k, 13);
1111
1112     /* Label the information */
1113     prt(_("    現在かかっている魔法     :", "     Your Current Magic:"), 1, 15);
1114
1115     /* We will print on top of the map (column 13) */
1116     for (k = 2, j = 0; j < i; j++) {
1117         /* Show the info */
1118         sprintf(Dummy, _("%-28s : 期間 - %s ", "%s %s."), info[j], report_magic_durations[info2[j]]);
1119         prt(Dummy, k++, 15);
1120
1121         /* Every 20 entries (lines 2 to 21), start over */
1122         if ((k == 22) && (j + 1 < i)) {
1123             prt(_("-- 続く --", "-- more --"), k, 15);
1124             inkey();
1125             for (; k > 2; k--)
1126                 prt("", k, 15);
1127         }
1128     }
1129
1130     /* Pause */
1131     prt(_("[何かキーを押すとゲームに戻ります]", "[Press any key to continue]"), k, 13);
1132     inkey();
1133     screen_load();
1134 }