Yes, it appears so:
Code:
if
(
IsEffectInSpell(spell_id, SE_Root) ||
IsEffectInSpell(spell_id, SE_MovementSpeed)
)
{
if(SpecAttacks[UNSNAREABLE]) {
mlog(SPELLS__RESISTS, "We are immune to Snare spells.");
caster->Message_StringID(MT_Shout, IMMUNE_MOVEMENT);
int32 aggro = CheckAggroAmount(spell_id);
if(aggro > 0) {
AddToHateList(caster, aggro);
} else {
AddToHateList(caster, 1);
}
return true;
}
}
I wouldn't be surprised if this same issue applies to other special attacks as well.
I think the easiest fix would be to add an IsDetrimentalSpell(spell_id) check in SpellOnTarget() before the IsImmuneToSpell() check here in spells.cpp:
Code:
// check immunities
if(spelltar->IsImmuneToSpell(spell_id, this))
{
//the above call does the message to the client if needed
mlog(SPELLS__RESISTS, "Spell %d can't take hold due to immunity %s -> %s", spell_id, GetName(), spelltar->GetName());
safe_delete(action_packet);
return false;
}
Maybe I am missing something though, but this is my best guess for the cause of the NPC vs NPC attacking issue.
Not really sure why this seems to be a new issue all of the sudden. I am not aware of any recent changes to how this works offhand, but I didn't really look into it much.