Implemented binary resistances and some more (#18933)

- Fixed possible exploit with tamed pets having template immunities
- Implemented binary resistances
- Corrected resistances calculations
- Pets properly inherit players spell penetration
- Fixed doubled block calculation for damaging melee spells
- Auras removing snare effects will only remove the snaring component
- Shapeshifting will properly remove movement impairing auras only and not crowd control (dragon's breath)
- Immunities are properly checked versus all schools appearing in spell, unit is immune only if immune to all schools
- Spells with melee and magic school mask should compare armor reduction with resistances and select smaller reduction
- Demonic Circle: Teleport no longer removes root effects

(cherrypicked from 93746e8c4a)
This commit is contained in:
xinef1
2017-02-04 23:50:32 +01:00
committed by Shauren
parent ad008c43b7
commit ca26c33145
13 changed files with 373 additions and 69 deletions

View File

@@ -1055,7 +1055,7 @@ class spell_pri_phantasm : public SpellScriptLoader
void HandleEffectProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
GetTarget()->RemoveMovementImpairingAuras();
GetTarget()->RemoveMovementImpairingAuras(true);
}
void Register() override

View File

@@ -699,7 +699,7 @@ class spell_rog_vanish : public SpellScriptLoader
Unit* target = GetHitUnit();
target->RemoveMovementImpairingAuras();
target->RemoveMovementImpairingAuras(true);
target->RemoveAurasByType(SPELL_AURA_MOD_STALKED);
if (target->GetTypeId() != TYPEID_PLAYER)
return;

View File

@@ -344,7 +344,7 @@ class spell_warl_demonic_circle_teleport : public SpellScriptLoader
if (GameObject* circle = player->GetGameObject(SPELL_WARLOCK_DEMONIC_CIRCLE_SUMMON))
{
player->NearTeleportTo(circle->GetPositionX(), circle->GetPositionY(), circle->GetPositionZ(), circle->GetOrientation());
player->RemoveMovementImpairingAuras();
player->RemoveMovementImpairingAuras(false);
}
}
}