diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 24 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 4 |
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; |
