aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp24
-rw-r--r--src/server/game/Spells/SpellMgr.cpp4
2 files changed, 23 insertions, 5 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 9f93097577e..ae76a944187 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -1128,7 +1128,6 @@ void AuraEffect::HandleShapeshiftBoosts(Unit* target, bool apply) const
{
uint32 spellId = 0;
uint32 spellId2 = 0;
- //uint32 spellId3 = 0;
uint32 HotWSpellId = 0;
switch (GetMiscValue())
@@ -1265,20 +1264,35 @@ void AuraEffect::HandleShapeshiftBoosts(Unit* target, bool apply) const
// Heart of the Wild
if (HotWSpellId)
- { // hacky, but the only way as spell family is not SPELLFAMILY_DRUID
+ {
+ // hacky, but the only way as spell family is not SPELLFAMILY_DRUID
Unit::AuraEffectList const& mModTotalStatPct = target->GetAuraEffectsByType(SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE);
for (Unit::AuraEffectList::const_iterator i = mModTotalStatPct.begin(); i != mModTotalStatPct.end(); ++i)
{
// Heart of the Wild
- if ((*i)->GetSpellInfo()->SpellIconID == 240 && (*i)->GetMiscValue() == 3)
+ if (AuraEffect const* heartOfTheWild = target->GetAuraEffectOfRankedSpell(17003, EFFECT_0))
{
- int32 HotWMod = (*i)->GetAmount() / 2; // For each 2% Intelligence, you get 1% stamina and 1% attack power.
- target->CastCustomSpell(target, HotWSpellId, &HotWMod, NULL, NULL, true, NULL, this);
+ int32 heartOfTheWildAmount = 0;
+
+ switch (GetMiscValue())
+ {
+ case FORM_CAT:
+ heartOfTheWildAmount = heartOfTheWild->GetSpellInfo()->Effects[EFFECT_1].CalcValue();
+ break;
+ case FORM_BEAR:
+ heartOfTheWildAmount = heartOfTheWild->GetSpellInfo()->Effects[EFFECT_2].CalcValue();
+ break;
+ default:
+ break;
+ }
+
+ target->CastCustomSpell(target, HotWSpellId, &heartOfTheWildAmount, NULL, NULL, true, NULL, this);
break;
}
}
}
+
switch (GetMiscValue())
{
case FORM_CAT:
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index cb281f37de1..aa45f2fb506 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -3298,8 +3298,12 @@ void SpellMgr::LoadSpellInfoCorrections()
// Master Shapeshifter: missing stance data for forms other than bear - bear version has correct data
// To prevent aura staying on target after talent unlearned
case 48420: // Master Shapeshifter
+ case 24900: // Heart of the Wild - Cat Effect
spellInfo->Stances = 1 << (FORM_CAT - 1);
break;
+ case 24899: // Heart of the Wild - Bear Effect
+ spellInfo->Stances = 1 << (FORM_BEAR - 1);
+ break;
case 48421: // Master Shapeshifter
spellInfo->Stances = 1 << (FORM_MOONKIN - 1);
break;