diff options
| author | Giacomo Pozzoni <giacomopoz@gmail.com> | 2019-05-23 21:08:29 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-12-07 00:02:03 +0100 |
| commit | 5f545f540216d3b94c26e4aeda50c8bb8d5c3d74 (patch) | |
| tree | f949771047c43242881593e94522783851415e5c /src/server/game/Entities/Unit | |
| parent | 54044bda8219e712eaec6148af4db6523386cc0f (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.cpp | 13 |
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()) |
