1 #include "racial/racial-draconian.h"
2 #include "effect/attribute-types.h"
3 #include "mind/mind-elementalist.h"
4 #include "player/player-status.h"
5 #include "spell-kind/spells-launcher.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(PlayerType *player_ptr, AttributeType *breath_type, concptr *breath_type_description)
12 if (randint1(100) >= player_ptr->lev) {
16 switch (player_ptr->pclass) {
17 case PlayerClassType::WARRIOR:
18 case PlayerClassType::BERSERKER:
19 case PlayerClassType::RANGER:
20 case PlayerClassType::TOURIST:
21 case PlayerClassType::IMITATOR:
22 case PlayerClassType::ARCHER:
23 case PlayerClassType::SMITH:
25 *breath_type = AttributeType::MISSILE;
26 *breath_type_description = _("エレメント", "the elements");
28 *breath_type = AttributeType::SHARDS;
29 *breath_type_description = _("破片", "shards");
33 case PlayerClassType::MAGE:
34 case PlayerClassType::WARRIOR_MAGE:
35 case PlayerClassType::HIGH_MAGE:
36 case PlayerClassType::SORCERER:
37 case PlayerClassType::MAGIC_EATER:
38 case PlayerClassType::RED_MAGE:
39 case PlayerClassType::BLUE_MAGE:
40 case PlayerClassType::MIRROR_MASTER:
42 *breath_type = AttributeType::MANA;
43 *breath_type_description = _("魔力", "mana");
45 *breath_type = AttributeType::DISENCHANT;
46 *breath_type_description = _("劣化", "disenchantment");
50 case PlayerClassType::CHAOS_WARRIOR:
52 *breath_type = AttributeType::CONFUSION;
53 *breath_type_description = _("混乱", "confusion");
55 *breath_type = AttributeType::CHAOS;
56 *breath_type_description = _("カオス", "chaos");
60 case PlayerClassType::MONK:
61 case PlayerClassType::SAMURAI:
62 case PlayerClassType::FORCETRAINER:
64 *breath_type = AttributeType::CONFUSION;
65 *breath_type_description = _("混乱", "confusion");
67 *breath_type = AttributeType::SOUND;
68 *breath_type_description = _("轟音", "sound");
72 case PlayerClassType::MINDCRAFTER:
74 *breath_type = AttributeType::CONFUSION;
75 *breath_type_description = _("混乱", "confusion");
77 *breath_type = AttributeType::PSI;
78 *breath_type_description = _("精神エネルギー", "mental energy");
82 case PlayerClassType::PRIEST:
83 case PlayerClassType::PALADIN:
85 *breath_type = AttributeType::HELL_FIRE;
86 *breath_type_description = _("地獄の劫火", "hellfire");
88 *breath_type = AttributeType::HOLY_FIRE;
89 *breath_type_description = _("聖なる炎", "holy fire");
93 case PlayerClassType::ROGUE:
94 case PlayerClassType::NINJA:
96 *breath_type = AttributeType::DARK;
97 *breath_type_description = _("暗黒", "darkness");
99 *breath_type = AttributeType::POIS;
100 *breath_type_description = _("毒", "poison");
104 case PlayerClassType::BARD:
106 *breath_type = AttributeType::SOUND;
107 *breath_type_description = _("轟音", "sound");
109 *breath_type = AttributeType::CONFUSION;
110 *breath_type_description = _("混乱", "confusion");
114 case PlayerClassType::ELEMENTALIST:
115 *breath_type = get_element_type(player_ptr->element, 0);
116 *breath_type_description = get_element_name(player_ptr->element, 0);
123 bool draconian_breath(PlayerType *player_ptr)
125 AttributeType breath_type = (one_in_(3) ? AttributeType::COLD : AttributeType::FIRE);
126 concptr breath_type_description = ((breath_type == AttributeType::COLD) ? _("冷気", "cold") : _("炎", "fire"));
128 if (!get_aim_dir(player_ptr, &dir)) {
132 decide_breath_kind(player_ptr, &breath_type, &breath_type_description);
133 stop_mouth(player_ptr);
134 msg_format(_("あなたは%sのブレスを吐いた。", "You breathe %s."), breath_type_description);
136 fire_breath(player_ptr, breath_type, dir, player_ptr->lev * 2, (player_ptr->lev / 15) + 1);