OSDN Git Service

[Refactor] #38997 summon_possible() とraise_possible() にfloor_type * 引数を追加 / Added...
authorHourier <hourier@users.sourceforge.jp>
Sat, 11 Jan 2020 04:12:52 +0000 (13:12 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sat, 11 Jan 2020 04:17:26 +0000 (13:17 +0900)
src/monster-spell.h
src/mspells1.c
src/mspells2.c
src/mspells4.c

index d2f26a4..e20b5d3 100644 (file)
@@ -307,8 +307,8 @@ extern const concptr monster_powers_short[MAX_MONSPELLS];
 
 /* mspells1.c */
 extern bool clean_shot(POSITION y1, POSITION x1, POSITION y2, POSITION x2, bool is_friend);
-extern bool summon_possible(POSITION y1, POSITION x1);
-extern bool raise_possible(monster_type *m_ptr);
+extern bool summon_possible(floor_type *floor_ptr, POSITION y1, POSITION x1);
+extern bool raise_possible(floor_type *floor_ptr, monster_type *m_ptr);
 extern bool dispel_check(player_type *creature_ptr, MONSTER_IDX m_idx);
 extern bool spell_is_inate(SPELL_IDX spell);
 extern bool make_attack_spell(MONSTER_IDX m_idx, player_type *target_ptr);
index cab5f51..efee732 100644 (file)
@@ -378,12 +378,12 @@ static void remove_bad_spells(MONSTER_IDX m_idx, player_type *target_ptr, u32b *
 /*!
  * @brief モンスターにとって所定の地点が召還に相応しい地点かどうかを返す。 /
  * Determine if there is a space near the player in which a summoned creature can appear
- * @param caster_ptr プレーヤーへの参照ポインタ
+ * @param floor_ptr 現在フロアへの参照ポインタ
  * @param y1 判定を行いたいマスのY座標
  * @param x1 判定を行いたいマスのX座標
  * @return 召還に相応しいならばTRUEを返す
  */
-bool summon_possible(POSITION y1, POSITION x1)
+bool summon_possible(floor_type *floor_ptr, POSITION y1, POSITION x1)
 {
        POSITION y, x;
 
@@ -393,7 +393,7 @@ bool summon_possible(POSITION y1, POSITION x1)
                for (x = x1 - 2; x <= x1 + 2; x++)
                {
                        /* Ignore illegal locations */
-                       if (!in_bounds(p_ptr->current_floor_ptr, y, x)) continue;
+                       if (!in_bounds(floor_ptr, y, x)) continue;
 
                        /* Only check a circular area */
                        if (distance(y1, x1, y, x)>2) continue;
@@ -402,7 +402,7 @@ bool summon_possible(POSITION y1, POSITION x1)
                        if (pattern_tile(y, x)) continue;
 
                        /* Require empty floor grid in line of projection */
-                       if (cave_empty_bold(p_ptr->current_floor_ptr, y, x) && projectable(p_ptr->current_floor_ptr, y1, x1, y, x) && projectable(p_ptr->current_floor_ptr, y, x, y1, x1)) return TRUE;
+                       if (cave_empty_bold(floor_ptr, y, x) && projectable(floor_ptr, y1, x1, y, x) && projectable(floor_ptr, y, x, y1, x1)) return TRUE;
                }
        }
 
@@ -413,11 +413,11 @@ bool summon_possible(POSITION y1, POSITION x1)
 /*!
  * @brief モンスターにとって死者復活を行うべき状態かどうかを返す /
  * Determine if there is a space near the player in which a summoned creature can appear
- * @param caster_ptr プレーヤーへの参照ポインタ
+ * @param floor_type 現在フロアへの参照ポインタ
  * @param m_ptr 判定を行いたいモンスターの構造体参照ポインタ
  * @return 死者復活が有効な状態ならばTRUEを返す。
  */
-bool raise_possible(monster_type *m_ptr)
+bool raise_possible(floor_type *floor_ptr, monster_type *m_ptr)
 {
        POSITION xx, yy;
        POSITION y = m_ptr->fy;
@@ -430,14 +430,14 @@ bool raise_possible(monster_type *m_ptr)
                for (yy = y - 5; yy <= y + 5; yy++)
                {
                        if (distance(y, x, yy, xx) > 5) continue;
-                       if (!los(p_ptr->current_floor_ptr, y, x, yy, xx)) continue;
-                       if (!projectable(p_ptr->current_floor_ptr, y, x, yy, xx)) continue;
+                       if (!los(floor_ptr, y, x, yy, xx)) continue;
+                       if (!projectable(floor_ptr, y, x, yy, xx)) continue;
 
-                       g_ptr = &p_ptr->current_floor_ptr->grid_array[yy][xx];
+                       g_ptr = &floor_ptr->grid_array[yy][xx];
                        /* Scan the pile of objects */
                        for (this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
                        {
-                               object_type *o_ptr = &p_ptr->current_floor_ptr->o_list[this_o_idx];
+                               object_type *o_ptr = &floor_ptr->o_list[this_o_idx];
                                next_o_idx = o_ptr->next_o_idx;
 
                                /* Known to be worthless? */
@@ -448,6 +448,7 @@ bool raise_possible(monster_type *m_ptr)
                        }
                }
        }
+
        return FALSE;
 }
 
@@ -1603,6 +1604,7 @@ bool make_attack_spell(MONSTER_IDX m_idx, player_type *target_ptr)
        /* No spells left */
        if (!f4 && !f5 && !f6) return FALSE;
 
+       floor_type *floor_ptr = target_ptr->current_floor_ptr;
        if (!(r_ptr->flags2 & RF2_STUPID))
        {
                if (!target_ptr->csp) f5 &= ~(RF5_DRAIN_MANA);
@@ -1623,7 +1625,7 @@ bool make_attack_spell(MONSTER_IDX m_idx, player_type *target_ptr)
                if (((f4 & RF4_SUMMON_MASK) ||
                     (f5 & RF5_SUMMON_MASK) ||
                     (f6 & RF6_SUMMON_MASK)) &&
-                   !(summon_possible(y, x)))
+                   !(summon_possible(floor_ptr, y, x)))
                {
                        /* Remove summoning spells */
                        f4 &= ~(RF4_SUMMON_MASK);
@@ -1632,7 +1634,7 @@ bool make_attack_spell(MONSTER_IDX m_idx, player_type *target_ptr)
                }
 
                /* Check for a possible raise dead */
-               if ((f6 & RF6_RAISE_DEAD) && !raise_possible(m_ptr))
+               if ((f6 & RF6_RAISE_DEAD) && !raise_possible(floor_ptr, m_ptr))
                {
                        /* Remove raise dead spell */
                        f6 &= ~(RF6_RAISE_DEAD);
@@ -1641,7 +1643,7 @@ bool make_attack_spell(MONSTER_IDX m_idx, player_type *target_ptr)
                /* Special moves restriction */
                if (f6 & RF6_SPECIAL)
                {
-                       if ((m_ptr->r_idx == MON_ROLENTO) && !summon_possible(y, x))
+                       if ((m_ptr->r_idx == MON_ROLENTO) && !summon_possible(floor_ptr, y, x))
                        {
                                f6 &= ~(RF6_SPECIAL);
                        }
@@ -1735,7 +1737,7 @@ bool make_attack_spell(MONSTER_IDX m_idx, player_type *target_ptr)
        }
 
        /* Hex: Anti Magic Barrier */
-       if (!spell_is_inate(thrown_spell) && magic_barrier(p_ptr, m_idx))
+       if (!spell_is_inate(thrown_spell) && magic_barrier(target_ptr, m_idx))
        {
                msg_format(_("反魔法バリアが%^sの呪文をかき消した。", "Anti magic barrier cancels the spell which %^s casts."), m_name);
                return TRUE;
index 3323c09..29da087 100644 (file)
@@ -599,7 +599,7 @@ bool monst_spell_monst(player_type *target_ptr, MONSTER_IDX m_idx)
                if (((f4 & RF4_SUMMON_MASK) ||
                     (f5 & RF5_SUMMON_MASK) ||
                     (f6 & RF6_SUMMON_MASK)) &&
-                   !(summon_possible(t_ptr->fy, t_ptr->fx)))
+                   !(summon_possible(floor_ptr, t_ptr->fy, t_ptr->fx)))
                {
                        /* Remove summoning spells */
                        f4 &= ~(RF4_SUMMON_MASK);
@@ -615,7 +615,7 @@ bool monst_spell_monst(player_type *target_ptr, MONSTER_IDX m_idx)
                }
 
                /* Check for a possible raise dead */
-               if ((f6 & RF6_RAISE_DEAD) && !raise_possible(m_ptr))
+               if ((f6 & RF6_RAISE_DEAD) && !raise_possible(floor_ptr, m_ptr))
                {
                        /* Remove raise dead spell */
                        f6 &= ~(RF6_RAISE_DEAD);
@@ -624,7 +624,7 @@ bool monst_spell_monst(player_type *target_ptr, MONSTER_IDX m_idx)
                /* Special moves restriction */
                if (f6 & RF6_SPECIAL)
                {
-                       if ((m_ptr->r_idx == MON_ROLENTO) && !summon_possible(t_ptr->fy, t_ptr->fx))
+                       if ((m_ptr->r_idx == MON_ROLENTO) && !summon_possible(floor_ptr, t_ptr->fy, t_ptr->fx))
                        {
                                f6 &= ~(RF6_SPECIAL);
                        }
index 7786b33..a1da1c0 100644 (file)
@@ -1934,11 +1934,13 @@ HIT_POINT spell_RF6_WORLD(player_type *target_ptr, MONSTER_IDX m_idx)
 
 /*!
 * @brief バーノール・ルパートのRF6_SPECIALの処理。分裂・合体。 /
+* @param player_ptr プレーヤーへの参照ポインタ
 * @param m_idx 呪文を唱えるモンスターID
 */
-HIT_POINT spell_RF6_SPECIAL_BANORLUPART(MONSTER_IDX m_idx)
+HIT_POINT spell_RF6_SPECIAL_BANORLUPART(player_type *target_ptr, MONSTER_IDX m_idx)
 {
-       monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[m_idx];
+       floor_type *floor_ptr = target_ptr->current_floor_ptr;
+       monster_type *m_ptr = &floor_ptr->m_list[m_idx];
        HIT_POINT dummy_hp, dummy_maxhp;
        MONSTER_IDX k;
        POSITION dummy_y = m_ptr->fy;
@@ -1951,16 +1953,16 @@ HIT_POINT spell_RF6_SPECIAL_BANORLUPART(MONSTER_IDX m_idx)
                        dummy_hp = (m_ptr->hp + 1) / 2;
                        dummy_maxhp = m_ptr->maxhp / 2;
                        
-                       if (p_ptr->current_floor_ptr->inside_arena || p_ptr->phase_out || !summon_possible(m_ptr->fy, m_ptr->fx)) 
+                       if (floor_ptr->inside_arena || target_ptr->phase_out || !summon_possible(floor_ptr, m_ptr->fy, m_ptr->fx)) 
                                return -1;
 
-                       delete_monster_idx(p_ptr->current_floor_ptr->grid_array[m_ptr->fy][m_ptr->fx].m_idx);
+                       delete_monster_idx(floor_ptr->grid_array[m_ptr->fy][m_ptr->fx].m_idx);
                        summon_named_creature(0, dummy_y, dummy_x, MON_BANOR, mode);
-                       p_ptr->current_floor_ptr->m_list[hack_m_idx_ii].hp = dummy_hp;
-                       p_ptr->current_floor_ptr->m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
+                       floor_ptr->m_list[hack_m_idx_ii].hp = dummy_hp;
+                       floor_ptr->m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
                        summon_named_creature(0, dummy_y, dummy_x, MON_LUPART, mode);
-                       p_ptr->current_floor_ptr->m_list[hack_m_idx_ii].hp = dummy_hp;
-                       p_ptr->current_floor_ptr->m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
+                       floor_ptr->m_list[hack_m_idx_ii].hp = dummy_hp;
+                       floor_ptr->m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
 
                        msg_print(_("『バーノール・ルパート』が分裂した!","Banor=Rupart splits in two person!"));
                        break;
@@ -1973,27 +1975,28 @@ HIT_POINT spell_RF6_SPECIAL_BANORLUPART(MONSTER_IDX m_idx)
                        if (!r_info[MON_BANOR].cur_num || !r_info[MON_LUPART].cur_num) 
                                return -1;
 
-                       for (k = 1; k < p_ptr->current_floor_ptr->m_max; k++)
+                       for (k = 1; k < floor_ptr->m_max; k++)
                        {
-                               if (p_ptr->current_floor_ptr->m_list[k].r_idx == MON_BANOR || p_ptr->current_floor_ptr->m_list[k].r_idx == MON_LUPART)
+                               if (floor_ptr->m_list[k].r_idx == MON_BANOR || floor_ptr->m_list[k].r_idx == MON_LUPART)
                                {
-                                       dummy_hp += p_ptr->current_floor_ptr->m_list[k].hp;
-                                       dummy_maxhp += p_ptr->current_floor_ptr->m_list[k].maxhp;
-                                       if (p_ptr->current_floor_ptr->m_list[k].r_idx != m_ptr->r_idx)
+                                       dummy_hp += floor_ptr->m_list[k].hp;
+                                       dummy_maxhp += floor_ptr->m_list[k].maxhp;
+                                       if (floor_ptr->m_list[k].r_idx != m_ptr->r_idx)
                                        {
-                                               dummy_y = p_ptr->current_floor_ptr->m_list[k].fy;
-                                               dummy_x = p_ptr->current_floor_ptr->m_list[k].fx;
+                                               dummy_y = floor_ptr->m_list[k].fy;
+                                               dummy_x = floor_ptr->m_list[k].fx;
                                        }
                                        delete_monster_idx(k);
                                }
                        }
                        summon_named_creature(0, dummy_y, dummy_x, MON_BANORLUPART, mode);
-                       p_ptr->current_floor_ptr->m_list[hack_m_idx_ii].hp = dummy_hp;
-                       p_ptr->current_floor_ptr->m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
+                       floor_ptr->m_list[hack_m_idx_ii].hp = dummy_hp;
+                       floor_ptr->m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
 
                        msg_print(_("『バーノール』と『ルパート』が合体した!", "Banor and Rupart combine into one!"));
                        break;
        }
+
        return 0;
 }
 
@@ -2139,10 +2142,11 @@ HIT_POINT spell_RF6_SPECIAL_B(player_type *target_ptr, POSITION y, POSITION x, M
 */
 HIT_POINT spell_RF6_SPECIAL(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *m_ptr = &p_ptr->current_floor_ptr->m_list[m_idx];
+       floor_type *floor_ptr = target_ptr->current_floor_ptr;
+       monster_type    *m_ptr = &floor_ptr->m_list[m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
 
-       disturb(p_ptr, TRUE, TRUE);
+       disturb(target_ptr, TRUE, TRUE);
        switch (m_ptr->r_idx)
        {
                case MON_OHMU:
@@ -2152,7 +2156,7 @@ HIT_POINT spell_RF6_SPECIAL(player_type *target_ptr, POSITION y, POSITION x, MON
                case MON_BANORLUPART:
                case MON_BANOR:
                case MON_LUPART:
-                       return spell_RF6_SPECIAL_BANORLUPART(m_idx);
+                       return spell_RF6_SPECIAL_BANORLUPART(target_ptr, m_idx);
 
                case MON_ROLENTO:
                        return spell_RF6_SPECIAL_ROLENTO(y, x, m_idx, t_idx, TARGET_TYPE);
@@ -3165,12 +3169,13 @@ void spell_RF6_S_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t
 
 /*!
 * @brief ナズグル戦隊召喚の処理。 /
+* @param target_ptr プレーヤーへの参照ポインタ
 * @param y 対象の地点のy座標
 * @param x 対象の地点のx座標
 * @param m_idx 呪文を唱えるモンスターID
 * @return 召喚したモンスターの数を返す。
 */
-MONSTER_NUMBER summon_NAZGUL(POSITION y, POSITION x, MONSTER_IDX m_idx)
+MONSTER_NUMBER summon_NAZGUL(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx)
 {
        BIT_FLAGS mode = 0L;
        int count = 0, k;
@@ -3179,26 +3184,27 @@ MONSTER_NUMBER summon_NAZGUL(POSITION y, POSITION x, MONSTER_IDX m_idx)
        GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
 
-       if (p_ptr->blind)
+       if (target_ptr->blind)
                msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
        else
                msg_format(_("%^sが魔法で幽鬼戦隊を召喚した!", "%^s magically summons rangers of Nazgul!"), m_name);
 
        msg_print(NULL);
 
+       floor_type *floor_ptr = target_ptr->current_floor_ptr;
        for (k = 0; k < 30; k++)
        {
-               if (!summon_possible(cy, cx) || !cave_empty_bold(p_ptr->current_floor_ptr, cy, cx))
+               if (!summon_possible(floor_ptr, cy, cx) || !cave_empty_bold(floor_ptr, cy, cx))
                {
                        int j;
                        for (j = 100; j > 0; j--)
                        {
-                               scatter(p_ptr->current_floor_ptr, &cy, &cx, y, x, 2, 0);
-                               if (cave_empty_bold(p_ptr->current_floor_ptr, cy, cx)) break;
+                               scatter(floor_ptr, &cy, &cx, y, x, 2, 0);
+                               if (cave_empty_bold(floor_ptr, cy, cx)) break;
                        }
                        if (!j) break;
                }
-               if (!cave_empty_bold(p_ptr->current_floor_ptr, cy, cx)) continue;
+               if (!cave_empty_bold(floor_ptr, cy, cx)) continue;
 
                if (summon_named_creature(m_idx, cy, cx, MON_NAZGUL, mode))
                {
@@ -3223,6 +3229,7 @@ MONSTER_NUMBER summon_NAZGUL(POSITION y, POSITION x, MONSTER_IDX m_idx)
 
 /*!
 * @brief RF6_S_HI_UNDEADの処理。強力なアンデッド召喚。 /
+* @param target_ptr プレーヤーへの参照ポインタ
 * @param y 対象の地点のy座標
 * @param x 対象の地点のx座標
 * @param m_idx 呪文を唱えるモンスターID
@@ -3230,23 +3237,24 @@ MONSTER_NUMBER summon_NAZGUL(POSITION y, POSITION x, MONSTER_IDX m_idx)
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_HI_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_HI_UNDEAD(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
        bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
-       monster_type    *m_ptr = &p_ptr->current_floor_ptr->m_list[m_idx];
+       floor_type *floor_ptr = target_ptr->current_floor_ptr;
+       monster_type    *m_ptr = &floor_ptr->m_list[m_idx];
        DEPTH rlev = monster_level_idx(m_idx);
        int k, count = 0;
        GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
 
-       disturb(p_ptr, TRUE, TRUE);
+       disturb(target_ptr, TRUE, TRUE);
 
        if (((m_ptr->r_idx == MON_MORGOTH) || (m_ptr->r_idx == MON_SAURON) || (m_ptr->r_idx == MON_ANGMAR)) &&
                ((r_info[MON_NAZGUL].cur_num + 2) < r_info[MON_NAZGUL].max_num) &&
                mon_to_player)
        {
-               count +=  summon_NAZGUL(y, x, m_idx);
+               count +=  summon_NAZGUL(target_ptr, y, x, m_idx);
        }
        else
        {       
@@ -3265,13 +3273,13 @@ void spell_RF6_S_HI_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_ID
                                count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | monster_u_mode(m_idx)));
                }
        }
-       if (p_ptr->blind && count && mon_to_player)
+       if (target_ptr->blind && count && mon_to_player)
        {
                msg_print(_("間近で何か多くのものが這い回る音が聞こえる。", "You hear many creepy things appear nearby."));
        }
        
        if (monster_near_player(m_idx, t_idx) && !see_monster(t_idx) && count && mon_to_mon)
-               p_ptr->current_floor_ptr->monster_noise = TRUE;
+               floor_ptr->monster_noise = TRUE;
 }
 
 /*!
@@ -3508,7 +3516,7 @@ HIT_POINT monspell_to_player(int SPELL_NUM, player_type *target_ptr, POSITION y,
        case RF6_SPELL_START + 25: spell_RF6_S_DEMON(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_DEMON */
        case RF6_SPELL_START + 26: spell_RF6_S_UNDEAD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF6_S_UNDEAD */
        case RF6_SPELL_START + 27: spell_RF6_S_DRAGON(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF6_S_DRAGON */
-       case RF6_SPELL_START + 28: spell_RF6_S_HI_UNDEAD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_HI_UNDEAD */
+       case RF6_SPELL_START + 28: spell_RF6_S_HI_UNDEAD(target_ptr, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_HI_UNDEAD */
        case RF6_SPELL_START + 29: spell_RF6_S_HI_DRAGON(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_HI_DRAGON */
        case RF6_SPELL_START + 30: spell_RF6_S_AMBERITES(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_AMBERITES */
        case RF6_SPELL_START + 31: spell_RF6_S_UNIQUE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF6_S_UNIQUE */
@@ -3623,7 +3631,7 @@ HIT_POINT monspell_to_monster(player_type *target_ptr, int SPELL_NUM, POSITION y
        case RF6_SPELL_START + 25: spell_RF6_S_DEMON(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_DEMON */
        case RF6_SPELL_START + 26: spell_RF6_S_UNDEAD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF6_S_UNDEAD */
        case RF6_SPELL_START + 27: spell_RF6_S_DRAGON(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF6_S_DRAGON */
-       case RF6_SPELL_START + 28: spell_RF6_S_HI_UNDEAD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_HI_UNDEAD */
+       case RF6_SPELL_START + 28: spell_RF6_S_HI_UNDEAD(target_ptr, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_HI_UNDEAD */
        case RF6_SPELL_START + 29: spell_RF6_S_HI_DRAGON(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_HI_DRAGON */
        case RF6_SPELL_START + 30: spell_RF6_S_AMBERITES(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_AMBERITES */
        case RF6_SPELL_START + 31: spell_RF6_S_UNIQUE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF6_S_UNIQUE */