aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormaximius <none@none>2009-11-17 16:36:10 -0800
committermaximius <none@none>2009-11-17 16:36:10 -0800
commit0176bde314753d2b90e5930a840ae580723078d5 (patch)
tree1ece4fabee6ace2b1424d6fc09c6435d6be5dcac /src
parent8f277940feeec0ddb6514711d509b4f8be81521e (diff)
*Improved Barkskin - apply/remove armor bonus due to shapeshift, original by Insider, thanks to bodompelle. Closes #141
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/SpellAuras.cpp24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index caea0fa2874..7a00ca56739 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -2099,14 +2099,21 @@ void AuraEffect::HandleShapeshiftBoosts(bool apply)
if (spellInfo->Stances & (1<<(form)))
m_target->CastSpell(m_target, itr->first, true, NULL, this);
}
- //LotP
+ // Leader of the Pack
if (((Player*)m_target)->HasSpell(17007))
{
SpellEntry const *spellInfo = sSpellStore.LookupEntry(24932);
if (spellInfo && spellInfo->Stances & (1<<(form)))
m_target->CastSpell(m_target, 24932, true, NULL, this);
}
- // HotW
+ // Improved Barkskin - apply/remove armor bonus due to shapeshift
+ if (((Player*)m_target)->HasSpell(63410) || ((Player*)m_target)->HasSpell(63411))
+ {
+ m_target->RemoveAurasDueToSpell(66530);
+ if (form == FORM_TRAVEL || form == FORM_NONE) // "while in Travel Form or while not shapeshifted"
+ m_target->CastSpell(m_target, 66530, true);
+ }
+ // Heart of the Wild
if (HotWSpellId)
{
Unit::AuraEffectList const& mModTotalStatPct = m_target->GetAurasByType(SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE);
@@ -2189,17 +2196,20 @@ void AuraEffect::HandleShapeshiftBoosts(bool apply)
if (spellId2)
m_target->RemoveAurasDueToSpell(spellId2);
+ // Improved Barkskin - apply/remove armor bonus due to shapeshift
+ if (((Player*)m_target)->HasSpell(63410) || ((Player*)m_target)->HasSpell(63411))
+ {
+ m_target->RemoveAurasDueToSpell(66530);
+ m_target->CastSpell(m_target,66530,true);
+ }
+
Unit::AuraMap& tAuras = m_target->GetAuras();
- for (Unit::AuraMap::iterator itr = tAuras.begin(); itr != tAuras.end(); )
+ for (Unit::AuraMap::iterator itr = tAuras.begin(); itr != tAuras.end();)
{
if (itr->second->IsRemovedOnShapeLost())
- {
m_target->RemoveAura(itr);
- }
else
- {
++itr;
- }
}
}
}