aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellInfo.cpp
diff options
context:
space:
mode:
authorMeji <alvaro.megias@outlook.com>2025-05-11 21:10:21 +0200
committerOvahlord <dreadkiller@gmx.de>2025-05-26 20:49:44 +0200
commitc093df0f9cc62c3be2f7d638d3eeb671601e0568 (patch)
treee55fcec841e40df7d13cbbea4698f3ffccbff70c /src/server/game/Spells/SpellInfo.cpp
parent85f9d08932255e4c013c046a10efca2bbde54878 (diff)
Core/Misc: Added new CanSeeOrDetectExtraArgs to CanSeeOrDetect (#30882)
(cherry picked from commit 260fab23786917619ad3453677ed7d983a431cc4) # Conflicts: # src/server/game/Entities/Object/Object.cpp
Diffstat (limited to 'src/server/game/Spells/SpellInfo.cpp')
-rw-r--r--src/server/game/Spells/SpellInfo.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 5100e50f278..f8e6caabb65 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -2187,8 +2187,14 @@ SpellCastResult SpellInfo::CheckTarget(WorldObject const* caster, WorldObject co
if (HasAttribute(SPELL_ATTR1_EXCLUDE_CASTER) && caster == target)
return SPELL_FAILED_BAD_TARGETS;
- // check visibility - ignore invisibility/stealth for implicit (area) targets
- if (!HasAttribute(SPELL_ATTR6_IGNORE_PHASE_SHIFT) && !caster->CanSeeOrDetect(target, implicit))
+ // check visibility - Ignore invisibility/stealth for implicit (area) targets
+ CanSeeOrDetectExtraArgs const& canSeeOrDetectExtraArgs = CanSeeOrDetectExtraArgs{
+ .ImplicitDetection = implicit,
+ .IgnorePhaseShift = HasAttribute(SPELL_ATTR6_IGNORE_PHASE_SHIFT),
+ .IncludeHiddenBySpawnTracking = HasAttribute(SPELL_ATTR8_ALLOW_TARGETS_HIDDEN_BY_SPAWN_TRACKING),
+ .IncludeAnyPrivateObject = HasAttribute(SPELL_ATTR0_CU_CAN_TARGET_ANY_PRIVATE_OBJECT)
+ };
+ if (!caster->CanSeeOrDetect(target, canSeeOrDetectExtraArgs))
return SPELL_FAILED_BAD_TARGETS;
Unit const* unitTarget = target->ToUnit();