2 * @file blue-magic-ball-bolt.cpp
3 * @brief 青魔法のボール/ボルト系呪文定義
6 #include "blue-magic/blue-magic-ball-bolt.h"
7 #include "blue-magic/blue-magic-util.h"
8 #include "effect/attribute-types.h"
9 #include "monster-race/race-ability-flags.h"
10 #include "mspell/mspell-damage-calculator.h"
11 #include "spell-kind/spells-launcher.h"
12 #include "system/player-type-definition.h"
13 #include "target/target-getter.h"
14 #include "view/display-messages.h"
16 bool cast_blue_ball_acid(PlayerType *player_ptr, bmc_type *bmc_ptr)
18 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
22 msg_print(_("アシッド・ボールの呪文を唱えた。", "You cast an acid ball."));
23 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_ACID, bmc_ptr->plev, DAM_ROLL);
24 fire_ball(player_ptr, AttributeType::ACID, bmc_ptr->dir, bmc_ptr->damage, 2);
28 bool cast_blue_ball_elec(PlayerType *player_ptr, bmc_type *bmc_ptr)
30 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
34 msg_print(_("サンダー・ボールの呪文を唱えた。", "You cast a lightning ball."));
35 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_ELEC, bmc_ptr->plev, DAM_ROLL);
36 fire_ball(player_ptr, AttributeType::ELEC, bmc_ptr->dir, bmc_ptr->damage, 2);
40 bool cast_blue_ball_fire(PlayerType *player_ptr, bmc_type *bmc_ptr)
42 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
46 msg_print(_("ファイア・ボールの呪文を唱えた。", "You cast a fire ball."));
47 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_FIRE, bmc_ptr->plev, DAM_ROLL);
48 fire_ball(player_ptr, AttributeType::FIRE, bmc_ptr->dir, bmc_ptr->damage, 2);
52 bool cast_blue_ball_cold(PlayerType *player_ptr, bmc_type *bmc_ptr)
54 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
58 msg_print(_("アイス・ボールの呪文を唱えた。", "You cast a frost ball."));
59 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_COLD, bmc_ptr->plev, DAM_ROLL);
60 fire_ball(player_ptr, AttributeType::COLD, bmc_ptr->dir, bmc_ptr->damage, 2);
64 bool cast_blue_ball_pois(PlayerType *player_ptr, bmc_type *bmc_ptr)
66 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
70 msg_print(_("悪臭雲の呪文を唱えた。", "You cast a stinking cloud."));
71 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_POIS, bmc_ptr->plev, DAM_ROLL);
72 fire_ball(player_ptr, AttributeType::POIS, bmc_ptr->dir, bmc_ptr->damage, 2);
76 bool cast_blue_ball_nuke(PlayerType *player_ptr, bmc_type *bmc_ptr)
78 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
82 msg_print(_("放射能球を放った。", "You cast a ball of radiation."));
83 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_NUKE, bmc_ptr->plev, DAM_ROLL);
84 fire_ball(player_ptr, AttributeType::NUKE, bmc_ptr->dir, bmc_ptr->damage, 2);
88 bool cast_blue_ball_nether(PlayerType *player_ptr, bmc_type *bmc_ptr)
90 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
94 msg_print(_("地獄球の呪文を唱えた。", "You cast a nether ball."));
95 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_NETH, bmc_ptr->plev, DAM_ROLL);
96 fire_ball(player_ptr, AttributeType::NETHER, bmc_ptr->dir, bmc_ptr->damage, 2);
100 bool cast_blue_ball_chaos(PlayerType *player_ptr, bmc_type *bmc_ptr)
102 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
106 msg_print(_("純ログルスを放った。", "You invoke a raw Logrus."));
107 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_CHAO, bmc_ptr->plev, DAM_ROLL);
108 fire_ball(player_ptr, AttributeType::CHAOS, bmc_ptr->dir, bmc_ptr->damage, 4);
113 * @brief ウォーター・ボールの青魔法
115 * @param player_ptr プレイヤーへの参照ポインタ
116 * @param bmc_ptr 青魔法詠唱への参照ポインタ
117 * @details All my worries are blown away.
119 bool cast_blue_ball_water(PlayerType *player_ptr, bmc_type *bmc_ptr)
121 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
125 msg_print(_("流れるような身振りをした。", "You gesture fluidly."));
126 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_WATE, bmc_ptr->plev, DAM_ROLL);
127 fire_ball(player_ptr, AttributeType::WATER, bmc_ptr->dir, bmc_ptr->damage, 4);
131 bool cast_blue_ball_star_burst(PlayerType *player_ptr, bmc_type *bmc_ptr)
133 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
137 msg_print(_("スターバーストの呪文を念じた。", "You invoke a starburst."));
138 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_LITE, bmc_ptr->plev, DAM_ROLL);
139 fire_ball(player_ptr, AttributeType::LITE, bmc_ptr->dir, bmc_ptr->damage, 4);
143 bool cast_blue_ball_dark_storm(PlayerType *player_ptr, bmc_type *bmc_ptr)
145 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
149 msg_print(_("暗黒の嵐の呪文を念じた。", "You invoke a darkness storm."));
150 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_DARK, bmc_ptr->plev, DAM_ROLL);
151 fire_ball(player_ptr, AttributeType::DARK, bmc_ptr->dir, bmc_ptr->damage, 4);
155 bool cast_blue_ball_mana_storm(PlayerType *player_ptr, bmc_type *bmc_ptr)
157 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
161 msg_print(_("魔力の嵐の呪文を念じた。", "You invoke a mana storm."));
162 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_MANA, bmc_ptr->plev, DAM_ROLL);
163 fire_ball(player_ptr, AttributeType::MANA, bmc_ptr->dir, bmc_ptr->damage, 4);
167 bool cast_blue_ball_void(PlayerType *player_ptr, bmc_type *bmc_ptr)
169 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
173 msg_print(_("虚無の嵐の呪文を念じた。", "You invoke a void storm."));
174 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_VOID, bmc_ptr->plev, DAM_ROLL);
175 fire_ball(player_ptr, AttributeType::VOID_MAGIC, bmc_ptr->dir, bmc_ptr->damage, 4);
179 bool cast_blue_ball_abyss(PlayerType *player_ptr, bmc_type *bmc_ptr)
181 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
185 msg_print(_("深淵の嵐の呪文を念じた。", "You invoke a abyss storm."));
186 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_ABYSS, bmc_ptr->plev, DAM_ROLL);
187 fire_ball(player_ptr, AttributeType::ABYSS, bmc_ptr->dir, bmc_ptr->damage, 4);
191 bool cast_blue_bolt_acid(PlayerType *player_ptr, bmc_type *bmc_ptr)
193 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
197 msg_print(_("アシッド・ボルトの呪文を唱えた。", "You cast an acid bolt."));
198 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_ACID, bmc_ptr->plev, DAM_ROLL);
199 fire_bolt(player_ptr, AttributeType::ACID, bmc_ptr->dir, bmc_ptr->damage);
203 bool cast_blue_bolt_elec(PlayerType *player_ptr, bmc_type *bmc_ptr)
205 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
209 msg_print(_("サンダー・ボルトの呪文を唱えた。", "You cast a lightning bolt."));
210 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_ELEC, bmc_ptr->plev, DAM_ROLL);
211 fire_bolt(player_ptr, AttributeType::ELEC, bmc_ptr->dir, bmc_ptr->damage);
215 bool cast_blue_bolt_fire(PlayerType *player_ptr, bmc_type *bmc_ptr)
217 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
221 msg_print(_("ファイア・ボルトの呪文を唱えた。", "You cast a fire bolt."));
222 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_FIRE, bmc_ptr->plev, DAM_ROLL);
223 fire_bolt(player_ptr, AttributeType::FIRE, bmc_ptr->dir, bmc_ptr->damage);
227 bool cast_blue_bolt_cold(PlayerType *player_ptr, bmc_type *bmc_ptr)
229 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
233 msg_print(_("アイス・ボルトの呪文を唱えた。", "You cast a frost bolt."));
234 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_COLD, bmc_ptr->plev, DAM_ROLL);
235 fire_bolt(player_ptr, AttributeType::COLD, bmc_ptr->dir, bmc_ptr->damage);
239 bool cast_blue_bolt_nether(PlayerType *player_ptr, bmc_type *bmc_ptr)
241 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
245 msg_print(_("地獄の矢の呪文を唱えた。", "You cast a nether bolt."));
246 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_NETH, bmc_ptr->plev, DAM_ROLL);
247 fire_bolt(player_ptr, AttributeType::NETHER, bmc_ptr->dir, bmc_ptr->damage);
251 bool cast_blue_bolt_water(PlayerType *player_ptr, bmc_type *bmc_ptr)
253 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
257 msg_print(_("ウォーター・ボルトの呪文を唱えた。", "You cast a water bolt."));
258 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_WATE, bmc_ptr->plev, DAM_ROLL);
259 fire_bolt(player_ptr, AttributeType::WATER, bmc_ptr->dir, bmc_ptr->damage);
263 bool cast_blue_bolt_mana(PlayerType *player_ptr, bmc_type *bmc_ptr)
265 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
269 msg_print(_("魔力の矢の呪文を唱えた。", "You cast a mana bolt."));
270 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_MANA, bmc_ptr->plev, DAM_ROLL);
271 fire_bolt(player_ptr, AttributeType::MANA, bmc_ptr->dir, bmc_ptr->damage);
275 bool cast_blue_bolt_plasma(PlayerType *player_ptr, bmc_type *bmc_ptr)
277 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
281 msg_print(_("プラズマ・ボルトの呪文を唱えた。", "You cast a plasma bolt."));
282 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_PLAS, bmc_ptr->plev, DAM_ROLL);
283 fire_bolt(player_ptr, AttributeType::PLASMA, bmc_ptr->dir, bmc_ptr->damage);
287 bool cast_blue_bolt_icee(PlayerType *player_ptr, bmc_type *bmc_ptr)
289 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
293 msg_print(_("極寒の矢の呪文を唱えた。", "You cast a ice bolt."));
294 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_ICEE, bmc_ptr->plev, DAM_ROLL);
295 fire_bolt(player_ptr, AttributeType::ICE, bmc_ptr->dir, bmc_ptr->damage);
299 bool cast_blue_bolt_missile(PlayerType *player_ptr, bmc_type *bmc_ptr)
301 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
305 msg_print(_("マジック・ミサイルの呪文を唱えた。", "You cast a magic missile."));
306 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::MISSILE, bmc_ptr->plev, DAM_ROLL);
307 fire_bolt(player_ptr, AttributeType::MISSILE, bmc_ptr->dir, bmc_ptr->damage);
311 bool cast_blue_bolt_abyss(PlayerType *player_ptr, bmc_type *bmc_ptr)
313 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
317 msg_print(_("アビス・ボルトの呪文を唱えた。", "You cast a abyss bolt."));
318 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_ABYSS, bmc_ptr->plev, DAM_ROLL);
319 fire_bolt(player_ptr, AttributeType::ABYSS, bmc_ptr->dir, bmc_ptr->damage);
323 bool cast_blue_bolt_void(PlayerType *player_ptr, bmc_type *bmc_ptr)
325 if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
329 msg_print(_("ヴォイド・ボルトの呪文を唱えた。", "You cast a void bolt."));
330 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_VOID, bmc_ptr->plev, DAM_ROLL);
331 fire_bolt(player_ptr, AttributeType::VOID_MAGIC, bmc_ptr->dir, bmc_ptr->damage);