aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp17
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);