From 2b9d09255ea80ae1fbf345368d24128318ed3a0f Mon Sep 17 00:00:00 2001 From: QAston Date: Thu, 9 Apr 2009 18:24:01 +0200 Subject: *Fix bladestorm. --HG-- branch : trunk --- src/game/SpellAuras.cpp | 12 ++++++++++-- src/game/Unit.cpp | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'src/game') diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 8694131d32c..247a72a30a4 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -3987,7 +3987,7 @@ void AuraEffect::HandleAuraModIncreaseFlightSpeed(bool apply, bool Real) //Players on flying mounts must be immune to polymorph if (m_target->GetTypeId()==TYPEID_PLAYER) - m_target->ApplySpellImmune(GetId(),IMMUNITY_MECHANIC,1<ApplySpellImmune(GetId(),IMMUNITY_MECHANIC,1<<(MECHANIC_POLYMORPH-1),apply); // Dragonmaw Illusion (overwrite mount model, mounted aura already applied) if( apply && m_target->HasAuraEffect(42016,0) && m_target->GetMountID()) @@ -4036,7 +4036,7 @@ void AuraEffect::HandleModMechanicImmunity(bool apply, bool Real) { uint32 mechanic; if (GetSpellProto()->EffectApplyAuraName[GetEffIndex()]==SPELL_AURA_MECHANIC_IMMUNITY) - mechanic = 1 << GetMiscValue(); + mechanic = 1 << (GetMiscValue()-1); else //SPELL_AURA_MECHANIC_IMMUNITY_MASK mechanic = GetMiscValue(); //immune movement impairment and loss of control @@ -4065,6 +4065,14 @@ void AuraEffect::HandleModMechanicImmunity(bool apply, bool Real) } } + // Patch 3.0.3 Bladestorm now breaks all snares and roots on the warrior when activated. + // however not all mechanic specified in immunity + if (apply & GetId()==46924) + { + RemoveAurasByType(SPELL_AURA_MOD_ROOT); + RemoveAurasByType(SPELL_AURA_MOD_DECREASE_SPEED); + } + m_target->ApplySpellImmune(GetId(),IMMUNITY_MECHANIC,mechanic,apply); // Bestial Wrath diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index eb5bd306511..46c93c97ccb 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9137,7 +9137,7 @@ bool Unit::IsImmunedToSpell(SpellEntry const* spellInfo) SpellImmuneList const& mechanicList = m_spellImmune[IMMUNITY_MECHANIC]; for(SpellImmuneList::const_iterator itr = mechanicList.begin(); itr != mechanicList.end(); ++itr) { - if(itr->type & (1<Mechanic)) + if(itr->type & (1<<(spellInfo->Mechanic-1))) { return true; } @@ -9170,7 +9170,7 @@ bool Unit::IsImmunedToSpellEffect(SpellEntry const* spellInfo, uint32 index) con { SpellImmuneList const& mechanicList = m_spellImmune[IMMUNITY_MECHANIC]; for (SpellImmuneList::const_iterator itr = mechanicList.begin(); itr != mechanicList.end(); ++itr) - if(itr->type & 1<<(spellInfo->EffectMechanic[index])) + if(itr->type & 1<<(spellInfo->EffectMechanic[index]-1)) return true; } -- cgit v1.2.3