From 749a93bbdd1c59e251344099e3f9ab63eff94ce1 Mon Sep 17 00:00:00 2001
From: re-silvered <254359714+re-silvered@users.noreply.github.com>
Date: Thu, 11 Jun 2026 20:42:36 +1000
Subject: [PATCH 1/2] Add method for item deletion during midshift cleanup
Update GameTicker.RoundFlow.cs
---
.../GameTicking/GameTicker.RoundFlow.cs | 49 ++++++++++++++++---
1 file changed, 42 insertions(+), 7 deletions(-)
diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs
index 06b8352475d..5d00986f0c9 100644
--- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs
+++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs
@@ -1,3 +1,4 @@
+using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using Content.Server._NF.PublicTransit.Components;
@@ -856,6 +857,27 @@ private async void SendRoundStartingDiscordMessage()
}
}
+ ///
+ /// Goes through a list and deletes specified prototype entities.
+ ///
+ private void QueueDeleteEntities(params string[] prototypeIds)
+ {
+ var cleanupPrototypeIds = prototypeIds.ToHashSet();
+ var metaQuery = EntityQueryEnumerator();
+
+ while (metaQuery.MoveNext(out var entityUid, out var metadata))
+ {
+ var prototype = metadata.EntityPrototype;
+ if (prototype == null)
+ continue;
+
+ if (cleanupPrototypeIds.Contains(prototype.ID))
+ {
+ QueueDel(entityUid);
+ }
+ }
+ }
+
///
/// Cleanup that has to run to clear up anything from the previous round.
/// Stuff like wiping the previous map clean.
@@ -892,13 +914,26 @@ private void ResettingCleanup()
_gameMapManager.ClearSelectedMap();
- // Hardlight start - Delete all rescue beacons from the previous round before the new map loads
- var rescueBeaconQuery = EntityQueryEnumerator();
- while (rescueBeaconQuery.MoveNext(out var beaconUid, out var beacon))
- {
- QueueDel(beaconUid);
- }
- // Hardlight end
+ // Hardlight - Delete specified entities before new map loads, items that have the potential to break round progression
+ QueueDeleteEntities(
+ "RescueBeacon",
+ "NukeDisk",
+ "PinpointerNuclear",
+ "HandTeleporter",
+ "BoxFolderQmClipboard",
+ "DoorRemoteArmory",
+ "DoorRemoteCargo",
+ "DoorRemoteEngineering",
+ "DoorRemoteMedical",
+ "DoorRemoteResearch",
+ "DoorRemoteSecurity",
+ "DoorRemoteService",
+ "DoorRemoteCustom",
+ "DoorRemoteCommand",
+ "PinpointerMothership",
+ "Demag",
+ "EncryptionKeySyndie"
+ );
// Clear up any game rules.
From a068f87a8d72f6f87c0eb7cbae45e36694d9bc47 Mon Sep 17 00:00:00 2001
From: re-silvered <254359714+re-silvered@users.noreply.github.com>
Date: Fri, 12 Jun 2026 08:46:23 +1000
Subject: [PATCH 2/2] more cleanup, + commenting
---
Content.Server/GameTicking/GameTicker.RoundFlow.cs | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs
index 5d00986f0c9..4f65543243a 100644
--- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs
+++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs
@@ -857,6 +857,7 @@ private async void SendRoundStartingDiscordMessage()
}
}
+ // Hardlight start
///
/// Goes through a list and deletes specified prototype entities.
///
@@ -877,6 +878,7 @@ private void QueueDeleteEntities(params string[] prototypeIds)
}
}
}
+ // Hardlight end
///
/// Cleanup that has to run to clear up anything from the previous round.
@@ -918,7 +920,7 @@ private void ResettingCleanup()
QueueDeleteEntities(
"RescueBeacon",
"NukeDisk",
- "PinpointerNuclear",
+ "PinpointerNuclear", // todo: make old pinpointers have a defunct state instead of just deleting them for better rp.
"HandTeleporter",
"BoxFolderQmClipboard",
"DoorRemoteArmory",
@@ -930,13 +932,16 @@ private void ResettingCleanup()
"DoorRemoteService",
"DoorRemoteCustom",
"DoorRemoteCommand",
- "PinpointerMothership",
+ "PinpointerMothership", // todo: same here as nuke pinpointer
"Demag",
- "EncryptionKeySyndie"
+ "EncryptionKeySyndie", // The syndicate rotates their encryption! Your old ones won't work :3
+ "ShadowPortal", // Don't want shadow anomaly shenanigans on CC
+ "ShadowKudzu",
+ "ShadowKudzuWeak",
+ "ShadowTree"
);
// Clear up any game rules.
-
ClearGameRules();
CurrentPreset = null;