• R/O
  • HTTP
  • SSH
  • HTTPS

hengband: Commit

変愚蛮怒のメインリポジトリです


Commit MetaInfo

Revisiona2f45615770eb5161ab2fe3070d220a87a5b9ae5 (tree)
Time2014-02-24 17:39:34
Authordis- <dis.rogue@gmai...>
Commiterdis-

Log Message

add comments

refactor: create monspell_damage()

refactor: remove duplicated spell_damage definition from process_warning

Change Summary

Incremental Difference

--- a/src/defines.h
+++ b/src/defines.h
@@ -5702,3 +5702,17 @@ extern int PlayerUID;
57025702 /* summoning number */
57035703 #define S_NUM_6 (easy_band ? 2 : 6)
57045704 #define S_NUM_4 (easy_band ? 1 : 4)
5705+
5706+/* monster spell number */
5707+#define RF4_SPELL_START 32 * 3
5708+#define RF5_SPELL_START 32 * 4
5709+#define RF6_SPELL_START 32 * 5
5710+
5711+#define RF4_SPELL_SIZE 32
5712+#define RF5_SPELL_SIZE 32
5713+#define RF6_SPELL_SIZE 32
5714+
5715+/* Spell Damage Calc Flag*/
5716+#define DAM_ROLL 1
5717+#define DAM_MAX 2
5718+#define DAM_MIN 3
--- a/src/externs.h
+++ b/src/externs.h
@@ -1594,9 +1594,11 @@ extern void learn_spell(int monspell);
15941594 extern void set_rf_masks(s32b *f4, s32b *f5, s32b *f6, int mode);
15951595
15961596 /* mspells4.c */
1597+extern int monspell_num(int SPELL_NUM_BASE, u32b SPELL_FLAG);
15971598 extern bool spell_learnable(int m_idx);
15981599 extern int monspell_to_player(int SPELL_NUM, int y, int x, int m_idx);
15991600 extern int monspell_to_monster(int SPELL_NUM, int y, int x, int m_idx, int t_idx);
1601+extern int monspell_damage(int SPELL_NUM, int m_idx, int TYPE);
16001602
16011603 /* hissatsu.c */
16021604 extern void hissatsu_info(char *p, int power);
--- a/src/mspells1.c
+++ b/src/mspells1.c
@@ -1454,9 +1454,6 @@ bool make_attack_spell(int m_idx)
14541454 bool no_inate = FALSE;
14551455 bool do_spell = DO_SPELL_NONE;
14561456 int dam = 0;
1457- u32b mode = 0L;
1458- int s_num_6 = (easy_band ? 2 : 6);
1459- int s_num_4 = (easy_band ? 1 : 4);
14601457 int rad = 0; //For elemental spells
14611458
14621459 /* Target location */
@@ -1470,11 +1467,8 @@ bool make_attack_spell(int m_idx)
14701467 /* Summon count */
14711468 int count = 0;
14721469
1473- /* Extract the blind-ness */
1474- bool blind = (p_ptr->blind ? TRUE : FALSE);
1475-
14761470 /* Extract the "see-able-ness" */
1477- bool seen = (!blind && m_ptr->ml);
1471+ bool seen = (!p_ptr->blind && m_ptr->ml);
14781472 bool maneable = player_has_los_bold(m_ptr->fy, m_ptr->fx);
14791473
14801474 /* Check "projectable" */
@@ -1739,19 +1733,19 @@ bool make_attack_spell(int m_idx)
17391733 /* Extract the "inate" spells */
17401734 for (k = 0; k < 32; k++)
17411735 {
1742- if (f4 & (1L << k)) spell[num++] = k + 32 * 3;
1736+ if (f4 & (1L << k)) spell[num++] = k + RF4_SPELL_START;
17431737 }
17441738
17451739 /* Extract the "normal" spells */
17461740 for (k = 0; k < 32; k++)
17471741 {
1748- if (f5 & (1L << k)) spell[num++] = k + 32 * 4;
1742+ if (f5 & (1L << k)) spell[num++] = k + RF5_SPELL_START;
17491743 }
17501744
17511745 /* Extract the "bizarre" spells */
17521746 for (k = 0; k < 32; k++)
17531747 {
1754- if (f6 & (1L << k)) spell[num++] = k + 32 * 5;
1748+ if (f6 & (1L << k)) spell[num++] = k + RF6_SPELL_START;
17551749 }
17561750
17571751 /* No spells left */
--- a/src/mspells2.c
+++ b/src/mspells2.c
@@ -258,13 +258,9 @@ bool monst_spell_monst(int m_idx)
258258 int y = 0, x = 0;
259259 int i, k, t_idx = 0;
260260 int thrown_spell, count = 0;
261- int rlev;
262261 int dam = 0;
263262 int start;
264263 int plus = 1;
265- u32b u_mode = 0L;
266- int s_num_6 = (easy_band ? 2 : 6);
267- int s_num_4 = (easy_band ? 1 : 4);
268264 int rad = 0; //For elemental balls
269265
270266 byte spell[96], num = 0;
@@ -284,17 +280,10 @@ bool monst_spell_monst(int m_idx)
284280
285281 u32b f4, f5, f6;
286282
287- bool wake_up = FALSE;
288- bool fear = FALSE;
289-
290- bool blind = (p_ptr->blind ? TRUE : FALSE);
291-
292283 bool see_m = is_seen(m_ptr);
293284 bool maneable = player_has_los_bold(m_ptr->fy, m_ptr->fx);
294285 bool see_t;
295286 bool see_either;
296- bool known;
297-
298287 bool pet = is_pet(m_ptr);
299288
300289 bool in_no_magic_dungeon = (d_info[dungeon_type].flags1 & DF1_NO_MAGIC) && dun_level
@@ -306,9 +295,6 @@ bool monst_spell_monst(int m_idx)
306295
307296 bool resists_tele = FALSE;
308297
309- /* Prepare flags for summoning */
310- if (!pet) u_mode |= PM_ALLOW_UNIQUE;
311-
312298 /* Cannot cast spells when confused */
313299 if (MON_CONFUSED(m_ptr)) return (FALSE);
314300
@@ -404,9 +390,6 @@ bool monst_spell_monst(int m_idx)
404390 /* Forget old counter attack target */
405391 reset_target(m_ptr);
406392
407- /* Extract the monster level */
408- rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1);
409-
410393 /* Remove unimplemented spells */
411394 f6 &= ~(RF6_WORLD | RF6_TRAPS | RF6_FORGET);
412395
@@ -666,19 +649,19 @@ bool monst_spell_monst(int m_idx)
666649 /* Extract the "inate" spells */
667650 for (k = 0; k < 32; k++)
668651 {
669- if (f4 & (1L << k)) spell[num++] = k + 32 * 3;
652+ if (f4 & (1L << k)) spell[num++] = k + RF4_SPELL_START;
670653 }
671654
672655 /* Extract the "normal" spells */
673656 for (k = 0; k < 32; k++)
674657 {
675- if (f5 & (1L << k)) spell[num++] = k + 32 * 4;
658+ if (f5 & (1L << k)) spell[num++] = k + RF5_SPELL_START;
676659 }
677660
678661 /* Extract the "bizarre" spells */
679662 for (k = 0; k < 32; k++)
680663 {
681- if (f6 & (1L << k)) spell[num++] = k + 32 * 5;
664+ if (f6 & (1L << k)) spell[num++] = k + RF6_SPELL_START;
682665 }
683666
684667 /* No spells left */
@@ -707,9 +690,6 @@ bool monst_spell_monst(int m_idx)
707690 see_t = is_seen(t_ptr);
708691 see_either = (see_m || see_t);
709692
710- /* Can the player be aware of this attack? */
711- known = (m_ptr->cdis <= MAX_SIGHT) || (t_ptr->cdis <= MAX_SIGHT);
712-
713693 if (p_ptr->riding && (m_idx == p_ptr->riding)) disturb(1, 1);
714694
715695 /* Check for spell failure (inate attacks never fail) */
@@ -749,7 +729,7 @@ bool monst_spell_monst(int m_idx)
749729 p_ptr->mane_dam[i] = p_ptr->mane_dam[i+1];
750730 }
751731 }
752- p_ptr->mane_spell[p_ptr->mane_num] = thrown_spell - 96;
732+ p_ptr->mane_spell[p_ptr->mane_num] = thrown_spell - RF4_SPELL_START;
753733 p_ptr->mane_dam[p_ptr->mane_num] = dam;
754734 p_ptr->mane_num++;
755735 new_mane = TRUE;
@@ -762,23 +742,23 @@ bool monst_spell_monst(int m_idx)
762742 if (can_remember)
763743 {
764744 /* Inate spell */
765- if (thrown_spell < 32*4)
745+ if (thrown_spell < RF4_SPELL_START + RF4_SPELL_SIZE)
766746 {
767- r_ptr->r_flags4 |= (1L << (thrown_spell - 32*3));
747+ r_ptr->r_flags4 |= (1L << (thrown_spell - RF4_SPELL_START));
768748 if (r_ptr->r_cast_spell < MAX_UCHAR) r_ptr->r_cast_spell++;
769749 }
770750
771751 /* Bolt or Ball */
772- else if (thrown_spell < 32*5)
752+ else if (thrown_spell < RF5_SPELL_START + RF5_SPELL_SIZE)
773753 {
774- r_ptr->r_flags5 |= (1L << (thrown_spell - 32*4));
754+ r_ptr->r_flags5 |= (1L << (thrown_spell - RF5_SPELL_START));
775755 if (r_ptr->r_cast_spell < MAX_UCHAR) r_ptr->r_cast_spell++;
776756 }
777757
778758 /* Special spell */
779- else if (thrown_spell < 32*6)
759+ else if (thrown_spell < RF6_SPELL_START + RF6_SPELL_SIZE)
780760 {
781- r_ptr->r_flags6 |= (1L << (thrown_spell - 32*5));
761+ r_ptr->r_flags6 |= (1L << (thrown_spell - RF6_SPELL_START));
782762 if (r_ptr->r_cast_spell < MAX_UCHAR) r_ptr->r_cast_spell++;
783763 }
784764 }
--- a/src/mspells4.c
+++ b/src/mspells4.c
@@ -1,13 +1,39 @@
11 #include "angband.h"
22
3-char* monster_name(int m_idx, char* m_name)
3+/*!
4+* @brief モンスターの呪文の通し番号を取得する /
5+* @param SPELL_NUM_BASE RF4ならRF4_SPELL_STARTのように32区切りのベースとなる数値
6+* @param SPELL_FLAG RF4_SHRIEKなどのスペルフラグ
7+* @return 呪文の通し番号。
8+*/
9+int monspell_num(int SPELL_NUM_BASE, u32b SPELL_FLAG)
10+{
11+ int k;
12+ for (k = 0; k < 32; k++)
13+ {
14+ if (SPELL_FLAG & (1L << k)) return k + SPELL_NUM_BASE;
15+ }
16+ return 0;
17+}
18+
19+
20+/*!
21+* @brief モンスターIDを取り、モンスター名をm_nameに代入する /
22+* @param m_idx モンスターID
23+* @param m_name モンスター名を入力する配列
24+*/
25+void monster_name(int m_idx, char* m_name)
426 {
527 monster_type *m_ptr = &m_list[m_idx];
628 monster_desc(m_name, m_ptr, 0x00);
7- return m_name;
829 }
930
10-/* 2 monster each is near by player, return true */
31+/*!
32+* @brief モンスター2体がプレイヤーの近くに居るかの判定 /
33+* @param m_idx モンスターID一体目
34+* @param t_idx モンスターID二体目
35+* @return モンスター2体のどちらかがプレイヤーの近くに居ればTRUE、どちらも遠ければFALSEを返す。
36+*/
1137 bool monster_near_player(int m_idx, int t_idx)
1238 {
1339 monster_type *m_ptr = &m_list[m_idx];
@@ -15,13 +41,22 @@ bool monster_near_player(int m_idx, int t_idx)
1541 return (m_ptr->cdis <= MAX_SIGHT) || (t_ptr->cdis <= MAX_SIGHT);
1642 }
1743
18-/* player can see monster, return true */
44+/*!
45+* @brief プレイヤーがモンスターを見ることができるかの判定 /
46+* @param m_idx モンスターID
47+* @return プレイヤーがモンスターを見ることができるならTRUE、そうでなければFALSEを返す。
48+*/
1949 bool see_monster(int m_idx)
2050 {
2151 monster_type *m_ptr = &m_list[m_idx];
2252 return is_seen(m_ptr);
2353 }
2454
55+/*!
56+* @brief モンスターの唱えた呪文を青魔法で学習できるか判定する /
57+* @param m_idx モンスターID
58+* @return プレイヤーが青魔法で学習できるならTRUE、そうでなければFALSEを返す。
59+*/
2560 bool spell_learnable(int m_idx)
2661 {
2762 monster_type *m_ptr = &m_list[m_idx];
@@ -32,6 +67,11 @@ bool spell_learnable(int m_idx)
3267 return (seen && maneable && !world_monster);
3368 }
3469
70+/*!
71+* @brief モンスターIDからモンスターのレベルを取得する /
72+* @param m_idx モンスターID
73+* @return モンスターのレベル
74+*/
3575 int monster_level_idx(int m_idx)
3676 {
3777 monster_type *m_ptr = &m_list[m_idx];
@@ -40,6 +80,11 @@ int monster_level_idx(int m_idx)
4080 return rlev;
4181 }
4282
83+/*!
84+* @brief モンスターIDからPOWERFULフラグの有無を取得する /
85+* @param m_idx モンスターID
86+* @return POWERFULフラグがあればTRUE、なければFALSEを返す。
87+*/
4388 bool monster_is_powerful(int m_idx)
4489 {
4590 monster_type *m_ptr = &m_list[m_idx];
@@ -47,6 +92,11 @@ bool monster_is_powerful(int m_idx)
4792 return (r_ptr->flags2 & RF2_POWERFUL);
4893 }
4994
95+/*!
96+* @brief モンスターがユニーク召喚可能であるかを判定する /
97+* @param m_idx モンスターID
98+* @return 召喚可能であればPM_ALLOW_UNIQUEを返す。
99+*/
50100 u32b monster_u_mode(int m_idx)
51101 {
52102 u32b u_mode = 0L;
@@ -56,11 +106,26 @@ u32b monster_u_mode(int m_idx)
56106 return u_mode;
57107 }
58108
109+/*!
110+* @brief モンスターを起こす /
111+* @param m_idx モンスターID
112+*/
59113 void monster_wakeup(int t_idx)
60114 {
61115 (void)set_monster_csleep(t_idx, 0);
62116 }
63117
118+/*!
119+ * @brief モンスターが呪文行使する際のメッセージを処理する汎用関数 /
120+ * @param m_idx 呪文を唱えるモンスターID
121+ * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
122+ * @param msg1 msg_flagがTRUEで、プレイヤーを対象とする場合のメッセージ
123+ * @param msg2 msg_flagがTRUEで、モンスターを対象とする場合のメッセージ
124+ * @param msg3 msg_flagがFALSEで、プレイヤーを対象とする場合のメッセージ
125+ * @param msg4 msg_flagがFALSEで、モンスターを対象とする場合のメッセージ
126+ * @param msg_flag メッセージを分岐するためのフラグ
127+ * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
128+ */
64129 void monspell_message_base(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, cptr msg4, bool msg_flag, int TARGET_TYPE)
65130 {
66131 bool known = monster_near_player(m_idx, t_idx);
@@ -97,16 +162,39 @@ void monspell_message_base(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3
97162 mon_fight = TRUE;
98163 }
99164
165+/*!
166+* @brief モンスターが呪文行使する際のメッセージを処理する汎用関数。盲目時と通常時のメッセージを切り替える。 /
167+* @param m_idx 呪文を唱えるモンスターID
168+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
169+* @param msg1 プレイヤーが盲目状態のメッセージ
170+* @param msg2 プレイヤーが盲目でなく、プレイヤーを対象とする場合のメッセージ
171+* @param msg3 プレイヤーが盲目でなく、モンスター対象とする場合のメッセージ
172+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
173+*/
100174 void monspell_message(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, int TARGET_TYPE)
101175 {
102176 monspell_message_base(m_idx, t_idx, msg1, msg1, msg2, msg3, p_ptr->blind, TARGET_TYPE);
103177 }
104178
179+/*!
180+* @brief モンスターが呪文行使する際のメッセージを処理する汎用関数。対モンスターと対プレイヤーのメッセージを切り替える。 /
181+* @param m_idx 呪文を唱えるモンスターID
182+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
183+* @param msg1 プレイヤーを対象とする場合のメッセージ
184+* @param msg2 モンスター対象とする場合のメッセージ
185+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
186+*/
105187 void simple_monspell_message(int m_idx, int t_idx, cptr msg1, cptr msg2, int TARGET_TYPE)
106188 {
107189 monspell_message_base(m_idx, t_idx, msg1, msg2, msg1, msg2, p_ptr->blind, TARGET_TYPE);
108190 }
109191
192+/*!
193+ * @brief RF4_SHRIEKの処理。叫び。 /
194+ * @param m_idx 呪文を唱えるモンスターID
195+ * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
196+ * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
197+ */
110198 void spell_RF4_SHRIEK(int m_idx, int t_idx, int TARGET_TYPE)
111199 {
112200 simple_monspell_message(m_idx, t_idx,
@@ -124,6 +212,12 @@ void spell_RF4_SHRIEK(int m_idx, int t_idx, int TARGET_TYPE)
124212 }
125213 }
126214
215+/*!
216+* @brief RF4_DISPELの処理。魔力消去。 /
217+* @param m_idx 呪文を唱えるモンスターID
218+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
219+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
220+*/
127221 void spell_RF4_DISPEL(int m_idx, int t_idx, int TARGET_TYPE)
128222 {
129223 bool known = monster_near_player(m_idx, t_idx);
@@ -155,10 +249,18 @@ void spell_RF4_DISPEL(int m_idx, int t_idx, int TARGET_TYPE)
155249 }
156250 }
157251
252+/*!
253+* @brief RF4_ROCKETの処理。ロケット。 /
254+* @param y 対象の地点のy座標
255+* @param x 対象の地点のx座標
256+* @param m_idx 呪文を唱えるモンスターID
257+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
258+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
259+* @return ダメージ量を返す。
260+*/
158261 int spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
159262 {
160263 int dam;
161- monster_type *m_ptr = &m_list[m_idx];
162264
163265 monspell_message(m_idx, t_idx,
164266 _("%^sが何かを射った。", "%^s shoots something."),
@@ -166,32 +268,49 @@ int spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
166268 _("%^sが%sにロケットを発射した。", "%^s fires a rocket at %s."),
167269 TARGET_TYPE);
168270
169- dam = (m_ptr->hp / 4) > 800 ? 800 : (m_ptr->hp / 4);
271+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_ROCKET), m_idx, DAM_ROLL);
170272 breath(y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, TARGET_TYPE);
171273 if (TARGET_TYPE == MONSTER_TO_PLAYER)
172274 update_smart_learn(m_idx, DRS_SHARD);
173275 return dam;
174276 }
175277
278+/*!
279+* @brief RF4_SHOOTの処理。射撃。 /
280+* @param y 対象の地点のy座標
281+* @param x 対象の地点のx座標
282+* @param m_idx 呪文を唱えるモンスターID
283+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
284+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
285+* @return ダメージ量を返す。
286+*/
176287 int spell_RF4_SHOOT(int y, int x, int m_idx, int t_idx,int TARGET_TYPE)
177288 {
178289 int dam;
179- monster_type *m_ptr = &m_list[m_idx];
180- monster_race *r_ptr = &r_info[m_ptr->r_idx];
181-
290+
182291 monspell_message(m_idx, t_idx,
183292 _("%^sが奇妙な音を発した。", "%^s makes a strange noise."),
184293 _("%^sが矢を放った。", "%^s fires an arrow."),
185294 _("%^sが%sに矢を放った。", "%^s fires an arrow at %s."),
186295 TARGET_TYPE);
187296
188- dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
297+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_SHOOT), m_idx, DAM_ROLL);
189298 bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, TARGET_TYPE);
190299 sound(SOUND_SHOOT);
191300
192301 return dam;
193302 }
194303
304+/*!
305+* @brief RF4_BR_*の処理。各種ブレス。 /
306+* @param GF_TYPE ブレスの属性
307+* @param y 対象の地点のy座標
308+* @param x 対象の地点のx座標
309+* @param m_idx 呪文を唱えるモンスターID
310+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
311+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
312+* @return ダメージ量を返す。
313+*/
195314 int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
196315 {
197316 int dam, ms_type, drs_type;
@@ -209,133 +328,133 @@ int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx, int TARGET
209328 switch (GF_TYPE)
210329 {
211330 case GF_ACID:
212- dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
331+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_ACID), m_idx, DAM_ROLL);
213332 type_s = _("酸", "acid");
214333 ms_type = MS_BR_ACID;
215334 drs_type = DRS_ACID;
216335 break;
217336 case GF_ELEC:
218- dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
337+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_ELEC), m_idx, DAM_ROLL);
219338 type_s = _("稲妻", "lightning");
220339 ms_type = MS_BR_ELEC;
221340 drs_type = DRS_ELEC;
222341 break;
223342 case GF_FIRE:
224- dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
343+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_FIRE), m_idx, DAM_ROLL);
225344 type_s = _("火炎", "fire");
226345 ms_type = MS_BR_FIRE;
227346 drs_type = DRS_FIRE;
228347 break;
229348 case GF_COLD:
230- dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
349+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_COLD), m_idx, DAM_ROLL);
231350 type_s = _("冷気", "frost");
232351 ms_type = MS_BR_COLD;
233352 drs_type = DRS_COLD;
234353 break;
235354 case GF_POIS:
236- dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
355+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_POIS), m_idx, DAM_ROLL);
237356 type_s = _("ガス", "gas");
238357 ms_type = MS_BR_POIS;
239358 drs_type = DRS_POIS;
240359 break;
241360 case GF_NETHER:
242- dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
361+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_NETH), m_idx, DAM_ROLL);
243362 type_s = _("地獄", "nether");
244363 ms_type = MS_BR_NETHER;
245364 drs_type = DRS_NETH;
246365 break;
247366 case GF_LITE:
248- dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
367+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_LITE), m_idx, DAM_ROLL);
249368 type_s = _("閃光", "light");
250369 ms_type = MS_BR_LITE;
251370 drs_type = DRS_LITE;
252371 break;
253372 case GF_DARK:
254- dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
373+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_DARK), m_idx, DAM_ROLL);
255374 type_s = _("暗黒", "darkness");
256375 ms_type = MS_BR_DARK;
257376 drs_type = DRS_DARK;
258377 break;
259378 case GF_CONFUSION:
260- dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
379+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_CONF), m_idx, DAM_ROLL);
261380 type_s = _("混乱", "confusion");
262381 ms_type = MS_BR_CONF;
263382 drs_type = DRS_CONF;
264383 break;
265384 case GF_SOUND:
266- dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
385+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_SOUN), m_idx, DAM_ROLL);
267386 type_s = _("轟音", "sound");
268387 ms_type = MS_BR_SOUND;
269388 drs_type = DRS_SOUND;
270389 break;
271390 case GF_CHAOS:
272- dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
391+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_CHAO), m_idx, DAM_ROLL);
273392 type_s = _("カオス", "chaos");
274393 ms_type = MS_BR_CHAOS;
275394 drs_type = DRS_CHAOS;
276395 break;
277396 case GF_DISENCHANT:
278- dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
397+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_DISE), m_idx, DAM_ROLL);
279398 type_s = _("劣化", "disenchantment");
280399 ms_type = MS_BR_DISEN;
281400 drs_type = DRS_DISEN;
282401 break;
283402 case GF_NEXUS:
284- dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
403+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_NEXU), m_idx, DAM_ROLL);
285404 type_s = _("因果混乱", "nexus");
286405 ms_type = MS_BR_NEXUS;
287406 drs_type = DRS_NEXUS;
288407 break;
289408 case GF_TIME:
290- dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
409+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_TIME), m_idx, DAM_ROLL);
291410 type_s = _("時間逆転", "time");
292411 ms_type = MS_BR_TIME;
293412 smart_learn = FALSE;
294413 break;
295414 case GF_INERTIA:
296- dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
415+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_INER), m_idx, DAM_ROLL);
297416 type_s = _("遅鈍", "inertia");
298417 ms_type = MS_BR_INERTIA;
299418 smart_learn = FALSE;
300419 break;
301420 case GF_GRAVITY:
302- dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
421+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_GRAV), m_idx, DAM_ROLL);
303422 type_s = _("重力", "gravity");
304423 ms_type = MS_BR_GRAVITY;
305424 smart_learn = FALSE;
306425 break;
307426 case GF_SHARDS:
308- dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
427+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_SHAR), m_idx, DAM_ROLL);
309428 type_s = _("破片", "shards");
310429 ms_type = MS_BR_SHARDS;
311430 drs_type = DRS_SHARD;
312431 break;
313432 case GF_PLASMA:
314- dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
433+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_PLAS), m_idx, DAM_ROLL);
315434 type_s = _("プラズマ", "plasma");
316435 ms_type = MS_BR_PLASMA;
317436 smart_learn = FALSE;
318437 break;
319438 case GF_FORCE:
320- dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
439+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_WALL), m_idx, DAM_ROLL);
321440 type_s = _("フォース", "force");
322441 ms_type = MS_BR_FORCE;
323442 smart_learn = FALSE;
324443 break;
325444 case GF_MANA:
326- dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
445+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_MANA), m_idx, DAM_ROLL);
327446 type_s = _("魔力", "mana");
328447 ms_type = MS_BR_MANA;
329448 smart_learn = FALSE;
330449 break;
331450 case GF_NUKE:
332- dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
451+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_NUKE), m_idx, DAM_ROLL);
333452 type_s = _("放射性廃棄物", "toxic waste");
334453 ms_type = MS_BR_NUKE;
335454 drs_type = DRS_POIS;
336455 break;
337456 case GF_DISINTEGRATE:
338- dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
457+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_DISI), m_idx, DAM_ROLL);
339458 type_s = _("分解", "disintegration");
340459 ms_type = MS_BR_DISI;
341460 smart_learn = FALSE;
@@ -384,10 +503,18 @@ int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx, int TARGET
384503 return dam;
385504 }
386505
506+/*!
507+* @brief RF4_BA_NUKEの処理。放射能球。 /
508+* @param y 対象の地点のy座標
509+* @param x 対象の地点のx座標
510+* @param m_idx 呪文を唱えるモンスターID
511+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
512+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
513+* @return ダメージ量を返す。
514+*/
387515 int spell_RF4_BA_NUKE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
388516 {
389517 int dam;
390- int rlev = monster_level_idx(m_idx);
391518
392519 monspell_message(m_idx, t_idx,
393520 _("%^sが何かをつぶやいた。", "%^s mumbles."),
@@ -395,7 +522,7 @@ int spell_RF4_BA_NUKE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
395522 _("%^sが%sに放射能球を放った。", "%^s casts a ball of radiation at %s."),
396523 TARGET_TYPE);
397524
398- dam = (rlev + damroll(10, 6)) * (monster_is_powerful(m_idx) ? 2 : 1);
525+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BA_NUKE), m_idx, DAM_ROLL);
399526 breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, TARGET_TYPE);
400527 if (TARGET_TYPE == MONSTER_TO_PLAYER)
401528 update_smart_learn(m_idx, DRS_POIS);
@@ -403,10 +530,18 @@ int spell_RF4_BA_NUKE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
403530 return dam;
404531 }
405532
533+/*!
534+* @brief RF4_BA_CHAOの処理。純ログルス。 /
535+* @param y 対象の地点のy座標
536+* @param x 対象の地点のx座標
537+* @param m_idx 呪文を唱えるモンスターID
538+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
539+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
540+* @return ダメージ量を返す。
541+*/
406542 int spell_RF4_BA_CHAO(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
407543 {
408544 int dam;
409- int rlev = monster_level_idx(m_idx);
410545
411546 monspell_message(m_idx, t_idx,
412547 _("%^sが恐ろしげにつぶやいた。", "%^s mumbles frighteningly."),
@@ -414,8 +549,7 @@ int spell_RF4_BA_CHAO(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
414549 _("%^sが%sに純ログルスを放った。", "%^s invokes raw Logrus upon %s."),
415550 TARGET_TYPE);
416551
417- dam = (monster_is_powerful(m_idx) ? (rlev * 3) : (rlev * 2)) + damroll(10, 10);
418-
552+ dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BA_CHAO), m_idx, DAM_ROLL);
419553 breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, TARGET_TYPE);
420554 if (TARGET_TYPE == MONSTER_TO_PLAYER)
421555 update_smart_learn(m_idx, DRS_CHAOS);
@@ -423,10 +557,18 @@ int spell_RF4_BA_CHAO(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
423557 return dam;
424558 }
425559
560+/*!
561+* @brief RF5_BA_ACIDの処理。アシッド・ボール。 /
562+* @param y 対象の地点のy座標
563+* @param x 対象の地点のx座標
564+* @param m_idx 呪文を唱えるモンスターID
565+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
566+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
567+* @return ダメージ量を返す。
568+*/
426569 int spell_RF5_BA_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
427570 {
428571 int dam, rad;
429- int rlev = monster_level_idx(m_idx);
430572
431573 monspell_message(m_idx, t_idx,
432574 _("%^sが何かをつぶやいた。", "%^s mumbles."),
@@ -435,17 +577,8 @@ int spell_RF5_BA_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
435577 "%^s casts an acid ball at %s."),
436578 TARGET_TYPE);
437579
438- if (monster_is_powerful(m_idx))
439- {
440- rad = 4;
441- dam = (rlev * 4) + 50 + damroll(10, 10);
442- }
443- else
444- {
445- rad = 2;
446- dam = (randint1(rlev * 3) + 15);
447- }
448-
580+ rad = monster_is_powerful(m_idx) ? 4 : 2;
581+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_ACID), m_idx, DAM_ROLL);
449582 breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, TARGET_TYPE);
450583 if (TARGET_TYPE == MONSTER_TO_PLAYER)
451584 update_smart_learn(m_idx, DRS_ACID);
@@ -453,10 +586,18 @@ int spell_RF5_BA_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
453586 return dam;
454587 }
455588
589+/*!
590+* @brief RF5_BA_ELECの処理。サンダー・ボール。 /
591+* @param y 対象の地点のy座標
592+* @param x 対象の地点のx座標
593+* @param m_idx 呪文を唱えるモンスターID
594+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
595+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
596+* @return ダメージ量を返す。
597+*/
456598 int spell_RF5_BA_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
457599 {
458600 int dam, rad;
459- int rlev = monster_level_idx(m_idx);
460601
461602 monspell_message(m_idx, t_idx,
462603 _("%^sが何かをつぶやいた。", "%^s mumbles."),
@@ -465,17 +606,8 @@ int spell_RF5_BA_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
465606 "%^s casts a lightning ball at %s."),
466607 TARGET_TYPE);
467608
468- if (monster_is_powerful(m_idx))
469- {
470- rad = 4;
471- dam = (rlev * 4) + 50 + damroll(10, 10);
472- }
473- else
474- {
475- rad = 2;
476- dam = (randint1(rlev * 3 / 2) + 8);
477- }
478-
609+ rad = monster_is_powerful(m_idx) ? 4 : 2;
610+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_ELEC), m_idx, DAM_ROLL);
479611 breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, TARGET_TYPE);
480612 if (TARGET_TYPE == MONSTER_TO_PLAYER)
481613 update_smart_learn(m_idx, DRS_ELEC);
@@ -483,11 +615,19 @@ int spell_RF5_BA_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
483615 return dam;
484616 }
485617
618+/*!
619+* @brief RF5_BA_FIREの処理。ファイア・ボール。 /
620+* @param y 対象の地点のy座標
621+* @param x 対象の地点のx座標
622+* @param m_idx 呪文を唱えるモンスターID
623+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
624+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
625+* @return ダメージ量を返す。
626+*/
486627 int spell_RF5_BA_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
487628 {
488629 int dam, rad;
489630 monster_type *m_ptr = &m_list[m_idx];
490- int rlev = monster_level_idx(m_idx);
491631
492632 if (m_ptr->r_idx == MON_ROLENTO)
493633 {
@@ -506,18 +646,8 @@ int spell_RF5_BA_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
506646 "%^s casts a fire ball at %s."),
507647 TARGET_TYPE);
508648 }
509-
510- if (monster_is_powerful(m_idx))
511- {
512- rad = 4;
513- dam = (rlev * 4) + 50 + damroll(10, 10);
514- }
515- else
516- {
517- rad = 2;
518- dam = (randint1(rlev * 7 / 2) + 10);
519- }
520-
649+ rad = monster_is_powerful(m_idx) ? 4 : 2;
650+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_FIRE), m_idx, DAM_ROLL);
521651 breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, TARGET_TYPE);
522652 if (TARGET_TYPE == MONSTER_TO_PLAYER)
523653 update_smart_learn(m_idx, DRS_FIRE);
@@ -525,10 +655,18 @@ int spell_RF5_BA_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
525655 return dam;
526656 }
527657
658+/*!
659+* @brief RF5_BA_COLDの処理。アイス・ボール。 /
660+* @param y 対象の地点のy座標
661+* @param x 対象の地点のx座標
662+* @param m_idx 呪文を唱えるモンスターID
663+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
664+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
665+* @return ダメージ量を返す。
666+*/
528667 int spell_RF5_BA_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
529668 {
530669 int dam, rad;
531- int rlev = monster_level_idx(m_idx);
532670
533671 monspell_message(m_idx, t_idx,
534672 _("%^sが何かをつぶやいた。", "%^s mumbles."),
@@ -537,17 +675,8 @@ int spell_RF5_BA_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
537675 "%^s casts a frost ball at %s."),
538676 TARGET_TYPE);
539677
540- if (monster_is_powerful(m_idx))
541- {
542- rad = 4;
543- dam = (rlev * 4) + 50 + damroll(10, 10);
544- }
545- else
546- {
547- rad = 2;
548- dam = (randint1(rlev * 3 / 2) + 10);
549- }
550-
678+ rad = monster_is_powerful(m_idx) ? 4 : 2;
679+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_COLD), m_idx, DAM_ROLL);
551680 breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, TARGET_TYPE);
552681 if (TARGET_TYPE == MONSTER_TO_PLAYER)
553682 update_smart_learn(m_idx, DRS_COLD);
@@ -555,7 +684,15 @@ int spell_RF5_BA_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
555684 return dam;
556685 }
557686
558-
687+/*!
688+* @brief RF5_BA_POISの処理。悪臭雲。 /
689+* @param y 対象の地点のy座標
690+* @param x 対象の地点のx座標
691+* @param m_idx 呪文を唱えるモンスターID
692+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
693+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
694+* @return ダメージ量を返す。
695+*/
559696 int spell_RF5_BA_POIS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
560697 {
561698 int dam;
@@ -566,7 +703,7 @@ int spell_RF5_BA_POIS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
566703 _("%^sが%sに向かって悪臭雲の呪文を唱えた。", "%^s casts a stinking cloud at %s."),
567704 TARGET_TYPE);
568705
569- dam = damroll(12, 2) * (monster_is_powerful(m_idx) ? 2 : 1);
706+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_POIS), m_idx, DAM_ROLL);
570707 breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, TARGET_TYPE);
571708 if (TARGET_TYPE == MONSTER_TO_PLAYER)
572709 update_smart_learn(m_idx, DRS_POIS);
@@ -574,10 +711,18 @@ int spell_RF5_BA_POIS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
574711 return dam;
575712 }
576713
714+/*!
715+* @brief RF5_BA_NETHの処理。地獄球。 /
716+* @param y 対象の地点のy座標
717+* @param x 対象の地点のx座標
718+* @param m_idx 呪文を唱えるモンスターID
719+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
720+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
721+* @return ダメージ量を返す。
722+*/
577723 int spell_RF5_BA_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
578724 {
579725 int dam;
580- int rlev = monster_level_idx(m_idx);
581726
582727 monspell_message(m_idx, t_idx,
583728 _("%^sが何かをつぶやいた。", "%^s mumbles."),
@@ -585,7 +730,7 @@ int spell_RF5_BA_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
585730 _("%^sが%sに向かって地獄球の呪文を唱えた。", "%^s casts a nether ball at %s."),
586731 TARGET_TYPE);
587732
588- dam = 50 + damroll(10, 10) + (rlev * (monster_is_powerful(m_idx) ? 2 : 1));
733+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_NETH), m_idx, DAM_ROLL);
589734 breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, TARGET_TYPE);
590735 if (TARGET_TYPE == MONSTER_TO_PLAYER)
591736 update_smart_learn(m_idx, DRS_NETH);
@@ -593,10 +738,18 @@ int spell_RF5_BA_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
593738 return dam;
594739 }
595740
741+/*!
742+* @brief RF5_BA_WATEの処理。ウォーター・ボール。 /
743+* @param y 対象の地点のy座標
744+* @param x 対象の地点のx座標
745+* @param m_idx 呪文を唱えるモンスターID
746+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
747+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
748+* @return ダメージ量を返す。
749+*/
596750 int spell_RF5_BA_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
597751 {
598752 int dam;
599- int rlev = monster_level_idx(m_idx);
600753 bool known = monster_near_player(m_idx, t_idx);
601754 bool see_either = see_monster(m_idx) || see_monster(t_idx);
602755 bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
@@ -620,16 +773,23 @@ int spell_RF5_BA_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
620773 msg_format(_("%^sは渦巻に飲み込まれた。", "%^s is engulfed in a whirlpool."), t_name);
621774 }
622775
623- dam = (monster_is_powerful(m_idx) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
776+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_WATE), m_idx, DAM_ROLL);
624777 breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, TARGET_TYPE);
625778 return dam;
626779 }
627780
628-
781+/*!
782+* @brief RF5_BA_MANAの処理。魔力の嵐。 /
783+* @param y 対象の地点のy座標
784+* @param x 対象の地点のx座標
785+* @param m_idx 呪文を唱えるモンスターID
786+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
787+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
788+* @return ダメージ量を返す。
789+*/
629790 int spell_RF5_BA_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
630791 {
631792 int dam;
632- int rlev = monster_level_idx(m_idx);
633793
634794 monspell_message(m_idx, t_idx,
635795 _("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."),
@@ -637,15 +797,23 @@ int spell_RF5_BA_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
637797 _("%^sが%sに対して魔力の嵐の呪文を念じた。", "%^s invokes a mana storm upon %s."),
638798 TARGET_TYPE);
639799
640- dam = (rlev * 4) + 50 + damroll(10, 10);
800+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_MANA), m_idx, DAM_ROLL);
641801 breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, TARGET_TYPE);
642802 return dam;
643803 }
644804
805+/*!
806+* @brief RF5_BA_DARKの処理。暗黒の嵐。 /
807+* @param y 対象の地点のy座標
808+* @param x 対象の地点のx座標
809+* @param m_idx 呪文を唱えるモンスターID
810+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
811+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
812+* @return ダメージ量を返す。
813+*/
645814 int spell_RF5_BA_DARK(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
646815 {
647816 int dam;
648- int rlev = monster_level_idx(m_idx);
649817
650818 monspell_message(m_idx, t_idx,
651819 _("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."),
@@ -653,7 +821,7 @@ int spell_RF5_BA_DARK(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
653821 _("%^sが%sに対して暗黒の嵐の呪文を念じた。", "%^s invokes a darkness storm upon %s."),
654822 TARGET_TYPE);
655823
656- dam = (rlev * 4) + 50 + damroll(10, 10);
824+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_DARK), m_idx, DAM_ROLL);
657825 breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, TARGET_TYPE);
658826 if (TARGET_TYPE == MONSTER_TO_PLAYER)
659827 update_smart_learn(m_idx, DRS_DARK);
@@ -661,9 +829,17 @@ int spell_RF5_BA_DARK(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
661829 return dam;
662830 }
663831
832+/*!
833+* @brief RF5_DRAIN_MANAの処理。魔力吸収。 /
834+* @param y 対象の地点のy座標
835+* @param x 対象の地点のx座標
836+* @param m_idx 呪文を唱えるモンスターID
837+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
838+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
839+* @return ダメージ量を返す。
840+*/
664841 int spell_RF5_DRAIN_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
665842 {
666- int rlev = monster_level_idx(m_idx);
667843 int dam;
668844 char m_name[80], t_name[80];
669845 monster_name(m_idx, m_name);
@@ -680,7 +856,7 @@ int spell_RF5_DRAIN_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
680856 msg_format(_("%^sは精神エネルギーを%sから吸いとった。", "%^s draws psychic energy from %s."), m_name, t_name);
681857 }
682858
683- dam = ((randint1(rlev) / 2) + 1);
859+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_DRAIN_MANA), m_idx, DAM_ROLL);
684860 breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, TARGET_TYPE);
685861 if (TARGET_TYPE == MONSTER_TO_PLAYER)
686862 update_smart_learn(m_idx, DRS_MANA);
@@ -688,11 +864,19 @@ int spell_RF5_DRAIN_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
688864 return dam;
689865 }
690866
867+/*!
868+* @brief RF5_MIND_BLASTの処理。精神攻撃。 /
869+* @param y 対象の地点のy座標
870+* @param x 対象の地点のx座標
871+* @param m_idx 呪文を唱えるモンスターID
872+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
873+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
874+* @return ダメージ量を返す。
875+*/
691876 int spell_RF5_MIND_BLAST(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
692877 {
693878 monster_type *m_ptr = &m_list[m_idx];
694879 bool seen = (!p_ptr->blind && m_ptr->ml);
695- int rlev = monster_level_idx(m_idx);
696880 int dam;
697881 char m_name[80], t_name[80];
698882 monster_name(m_idx, m_name);
@@ -712,16 +896,24 @@ int spell_RF5_MIND_BLAST(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
712896 msg_format(_("%^sは%sをじっと睨んだ。", "%^s gazes intently at %s."), m_name, t_name);
713897 }
714898
715- dam = damroll(7, 7);
899+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_MIND_BLAST), m_idx, DAM_ROLL);
716900 breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, TARGET_TYPE);
717901 return dam;
718902 }
719903
904+/*!
905+* @brief RF5_BRAIN_SMASHの処理。脳攻撃。 /
906+* @param y 対象の地点のy座標
907+* @param x 対象の地点のx座標
908+* @param m_idx 呪文を唱えるモンスターID
909+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
910+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
911+* @return ダメージ量を返す。
912+*/
720913 int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
721914 {
722915 monster_type *m_ptr = &m_list[m_idx];
723916 bool seen = (!p_ptr->blind && m_ptr->ml);
724- int rlev = monster_level_idx(m_idx);
725917 int dam;
726918 char m_name[80], t_name[80];
727919 monster_name(m_idx, m_name);
@@ -741,14 +933,28 @@ int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
741933 msg_format(_("%^sは%sをじっと睨んだ。", "%^s gazes intently at %s."), m_name, t_name);
742934 }
743935
744- dam = damroll(12, 12);
936+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BRAIN_SMASH), m_idx, DAM_ROLL);
745937 breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, TARGET_TYPE);
746938 return dam;
747939 }
748940
941+/*!
942+* @brief RF5_CAUSE_*のメッセージ処理関数 /
943+* @param GF_TYPE 攻撃に使用する属性
944+* @param dam 攻撃に使用するダメージ量
945+* @param y 対象の地点のy座標
946+* @param x 対象の地点のx座標
947+* @param m_idx 呪文を唱えるモンスターID
948+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
949+* @param msg1 対プレイヤー、盲目時メッセージ
950+* @param msg2 対プレイヤー、非盲目時メッセージ
951+* @param msg3 対モンスターのメッセージ
952+* @param MS_TYPE 呪文の番号
953+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
954+* @return ダメージ量を返す。
955+*/
749956 void spell_RF5_CAUSE(int GF_TYPE, int dam, int y, int x, int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, int MS_TYPE, int TARGET_TYPE)
750957 {
751- int rlev = monster_level_idx(m_idx);
752958 char m_name[80], t_name[80];
753959 monster_name(m_idx, m_name);
754960 monster_name(t_idx, t_name);
@@ -775,10 +981,20 @@ void spell_RF5_CAUSE(int GF_TYPE, int dam, int y, int x, int m_idx, int t_idx, c
775981 breath(y, x, m_idx, GF_TYPE, dam, 0, FALSE, MS_TYPE, TARGET_TYPE);
776982 }
777983
984+/*!
985+* @brief RF5_CAUSE_1の処理。軽傷の呪い。 /
986+* @param y 対象の地点のy座標
987+* @param x 対象の地点のx座標
988+* @param m_idx 呪文を唱えるモンスターID
989+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
990+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
991+* @return ダメージ量を返す。
992+*/
778993 int spell_RF5_CAUSE_1(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
779994 {
780995 cptr msg1, msg2, msg3;
781- int dam = damroll(3, 8);
996+ int dam;
997+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_1), m_idx, DAM_ROLL);
782998
783999 msg1 = _("%^sが何かをつぶやいた。", "%^s mumbles.");
7841000 msg2 = _("%^sがあなたを指さして呪った。", "%^s points at you and curses.");
@@ -788,10 +1004,20 @@ int spell_RF5_CAUSE_1(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
7881004 return dam;
7891005 }
7901006
1007+/*!
1008+* @brief RF5_CAUSE_2の処理。重傷の呪い。 /
1009+* @param y 対象の地点のy座標
1010+* @param x 対象の地点のx座標
1011+* @param m_idx 呪文を唱えるモンスターID
1012+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1013+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1014+* @return ダメージ量を返す。
1015+*/
7911016 int spell_RF5_CAUSE_2(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
7921017 {
7931018 cptr msg1, msg2, msg3;
794- int dam = damroll(8, 8);
1019+ int dam;
1020+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_2), m_idx, DAM_ROLL);
7951021
7961022 msg1 = _("%^sが何かをつぶやいた。", "%^s mumbles.");
7971023 msg2 = _("%^sがあなたを指さして恐ろしげに呪った。", "%^s points at you and curses horribly.");
@@ -801,10 +1027,20 @@ int spell_RF5_CAUSE_2(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8011027 return dam;
8021028 }
8031029
1030+/*!
1031+* @brief RF5_CAUSE_3の処理。致命傷の呪い。 /
1032+* @param y 対象の地点のy座標
1033+* @param x 対象の地点のx座標
1034+* @param m_idx 呪文を唱えるモンスターID
1035+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1036+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1037+* @return ダメージ量を返す。
1038+*/
8041039 int spell_RF5_CAUSE_3(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8051040 {
8061041 cptr msg1, msg2, msg3;
807- int dam = damroll(10, 15);
1042+ int dam;
1043+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_3), m_idx, DAM_ROLL);
8081044
8091045 msg1 = _("%^sが何かを大声で叫んだ。", "%^s mumbles loudly.");
8101046 msg2 = _("%^sがあなたを指さして恐ろしげに呪文を唱えた!", "%^s points at you, incanting terribly!");
@@ -814,10 +1050,20 @@ int spell_RF5_CAUSE_3(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8141050 return dam;
8151051 }
8161052
1053+/*!
1054+* @brief RF5_CAUSE_4の処理。秘孔を突く。 /
1055+* @param y 対象の地点のy座標
1056+* @param x 対象の地点のx座標
1057+* @param m_idx 呪文を唱えるモンスターID
1058+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1059+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1060+* @return ダメージ量を返す。
1061+*/
8171062 int spell_RF5_CAUSE_4(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8181063 {
8191064 cptr msg1, msg2, msg3;
820- int dam = damroll(15, 15);
1065+ int dam;
1066+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_4), m_idx, DAM_ROLL);
8211067
8221068 msg1 = _("%^sが「お前は既に死んでいる」と叫んだ。", "%^s screams the word 'DIE!'");
8231069 msg2 = _("%^sがあなたの秘孔を突いて「お前は既に死んでいる」と叫んだ。", "%^s points at you, screaming the word DIE!");
@@ -827,10 +1073,18 @@ int spell_RF5_CAUSE_4(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8271073 return dam;
8281074 }
8291075
1076+/*!
1077+* @brief RF5_BO_ACIDの処理。アシッド・ボルト。 /
1078+* @param y 対象の地点のy座標
1079+* @param x 対象の地点のx座標
1080+* @param m_idx 呪文を唱えるモンスターID
1081+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1082+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1083+* @return ダメージ量を返す。
1084+*/
8301085 int spell_RF5_BO_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8311086 {
8321087 int dam;
833- int rlev = monster_level_idx(m_idx);
8341088
8351089 monspell_message(m_idx, t_idx,
8361090 _("%^sが何かをつぶやいた。", "%^s mumbles."),
@@ -838,7 +1092,7 @@ int spell_RF5_BO_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8381092 _("%sが%sに向かってアシッド・ボルトの呪文を唱えた。", "%^s casts an acid bolt at %s."),
8391093 TARGET_TYPE);
8401094
841- dam = (damroll(7, 8) + (rlev / 3)) * (monster_is_powerful(m_idx) ? 2 : 1);
1095+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_ACID), m_idx, DAM_ROLL);
8421096 bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, TARGET_TYPE);
8431097 if (TARGET_TYPE == MONSTER_TO_PLAYER)
8441098 {
@@ -848,10 +1102,18 @@ int spell_RF5_BO_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8481102 return dam;
8491103 }
8501104
1105+/*!
1106+* @brief RF5_BO_ELECの処理。サンダー・ボルト。 /
1107+* @param y 対象の地点のy座標
1108+* @param x 対象の地点のx座標
1109+* @param m_idx 呪文を唱えるモンスターID
1110+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1111+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1112+* @return ダメージ量を返す。
1113+*/
8511114 int spell_RF5_BO_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8521115 {
8531116 int dam;
854- int rlev = monster_level_idx(m_idx);
8551117
8561118 monspell_message(m_idx, t_idx,
8571119 _("%^sが何かをつぶやいた。", "%^s mumbles."),
@@ -859,7 +1121,7 @@ int spell_RF5_BO_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8591121 _("%^sが%sに向かってサンダー・ボルトの呪文を唱えた。", "%^s casts a lightning bolt at %s."),
8601122 TARGET_TYPE);
8611123
862- dam = (damroll(4, 8) + (rlev / 3)) * (monster_is_powerful(m_idx) ? 2 : 1);
1124+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_ELEC), m_idx, DAM_ROLL);
8631125 bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, TARGET_TYPE);
8641126 if (TARGET_TYPE == MONSTER_TO_PLAYER)
8651127 {
@@ -869,10 +1131,18 @@ int spell_RF5_BO_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8691131 return dam;
8701132 }
8711133
1134+/*!
1135+* @brief RF5_BO_FIREの処理。ファイア・ボルト。 /
1136+* @param y 対象の地点のy座標
1137+* @param x 対象の地点のx座標
1138+* @param m_idx 呪文を唱えるモンスターID
1139+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1140+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1141+* @return ダメージ量を返す。
1142+*/
8721143 int spell_RF5_BO_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8731144 {
8741145 int dam;
875- int rlev = monster_level_idx(m_idx);
8761146
8771147 monspell_message(m_idx, t_idx,
8781148 _("%^sが何かをつぶやいた。", "%^s mumbles."),
@@ -880,7 +1150,7 @@ int spell_RF5_BO_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8801150 _("%^sが%sに向かってファイア・ボルトの呪文を唱えた。", "%^s casts a fire bolt at %s."),
8811151 TARGET_TYPE);
8821152
883- dam = (damroll(9, 8) + (rlev / 3)) * (monster_is_powerful(m_idx) ? 2 : 1);
1153+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_FIRE), m_idx, DAM_ROLL);
8841154 bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, TARGET_TYPE);
8851155 if (TARGET_TYPE == MONSTER_TO_PLAYER)
8861156 {
@@ -890,10 +1160,18 @@ int spell_RF5_BO_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8901160 return dam;
8911161 }
8921162
1163+/*!
1164+* @brief RF5_BO_COLDの処理。アイス・ボルト。 /
1165+* @param y 対象の地点のy座標
1166+* @param x 対象の地点のx座標
1167+* @param m_idx 呪文を唱えるモンスターID
1168+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1169+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1170+* @return ダメージ量を返す。
1171+*/
8931172 int spell_RF5_BO_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
8941173 {
8951174 int dam;
896- int rlev = monster_level_idx(m_idx);
8971175
8981176 monspell_message(m_idx, t_idx,
8991177 _("%^sが何かをつぶやいた。", "%^s mumbles."),
@@ -901,7 +1179,7 @@ int spell_RF5_BO_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9011179 _("%^sが%sに向かってアイス・ボルトの呪文を唱えた。", "%^s casts a frost bolt at %s."),
9021180 TARGET_TYPE);
9031181
904- dam = (damroll(6, 8) + (rlev / 3)) * (monster_is_powerful(m_idx) ? 2 : 1);
1182+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_COLD), m_idx, DAM_ROLL);
9051183 bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, TARGET_TYPE);
9061184 if (TARGET_TYPE == MONSTER_TO_PLAYER)
9071185 {
@@ -911,10 +1189,18 @@ int spell_RF5_BO_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9111189 return dam;
9121190 }
9131191
1192+/*!
1193+* @brief RF5_BA_LITEの処理。スターバースト。 /
1194+* @param y 対象の地点のy座標
1195+* @param x 対象の地点のx座標
1196+* @param m_idx 呪文を唱えるモンスターID
1197+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1198+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1199+* @return ダメージ量を返す。
1200+*/
9141201 int spell_RF5_BA_LITE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9151202 {
9161203 int dam;
917- int rlev = monster_level_idx(m_idx);
9181204
9191205 monspell_message(m_idx, t_idx,
9201206 _("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."),
@@ -922,7 +1208,7 @@ int spell_RF5_BA_LITE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9221208 _("%^sが%sに対してスターバーストの呪文を念じた。", "%^s invokes a starburst upon %s."),
9231209 TARGET_TYPE);
9241210
925- dam = (rlev * 4) + 50 + damroll(10, 10);
1211+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_LITE), m_idx, DAM_ROLL);
9261212 breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, TARGET_TYPE);
9271213 if (TARGET_TYPE == MONSTER_TO_PLAYER)
9281214 update_smart_learn(m_idx, DRS_LITE);
@@ -930,11 +1216,18 @@ int spell_RF5_BA_LITE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9301216 return dam;
9311217 }
9321218
933-
1219+/*!
1220+* @brief RF5_BO_NETHの処理。地獄の矢。 /
1221+* @param y 対象の地点のy座標
1222+* @param x 対象の地点のx座標
1223+* @param m_idx 呪文を唱えるモンスターID
1224+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1225+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1226+* @return ダメージ量を返す。
1227+*/
9341228 int spell_RF5_BO_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9351229 {
9361230 int dam;
937- int rlev = monster_level_idx(m_idx);
9381231
9391232 monspell_message(m_idx, t_idx,
9401233 _("%^sが何かをつぶやいた。", "%^s mumbles."),
@@ -942,7 +1235,7 @@ int spell_RF5_BO_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9421235 _("%^sが%sに向かって地獄の矢の呪文を唱えた。", "%^s casts a nether bolt at %s."),
9431236 TARGET_TYPE);
9441237
945- dam = 30 + damroll(5, 5) + (rlev * 4) / (monster_is_powerful(m_idx) ? 2 : 3);
1238+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_NETH), m_idx, DAM_ROLL);
9461239 bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, TARGET_TYPE);
9471240 if (TARGET_TYPE == MONSTER_TO_PLAYER)
9481241 {
@@ -952,6 +1245,15 @@ int spell_RF5_BO_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9521245 return dam;
9531246 }
9541247
1248+/*!
1249+* @brief RF5_BO_WATEの処理。ウォーター・ボルト。 /
1250+* @param y 対象の地点のy座標
1251+* @param x 対象の地点のx座標
1252+* @param m_idx 呪文を唱えるモンスターID
1253+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1254+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1255+* @return ダメージ量を返す。
1256+*/
9551257 int spell_RF5_BO_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9561258 {
9571259 int dam;
@@ -963,7 +1265,7 @@ int spell_RF5_BO_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9631265 _("%^sが%sに向かってウォーター・ボルトの呪文を唱えた。", "%^s casts a water bolt at %s."),
9641266 TARGET_TYPE);
9651267
966- dam = damroll(10, 10) + (rlev * 3 / (monster_is_powerful(m_idx) ? 2 : 3));
1268+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_WATE), m_idx, DAM_ROLL);
9671269 bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, TARGET_TYPE);
9681270 if (TARGET_TYPE == MONSTER_TO_PLAYER)
9691271 {
@@ -972,6 +1274,15 @@ int spell_RF5_BO_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9721274 return dam;
9731275 }
9741276
1277+/*!
1278+* @brief RF5_BO_MANAの処理。魔力の矢。 /
1279+* @param y 対象の地点のy座標
1280+* @param x 対象の地点のx座標
1281+* @param m_idx 呪文を唱えるモンスターID
1282+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1283+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1284+* @return ダメージ量を返す。
1285+*/
9751286 int spell_RF5_BO_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9761287 {
9771288 int dam;
@@ -983,7 +1294,7 @@ int spell_RF5_BO_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9831294 _("%^sが%sに向かって魔力の矢の呪文を唱えた。", "%^s casts a mana bolt at %s."),
9841295 TARGET_TYPE);
9851296
986- dam = randint1(rlev * 7 / 2) + 50;
1297+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_MANA), m_idx, DAM_ROLL);
9871298 bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, TARGET_TYPE);
9881299 if (TARGET_TYPE == MONSTER_TO_PLAYER)
9891300 {
@@ -992,6 +1303,15 @@ int spell_RF5_BO_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9921303 return dam;
9931304 }
9941305
1306+/*!
1307+* @brief RF5_BO_PLASの処理。プラズマ・ボルト。 /
1308+* @param y 対象の地点のy座標
1309+* @param x 対象の地点のx座標
1310+* @param m_idx 呪文を唱えるモンスターID
1311+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1312+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1313+* @return ダメージ量を返す。
1314+*/
9951315 int spell_RF5_BO_PLAS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
9961316 {
9971317 int dam;
@@ -1003,7 +1323,7 @@ int spell_RF5_BO_PLAS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
10031323 _("%^sが%sに向かってプラズマ・ボルトの呪文を唱えた。", "%^s casts a plasma bolt at %s."),
10041324 TARGET_TYPE);
10051325
1006- dam = 10 + damroll(8, 7) + (rlev * 3 / (monster_is_powerful(m_idx) ? 2 : 3));
1326+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_PLAS), m_idx, DAM_ROLL);
10071327 bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, TARGET_TYPE);
10081328 if (TARGET_TYPE == MONSTER_TO_PLAYER)
10091329 {
@@ -1012,6 +1332,15 @@ int spell_RF5_BO_PLAS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
10121332 return dam;
10131333 }
10141334
1335+/*!
1336+* @brief RF5_BO_ICEEの処理。極寒の矢。 /
1337+* @param y 対象の地点のy座標
1338+* @param x 対象の地点のx座標
1339+* @param m_idx 呪文を唱えるモンスターID
1340+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1341+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1342+* @return ダメージ量を返す。
1343+*/
10151344 int spell_RF5_BO_ICEE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
10161345 {
10171346 int dam;
@@ -1023,7 +1352,7 @@ int spell_RF5_BO_ICEE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
10231352 _("%^sが%sに向かって極寒の矢の呪文を唱えた。", "%^s casts an ice bolt at %s."),
10241353 TARGET_TYPE);
10251354
1026- dam = damroll(6, 6) + (rlev * 3 / (monster_is_powerful(m_idx) ? 2 : 3));
1355+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_ICEE), m_idx, DAM_ROLL);
10271356 bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, TARGET_TYPE);
10281357 if (TARGET_TYPE == MONSTER_TO_PLAYER)
10291358 {
@@ -1033,6 +1362,15 @@ int spell_RF5_BO_ICEE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
10331362 return dam;
10341363 }
10351364
1365+/*!
1366+* @brief RF5_MISSILEの処理。マジック・ミサイル。 /
1367+* @param y 対象の地点のy座標
1368+* @param x 対象の地点のx座標
1369+* @param m_idx 呪文を唱えるモンスターID
1370+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1371+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1372+* @return ダメージ量を返す。
1373+*/
10361374 int spell_RF5_MISSILE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
10371375 {
10381376 int dam;
@@ -1044,7 +1382,7 @@ int spell_RF5_MISSILE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
10441382 _("%^sが%sに向かってマジック・ミサイルの呪文を唱えた。", "%^s casts a magic missile at %s."),
10451383 TARGET_TYPE);
10461384
1047- dam = damroll(2, 6) + (rlev / 3);
1385+ dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_MISSILE), m_idx, DAM_ROLL);
10481386 bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, TARGET_TYPE);
10491387 if (TARGET_TYPE == MONSTER_TO_PLAYER)
10501388 {
@@ -1053,6 +1391,18 @@ int spell_RF5_MISSILE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
10531391 return dam;
10541392 }
10551393
1394+/*!
1395+* @brief 状態異常呪文のメッセージ処理関数。 /
1396+* @param m_idx 呪文を唱えるモンスターID
1397+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1398+* @param msg1 対プレイヤーなら盲目時メッセージ。対モンスターなら通常時メッセージ。
1399+* @param msg2 対プレイヤーなら非盲目時メッセージ。対モンスターなら耐性有メッセージ。
1400+* @param msg3 対プレイヤーなら耐性有メッセージ。対モンスターなら抵抗時メッセージ。
1401+* @param msg4 対プレイヤーなら抵抗時メッセージ。対モンスターなら成功時メッセージ。
1402+* @param resist 耐性の有無を判別するフラグ
1403+* @param saving_throw 抵抗に成功したか判別するフラグ
1404+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1405+*/
10561406 void spell_badstatus_message(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, cptr msg4, bool resist, bool saving_throw, int TARGET_TYPE)
10571407 {
10581408 bool see_either = see_monster(m_idx) || see_monster(t_idx);
@@ -1109,6 +1459,14 @@ void spell_badstatus_message(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr ms
11091459 }
11101460 }
11111461
1462+/*!
1463+* @brief RF5_SCAREの処理。恐怖。 /
1464+* @param y 対象の地点のy座標
1465+* @param x 対象の地点のx座標
1466+* @param m_idx 呪文を唱えるモンスターID
1467+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1468+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1469+*/
11121470 void spell_RF5_SCARE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
11131471 {
11141472 monster_type *t_ptr = &m_list[t_idx];
@@ -1153,6 +1511,14 @@ void spell_RF5_SCARE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
11531511 }
11541512 }
11551513
1514+/*!
1515+* @brief RF5_BLINDの処理。盲目。 /
1516+* @param y 対象の地点のy座標
1517+* @param x 対象の地点のx座標
1518+* @param m_idx 呪文を唱えるモンスターID
1519+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1520+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1521+*/
11561522 void spell_RF5_BLIND(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
11571523 {
11581524 monster_type *t_ptr = &m_list[t_idx];
@@ -1210,6 +1576,14 @@ void spell_RF5_BLIND(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
12101576 }
12111577 }
12121578
1579+/*!
1580+* @brief RF5_CONFの処理。混乱。 /
1581+* @param y 対象の地点のy座標
1582+* @param x 対象の地点のx座標
1583+* @param m_idx 呪文を唱えるモンスターID
1584+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1585+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1586+*/
12131587 void spell_RF5_CONF(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
12141588 {
12151589 monster_type *t_ptr = &m_list[t_idx];
@@ -1254,7 +1628,14 @@ void spell_RF5_CONF(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
12541628 }
12551629 }
12561630
1257-
1631+/*!
1632+* @brief RF5_SLOWの処理。減速。 /
1633+* @param y 対象の地点のy座標
1634+* @param x 対象の地点のx座標
1635+* @param m_idx 呪文を唱えるモンスターID
1636+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1637+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1638+*/
12581639 void spell_RF5_SLOW(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
12591640 {
12601641 monster_type *t_ptr = &m_list[t_idx];
@@ -1312,6 +1693,14 @@ void spell_RF5_SLOW(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
13121693 }
13131694 }
13141695
1696+/*!
1697+* @brief RF5_HOLDの処理。麻痺。 /
1698+* @param y 対象の地点のy座標
1699+* @param x 対象の地点のx座標
1700+* @param m_idx 呪文を唱えるモンスターID
1701+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1702+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1703+*/
13151704 void spell_RF5_HOLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
13161705 {
13171706 monster_type *t_ptr = &m_list[t_idx];
@@ -1356,6 +1745,12 @@ void spell_RF5_HOLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
13561745 }
13571746 }
13581747
1748+/*!
1749+* @brief RF6_HASTEの処理。加速。 /
1750+* @param m_idx 呪文を唱えるモンスターID
1751+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1752+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1753+*/
13591754 void spell_RF6_HASTE(int m_idx, int t_idx, int TARGET_TYPE)
13601755 {
13611756 bool see_m = see_monster(m_idx);
@@ -1379,6 +1774,15 @@ void spell_RF6_HASTE(int m_idx, int t_idx, int TARGET_TYPE)
13791774 }
13801775 }
13811776
1777+/*!
1778+* @brief RF6_HAND_DOOMの処理。破滅の手。 /
1779+* @param y 対象の地点のy座標
1780+* @param x 対象の地点のx座標
1781+* @param m_idx 呪文を唱えるモンスターID
1782+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1783+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1784+* @return ダメージ量を返す。
1785+*/
13821786 int spell_RF6_HAND_DOOM(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
13831787 {
13841788 int dam;
@@ -1390,7 +1794,7 @@ int spell_RF6_HAND_DOOM(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
13901794
13911795 if (TARGET_TYPE == MONSTER_TO_PLAYER)
13921796 {
1393- dam = (((s32b)((40 + randint1(20)) * (p_ptr->chp))) / 100);
1797+ dam = monspell_damage(monspell_num(RF6_SPELL_START, RF6_HAND_DOOM), m_idx, DAM_ROLL);
13941798 breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_PLAYER);
13951799 }
13961800 else if (TARGET_TYPE == MONSTER_TO_MONSTER)
@@ -1401,6 +1805,12 @@ int spell_RF6_HAND_DOOM(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
14011805 return dam;
14021806 }
14031807
1808+/*!
1809+* @brief RF6_HEALの処理。治癒。 /
1810+* @param m_idx 呪文を唱えるモンスターID
1811+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1812+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1813+*/
14041814 void spell_RF6_HEAL(int m_idx, int t_idx, int TARGET_TYPE)
14051815 {
14061816 monster_type *m_ptr = &m_list[m_idx];
@@ -1464,6 +1874,13 @@ void spell_RF6_HEAL(int m_idx, int t_idx, int TARGET_TYPE)
14641874 msg_format(_("%^sは勇気を取り戻した。", "%^s recovers %s courage."), m_name);
14651875 }
14661876 }
1877+
1878+/*!
1879+* @brief RF6_INVULNERの処理。無敵。 /
1880+* @param m_idx 呪文を唱えるモンスターID
1881+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
1882+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1883+*/
14671884 void spell_RF6_INVULNER(int m_idx, int t_idx, int TARGET_TYPE)
14681885 {
14691886 monster_type *m_ptr = &m_list[m_idx];
@@ -1480,6 +1897,11 @@ void spell_RF6_INVULNER(int m_idx, int t_idx, int TARGET_TYPE)
14801897 if (!MON_INVULNER(m_ptr)) (void)set_monster_invulner(m_idx, randint1(4) + 4, FALSE);
14811898 }
14821899
1900+/*!
1901+* @brief RF6_BLINKの処理。ショート・テレポート。 /
1902+* @param m_idx 呪文を唱えるモンスターID
1903+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1904+*/
14831905 void spell_RF6_BLINK(int m_idx, int TARGET_TYPE)
14841906 {
14851907 char m_name[80];
@@ -1506,6 +1928,11 @@ void spell_RF6_BLINK(int m_idx, int TARGET_TYPE)
15061928 }
15071929 }
15081930
1931+/*!
1932+* @brief RF6_TPORTの処理。テレポート。 /
1933+* @param m_idx 呪文を唱えるモンスターID
1934+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
1935+*/
15091936 void spell_RF6_TPORT(int m_idx, int TARGET_TYPE)
15101937 {
15111938 char m_name[80];
@@ -1528,6 +1955,10 @@ void spell_RF6_TPORT(int m_idx, int TARGET_TYPE)
15281955 }
15291956 }
15301957
1958+/*!
1959+* @brief RF6_WORLDの処理。時を止める。 /
1960+* @param m_idx 呪文を唱えるモンスターID
1961+*/
15311962 int spell_RF6_WORLD(int m_idx)
15321963 {
15331964 monster_type *m_ptr = &m_list[m_idx];
@@ -1542,12 +1973,17 @@ int spell_RF6_WORLD(int m_idx)
15421973 return who;
15431974 }
15441975
1545-int spell_RF6_SPECIAL_BANORLUPART(int m_idx, int mode)
1976+/*!
1977+* @brief バーノール・ルパートのRF6_SPECIALの処理。分裂・合体。 /
1978+* @param m_idx 呪文を唱えるモンスターID
1979+*/
1980+int spell_RF6_SPECIAL_BANORLUPART(int m_idx)
15461981 {
15471982 monster_type *m_ptr = &m_list[m_idx];
15481983 int dummy_hp, dummy_maxhp, k;
15491984 int dummy_y = m_ptr->fy;
1550- int dummy_x = m_ptr->fx;
1985+ int dummy_x = m_ptr->fx;
1986+ u32b mode = 0L;
15511987
15521988 switch(m_ptr->r_idx)
15531989 {
@@ -1601,11 +2037,20 @@ int spell_RF6_SPECIAL_BANORLUPART(int m_idx, int mode)
16012037 return 0;
16022038 }
16032039
1604-
1605-int spell_RF6_SPECIAL_ROLENTO(int y, int x, int m_idx, int t_idx, int mode, int TARGET_TYPE)
2040+/*!
2041+* @brief ロレントのRF6_SPECIALの処理。手榴弾の召喚。 /
2042+* @param y 対象の地点のy座標
2043+* @param x 対象の地点のx座標
2044+* @param m_idx 呪文を唱えるモンスターID
2045+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
2046+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2047+* @return ダメージ量を返す。
2048+*/
2049+int spell_RF6_SPECIAL_ROLENTO(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
16062050 {
16072051 int count = 0, k;
1608- int num = 1 + randint1(3);
2052+ int num = 1 + randint1(3);
2053+ u32b mode = 0L;
16092054
16102055 monspell_message(m_idx, t_idx,
16112056 _("%^sが何か大量に投げた。", "%^s spreads something."),
@@ -1624,6 +2069,15 @@ int spell_RF6_SPECIAL_ROLENTO(int y, int x, int m_idx, int t_idx, int mode, int
16242069 return 0;
16252070 }
16262071
2072+/*!
2073+* @brief BシンボルのRF6_SPECIALの処理。投げ落とす攻撃。 /
2074+* @param y 対象の地点のy座標
2075+* @param x 対象の地点のx座標
2076+* @param m_idx 呪文を唱えるモンスターID
2077+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
2078+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2079+* @return ダメージ量を返す。
2080+*/
16272081 int spell_RF6_SPECIAL_B(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
16282082 {
16292083 int dam;
@@ -1712,6 +2166,15 @@ int spell_RF6_SPECIAL_B(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
17122166 return dam;
17132167 }
17142168
2169+/*!
2170+* @brief RF6_SPECIALの処理。モンスターの種類によって実処理に振り分ける。 /
2171+* @param y 対象の地点のy座標
2172+* @param x 対象の地点のx座標
2173+* @param m_idx 呪文を唱えるモンスターID
2174+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
2175+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2176+* @return ダメージ量を返す。
2177+*/
17152178 int spell_RF6_SPECIAL(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
17162179 {
17172180 monster_type *m_ptr = &m_list[m_idx];
@@ -1729,10 +2192,10 @@ int spell_RF6_SPECIAL(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
17292192 case MON_BANORLUPART:
17302193 case MON_BANOR:
17312194 case MON_LUPART:
1732- return spell_RF6_SPECIAL_BANORLUPART(m_idx, mode);
2195+ return spell_RF6_SPECIAL_BANORLUPART(m_idx);
17332196
17342197 case MON_ROLENTO:
1735- return spell_RF6_SPECIAL_ROLENTO(y, x, m_idx, t_idx, mode, TARGET_TYPE);
2198+ return spell_RF6_SPECIAL_ROLENTO(y, x, m_idx, t_idx, TARGET_TYPE);
17362199 break;
17372200
17382201 default:
@@ -1747,6 +2210,13 @@ int spell_RF6_SPECIAL(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
17472210 }
17482211 }
17492212
2213+/*!
2214+* @brief RF6_TELE_TOの処理。テレポート・バック。 /
2215+* @param m_idx 呪文を唱えるモンスターID
2216+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
2217+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2218+* @return ダメージ量を返す。
2219+*/
17502220 void spell_RF6_TELE_TO(int m_idx, int t_idx, int TARGET_TYPE)
17512221 {
17522222 monster_type *m_ptr = &m_list[m_idx];
@@ -1802,6 +2272,13 @@ void spell_RF6_TELE_TO(int m_idx, int t_idx, int TARGET_TYPE)
18022272 }
18032273 }
18042274
2275+/*!
2276+* @brief RF6_TELE_AWAYの処理。テレポート・アウェイ。 /
2277+* @param m_idx 呪文を唱えるモンスターID
2278+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
2279+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2280+* @return ダメージ量を返す。
2281+*/
18052282 void spell_RF6_TELE_AWAY(int m_idx, int t_idx, int TARGET_TYPE)
18062283 {
18072284 monster_type *m_ptr = &m_list[m_idx];
@@ -1860,6 +2337,13 @@ void spell_RF6_TELE_AWAY(int m_idx, int t_idx, int TARGET_TYPE)
18602337 }
18612338 }
18622339
2340+/*!
2341+* @brief RF6_TELE_LEVELの処理。テレポート・レベル。 /
2342+* @param m_idx 呪文を唱えるモンスターID
2343+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
2344+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2345+* @return ダメージ量を返す。
2346+*/
18632347 void spell_RF6_TELE_LEVEL(int m_idx, int t_idx, int TARGET_TYPE)
18642348 {
18652349 monster_type *t_ptr = &m_list[t_idx];
@@ -1905,6 +2389,15 @@ void spell_RF6_TELE_LEVEL(int m_idx, int t_idx, int TARGET_TYPE)
19052389 }
19062390 }
19072391
2392+/*!
2393+* @brief RF6_PSY_SPEARの処理。光の剣。 /
2394+* @param y 対象の地点のy座標
2395+* @param x 対象の地点のx座標
2396+* @param m_idx 呪文を唱えるモンスターID
2397+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
2398+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2399+* @return ダメージ量を返す。
2400+*/
19082401 int spell_RF6_PSY_SPEAR(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
19092402 {
19102403 int dam;
@@ -1915,12 +2408,20 @@ int spell_RF6_PSY_SPEAR(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
19152408 _("%^sが光の剣を放った。", "%^s throw a Psycho-Spear."),
19162409 _("%^sが%sに向かって光の剣を放った。", "%^s throw a Psycho-spear at %s."),
19172410 TARGET_TYPE);
1918-
1919- dam = monster_is_powerful(m_idx) ? (randint1(rlev * 2) + 150) : (randint1(rlev * 3 / 2) + 100);
2411+
2412+ dam = monspell_damage(monspell_num(RF6_SPELL_START, RF6_PSY_SPEAR), m_idx, DAM_ROLL);
19202413 beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, MONSTER_TO_PLAYER);
19212414 return dam;
19222415 }
19232416
2417+/*!
2418+* @brief RF6_DARKNESSの処理。暗闇or閃光。 /
2419+* @param y 対象の地点のy座標
2420+* @param x 対象の地点のx座標
2421+* @param m_idx 呪文を唱えるモンスターID
2422+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
2423+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2424+*/
19242425 void spell_RF6_DARKNESS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
19252426 {
19262427 monster_type *m_ptr = &m_list[m_idx];
@@ -1995,6 +2496,12 @@ void spell_RF6_DARKNESS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
19952496 }
19962497 }
19972498
2499+/*!
2500+* @brief RF6_TRAPSの処理。トラップ。 /
2501+* @param y 対象の地点のy座標
2502+* @param x 対象の地点のx座標
2503+* @param m_idx 呪文を唱えるモンスターID
2504+*/
19982505 void spell_RF6_TRAPS(int y, int x, int m_idx)
19992506 {
20002507 char m_name[80];
@@ -2012,6 +2519,10 @@ void spell_RF6_TRAPS(int y, int x, int m_idx)
20122519 (void)trap_creation(y, x);
20132520 }
20142521
2522+/*!
2523+* @brief RF6_FORGETの処理。記憶消去。 /
2524+* @param m_idx 呪文を唱えるモンスターID
2525+*/
20152526 void spell_RF6_FORGET(int m_idx)
20162527 {
20172528 int rlev = monster_level_idx(m_idx);
@@ -2034,6 +2545,13 @@ void spell_RF6_FORGET(int m_idx)
20342545 learn_spell(MS_FORGET);
20352546 }
20362547
2548+
2549+/*!
2550+* @brief RF6_RAISE_DEADの処理。死者復活。 /
2551+* @param m_idx 呪文を唱えるモンスターID
2552+* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
2553+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2554+*/
20372555 void spell_RF6_RAISE_DEAD(int m_idx, int t_idx, int TARGET_TYPE)
20382556 {
20392557 monster_type *m_ptr = &m_list[m_idx];
@@ -2047,6 +2565,15 @@ void spell_RF6_RAISE_DEAD(int m_idx, int t_idx, int TARGET_TYPE)
20472565 animate_dead(m_idx, m_ptr->fy, m_ptr->fx);
20482566 }
20492567
2568+
2569+/*!
2570+* @brief 鷹召喚の処理。 /
2571+* @param y 対象の地点のy座標
2572+* @param x 対象の地点のx座標
2573+* @param rlev 呪文を唱えるモンスターのレベル
2574+* @param m_idx 呪文を唱えるモンスターID
2575+* @return 召喚したモンスターの数を返す。
2576+*/
20502577 int summon_EAGLE(int y, int x, int rlev, int m_idx)
20512578 {
20522579 int k, count = 0;
@@ -2058,8 +2585,17 @@ int summon_EAGLE(int y, int x, int rlev, int m_idx)
20582585 return count;
20592586 }
20602587
2061-int summon_IE(int y, int x, int rlev, int m_idx, int mode)
2588+/*!
2589+* @brief インターネット・エクスプローダー召喚の処理。 /
2590+* @param y 対象の地点のy座標
2591+* @param x 対象の地点のx座標
2592+* @param rlev 呪文を唱えるモンスターのレベル
2593+* @param m_idx 呪文を唱えるモンスターID
2594+* @return 召喚したモンスターの数を返す。
2595+*/
2596+int summon_IE(int y, int x, int rlev, int m_idx)
20622597 {
2598+ u32b mode = 0L;
20632599 int k, count = 0;
20642600 int num = 2 + randint1(3);
20652601 for (k = 0; k < num; k++)
@@ -2069,6 +2605,16 @@ int summon_IE(int y, int x, int rlev, int m_idx, int mode)
20692605 return count;
20702606 }
20712607
2608+/*!
2609+* @brief ダンジョン・ガーディアン召喚の処理。 /
2610+* @param y 対象の地点のy座標
2611+* @param x 対象の地点のx座標
2612+* @param rlev 呪文を唱えるモンスターのレベル
2613+* @param m_idx 呪文を唱えるモンスターID
2614+* @param m_idx 呪文を受けるモンスターID
2615+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2616+* @return 召喚したモンスターの数を返す。
2617+*/
20722618 int summon_Guardian(int y, int x, int rlev, int m_idx, int t_idx, int TARGET_TYPE)
20732619 {
20742620 int k, count = 0;
@@ -2096,9 +2642,18 @@ int summon_Guardian(int y, int x, int rlev, int m_idx, int t_idx, int TARGET_TYP
20962642 return count;
20972643 }
20982644
2099-int summon_LOCK_CLONE(int y, int x, int rlev, int m_idx, int mode)
2645+/*!
2646+* @brief ロックのクローン召喚の処理。 /
2647+* @param y 対象の地点のy座標
2648+* @param x 対象の地点のx座標
2649+* @param rlev 呪文を唱えるモンスターのレベル
2650+* @param m_idx 呪文を唱えるモンスターID
2651+* @return 召喚したモンスターの数を返す。
2652+*/
2653+int summon_LOCK_CLONE(int y, int x, int rlev, int m_idx)
21002654 {
2101- int k, count = 0;
2655+ u32b mode = 0L;
2656+ int k, count = 0;
21022657 int num = randint1(3);
21032658 for (k = 0; k < num; k++)
21042659 {
@@ -2107,6 +2662,14 @@ int summon_LOCK_CLONE(int y, int x, int rlev, int m_idx, int mode)
21072662 return count;
21082663 }
21092664
2665+/*!
2666+* @brief シラミ召喚の処理。 /
2667+* @param y 対象の地点のy座標
2668+* @param x 対象の地点のx座標
2669+* @param rlev 呪文を唱えるモンスターのレベル
2670+* @param m_idx 呪文を唱えるモンスターID
2671+* @return 召喚したモンスターの数を返す。
2672+*/
21102673 int summon_LOUSE(int y, int x, int rlev, int m_idx)
21112674 {
21122675 int k, count = 0;
@@ -2118,6 +2681,14 @@ int summon_LOUSE(int y, int x, int rlev, int m_idx)
21182681 return count;
21192682 }
21202683
2684+/*!
2685+* @brief 救援召喚の通常処理。同シンボルのモンスターを召喚する。 /
2686+* @param y 対象の地点のy座標
2687+* @param x 対象の地点のx座標
2688+* @param rlev 呪文を唱えるモンスターのレベル
2689+* @param m_idx 呪文を唱えるモンスターID
2690+* @return 召喚したモンスターの数を返す。
2691+*/
21212692 int summon_Kin(int y, int x, int rlev, int m_idx)
21222693 {
21232694 int k, count = 0;
@@ -2132,6 +2703,15 @@ int summon_Kin(int y, int x, int rlev, int m_idx)
21322703 return count;
21332704 }
21342705
2706+/*!
2707+* @brief RF6_S_KINの処理。救援召喚。使用するモンスターの種類により、実処理に分岐させる。 /
2708+* @param y 対象の地点のy座標
2709+* @param x 対象の地点のx座標
2710+* @param m_idx 呪文を唱えるモンスターID
2711+* @param m_idx 呪文を受けるモンスターID
2712+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2713+* @return 召喚したモンスターの数を返す。
2714+*/
21352715 void spell_RF6_S_KIN(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
21362716 {
21372717 bool known = monster_near_player(m_idx, t_idx);
@@ -2189,7 +2769,7 @@ void spell_RF6_S_KIN(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
21892769 break;
21902770
21912771 case MON_BULLGATES:
2192- count += summon_IE(y, x, rlev, m_idx, mode);
2772+ count += summon_IE(y, x, rlev, m_idx);
21932773 break;
21942774
21952775 case MON_SERPENT:
@@ -2198,7 +2778,7 @@ void spell_RF6_S_KIN(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
21982778 break;
21992779
22002780 case MON_CALDARM:
2201- count += summon_LOCK_CLONE(y, x, rlev, m_idx, mode);
2781+ count += summon_LOCK_CLONE(y, x, rlev, m_idx);
22022782 break;
22032783
22042784 case MON_LOUSY:
@@ -2217,6 +2797,15 @@ void spell_RF6_S_KIN(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
22172797 mon_fight = TRUE;
22182798 }
22192799
2800+/*!
2801+* @brief RF6_S_CYBERの処理。サイバー・デーモン召喚。 /
2802+* @param y 対象の地点のy座標
2803+* @param x 対象の地点のx座標
2804+* @param m_idx 呪文を唱えるモンスターID
2805+* @param m_idx 呪文を受けるモンスターID
2806+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2807+* @return 召喚したモンスターの数を返す。
2808+*/
22202809 void spell_RF6_S_CYBER(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
22212810 {
22222811 int count = 0;
@@ -2247,7 +2836,15 @@ void spell_RF6_S_CYBER(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
22472836 mon_fight = TRUE;
22482837 }
22492838
2250-
2839+/*!
2840+* @brief RF6_S_MONSTERの処理。モンスター一体召喚。 /
2841+* @param y 対象の地点のy座標
2842+* @param x 対象の地点のx座標
2843+* @param m_idx 呪文を唱えるモンスターID
2844+* @param m_idx 呪文を受けるモンスターID
2845+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2846+* @return 召喚したモンスターの数を返す。
2847+*/
22512848 void spell_RF6_S_MONSTER(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
22522849 {
22532850 int count = 0, k;
@@ -2278,6 +2875,15 @@ void spell_RF6_S_MONSTER(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
22782875 mon_fight = TRUE;
22792876 }
22802877
2878+/*!
2879+* @brief RF6_S_MONSTERSの処理。モンスター複数召喚。 /
2880+* @param y 対象の地点のy座標
2881+* @param x 対象の地点のx座標
2882+* @param m_idx 呪文を唱えるモンスターID
2883+* @param m_idx 呪文を受けるモンスターID
2884+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2885+* @return 召喚したモンスターの数を返す。
2886+*/
22812887 void spell_RF6_S_MONSTERS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
22822888 {
22832889 int count = 0, k;
@@ -2308,6 +2914,15 @@ void spell_RF6_S_MONSTERS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
23082914 mon_fight = TRUE;
23092915 }
23102916
2917+/*!
2918+* @brief RF6_S_ANTの処理。アリ召喚。 /
2919+* @param y 対象の地点のy座標
2920+* @param x 対象の地点のx座標
2921+* @param m_idx 呪文を唱えるモンスターID
2922+* @param m_idx 呪文を受けるモンスターID
2923+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2924+* @return 召喚したモンスターの数を返す。
2925+*/
23112926 void spell_RF6_S_ANT(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
23122927 {
23132928 int count = 0, k;
@@ -2334,6 +2949,15 @@ void spell_RF6_S_ANT(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
23342949 mon_fight = TRUE;
23352950 }
23362951
2952+/*!
2953+* @brief RF6_S_SPIDERの処理。クモ召喚。 /
2954+* @param y 対象の地点のy座標
2955+* @param x 対象の地点のx座標
2956+* @param m_idx 呪文を唱えるモンスターID
2957+* @param m_idx 呪文を受けるモンスターID
2958+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2959+* @return 召喚したモンスターの数を返す。
2960+*/
23372961 void spell_RF6_S_SPIDER(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
23382962 {
23392963 int count = 0, k;
@@ -2360,6 +2984,15 @@ void spell_RF6_S_SPIDER(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
23602984 mon_fight = TRUE;
23612985 }
23622986
2987+/*!
2988+* @brief RF6_S_HOUNDの処理。ハウンド召喚。 /
2989+* @param y 対象の地点のy座標
2990+* @param x 対象の地点のx座標
2991+* @param m_idx 呪文を唱えるモンスターID
2992+* @param m_idx 呪文を受けるモンスターID
2993+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
2994+* @return 召喚したモンスターの数を返す。
2995+*/
23632996 void spell_RF6_S_HOUND(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
23642997 {
23652998 int count = 0, k;
@@ -2386,6 +3019,15 @@ void spell_RF6_S_HOUND(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
23863019 mon_fight = TRUE;
23873020 }
23883021
3022+/*!
3023+* @brief RF6_S_HYDRAの処理。ヒドラ召喚。 /
3024+* @param y 対象の地点のy座標
3025+* @param x 対象の地点のx座標
3026+* @param m_idx 呪文を唱えるモンスターID
3027+* @param m_idx 呪文を受けるモンスターID
3028+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
3029+* @return 召喚したモンスターの数を返す。
3030+*/
23893031 void spell_RF6_S_HYDRA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
23903032 {
23913033 int count = 0, k;
@@ -2412,6 +3054,15 @@ void spell_RF6_S_HYDRA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
24123054 mon_fight = TRUE;
24133055 }
24143056
3057+/*!
3058+* @brief RF6_S_ANGELの処理。天使一体召喚。 /
3059+* @param y 対象の地点のy座標
3060+* @param x 対象の地点のx座標
3061+* @param m_idx 呪文を唱えるモンスターID
3062+* @param m_idx 呪文を受けるモンスターID
3063+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
3064+* @return 召喚したモンスターの数を返す。
3065+*/
24153066 void spell_RF6_S_ANGEL(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
24163067 {
24173068 int count = 0, k;
@@ -2453,6 +3104,15 @@ void spell_RF6_S_ANGEL(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
24533104 mon_fight = TRUE;
24543105 }
24553106
3107+/*!
3108+* @brief RF6_S_DEMONの処理。デーモン一体召喚。 /
3109+* @param y 対象の地点のy座標
3110+* @param x 対象の地点のx座標
3111+* @param m_idx 呪文を唱えるモンスターID
3112+* @param m_idx 呪文を受けるモンスターID
3113+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
3114+* @return 召喚したモンスターの数を返す。
3115+*/
24563116 void spell_RF6_S_DEMON(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
24573117 {
24583118 int count = 0, k;
@@ -2479,6 +3139,15 @@ void spell_RF6_S_DEMON(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
24793139 mon_fight = TRUE;
24803140 }
24813141
3142+/*!
3143+* @brief RF6_S_UNDEADの処理。アンデッド一体召喚。 /
3144+* @param y 対象の地点のy座標
3145+* @param x 対象の地点のx座標
3146+* @param m_idx 呪文を唱えるモンスターID
3147+* @param m_idx 呪文を受けるモンスターID
3148+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
3149+* @return 召喚したモンスターの数を返す。
3150+*/
24823151 void spell_RF6_S_UNDEAD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
24833152 {
24843153 int count = 0, k;
@@ -2505,6 +3174,15 @@ void spell_RF6_S_UNDEAD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
25053174 mon_fight = TRUE;
25063175 }
25073176
3177+/*!
3178+* @brief RF6_S_DRAGONの処理。ドラゴン一体召喚。 /
3179+* @param y 対象の地点のy座標
3180+* @param x 対象の地点のx座標
3181+* @param m_idx 呪文を唱えるモンスターID
3182+* @param m_idx 呪文を受けるモンスターID
3183+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
3184+* @return 召喚したモンスターの数を返す。
3185+*/
25083186 void spell_RF6_S_DRAGON(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
25093187 {
25103188 int count = 0, k;
@@ -2531,8 +3209,16 @@ void spell_RF6_S_DRAGON(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
25313209 mon_fight = TRUE;
25323210 }
25333211
2534-int summon_NAZGUL(int y, int x, int m_idx, int mode)
3212+/*!
3213+* @brief ナズグル戦隊召喚の処理。 /
3214+* @param y 対象の地点のy座標
3215+* @param x 対象の地点のx座標
3216+* @param m_idx 呪文を唱えるモンスターID
3217+* @return 召喚したモンスターの数を返す。
3218+*/
3219+int summon_NAZGUL(int y, int x, int m_idx)
25353220 {
3221+ u32b mode = 0L;
25363222 int count = 0, k;
25373223 int cy = y;
25383224 int cx = x;
@@ -2581,6 +3267,15 @@ int summon_NAZGUL(int y, int x, int m_idx, int mode)
25813267 return count;
25823268 }
25833269
3270+/*!
3271+* @brief RF6_S_HI_UNDEADの処理。強力なアンデッド召喚。 /
3272+* @param y 対象の地点のy座標
3273+* @param x 対象の地点のx座標
3274+* @param m_idx 呪文を唱えるモンスターID
3275+* @param m_idx 呪文を受けるモンスターID
3276+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
3277+* @return 召喚したモンスターの数を返す。
3278+*/
25843279 void spell_RF6_S_HI_UNDEAD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
25853280 {
25863281 bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
@@ -2588,7 +3283,6 @@ void spell_RF6_S_HI_UNDEAD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
25883283 monster_type *m_ptr = &m_list[m_idx];
25893284 monster_race *r_ptr = &r_info[m_ptr->r_idx];
25903285 int rlev = monster_level_idx(m_idx);
2591- u32b mode = 0L;
25923286 int k, count = 0;
25933287 char m_name[80];
25943288 monster_name(m_idx, m_name);
@@ -2599,7 +3293,7 @@ void spell_RF6_S_HI_UNDEAD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
25993293 ((r_info[MON_NAZGUL].cur_num + 2) < r_info[MON_NAZGUL].max_num) &&
26003294 mon_to_player)
26013295 {
2602- count += summon_NAZGUL(y, x, m_idx, mode);
3296+ count += summon_NAZGUL(y, x, m_idx);
26033297 }
26043298 else
26053299 {
@@ -2627,6 +3321,15 @@ void spell_RF6_S_HI_UNDEAD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
26273321 mon_fight = TRUE;
26283322 }
26293323
3324+/*!
3325+* @brief RF6_S_HI_DRAGONの処理。古代ドラゴン召喚。 /
3326+* @param y 対象の地点のy座標
3327+* @param x 対象の地点のx座標
3328+* @param m_idx 呪文を唱えるモンスターID
3329+* @param m_idx 呪文を受けるモンスターID
3330+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
3331+* @return 召喚したモンスターの数を返す。
3332+*/
26303333 void spell_RF6_S_HI_DRAGON(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
26313334 {
26323335 int count = 0, k;
@@ -2659,6 +3362,15 @@ void spell_RF6_S_HI_DRAGON(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
26593362 mon_fight = TRUE;
26603363 }
26613364
3365+/*!
3366+* @brief RF6_S_AMBERITESの処理。アンバーの王族召喚。 /
3367+* @param y 対象の地点のy座標
3368+* @param x 対象の地点のx座標
3369+* @param m_idx 呪文を唱えるモンスターID
3370+* @param m_idx 呪文を受けるモンスターID
3371+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
3372+* @return 召喚したモンスターの数を返す。
3373+*/
26623374 void spell_RF6_S_AMBERITES(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
26633375 {
26643376 int count = 0, k;
@@ -2687,6 +3399,15 @@ void spell_RF6_S_AMBERITES(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
26873399 mon_fight = TRUE;
26883400 }
26893401
3402+/*!
3403+* @brief RF6_S_UNIQUEの処理。ユニーク・モンスター召喚。 /
3404+* @param y 対象の地点のy座標
3405+* @param x 対象の地点のx座標
3406+* @param m_idx 呪文を唱えるモンスターID
3407+* @param m_idx 呪文を受けるモンスターID
3408+* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
3409+* @return 召喚したモンスターの数を返す。
3410+*/
26903411 void spell_RF6_S_UNIQUE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
26913412 {
26923413 int count = 0, k;
@@ -2730,210 +3451,660 @@ void spell_RF6_S_UNIQUE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
27303451 mon_fight = TRUE;
27313452 }
27323453
3454+
3455+
3456+/*!
3457+* @brief モンスターからプレイヤーへの呪文の振り分け関数。 /
3458+* @param y 対象の地点のy座標
3459+* @param x 対象の地点のx座標
3460+* @param m_idx 呪文を唱えるモンスターID
3461+* @return 攻撃呪文のダメージ、または召喚したモンスターの数を返す。その他の場合0。以降の処理を中断するなら-1を返す。
3462+*/
27333463 int monspell_to_player(int SPELL_NUM, int y, int x, int m_idx)
27343464 {
27353465 switch (SPELL_NUM)
27363466 {
2737- case 96 + 0: spell_RF4_SHRIEK(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_SHRIEK */
2738- case 96 + 1: break; /* RF4_XXX1 */
2739- case 96 + 2: spell_RF4_DISPEL(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_DISPEL */
2740- case 96 + 3: return spell_RF4_ROCKET(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_ROCKET */
2741- case 96 + 4: return spell_RF4_SHOOT(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_SHOOT */
2742- case 96 + 5: break; /* RF4_XXX2 */
2743- case 96 + 6: break; /* RF4_XXX3 */
2744- case 96 + 7: break; /* RF4_XXX4 */
2745- case 96 + 8: return spell_RF4_BREATH(GF_ACID, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_ACID */
2746- case 96 + 9: return spell_RF4_BREATH(GF_ELEC, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_ELEC */
2747- case 96 + 10: return spell_RF4_BREATH(GF_FIRE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_FIRE */
2748- case 96 + 11: return spell_RF4_BREATH(GF_COLD, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_COLD */
2749- case 96 + 12: return spell_RF4_BREATH(GF_POIS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_POIS */
2750- case 96 + 13: return spell_RF4_BREATH(GF_NETHER, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_NETH */
2751- case 96 + 14: return spell_RF4_BREATH(GF_LITE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_LITE */
2752- case 96 + 15: return spell_RF4_BREATH(GF_DARK, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_DARK */
2753- case 96 + 16: return spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_CONF */
2754- case 96 + 17: return spell_RF4_BREATH(GF_SOUND, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_SOUN */
2755- case 96 + 18: return spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_CHAO */
2756- case 96 + 19: return spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_DISE */
2757- case 96 + 20: return spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_NEXU */
2758- case 96 + 21: return spell_RF4_BREATH(GF_TIME, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_TIME */
2759- case 96 + 22: return spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_INER */
2760- case 96 + 23: return spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_GRAV */
2761- case 96 + 24: return spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_SHAR */
2762- case 96 + 25: return spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_PLAS */
2763- case 96 + 26: return spell_RF4_BREATH(GF_FORCE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_WALL */
2764- case 96 + 27: return spell_RF4_BREATH(GF_MANA, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_MANA */
2765- case 96 + 28: return spell_RF4_BA_NUKE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BA_NUKE */
2766- case 96 + 29: return spell_RF4_BREATH(GF_NUKE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_NUKE */
2767- case 96 + 30: return spell_RF4_BA_CHAO(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BA_CHAO */
2768- case 96 + 31: return spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_DISI */
2769- case 128 + 0: return spell_RF5_BA_ACID(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_ACID */
2770- case 128 + 1: return spell_RF5_BA_ELEC(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_ELEC */
2771- case 128 + 2: return spell_RF5_BA_FIRE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_FIRE */
2772- case 128 + 3: return spell_RF5_BA_COLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_COLD */
2773- case 128 + 4: return spell_RF5_BA_POIS(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_POIS */
2774- case 128 + 5: return spell_RF5_BA_NETH(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_NETH */
2775- case 128 + 6: return spell_RF5_BA_WATE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_WATE */
2776- case 128 + 7: return spell_RF5_BA_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_MANA */
2777- case 128 + 8: return spell_RF5_BA_DARK(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_DARK */
2778- case 128 + 9: return spell_RF5_DRAIN_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_DRAIN_MANA */
2779- case 128 + 10: return spell_RF5_MIND_BLAST(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_MIND_BLAST */
2780- case 128 + 11: return spell_RF5_BRAIN_SMASH(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_MIND_BLAST */
2781- case 128 + 12: return spell_RF5_CAUSE_1(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_1 */
2782- case 128 + 13: return spell_RF5_CAUSE_2(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_2 */
2783- case 128 + 14: return spell_RF5_CAUSE_3(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_3 */
2784- case 128 + 15: return spell_RF5_CAUSE_4(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_4 */
2785- case 128 + 16: return spell_RF5_BO_ACID(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_ACID */
2786- case 128 + 17: return spell_RF5_BO_ELEC(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_ELEC */
2787- case 128 + 18: return spell_RF5_BO_FIRE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_FIRE */
2788- case 128 + 19: return spell_RF5_BO_COLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_COLD */
2789- case 128 + 20: return spell_RF5_BA_LITE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_LITE */
2790- case 128 + 21: return spell_RF5_BO_NETH(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_NETH */
2791- case 128 + 22: return spell_RF5_BO_WATE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_WATE */
2792- case 128 + 23: return spell_RF5_BO_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_MANA */
2793- case 128 + 24: return spell_RF5_BO_PLAS(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_PLAS */
2794- case 128 + 25: return spell_RF5_BO_ICEE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_ICEE */
2795- case 128 + 26: return spell_RF5_MISSILE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_MISSILE */
2796- case 128 + 27: spell_RF5_SCARE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_SCARE */
2797- case 128 + 28: spell_RF5_BLIND(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BLIND */
2798- case 128 + 29: spell_RF5_CONF(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_CONF */
2799- case 128 + 30: spell_RF5_SLOW(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_SLOW */
2800- case 128 + 31: spell_RF5_HOLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_HOLD */
2801- case 160 + 0: spell_RF6_HASTE(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_HASTE */
2802- case 160 + 1: return spell_RF6_HAND_DOOM(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF6_HAND_DOOM */
2803- case 160 + 2: spell_RF6_HEAL(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_HEAL */
2804- case 160 + 3: spell_RF6_INVULNER(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_INVULNER */
2805- case 160 + 4: spell_RF6_BLINK(m_idx, MONSTER_TO_PLAYER); break; /* RF6_BLINK */
2806- case 160 + 5: spell_RF6_TPORT(m_idx, MONSTER_TO_PLAYER); break; /* RF6_TPORT */
2807- case 160 + 6: return spell_RF6_WORLD(m_idx); break; /* RF6_WORLD */
2808- case 160 + 7: return spell_RF6_SPECIAL(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF6_SPECIAL */
2809- case 160 + 8: spell_RF6_TELE_TO(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_TELE_TO */
2810- case 160 + 9: spell_RF6_TELE_AWAY(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_TELE_AWAY */
2811- case 160 + 10: spell_RF6_TELE_LEVEL(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_TELE_LEVEL */
2812- case 160 + 11: spell_RF6_PSY_SPEAR(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_PSY_SPEAR */
2813- case 160 + 12: spell_RF6_DARKNESS(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_DARKNESS */
2814- case 160 + 13: spell_RF6_TRAPS(y, x, m_idx); break; /* RF6_TRAPS */
2815- case 160 + 14: spell_RF6_FORGET(m_idx); break; /* RF6_FORGET */
2816- case 160 + 15: spell_RF6_RAISE_DEAD(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_RAISE_DEAD */
2817- case 160 + 16: spell_RF6_S_KIN(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_KIN */
2818- case 160 + 17: spell_RF6_S_CYBER(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_CYBER */
2819- case 160 + 18: spell_RF6_S_MONSTER(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_MONSTER */
2820- case 160 + 19: spell_RF6_S_MONSTERS(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_MONSTER */
2821- case 160 + 20: spell_RF6_S_ANT(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_ANT */
2822- case 160 + 21: spell_RF6_S_SPIDER(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_SPIDER */
2823- case 160 + 22: spell_RF6_S_HOUND(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_HOUND */
2824- case 160 + 23: spell_RF6_S_HYDRA(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_HYDRA */
2825- case 160 + 24: spell_RF6_S_ANGEL(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_ANGEL */
2826- case 160 + 25: spell_RF6_S_DEMON(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_DEMON */
2827- case 160 + 26: spell_RF6_S_UNDEAD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_UNDEAD */
2828- case 160 + 27: spell_RF6_S_DRAGON(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_DRAGON */
2829- case 160 + 28: spell_RF6_S_HI_UNDEAD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_HI_UNDEAD */
2830- case 160 + 29: spell_RF6_S_HI_DRAGON(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_HI_DRAGON */
2831- case 160 + 30: spell_RF6_S_AMBERITES(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_AMBERITES */
2832- case 160 + 31: spell_RF6_S_UNIQUE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_UNIQUE */
3467+ case RF4_SPELL_START + 0: spell_RF4_SHRIEK(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_SHRIEK */
3468+ case RF4_SPELL_START + 1: break; /* RF4_XXX1 */
3469+ case RF4_SPELL_START + 2: spell_RF4_DISPEL(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_DISPEL */
3470+ case RF4_SPELL_START + 3: return spell_RF4_ROCKET(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_ROCKET */
3471+ case RF4_SPELL_START + 4: return spell_RF4_SHOOT(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_SHOOT */
3472+ case RF4_SPELL_START + 5: break; /* RF4_XXX2 */
3473+ case RF4_SPELL_START + 6: break; /* RF4_XXX3 */
3474+ case RF4_SPELL_START + 7: break; /* RF4_XXX4 */
3475+ case RF4_SPELL_START + 8: return spell_RF4_BREATH(GF_ACID, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_ACID */
3476+ case RF4_SPELL_START + 9: return spell_RF4_BREATH(GF_ELEC, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_ELEC */
3477+ case RF4_SPELL_START + 10: return spell_RF4_BREATH(GF_FIRE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_FIRE */
3478+ case RF4_SPELL_START + 11: return spell_RF4_BREATH(GF_COLD, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_COLD */
3479+ case RF4_SPELL_START + 12: return spell_RF4_BREATH(GF_POIS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_POIS */
3480+ case RF4_SPELL_START + 13: return spell_RF4_BREATH(GF_NETHER, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_NETH */
3481+ case RF4_SPELL_START + 14: return spell_RF4_BREATH(GF_LITE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_LITE */
3482+ case RF4_SPELL_START + 15: return spell_RF4_BREATH(GF_DARK, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_DARK */
3483+ case RF4_SPELL_START + 16: return spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_CONF */
3484+ case RF4_SPELL_START + 17: return spell_RF4_BREATH(GF_SOUND, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_SOUN */
3485+ case RF4_SPELL_START + 18: return spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_CHAO */
3486+ case RF4_SPELL_START + 19: return spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_DISE */
3487+ case RF4_SPELL_START + 20: return spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_NEXU */
3488+ case RF4_SPELL_START + 21: return spell_RF4_BREATH(GF_TIME, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_TIME */
3489+ case RF4_SPELL_START + 22: return spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_INER */
3490+ case RF4_SPELL_START + 23: return spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_GRAV */
3491+ case RF4_SPELL_START + 24: return spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_SHAR */
3492+ case RF4_SPELL_START + 25: return spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_PLAS */
3493+ case RF4_SPELL_START + 26: return spell_RF4_BREATH(GF_FORCE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_WALL */
3494+ case RF4_SPELL_START + 27: return spell_RF4_BREATH(GF_MANA, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_MANA */
3495+ case RF4_SPELL_START + 28: return spell_RF4_BA_NUKE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BA_NUKE */
3496+ case RF4_SPELL_START + 29: return spell_RF4_BREATH(GF_NUKE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_NUKE */
3497+ case RF4_SPELL_START + 30: return spell_RF4_BA_CHAO(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BA_CHAO */
3498+ case RF4_SPELL_START + 31: return spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_DISI */
3499+ case RF5_SPELL_START + 0: return spell_RF5_BA_ACID(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_ACID */
3500+ case RF5_SPELL_START + 1: return spell_RF5_BA_ELEC(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_ELEC */
3501+ case RF5_SPELL_START + 2: return spell_RF5_BA_FIRE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_FIRE */
3502+ case RF5_SPELL_START + 3: return spell_RF5_BA_COLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_COLD */
3503+ case RF5_SPELL_START + 4: return spell_RF5_BA_POIS(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_POIS */
3504+ case RF5_SPELL_START + 5: return spell_RF5_BA_NETH(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_NETH */
3505+ case RF5_SPELL_START + 6: return spell_RF5_BA_WATE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_WATE */
3506+ case RF5_SPELL_START + 7: return spell_RF5_BA_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_MANA */
3507+ case RF5_SPELL_START + 8: return spell_RF5_BA_DARK(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_DARK */
3508+ case RF5_SPELL_START + 9: return spell_RF5_DRAIN_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_DRAIN_MANA */
3509+ case RF5_SPELL_START + 10: return spell_RF5_MIND_BLAST(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_MIND_BLAST */
3510+ case RF5_SPELL_START + 11: return spell_RF5_BRAIN_SMASH(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_MIND_BLAST */
3511+ case RF5_SPELL_START + 12: return spell_RF5_CAUSE_1(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_1 */
3512+ case RF5_SPELL_START + 13: return spell_RF5_CAUSE_2(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_2 */
3513+ case RF5_SPELL_START + 14: return spell_RF5_CAUSE_3(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_3 */
3514+ case RF5_SPELL_START + 15: return spell_RF5_CAUSE_4(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_4 */
3515+ case RF5_SPELL_START + 16: return spell_RF5_BO_ACID(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_ACID */
3516+ case RF5_SPELL_START + 17: return spell_RF5_BO_ELEC(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_ELEC */
3517+ case RF5_SPELL_START + 18: return spell_RF5_BO_FIRE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_FIRE */
3518+ case RF5_SPELL_START + 19: return spell_RF5_BO_COLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_COLD */
3519+ case RF5_SPELL_START + 20: return spell_RF5_BA_LITE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_LITE */
3520+ case RF5_SPELL_START + 21: return spell_RF5_BO_NETH(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_NETH */
3521+ case RF5_SPELL_START + 22: return spell_RF5_BO_WATE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_WATE */
3522+ case RF5_SPELL_START + 23: return spell_RF5_BO_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_MANA */
3523+ case RF5_SPELL_START + 24: return spell_RF5_BO_PLAS(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_PLAS */
3524+ case RF5_SPELL_START + 25: return spell_RF5_BO_ICEE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_ICEE */
3525+ case RF5_SPELL_START + 26: return spell_RF5_MISSILE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_MISSILE */
3526+ case RF5_SPELL_START + 27: spell_RF5_SCARE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_SCARE */
3527+ case RF5_SPELL_START + 28: spell_RF5_BLIND(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BLIND */
3528+ case RF5_SPELL_START + 29: spell_RF5_CONF(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_CONF */
3529+ case RF5_SPELL_START + 30: spell_RF5_SLOW(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_SLOW */
3530+ case RF5_SPELL_START + 31: spell_RF5_HOLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_HOLD */
3531+ case RF6_SPELL_START + 0: spell_RF6_HASTE(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_HASTE */
3532+ case RF6_SPELL_START + 1: return spell_RF6_HAND_DOOM(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF6_HAND_DOOM */
3533+ case RF6_SPELL_START + 2: spell_RF6_HEAL(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_HEAL */
3534+ case RF6_SPELL_START + 3: spell_RF6_INVULNER(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_INVULNER */
3535+ case RF6_SPELL_START + 4: spell_RF6_BLINK(m_idx, MONSTER_TO_PLAYER); break; /* RF6_BLINK */
3536+ case RF6_SPELL_START + 5: spell_RF6_TPORT(m_idx, MONSTER_TO_PLAYER); break; /* RF6_TPORT */
3537+ case RF6_SPELL_START + 6: return spell_RF6_WORLD(m_idx); break; /* RF6_WORLD */
3538+ case RF6_SPELL_START + 7: return spell_RF6_SPECIAL(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF6_SPECIAL */
3539+ case RF6_SPELL_START + 8: spell_RF6_TELE_TO(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_TELE_TO */
3540+ case RF6_SPELL_START + 9: spell_RF6_TELE_AWAY(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_TELE_AWAY */
3541+ case RF6_SPELL_START + 10: spell_RF6_TELE_LEVEL(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_TELE_LEVEL */
3542+ case RF6_SPELL_START + 11: spell_RF6_PSY_SPEAR(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_PSY_SPEAR */
3543+ case RF6_SPELL_START + 12: spell_RF6_DARKNESS(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_DARKNESS */
3544+ case RF6_SPELL_START + 13: spell_RF6_TRAPS(y, x, m_idx); break; /* RF6_TRAPS */
3545+ case RF6_SPELL_START + 14: spell_RF6_FORGET(m_idx); break; /* RF6_FORGET */
3546+ case RF6_SPELL_START + 15: spell_RF6_RAISE_DEAD(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_RAISE_DEAD */
3547+ case RF6_SPELL_START + 16: spell_RF6_S_KIN(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_KIN */
3548+ case RF6_SPELL_START + 17: spell_RF6_S_CYBER(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_CYBER */
3549+ case RF6_SPELL_START + 18: spell_RF6_S_MONSTER(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_MONSTER */
3550+ case RF6_SPELL_START + 19: spell_RF6_S_MONSTERS(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_MONSTER */
3551+ case RF6_SPELL_START + 20: spell_RF6_S_ANT(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_ANT */
3552+ case RF6_SPELL_START + 21: spell_RF6_S_SPIDER(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_SPIDER */
3553+ case RF6_SPELL_START + 22: spell_RF6_S_HOUND(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_HOUND */
3554+ case RF6_SPELL_START + 23: spell_RF6_S_HYDRA(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_HYDRA */
3555+ case RF6_SPELL_START + 24: spell_RF6_S_ANGEL(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_ANGEL */
3556+ case RF6_SPELL_START + 25: spell_RF6_S_DEMON(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_DEMON */
3557+ case RF6_SPELL_START + 26: spell_RF6_S_UNDEAD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_UNDEAD */
3558+ case RF6_SPELL_START + 27: spell_RF6_S_DRAGON(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_DRAGON */
3559+ case RF6_SPELL_START + 28: spell_RF6_S_HI_UNDEAD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_HI_UNDEAD */
3560+ case RF6_SPELL_START + 29: spell_RF6_S_HI_DRAGON(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_HI_DRAGON */
3561+ case RF6_SPELL_START + 30: spell_RF6_S_AMBERITES(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_AMBERITES */
3562+ case RF6_SPELL_START + 31: spell_RF6_S_UNIQUE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_UNIQUE */
28333563 }
28343564 return 0;
28353565 }
28363566
3567+/*!
3568+* @brief モンスターからモンスターへの呪文の振り分け関数。 /
3569+* @param y 対象の地点のy座標
3570+* @param x 対象の地点のx座標
3571+* @param m_idx 呪文を唱えるモンスターID
3572+* @param m_idx 呪文を受けるモンスターID
3573+* @return 攻撃呪文のダメージ、または召喚したモンスターの数を返す。その他の場合0。以降の処理を中断するなら-1を返す。
3574+*/
28373575 int monspell_to_monster(int SPELL_NUM, int y, int x, int m_idx, int t_idx)
28383576 {
28393577 switch (SPELL_NUM)
28403578 {
2841- case 96 + 0: spell_RF4_SHRIEK(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_SHRIEK */
2842- case 96 + 1: return -1; /* RF4_XXX1 */
2843- case 96 + 2: spell_RF4_DISPEL(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_DISPEL */
2844- case 96 + 3: return spell_RF4_ROCKET(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_ROCKET */
2845- case 96 + 4: return spell_RF4_SHOOT(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_SHOOT */
2846- case 96 + 5: return -1; /* RF4_XXX2 */
2847- case 96 + 6: return -1; /* RF4_XXX3 */
2848- case 96 + 7: return -1; /* RF4_XXX4 */
2849- case 96 + 8: return spell_RF4_BREATH(GF_ACID, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_ACID */
2850- case 96 + 9: return spell_RF4_BREATH(GF_ELEC, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_ELEC */
2851- case 96 + 10: return spell_RF4_BREATH(GF_FIRE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_FIRE */
2852- case 96 + 11: return spell_RF4_BREATH(GF_COLD, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_COLD */
2853- case 96 + 12: return spell_RF4_BREATH(GF_POIS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_POIS */
2854- case 96 + 13: return spell_RF4_BREATH(GF_NETHER, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_NETH */
2855- case 96 + 14: return spell_RF4_BREATH(GF_LITE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_LITE */
2856- case 96 + 15: return spell_RF4_BREATH(GF_DARK, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_DARK */
2857- case 96 + 16: return spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_CONF */
2858- case 96 + 17: return spell_RF4_BREATH(GF_SOUND, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_SOUN */
2859- case 96 + 18: return spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_CHAO */
2860- case 96 + 19: return spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_DISE */
2861- case 96 + 20: return spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_NEXU */
2862- case 96 + 21: return spell_RF4_BREATH(GF_TIME, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_TIME */
2863- case 96 + 22: return spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_INER */
2864- case 96 + 23: return spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_GRAV */
2865- case 96 + 24: return spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_SHAR */
2866- case 96 + 25: return spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_PLAS */
2867- case 96 + 26: return spell_RF4_BREATH(GF_FORCE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_WALL */
2868- case 96 + 27: return spell_RF4_BREATH(GF_MANA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_MANA */
2869- case 96 + 28: return spell_RF4_BA_NUKE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BA_NUKE */
2870- case 96 + 29: return spell_RF4_BREATH(GF_NUKE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_NUKE */
2871- case 96 + 30: return spell_RF4_BA_CHAO(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BA_CHAO */
2872- case 96 + 31: return spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_DISI */
2873- case 128 + 0: return spell_RF5_BA_ACID(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_ACID */
2874- case 128 + 1: return spell_RF5_BA_ELEC(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_ELEC */
2875- case 128 + 2: return spell_RF5_BA_FIRE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_FIRE */
2876- case 128 + 3: return spell_RF5_BA_COLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_COLD */
2877- case 128 + 4: return spell_RF5_BA_POIS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_POIS */
2878- case 128 + 5: return spell_RF5_BA_NETH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_NETH */
2879- case 128 + 6: return spell_RF5_BA_WATE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_WATE */
2880- case 128 + 7: return spell_RF5_BA_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_MANA */
2881- case 128 + 8: return spell_RF5_BA_DARK(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_DARK */
2882- case 128 + 9: return spell_RF5_DRAIN_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_DRAIN_MANA */
2883- case 128 + 10: return spell_RF5_MIND_BLAST(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_MIND_BLAST */
2884- case 128 + 11: return spell_RF5_BRAIN_SMASH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BRAIN_SMASH */
2885- case 128 + 12: return spell_RF5_CAUSE_1(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_CAUSE_1 */
2886- case 128 + 13: return spell_RF5_CAUSE_2(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_CAUSE_2 */
2887- case 128 + 14: return spell_RF5_CAUSE_3(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_CAUSE_3 */
2888- case 128 + 15: return spell_RF5_CAUSE_4(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_CAUSE_4 */
2889- case 128 + 16: return spell_RF5_BO_ACID(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_ACID */
2890- case 128 + 17: return spell_RF5_BO_ELEC(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_ELEC */
2891- case 128 + 18: return spell_RF5_BO_FIRE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_FIRE */
2892- case 128 + 19: return spell_RF5_BO_COLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_COLD */
2893- case 128 + 20: return spell_RF5_BA_LITE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_LITE */
2894- case 128 + 21: return spell_RF5_BO_NETH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_NETH */
2895- case 128 + 22: return spell_RF5_BO_WATE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_WATE */
2896- case 128 + 23: return spell_RF5_BO_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_MANA */
2897- case 128 + 24: return spell_RF5_BO_PLAS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_PLAS */
2898- case 128 + 25: return spell_RF5_BO_ICEE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_ICEE */
2899- case 128 + 26: return spell_RF5_MISSILE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_MISSILE */
2900- case 128 + 27: spell_RF5_SCARE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_SCARE */
2901- case 128 + 28: spell_RF5_BLIND(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BLIND */
2902- case 128 + 29: spell_RF5_CONF(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_CONF */
2903- case 128 + 30: spell_RF5_SLOW(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_SLOW */
2904- case 128 + 31: spell_RF5_HOLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_HOLD */
2905- case 160 + 0: spell_RF6_HASTE(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_HASTE */
2906- case 160 + 1: return spell_RF6_HAND_DOOM(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF6_HAND_DOOM */
2907- case 160 + 2: spell_RF6_HEAL(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_HEAL */
2908- case 160 + 3: spell_RF6_INVULNER(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_INVULNER */
2909- case 160 + 4: spell_RF6_BLINK(m_idx, MONSTER_TO_MONSTER); break; /* RF6_BLINK */
2910- case 160 + 5: spell_RF6_TPORT(m_idx, MONSTER_TO_MONSTER); break; /* RF6_TPORT */
2911- case 160 + 6: return -1; break; /* RF6_WORLD */
2912- case 160 + 7: return spell_RF6_SPECIAL(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF6_SPECIAL */
2913- case 160 + 8: spell_RF6_TELE_TO(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_TELE_TO */
2914- case 160 + 9: spell_RF6_TELE_AWAY(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_TELE_AWAY */
2915- case 160 + 10: spell_RF6_TELE_LEVEL(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_TELE_LEVEL */
2916- case 160 + 11: spell_RF6_PSY_SPEAR(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_PSY_SPEAR */
2917- case 160 + 12: spell_RF6_DARKNESS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_DARKNESS */
2918- case 160 + 13: return -1; /* RF6_TRAPS */
2919- case 160 + 14: return -1; /* RF6_FORGET */
2920- case 160 + 15: spell_RF6_RAISE_DEAD(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_RAISE_DEAD */
2921- case 160 + 16: spell_RF6_S_KIN(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_KIN */
2922- case 160 + 17: spell_RF6_S_CYBER(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_CYBER */
2923- case 160 + 18: spell_RF6_S_MONSTER(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_MONSTER */
2924- case 160 + 19: spell_RF6_S_MONSTERS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_MONSTER */
2925- case 160 + 20: spell_RF6_S_ANT(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_ANT */
2926- case 160 + 21: spell_RF6_S_SPIDER(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_SPIDER */
2927- case 160 + 22: spell_RF6_S_HOUND(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_HOUND */
2928- case 160 + 23: spell_RF6_S_HYDRA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_HYDRA */
2929- case 160 + 24: spell_RF6_S_ANGEL(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_ANGEL */
2930- case 160 + 25: spell_RF6_S_DEMON(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_DEMON */
2931- case 160 + 26: spell_RF6_S_UNDEAD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_UNDEAD */
2932- case 160 + 27: spell_RF6_S_DRAGON(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_DRAGON */
2933- case 160 + 28: spell_RF6_S_HI_UNDEAD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_HI_UNDEAD */
2934- case 160 + 29: spell_RF6_S_HI_DRAGON(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_HI_DRAGON */
2935- case 160 + 30: spell_RF6_S_AMBERITES(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_AMBERITES */
2936- case 160 + 31: spell_RF6_S_UNIQUE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_UNIQUE */
3579+ case RF4_SPELL_START + 0: spell_RF4_SHRIEK(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_SHRIEK */
3580+ case RF4_SPELL_START + 1: return -1; /* RF4_XXX1 */
3581+ case RF4_SPELL_START + 2: spell_RF4_DISPEL(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_DISPEL */
3582+ case RF4_SPELL_START + 3: return spell_RF4_ROCKET(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_ROCKET */
3583+ case RF4_SPELL_START + 4: return spell_RF4_SHOOT(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_SHOOT */
3584+ case RF4_SPELL_START + 5: return -1; /* RF4_XXX2 */
3585+ case RF4_SPELL_START + 6: return -1; /* RF4_XXX3 */
3586+ case RF4_SPELL_START + 7: return -1; /* RF4_XXX4 */
3587+ case RF4_SPELL_START + 8: return spell_RF4_BREATH(GF_ACID, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_ACID */
3588+ case RF4_SPELL_START + 9: return spell_RF4_BREATH(GF_ELEC, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_ELEC */
3589+ case RF4_SPELL_START + 10: return spell_RF4_BREATH(GF_FIRE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_FIRE */
3590+ case RF4_SPELL_START + 11: return spell_RF4_BREATH(GF_COLD, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_COLD */
3591+ case RF4_SPELL_START + 12: return spell_RF4_BREATH(GF_POIS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_POIS */
3592+ case RF4_SPELL_START + 13: return spell_RF4_BREATH(GF_NETHER, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_NETH */
3593+ case RF4_SPELL_START + 14: return spell_RF4_BREATH(GF_LITE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_LITE */
3594+ case RF4_SPELL_START + 15: return spell_RF4_BREATH(GF_DARK, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_DARK */
3595+ case RF4_SPELL_START + 16: return spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_CONF */
3596+ case RF4_SPELL_START + 17: return spell_RF4_BREATH(GF_SOUND, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_SOUN */
3597+ case RF4_SPELL_START + 18: return spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_CHAO */
3598+ case RF4_SPELL_START + 19: return spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_DISE */
3599+ case RF4_SPELL_START + 20: return spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_NEXU */
3600+ case RF4_SPELL_START + 21: return spell_RF4_BREATH(GF_TIME, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_TIME */
3601+ case RF4_SPELL_START + 22: return spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_INER */
3602+ case RF4_SPELL_START + 23: return spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_GRAV */
3603+ case RF4_SPELL_START + 24: return spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_SHAR */
3604+ case RF4_SPELL_START + 25: return spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_PLAS */
3605+ case RF4_SPELL_START + 26: return spell_RF4_BREATH(GF_FORCE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_WALL */
3606+ case RF4_SPELL_START + 27: return spell_RF4_BREATH(GF_MANA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_MANA */
3607+ case RF4_SPELL_START + 28: return spell_RF4_BA_NUKE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BA_NUKE */
3608+ case RF4_SPELL_START + 29: return spell_RF4_BREATH(GF_NUKE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_NUKE */
3609+ case RF4_SPELL_START + 30: return spell_RF4_BA_CHAO(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BA_CHAO */
3610+ case RF4_SPELL_START + 31: return spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_DISI */
3611+ case RF5_SPELL_START + 0: return spell_RF5_BA_ACID(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_ACID */
3612+ case RF5_SPELL_START + 1: return spell_RF5_BA_ELEC(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_ELEC */
3613+ case RF5_SPELL_START + 2: return spell_RF5_BA_FIRE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_FIRE */
3614+ case RF5_SPELL_START + 3: return spell_RF5_BA_COLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_COLD */
3615+ case RF5_SPELL_START + 4: return spell_RF5_BA_POIS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_POIS */
3616+ case RF5_SPELL_START + 5: return spell_RF5_BA_NETH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_NETH */
3617+ case RF5_SPELL_START + 6: return spell_RF5_BA_WATE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_WATE */
3618+ case RF5_SPELL_START + 7: return spell_RF5_BA_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_MANA */
3619+ case RF5_SPELL_START + 8: return spell_RF5_BA_DARK(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_DARK */
3620+ case RF5_SPELL_START + 9: return spell_RF5_DRAIN_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_DRAIN_MANA */
3621+ case RF5_SPELL_START + 10: return spell_RF5_MIND_BLAST(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_MIND_BLAST */
3622+ case RF5_SPELL_START + 11: return spell_RF5_BRAIN_SMASH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BRAIN_SMASH */
3623+ case RF5_SPELL_START + 12: return spell_RF5_CAUSE_1(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_CAUSE_1 */
3624+ case RF5_SPELL_START + 13: return spell_RF5_CAUSE_2(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_CAUSE_2 */
3625+ case RF5_SPELL_START + 14: return spell_RF5_CAUSE_3(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_CAUSE_3 */
3626+ case RF5_SPELL_START + 15: return spell_RF5_CAUSE_4(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_CAUSE_4 */
3627+ case RF5_SPELL_START + 16: return spell_RF5_BO_ACID(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_ACID */
3628+ case RF5_SPELL_START + 17: return spell_RF5_BO_ELEC(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_ELEC */
3629+ case RF5_SPELL_START + 18: return spell_RF5_BO_FIRE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_FIRE */
3630+ case RF5_SPELL_START + 19: return spell_RF5_BO_COLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_COLD */
3631+ case RF5_SPELL_START + 20: return spell_RF5_BA_LITE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_LITE */
3632+ case RF5_SPELL_START + 21: return spell_RF5_BO_NETH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_NETH */
3633+ case RF5_SPELL_START + 22: return spell_RF5_BO_WATE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_WATE */
3634+ case RF5_SPELL_START + 23: return spell_RF5_BO_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_MANA */
3635+ case RF5_SPELL_START + 24: return spell_RF5_BO_PLAS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_PLAS */
3636+ case RF5_SPELL_START + 25: return spell_RF5_BO_ICEE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_ICEE */
3637+ case RF5_SPELL_START + 26: return spell_RF5_MISSILE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_MISSILE */
3638+ case RF5_SPELL_START + 27: spell_RF5_SCARE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_SCARE */
3639+ case RF5_SPELL_START + 28: spell_RF5_BLIND(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BLIND */
3640+ case RF5_SPELL_START + 29: spell_RF5_CONF(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_CONF */
3641+ case RF5_SPELL_START + 30: spell_RF5_SLOW(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_SLOW */
3642+ case RF5_SPELL_START + 31: spell_RF5_HOLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_HOLD */
3643+ case RF6_SPELL_START + 0: spell_RF6_HASTE(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_HASTE */
3644+ case RF6_SPELL_START + 1: return spell_RF6_HAND_DOOM(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF6_HAND_DOOM */
3645+ case RF6_SPELL_START + 2: spell_RF6_HEAL(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_HEAL */
3646+ case RF6_SPELL_START + 3: spell_RF6_INVULNER(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_INVULNER */
3647+ case RF6_SPELL_START + 4: spell_RF6_BLINK(m_idx, MONSTER_TO_MONSTER); break; /* RF6_BLINK */
3648+ case RF6_SPELL_START + 5: spell_RF6_TPORT(m_idx, MONSTER_TO_MONSTER); break; /* RF6_TPORT */
3649+ case RF6_SPELL_START + 6: return -1; break; /* RF6_WORLD */
3650+ case RF6_SPELL_START + 7: return spell_RF6_SPECIAL(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF6_SPECIAL */
3651+ case RF6_SPELL_START + 8: spell_RF6_TELE_TO(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_TELE_TO */
3652+ case RF6_SPELL_START + 9: spell_RF6_TELE_AWAY(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_TELE_AWAY */
3653+ case RF6_SPELL_START + 10: spell_RF6_TELE_LEVEL(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_TELE_LEVEL */
3654+ case RF6_SPELL_START + 11: spell_RF6_PSY_SPEAR(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_PSY_SPEAR */
3655+ case RF6_SPELL_START + 12: spell_RF6_DARKNESS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_DARKNESS */
3656+ case RF6_SPELL_START + 13: return -1; /* RF6_TRAPS */
3657+ case RF6_SPELL_START + 14: return -1; /* RF6_FORGET */
3658+ case RF6_SPELL_START + 15: spell_RF6_RAISE_DEAD(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_RAISE_DEAD */
3659+ case RF6_SPELL_START + 16: spell_RF6_S_KIN(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_KIN */
3660+ case RF6_SPELL_START + 17: spell_RF6_S_CYBER(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_CYBER */
3661+ case RF6_SPELL_START + 18: spell_RF6_S_MONSTER(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_MONSTER */
3662+ case RF6_SPELL_START + 19: spell_RF6_S_MONSTERS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_MONSTER */
3663+ case RF6_SPELL_START + 20: spell_RF6_S_ANT(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_ANT */
3664+ case RF6_SPELL_START + 21: spell_RF6_S_SPIDER(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_SPIDER */
3665+ case RF6_SPELL_START + 22: spell_RF6_S_HOUND(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_HOUND */
3666+ case RF6_SPELL_START + 23: spell_RF6_S_HYDRA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_HYDRA */
3667+ case RF6_SPELL_START + 24: spell_RF6_S_ANGEL(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_ANGEL */
3668+ case RF6_SPELL_START + 25: spell_RF6_S_DEMON(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_DEMON */
3669+ case RF6_SPELL_START + 26: spell_RF6_S_UNDEAD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_UNDEAD */
3670+ case RF6_SPELL_START + 27: spell_RF6_S_DRAGON(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_DRAGON */
3671+ case RF6_SPELL_START + 28: spell_RF6_S_HI_UNDEAD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_HI_UNDEAD */
3672+ case RF6_SPELL_START + 29: spell_RF6_S_HI_DRAGON(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_HI_DRAGON */
3673+ case RF6_SPELL_START + 30: spell_RF6_S_AMBERITES(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_AMBERITES */
3674+ case RF6_SPELL_START + 31: spell_RF6_S_UNIQUE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_UNIQUE */
29373675 }
29383676 return 0;
2939-}
\ No newline at end of file
3677+}
3678+
3679+/*!
3680+* @brief モンスターの使う呪文の威力を返す /
3681+* @param m_idx 呪文を唱えるモンスターID
3682+* @param TYPE DAM_MAXで最大値を返し、DAM_MINで最小値を返す。DAM_ROLLはダイスを振って値を決定する。
3683+* @return 攻撃呪文のダメージを返す。攻撃呪文以外は-1を返す。
3684+*/
3685+int monspell_damage(int SPELL_NUM, int m_idx, int TYPE)
3686+{
3687+ monster_type *m_ptr = &m_list[m_idx];
3688+ monster_race *r_ptr = &r_info[m_ptr->r_idx];
3689+ int hp, dam = 0, dice_num = 0, dice_side = 0, mult = 1, div = 1;
3690+ int rlev = monster_level_idx(m_idx);
3691+
3692+ if (TYPE == DAM_MAX)
3693+ {
3694+ hp = m_ptr->max_maxhp;
3695+ }
3696+ else if (TYPE == DAM_ROLL)
3697+ {
3698+ hp = m_ptr->hp;
3699+ }
3700+
3701+ switch (SPELL_NUM)
3702+ {
3703+ case RF4_SPELL_START + 0: return -1; /* RF4_SHRIEK */
3704+ case RF4_SPELL_START + 1: return -1; /* RF4_XXX1 */
3705+ case RF4_SPELL_START + 2: return -1; /* RF4_DISPEL */
3706+
3707+ /* RF4_ROCKET */
3708+ case RF4_SPELL_START + 3:
3709+ dam = (hp / 4) > 800 ? 800 : (hp / 4);
3710+ break;
3711+
3712+ /* RF4_SHOOT */
3713+ case RF4_SPELL_START + 4:
3714+ dice_num = r_ptr->blow[0].d_dice;
3715+ dice_side = r_ptr->blow[0].d_side;
3716+ break;
3717+ case RF4_SPELL_START + 5: return -1; /* RF4_XXX2 */
3718+ case RF4_SPELL_START + 6: return -1; /* RF4_XXX3 */
3719+ case RF4_SPELL_START + 7: return -1; /* RF4_XXX4 */
3720+
3721+ /* RF4_BR_ACID */
3722+ /* RF4_BR_ELEC */
3723+ /* RF4_BR_FIRE */
3724+ /* RF4_BR_COLD */
3725+ case RF4_SPELL_START + 8:
3726+ case RF4_SPELL_START + 9:
3727+ case RF4_SPELL_START + 10:
3728+ case RF4_SPELL_START + 11:
3729+ dam = ((hp / 3) > 1600 ? 1600 : (hp / 3));
3730+ break;
3731+
3732+ /* RF4_BR_POIS */
3733+ case RF4_SPELL_START + 12:
3734+ dam = ((hp / 3) > 800 ? 800 : (hp / 3));
3735+ break;
3736+
3737+ /* RF4_BR_NETH */
3738+ case RF4_SPELL_START + 13:
3739+ dam = ((hp / 6) > 550 ? 550 : (hp / 6));
3740+ break;
3741+
3742+ /* RF4_BR_LITE */
3743+ /* RF4_BR_DARK */
3744+ case RF4_SPELL_START + 14:
3745+ case RF4_SPELL_START + 15:
3746+ dam = ((hp / 6) > 400 ? 400 : (hp / 6));
3747+ break;
3748+
3749+ /* RF4_BR_CONF */
3750+ /* RF4_BR_SOUN */
3751+ case RF4_SPELL_START + 16:
3752+ case RF4_SPELL_START + 17:
3753+ dam = ((hp / 6) > 450 ? 450 : (hp / 6));
3754+ break;
3755+
3756+ /* RF4_BR_CHAO */
3757+ case RF4_SPELL_START + 18:
3758+ dam = ((hp / 6) > 600 ? 600 : (hp / 6));
3759+ break;
3760+
3761+ /* RF4_BR_DISE */
3762+ case RF4_SPELL_START + 19:
3763+ dam = ((hp / 6) > 500 ? 500 : (hp / 6));
3764+ break;
3765+
3766+ /* RF4_BR_NEXU */
3767+ case RF4_SPELL_START + 20:
3768+ dam = ((hp / 3) > 250 ? 250 : (hp / 3));
3769+ break;
3770+
3771+ /* RF4_BR_TIME */
3772+ case RF4_SPELL_START + 21:
3773+ dam = ((hp / 3) > 150 ? 150 : (hp / 3));
3774+ break;
3775+
3776+ /* RF4_BR_INER */
3777+ /* RF4_BR_GRAV */
3778+ case RF4_SPELL_START + 22:
3779+ case RF4_SPELL_START + 23:
3780+ dam = ((hp / 6) > 200 ? 200 : (hp / 6));
3781+ break;
3782+
3783+ /* RF4_BR_SHAR */
3784+ case RF4_SPELL_START + 24:
3785+ dam = ((hp / 6) > 500 ? 500 : (hp / 6));
3786+ break;
3787+
3788+ /* RF4_BR_PLAS */
3789+ case RF4_SPELL_START + 25:
3790+ dam = ((hp / 6) > 150 ? 150 : (hp / 6));
3791+ break;
3792+
3793+ /* RF4_BR_WALL */
3794+ case RF4_SPELL_START + 26:
3795+ dam = ((hp / 6) > 200 ? 200 : (hp / 6));
3796+ break;
3797+
3798+ /* RF4_BR_MANA */
3799+ case RF4_SPELL_START + 27:
3800+ dam = ((hp / 3) > 250 ? 250 : (hp / 3));
3801+ break;
3802+
3803+ /* RF4_BA_NUKE */
3804+ case RF4_SPELL_START + 28:
3805+ mult = monster_is_powerful(m_idx) ? 2 : 1;
3806+ dam = rlev * (mult / div);
3807+ dice_num = 10;
3808+ dice_side = 6;
3809+ break;
3810+
3811+ /* RF4_BR_NUKE */
3812+ case RF4_SPELL_START + 29:
3813+ dam = ((hp / 3) > 800 ? 800 : (hp / 3));
3814+ break;
3815+
3816+ /* RF4_BA_CHAO */
3817+ case RF4_SPELL_START + 30:
3818+ dam = (monster_is_powerful(m_idx) ? (rlev * 3) : (rlev * 2));
3819+ dice_num = 10;
3820+ dice_side = 10;
3821+ break;
3822+
3823+ /* RF4_BR_DISI */
3824+ case RF4_SPELL_START + 31:
3825+ dam = ((hp / 6) > 150 ? 150 : (hp / 6));
3826+ break;
3827+
3828+ /* RF5_BA_ACID */
3829+ case RF5_SPELL_START + 0:
3830+ if (monster_is_powerful(m_idx))
3831+ {
3832+ dam = (rlev * 4) + 50;
3833+ dice_num = 10;
3834+ dice_side = 10;
3835+ }
3836+ else
3837+ {
3838+ dam = 15;
3839+ dice_num = 1;
3840+ dice_side = rlev * 3;
3841+ }
3842+ break;
3843+
3844+ /* RF5_BA_ELEC */
3845+ case RF5_SPELL_START + 1:
3846+ if (monster_is_powerful(m_idx))
3847+ {
3848+ dam = (rlev * 4) + 50;
3849+ dice_num = 10;
3850+ dice_side = 10;
3851+ }
3852+ else
3853+ {
3854+ dam = 8;
3855+ dice_num = 1;
3856+ dice_side = rlev * 3 / 2;
3857+ }
3858+ break;
3859+
3860+ /* RF5_BA_FIRE */
3861+ case RF5_SPELL_START + 2:
3862+ if (monster_is_powerful(m_idx))
3863+ {
3864+ dam = (rlev * 4) + 50;
3865+ dice_num = 10;
3866+ dice_side = 10;
3867+ }
3868+ else
3869+ {
3870+ dam = 10;
3871+ dice_num = 1;
3872+ dice_side = rlev * 7 / 2;
3873+ }
3874+ break;
3875+
3876+ /* RF5_BA_COLD */
3877+ case RF5_SPELL_START + 3:
3878+ if (monster_is_powerful(m_idx))
3879+ {
3880+ dam = (rlev * 4) + 50;
3881+ dice_num = 10;
3882+ dice_side = 10;
3883+ }
3884+ else
3885+ {
3886+ dam = 10;
3887+ dice_num = 1;
3888+ dice_side = rlev * 3 / 2;
3889+ }
3890+ break;
3891+
3892+ /* RF5_BA_POIS */
3893+ case RF5_SPELL_START + 4:
3894+ mult = monster_is_powerful(m_idx) ? 2 : 1;
3895+ dice_num = 12;
3896+ dice_side = 2;
3897+ break;
3898+
3899+ /* RF5_BA_NETH */
3900+ case RF5_SPELL_START + 5:
3901+ dam = 50 + (rlev * (monster_is_powerful(m_idx) ? 2 : 1));
3902+ dice_num = 10;
3903+ dice_side = 10;
3904+ break;
3905+
3906+ /* RF5_BA_WATE */
3907+ case RF5_SPELL_START + 6:
3908+ dam = 50;
3909+ dice_num = 1;
3910+ dice_side = (monster_is_powerful(m_idx) ? (rlev * 3) : (rlev * 2));
3911+ break;
3912+
3913+ /* RF5_BA_MANA */
3914+ /* RF5_BA_DARK */
3915+ case RF5_SPELL_START + 7:
3916+ case RF5_SPELL_START + 8:
3917+ dam = (rlev * 4) + 50;
3918+ dice_num = 10;
3919+ dice_side = 10;
3920+ break;
3921+
3922+ /* RF5_DRAIN_MANA */
3923+ case RF5_SPELL_START + 9:
3924+ dam = 1;
3925+ div = 2;
3926+ dice_num = 1;
3927+ dice_side = rlev;
3928+ break;
3929+
3930+ /* RF5_MIND_BLAST */
3931+ case RF5_SPELL_START + 10:
3932+ dice_num = 7;
3933+ dice_side = 7;
3934+ break;
3935+
3936+ /* RF5_BRAIN_SMASH */
3937+ case RF5_SPELL_START + 11:
3938+ dice_num = 12;
3939+ dice_side = 12;
3940+ break;
3941+
3942+ /* RF5_CAUSE_1 */
3943+ case RF5_SPELL_START + 12:
3944+ dice_num = 3;
3945+ dice_side = 8;
3946+ break;
3947+
3948+ /* RF5_CAUSE_2 */
3949+ case RF5_SPELL_START + 13:
3950+ dice_num = 8;
3951+ dice_side = 8;
3952+ break;
3953+
3954+ /* RF5_CAUSE_3 */
3955+ case RF5_SPELL_START + 14:
3956+ dice_num = 10;
3957+ dice_side = 15;
3958+ break;
3959+
3960+ /* RF5_CAUSE_4 */
3961+ case RF5_SPELL_START + 15:
3962+ dice_num = 15;
3963+ dice_side = 15;
3964+ break;
3965+
3966+ /* RF5_BO_ACID */
3967+ case RF5_SPELL_START + 16:
3968+ mult = monster_is_powerful(m_idx) ? 2 : 1;
3969+ dam = rlev / 3 * (mult / div);
3970+ dice_num = 7;
3971+ dice_side = 8;
3972+ break;
3973+
3974+ /* RF5_BO_ELEC */
3975+ case RF5_SPELL_START + 17:
3976+ mult = monster_is_powerful(m_idx) ? 2 : 1;
3977+ dam = rlev / 3 * (mult / div);
3978+ dice_num = 4;
3979+ dice_side = 8;
3980+ break;
3981+
3982+ /* RF5_BO_FIRE */
3983+ case RF5_SPELL_START + 18:
3984+ mult = monster_is_powerful(m_idx) ? 2 : 1;
3985+ dam = rlev / 3 * (mult / div);
3986+ dice_num = 9;
3987+ dice_side = 8;
3988+ break;
3989+
3990+ /* RF5_BO_COLD */
3991+ case RF5_SPELL_START + 19:
3992+ mult = monster_is_powerful(m_idx) ? 2 : 1;
3993+ dam = rlev / 3 * (mult / div);
3994+ dice_num = 6;
3995+ dice_side = 8;
3996+ break;
3997+
3998+ /* RF5_BA_LITE */
3999+ case RF5_SPELL_START + 20:
4000+ dam = (rlev * 4) + 50;
4001+ dice_num = 10;
4002+ dice_side = 10;
4003+ break;
4004+
4005+ /* RF5_BO_NETH */
4006+ case RF5_SPELL_START + 21:
4007+ dam = 30 + (rlev * 4) / (monster_is_powerful(m_idx) ? 2 : 3);
4008+ dice_num = 5;
4009+ dice_side = 5;
4010+ break;
4011+
4012+ /* RF5_BO_WATE */
4013+ case RF5_SPELL_START + 22:
4014+ dam = (rlev * 3 / (monster_is_powerful(m_idx) ? 2 : 3));
4015+ dice_num = 10;
4016+ dice_side = 10;
4017+ break;
4018+
4019+ /* RF5_BO_MANA */
4020+ case RF5_SPELL_START + 23:
4021+ dam = 50;
4022+ dice_num = 1;
4023+ dice_side = rlev * 7 / 2;
4024+ break;
4025+
4026+ /* RF5_BO_PLAS */
4027+ case RF5_SPELL_START + 24:
4028+ dam = 10 + (rlev * 3 / (monster_is_powerful(m_idx) ? 2 : 3));
4029+ dice_num = 8;
4030+ dice_side = 7;
4031+ break;
4032+
4033+ /* RF5_BO_ICEE */
4034+ case RF5_SPELL_START + 25:
4035+ dam = (rlev * 3 / (monster_is_powerful(m_idx) ? 2 : 3));
4036+ dice_num = 6;
4037+ dice_side = 6;
4038+ break;
4039+
4040+ /* RF5_MISSILE */
4041+ case RF5_SPELL_START + 26:
4042+ dam = (rlev / 3);
4043+ dice_num = 2;
4044+ dice_side = 6;
4045+ break;
4046+
4047+ case RF5_SPELL_START + 27: return -1; /* RF5_SCARE */
4048+ case RF5_SPELL_START + 28: return -1; /* RF5_BLIND */
4049+ case RF5_SPELL_START + 29: return -1; /* RF5_CONF */
4050+ case RF5_SPELL_START + 30: return -1; /* RF5_SLOW */
4051+ case RF5_SPELL_START + 31: return -1; /* RF5_HOLD */
4052+ case RF6_SPELL_START + 0: return -1; /* RF6_HASTE */
4053+
4054+ /* RF6_HAND_DOOM */
4055+ case RF6_SPELL_START + 1:
4056+ mult = p_ptr->chp;
4057+ div = 100;
4058+ dam = 40 * (mult / div);
4059+ dice_num = 1;
4060+ dice_side = 20;
4061+ break;
4062+
4063+ case RF6_SPELL_START + 2: return -1; /* RF6_HEAL */
4064+ case RF6_SPELL_START + 3: return -1; /* RF6_INVULNER */
4065+ case RF6_SPELL_START + 4: return -1; /* RF6_BLINK */
4066+ case RF6_SPELL_START + 5: return -1; /* RF6_TPORT */
4067+ case RF6_SPELL_START + 6: return -1; /* RF6_WORLD */
4068+ case RF6_SPELL_START + 7: return -1; /* RF6_SPECIAL */
4069+ case RF6_SPELL_START + 8: return -1; /* RF6_TELE_TO */
4070+ case RF6_SPELL_START + 9: return -1; /* RF6_TELE_AWAY */
4071+ case RF6_SPELL_START + 10: return -1; /* RF6_TELE_LEVEL */
4072+
4073+ /* RF6_PSY_SPEAR */
4074+ case RF6_SPELL_START + 11:
4075+ dam = monster_is_powerful(m_idx) ? 150 : 100;
4076+ dice_num = 1;
4077+ dice_side = monster_is_powerful(m_idx) ? (rlev * 2) : (rlev * 3 / 2);
4078+ break;
4079+
4080+ case RF6_SPELL_START + 12: return -1; /* RF6_DARKNESS */
4081+ case RF6_SPELL_START + 13: return -1; /* RF6_TRAPS */
4082+ case RF6_SPELL_START + 14: return -1; /* RF6_FORGET */
4083+ case RF6_SPELL_START + 15: return -1; /* RF6_RAISE_DEAD */
4084+ case RF6_SPELL_START + 16: return -1; /* RF6_S_KIN */
4085+ case RF6_SPELL_START + 17: return -1; /* RF6_S_CYBER */
4086+ case RF6_SPELL_START + 18: return -1; /* RF6_S_MONSTER */
4087+ case RF6_SPELL_START + 19: return -1; /* RF6_S_MONSTER */
4088+ case RF6_SPELL_START + 20: return -1; /* RF6_S_ANT */
4089+ case RF6_SPELL_START + 21: return -1; /* RF6_S_SPIDER */
4090+ case RF6_SPELL_START + 22: return -1; /* RF6_S_HOUND */
4091+ case RF6_SPELL_START + 23: return -1; /* RF6_S_HYDRA */
4092+ case RF6_SPELL_START + 24: return -1; /* RF6_S_ANGEL */
4093+ case RF6_SPELL_START + 25: return -1; /* RF6_S_DEMON */
4094+ case RF6_SPELL_START + 26: return -1; /* RF6_S_UNDEAD */
4095+ case RF6_SPELL_START + 27: return -1; /* RF6_S_DRAGON */
4096+ case RF6_SPELL_START + 28: return -1; /* RF6_S_HI_UNDEAD */
4097+ case RF6_SPELL_START + 29: return -1; /* RF6_S_HI_DRAGON */
4098+ case RF6_SPELL_START + 30: return -1; /* RF6_S_AMBERITES */
4099+ case RF6_SPELL_START + 31: return -1; /* RF6_S_UNIQUE */
4100+ }
4101+
4102+ switch (TYPE)
4103+ {
4104+ case DAM_MAX: dam += mult / div * maxroll(dice_num, dice_side); break;
4105+ case DAM_MIN: dam += mult / div * dice_num * 1; break;
4106+ case DAM_ROLL: dam += mult / div * damroll(dice_num, dice_side); break;
4107+ }
4108+
4109+ return dam;
4110+}
--- a/src/object2.c
+++ b/src/object2.c
@@ -6898,18 +6898,15 @@ object_type *choose_warning_item(void)
68986898 * @param m_ptr 魔法を行使するモンスターの構造体参照ポインタ
68996899 * @param typ 効果属性のID
69006900 * @param dam 基本ダメージ
6901- * @param limit ダメージの限界値
69026901 * @param max 算出した最大ダメージを返すポインタ
69036902 * @return なし
69046903 */
6905-static void spell_damcalc(monster_type *m_ptr, int typ, int dam, int limit, int *max)
6904+static void spell_damcalc(monster_type *m_ptr, int typ, int dam, int *max)
69066905 {
69076906 monster_race *r_ptr = &r_info[m_ptr->r_idx];
69086907 int rlev = r_ptr->level;
69096908 bool ignore_wraith_form = FALSE;
69106909
6911- if (limit) dam = (dam > limit) ? limit : dam;
6912-
69136910 /* Vulnerability, resistance and immunity */
69146911 switch (typ)
69156912 {
@@ -7141,6 +7138,23 @@ static void spell_damcalc(monster_type *m_ptr, int typ, int dam, int limit, int
71417138 }
71427139
71437140 /*!
7141+* @brief 警告基準を定めるために魔法の効果属性に基づいて最大魔法ダメージを計算する。 /
7142+* Calculate spell damages
7143+* @param spell_num RF4ならRF4_SPELL_STARTのように32区切りのベースとなる数値
7144+* @param spell_flag RF4_SHRIEKなどのスペルフラグ
7145+* @param typ 効果属性のID
7146+* @param m_idx 魔法を行使するモンスターのID
7147+* @param max 算出した最大ダメージを返すポインタ
7148+* @return なし
7149+*/
7150+void spell_damcalc_by_spellnum(int spell_num, int spell_flag, int typ, int m_idx, int *max)
7151+{
7152+ monster_type *m_ptr = &m_list[m_idx];
7153+ int dam = monspell_damage(monspell_num(spell_num, spell_flag), m_idx, DAM_MAX);
7154+ spell_damcalc(m_ptr, typ, dam, max);
7155+}
7156+
7157+/*!
71447158 * @brief 警告基準を定めるためにモンスターの打撃最大ダメージを算出する /
71457159 * Calculate blow damages
71467160 * @param m_ptr 打撃を行使するモンスターの構造体参照ポインタ
@@ -7172,25 +7186,25 @@ static int blow_damcalc(monster_type *m_ptr, monster_blow *blow_ptr)
71727186 break;
71737187
71747188 case RBE_ACID:
7175- spell_damcalc(m_ptr, GF_ACID, dam, 0, &dummy_max);
7189+ spell_damcalc(m_ptr, GF_ACID, dam, &dummy_max);
71767190 dam = dummy_max;
71777191 check_wraith_form = FALSE;
71787192 break;
71797193
71807194 case RBE_ELEC:
7181- spell_damcalc(m_ptr, GF_ELEC, dam, 0, &dummy_max);
7195+ spell_damcalc(m_ptr, GF_ELEC, dam, &dummy_max);
71827196 dam = dummy_max;
71837197 check_wraith_form = FALSE;
71847198 break;
71857199
71867200 case RBE_FIRE:
7187- spell_damcalc(m_ptr, GF_FIRE, dam, 0, &dummy_max);
7201+ spell_damcalc(m_ptr, GF_FIRE, dam, &dummy_max);
71887202 dam = dummy_max;
71897203 check_wraith_form = FALSE;
71907204 break;
71917205
71927206 case RBE_COLD:
7193- spell_damcalc(m_ptr, GF_COLD, dam, 0, &dummy_max);
7207+ spell_damcalc(m_ptr, GF_COLD, dam, &dummy_max);
71947208 dam = dummy_max;
71957209 check_wraith_form = FALSE;
71967210 break;
@@ -7210,7 +7224,7 @@ static int blow_damcalc(monster_type *m_ptr, monster_blow *blow_ptr)
72107224 else
72117225 {
72127226 dam = (dam + 1) / 2;
7213- spell_damcalc(m_ptr, mbe_info[blow_ptr->effect].explode_type, dam, 0, &dummy_max);
7227+ spell_damcalc(m_ptr, mbe_info[blow_ptr->effect].explode_type, dam, &dummy_max);
72147228 dam = dummy_max;
72157229 }
72167230
@@ -7257,49 +7271,43 @@ bool process_warning(int xx, int yy)
72577271
72587272 /* Monster spells (only powerful ones)*/
72597273 if (projectable(my, mx, yy, xx))
7260- {
7261- int breath_dam_div3 = m_ptr->hp / 3;
7262- int breath_dam_div6 = m_ptr->hp / 6;
7274+ {
72637275 u32b f4 = r_ptr->flags4;
72647276 u32b f5 = r_ptr->flags5;
72657277 u32b f6 = r_ptr->flags6;
72667278
72677279 if (!(d_info[dungeon_type].flags1 & DF1_NO_MAGIC))
72687280 {
7269- int rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1);
7270- int storm_dam = rlev * 4 + 150;
7271- bool powerful = (bool)(r_ptr->flags2 & RF2_POWERFUL);
7272-
7273- if (f4 & RF4_BA_CHAO) spell_damcalc(m_ptr, GF_CHAOS, rlev * (powerful ? 3 : 2) + 100, 0, &dam_max0);
7274- if (f5 & RF5_BA_MANA) spell_damcalc(m_ptr, GF_MANA, storm_dam, 0, &dam_max0);
7275- if (f5 & RF5_BA_DARK) spell_damcalc(m_ptr, GF_DARK, storm_dam, 0, &dam_max0);
7276- if (f5 & RF5_BA_LITE) spell_damcalc(m_ptr, GF_LITE, storm_dam, 0, &dam_max0);
7277- if (f6 & RF6_HAND_DOOM) spell_damcalc(m_ptr, GF_HAND_DOOM, p_ptr->chp * 6 / 10, 0, &dam_max0);
7278- if (f6 & RF6_PSY_SPEAR) spell_damcalc(m_ptr, GF_PSY_SPEAR, powerful ? (rlev * 2 + 150) : (rlev * 3 / 2 + 100), 0, &dam_max0);
7281+ if (f4 & RF4_BA_CHAO) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BA_CHAO, GF_CHAOS, c_ptr->m_idx, &dam_max0);
7282+ if (f5 & RF5_BA_MANA) spell_damcalc_by_spellnum(RF5_SPELL_START, RF5_BA_MANA, GF_MANA, c_ptr->m_idx, &dam_max0);
7283+ if (f5 & RF5_BA_DARK) spell_damcalc_by_spellnum(RF5_SPELL_START, RF5_BA_DARK, GF_DARK, c_ptr->m_idx, &dam_max0);
7284+ if (f5 & RF5_BA_LITE) spell_damcalc_by_spellnum(RF5_SPELL_START, RF5_BA_LITE, GF_LITE, c_ptr->m_idx, &dam_max0);
7285+ if (f6 & RF6_HAND_DOOM) spell_damcalc_by_spellnum(RF6_SPELL_START, RF6_HAND_DOOM, GF_HAND_DOOM, c_ptr->m_idx, &dam_max0);
7286+ if (f6 & RF6_PSY_SPEAR) spell_damcalc_by_spellnum(RF6_SPELL_START, RF6_PSY_SPEAR, GF_PSY_SPEAR, c_ptr->m_idx, &dam_max0);
72797287 }
7280- if (f4 & RF4_ROCKET) spell_damcalc(m_ptr, GF_ROCKET, m_ptr->hp / 4, 800, &dam_max0);
7281- if (f4 & RF4_BR_ACID) spell_damcalc(m_ptr, GF_ACID, breath_dam_div3, 1600, &dam_max0);
7282- if (f4 & RF4_BR_ELEC) spell_damcalc(m_ptr, GF_ELEC, breath_dam_div3, 1600, &dam_max0);
7283- if (f4 & RF4_BR_FIRE) spell_damcalc(m_ptr, GF_FIRE, breath_dam_div3, 1600, &dam_max0);
7284- if (f4 & RF4_BR_COLD) spell_damcalc(m_ptr, GF_COLD, breath_dam_div3, 1600, &dam_max0);
7285- if (f4 & RF4_BR_POIS) spell_damcalc(m_ptr, GF_POIS, breath_dam_div3, 800, &dam_max0);
7286- if (f4 & RF4_BR_NETH) spell_damcalc(m_ptr, GF_NETHER, breath_dam_div6, 550, &dam_max0);
7287- if (f4 & RF4_BR_LITE) spell_damcalc(m_ptr, GF_LITE, breath_dam_div6, 400, &dam_max0);
7288- if (f4 & RF4_BR_DARK) spell_damcalc(m_ptr, GF_DARK, breath_dam_div6, 400, &dam_max0);
7289- if (f4 & RF4_BR_CONF) spell_damcalc(m_ptr, GF_CONFUSION, breath_dam_div6, 450, &dam_max0);
7290- if (f4 & RF4_BR_SOUN) spell_damcalc(m_ptr, GF_SOUND, breath_dam_div6, 450, &dam_max0);
7291- if (f4 & RF4_BR_CHAO) spell_damcalc(m_ptr, GF_CHAOS, breath_dam_div6, 600, &dam_max0);
7292- if (f4 & RF4_BR_DISE) spell_damcalc(m_ptr, GF_DISENCHANT, breath_dam_div6, 500, &dam_max0);
7293- if (f4 & RF4_BR_NEXU) spell_damcalc(m_ptr, GF_NEXUS, breath_dam_div3, 250, &dam_max0);
7294- if (f4 & RF4_BR_TIME) spell_damcalc(m_ptr, GF_TIME, breath_dam_div3, 150, &dam_max0);
7295- if (f4 & RF4_BR_INER) spell_damcalc(m_ptr, GF_INERTIA, breath_dam_div6, 200, &dam_max0);
7296- if (f4 & RF4_BR_GRAV) spell_damcalc(m_ptr, GF_GRAVITY, breath_dam_div3, 200, &dam_max0);
7297- if (f4 & RF4_BR_SHAR) spell_damcalc(m_ptr, GF_SHARDS, breath_dam_div6, 500, &dam_max0);
7298- if (f4 & RF4_BR_PLAS) spell_damcalc(m_ptr, GF_PLASMA, breath_dam_div6, 150, &dam_max0);
7299- if (f4 & RF4_BR_WALL) spell_damcalc(m_ptr, GF_FORCE, breath_dam_div6, 200, &dam_max0);
7300- if (f4 & RF4_BR_MANA) spell_damcalc(m_ptr, GF_MANA, breath_dam_div3, 250, &dam_max0);
7301- if (f4 & RF4_BR_NUKE) spell_damcalc(m_ptr, GF_NUKE, breath_dam_div3, 800, &dam_max0);
7302- if (f4 & RF4_BR_DISI) spell_damcalc(m_ptr, GF_DISINTEGRATE, breath_dam_div6, 150, &dam_max0);
7288+ if (f4 & RF4_ROCKET) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_ROCKET, GF_ROCKET, c_ptr->m_idx, &dam_max0);
7289+ if (f4 & RF4_BR_ACID) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_ACID, GF_ACID, c_ptr->m_idx, &dam_max0);
7290+ if (f4 & RF4_BR_ELEC) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_ELEC, GF_ELEC, c_ptr->m_idx, &dam_max0);
7291+ if (f4 & RF4_BR_FIRE) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_FIRE, GF_FIRE, c_ptr->m_idx, &dam_max0);
7292+ if (f4 & RF4_BR_COLD) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_COLD, GF_COLD, c_ptr->m_idx, &dam_max0);
7293+ if (f4 & RF4_BR_POIS) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_POIS, GF_POIS, c_ptr->m_idx, &dam_max0);
7294+ if (f4 & RF4_BR_NETH) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_NETH, GF_NETHER, c_ptr->m_idx, &dam_max0);
7295+ if (f4 & RF4_BR_LITE) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_LITE, GF_LITE, c_ptr->m_idx, &dam_max0);
7296+ if (f4 & RF4_BR_DARK) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_DARK, GF_DARK, c_ptr->m_idx, &dam_max0);
7297+ if (f4 & RF4_BR_CONF) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_CONF, GF_CONFUSION, c_ptr->m_idx, &dam_max0);
7298+ if (f4 & RF4_BR_SOUN) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_SOUN, GF_SOUND, c_ptr->m_idx, &dam_max0);
7299+ if (f4 & RF4_BR_CHAO) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_CHAO, GF_CHAOS, c_ptr->m_idx, &dam_max0);
7300+ if (f4 & RF4_BR_DISE) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_DISE, GF_DISENCHANT, c_ptr->m_idx, &dam_max0);
7301+ if (f4 & RF4_BR_NEXU) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_NEXU, GF_NEXUS, c_ptr->m_idx, &dam_max0);
7302+ if (f4 & RF4_BR_TIME) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_TIME, GF_TIME, c_ptr->m_idx, &dam_max0);
7303+ if (f4 & RF4_BR_INER) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_INER, GF_INERTIA, c_ptr->m_idx, &dam_max0);
7304+ if (f4 & RF4_BR_GRAV) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_GRAV, GF_GRAVITY, c_ptr->m_idx, &dam_max0);
7305+ if (f4 & RF4_BR_SHAR) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_SHAR, GF_SHARDS, c_ptr->m_idx, &dam_max0);
7306+ if (f4 & RF4_BR_PLAS) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_PLAS, GF_PLASMA, c_ptr->m_idx, &dam_max0);
7307+ if (f4 & RF4_BR_WALL) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_WALL, GF_FORCE, c_ptr->m_idx, &dam_max0);
7308+ if (f4 & RF4_BR_MANA) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_MANA, GF_MANA, c_ptr->m_idx, &dam_max0);
7309+ if (f4 & RF4_BR_NUKE) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_NUKE, GF_NUKE, c_ptr->m_idx, &dam_max0);
7310+ if (f4 & RF4_BR_DISI) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_DISI, GF_DISINTEGRATE, c_ptr->m_idx, &dam_max0);
73037311 }
73047312
73057313 /* Monster melee attacks */
@@ -7336,20 +7344,14 @@ bool process_warning(int xx, int yy)
73367344 {
73377345 object_type *o_ptr = choose_warning_item();
73387346
7339- if (o_ptr) object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
7340-#ifdef JP
7341- else strcpy(o_name, "体"); /* Warning ability without item */
7342- msg_format("%sが鋭く震えた!", o_name);
7343-#else
7344- else strcpy(o_name, "body"); /* Warning ability without item */
7345- msg_format("Your %s pulsates sharply!", o_name);
7346-#endif
7347+ if (o_ptr)
7348+ object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
7349+ else
7350+ strcpy(o_name, _("体", "body")); /* Warning ability without item */
7351+ msg_format(_("%sが鋭く震えた!", "Your %s pulsates sharply!"), o_name);
7352+
73477353 disturb(0, 1);
7348-#ifdef JP
7349- return get_check("本当にこのまま進むか?");
7350-#else
7351- return get_check("Really want to go ahead? ");
7352-#endif
7354+ return get_check(_("本当にこのまま進むか?", "Really want to go ahead? "));
73537355 }
73547356 }
73557357 else old_damage = old_damage / 2;
@@ -7360,20 +7362,13 @@ bool process_warning(int xx, int yy)
73607362 {
73617363 object_type *o_ptr = choose_warning_item();
73627364
7363- if (o_ptr) object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
7364-#ifdef JP
7365- else strcpy(o_name, "体"); /* Warning ability without item */
7366- msg_format("%sが震えた!", o_name);
7367-#else
7368- else strcpy(o_name, "body"); /* Warning ability without item */
7369- msg_format("Your %s pulsates!", o_name);
7370-#endif
7365+ if (o_ptr)
7366+ object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
7367+ else
7368+ strcpy(o_name, _("体", "body")); /* Warning ability without item */
7369+ msg_format(_("%sが鋭く震えた!", "Your %s pulsates sharply!"), o_name);
73717370 disturb(0, 1);
7372-#ifdef JP
7373- return get_check("本当にこのまま進むか?");
7374-#else
7375- return get_check("Really want to go ahead? ");
7376-#endif
7371+ return get_check(_("本当にこのまま進むか?", "Really want to go ahead? "));
73777372 }
73787373
73797374 return TRUE;
Show on old repository browser