diff options
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); |