aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorModoX <moardox@gmail.com>2024-01-25 16:11:49 +0100
committerfunjoker <funjoker109@gmail.com>2024-01-29 22:19:01 +0100
commit8e8820160654ae47f3e289fac21f4c1d2e072938 (patch)
tree31f8c973d3b99b6e0b455e38ead2d25c2fa09458 /src
parenta5edb7212b70422f28b719b7ba91c4c79250d593 (diff)
Core/Unit: Set DemonCreator for wild allied summons
(cherry picked from commit 61d16856e432730e1346e40f84aeb4b1bc34324d)
Diffstat (limited to 'src')
-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);
}