OSDN Git Service

45bac3576f4606f605862d5fb6862548ceb0c3a1
[hengbandforosx/hengbandosx.git] / src / racial / race-racial-command-setter.cpp
1 #include "racial/race-racial-command-setter.h"
2 #include "cmd-action/cmd-spell.h"
3 #include "player-info/race-info.h"
4 #include "racial/racial-util.h"
5 #include "system/player-type-definition.h"
6
7 void set_mimic_racial_command(player_type *player_ptr, rc_type *rc_ptr)
8 {
9     rpi_type rpi;
10     switch (player_ptr->mimic_form) {
11     case MIMIC_DEMON:
12     case MIMIC_DEMON_LORD:
13         rpi = rpi_type(_("地獄/火炎のブレス", "Nether or Fire Breath"));
14         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 3);
15         rpi.text = _("火炎または地獄のブレスを放つ。", "Fires a breath of fire or nether.");
16         rpi.min_level = 15;
17         rpi.cost = 10 + rc_ptr->lvl / 3;
18         rpi.stat = A_CON;
19         rpi.fail = 20;
20         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
21         break;
22     case MIMIC_VAMPIRE:
23         rpi = rpi_type(_("吸血", "Vampiric Drain"));
24         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 2);
25         rpi.text = _("隣接したモンスター1体から生命力を吸い取る。吸い取った生命力によって満腹度があがる。",
26             "Drains and transfers HP from a monster near by you. You will also gain nutritional sustenance from this.");
27         rpi.min_level = 2;
28         rpi.cost = 1 + (rc_ptr->lvl / 3);
29         rpi.stat = A_CON;
30         rpi.fail = 9;
31         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
32         break;
33     }
34 }
35
36 void set_race_racial_command(player_type *player_ptr, rc_type *rc_ptr)
37 {
38     rpi_type rpi;
39     switch (player_ptr->prace) {
40     case PlayerRaceType::DWARF:
41         rpi = rpi_type(_("ドアと罠 感知", "Detect Doors+Traps"));
42         rpi.text = _("近くの全ての扉と罠、階段を感知する。", "Detects traps, doors, and stairs in your vicinity.");
43         rpi.min_level = 5;
44         rpi.cost = 5;
45         rpi.stat = A_WIS;
46         rpi.fail = 12;
47         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
48         break;
49     case PlayerRaceType::NIBELUNG:
50         rpi = rpi_type(_("ドアと罠 感知", "Detect Doors+Traps"));
51         rpi.text = _("近くの全ての扉と罠、階段を感知する。", "Detects traps, doors, and stairs in your vicinity.");
52         rpi.min_level = 10;
53         rpi.cost = 5;
54         rpi.stat = A_WIS;
55         rpi.fail = 10;
56         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
57         break;
58     case PlayerRaceType::HOBBIT:
59         rpi = rpi_type(_("食糧生成", "Create Food"));
60         rpi.text = _("食料を一つ作り出す。", "Produces a Ration of Food.");
61         rpi.min_level = 15;
62         rpi.cost = 10;
63         rpi.stat = A_INT;
64         rpi.fail = 10;
65         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
66         break;
67     case PlayerRaceType::GNOME:
68         rpi = rpi_type(_("ショート・テレポート", "Blink"));
69         rpi.info = format("%s%d", KWD_SPHERE, 10);
70         rpi.text = _("近距離のテレポートをする。", "Teleports you a short distance.");
71         rpi.min_level = 5;
72         rpi.cost = 5;
73         rpi.stat = A_INT;
74         rpi.fail = 12;
75         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
76         break;
77     case PlayerRaceType::HALF_ORC:
78         rpi = rpi_type(_("恐怖除去", "Remove Fear"));
79         rpi.text = _("恐怖を取り除く。", "Removes fear.");
80         rpi.min_level = 3;
81         rpi.cost = 5;
82         rpi.stat = A_WIS;
83         rpi.fail = rc_ptr->is_warrior ? 5 : 10;
84         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
85         break;
86     case PlayerRaceType::HALF_TROLL:
87         rpi = rpi_type(_("狂戦士化", "Berserk"));
88         rpi.info = format("%s%d+d%d", KWD_DURATION, 10, rc_ptr->lvl);
89         rpi.text = _("狂戦士化し、恐怖を除去する。防御力が少し低下する。", "Gives a bonus to hit and HP, immunity to fear for a while. But decreases AC.");
90         rpi.min_level = 10;
91         rpi.cost = 12;
92         rpi.stat = A_STR;
93         rpi.fail = rc_ptr->is_warrior ? 6 : 12;
94         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
95         break;
96     case PlayerRaceType::BARBARIAN:
97         rpi = rpi_type(_("狂戦士化", "Berserk"));
98         rpi.info = format("%s%d+d%d", KWD_DURATION, 10, rc_ptr->lvl);
99         rpi.text = _("狂戦士化し、恐怖を除去する。防御力が少し低下する。", "Gives a bonus to hit and HP, immunity to fear for a while. But decreases AC.");
100         rpi.min_level = 8;
101         rpi.cost = 10;
102         rpi.stat = A_STR;
103         rpi.fail = rc_ptr->is_warrior ? 6 : 12;
104         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
105         break;
106     case PlayerRaceType::AMBERITE:
107         rpi = rpi_type(_("シャドウ・シフト", "Shadow Shifting"));
108         rpi.text = _("現在の階を再構成する。", "Recreates current dungeon level.");
109         rpi.min_level = 30;
110         rpi.cost = 50;
111         rpi.stat = A_INT;
112         rpi.fail = 50;
113         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
114
115         rpi = rpi_type(_("パターン・ウォーク", "Pattern Mindwalking"));
116         rpi.text = _("すべてのステータスと経験値を回復する。", "Restores all stats and experience.");
117         rpi.min_level = 40;
118         rpi.cost = 75;
119         rpi.stat = A_WIS;
120         rpi.fail = 50;
121         rc_ptr->add_power(rpi, RC_IDX_RACE_1);
122         break;
123     case PlayerRaceType::HALF_OGRE:
124         rpi = rpi_type(_("爆発のルーン", "Explosive Rune"));
125         rpi.text = _("自分のいる床の上に、モンスターが上を通ろうとすると爆発するルーンを描く。",
126             "Sets a rune on the floor beneath you which exprodes if a monster through upon it. Monsters can try to disarm it.");
127         rpi.min_level = 25;
128         rpi.cost = 35;
129         rpi.stat = A_INT;
130         rpi.fail = 15;
131         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
132         break;
133     case PlayerRaceType::HALF_GIANT:
134         rpi = rpi_type(_("岩石溶解", "Stone to Mud"));
135         rpi.text = _("壁を溶かして床にする。", "Turns one rock square to mud.");
136         rpi.min_level = 20;
137         rpi.cost = 10;
138         rpi.stat = A_STR;
139         rpi.fail = 12;
140         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
141         break;
142     case PlayerRaceType::HALF_TITAN:
143         rpi = rpi_type(_("スキャン・モンスター", "Probing"));
144         rpi.text = _("モンスターの属性、残り体力、最大体力、スピード、正体を知る。", "Probes all monsters' alignment, HP, speed and their true character.");
145         rpi.min_level = 15;
146         rpi.cost = 10;
147         rpi.stat = A_INT;
148         rpi.fail = 12;
149         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
150         break;
151     case PlayerRaceType::CYCLOPS:
152         rpi = rpi_type(_("岩石投げ", "Throw Boulder"));
153         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 3 / 2);
154         rpi.text = _("弱い魔法のボールを放つ", "Fires a weak boll of magic.");
155         rpi.min_level = 20;
156         rpi.cost = 15;
157         rpi.stat = A_STR;
158         rpi.fail = 12;
159         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
160         break;
161     case PlayerRaceType::YEEK:
162         rpi = rpi_type(_("モンスター恐慌", "Scare Monster"));
163         rpi.text = _("モンスター1体を恐怖させる。抵抗されると無効。", "Attempts to scare a monster.");
164         rpi.min_level = 15;
165         rpi.cost = 15;
166         rpi.stat = A_WIS;
167         rpi.fail = 10;
168         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
169         break;
170     case PlayerRaceType::SPECTRE:
171         rpi = rpi_type(_("モンスター恐慌", "Scare Monster"));
172         rpi.text = _("モンスター1体を恐怖させる。抵抗されると無効。", "Attempts to scare a monster.");
173         rpi.min_level = 4;
174         rpi.cost = 6;
175         rpi.stat = A_INT;
176         rpi.fail = 3;
177         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
178         break;
179     case PlayerRaceType::KLACKON:
180         rpi = rpi_type(_("酸の唾", "Spit Acid"));
181         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl);
182         if (rc_ptr->lvl >= 25)
183             rpi.text = _("酸のボールを放つ", "Fires a boll of acid.");
184         else
185             rpi.text = _("酸の矢を放つ", "Fires a bolt of acid.");
186         rpi.min_level = 9;
187         rpi.cost = 9;
188         rpi.stat = A_DEX;
189         rpi.fail = 14;
190         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
191         break;
192     case PlayerRaceType::KOBOLD:
193         rpi = rpi_type(_("毒のダーツ", "Poison Dart"));
194         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl);
195         rpi.text = _("毒の矢を放つ", "Fires a bolt of poison.");
196         rpi.min_level = 12;
197         rpi.cost = 8;
198         rpi.stat = A_DEX;
199         rpi.fail = 14;
200         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
201         break;
202     case PlayerRaceType::DARK_ELF:
203         rpi = rpi_type(_("マジック・ミサイル", "Magic Missile"));
204         rpi.info = format("%s%dd%d", KWD_DAM, 3 + ((rc_ptr->lvl - 1) / 5), 4);
205         rpi.text = _("弱い魔法の矢を放つ。", "Fires a weak bolt of magic.");
206         rpi.min_level = 2;
207         rpi.cost = 2;
208         rpi.stat = A_INT;
209         rpi.fail = 9;
210         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
211         break;
212     case PlayerRaceType::DRACONIAN:
213         rpi = rpi_type(_("ブレス", "Breath Weapon"));
214         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 2);
215         rpi.text = _("元素のブレスを放つ", "Fires a breath of an element.");
216         rpi.min_level = 1;
217         rpi.cost = rc_ptr->lvl;
218         rpi.stat = A_CON;
219         rpi.fail = 12;
220         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
221         break;
222     case PlayerRaceType::MIND_FLAYER:
223         rpi = rpi_type(_("精神攻撃", "Mind Blast"));
224         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl);
225         rpi.text = _("モンスター1体に精神攻撃を行う。", "Deals a PSI damage to a monster.");
226         rpi.min_level = 15;
227         rpi.cost = 12;
228         rpi.stat = A_INT;
229         rpi.fail = 14;
230         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
231         break;
232     case PlayerRaceType::IMP:
233         if (rc_ptr->lvl > 30) {
234             rpi = rpi_type(_("ファイア・ボール", "Fire Ball"));
235             rpi.text = _("火炎のボールを放つ。", "Fires a ball of fire.");
236         } else {
237             rpi = rpi_type(_("ファイア・ボルト", "Fire Bolt"));
238             rpi.text = _("火炎の矢を放つ。", "Fires a bolt of fire.");
239         }
240         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl);
241         rpi.min_level = 9;
242         rpi.cost = 15;
243         rpi.stat = A_WIS;
244         rpi.fail = 15;
245         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
246         break;
247     case PlayerRaceType::GOLEM:
248         rpi = rpi_type(_("肌石化", "Stone Skin"));
249         rpi.info = format("%s%d+d%d", KWD_DURATION, 30, 20);
250         rpi.text = _("一定期間防御力を高める。", "Increases your AC temporary");
251         rpi.min_level = 20;
252         rpi.cost = 15;
253         rpi.stat = A_CON;
254         rpi.fail = 8;
255         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
256         break;
257     case PlayerRaceType::SKELETON:
258     case PlayerRaceType::ZOMBIE:
259         rpi = rpi_type(_("経験値復活", "Restore Experience"));
260         rpi.text = _("経験値を回復する。", "Restores experience.");
261         rpi.min_level = 30;
262         rpi.cost = 30;
263         rpi.stat = A_WIS;
264         rpi.fail = 18;
265         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
266         break;
267     case PlayerRaceType::VAMPIRE:
268         rpi = rpi_type(_("吸血", "Vampiric Drain"));
269         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 2);
270         rpi.text = _("隣接したモンスター1体から生命力を吸い取る。吸い取った生命力によって満腹度があがる。",
271             "Drains and transfers HP from a monster near by you. You will also gain nutritional sustenance from this.");
272         rpi.min_level = 2;
273         rpi.cost = 1 + (rc_ptr->lvl / 3);
274         rpi.stat = A_CON;
275         rpi.fail = 9;
276         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
277         break;
278     case PlayerRaceType::SPRITE:
279         rpi = rpi_type(_("眠り粉", "Sleeping Dust"));
280         rpi.info = format("%s%d", KWD_POWER, rc_ptr->lvl);
281         rpi.text = _("モンスター1体を眠らせる。抵抗されると無効。", "Attempts to put a monster to sleep.");
282         rpi.min_level = 12;
283         rpi.cost = 12;
284         rpi.stat = A_INT;
285         rpi.fail = 15;
286         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
287         break;
288     case PlayerRaceType::BALROG:
289         rpi = rpi_type(_("地獄/火炎のブレス", "Nether or Fire Breath"));
290         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 3);
291         rpi.text = _("火炎または地獄のブレスを放つ。", "Fires a breath of fire or nether.");
292         rpi.min_level = 15;
293         rpi.cost = 10 + rc_ptr->lvl / 3;
294         rpi.stat = A_CON;
295         rpi.fail = 20;
296         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
297         break;
298     case PlayerRaceType::KUTAR:
299         rpi = rpi_type(_("横に伸びる", "Expand Horizontally"));
300         rpi.info = format("%s%d+d%d", KWD_DURATION, 30, 20);
301         rpi.text = _("横に伸びて防御力を高める。魔法防御力は低下する。",
302             "Expands your body horizontally then increases AC, but decreases your magic resistance for curses.");
303         rpi.min_level = 20;
304         rpi.cost = 15;
305         rpi.stat = A_CHR;
306         rpi.fail = 8;
307         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
308         break;
309     case PlayerRaceType::ANDROID:
310         if (player_ptr->lev < 10) {
311             rpi = rpi_type(_("レイガン", "Ray Gun"));
312             rpi.info = format("%s%d", KWD_DAM, (rc_ptr->lvl + 1) / 2);
313             rpi.text = _("弱い魔法の矢を放つ。", "Fires a weak bolt of magic.");
314             rpi.min_level = 1;
315             rpi.cost = 7;
316             rpi.fail = 8;
317         } else if (player_ptr->lev < 25) {
318             rpi = rpi_type(_("ブラスター", "Blaster"));
319             rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl);
320             rpi.text = _("弱い魔法の矢を放つ。", "Fires a weak bolt of magic.");
321             rpi.min_level = 10;
322             rpi.cost = 13;
323             rpi.fail = 10;
324         } else if (player_ptr->lev < 35) {
325             rpi = rpi_type(_("バズーカ", "Bazooka"));
326             rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 2);
327             rpi.text = _("弱い魔法のボールを放つ。", "Fires a weak ball of magic.");
328             rpi.min_level = 25;
329             rpi.cost = 26;
330             rpi.fail = 12;
331         } else if (player_ptr->lev < 45) {
332             rpi = rpi_type(_("ビームキャノン", "Beam Cannon"));
333             rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 2);
334             rpi.text = _("弱い魔法のビームを放つ。", "Fires a beam bolt of magic.");
335             rpi.min_level = 35;
336             rpi.cost = 40;
337             rpi.fail = 15;
338         } else {
339             rpi = rpi_type(_("ロケット", "Rocket"));
340             rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 5);
341             rpi.text = _("ロケットを放つ。", "Fires a magic rocket.");
342             rpi.min_level = 45;
343             rpi.cost = 60;
344             rpi.fail = 18;
345         }
346         rpi.stat = A_STR;
347         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
348         break;
349     default:
350         break;
351     }
352 }