#ifdef NEW_ICEDAMAGE_SYSTEM
bool battle_is_icedamage(LPCHARACTER pAttacker, LPCHARACTER pVictim)
{
if (pAttacker && pAttacker->IsPC())
{
DWORD race = pAttacker->GetRaceNum();
const DWORD tmp_dwNDRFlag = pVictim->GetNoDamageRaceFlag();
if (tmp_dwNDRFlag &&
(race < MAIN_RACE_MAX_NUM) &&
(IS_SET(tmp_dwNDRFlag, 1<<race))
)
{
return false;
}
const std::set<DWORD> & tmp_setNDAFlag = pVictim->GetNoDamageAffectFlag();
if (tmp_setNDAFlag.size())
{
for (std::set<DWORD>::iterator it = tmp_setNDAFlag.begin(); it != tmp_setNDAFlag.end(); ++it)
{
if (!pAttacker->IsAffectFlag(*it))
{
return false;
}
}
}
}
return true;
}
#endif