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;