From 60e66621dae44cb832ebb0bdb5e168f9ab114ecb Mon Sep 17 00:00:00 2001 From: Gildor Date: Sun, 12 Apr 2020 15:28:01 +0200 Subject: Core/Gameobjects: Improve stealth detection (#24417) * Core/Gameobjects: Improve stealth detection * fix warning: private field 'i_funit' is not used * Code cleanup * add comment Co-authored-by: jackpoz (cherry picked from commit 862097a63351e957fd4aa6cb82fe7d9edf4d3926) --- src/server/game/Spells/Spell.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index eec48f5e6df..b79dd8a49a8 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5402,7 +5402,9 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32 { // Check explicit target for m_originalCaster - todo: get rid of such workarounds WorldObject* caster = m_caster; - if (m_originalCaster) + // in case of gameobjects like traps, we need the gameobject itself to check target validity + // otherwise, if originalCaster is far away and cannot detect the target, the trap would not hit the target + if (m_originalCaster && !caster->ToGameObject()) caster = m_originalCaster; SpellCastResult castResult = m_spellInfo->CheckExplicitTarget(caster, m_targets.GetObjectTarget(), m_targets.GetItemTarget()); -- cgit v1.2.3