diff options
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.h | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index a78f031c310..a91768186a3 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5426,7 +5426,9 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint if (m_spellInfo->RequiresSpellFocus) { focusObject = SearchSpellFocus(); - if (!focusObject) + if (focusObject) + m_focusObjectGUID = focusObject->GetGUID(); + else return SPELL_FAILED_REQUIRES_SPELL_FOCUS; } @@ -7284,6 +7286,9 @@ bool Spell::UpdatePointers() m_originalCaster = nullptr; } + if (m_focusObjectGUID) + focusObject = ObjectAccessor::GetGameObject(*m_caster, m_focusObjectGUID); + if (m_castItemGUID && m_caster->GetTypeId() == TYPEID_PLAYER) { m_CastItem = m_caster->ToPlayer()->GetItemByGuid(m_castItemGUID); diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 23b73deddeb..7abeb67b13c 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -530,6 +530,7 @@ class TC_GAME_API Spell DynObjAura* _dynObjAura; // ------------------------------------------- + ObjectGuid m_focusObjectGUID; GameObject* focusObject; // Damage and healing in effects need just calculate |