2 * @file blue-magic-breath.cpp
6 #include "blue-magic/blue-magic-breath.h"
7 #include "blue-magic/blue-magic-util.h"
8 #include "effect/attribute-types.h"
9 #include "mind/mind-blue-mage.h"
10 #include "monster-race/race-ability-flags.h"
11 #include "mspell/mspell-damage-calculator.h"
12 #include "spell-kind/spells-launcher.h"
13 #include "system/player-type-definition.h"
14 #include "target/target-getter.h"
15 #include "view/display-messages.h"
17 bool cast_blue_breath_acid(PlayerType *player_ptr, bmc_type *bmc_ptr)
19 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
23 msg_print(_("酸のブレスを吐いた。", "You breathe acid."));
24 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_ACID, bmc_ptr->plev, DAM_ROLL);
25 fire_breath(player_ptr, AttributeType::ACID, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
29 bool cast_blue_breath_elec(PlayerType *player_ptr, bmc_type *bmc_ptr)
31 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
35 msg_print(_("稲妻のブレスを吐いた。", "You breathe lightning."));
36 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_ELEC, bmc_ptr->plev, DAM_ROLL);
37 fire_breath(player_ptr, AttributeType::ELEC, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
41 bool cast_blue_breath_fire(PlayerType *player_ptr, bmc_type *bmc_ptr)
43 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
47 msg_print(_("火炎のブレスを吐いた。", "You breathe fire."));
48 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_FIRE, bmc_ptr->plev, DAM_ROLL);
49 fire_breath(player_ptr, AttributeType::FIRE, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
53 bool cast_blue_breath_cold(PlayerType *player_ptr, bmc_type *bmc_ptr)
55 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
59 msg_print(_("冷気のブレスを吐いた。", "You breathe frost."));
60 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_COLD, bmc_ptr->plev, DAM_ROLL);
61 fire_breath(player_ptr, AttributeType::COLD, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
65 bool cast_blue_breath_pois(PlayerType *player_ptr, bmc_type *bmc_ptr)
67 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
71 msg_print(_("ガスのブレスを吐いた。", "You breathe gas."));
72 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_POIS, bmc_ptr->plev, DAM_ROLL);
73 fire_breath(player_ptr, AttributeType::POIS, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
77 bool cast_blue_breath_nether(PlayerType *player_ptr, bmc_type *bmc_ptr)
79 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
83 msg_print(_("地獄のブレスを吐いた。", "You breathe nether."));
84 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_NETH, bmc_ptr->plev, DAM_ROLL);
85 fire_breath(player_ptr, AttributeType::NETHER, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
89 bool cast_blue_breath_lite(PlayerType *player_ptr, bmc_type *bmc_ptr)
91 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
95 msg_print(_("閃光のブレスを吐いた。", "You breathe light."));
96 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_LITE, bmc_ptr->plev, DAM_ROLL);
97 fire_breath(player_ptr, AttributeType::LITE, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
101 bool cast_blue_breath_dark(PlayerType *player_ptr, bmc_type *bmc_ptr)
103 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
107 msg_print(_("暗黒のブレスを吐いた。", "You breathe darkness."));
108 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_DARK, bmc_ptr->plev, DAM_ROLL);
109 fire_breath(player_ptr, AttributeType::DARK, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
113 bool cast_blue_breath_conf(PlayerType *player_ptr, bmc_type *bmc_ptr)
115 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
119 msg_print(_("混乱のブレスを吐いた。", "You breathe confusion."));
120 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_CONF, bmc_ptr->plev, DAM_ROLL);
121 fire_breath(player_ptr, AttributeType::CONFUSION, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
125 bool cast_blue_breath_sound(PlayerType *player_ptr, bmc_type *bmc_ptr)
127 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
131 msg_print(_("轟音のブレスを吐いた。", "You breathe sound."));
132 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_SOUN, bmc_ptr->plev, DAM_ROLL);
133 fire_breath(player_ptr, AttributeType::SOUND, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
137 bool cast_blue_breath_chaos(PlayerType *player_ptr, bmc_type *bmc_ptr)
139 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
143 msg_print(_("カオスのブレスを吐いた。", "You breathe chaos."));
144 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_CHAO, bmc_ptr->plev, DAM_ROLL);
145 fire_breath(player_ptr, AttributeType::CHAOS, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
149 bool cast_blue_breath_disenchant(PlayerType *player_ptr, bmc_type *bmc_ptr)
151 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
155 msg_print(_("劣化のブレスを吐いた。", "You breathe disenchantment."));
156 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_DISE, bmc_ptr->plev, DAM_ROLL);
157 fire_breath(player_ptr, AttributeType::DISENCHANT, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
161 bool cast_blue_breath_nexus(PlayerType *player_ptr, bmc_type *bmc_ptr)
163 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
167 msg_print(_("因果混乱のブレスを吐いた。", "You breathe nexus."));
168 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_NEXU, bmc_ptr->plev, DAM_ROLL);
169 fire_breath(player_ptr, AttributeType::NEXUS, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
173 bool cast_blue_breath_time(PlayerType *player_ptr, bmc_type *bmc_ptr)
175 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
179 msg_print(_("時間逆転のブレスを吐いた。", "You breathe time."));
180 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_TIME, bmc_ptr->plev, DAM_ROLL);
181 fire_breath(player_ptr, AttributeType::TIME, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
185 bool cast_blue_breath_inertia(PlayerType *player_ptr, bmc_type *bmc_ptr)
187 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
191 msg_print(_("遅鈍のブレスを吐いた。", "You breathe inertia."));
192 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_INER, bmc_ptr->plev, DAM_ROLL);
193 fire_breath(player_ptr, AttributeType::INERTIAL, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
197 bool cast_blue_breath_gravity(PlayerType *player_ptr, bmc_type *bmc_ptr)
199 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
203 msg_print(_("重力のブレスを吐いた。", "You breathe gravity."));
204 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_GRAV, bmc_ptr->plev, DAM_ROLL);
205 fire_breath(player_ptr, AttributeType::GRAVITY, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
209 bool cast_blue_breath_shards(PlayerType *player_ptr, bmc_type *bmc_ptr)
211 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
215 msg_print(_("破片のブレスを吐いた。", "You breathe shards."));
216 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_SHAR, bmc_ptr->plev, DAM_ROLL);
217 fire_breath(player_ptr, AttributeType::SHARDS, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
221 bool cast_blue_breath_plasma(PlayerType *player_ptr, bmc_type *bmc_ptr)
223 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
227 msg_print(_("プラズマのブレスを吐いた。", "You breathe plasma."));
228 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_PLAS, bmc_ptr->plev, DAM_ROLL);
229 fire_breath(player_ptr, AttributeType::PLASMA, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
233 bool cast_blue_breath_force(PlayerType *player_ptr, bmc_type *bmc_ptr)
235 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
239 msg_print(_("フォースのブレスを吐いた。", "You breathe force."));
240 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_FORC, bmc_ptr->plev, DAM_ROLL);
241 fire_breath(player_ptr, AttributeType::FORCE, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
245 bool cast_blue_breath_mana(PlayerType *player_ptr, bmc_type *bmc_ptr)
247 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
251 msg_print(_("魔力のブレスを吐いた。", "You breathe mana."));
252 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_MANA, bmc_ptr->plev, DAM_ROLL);
253 fire_breath(player_ptr, AttributeType::MANA, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
257 bool cast_blue_breath_nuke(PlayerType *player_ptr, bmc_type *bmc_ptr)
259 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
263 msg_print(_("放射性廃棄物のブレスを吐いた。", "You breathe toxic waste."));
264 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_NUKE, bmc_ptr->plev, DAM_ROLL);
265 fire_breath(player_ptr, AttributeType::NUKE, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
271 * @param player_ptr プレイヤーへの参照ポインタ
272 * @param bmc_ptr 青魔法詠唱への参照ポインタ
273 * @details 永久の刻は過ぎ去れリ.
275 bool cast_blue_breath_disintegration(PlayerType *player_ptr, bmc_type *bmc_ptr)
277 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
281 msg_print(_("分解のブレスを吐いた。", "You breathe disintegration."));
282 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_DISI, bmc_ptr->plev, DAM_ROLL);
283 fire_breath(player_ptr, AttributeType::DISINTEGRATE, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
289 * @param player_ptr プレイヤーへの参照ポインタ
290 * @param bmc_ptr 青魔法詠唱への参照ポインタ
292 bool cast_blue_breath_void(PlayerType *player_ptr, bmc_type *bmc_ptr)
294 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
298 msg_print(_("虚無のブレスを吐いた。", "You breathe void."));
299 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_VOID, bmc_ptr->plev, DAM_ROLL);
300 fire_breath(player_ptr, AttributeType::VOID_MAGIC, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
306 * @param player_ptr プレイヤーへの参照ポインタ
307 * @param bmc_ptr 青魔法詠唱への参照ポインタ
309 bool cast_blue_breath_abyss(PlayerType *player_ptr, bmc_type *bmc_ptr)
311 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
315 msg_print(_("深淵のブレスを吐いた。", "You breathe abyss."));
316 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BR_ABYSS, bmc_ptr->plev, DAM_ROLL);
317 fire_breath(player_ptr, AttributeType::ABYSS, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));