diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-03-28 18:20:57 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-03-28 20:22:05 +0200 |
commit | 2398c1e23c57cf5b6ac778b09a09d28e2704fd75 (patch) | |
tree | 9ed1ea8c9ac016a64937032fec2339ca279a13c6 /src/server/game/Spells/SpellEffects.cpp | |
parent | 46a81ea1f440b91611bc7b849ac09d523a041878 (diff) |
Core/Spells: Implemented SUMMON_PROP_FLAG_PERSONAL_GROUP_SPAWN
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 8b835717872..619297d91ed 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1892,9 +1892,20 @@ void Spell::EffectSummonType(SpellEffIndex effIndex) if (!m_originalCaster) return; - ObjectGuid privateObjectOwner; - if (properties->Flags & SUMMON_PROP_FLAG_PERSONAL_SPAWN) - privateObjectOwner = m_originalCaster->IsPrivateObject() ? m_originalCaster->GetPrivateObjectOwner() : m_originalCaster->GetGUID(); + ObjectGuid privateObjectOwner = [&]() + { + if (!(properties->Flags & (SUMMON_PROP_FLAG_PERSONAL_SPAWN | SUMMON_PROP_FLAG_PERSONAL_GROUP_SPAWN))) + return ObjectGuid::Empty; + + if (m_originalCaster->IsPrivateObject()) + return m_originalCaster->GetPrivateObjectOwner(); + + if (properties->Flags & SUMMON_PROP_FLAG_PERSONAL_GROUP_SPAWN) + if (m_originalCaster->IsPlayer() && m_originalCaster->ToPlayer()->GetGroup()) + return m_originalCaster->ToPlayer()->GetGroup()->GetGUID(); + + return m_originalCaster->GetGUID(); + }(); int32 duration = m_spellInfo->CalcDuration(m_originalCaster); |