OSDN Git Service

1376d8fc48b8234dd652ffbcf05061d845daa968
[hengbandforosx/hengbandosx.git] / src / blue-magic / blue-magic-ball-bolt.cpp
1 /*!
2  * @file blue-magic-ball-bolt.cpp
3  * @brief 青魔法のボール/ボルト系呪文定義
4  */
5
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"
15
16 bool cast_blue_ball_acid(player_type *player_ptr, bmc_type *bmc_ptr)
17 {
18     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
19         return false;
20
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);
24     return true;
25 }
26
27 bool cast_blue_ball_elec(player_type *player_ptr, bmc_type *bmc_ptr)
28 {
29     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
30         return false;
31
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);
35     return true;
36 }
37
38 bool cast_blue_ball_fire(player_type *player_ptr, bmc_type *bmc_ptr)
39 {
40     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
41         return false;
42
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);
46     return true;
47 }
48
49 bool cast_blue_ball_cold(player_type *player_ptr, bmc_type *bmc_ptr)
50 {
51     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
52         return false;
53
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);
57     return true;
58 }
59
60 bool cast_blue_ball_pois(player_type *player_ptr, bmc_type *bmc_ptr)
61 {
62     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
63         return false;
64
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);
68     return true;
69 }
70
71 bool cast_blue_ball_nuke(player_type *player_ptr, bmc_type *bmc_ptr)
72 {
73     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
74         return false;
75
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);
79     return true;
80 }
81
82 bool cast_blue_ball_nether(player_type *player_ptr, bmc_type *bmc_ptr)
83 {
84     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
85         return false;
86
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);
90     return true;
91 }
92
93 bool cast_blue_ball_chaos(player_type *player_ptr, bmc_type *bmc_ptr)
94 {
95     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
96         return false;
97
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);
101     return true;
102 }
103
104 /*!
105  * @brief ウォーター・ボールの青魔法
106  * @brief 分解のブレスの青魔法
107  * @param player_ptr プレイヤーへの参照ポインタ
108  * @param bmc_ptr 青魔法詠唱への参照ポインタ
109  * @details All my worries are blown away.
110  */
111 bool cast_blue_ball_water(player_type *player_ptr, bmc_type *bmc_ptr)
112 {
113     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
114         return false;
115
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);
119     return true;
120 }
121
122 bool cast_blue_ball_star_burst(player_type *player_ptr, bmc_type *bmc_ptr)
123 {
124     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
125         return false;
126
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);
130     return true;
131 }
132
133 bool cast_blue_ball_dark_storm(player_type *player_ptr, bmc_type *bmc_ptr)
134 {
135     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
136         return false;
137
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);
141     return true;
142 }
143
144 bool cast_blue_ball_mana_storm(player_type *player_ptr, bmc_type *bmc_ptr)
145 {
146     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
147         return false;
148
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);
152     return true;
153 }
154
155 bool cast_blue_bolt_acid(player_type *player_ptr, bmc_type *bmc_ptr)
156 {
157     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
158         return false;
159
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);
163     return true;
164 }
165
166 bool cast_blue_bolt_elec(player_type *player_ptr, bmc_type *bmc_ptr)
167 {
168     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
169         return false;
170
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);
174     return true;
175 }
176
177 bool cast_blue_bolt_fire(player_type *player_ptr, bmc_type *bmc_ptr)
178 {
179     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
180         return false;
181
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);
185     return true;
186 }
187
188 bool cast_blue_bolt_cold(player_type *player_ptr, bmc_type *bmc_ptr)
189 {
190     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
191         return false;
192
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);
196     return true;
197 }
198
199 bool cast_blue_bolt_nether(player_type *player_ptr, bmc_type *bmc_ptr)
200 {
201     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
202         return false;
203
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);
207     return true;
208 }
209
210 bool cast_blue_bolt_water(player_type *player_ptr, bmc_type *bmc_ptr)
211 {
212     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
213         return false;
214
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);
218     return true;
219 }
220
221 bool cast_blue_bolt_mana(player_type *player_ptr, bmc_type *bmc_ptr)
222 {
223     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
224         return false;
225
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);
229     return true;
230 }
231
232 bool cast_blue_bolt_plasma(player_type *player_ptr, bmc_type *bmc_ptr)
233 {
234     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
235         return false;
236
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);
240     return true;
241 }
242
243 bool cast_blue_bolt_icee(player_type *player_ptr, bmc_type *bmc_ptr)
244 {
245     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
246         return false;
247
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);
251     return true;
252 }
253
254 bool cast_blue_bolt_missile(player_type *player_ptr, bmc_type *bmc_ptr)
255 {
256     if (!get_aim_dir(player_ptr, &bmc_ptr->dir))
257         return false;
258
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);
262     return true;
263 }