*Fix bladestorm.

--HG--
branch : trunk
This commit is contained in:
QAston
2009-04-09 18:24:01 +02:00
parent 2105aa45d5
commit 2b9d09255e
3 changed files with 14 additions and 6 deletions
+10 -2
View File
@@ -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<<MECHANIC_POLYMORPH,apply);
m_target->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
+2 -2
View File
@@ -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<<spellInfo->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;
}