diff options
| author | Shauren <shauren.trinity@gmail.com> | 2023-10-24 10:38:27 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2023-10-24 10:38:27 +0200 |
| commit | 930a08fe03a033a6bb30fb8c94a8490c4b77fe91 (patch) | |
| tree | a9788f29000c5c3e4a37a9520b50072c3c439e14 /src/server/game/Spells/SpellInfo.cpp | |
| parent | 7b6143a438f2de79cf070f7e0586b2a337726ad7 (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.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) |
