Ensure CentCom fields are cleared before round start. (#16733)

This commit is contained in:
Leon Friedrich
2023-05-23 19:42:46 +12:00
committed by GitHub
parent fd6d4653d5
commit aaef57d32e
2 changed files with 23 additions and 10 deletions

View File

@@ -163,7 +163,7 @@ public sealed partial class EmergencyShuttleSystem
if (!TryComp<ShuttleComponent>(comp.EmergencyShuttle, out var shuttle)) if (!TryComp<ShuttleComponent>(comp.EmergencyShuttle, out var shuttle))
continue; continue;
if (Deleted(CentCom)) if (Deleted(CentComGrid))
{ {
// TODO: Need to get non-overlapping positions. // TODO: Need to get non-overlapping positions.
_shuttle.FTLTravel(comp.EmergencyShuttle.Value, shuttle, _shuttle.FTLTravel(comp.EmergencyShuttle.Value, shuttle,
@@ -174,7 +174,7 @@ public sealed partial class EmergencyShuttleSystem
else else
{ {
_shuttle.FTLTravel(comp.EmergencyShuttle.Value, shuttle, _shuttle.FTLTravel(comp.EmergencyShuttle.Value, shuttle,
CentCom.Value, _consoleAccumulator, TransitTime, true); CentComGrid.Value, _consoleAccumulator, TransitTime, true);
} }
} }
@@ -194,12 +194,12 @@ public sealed partial class EmergencyShuttleSystem
while (podLaunchQuery.MoveNext(out var uid, out var pod, out var shuttle)) while (podLaunchQuery.MoveNext(out var uid, out var pod, out var shuttle))
{ {
if (CentCom == null || pod.LaunchTime == null || pod.LaunchTime < _timing.CurTime) if (CentComGrid == null || pod.LaunchTime == null || pod.LaunchTime < _timing.CurTime)
continue; continue;
// Don't dock them. If you do end up doing this then stagger launch. // Don't dock them. If you do end up doing this then stagger launch.
_shuttle.FTLTravel(uid, shuttle, _shuttle.FTLTravel(uid, shuttle,
CentCom.Value, hyperspaceTime: TransitTime); CentComGrid.Value, hyperspaceTime: TransitTime);
RemCompDeferred<EscapePodComponent>(uid); RemCompDeferred<EscapePodComponent>(uid);
} }
@@ -218,8 +218,8 @@ public sealed partial class EmergencyShuttleSystem
if (_consoleAccumulator < minTime) if (_consoleAccumulator < minTime)
{ {
// Guarantees that emergency shuttle arrives first before anyone else can FTL. // Guarantees that emergency shuttle arrives first before anyone else can FTL.
if (CentCom != null) if (CentComGrid != null)
_shuttle.AddFTLDestination(CentCom.Value, true); _shuttle.AddFTLDestination(CentComGrid.Value, true);
} }
} }

View File

@@ -1,3 +1,4 @@
using System.Diagnostics;
using Content.Server.Access.Systems; using Content.Server.Access.Systems;
using Content.Server.Administration.Logs; using Content.Server.Administration.Logs;
using Content.Server.Administration.Managers; using Content.Server.Administration.Managers;
@@ -22,6 +23,7 @@ using Robust.Shared.Map;
using Robust.Shared.Player; using Robust.Shared.Player;
using Robust.Shared.Random; using Robust.Shared.Random;
using Robust.Shared.Timing; using Robust.Shared.Timing;
using Robust.Shared.Utility;
namespace Content.Server.Shuttles.Systems; namespace Content.Server.Shuttles.Systems;
@@ -53,7 +55,7 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem
private ISawmill _sawmill = default!; private ISawmill _sawmill = default!;
public MapId? CentComMap { get; private set; } public MapId? CentComMap { get; private set; }
public EntityUid? CentCom { get; private set; } public EntityUid? CentComGrid { get; private set; }
/// <summary> /// <summary>
/// Used for multiple shuttle spawn offsets. /// Used for multiple shuttle spawn offsets.
@@ -200,6 +202,17 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem
private void OnRoundStart(RoundStartingEvent ev) private void OnRoundStart(RoundStartingEvent ev)
{ {
if (CentComMap != null)
_mapManager.DeleteMap(CentComMap.Value);
// Just in case the grid isn't on the map.
DebugTools.Assert(Deleted(CentComGrid));
if (CentComGrid != null)
Del(CentComGrid.Value);
CentComGrid = null;
CentComMap = null;
CleanupEmergencyConsole(); CleanupEmergencyConsole();
SetupEmergencyShuttle(); SetupEmergencyShuttle();
} }
@@ -247,10 +260,10 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem
if (!string.IsNullOrEmpty(centComPath)) if (!string.IsNullOrEmpty(centComPath))
{ {
var centcomm = _map.LoadGrid(CentComMap.Value, "/Maps/centcomm.yml"); var centcomm = _map.LoadGrid(CentComMap.Value, "/Maps/centcomm.yml");
CentCom = centcomm; CentComGrid = centcomm;
if (CentCom != null) if (CentComGrid != null)
_shuttle.AddFTLDestination(CentCom.Value, false); _shuttle.AddFTLDestination(CentComGrid.Value, false);
} }
else else
{ {