diff options
Diffstat (limited to 'src/server/game/Spells/SpellInfo.cpp')
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 12 |
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) |