aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeyden <saiifii@live.de>2022-02-07 12:49:45 +0100
committerGitHub <noreply@github.com>2022-02-07 12:49:45 +0100
commit20af35fd1393e24c747fdfa30760f52bd6ee04e6 (patch)
treef8c9f45cbd9331c57eda948d9d2fd5a92e649bc3
parente64e6f4963ae7c6efe54fd5e6124158202478b3f (diff)
Core/Creatures: Add summoned creatures to summoners transport (#27708)
-rw-r--r--src/server/game/Entities/Object/Object.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 302a52c885e..be19025582d 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -1811,6 +1811,18 @@ TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropert
return nullptr;
}
+ Transport* transport = summoner ? summoner->GetTransport() : nullptr;
+ if (transport)
+ {
+ float x, y, z, o;
+ pos.GetPosition(x, y, z, o);
+ transport->CalculatePassengerOffset(x, y, z, &o);
+ summon->m_movementInfo.transport.pos.Relocate(x, y, z, o);
+
+ // This object must be added to transport before adding to map for the client to properly display it
+ transport->AddPassenger(summon);
+ }
+
if (summoner && !(properties && properties->GetFlags().HasFlag(SummonPropertiesFlags::IgnoreSummonerPhase)))
PhasingHandler::InheritPhaseShift(summon, summoner);
@@ -1838,6 +1850,10 @@ TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropert
if (!AddToMap(summon->ToCreature()))
{
+ // Returning false will cause the object to be deleted - remove from transport
+ if (transport)
+ transport->RemovePassenger(summon);
+
delete summon;
return nullptr;
}