From 930a08fe03a033a6bb30fb8c94a8490c4b77fe91 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 24 Oct 2023 10:38:27 +0200 Subject: 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 --- src/server/game/Spells/SpellInfo.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/server/game/Spells/SpellInfo.cpp') 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) -- cgit v1.2.3