1 #include "blue-magic/blue-magic-ball-bolt.h"
2 #include "blue-magic/blue-magic-util.h"
3 #include "mspell/mspell-damage-calculator.h"
4 #include "mspell/mspell-type.h"
5 #include "spell-kind/spells-launcher.h"
6 #include "spell/spell-types.h"
7 #include "target/target-getter.h"
8 #include "view/display-messages.h"
10 bool cast_blue_ball_acid(player_type *caster_ptr, bmc_type *bmc_ptr)
12 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
15 msg_print(_("アシッド・ボールの呪文を唱えた。", "You cast an acid ball."));
16 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BALL_ACID, bmc_ptr->plev, DAM_ROLL);
17 fire_ball(caster_ptr, GF_ACID, bmc_ptr->dir, bmc_ptr->damage, 2);
21 bool cast_blue_ball_elec(player_type *caster_ptr, bmc_type *bmc_ptr)
23 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
26 msg_print(_("サンダー・ボールの呪文を唱えた。", "You cast a lightning ball."));
27 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BALL_ELEC, bmc_ptr->plev, DAM_ROLL);
28 fire_ball(caster_ptr, GF_ELEC, bmc_ptr->dir, bmc_ptr->damage, 2);
32 bool cast_blue_ball_fire(player_type *caster_ptr, bmc_type *bmc_ptr)
34 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
37 msg_print(_("ファイア・ボールの呪文を唱えた。", "You cast a fire ball."));
38 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BALL_FIRE, bmc_ptr->plev, DAM_ROLL);
39 fire_ball(caster_ptr, GF_FIRE, bmc_ptr->dir, bmc_ptr->damage, 2);
43 bool cast_blue_ball_cold(player_type *caster_ptr, bmc_type *bmc_ptr)
45 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
48 msg_print(_("アイス・ボールの呪文を唱えた。", "You cast a frost ball."));
49 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BALL_COLD, bmc_ptr->plev, DAM_ROLL);
50 fire_ball(caster_ptr, GF_COLD, bmc_ptr->dir, bmc_ptr->damage, 2);
54 bool cast_blue_ball_pois(player_type *caster_ptr, bmc_type *bmc_ptr)
56 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
59 msg_print(_("悪臭雲の呪文を唱えた。", "You cast a stinking cloud."));
60 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BALL_POIS, bmc_ptr->plev, DAM_ROLL);
61 fire_ball(caster_ptr, GF_POIS, bmc_ptr->dir, bmc_ptr->damage, 2);
65 bool cast_blue_ball_nuke(player_type *caster_ptr, bmc_type *bmc_ptr)
67 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
70 msg_print(_("放射能球を放った。", "You cast a ball of radiation."));
71 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BALL_NUKE, bmc_ptr->plev, DAM_ROLL);
72 fire_ball(caster_ptr, GF_NUKE, bmc_ptr->dir, bmc_ptr->damage, 2);
76 bool cast_blue_ball_nether(player_type *caster_ptr, bmc_type *bmc_ptr)
78 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
81 msg_print(_("地獄球の呪文を唱えた。", "You cast a nether ball."));
82 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BALL_NETHER, bmc_ptr->plev, DAM_ROLL);
83 fire_ball(caster_ptr, GF_NETHER, bmc_ptr->dir, bmc_ptr->damage, 2);
87 bool cast_blue_ball_chaos(player_type *caster_ptr, bmc_type *bmc_ptr)
89 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
92 msg_print(_("純ログルスを放った。", "You invoke a raw Logrus."));
93 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BALL_CHAOS, bmc_ptr->plev, DAM_ROLL);
94 fire_ball(caster_ptr, GF_CHAOS, bmc_ptr->dir, bmc_ptr->damage, 4);
99 * @brief ウォーター・ボールの青魔法
101 * @param caster_ptr プレーヤーへの参照ポインタ
102 * @param bmc_ptr 青魔法詠唱への参照ポインタ
103 * @details All my worries are blown away.
105 bool cast_blue_ball_water(player_type *caster_ptr, bmc_type *bmc_ptr)
107 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
110 msg_print(_("流れるような身振りをした。", "You gesture fluidly."));
111 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BALL_WATER, bmc_ptr->plev, DAM_ROLL);
112 fire_ball(caster_ptr, GF_WATER, bmc_ptr->dir, bmc_ptr->damage, 4);
116 bool cast_blue_ball_star_burst(player_type *caster_ptr, bmc_type *bmc_ptr)
118 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
121 msg_print(_("スターバーストの呪文を念じた。", "You invoke a starburst."));
122 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_STARBURST, bmc_ptr->plev, DAM_ROLL);
123 fire_ball(caster_ptr, GF_LITE, bmc_ptr->dir, bmc_ptr->damage, 4);
127 bool cast_blue_ball_dark_storm(player_type *caster_ptr, bmc_type *bmc_ptr)
129 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
132 msg_print(_("暗黒の嵐の呪文を念じた。", "You invoke a darkness storm."));
133 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BALL_DARK, bmc_ptr->plev, DAM_ROLL);
134 fire_ball(caster_ptr, GF_DARK, bmc_ptr->dir, bmc_ptr->damage, 4);
138 bool cast_blue_ball_mana_storm(player_type *caster_ptr, bmc_type *bmc_ptr)
140 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
143 msg_print(_("魔力の嵐の呪文を念じた。", "You invoke a mana storm."));
144 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BALL_MANA, bmc_ptr->plev, DAM_ROLL);
145 fire_ball(caster_ptr, GF_MANA, bmc_ptr->dir, bmc_ptr->damage, 4);
149 bool cast_blue_bolt_acid(player_type *caster_ptr, bmc_type *bmc_ptr)
151 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
154 msg_print(_("アシッド・ボルトの呪文を唱えた。", "You cast an acid bolt."));
155 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BOLT_ACID, bmc_ptr->plev, DAM_ROLL);
156 fire_bolt(caster_ptr, GF_ACID, bmc_ptr->dir, bmc_ptr->damage);
160 bool cast_blue_bolt_elec(player_type *caster_ptr, bmc_type *bmc_ptr)
162 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
165 msg_print(_("サンダー・ボルトの呪文を唱えた。", "You cast a lightning bolt."));
166 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BOLT_ELEC, bmc_ptr->plev, DAM_ROLL);
167 fire_bolt(caster_ptr, GF_ELEC, bmc_ptr->dir, bmc_ptr->damage);
171 bool cast_blue_bolt_fire(player_type *caster_ptr, bmc_type *bmc_ptr)
173 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
176 msg_print(_("ファイア・ボルトの呪文を唱えた。", "You cast a fire bolt."));
177 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BOLT_FIRE, bmc_ptr->plev, DAM_ROLL);
178 fire_bolt(caster_ptr, GF_FIRE, bmc_ptr->dir, bmc_ptr->damage);
182 bool cast_blue_bolt_cold(player_type *caster_ptr, bmc_type *bmc_ptr)
184 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
187 msg_print(_("アイス・ボルトの呪文を唱えた。", "You cast a frost bolt."));
188 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BOLT_COLD, bmc_ptr->plev, DAM_ROLL);
189 fire_bolt(caster_ptr, GF_COLD, bmc_ptr->dir, bmc_ptr->damage);
193 bool cast_blue_bolt_nether(player_type *caster_ptr, bmc_type *bmc_ptr)
195 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
198 msg_print(_("地獄の矢の呪文を唱えた。", "You cast a nether bolt."));
199 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BOLT_NETHER, bmc_ptr->plev, DAM_ROLL);
200 fire_bolt(caster_ptr, GF_NETHER, bmc_ptr->dir, bmc_ptr->damage);
204 bool cast_blue_bolt_water(player_type *caster_ptr, bmc_type *bmc_ptr)
206 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
209 msg_print(_("ウォーター・ボルトの呪文を唱えた。", "You cast a water bolt."));
210 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BOLT_WATER, bmc_ptr->plev, DAM_ROLL);
211 fire_bolt(caster_ptr, GF_WATER, bmc_ptr->dir, bmc_ptr->damage);
215 bool cast_blue_bolt_mana(player_type *caster_ptr, bmc_type *bmc_ptr)
217 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
220 msg_print(_("魔力の矢の呪文を唱えた。", "You cast a mana bolt."));
221 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BOLT_MANA, bmc_ptr->plev, DAM_ROLL);
222 fire_bolt(caster_ptr, GF_MANA, bmc_ptr->dir, bmc_ptr->damage);
226 bool cast_blue_bolt_plasma(player_type *caster_ptr, bmc_type *bmc_ptr)
228 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
231 msg_print(_("プラズマ・ボルトの呪文を唱えた。", "You cast a plasma bolt."));
232 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BOLT_PLASMA, bmc_ptr->plev, DAM_ROLL);
233 fire_bolt(caster_ptr, GF_PLASMA, bmc_ptr->dir, bmc_ptr->damage);
237 bool cast_blue_bolt_icee(player_type *caster_ptr, bmc_type *bmc_ptr)
239 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
242 msg_print(_("極寒の矢の呪文を唱えた。", "You cast a ice bolt."));
243 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BOLT_ICE, bmc_ptr->plev, DAM_ROLL);
244 fire_bolt(caster_ptr, GF_ICE, bmc_ptr->dir, bmc_ptr->damage);
248 bool cast_blue_bolt_missile(player_type *caster_ptr, bmc_type *bmc_ptr)
250 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
253 msg_print(_("マジック・ミサイルの呪文を唱えた。", "You cast a magic missile."));
254 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_MAGIC_MISSILE, bmc_ptr->plev, DAM_ROLL);
255 fire_bolt(caster_ptr, GF_MISSILE, bmc_ptr->dir, bmc_ptr->damage);