1 #include "mspell/mspell-bolt.h"
2 #include "main/sound-definitions-table.h"
3 #include "mind/drs-types.h"
4 #include "monster/monster2.h"
5 #include "mspell/monster-spell.h"
6 #include "mspell/mspell-damage-calculator.h"
7 #include "mspell/mspell-type.h"
8 #include "mspell/mspell-util.h"
9 #include "spell/spells-type.h"
12 * @brief RF4_SHOOTの処理。射撃。 /
13 * @param target_ptr プレーヤーへの参照ポインタ
16 * @param m_idx 呪文を唱えるモンスターID
17 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
18 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
21 HIT_POINT spell_RF4_SHOOT(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
25 monspell_message(target_ptr, m_idx, t_idx, _("%^sが奇妙な音を発した。", "%^s makes a strange noise."), _("%^sが矢を放った。", "%^s fires an arrow."),
26 _("%^sが%sに矢を放った。", "%^s fires an arrow at %s."), TARGET_TYPE);
28 dam = monspell_damage(target_ptr, (MS_SHOOT), m_idx, DAM_ROLL);
29 bolt(target_ptr, m_idx, y, x, GF_ARROW, dam, MS_SHOOT, TARGET_TYPE);
36 * @brief RF5_BO_ACIDの処理。アシッド・ボルト。 /
37 * @param target_ptr プレーヤーへの参照ポインタ
40 * @param m_idx 呪文を唱えるモンスターID
41 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
42 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
45 HIT_POINT spell_RF5_BO_ACID(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
49 monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."),
50 _("%^sがアシッド・ボルトの呪文を唱えた。", "%^s casts a acid bolt."),
51 _("%sが%sに向かってアシッド・ボルトの呪文を唱えた。", "%^s casts an acid bolt at %s."), TARGET_TYPE);
53 dam = monspell_damage(target_ptr, (MS_BOLT_ACID), m_idx, DAM_ROLL);
54 bolt(target_ptr, m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, TARGET_TYPE);
55 if (TARGET_TYPE == MONSTER_TO_PLAYER) {
56 update_smart_learn(target_ptr, m_idx, DRS_ACID);
57 update_smart_learn(target_ptr, m_idx, DRS_REFLECT);
64 * @brief RF5_BO_ELECの処理。サンダー・ボルト。 /
65 * @param target_ptr プレーヤーへの参照ポインタ
68 * @param m_idx 呪文を唱えるモンスターID
69 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
70 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
73 HIT_POINT spell_RF5_BO_ELEC(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
77 monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."),
78 _("%^sがサンダー・ボルトの呪文を唱えた。", "%^s casts a lightning bolt."),
79 _("%^sが%sに向かってサンダー・ボルトの呪文を唱えた。", "%^s casts a lightning bolt at %s."), TARGET_TYPE);
81 dam = monspell_damage(target_ptr, (MS_BOLT_ELEC), m_idx, DAM_ROLL);
82 bolt(target_ptr, m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, TARGET_TYPE);
83 if (TARGET_TYPE == MONSTER_TO_PLAYER) {
84 update_smart_learn(target_ptr, m_idx, DRS_ELEC);
85 update_smart_learn(target_ptr, m_idx, DRS_REFLECT);
92 * @brief RF5_BO_FIREの処理。ファイア・ボルト。 /
93 * @param target_ptr プレーヤーへの参照ポインタ
96 * @param m_idx 呪文を唱えるモンスターID
97 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
98 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
101 HIT_POINT spell_RF5_BO_FIRE(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
105 monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."),
106 _("%^sがファイア・ボルトの呪文を唱えた。", "%^s casts a fire bolt."),
107 _("%^sが%sに向かってファイア・ボルトの呪文を唱えた。", "%^s casts a fire bolt at %s."), TARGET_TYPE);
109 dam = monspell_damage(target_ptr, (MS_BOLT_FIRE), m_idx, DAM_ROLL);
110 bolt(target_ptr, m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, TARGET_TYPE);
111 if (TARGET_TYPE == MONSTER_TO_PLAYER) {
112 update_smart_learn(target_ptr, m_idx, DRS_FIRE);
113 update_smart_learn(target_ptr, m_idx, DRS_REFLECT);
120 * @brief RF5_BO_COLDの処理。アイス・ボルト。 /
121 * @param target_ptr プレーヤーへの参照ポインタ
124 * @param m_idx 呪文を唱えるモンスターID
125 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
126 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
129 HIT_POINT spell_RF5_BO_COLD(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
133 monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."),
134 _("%^sがアイス・ボルトの呪文を唱えた。", "%^s casts a frost bolt."),
135 _("%^sが%sに向かってアイス・ボルトの呪文を唱えた。", "%^s casts a frost bolt at %s."), TARGET_TYPE);
137 dam = monspell_damage(target_ptr, (MS_BOLT_COLD), m_idx, DAM_ROLL);
138 bolt(target_ptr, m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, TARGET_TYPE);
139 if (TARGET_TYPE == MONSTER_TO_PLAYER) {
140 update_smart_learn(target_ptr, m_idx, DRS_COLD);
141 update_smart_learn(target_ptr, m_idx, DRS_REFLECT);
148 * @brief RF5_BO_NETHの処理。地獄の矢。 /
149 * @param target_ptr プレーヤーへの参照ポインタ
152 * @param m_idx 呪文を唱えるモンスターID
153 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
154 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
157 HIT_POINT spell_RF5_BO_NETH(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
161 monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."), _("%^sが地獄の矢の呪文を唱えた。", "%^s casts a nether bolt."),
162 _("%^sが%sに向かって地獄の矢の呪文を唱えた。", "%^s casts a nether bolt at %s."), TARGET_TYPE);
164 dam = monspell_damage(target_ptr, (MS_BOLT_NETHER), m_idx, DAM_ROLL);
165 bolt(target_ptr, m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, TARGET_TYPE);
166 if (TARGET_TYPE == MONSTER_TO_PLAYER) {
167 update_smart_learn(target_ptr, m_idx, DRS_NETH);
168 update_smart_learn(target_ptr, m_idx, DRS_REFLECT);
175 * @brief RF5_BO_WATEの処理。ウォーター・ボルト。 /
176 * @param target_ptr プレーヤーへの参照ポインタ
179 * @param m_idx 呪文を唱えるモンスターID
180 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
181 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
184 HIT_POINT spell_RF5_BO_WATE(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
188 monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."),
189 _("%^sがウォーター・ボルトの呪文を唱えた。", "%^s casts a water bolt."),
190 _("%^sが%sに向かってウォーター・ボルトの呪文を唱えた。", "%^s casts a water bolt at %s."), TARGET_TYPE);
192 dam = monspell_damage(target_ptr, (MS_BOLT_WATER), m_idx, DAM_ROLL);
193 bolt(target_ptr, m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, TARGET_TYPE);
194 if (TARGET_TYPE == MONSTER_TO_PLAYER) {
195 update_smart_learn(target_ptr, m_idx, DRS_REFLECT);
202 * @brief RF5_BO_MANAの処理。魔力の矢。 /
203 * @param target_ptr プレーヤーへの参照ポインタ
206 * @param m_idx 呪文を唱えるモンスターID
207 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
208 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
211 HIT_POINT spell_RF5_BO_MANA(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
215 monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."), _("%^sが魔力の矢の呪文を唱えた。", "%^s casts a mana bolt."),
216 _("%^sが%sに向かって魔力の矢の呪文を唱えた。", "%^s casts a mana bolt at %s."), TARGET_TYPE);
218 dam = monspell_damage(target_ptr, (MS_BOLT_MANA), m_idx, DAM_ROLL);
219 bolt(target_ptr, m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, TARGET_TYPE);
220 if (TARGET_TYPE == MONSTER_TO_PLAYER) {
221 update_smart_learn(target_ptr, m_idx, DRS_REFLECT);
228 * @brief RF5_BO_PLASの処理。プラズマ・ボルト。 /
229 * @param target_ptr プレーヤーへの参照ポインタ
232 * @param m_idx 呪文を唱えるモンスターID
233 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
234 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
237 HIT_POINT spell_RF5_BO_PLAS(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
241 monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."),
242 _("%^sがプラズマ・ボルトの呪文を唱えた。", "%^s casts a plasma bolt."),
243 _("%^sが%sに向かってプラズマ・ボルトの呪文を唱えた。", "%^s casts a plasma bolt at %s."), TARGET_TYPE);
245 dam = monspell_damage(target_ptr, (MS_BOLT_PLASMA), m_idx, DAM_ROLL);
246 bolt(target_ptr, m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, TARGET_TYPE);
247 if (TARGET_TYPE == MONSTER_TO_PLAYER) {
248 update_smart_learn(target_ptr, m_idx, DRS_REFLECT);
255 * @brief RF5_BO_ICEEの処理。極寒の矢。 /
256 * @param target_ptr プレーヤーへの参照ポインタ
259 * @param m_idx 呪文を唱えるモンスターID
260 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
261 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
264 HIT_POINT spell_RF5_BO_ICEE(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
268 monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."), _("%^sが極寒の矢の呪文を唱えた。", "%^s casts an ice bolt."),
269 _("%^sが%sに向かって極寒の矢の呪文を唱えた。", "%^s casts an ice bolt at %s."), TARGET_TYPE);
271 dam = monspell_damage(target_ptr, (MS_BOLT_ICE), m_idx, DAM_ROLL);
272 bolt(target_ptr, m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, TARGET_TYPE);
273 if (TARGET_TYPE == MONSTER_TO_PLAYER) {
274 update_smart_learn(target_ptr, m_idx, DRS_COLD);
275 update_smart_learn(target_ptr, m_idx, DRS_REFLECT);
282 * @brief RF5_MISSILEの処理。マジック・ミサイル。 /
283 * @param target_ptr プレーヤーへの参照ポインタ
286 * @param m_idx 呪文を唱えるモンスターID
287 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
288 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
291 HIT_POINT spell_RF5_MISSILE(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
295 monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."),
296 _("%^sがマジック・ミサイルの呪文を唱えた。", "%^s casts a magic missile."),
297 _("%^sが%sに向かってマジック・ミサイルの呪文を唱えた。", "%^s casts a magic missile at %s."), TARGET_TYPE);
299 dam = monspell_damage(target_ptr, (MS_MAGIC_MISSILE), m_idx, DAM_ROLL);
300 bolt(target_ptr, m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, TARGET_TYPE);
301 if (TARGET_TYPE == MONSTER_TO_PLAYER) {
302 update_smart_learn(target_ptr, m_idx, DRS_REFLECT);