diff options
author | ariel- <ariel-@users.noreply.github.com> | 2018-02-14 22:07:06 -0300 |
---|---|---|
committer | ariel- <ariel-@users.noreply.github.com> | 2018-02-14 22:07:06 -0300 |
commit | 1edd81f9d503db566b4836ddffe369a788e271ad (patch) | |
tree | d84b4935847378189a34f03e6d90a490fc325896 /src | |
parent | 63c436f5fb6924b872050cf5838a4052d9034935 (diff) |
Core/Scripts: fix Healing Stream Totem coefficient and animation
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 5 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_shaman.cpp | 23 |
2 files changed, 18 insertions, 10 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 42e978cb918..95bb04aa3c2 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3047,6 +3047,11 @@ void SpellMgr::LoadSpellInfoCorrections() ApplySpellFix({ 379, // Earth Shield 33778, // Lifebloom Final Bloom + + 52042, // Healing Stream Totem + // this one is here because we have no SP bonus for dmgclass none spell + // but this one should since it's DBC data, it won't crit because it already has can't crit attr + 64844, // Divine Hymn 71607, // Item - Bauble of True Blood 10m 71646, // Item - Bauble of True Blood 25m diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index 1b3d63a7ac2..091e06e82fb 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -990,19 +990,22 @@ class spell_sha_healing_stream_totem : public SpellScriptLoader if (Unit* target = GetHitUnit()) { Unit* caster = GetCaster(); - if (caster->GetTypeId() == TYPEID_UNIT && caster->IsTotem()) - if (Unit* owner = caster->GetOwner()) - caster = owner; + ObjectGuid originalCasterGuid = caster->GetGUID(); - // Restorative Totems - if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_SHAMAN, SHAMAN_ICON_ID_RESTORATIVE_TOTEMS, EFFECT_1)) - AddPct(damage, aurEff->GetAmount()); + if (Player* player = caster->GetAffectingPlayer()) + { + originalCasterGuid = player->GetGUID(); - // Glyph of Healing Stream Totem - if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_SHAMAN_GLYPH_OF_HEALING_STREAM_TOTEM, EFFECT_0)) - AddPct(damage, aurEff->GetAmount()); + // Restorative Totems + if (AuraEffect const* aurEff = player->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_SHAMAN, SHAMAN_ICON_ID_RESTORATIVE_TOTEMS, EFFECT_1)) + AddPct(damage, aurEff->GetAmount()); - CastSpellExtraArgs args(GetOriginalCaster()->GetGUID()); + // Glyph of Healing Stream Totem + if (AuraEffect const* aurEff = player->GetAuraEffect(SPELL_SHAMAN_GLYPH_OF_HEALING_STREAM_TOTEM, EFFECT_0)) + AddPct(damage, aurEff->GetAmount()); + } + + CastSpellExtraArgs args(originalCasterGuid); args.AddSpellBP0(damage); caster->CastSpell(target, SPELL_SHAMAN_TOTEM_HEALING_STREAM_HEAL, args); } |