diff options
author | ModoX <moardox@gmail.com> | 2024-01-25 16:11:49 +0100 |
---|---|---|
committer | funjoker <funjoker109@gmail.com> | 2024-01-29 22:19:01 +0100 |
commit | 8e8820160654ae47f3e289fac21f4c1d2e072938 (patch) | |
tree | 31f8c973d3b99b6e0b455e38ead2d25c2fa09458 /src | |
parent | a5edb7212b70422f28b719b7ba91c4c79250d593 (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.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 2 |
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); } |