1 #include "racial/class-racial-switcher.h"
2 #include "cmd-action/cmd-spell.h"
3 #include "mind/mind-elementalist.h"
4 #include "racial/racial-util.h"
5 #include "realm/realm-names-table.h"
6 #include "realm/realm-types.h"
7 #include "system/player-type-definition.h"
9 void switch_class_racial(PlayerType *player_ptr, rc_type *rc_ptr)
12 switch (player_ptr->pclass) {
13 case PlayerClassType::WARRIOR:
14 rpi = rpi_type(_("剣の舞い", "Sword Dancing"));
15 rpi.text = _("ランダムな方向に数回攻撃する。", "Attacks some times to random directions.");
20 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
22 case PlayerClassType::HIGH_MAGE:
23 if (player_ptr->realm1 == REALM_HEX) {
24 rpi = rpi_type(_("詠唱をやめる", "Stop spell casting"));
25 rpi.text = _("呪術の詠唱を全てやめる。", "Stops all casting hex spells.");
30 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
34 case PlayerClassType::MAGE:
35 case PlayerClassType::SORCERER:
36 rpi = rpi_type(_("魔力食い", "Eat Magic"));
37 rpi.info = format("%s%d", KWD_POWER, rc_ptr->lvl * 2);
38 rpi.text = _("魔法道具から魔力を吸収してMPを回復する。", "Absorbs mana from a magic device to heal your SP.");
43 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
45 case PlayerClassType::PRIEST:
46 if (is_good_realm(player_ptr->realm1)) {
47 rpi = rpi_type(_("武器祝福", "Bless Weapon"));
48 rpi.text = _("武器を祝福する。抵抗されることがある。", "Blesses a weapon. Some weapons can resist it.");
53 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
55 rpi = rpi_type(_("召魂", "Evocation"));
56 rpi.info = format("%s%d", KWD_POWER, rc_ptr->lvl * 4);
57 rpi.text = _("視界内の全てのモンスターにダメージを与え、恐怖させ、遠くへ飛ばす。", "Deals damage to all monster in your sight, makes them scared and tereports then away.");
62 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
66 case PlayerClassType::ROGUE:
67 rpi = rpi_type(_("ヒット&アウェイ", "Hit and Away"));
68 rpi.info = format("%s%d", KWD_SPHERE, 30);
69 rpi.text = _("対象のモンスターを攻撃したあと短距離テレポートする。", "Attacks a monster then tereports you a short range.");
74 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
76 case PlayerClassType::RANGER:
77 case PlayerClassType::SNIPER:
78 rpi = rpi_type(_("モンスター調査", "Probe Monster"));
79 rpi.text = _("モンスターの属性、残り体力、最大体力、スピード、正体を知る。", "Probes all monsters' alignment, HP, speed and their true character.");
84 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
86 case PlayerClassType::PALADIN:
87 if (is_good_realm(player_ptr->realm1)) {
88 rpi = rpi_type(_("ホーリー・ランス", "Holy Lance"));
89 rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 3);
90 rpi.text = _("聖なる炎のビームを放つ。", "Fires a beam of holy fire.");
95 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
97 rpi = rpi_type(_("ヘル・ランス", "Hell Lance"));
98 rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 3);
99 rpi.text = _("地獄の業火のビームを放つ。", "Fires a beam of hell fire.");
104 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
108 case PlayerClassType::WARRIOR_MAGE:
109 rpi = rpi_type(_("変換: HP→MP", "Convert HP to SP"));
110 rpi.text = _("HPを少しMPに変換する。", "Transfers a few HP to SP.");
115 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
117 rpi = rpi_type(_("変換: MP→HP", "Convert SP to HP"));
118 rpi.text = _("MPを少しHPに変換する。", "Transfers a few SP to HP.");
123 rc_ptr->add_power(rpi, RC_IDX_CLASS_1);
125 case PlayerClassType::CHAOS_WARRIOR:
126 rpi = rpi_type(_("幻惑の光", "Confusing Light"));
127 rpi.info = format("%s%d", KWD_POWER, rc_ptr->lvl * 4);
128 rpi.text = _("周辺のモンスターを減速・朦朧・混乱・朦朧・恐怖・睡眠させようとする。抵抗されると無効。",
129 "Tries to make all monsters in your sight slowed, stunned, confused, scared, sleeped.");
134 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
136 case PlayerClassType::MONK:
137 rpi = rpi_type(_("構える", "Assume a Stance"));
138 rpi.text = _("型に構えて特殊な能力を得る。", "Gains extra abilities with posing a 'kata'.");
143 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
145 rpi = rpi_type(_("百裂拳", "Double Attack"));
146 rpi.text = _("対象に対して2回の打撃を行う。", "Melee attacks to a target monster two times.");
151 rc_ptr->add_power(rpi, -4);
153 case PlayerClassType::MINDCRAFTER:
154 case PlayerClassType::FORCETRAINER:
155 rpi = rpi_type(_("明鏡止水", "Clear Mind"));
156 rpi.info = format("%s%d", KWD_MANA, 3 + rc_ptr->lvl / 20);
157 rpi.text = _("精神を集中してMPを少し回復する。", "Concentrates deeply to heal your SP a little.");
162 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
164 case PlayerClassType::TOURIST:
165 rpi = rpi_type(_("写真撮影", "Take a Photograph"));
166 rpi.text = _("対象のモンスター1体の写真を撮影する。", "Takes a picture of a monster.");
171 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
173 rpi = rpi_type(_("真・鑑定", "Identify True"));
174 rpi.text = _("アイテムの持つ能力を完全に知る。", "*Identifies* an item.");
179 rc_ptr->add_power(rpi, -4);
181 case PlayerClassType::IMITATOR:
182 rpi = rpi_type(_("倍返し", "Double Revenge"));
183 rpi.text = _("威力を倍にしてものまねを行う。", "Fires an imitation a damage of which you makes doubled.");
188 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
190 case PlayerClassType::BEASTMASTER:
191 rpi = rpi_type(_("生物支配", "Dominate a Living Thing"));
192 rpi.info = format("%s%d", KWD_POWER, rc_ptr->lvl);
193 rpi.text = _("1体のモンスターをペットにする。抵抗されると無効。", "Attempts to charm a monster.");
195 rpi.cost = (player_ptr->lev + 3) / 4;
198 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
200 rpi = rpi_type(_("真・生物支配", "Dominate Living Things"));
201 rpi.info = format("%s%d", KWD_POWER, rc_ptr->lvl);
202 rpi.text = _("周辺のモンスターをペットにする。抵抗されると無効。", "Attempts to charm a monsters in your sight.");
204 rpi.cost = (player_ptr->lev + 20) / 2;
207 rc_ptr->add_power(rpi, -4);
209 case PlayerClassType::ARCHER:
210 rpi = rpi_type(_("弾/矢の製造", "Create Ammo"));
211 rpi.text = _("弾または矢を製造する。原料となるアイテムが必要。", "Creates ammos from materials.");
216 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
218 case PlayerClassType::MAGIC_EATER:
219 rpi = rpi_type(_("魔力の取り込み", "Absorb Magic"));
220 rpi.text = _("魔法道具を取りこんで魔力とする。取りこんだ魔法道具は取り出せない。",
221 "Absorbs a magic device as your mana. Cannot take out it from your mana later.");
226 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
228 rpi = rpi_type(_("強力発動", "Powerful Activation"));
229 rpi.text = _("取りこんだ魔法道具を威力を高めて使用する。", "Activates absorbed magic device powerfully.");
231 rpi.cost = 10 + (rc_ptr->lvl - 10) / 2;
234 rc_ptr->add_power(rpi, -4);
236 case PlayerClassType::BARD:
237 rpi = rpi_type(_("歌を止める", "Stop Singing"));
238 rpi.text = _("現在詠唱中の歌をやめる。", "Stops singing a song.");
243 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
245 case PlayerClassType::RED_MAGE:
246 rpi = rpi_type(_("連続魔", "Double Magic"));
247 rpi.text = _("1回の行動で2つの呪文を詠唱する。", "Casts two spells in an action.");
252 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
254 case PlayerClassType::SAMURAI:
255 rpi = rpi_type(_("気合いため", "Concentration"));
256 rpi.text = _("気合を溜めてMPを増やす。上限値をある程度超えられる。", "Increases SP for Kendo over SP limit.");
261 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
263 rpi = rpi_type(_("型", "Assume a Stance"));
264 rpi.text = _("型に構えて特殊な能力を得る。", "Gains extra abilities with posing a 'kata'.");
269 rc_ptr->add_power(rpi, -4);
271 case PlayerClassType::BLUE_MAGE:
272 rpi = rpi_type(_("ラーニング", "Learning"));
273 rpi.text = _("青魔法の学習を開始または終了する。学習中はMPを消費する。", "Starts or ends to learn blue magics. Pays SP for upkeep costs during it.");
278 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
280 case PlayerClassType::CAVALRY:
281 rpi = rpi_type(_("荒馬ならし", "Rodeo"));
282 rpi.text = _("対象のモンスターの無理やり乗馬しペットにする。", "Rides to target monster and tame it focibly.");
287 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
289 case PlayerClassType::BERSERKER:
290 rpi = rpi_type(_("帰還", "Recall"));
291 rpi.text = _("地上にいるときはダンジョンの最深階へ、ダンジョンにいるときは地上へと移動する。",
292 "Recalls player from dungeon to town or from town to the deepest level of dungeon.");
297 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
299 case PlayerClassType::MIRROR_MASTER:
300 rpi = rpi_type(_("鏡割り", "Break Mirrors"));
301 rpi.text = _("現在の階に設置した鏡を全て割る。割られた鏡はなくなり、破片属性のボールが発生する。", "Destroys all mirrors located in current level. They are deleted from the level.");
306 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
308 rpi = rpi_type(_("静水", "Mirror Concentration"));
309 rpi.info = format("%s%d", KWD_MANA, 5 + rc_ptr->lvl * rc_ptr->lvl / 100);
310 rpi.text = _("精神を集中してMPを少し回復する。", "Concentrates deeply to heal your SP a little.");
315 rc_ptr->add_power(rpi, -4);
317 case PlayerClassType::SMITH:
318 rpi = rpi_type(_("目利き", "Judgment"));
319 rpi.text = _("武器・矢弾・防具を鑑定する。", "Identifies an equipment or an ammo object.");
324 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
326 case PlayerClassType::NINJA:
327 rpi = rpi_type(_("速駆け", "Quick Walk"));
328 rpi.text = _("身体を酷使して素早く移動する。", "Moves quickly but cannot regenerate HP naturally.");
333 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
335 case PlayerClassType::ELEMENTALIST:
336 rpi = rpi_type(_("明鏡止水", "Clear Mind"));
337 rpi.info = format("%s%d", KWD_MANA, 3 + rc_ptr->lvl / 20);
338 rpi.text = _("精神を集中してMPを少し回復する。", "Concentrates deeply to heal your SP a little.");
343 rc_ptr->add_power(rpi, RC_IDX_CLASS_0);
345 switch_element_racial(player_ptr, rc_ptr);