aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-04-19 23:37:41 +0200
committerShauren <shauren.trinity@gmail.com>2021-09-26 01:42:54 +0200
commit068b340b6988c3edd8db2b9d62a99baebe1b031e (patch)
tree023217434f3b2ac19133d4d11479c5686afa68fa /src
parent5274f7af177b9df1b54febd2ebc144ff06835474 (diff)
Core/Transports: Force transport passengers into legacy spawn group
Ref #21641 (cherry picked from commit a5df77a9d6f3e48f2c4e8a61d60e3b5f2f0c326e)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Transport/Transport.cpp4
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp4
-rw-r--r--src/server/scripts/Commands/cs_npc.cpp12
3 files changed, 11 insertions, 9 deletions
diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp
index 1d40a5dfbad..f9af0c5c71c 100644
--- a/src/server/game/Entities/Transport/Transport.cpp
+++ b/src/server/game/Entities/Transport/Transport.cpp
@@ -299,6 +299,8 @@ void Transport::RemovePassenger(WorldObject* passenger)
Creature* Transport::CreateNPCPassenger(ObjectGuid::LowType guid, CreatureData const* data)
{
Map* map = GetMap();
+ if (map->GetCreatureRespawnTime(guid))
+ return nullptr;
Creature* creature = Creature::CreateCreatureFromDB(guid, map, false, true);
if (!creature)
@@ -346,6 +348,8 @@ Creature* Transport::CreateNPCPassenger(ObjectGuid::LowType guid, CreatureData c
GameObject* Transport::CreateGOPassenger(ObjectGuid::LowType guid, GameObjectData const* data)
{
Map* map = GetMap();
+ if (map->GetGORespawnTime(guid))
+ return nullptr;
GameObject* go = GameObject::CreateGameObjectFromDB(guid, map, false);
if (!go)
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 20a5454d184..29d7a6d518e 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -2013,7 +2013,7 @@ void ObjectMgr::LoadCreatures()
data.phaseGroup = fields[25].GetUInt32();
data.terrainSwapMap = fields[26].GetInt32();
data.scriptId = GetScriptId(fields[27].GetString());
- data.spawnGroupData = &_spawnGroupDataStore[0];
+ data.spawnGroupData = &_spawnGroupDataStore[IsTransportMap(data.spawnPoint.GetMapId()) ? 1 : 0]; // transport spawns default to compatibility group
MapEntry const* mapEntry = sMapStore.LookupEntry(data.spawnPoint.GetMapId());
if (!mapEntry)
@@ -2366,7 +2366,7 @@ void ObjectMgr::LoadGameObjects()
data.rotation.z = fields[9].GetFloat();
data.rotation.w = fields[10].GetFloat();
data.spawntimesecs = fields[11].GetInt32();
- data.spawnGroupData = &_spawnGroupDataStore[0];
+ data.spawnGroupData = &_spawnGroupDataStore[IsTransportMap(data.spawnPoint.GetMapId()) ? 1 : 0]; // transport spawns default to compatibility group
MapEntry const* mapEntry = sMapStore.LookupEntry(data.spawnPoint.GetMapId());
if (!mapEntry)
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp
index 68a7d63ee6a..b235c539e8e 100644
--- a/src/server/scripts/Commands/cs_npc.cpp
+++ b/src/server/scripts/Commands/cs_npc.cpp
@@ -385,13 +385,11 @@ public:
data.spawnId = guid;
data.id = id;
data.spawnPoint.Relocate(chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO());
- /// @todo: add phases
-
- Creature* creature = trans->CreateNPCPassenger(guid, &data);
-
- creature->SaveToDB(trans->GetGOInfo()->moTransport.SpawnMap, { map->GetDifficultyID() });
-
- sObjectMgr->AddCreatureToGrid(guid, &data);
+ if (Creature* creature = trans->CreateNPCPassenger(guid, &data))
+ {
+ creature->SaveToDB(trans->GetGOInfo()->moTransport.SpawnMap, { map->GetDifficultyID() });
+ sObjectMgr->AddCreatureToGrid(guid, &data);
+ }
return true;
}