From ca26c33145cb40ae7fd2c84fc7577fc6f11bdbbf Mon Sep 17 00:00:00 2001 From: xinef1 Date: Sat, 4 Feb 2017 23:50:32 +0100 Subject: 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 93746e8c4a79c8256cd4896533315683f143508c) --- src/server/scripts/Spells/spell_priest.cpp | 2 +- src/server/scripts/Spells/spell_rogue.cpp | 2 +- src/server/scripts/Spells/spell_warlock.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 78185aaf07c..15cfe5ab24a 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -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 diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 4b9c293d91e..ea17be7a58d 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -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; diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index ec01d8f3397..272af131c75 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -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); } } } -- cgit v1.2.3