aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellInfo.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-10-24 10:38:27 +0200
committerShauren <shauren.trinity@gmail.com>2023-10-24 10:38:27 +0200
commit930a08fe03a033a6bb30fb8c94a8490c4b77fe91 (patch)
treea9788f29000c5c3e4a37a9520b50072c3c439e14 /src/server/game/Spells/SpellInfo.cpp
parent7b6143a438f2de79cf070f7e0586b2a337726ad7 (diff)
Core/Spells: SpellAttr8 fixups - use creator instead of owner for SPELL_ATTR8_ONLY_TARGET_IF_SAME_CREATOR and removed cast time requirement for channelled spell predicted healing
Diffstat (limited to 'src/server/game/Spells/SpellInfo.cpp')
-rw-r--r--src/server/game/Spells/SpellInfo.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 9b4b12295e2..390be602cac 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -2173,8 +2173,18 @@ SpellCastResult SpellInfo::CheckTarget(WorldObject const* caster, WorldObject co
Unit const* unitTarget = target->ToUnit();
if (HasAttribute(SPELL_ATTR8_ONLY_TARGET_IF_SAME_CREATOR))
- if (caster != target && caster->GetGUID() != target->GetOwnerGUID())
+ {
+ auto getCreatorOrSelf = [](WorldObject const* obj)
+ {
+ ObjectGuid creator = obj->GetCreatorGUID();
+ if (creator.IsEmpty())
+ creator = obj->GetGUID();
+
+ return creator;
+ };
+ if (getCreatorOrSelf(caster) != getCreatorOrSelf(target))
return SPELL_FAILED_BAD_TARGETS;
+ }
// creature/player specific target checks
if (unitTarget)