aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorGiacomo Pozzoni <giacomopoz@gmail.com>2019-05-23 21:08:29 +0200
committerShauren <shauren.trinity@gmail.com>2021-12-07 00:02:03 +0100
commit5f545f540216d3b94c26e4aeda50c8bb8d5c3d74 (patch)
treef949771047c43242881593e94522783851415e5c /src/server/game/Entities/Unit
parent54044bda8219e712eaec6148af4db6523386cc0f (diff)
3.3.5 gameobject summoner (#23289)
* Scripts/Misc: Change IsSummonedBy(Unit*) to IsSummonedBy(WorldObject*) * Scripts/Misc: Fix build * Core/TempSummons: Rename GetSummoner() to GetSummonerUnit() * Core/TempSummons: Add support to TempSummons::GetSummoner() to return GameObject too * Fix build * Core/TempSummons: Allow GameObject to be owner of TempSummon * Core/TempSummons: Add support to SAI for GameObject owner of TempSummon * Scripts/Misc: Fix no-pch build * Core/TempSummons: Implement PR comments (cherry picked from commit 797fba98e95da1236465a15061ec4122d7ec33fe)
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index ac93996b16c..296f5a445a1 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -37,6 +37,7 @@
#include "CreatureAIFactory.h"
#include "DB2Stores.h"
#include "Formulas.h"
+#include "GameObjectAI.h"
#include "GameTime.h"
#include "GridNotifiersImpl.h"
#include "Group.h"
@@ -10492,10 +10493,16 @@ void Unit::SetMeleeAnimKitId(uint16 animKitId)
if (CreatureAI* ai = creature->AI())
ai->JustDied(attacker);
- if (TempSummon* summon = creature->ToTempSummon())
- if (Unit* summoner = summon->GetSummoner())
- if (summoner->ToCreature() && summoner->IsAIEnabled())
+ if (TempSummon * summon = creature->ToTempSummon())
+ {
+ if (WorldObject * summoner = summon->GetSummoner())
+ {
+ if (summoner->ToCreature() && summoner->ToCreature()->IsAIEnabled())
summoner->ToCreature()->AI()->SummonedCreatureDies(creature, attacker);
+ else if (summoner->ToGameObject() && summoner->ToGameObject()->AI())
+ summoner->ToGameObject()->AI()->SummonedCreatureDies(creature, attacker);
+ }
+ }
// Dungeon specific stuff, only applies to players killing creatures
if (creature->GetInstanceId())