aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp10
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
-rw-r--r--src/server/game/Spells/SpellEffects.cpp2
3 files changed, 14 insertions, 0 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index a4be7be9173..0fa1ea998b5 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -5970,6 +5970,16 @@ void Unit::SetOwnerGUID(ObjectGuid owner)
player->SendDirectMessage(&packet);
}
+Unit* Unit::GetDemonCreator() const
+{
+ return ObjectAccessor::GetUnit(*this, GetDemonCreatorGUID());
+}
+
+Player* Unit::GetDemonCreatorPlayer() const
+{
+ return ObjectAccessor::GetPlayer(*this, GetDemonCreatorGUID());
+}
+
Player* Unit::GetControllingPlayer() const
{
ObjectGuid guid = GetCharmerOrOwnerGUID();
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index b519213504a..401dfc429a0 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1146,6 +1146,8 @@ class TC_GAME_API Unit : public WorldObject
void SetBattlePetCompanionGUID(ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::BattlePetCompanionGUID), guid); }
ObjectGuid GetDemonCreatorGUID() const { return m_unitData->DemonCreator; }
void SetDemonCreatorGUID(ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::DemonCreator), guid); }
+ Unit* GetDemonCreator() const;
+ Player* GetDemonCreatorPlayer() const;
ObjectGuid GetCharmerGUID() const { return m_unitData->CharmedBy; }
Unit* GetCharmer() const { return m_charmer; }
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index d056efd70c6..f85ebb5e09d 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1961,6 +1961,8 @@ void Spell::EffectSummonType()
summon->SetTempSummonType(summonType);
if (properties->Control == SUMMON_CATEGORY_ALLY)
summon->SetOwnerGUID(caster->GetGUID());
+ else if (properties->Control == SUMMON_CATEGORY_WILD && caster->IsPlayer()) // there might be more conditions involved
+ summon->SetDemonCreatorGUID(caster->GetGUID());
ExecuteLogEffectSummonObject(SpellEffectName(effectInfo->Effect), summon);
}