diff --git a/Source/Game/Chat/Commands/NPCCommands.cs b/Source/Game/Chat/Commands/NPCCommands.cs index 07fd68236..61092b292 100644 --- a/Source/Game/Chat/Commands/NPCCommands.cs +++ b/Source/Game/Chat/Commands/NPCCommands.cs @@ -657,12 +657,13 @@ namespace Game.Chat data.Id = id; data.spawnPoint.Relocate(chr.GetTransOffsetX(), chr.GetTransOffsetY(), chr.GetTransOffsetZ(), chr.GetTransOffsetO()); data.spawnGroupData = new(); - // @todo: add phases - Creature _creature = trans.CreateNPCPassenger(guid, data); - _creature.SaveToDB((uint)trans.GetGoInfo().MoTransport.SpawnMap, new List() { map.GetDifficultyID() }); - - Global.ObjectMgr.AddCreatureToGrid(guid, data); + Creature creaturePassenger = trans.CreateNPCPassenger(guid, data); + if (creaturePassenger != null) + { + creaturePassenger.SaveToDB((uint)trans.GetGoInfo().MoTransport.SpawnMap, new List() { map.GetDifficultyID() }); + Global.ObjectMgr.AddCreatureToGrid(guid, data); + } return true; } diff --git a/Source/Game/Entities/Transport.cs b/Source/Game/Entities/Transport.cs index 7dce37763..6c3f2fada 100644 --- a/Source/Game/Entities/Transport.cs +++ b/Source/Game/Entities/Transport.cs @@ -318,6 +318,8 @@ namespace Game.Entities public Creature CreateNPCPassenger(ulong guid, CreatureData data) { Map map = GetMap(); + if (map.GetCreatureRespawnTime(guid) != 0) + return null; Creature creature = Creature.CreateCreatureFromDB(guid, map, false, true); if (!creature) @@ -359,6 +361,8 @@ namespace Game.Entities GameObject CreateGOPassenger(ulong guid, GameObjectData data) { Map map = GetMap(); + if (map.GetGORespawnTime(guid) != 0) + return null; GameObject go = CreateGameObjectFromDB(guid, map, false); if (!go) diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index ea65da715..03825df57 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -3319,7 +3319,7 @@ namespace Game data.phaseGroup = result.Read(25); data.terrainSwapMap = result.Read(26); data.ScriptId = GetScriptId(result.Read(27)); - data.spawnGroupData = _spawnGroupDataStorage[0]; + data.spawnGroupData = _spawnGroupDataStorage[IsTransportMap(data.spawnPoint.GetMapId()) ? 1 : 0]; // transport spawns default to compatibility group var mapEntry = CliDB.MapStorage.LookupByKey(data.spawnPoint.GetMapId()); if (mapEntry == null) @@ -4063,7 +4063,7 @@ namespace Game data.rotation.Z = result.Read(9); data.rotation.W = result.Read(10); data.spawntimesecs = result.Read(11); - data.spawnGroupData = _spawnGroupDataStorage[0]; + data.spawnGroupData = _spawnGroupDataStorage[IsTransportMap(data.spawnPoint.GetMapId()) ? 1 : 0]; // transport spawns default to compatibility group var mapEntry = CliDB.MapStorage.LookupByKey(data.spawnPoint.GetMapId()); if (mapEntry == null)