OSDN Git Service

[Refactor] #38997 dispel_check() に player_type * 引数を追加. / Add player_type * argument...
authordeskull <deskull@users.sourceforge.jp>
Tue, 24 Dec 2019 08:35:12 +0000 (17:35 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Tue, 24 Dec 2019 08:35:12 +0000 (17:35 +0900)
src/monster-spell.h
src/mspells1.c
src/mspells2.c

index da33ff6..5053bee 100644 (file)
@@ -309,7 +309,7 @@ extern const concptr monster_powers_short[MAX_MONSPELLS];
 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 dispel_check(MONSTER_IDX m_idx);
+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);
 extern void beam(MONSTER_IDX m_idx, POSITION y, POSITION x, EFFECT_ID typ, int dam_hp, int monspell, int target_type);
index 52843b7..d736b40 100644 (file)
@@ -871,96 +871,96 @@ static bool spell_dispel(byte spell)
  * @param m_idx モンスターの構造体配列ID
  * @return 魔力消去をかけるべきならTRUEを返す。
  */
-bool dispel_check(MONSTER_IDX m_idx)
+bool dispel_check(player_type *creature_ptr, MONSTER_IDX m_idx)
 {
-       monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[m_idx];
+       monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[m_idx];
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
 
        /* Invulnabilty (including the song) */
-       if (IS_INVULN(p_ptr)) return (TRUE);
+       if (IS_INVULN(creature_ptr)) return (TRUE);
 
        /* Wraith form */
-       if (p_ptr->wraith_form) return (TRUE);
+       if (creature_ptr->wraith_form) return (TRUE);
 
        /* Shield */
-       if (p_ptr->shield) return (TRUE);
+       if (creature_ptr->shield) return (TRUE);
 
        /* Magic defence */
-       if (p_ptr->magicdef) return (TRUE);
+       if (creature_ptr->magicdef) return (TRUE);
 
        /* Multi Shadow */
-       if (p_ptr->multishadow) return (TRUE);
+       if (creature_ptr->multishadow) return (TRUE);
 
        /* Robe of dust */
-       if (p_ptr->dustrobe) return (TRUE);
+       if (creature_ptr->dustrobe) return (TRUE);
 
        /* Berserk Strength */
-       if (p_ptr->shero && (p_ptr->pclass != CLASS_BERSERKER)) return (TRUE);
+       if (creature_ptr->shero && (creature_ptr->pclass != CLASS_BERSERKER)) return (TRUE);
 
        /* Demon Lord */
-       if (p_ptr->mimic_form == MIMIC_DEMON_LORD) return (TRUE);
+       if (creature_ptr->mimic_form == MIMIC_DEMON_LORD) return (TRUE);
 
        /* Elemental resistances */
        if (r_ptr->flags4 & RF4_BR_ACID)
        {
-               if (!p_ptr->immune_acid && (p_ptr->oppose_acid || music_singing(p_ptr, MUSIC_RESIST))) return (TRUE);
-               if (p_ptr->special_defense & DEFENSE_ACID) return (TRUE);
+               if (!creature_ptr->immune_acid && (creature_ptr->oppose_acid || music_singing(creature_ptr, MUSIC_RESIST))) return (TRUE);
+               if (creature_ptr->special_defense & DEFENSE_ACID) return (TRUE);
        }
 
        if (r_ptr->flags4 & RF4_BR_FIRE)
        {
-               if (!((p_ptr->prace == RACE_DEMON) && p_ptr->lev > 44))
+               if (!((creature_ptr->prace == RACE_DEMON) && creature_ptr->lev > 44))
                {
-                       if (!p_ptr->immune_fire && (p_ptr->oppose_fire || music_singing(p_ptr, MUSIC_RESIST))) return (TRUE);
-                       if (p_ptr->special_defense & DEFENSE_FIRE) return (TRUE);
+                       if (!creature_ptr->immune_fire && (creature_ptr->oppose_fire || music_singing(creature_ptr, MUSIC_RESIST))) return (TRUE);
+                       if (creature_ptr->special_defense & DEFENSE_FIRE) return (TRUE);
                }
        }
 
        if (r_ptr->flags4 & RF4_BR_ELEC)
        {
-               if (!p_ptr->immune_elec && (p_ptr->oppose_elec || music_singing(p_ptr, MUSIC_RESIST))) return (TRUE);
-               if (p_ptr->special_defense & DEFENSE_ELEC) return (TRUE);
+               if (!creature_ptr->immune_elec && (creature_ptr->oppose_elec || music_singing(creature_ptr, MUSIC_RESIST))) return (TRUE);
+               if (creature_ptr->special_defense & DEFENSE_ELEC) return (TRUE);
        }
 
        if (r_ptr->flags4 & RF4_BR_COLD)
        {
-               if (!p_ptr->immune_cold && (p_ptr->oppose_cold || music_singing(p_ptr, MUSIC_RESIST))) return (TRUE);
-               if (p_ptr->special_defense & DEFENSE_COLD) return (TRUE);
+               if (!creature_ptr->immune_cold && (creature_ptr->oppose_cold || music_singing(creature_ptr, MUSIC_RESIST))) return (TRUE);
+               if (creature_ptr->special_defense & DEFENSE_COLD) return (TRUE);
        }
 
        if (r_ptr->flags4 & (RF4_BR_POIS | RF4_BR_NUKE))
        {
-               if (!((p_ptr->pclass == CLASS_NINJA) && p_ptr->lev > 44))
+               if (!((creature_ptr->pclass == CLASS_NINJA) && creature_ptr->lev > 44))
                {
-                       if (p_ptr->oppose_pois || music_singing(p_ptr, MUSIC_RESIST)) return (TRUE);
-                       if (p_ptr->special_defense & DEFENSE_POIS) return (TRUE);
+                       if (creature_ptr->oppose_pois || music_singing(creature_ptr, MUSIC_RESIST)) return (TRUE);
+                       if (creature_ptr->special_defense & DEFENSE_POIS) return (TRUE);
                }
        }
 
        /* Ultimate resistance */
-       if (p_ptr->ult_res) return (TRUE);
+       if (creature_ptr->ult_res) return (TRUE);
 
        /* Potion of Neo Tsuyosi special */
-       if (p_ptr->tsuyoshi) return (TRUE);
+       if (creature_ptr->tsuyoshi) return (TRUE);
 
        /* Elemental Brands */
-       if ((p_ptr->special_attack & ATTACK_ACID) && !(r_ptr->flagsr & RFR_EFF_IM_ACID_MASK)) return (TRUE);
-       if ((p_ptr->special_attack & ATTACK_FIRE) && !(r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK)) return (TRUE);
-       if ((p_ptr->special_attack & ATTACK_ELEC) && !(r_ptr->flagsr & RFR_EFF_IM_ELEC_MASK)) return (TRUE);
-       if ((p_ptr->special_attack & ATTACK_COLD) && !(r_ptr->flagsr & RFR_EFF_IM_COLD_MASK)) return (TRUE);
-       if ((p_ptr->special_attack & ATTACK_POIS) && !(r_ptr->flagsr & RFR_EFF_IM_POIS_MASK)) return (TRUE);
+       if ((creature_ptr->special_attack & ATTACK_ACID) && !(r_ptr->flagsr & RFR_EFF_IM_ACID_MASK)) return (TRUE);
+       if ((creature_ptr->special_attack & ATTACK_FIRE) && !(r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK)) return (TRUE);
+       if ((creature_ptr->special_attack & ATTACK_ELEC) && !(r_ptr->flagsr & RFR_EFF_IM_ELEC_MASK)) return (TRUE);
+       if ((creature_ptr->special_attack & ATTACK_COLD) && !(r_ptr->flagsr & RFR_EFF_IM_COLD_MASK)) return (TRUE);
+       if ((creature_ptr->special_attack & ATTACK_POIS) && !(r_ptr->flagsr & RFR_EFF_IM_POIS_MASK)) return (TRUE);
 
-       if (p_ptr->pspeed < 145)
+       if (creature_ptr->pspeed < 145)
        {
-               if (IS_FAST(p_ptr)) return (TRUE);
+               if (IS_FAST(creature_ptr)) return (TRUE);
        }
 
        /* Light speed */
-       if (p_ptr->lightspeed && (m_ptr->mspeed < 136)) return (TRUE);
+       if (creature_ptr->lightspeed && (m_ptr->mspeed < 136)) return (TRUE);
 
-       if (p_ptr->riding && (p_ptr->current_floor_ptr->m_list[p_ptr->riding].mspeed < 135))
+       if (creature_ptr->riding && (creature_ptr->current_floor_ptr->m_list[creature_ptr->riding].mspeed < 135))
        {
-               if (MON_FAST(&p_ptr->current_floor_ptr->m_list[p_ptr->riding])) return (TRUE);
+               if (MON_FAST(&creature_ptr->current_floor_ptr->m_list[creature_ptr->riding])) return (TRUE);
        }
 
        /* No need to cast dispel spell */
@@ -1137,7 +1137,7 @@ static int choose_attack_spell(MONSTER_IDX m_idx, byte spells[], byte num)
        if (dispel_num && one_in_(2))
        {
                /* Choose dispel spell if possible */
-               if (dispel_check(m_idx))
+               if (dispel_check(p_ptr, m_idx))
                {
                        return (dispel[randint0(dispel_num)]);
                }
index 39a0443..4f1e3bc 100644 (file)
@@ -251,7 +251,7 @@ static bool dispel_check_monster(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
        /* Riding monster */
        if (t_idx == p_ptr->riding)
        {
-               if (dispel_check(m_idx)) return TRUE;
+               if (dispel_check(p_ptr, m_idx)) return TRUE;
        }
 
        /* No need to cast dispel spell */