* @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 */
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)]);
}