OSDN Git Service

f737be7c3aae118c4517351958a533875a307060
[hengbandforosx/hengbandosx.git] / src / player-info / race-ability-info.cpp
1 #include "player-info/race-ability-info.h"
2 #include "player-info/self-info-util.h"
3 #include "system/player-type-definition.h"
4
5 /*!
6  * @brief レイシャルパワーの説明文を表示する
7  * @param player_ptr プレイヤー情報へのポインタ
8  * @param self_ptr 自己分析情報へのポインタ
9  * @details
10  *  使用可能レベル以上を条件とする。
11  */
12 void set_race_ability_info(PlayerType *player_ptr, self_info_type *self_ptr)
13 {
14     switch (player_ptr->prace) {
15     case PlayerRaceType::DWARF:
16         if (player_ptr->lev >= 5) {
17             self_ptr->info[self_ptr->line++] = _("あなたは罠とドアと階段を感知できる。(5 MP)", "You can find traps, doors and stairs (cost 5).");
18         }
19
20         break;
21     case PlayerRaceType::NIBELUNG:
22         if (player_ptr->lev >= 10) {
23             self_ptr->info[self_ptr->line++] = _("あなたは罠とドアと階段を感知できる。(5 MP)", "You can find traps, doors and stairs (cost 5).");
24         }
25
26         break;
27     case PlayerRaceType::HOBBIT:
28         if (player_ptr->lev >= 15) {
29             self_ptr->info[self_ptr->line++] = _("あなたは食料を生成できる。(10 MP)", "You can produce food (cost 10).");
30         }
31
32         break;
33     case PlayerRaceType::GNOME:
34         if (player_ptr->lev >= 5) {
35             self_ptr->info[self_ptr->line++] = _("あなたは範囲 10 以内にテレポートできる。(5 MP)", "You can teleport, range 10 (cost 5).");
36         }
37
38         break;
39     case PlayerRaceType::HALF_ORC:
40         if (player_ptr->lev >= 3) {
41             self_ptr->info[self_ptr->line++] = _("あなたは恐怖を除去できる。(5 MP)", "You can remove fear (cost 5).");
42         }
43
44         break;
45     case PlayerRaceType::HALF_TROLL:
46         if (player_ptr->lev >= 10) {
47             self_ptr->info[self_ptr->line++] = _("あなたは狂暴化することができる。(12 MP) ", "You can enter a berserk fury (cost 12).");
48         }
49
50         break;
51     case PlayerRaceType::AMBERITE:
52         if (player_ptr->lev >= 30) {
53             self_ptr->info[self_ptr->line++] = _("あなたはシャドウシフトすることができる。(50 MP)", "You can Shift Shadows (cost 50).");
54         }
55
56         if (player_ptr->lev >= 40) {
57             self_ptr->info[self_ptr->line++] = _("あなたは「パターン」を心に描いて歩くことができる。(75 MP)", "You can mentally Walk the Pattern (cost 75).");
58         }
59
60         break;
61     case PlayerRaceType::BARBARIAN:
62         if (player_ptr->lev >= 8) {
63             self_ptr->info[self_ptr->line++] = _("あなたは狂暴化することができる。(10 MP) ", "You can enter a berserk fury (cost 10).");
64         }
65
66         break;
67     case PlayerRaceType::HALF_OGRE:
68         if (player_ptr->lev >= 25) {
69             self_ptr->info[self_ptr->line++] = _("あなたは爆発のルーンを仕掛けることができる。(35 MP)", "You can set an Explosive Rune (cost 35).");
70         }
71
72         break;
73     case PlayerRaceType::HALF_GIANT:
74         if (player_ptr->lev >= 20) {
75             self_ptr->info[self_ptr->line++] = _("あなたは石の壁を壊すことができる。(10 MP)", "You can break stone walls (cost 10).");
76         }
77
78         break;
79     case PlayerRaceType::HALF_TITAN:
80         if (player_ptr->lev >= 15) {
81             self_ptr->info[self_ptr->line++] = _("あなたはモンスターをスキャンすることができる。(10 MP)", "You can probe monsters (cost 10).");
82         }
83
84         break;
85     case PlayerRaceType::CYCLOPS:
86         if (player_ptr->lev >= 20) {
87             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージの岩石を投げることができる。(15 MP)", "You can throw a boulder, dam. %d (cost 15)."),
88                 (3 * player_ptr->lev) / 2);
89             self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
90         }
91
92         break;
93     case PlayerRaceType::YEEK:
94         if (player_ptr->lev >= 15) {
95             self_ptr->info[self_ptr->line++] = _("あなたは恐怖を呼び起こす叫び声を発することができる。(15 MP)", "You can make a terrifying scream (cost 15).");
96         }
97
98         break;
99     case PlayerRaceType::KLACKON:
100         if (player_ptr->lev >= 9) {
101             sprintf(
102                 self_ptr->plev_buf, _("あなたは %d ダメージの酸を吹きかけることができる。(9 MP)", "You can spit acid, dam. %d (cost 9)."), player_ptr->lev);
103             self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
104         }
105
106         break;
107     case PlayerRaceType::KOBOLD:
108         if (player_ptr->lev >= 12) {
109             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージの毒矢を投げることができる。(8 MP)", "You can throw a dart of poison, dam. %d (cost 8)."),
110                 player_ptr->lev);
111             self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
112         }
113
114         break;
115     case PlayerRaceType::DARK_ELF:
116         if (player_ptr->lev >= 2) {
117             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージのマジック・ミサイルの呪文を使える。(2 MP)", "You can cast a Magic Missile, dam %d (cost 2)."),
118                 (3 + ((player_ptr->lev - 1) / 5)));
119             self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
120         }
121
122         break;
123     case PlayerRaceType::DRACONIAN:
124         sprintf(self_ptr->plev_buf, _("あなたは %d ダメージのブレスを吐くことができる。(%d MP)", "You can breathe, dam. %d (cost %d)."), 2 * player_ptr->lev,
125             player_ptr->lev);
126         self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
127         break;
128     case PlayerRaceType::MIND_FLAYER:
129         if (player_ptr->lev >= 15) {
130             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージの精神攻撃をすることができる。(12 MP)", "You can mind blast your enemies, dam %d (cost 12)."),
131                 player_ptr->lev);
132         }
133
134         self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
135         break;
136     case PlayerRaceType::IMP:
137         if (player_ptr->lev >= 30) {
138             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージのファイア・ボールの呪文を使える。(15 MP)", "You can cast a Fire Ball, dam. %d (cost 15)."),
139                 player_ptr->lev);
140             self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
141             break;
142         }
143
144         if (player_ptr->lev >= 9) {
145             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージのファイア・ボルトの呪文を使える。(15 MP)", "You can cast a Fire Bolt, dam. %d (cost 15)."),
146                 player_ptr->lev);
147             self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
148         }
149
150         break;
151     case PlayerRaceType::GOLEM:
152         if (player_ptr->lev >= 20) {
153             self_ptr->info[self_ptr->line++] = _("あなたは d20+30 ターンの間肌を石に変化させられる。(15 MP)", "You can turn your skin to stone, dur d20+30 (cost 15).");
154         }
155
156         break;
157     case PlayerRaceType::ZOMBIE:
158     case PlayerRaceType::SKELETON:
159         if (player_ptr->lev >= 30) {
160             self_ptr->info[self_ptr->line++] = _("あなたは失った経験値を回復することができる。(30 MP)", "You can restore lost experience (cost 30).");
161         }
162
163         break;
164     case PlayerRaceType::VAMPIRE:
165         if (player_ptr->lev < 2) {
166             break;
167         }
168
169         sprintf(self_ptr->plev_buf, _("あなたは敵から %d HP の生命力を吸収できる。(%d MP)", "You can steal life from a foe, dam. %d (cost %d)."),
170             player_ptr->lev * 2, 1 + (player_ptr->lev / 3));
171         self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
172         break;
173     case PlayerRaceType::SPECTRE:
174         if (player_ptr->lev >= 4) {
175             self_ptr->info[self_ptr->line++] = _("あなたは泣き叫んで敵を恐怖させることができる。(6 MP)", "You can wail to terrify your enemies (cost 6).");
176         }
177
178         break;
179     case PlayerRaceType::SPRITE:
180         if (player_ptr->lev >= 12) {
181             self_ptr->info[self_ptr->line++] = _("あなたは敵を眠らせる魔法の粉を投げることができる。(12 MP)", "You can throw magical dust which induces sleep (cost 12).");
182         }
183
184         break;
185     case PlayerRaceType::BALROG:
186         sprintf(self_ptr->plev_buf, _("あなたは %d ダメージの地獄か火炎のブレスを吐くことができる。(%d MP)", "You can breathe nether, dam. %d (cost %d)."),
187             3 * player_ptr->lev, 10 + player_ptr->lev / 3);
188         self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
189         break;
190     case PlayerRaceType::KUTAR:
191         if (player_ptr->lev >= 20) {
192             self_ptr->info[self_ptr->line++] = _("あなたは d20+30 ターンの間横に伸びることができる。(15 MP)", "You can expand horizontally, dur d20+30 (cost 15).");
193         }
194
195         break;
196     case PlayerRaceType::ANDROID:
197         if (player_ptr->lev < 10) {
198             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージのレイガンを撃つことができる。(7 MP)", "You can fire a ray gun with damage %d (cost 7)."),
199                 (player_ptr->lev + 1) / 2);
200         } else if (player_ptr->lev < 25) {
201             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージのブラスターを撃つことができる。(13 MP)", "You can fire a blaster with damage %d (cost 13)."),
202                 player_ptr->lev);
203         } else if (player_ptr->lev < 35) {
204             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージのバズーカを撃つことができる。(26 MP)", "You can fire a bazooka with damage %d (cost 26)."),
205                 player_ptr->lev * 2);
206         } else if (player_ptr->lev < 45) {
207             sprintf(self_ptr->plev_buf,
208                 _("あなたは %d ダメージのビームキャノンを撃つことができる。(40 MP)", "You can fire a beam cannon with damage %d (cost 40)."),
209                 player_ptr->lev * 2);
210         } else {
211             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージのロケットを撃つことができる。(60 MP)", "You can fire a rocket with damage %d (cost 60)."),
212                 player_ptr->lev * 5);
213         }
214
215         self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
216         break;
217     default:
218         break;
219     }
220 }