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 "monster-race/race-ability-flags.h"
9 #include "mspell/mspell-damage-calculator.h"
10 #include "spell-kind/spells-launcher.h"
11 #include "effect/attribute-types.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(player_type *player_ptr, bmc_type *bmc_ptr)
18 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
21 msg_print(_("アシッド・ボールの呪文を唱えた。", "You cast an acid ball."));
22 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_ACID, bmc_ptr->plev, DAM_ROLL);
23 fire_ball(player_ptr, AttributeType::ACID, bmc_ptr->dir, bmc_ptr->damage, 2);
27 bool cast_blue_ball_elec(player_type *player_ptr, bmc_type *bmc_ptr)
29 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
32 msg_print(_("サンダー・ボールの呪文を唱えた。", "You cast a lightning ball."));
33 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_ELEC, bmc_ptr->plev, DAM_ROLL);
34 fire_ball(player_ptr, AttributeType::ELEC, bmc_ptr->dir, bmc_ptr->damage, 2);
38 bool cast_blue_ball_fire(player_type *player_ptr, bmc_type *bmc_ptr)
40 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
43 msg_print(_("ファイア・ボールの呪文を唱えた。", "You cast a fire ball."));
44 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_FIRE, bmc_ptr->plev, DAM_ROLL);
45 fire_ball(player_ptr, AttributeType::FIRE, bmc_ptr->dir, bmc_ptr->damage, 2);
49 bool cast_blue_ball_cold(player_type *player_ptr, bmc_type *bmc_ptr)
51 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
54 msg_print(_("アイス・ボールの呪文を唱えた。", "You cast a frost ball."));
55 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_COLD, bmc_ptr->plev, DAM_ROLL);
56 fire_ball(player_ptr, AttributeType::COLD, bmc_ptr->dir, bmc_ptr->damage, 2);
60 bool cast_blue_ball_pois(player_type *player_ptr, bmc_type *bmc_ptr)
62 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
65 msg_print(_("悪臭雲の呪文を唱えた。", "You cast a stinking cloud."));
66 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_POIS, bmc_ptr->plev, DAM_ROLL);
67 fire_ball(player_ptr, AttributeType::POIS, bmc_ptr->dir, bmc_ptr->damage, 2);
71 bool cast_blue_ball_nuke(player_type *player_ptr, bmc_type *bmc_ptr)
73 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
76 msg_print(_("放射能球を放った。", "You cast a ball of radiation."));
77 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_NUKE, bmc_ptr->plev, DAM_ROLL);
78 fire_ball(player_ptr, AttributeType::NUKE, bmc_ptr->dir, bmc_ptr->damage, 2);
82 bool cast_blue_ball_nether(player_type *player_ptr, bmc_type *bmc_ptr)
84 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
87 msg_print(_("地獄球の呪文を唱えた。", "You cast a nether ball."));
88 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_NETH, bmc_ptr->plev, DAM_ROLL);
89 fire_ball(player_ptr, AttributeType::NETHER, bmc_ptr->dir, bmc_ptr->damage, 2);
93 bool cast_blue_ball_chaos(player_type *player_ptr, bmc_type *bmc_ptr)
95 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
98 msg_print(_("純ログルスを放った。", "You invoke a raw Logrus."));
99 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_CHAO, bmc_ptr->plev, DAM_ROLL);
100 fire_ball(player_ptr, AttributeType::CHAOS, bmc_ptr->dir, bmc_ptr->damage, 4);
105 * @brief ウォーター・ボールの青魔法
107 * @param player_ptr プレイヤーへの参照ポインタ
108 * @param bmc_ptr 青魔法詠唱への参照ポインタ
109 * @details All my worries are blown away.
111 bool cast_blue_ball_water(player_type *player_ptr, bmc_type *bmc_ptr)
113 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
116 msg_print(_("流れるような身振りをした。", "You gesture fluidly."));
117 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_WATE, bmc_ptr->plev, DAM_ROLL);
118 fire_ball(player_ptr, AttributeType::WATER, bmc_ptr->dir, bmc_ptr->damage, 4);
122 bool cast_blue_ball_star_burst(player_type *player_ptr, bmc_type *bmc_ptr)
124 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
127 msg_print(_("スターバーストの呪文を念じた。", "You invoke a starburst."));
128 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_LITE, bmc_ptr->plev, DAM_ROLL);
129 fire_ball(player_ptr, AttributeType::LITE, bmc_ptr->dir, bmc_ptr->damage, 4);
133 bool cast_blue_ball_dark_storm(player_type *player_ptr, bmc_type *bmc_ptr)
135 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
138 msg_print(_("暗黒の嵐の呪文を念じた。", "You invoke a darkness storm."));
139 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_DARK, bmc_ptr->plev, DAM_ROLL);
140 fire_ball(player_ptr, AttributeType::DARK, bmc_ptr->dir, bmc_ptr->damage, 4);
144 bool cast_blue_ball_mana_storm(player_type *player_ptr, bmc_type *bmc_ptr)
146 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
149 msg_print(_("魔力の嵐の呪文を念じた。", "You invoke a mana storm."));
150 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BA_MANA, bmc_ptr->plev, DAM_ROLL);
151 fire_ball(player_ptr, AttributeType::MANA, bmc_ptr->dir, bmc_ptr->damage, 4);
155 bool cast_blue_bolt_acid(player_type *player_ptr, bmc_type *bmc_ptr)
157 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
160 msg_print(_("アシッド・ボルトの呪文を唱えた。", "You cast an acid bolt."));
161 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_ACID, bmc_ptr->plev, DAM_ROLL);
162 fire_bolt(player_ptr, AttributeType::ACID, bmc_ptr->dir, bmc_ptr->damage);
166 bool cast_blue_bolt_elec(player_type *player_ptr, bmc_type *bmc_ptr)
168 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
171 msg_print(_("サンダー・ボルトの呪文を唱えた。", "You cast a lightning bolt."));
172 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_ELEC, bmc_ptr->plev, DAM_ROLL);
173 fire_bolt(player_ptr, AttributeType::ELEC, bmc_ptr->dir, bmc_ptr->damage);
177 bool cast_blue_bolt_fire(player_type *player_ptr, bmc_type *bmc_ptr)
179 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
182 msg_print(_("ファイア・ボルトの呪文を唱えた。", "You cast a fire bolt."));
183 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_FIRE, bmc_ptr->plev, DAM_ROLL);
184 fire_bolt(player_ptr, AttributeType::FIRE, bmc_ptr->dir, bmc_ptr->damage);
188 bool cast_blue_bolt_cold(player_type *player_ptr, bmc_type *bmc_ptr)
190 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
193 msg_print(_("アイス・ボルトの呪文を唱えた。", "You cast a frost bolt."));
194 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_COLD, bmc_ptr->plev, DAM_ROLL);
195 fire_bolt(player_ptr, AttributeType::COLD, bmc_ptr->dir, bmc_ptr->damage);
199 bool cast_blue_bolt_nether(player_type *player_ptr, bmc_type *bmc_ptr)
201 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
204 msg_print(_("地獄の矢の呪文を唱えた。", "You cast a nether bolt."));
205 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_NETH, bmc_ptr->plev, DAM_ROLL);
206 fire_bolt(player_ptr, AttributeType::NETHER, bmc_ptr->dir, bmc_ptr->damage);
210 bool cast_blue_bolt_water(player_type *player_ptr, bmc_type *bmc_ptr)
212 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
215 msg_print(_("ウォーター・ボルトの呪文を唱えた。", "You cast a water bolt."));
216 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_WATE, bmc_ptr->plev, DAM_ROLL);
217 fire_bolt(player_ptr, AttributeType::WATER, bmc_ptr->dir, bmc_ptr->damage);
221 bool cast_blue_bolt_mana(player_type *player_ptr, bmc_type *bmc_ptr)
223 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
226 msg_print(_("魔力の矢の呪文を唱えた。", "You cast a mana bolt."));
227 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_MANA, bmc_ptr->plev, DAM_ROLL);
228 fire_bolt(player_ptr, AttributeType::MANA, bmc_ptr->dir, bmc_ptr->damage);
232 bool cast_blue_bolt_plasma(player_type *player_ptr, bmc_type *bmc_ptr)
234 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
237 msg_print(_("プラズマ・ボルトの呪文を唱えた。", "You cast a plasma bolt."));
238 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_PLAS, bmc_ptr->plev, DAM_ROLL);
239 fire_bolt(player_ptr, AttributeType::PLASMA, bmc_ptr->dir, bmc_ptr->damage);
243 bool cast_blue_bolt_icee(player_type *player_ptr, bmc_type *bmc_ptr)
245 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
248 msg_print(_("極寒の矢の呪文を唱えた。", "You cast a ice bolt."));
249 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BO_ICEE, bmc_ptr->plev, DAM_ROLL);
250 fire_bolt(player_ptr, AttributeType::ICE, bmc_ptr->dir, bmc_ptr->damage);
254 bool cast_blue_bolt_missile(player_type *player_ptr, bmc_type *bmc_ptr)
256 if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
259 msg_print(_("マジック・ミサイルの呪文を唱えた。", "You cast a magic missile."));
260 bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::MISSILE, bmc_ptr->plev, DAM_ROLL);
261 fire_bolt(player_ptr, AttributeType::MISSILE, bmc_ptr->dir, bmc_ptr->damage);