diff options
author | Shauren <shauren.trinity@gmail.com> | 2018-04-19 23:37:41 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-09-26 01:42:54 +0200 |
commit | 068b340b6988c3edd8db2b9d62a99baebe1b031e (patch) | |
tree | 023217434f3b2ac19133d4d11479c5686afa68fa /src | |
parent | 5274f7af177b9df1b54febd2ebc144ff06835474 (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.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_npc.cpp | 12 |
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; } |