aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-03-28 18:20:57 +0200
committerShauren <shauren.trinity@gmail.com>2021-03-28 20:22:05 +0200
commit2398c1e23c57cf5b6ac778b09a09d28e2704fd75 (patch)
tree9ed1ea8c9ac016a64937032fec2339ca279a13c6 /src/server/game/Spells/SpellEffects.cpp
parent46a81ea1f440b91611bc7b849ac09d523a041878 (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.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);