OSDN Git Service

Merge pull request #3532 from sikabane-works/release/3.0.0.87-alpha
[hengbandforosx/hengbandosx.git] / src / io / mutations-dump.cpp
1 /*!
2  * @brief 突然変異の一覧を出力する
3  * @date 2020/04/24
4  * @author Hourier
5  */
6
7 #include "io/mutations-dump.h"
8 #include "mutation/mutation-flag-types.h"
9 #include "player/player-status-flags.h"
10 #include "system/player-type-definition.h"
11
12 /*!
13  * @brief ファイルポインタを通じて突然変異の一覧を出力する
14  * @param out_file 出力先ファイルポインタ
15  */
16 void dump_mutations(PlayerType *player_ptr, FILE *out_file)
17 {
18     if (!out_file) {
19         return;
20     }
21
22     if (player_ptr->muta.any() || has_good_luck(player_ptr)) {
23         if (player_ptr->muta.has(PlayerMutationType::SPIT_ACID)) {
24             fprintf(out_file, _(" あなたは酸を吹きかけることができる。(ダメージ レベルX1)\n", " You can spit acid (dam lvl).\n"));
25         }
26
27         if (player_ptr->muta.has(PlayerMutationType::BR_FIRE)) {
28             fprintf(out_file, _(" あなたは炎のブレスを吐くことができる。(ダメージ レベルX2)\n", " You can breathe fire (dam lvl * 2).\n"));
29         }
30
31         if (player_ptr->muta.has(PlayerMutationType::HYPN_GAZE)) {
32             fprintf(out_file, _(" あなたの睨みは催眠効果をもつ。\n", " Your gaze is hypnotic.\n"));
33         }
34
35         if (player_ptr->muta.has(PlayerMutationType::TELEKINES)) {
36             fprintf(out_file, _(" あなたは念動力をもっている。\n", " You are telekinetic.\n"));
37         }
38
39         if (player_ptr->muta.has(PlayerMutationType::VTELEPORT)) {
40             fprintf(out_file, _(" あなたは自分の意思でテレポートできる。\n", " You can teleport at will.\n"));
41         }
42
43         if (player_ptr->muta.has(PlayerMutationType::MIND_BLST)) {
44             fprintf(out_file, _(" あなたは敵を精神攻撃できる。\n", " You can Mind Blast your enemies.\n"));
45         }
46
47         if (player_ptr->muta.has(PlayerMutationType::RADIATION)) {
48             fprintf(out_file, _(" あなたは自分の意思で放射能を発生することができる。\n", " You can emit hard radiation at will.\n"));
49         }
50
51         if (player_ptr->muta.has(PlayerMutationType::VAMPIRISM)) {
52             fprintf(out_file, _(" あなたは吸血鬼のように敵から生命力を吸収することができる。\n", " You can drain life from a foe like a vampire.\n"));
53         }
54
55         if (player_ptr->muta.has(PlayerMutationType::SMELL_MET)) {
56             fprintf(out_file, _(" あなたは近くにある貴金属をかぎ分けることができる。\n", " You can smell nearby precious metal.\n"));
57         }
58
59         if (player_ptr->muta.has(PlayerMutationType::SMELL_MON)) {
60             fprintf(out_file, _(" あなたは近くのモンスターの存在をかぎ分けることができる。\n", " You can smell nearby monsters.\n"));
61         }
62
63         if (player_ptr->muta.has(PlayerMutationType::BLINK)) {
64             fprintf(out_file, _(" あなたは短い距離をテレポートできる。\n", " You can teleport yourself short distances.\n"));
65         }
66
67         if (player_ptr->muta.has(PlayerMutationType::EAT_ROCK)) {
68             fprintf(out_file, _(" あなたは硬い岩を食べることができる。\n", " You can consume solid rock.\n"));
69         }
70
71         if (player_ptr->muta.has(PlayerMutationType::SWAP_POS)) {
72             fprintf(out_file, _(" あなたは他の者と場所を入れ替わることができる。\n", " You can switch locations with another being.\n"));
73         }
74
75         if (player_ptr->muta.has(PlayerMutationType::SHRIEK)) {
76             fprintf(out_file, _(" あなたは身の毛もよだつ叫び声を発することができる。\n", " You can emit a horrible shriek.\n"));
77         }
78
79         if (player_ptr->muta.has(PlayerMutationType::ILLUMINE)) {
80             fprintf(out_file, _(" あなたは明るい光を放つことができる。\n", " You can emit bright light.\n"));
81         }
82
83         if (player_ptr->muta.has(PlayerMutationType::DET_CURSE)) {
84             fprintf(out_file, _(" あなたは邪悪な魔法の危険を感じとることができる。\n", " You can feel the danger of evil magic.\n"));
85         }
86
87         if (player_ptr->muta.has(PlayerMutationType::BERSERK)) {
88             fprintf(out_file, _(" あなたは自分の意思で狂乱戦闘状態になることができる。\n", " You can drive yourself into a berserk frenzy.\n"));
89         }
90
91         if (player_ptr->muta.has(PlayerMutationType::POLYMORPH)) {
92             fprintf(out_file, _(" あなたは自分の意志で変化できる。\n", " You can polymorph yourself at will.\n"));
93         }
94
95         if (player_ptr->muta.has(PlayerMutationType::MIDAS_TCH)) {
96             fprintf(out_file, _(" あなたは通常アイテムを金に変えることができる。\n", " You can turn ordinary items to gold.\n"));
97         }
98
99         if (player_ptr->muta.has(PlayerMutationType::GROW_MOLD)) {
100             fprintf(out_file, _(" あなたは周囲にキノコを生やすことができる。\n", " You can cause mold to grow near you.\n"));
101         }
102
103         if (player_ptr->muta.has(PlayerMutationType::RESIST)) {
104             fprintf(out_file, _(" あなたは元素の攻撃に対して身を硬くすることができる。\n", " You can harden yourself to the ravages of the elements.\n"));
105         }
106
107         if (player_ptr->muta.has(PlayerMutationType::EARTHQUAKE)) {
108             fprintf(out_file, _(" あなたは周囲のダンジョンを崩壊させることができる。\n", " You can bring down the dungeon around your ears.\n"));
109         }
110
111         if (player_ptr->muta.has(PlayerMutationType::EAT_MAGIC)) {
112             fprintf(out_file, _(" あなたは魔法のエネルギーを自分の物として使用できる。\n", " You can consume magic energy for your own use.\n"));
113         }
114
115         if (player_ptr->muta.has(PlayerMutationType::WEIGH_MAG)) {
116             fprintf(out_file, _(" あなたは自分に影響を与える魔法の力を感じることができる。\n", " You can feel the strength of the magics affecting you.\n"));
117         }
118
119         if (player_ptr->muta.has(PlayerMutationType::STERILITY)) {
120             fprintf(out_file, _(" あなたは集団的生殖不能を起こすことができる。\n", " You can cause mass impotence.\n"));
121         }
122
123         if (player_ptr->muta.has(PlayerMutationType::HIT_AND_AWAY)) {
124             fprintf(out_file, _(" あなたは攻撃した後身を守るため逃げることができる。\n", " You can run for your life after hitting something.\n"));
125         }
126
127         if (player_ptr->muta.has(PlayerMutationType::DAZZLE)) {
128             fprintf(out_file, _(" あなたは混乱と盲目を引き起こす放射能を発生することができる。 \n", " You can emit confusing, blinding radiation.\n"));
129         }
130
131         if (player_ptr->muta.has(PlayerMutationType::LASER_EYE)) {
132             fprintf(out_file, _(" あなたは目からレーザー光線を発射することができる。\n", " Your eyes can fire laser beams.\n"));
133         }
134
135         if (player_ptr->muta.has(PlayerMutationType::RECALL)) {
136             fprintf(out_file, _(" あなたは街とダンジョンの間を行き来することができる。\n", " You can travel between town and the depths.\n"));
137         }
138
139         if (player_ptr->muta.has(PlayerMutationType::BANISH)) {
140             fprintf(out_file, _(" あなたは邪悪なモンスターを地獄に落とすことができる。\n", " You can send evil creatures directly to Hell.\n"));
141         }
142
143         if (player_ptr->muta.has(PlayerMutationType::COLD_TOUCH)) {
144             fprintf(out_file, _(" あなたは物を触って凍らせることができる。\n", " You can freeze things with a touch.\n"));
145         }
146
147         if (player_ptr->muta.has(PlayerMutationType::LAUNCHER)) {
148             fprintf(out_file, _(" あなたはアイテムを力強く投げることができる。\n", " You can hurl objects with great force.\n"));
149         }
150
151         if (player_ptr->muta.has(PlayerMutationType::BERS_RAGE)) {
152             fprintf(out_file, _(" あなたは狂戦士化の発作を起こす。\n", " You are subject to berserker fits.\n"));
153         }
154
155         if (player_ptr->muta.has(PlayerMutationType::COWARDICE)) {
156             fprintf(out_file, _(" あなたは時々臆病になる。\n", " You are subject to cowardice.\n"));
157         }
158
159         if (player_ptr->muta.has(PlayerMutationType::RTELEPORT)) {
160             fprintf(out_file, _(" あなたはランダムにテレポートする。\n", " You sometimes randomly teleport.\n"));
161         }
162
163         if (player_ptr->muta.has(PlayerMutationType::ALCOHOL)) {
164             fprintf(out_file, _(" あなたの体はアルコールを分泌する。\n", " Your body produces alcohol.\n"));
165         }
166
167         if (player_ptr->muta.has(PlayerMutationType::HALLU)) {
168             fprintf(out_file, _(" あなたは幻覚を引き起こす精神錯乱に侵されている。\n", " You have a hallucinatory insanity.\n"));
169         }
170
171         if (player_ptr->muta.has(PlayerMutationType::FLATULENT)) {
172             fprintf(out_file, _(" あなたは制御できない強烈な屁をこく。\n", " You are subject to uncontrollable flatulence.\n"));
173         }
174
175         if (player_ptr->muta.has(PlayerMutationType::PROD_MANA)) {
176             fprintf(out_file, _(" あなたは制御不能な魔法のエネルギーを発している。\n", " You produce magical energy uncontrollably.\n"));
177         }
178
179         if (player_ptr->muta.has(PlayerMutationType::ATT_DEMON)) {
180             fprintf(out_file, _(" あなたはデーモンを引きつける。\n", " You attract demons.\n"));
181         }
182
183         if (player_ptr->muta.has(PlayerMutationType::SCOR_TAIL)) {
184             fprintf(out_file, _(" あなたはサソリの尻尾が生えている。(毒、ダメージ 3d7)\n", " You have a scorpion tail (poison, 3d7).\n"));
185         }
186
187         if (player_ptr->muta.has(PlayerMutationType::HORNS)) {
188             fprintf(out_file, _(" あなたは角が生えている。(ダメージ 2d6)\n", " You have horns (dam. 2d6).\n"));
189         }
190
191         if (player_ptr->muta.has(PlayerMutationType::BEAK)) {
192             fprintf(out_file, _(" あなたはクチバシが生えている。(ダメージ 2d4)\n", " You have a beak (dam. 2d4).\n"));
193         }
194
195         if (player_ptr->muta.has(PlayerMutationType::SPEED_FLUX)) {
196             fprintf(out_file, _(" あなたはランダムに早く動いたり遅く動いたりする。\n", " You move faster or slower randomly.\n"));
197         }
198
199         if (player_ptr->muta.has(PlayerMutationType::BANISH_ALL)) {
200             fprintf(out_file, _(" あなたは時々近くのモンスターを消滅させる。\n", " You sometimes cause nearby creatures to vanish.\n"));
201         }
202
203         if (player_ptr->muta.has(PlayerMutationType::EAT_LIGHT)) {
204             fprintf(out_file, _(" あなたは時々周囲の光を吸収して栄養にする。\n", " You sometimes feed off of the light around you.\n"));
205         }
206
207         if (player_ptr->muta.has(PlayerMutationType::TRUNK)) {
208             fprintf(out_file, _(" あなたは象のような鼻を持っている。(ダメージ 1d4)\n", " You have an elephantine trunk (dam 1d4).\n"));
209         }
210
211         if (player_ptr->muta.has(PlayerMutationType::ATT_ANIMAL)) {
212             fprintf(out_file, _(" あなたは動物を引きつける。\n", " You attract animals.\n"));
213         }
214
215         if (player_ptr->muta.has(PlayerMutationType::TENTACLES)) {
216             fprintf(out_file, _(" あなたは邪悪な触手を持っている。(ダメージ 2d5)\n", " You have evil looking tentacles (dam 2d5).\n"));
217         }
218
219         if (player_ptr->muta.has(PlayerMutationType::RAW_CHAOS)) {
220             fprintf(out_file, _(" あなたはしばしば純カオスに包まれる。\n", " You occasionally are surrounded with raw chaos.\n"));
221         }
222
223         if (player_ptr->muta.has(PlayerMutationType::NORMALITY)) {
224             fprintf(out_file, _(" あなたは変異していたが、回復してきている。\n", " You may be mutated, but you're recovering.\n"));
225         }
226
227         if (player_ptr->muta.has(PlayerMutationType::WRAITH)) {
228             fprintf(out_file, _(" あなたの肉体は幽体化したり実体化したりする。\n", " You fade in and out of physical reality.\n"));
229         }
230
231         if (player_ptr->muta.has(PlayerMutationType::POLY_WOUND)) {
232             fprintf(out_file, _(" あなたの健康はカオスの力に影響を受ける。\n", " Your health is subject to chaotic forces.\n"));
233         }
234
235         if (player_ptr->muta.has(PlayerMutationType::WASTING)) {
236             fprintf(out_file, _(" あなたは衰弱する恐ろしい病気にかかっている。\n", " You have a horrible wasting disease.\n"));
237         }
238
239         if (player_ptr->muta.has(PlayerMutationType::ATT_DRAGON)) {
240             fprintf(out_file, _(" あなたはドラゴンを引きつける。\n", " You attract dragons.\n"));
241         }
242
243         if (player_ptr->muta.has(PlayerMutationType::WEIRD_MIND)) {
244             fprintf(out_file, _(" あなたの精神はランダムに拡大したり縮小したりしている。\n", " Your mind randomly expands and contracts.\n"));
245         }
246
247         if (player_ptr->muta.has(PlayerMutationType::NAUSEA)) {
248             fprintf(out_file, _(" あなたの胃は非常に落ち着きがない。\n", " You have a seriously upset stomach.\n"));
249         }
250
251         if (player_ptr->muta.has(PlayerMutationType::CHAOS_GIFT)) {
252             fprintf(out_file, _(" あなたはカオスの守護悪魔から褒美をうけとる。\n", " Chaos deities give you gifts.\n"));
253         }
254
255         if (player_ptr->muta.has(PlayerMutationType::WALK_SHAD)) {
256             fprintf(out_file, _(" あなたはしばしば他の「影」に迷い込む。\n", " You occasionally stumble into other shadows.\n"));
257         }
258
259         if (player_ptr->muta.has(PlayerMutationType::WARNING)) {
260             fprintf(out_file, _(" あなたは敵に関する警告を感じる。\n", " You receive warnings about your foes.\n"));
261         }
262
263         if (player_ptr->muta.has(PlayerMutationType::INVULN)) {
264             fprintf(out_file, _(" あなたは時々負け知らずな気分になる。\n", " You occasionally feel invincible.\n"));
265         }
266
267         if (player_ptr->muta.has(PlayerMutationType::SP_TO_HP)) {
268             fprintf(out_file, _(" あなたは時々血が筋肉にどっと流れる。\n", " Your blood sometimes rushes to your muscles.\n"));
269         }
270
271         if (player_ptr->muta.has(PlayerMutationType::HP_TO_SP)) {
272             fprintf(out_file, _(" あなたは時々頭に血がどっと流れる。\n", " Your blood sometimes rushes to your head.\n"));
273         }
274
275         if (player_ptr->muta.has(PlayerMutationType::DISARM)) {
276             fprintf(out_file, _(" あなたはよくつまづいて物を落とす。\n", " You occasionally stumble and drop things.\n"));
277         }
278
279         if (player_ptr->muta.has(PlayerMutationType::HYPER_STR)) {
280             fprintf(out_file, _(" あなたは超人的に強い。(腕力+4)\n", " You are superhumanly strong (+4 STR).\n"));
281         }
282
283         if (player_ptr->muta.has(PlayerMutationType::PUNY)) {
284             fprintf(out_file, _(" あなたは虚弱だ。(腕力-4)\n", " You are puny (-4 STR).\n"));
285         }
286
287         if (player_ptr->muta.has(PlayerMutationType::HYPER_INT)) {
288             fprintf(out_file, _(" あなたの脳は生体コンピュータだ。(知能&賢さ+4)\n", " Your brain is a living computer (+4 INT/WIS).\n"));
289         }
290
291         if (player_ptr->muta.has(PlayerMutationType::MORONIC)) {
292             fprintf(out_file, _(" あなたは精神薄弱だ。(知能&賢さ-4)\n", " You are moronic (-4 INT/WIS).\n"));
293         }
294
295         if (player_ptr->muta.has(PlayerMutationType::RESILIENT)) {
296             fprintf(out_file, _(" あなたの体は弾力性に富んでいる。(耐久+4)\n", " You are very resilient (+4 CON).\n"));
297         }
298
299         if (player_ptr->muta.has(PlayerMutationType::XTRA_FAT)) {
300             fprintf(out_file, _(" あなたは極端に太っている。(耐久+2,スピード-2)\n", " You are extremely fat (+2 CON, -2 speed).\n"));
301         }
302
303         if (player_ptr->muta.has(PlayerMutationType::ALBINO)) {
304             fprintf(out_file, _(" あなたはアルビノだ。(耐久-4)\n", " You are albino (-4 CON).\n"));
305         }
306
307         if (player_ptr->muta.has(PlayerMutationType::FLESH_ROT)) {
308             fprintf(out_file, _(" あなたの肉体は腐敗している。(耐久-2,魅力-1)\n", " Your flesh is rotting (-2 CON, -1 CHR).\n"));
309         }
310
311         if (player_ptr->muta.has(PlayerMutationType::SILLY_VOI)) {
312             fprintf(out_file, _(" あなたの声は間抜けなキーキー声だ。(魅力-4)\n", " Your voice is a silly squeak (-4 CHR).\n"));
313         }
314
315         if (player_ptr->muta.has(PlayerMutationType::BLANK_FAC)) {
316             fprintf(out_file, _(" あなたはのっぺらぼうだ。(魅力-1)\n", " Your face is featureless (-1 CHR).\n"));
317         }
318
319         if (player_ptr->muta.has(PlayerMutationType::ILL_NORM)) {
320             fprintf(out_file, _(" あなたは幻影に覆われている。\n", " Your appearance is masked with illusion.\n"));
321         }
322
323         if (player_ptr->muta.has(PlayerMutationType::XTRA_EYES)) {
324             fprintf(out_file, _(" あなたは余分に二つの目を持っている。(探索+15)\n", " You have an extra pair of eyes (+15 search).\n"));
325         }
326
327         if (player_ptr->muta.has(PlayerMutationType::MAGIC_RES)) {
328             fprintf(out_file, _(" あなたは魔法への耐性をもっている。\n", " You are resistant to magic.\n"));
329         }
330
331         if (player_ptr->muta.has(PlayerMutationType::XTRA_NOIS)) {
332             fprintf(out_file, _(" あなたは変な音を発している。(隠密-3)\n", " You make a lot of strange noise (-3 stealth).\n"));
333         }
334
335         if (player_ptr->muta.has(PlayerMutationType::INFRAVIS)) {
336             fprintf(out_file, _(" あなたは素晴らしい赤外線視力を持っている。(+3)\n", " You have remarkable infravision (+3).\n"));
337         }
338
339         if (player_ptr->muta.has(PlayerMutationType::XTRA_LEGS)) {
340             fprintf(out_file, _(" あなたは余分に二本の足が生えている。(加速+3)\n", " You have an extra pair of legs (+3 speed).\n"));
341         }
342
343         if (player_ptr->muta.has(PlayerMutationType::SHORT_LEG)) {
344             fprintf(out_file, _(" あなたの足は短い突起だ。(加速-3)\n", " Your legs are short stubs (-3 speed).\n"));
345         }
346
347         if (player_ptr->muta.has(PlayerMutationType::ELEC_TOUC)) {
348             fprintf(out_file, _(" あなたの血管には電流が流れている。\n", " Electricity runs through your veins.\n"));
349         }
350
351         if (player_ptr->muta.has(PlayerMutationType::FIRE_BODY)) {
352             fprintf(out_file, _(" あなたの体は炎につつまれている。\n", " Your body is enveloped in flames.\n"));
353         }
354
355         if (player_ptr->muta.has(PlayerMutationType::WART_SKIN)) {
356             fprintf(out_file, _(" あなたの肌はイボに被われている。(魅力-2, AC+5)\n", " Your skin is covered with warts (-2 CHR, +5 AC).\n"));
357         }
358
359         if (player_ptr->muta.has(PlayerMutationType::SCALES)) {
360             fprintf(out_file, _(" あなたの肌は鱗になっている。(魅力-1, AC+10)\n", " Your skin has turned into scales (-1 CHR, +10 AC).\n"));
361         }
362
363         if (player_ptr->muta.has(PlayerMutationType::IRON_SKIN)) {
364             fprintf(out_file, _(" あなたの肌は鉄でできている。(器用-1, AC+25)\n", " Your skin is made of steel (-1 DEX, +25 AC).\n"));
365         }
366
367         if (player_ptr->muta.has(PlayerMutationType::WINGS)) {
368             fprintf(out_file, _(" あなたは羽を持っている。\n", " You have wings.\n"));
369         }
370
371         if (player_ptr->muta.has(PlayerMutationType::FEARLESS)) {
372             fprintf(out_file, _(" あなたは全く恐怖を感じない。\n", " You are completely fearless.\n"));
373         }
374
375         if (player_ptr->muta.has(PlayerMutationType::REGEN)) {
376             fprintf(out_file, _(" あなたは急速に回復する。\n", " You are regenerating.\n"));
377         }
378
379         if (player_ptr->muta.has(PlayerMutationType::ESP)) {
380             fprintf(out_file, _(" あなたはテレパシーを持っている。\n", " You are telepathic.\n"));
381         }
382
383         if (player_ptr->muta.has(PlayerMutationType::LIMBER)) {
384             fprintf(out_file, _(" あなたの体は非常にしなやかだ。(器用+3)\n", " Your body is very limber (+3 DEX).\n"));
385         }
386
387         if (player_ptr->muta.has(PlayerMutationType::ARTHRITIS)) {
388             fprintf(out_file, _(" あなたはいつも関節に痛みを感じている。(器用-3)\n", " Your joints ache constantly (-3 DEX).\n"));
389         }
390
391         if (player_ptr->muta.has(PlayerMutationType::VULN_ELEM)) {
392             fprintf(out_file, _(" あなたは元素の攻撃に弱い。\n", " You are susceptible to damage from the elements.\n"));
393         }
394
395         if (player_ptr->muta.has(PlayerMutationType::MOTION)) {
396             fprintf(out_file, _(" あなたの動作は正確で力強い。(隠密+1)\n", " Your movements are precise and forceful (+1 STL).\n"));
397         }
398
399         if (has_good_luck(player_ptr)) {
400             fprintf(out_file, _(" あなたは白いオーラにつつまれている。\n", " There is a white aura surrounding you.\n"));
401         }
402
403         if (player_ptr->muta.has(PlayerMutationType::BAD_LUCK)) {
404             fprintf(out_file, _(" あなたは黒いオーラにつつまれている。\n", " There is a black aura surrounding you.\n"));
405         }
406     }
407 }