1 #include "racial/racial-draconian.h"
2 #include "mind/mind-elementalist.h"
3 #include "player/player-status.h"
4 #include "spell-kind/spells-launcher.h"
5 #include "spell/spell-types.h"
6 #include "system/player-type-definition.h"
7 #include "target/target-getter.h"
8 #include "view/display-messages.h"
10 static void decide_breath_kind(player_type *player_ptr, int *breath_type, concptr *breath_type_description)
12 if (randint1(100) >= player_ptr->lev)
15 switch (player_ptr->pclass) {
16 case PlayerClassType::WARRIOR:
17 case PlayerClassType::BERSERKER:
18 case PlayerClassType::RANGER:
19 case PlayerClassType::TOURIST:
20 case PlayerClassType::IMITATOR:
21 case PlayerClassType::ARCHER:
22 case PlayerClassType::SMITH:
24 *breath_type = GF_MISSILE;
25 *breath_type_description = _("エレメント", "the elements");
27 *breath_type = GF_SHARDS;
28 *breath_type_description = _("破片", "shards");
32 case PlayerClassType::MAGE:
33 case PlayerClassType::WARRIOR_MAGE:
34 case PlayerClassType::HIGH_MAGE:
35 case PlayerClassType::SORCERER:
36 case PlayerClassType::MAGIC_EATER:
37 case PlayerClassType::RED_MAGE:
38 case PlayerClassType::BLUE_MAGE:
39 case PlayerClassType::MIRROR_MASTER:
41 *breath_type = GF_MANA;
42 *breath_type_description = _("魔力", "mana");
44 *breath_type = GF_DISENCHANT;
45 *breath_type_description = _("劣化", "disenchantment");
49 case PlayerClassType::CHAOS_WARRIOR:
51 *breath_type = GF_CONFUSION;
52 *breath_type_description = _("混乱", "confusion");
54 *breath_type = GF_CHAOS;
55 *breath_type_description = _("カオス", "chaos");
59 case PlayerClassType::MONK:
60 case PlayerClassType::SAMURAI:
61 case PlayerClassType::FORCETRAINER:
63 *breath_type = GF_CONFUSION;
64 *breath_type_description = _("混乱", "confusion");
66 *breath_type = GF_SOUND;
67 *breath_type_description = _("轟音", "sound");
71 case PlayerClassType::MINDCRAFTER:
73 *breath_type = GF_CONFUSION;
74 *breath_type_description = _("混乱", "confusion");
76 *breath_type = GF_PSI;
77 *breath_type_description = _("精神エネルギー", "mental energy");
81 case PlayerClassType::PRIEST:
82 case PlayerClassType::PALADIN:
84 *breath_type = GF_HELL_FIRE;
85 *breath_type_description = _("地獄の劫火", "hellfire");
87 *breath_type = GF_HOLY_FIRE;
88 *breath_type_description = _("聖なる炎", "holy fire");
92 case PlayerClassType::ROGUE:
93 case PlayerClassType::NINJA:
95 *breath_type = GF_DARK;
96 *breath_type_description = _("暗黒", "darkness");
98 *breath_type = GF_POIS;
99 *breath_type_description = _("毒", "poison");
103 case PlayerClassType::BARD:
105 *breath_type = GF_SOUND;
106 *breath_type_description = _("轟音", "sound");
108 *breath_type = GF_CONFUSION;
109 *breath_type_description = _("混乱", "confusion");
113 case PlayerClassType::ELEMENTALIST:
114 *breath_type = get_element_type(player_ptr->element, 0);
115 *breath_type_description = get_element_name(player_ptr->element, 0);
122 bool draconian_breath(player_type *player_ptr)
124 int breath_type = (one_in_(3) ? GF_COLD : GF_FIRE);
125 concptr breath_type_description = ((breath_type == GF_COLD) ? _("冷気", "cold") : _("炎", "fire"));
127 if (!get_aim_dir(player_ptr, &dir))
130 decide_breath_kind(player_ptr, &breath_type, &breath_type_description);
131 stop_mouth(player_ptr);
132 msg_format(_("あなたは%sのブレスを吐いた。", "You breathe %s."), breath_type_description);
134 fire_breath(player_ptr, breath_type, dir, player_ptr->lev * 2, (player_ptr->lev / 15) + 1);