From a3a1538d32c4e0c7d9aeab9790e0c522a211fc79 Mon Sep 17 00:00:00 2001
From: deltanedas <39013340+deltanedas@users.noreply.github.com>
Date: Tue, 4 Jun 2024 11:53:24 +0000
Subject: [PATCH] move gamerule components to shared (#28572)
* move MinMax to shared
* cleanup MinMax
* move other ticking components to shared just because
* remove unused prototype file
* update everything to use shared components
* test
* test 2
* test 3
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
---
.../DestructibleDestructionTest.cs | 1 +
.../Tests/GameRules/FailAndStartPresetTest.cs | 2 +-
.../Tests/GameRules/RuleMaxTimeRestartTest.cs | 2 +-
Content.Server/Administration/ServerApi.cs | 2 +-
Content.Server/Antag/AntagSelectionSystem.cs | 2 +-
.../Components/AntagSelectionComponent.cs | 2 +-
.../Antag/MobReplacementRuleSystem.cs | 2 +-
.../Behaviors/SpawnEntitiesBehavior.cs | 6 ++---
.../Destructible/Thresholds/MinMax.cs | 26 -------------------
.../GameTicking/GameTicker.GameRule.cs | 2 +-
.../GameTicking/Rules/DeathMatchRuleSystem.cs | 2 +-
.../GameTicking/Rules/GameRulePrototype.cs | 15 -----------
.../Rules/GameRuleSystem.Utility.cs | 2 +-
.../GameTicking/Rules/GameRuleSystem.cs | 2 +-
.../Rules/InactivityTimeRestartRuleSystem.cs | 2 +-
.../Rules/KillCalloutRuleSystem.cs | 2 +-
.../GameTicking/Rules/LoadMapRuleSystem.cs | 2 +-
.../Rules/MaxTimeRestartRuleSystem.cs | 2 +-
.../GameTicking/Rules/NukeopsRuleSystem.cs | 2 +-
.../GameTicking/Rules/RespawnRuleSystem.cs | 2 +-
.../Rules/RevolutionaryRuleSystem.cs | 2 +-
.../RoundstartStationVariationRuleSystem.cs | 2 +-
.../GameTicking/Rules/SandboxRuleSystem.cs | 2 +-
.../GameTicking/Rules/SecretRuleSystem.cs | 2 +-
.../GameTicking/Rules/SubGamemodesSystem.cs | 2 +-
.../GameTicking/Rules/TraitorRuleSystem.cs | 2 +-
.../GameTicking/Rules/ZombieRuleSystem.cs | 2 +-
Content.Server/Objectives/ObjectivesSystem.cs | 2 +-
.../PowerMonitoringConsoleSystem.cs | 2 +-
.../EntitySystems/ConditionalSpawnerSystem.cs | 2 +-
.../BasicStationEventSchedulerSystem.cs | 2 +-
.../Events/AlertLevelInterceptionRule.cs | 4 +--
.../StationEvents/Events/AnomalySpawnRule.cs | 2 +-
.../Events/BluespaceArtifactRule.cs | 2 +-
.../Events/BluespaceLockerRule.cs | 2 +-
.../StationEvents/Events/BreakerFlipRule.cs | 2 +-
.../Events/BureaucraticErrorRule.cs | 2 +-
.../StationEvents/Events/CargoGiftsRule.cs | 2 +-
.../StationEvents/Events/ClericalErrorRule.cs | 2 +-
.../StationEvents/Events/FalseAlarmRule.cs | 2 +-
.../StationEvents/Events/GasLeakRule.cs | 2 +-
.../StationEvents/Events/ImmovableRodRule.cs | 2 +-
.../StationEvents/Events/IonStormRule.cs | 2 +-
.../StationEvents/Events/KudzuGrowthRule.cs | 2 +-
.../Events/MassHallucinationsRule.cs | 2 +-
.../StationEvents/Events/MeteorSwarmRule.cs | 2 +-
.../StationEvents/Events/NinjaSpawnRule.cs | 2 +-
.../Events/PowerGridCheckRule.cs | 2 +-
.../Events/RandomEntityStorageSpawnRule.cs | 2 +-
.../Events/RandomSentienceRule.cs | 2 +-
.../StationEvents/Events/RandomSpawnRule.cs | 2 +-
.../StationEvents/Events/SolarFlareRule.cs | 2 +-
.../Events/StationEventSystem.cs | 2 +-
.../StationEvents/Events/VentClogRule.cs | 2 +-
.../StationEvents/Events/VentCrittersRule.cs | 2 +-
.../RampingStationEventSchedulerSystem.cs | 2 +-
.../Destructible/Thresholds/MinMax.cs | 24 +++++++++++++++++
.../Components/ActiveGameRuleComponent.cs | 6 ++---
.../Components/DelayedStartRuleComponent.cs | 2 +-
.../Components/EndedGameRuleComponent.cs | 6 ++---
.../Components/GameRuleComponent.cs | 4 +--
61 files changed, 88 insertions(+), 108 deletions(-)
delete mode 100644 Content.Server/Destructible/Thresholds/MinMax.cs
delete mode 100644 Content.Server/GameTicking/Rules/GameRulePrototype.cs
create mode 100644 Content.Shared/Destructible/Thresholds/MinMax.cs
rename {Content.Server => Content.Shared}/GameTicking/Components/ActiveGameRuleComponent.cs (67%)
rename {Content.Server => Content.Shared}/GameTicking/Components/DelayedStartRuleComponent.cs (91%)
rename {Content.Server => Content.Shared}/GameTicking/Components/EndedGameRuleComponent.cs (61%)
rename {Content.Server => Content.Shared}/GameTicking/Components/GameRuleComponent.cs (94%)
diff --git a/Content.IntegrationTests/Tests/Destructible/DestructibleDestructionTest.cs b/Content.IntegrationTests/Tests/Destructible/DestructibleDestructionTest.cs
index e14a826467..a50238d8f5 100644
--- a/Content.IntegrationTests/Tests/Destructible/DestructibleDestructionTest.cs
+++ b/Content.IntegrationTests/Tests/Destructible/DestructibleDestructionTest.cs
@@ -3,6 +3,7 @@ using Content.Server.Destructible.Thresholds;
using Content.Server.Destructible.Thresholds.Behaviors;
using Content.Shared.Damage;
using Content.Shared.Damage.Prototypes;
+using Content.Shared.Destructible.Thresholds;
using Robust.Shared.GameObjects;
using Robust.Shared.Prototypes;
using static Content.IntegrationTests.Tests.Destructible.DestructibleTestPrototypes;
diff --git a/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs b/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs
index 1fed226bee..09a27c1bae 100644
--- a/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs
+++ b/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs
@@ -1,9 +1,9 @@
#nullable enable
using Content.Server.GameTicking;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Presets;
using Content.Shared.CCVar;
using Content.Shared.GameTicking;
+using Content.Shared.GameTicking.Components;
using Robust.Shared.GameObjects;
namespace Content.IntegrationTests.Tests.GameRules;
diff --git a/Content.IntegrationTests/Tests/GameRules/RuleMaxTimeRestartTest.cs b/Content.IntegrationTests/Tests/GameRules/RuleMaxTimeRestartTest.cs
index 20a157e33e..4708bd10c0 100644
--- a/Content.IntegrationTests/Tests/GameRules/RuleMaxTimeRestartTest.cs
+++ b/Content.IntegrationTests/Tests/GameRules/RuleMaxTimeRestartTest.cs
@@ -1,9 +1,9 @@
using Content.Server.GameTicking;
using Content.Server.GameTicking.Commands;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules;
using Content.Server.GameTicking.Rules.Components;
using Content.Shared.CCVar;
+using Content.Shared.GameTicking.Components;
using Robust.Shared.Configuration;
using Robust.Shared.GameObjects;
using Robust.Shared.Timing;
diff --git a/Content.Server/Administration/ServerApi.cs b/Content.Server/Administration/ServerApi.cs
index 04fd38598f..d0f23db637 100644
--- a/Content.Server/Administration/ServerApi.cs
+++ b/Content.Server/Administration/ServerApi.cs
@@ -8,13 +8,13 @@ using System.Text.Json.Nodes;
using System.Threading.Tasks;
using Content.Server.Administration.Systems;
using Content.Server.GameTicking;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Presets;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.Maps;
using Content.Server.RoundEnd;
using Content.Shared.Administration.Managers;
using Content.Shared.CCVar;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Prototypes;
using Robust.Server.ServerStatus;
using Robust.Shared.Asynchronous;
diff --git a/Content.Server/Antag/AntagSelectionSystem.cs b/Content.Server/Antag/AntagSelectionSystem.cs
index 710bb8f3d7..52ccb1bd70 100644
--- a/Content.Server/Antag/AntagSelectionSystem.cs
+++ b/Content.Server/Antag/AntagSelectionSystem.cs
@@ -2,7 +2,6 @@ using System.Linq;
using Content.Server.Antag.Components;
using Content.Server.Chat.Managers;
using Content.Server.GameTicking;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules;
using Content.Server.Ghost.Roles;
using Content.Server.Ghost.Roles.Components;
@@ -15,6 +14,7 @@ using Content.Server.Shuttles.Components;
using Content.Server.Station.Systems;
using Content.Shared.Antag;
using Content.Shared.GameTicking;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Ghost;
using Content.Shared.Humanoid;
using Content.Shared.Players;
diff --git a/Content.Server/Antag/Components/AntagSelectionComponent.cs b/Content.Server/Antag/Components/AntagSelectionComponent.cs
index f70c27d12f..1ab16e8aec 100644
--- a/Content.Server/Antag/Components/AntagSelectionComponent.cs
+++ b/Content.Server/Antag/Components/AntagSelectionComponent.cs
@@ -1,6 +1,6 @@
using Content.Server.Administration.Systems;
-using Content.Server.Destructible.Thresholds;
using Content.Shared.Antag;
+using Content.Shared.Destructible.Thresholds;
using Content.Shared.Roles;
using Content.Shared.Storage;
using Content.Shared.Whitelist;
diff --git a/Content.Server/Antag/MobReplacementRuleSystem.cs b/Content.Server/Antag/MobReplacementRuleSystem.cs
index 18837b5a7c..eeff765d8b 100644
--- a/Content.Server/Antag/MobReplacementRuleSystem.cs
+++ b/Content.Server/Antag/MobReplacementRuleSystem.cs
@@ -1,7 +1,7 @@
using Content.Server.Antag.Mimic;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules;
using Content.Server.GameTicking.Rules.Components;
+using Content.Shared.GameTicking.Components;
using Content.Shared.VendingMachines;
using Robust.Shared.Map;
using Robust.Shared.Random;
diff --git a/Content.Server/Destructible/Thresholds/Behaviors/SpawnEntitiesBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/SpawnEntitiesBehavior.cs
index 057b6df9df..4ec6fa9e90 100644
--- a/Content.Server/Destructible/Thresholds/Behaviors/SpawnEntitiesBehavior.cs
+++ b/Content.Server/Destructible/Thresholds/Behaviors/SpawnEntitiesBehavior.cs
@@ -1,12 +1,12 @@
using System.Numerics;
using Content.Server.Forensics;
using Content.Server.Stack;
+using Content.Shared.Destructible.Thresholds;
using Content.Shared.Prototypes;
using Content.Shared.Stacks;
using Robust.Server.GameObjects;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
namespace Content.Server.Destructible.Thresholds.Behaviors
{
@@ -17,8 +17,8 @@ namespace Content.Server.Destructible.Thresholds.Behaviors
///
/// Entities spawned on reaching this threshold, from a min to a max.
///
- [DataField("spawn", customTypeSerializer:typeof(PrototypeIdDictionarySerializer))]
- public Dictionary Spawn { get; set; } = new();
+ [DataField]
+ public Dictionary Spawn = new();
[DataField("offset")]
public float Offset { get; set; } = 0.5f;
diff --git a/Content.Server/Destructible/Thresholds/MinMax.cs b/Content.Server/Destructible/Thresholds/MinMax.cs
deleted file mode 100644
index c44864183a..0000000000
--- a/Content.Server/Destructible/Thresholds/MinMax.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Robust.Shared.Random;
-
-namespace Content.Server.Destructible.Thresholds
-{
- [Serializable]
- [DataDefinition]
- public partial struct MinMax
- {
- [DataField("min")]
- public int Min;
-
- [DataField("max")]
- public int Max;
-
- public MinMax(int min, int max)
- {
- Min = min;
- Max = max;
- }
-
- public int Next(IRobustRandom random)
- {
- return random.Next(Min, Max + 1);
- }
- }
-}
diff --git a/Content.Server/GameTicking/GameTicker.GameRule.cs b/Content.Server/GameTicking/GameTicker.GameRule.cs
index a6d0a4baf0..2a33d01bd0 100644
--- a/Content.Server/GameTicking/GameTicker.GameRule.cs
+++ b/Content.Server/GameTicking/GameTicker.GameRule.cs
@@ -1,9 +1,9 @@
using System.Linq;
using Content.Server.Administration;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules.Components;
using Content.Shared.Administration;
using Content.Shared.Database;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Prototypes;
using JetBrains.Annotations;
using Robust.Shared.Console;
diff --git a/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs b/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs
index 9e3203d170..557e44f095 100644
--- a/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs
@@ -1,12 +1,12 @@
using System.Linq;
using Content.Server.Administration.Commands;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.KillTracking;
using Content.Server.Mind;
using Content.Server.Points;
using Content.Server.RoundEnd;
using Content.Server.Station.Systems;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Points;
using Content.Shared.Storage;
using Robust.Server.GameObjects;
diff --git a/Content.Server/GameTicking/Rules/GameRulePrototype.cs b/Content.Server/GameTicking/Rules/GameRulePrototype.cs
deleted file mode 100644
index 47f99184f7..0000000000
--- a/Content.Server/GameTicking/Rules/GameRulePrototype.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-namespace Content.Server.GameTicking.Rules;
-
-/*
-[Prototype("gameRule")]
-public sealed partial class GameRulePrototype : IPrototype
-{
- [IdDataField]
- public string ID { get; private set; } = default!;
-
- [DataField("config", required: true)]
- public GameRuleConfiguration Configuration { get; private set; } = default!;
-}
-*/
diff --git a/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs b/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs
index 9ac7a6edbb..5a5eb720cf 100644
--- a/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs
+++ b/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs
@@ -1,8 +1,8 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.Station.Components;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Random.Helpers;
using Robust.Server.GameObjects;
using Robust.Shared.Collections;
diff --git a/Content.Server/GameTicking/Rules/GameRuleSystem.cs b/Content.Server/GameTicking/Rules/GameRuleSystem.cs
index 05374aa139..730748ce6b 100644
--- a/Content.Server/GameTicking/Rules/GameRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/GameRuleSystem.cs
@@ -1,6 +1,6 @@
using Content.Server.Atmos.EntitySystems;
using Content.Server.Chat.Managers;
-using Content.Server.GameTicking.Components;
+using Content.Shared.GameTicking.Components;
using Robust.Server.GameObjects;
using Robust.Shared.Random;
using Robust.Shared.Timing;
diff --git a/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs b/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs
index 01fa387595..e56537c438 100644
--- a/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs
@@ -1,7 +1,7 @@
using System.Threading;
using Content.Server.Chat.Managers;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules.Components;
+using Content.Shared.GameTicking.Components;
using Robust.Server.Player;
using Robust.Shared.Player;
using Timer = Robust.Shared.Timing.Timer;
diff --git a/Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs b/Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs
index 3da55e30c9..8f706fd2ad 100644
--- a/Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs
@@ -1,8 +1,8 @@
using Content.Server.Chat.Managers;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.KillTracking;
using Content.Shared.Chat;
+using Content.Shared.GameTicking.Components;
using Robust.Server.Player;
using Robust.Shared.Player;
using Robust.Shared.Random;
diff --git a/Content.Server/GameTicking/Rules/LoadMapRuleSystem.cs b/Content.Server/GameTicking/Rules/LoadMapRuleSystem.cs
index 1c09d6e86e..3594242bcd 100644
--- a/Content.Server/GameTicking/Rules/LoadMapRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/LoadMapRuleSystem.cs
@@ -1,6 +1,6 @@
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.GridPreloader;
+using Content.Shared.GameTicking.Components;
using Robust.Server.GameObjects;
using Robust.Server.Maps;
using Robust.Shared.Map;
diff --git a/Content.Server/GameTicking/Rules/MaxTimeRestartRuleSystem.cs b/Content.Server/GameTicking/Rules/MaxTimeRestartRuleSystem.cs
index cae99fee9f..db9df8a5b0 100644
--- a/Content.Server/GameTicking/Rules/MaxTimeRestartRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/MaxTimeRestartRuleSystem.cs
@@ -1,7 +1,7 @@
using System.Threading;
using Content.Server.Chat.Managers;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules.Components;
+using Content.Shared.GameTicking.Components;
using Timer = Robust.Shared.Timing.Timer;
namespace Content.Server.GameTicking.Rules;
diff --git a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs
index 6688bfd980..5c3459ef81 100644
--- a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs
@@ -11,6 +11,7 @@ using Content.Server.Shuttles.Systems;
using Content.Server.Station.Components;
using Content.Server.Store.Components;
using Content.Server.Store.Systems;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Mobs;
using Content.Shared.Mobs.Components;
using Content.Shared.NPC.Components;
@@ -24,7 +25,6 @@ using Robust.Shared.Map;
using Robust.Shared.Random;
using Robust.Shared.Utility;
using System.Linq;
-using Content.Server.GameTicking.Components;
using Content.Shared.Store.Components;
namespace Content.Server.GameTicking.Rules;
diff --git a/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs b/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs
index 3f8d31f622..38102f1a2e 100644
--- a/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs
@@ -1,9 +1,9 @@
using Content.Server.Chat.Managers;
using Content.Server.Database.Migrations.Postgres;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.Station.Systems;
using Content.Shared.Chat;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Interaction.Events;
using Content.Shared.Mind;
using Content.Shared.Mobs;
diff --git a/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs b/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs
index 58ced96295..c5f88ab6cf 100644
--- a/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs
@@ -12,6 +12,7 @@ using Content.Server.RoundEnd;
using Content.Server.Shuttles.Systems;
using Content.Server.Station.Systems;
using Content.Shared.Database;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Humanoid;
using Content.Shared.IdentityManagement;
using Content.Shared.Mind;
@@ -27,7 +28,6 @@ using Content.Shared.Stunnable;
using Content.Shared.Zombies;
using Robust.Shared.Prototypes;
using Robust.Shared.Timing;
-using Content.Server.GameTicking.Components;
using Content.Shared.Cuffs.Components;
namespace Content.Server.GameTicking.Rules;
diff --git a/Content.Server/GameTicking/Rules/RoundstartStationVariationRuleSystem.cs b/Content.Server/GameTicking/Rules/RoundstartStationVariationRuleSystem.cs
index f09ed3ebc3..570889155b 100644
--- a/Content.Server/GameTicking/Rules/RoundstartStationVariationRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/RoundstartStationVariationRuleSystem.cs
@@ -1,9 +1,9 @@
using System.Linq;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.Shuttles.Systems;
using Content.Server.Station.Components;
using Content.Server.Station.Events;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Storage;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
diff --git a/Content.Server/GameTicking/Rules/SandboxRuleSystem.cs b/Content.Server/GameTicking/Rules/SandboxRuleSystem.cs
index c60670a3ad..23e9ee5a7d 100644
--- a/Content.Server/GameTicking/Rules/SandboxRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/SandboxRuleSystem.cs
@@ -1,6 +1,6 @@
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.Sandbox;
+using Content.Shared.GameTicking.Components;
namespace Content.Server.GameTicking.Rules;
diff --git a/Content.Server/GameTicking/Rules/SecretRuleSystem.cs b/Content.Server/GameTicking/Rules/SecretRuleSystem.cs
index d25262b797..320f9d197a 100644
--- a/Content.Server/GameTicking/Rules/SecretRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/SecretRuleSystem.cs
@@ -1,10 +1,10 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Content.Server.Administration.Logs;
-using Content.Server.GameTicking.Components;
using Content.Server.Chat.Managers;
using Content.Server.GameTicking.Presets;
using Content.Server.GameTicking.Rules.Components;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Random;
using Content.Shared.CCVar;
using Content.Shared.Database;
diff --git a/Content.Server/GameTicking/Rules/SubGamemodesSystem.cs b/Content.Server/GameTicking/Rules/SubGamemodesSystem.cs
index 4486ee40fb..4fe3827ce5 100644
--- a/Content.Server/GameTicking/Rules/SubGamemodesSystem.cs
+++ b/Content.Server/GameTicking/Rules/SubGamemodesSystem.cs
@@ -1,5 +1,5 @@
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules.Components;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Storage;
namespace Content.Server.GameTicking.Rules;
diff --git a/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs b/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs
index 29de85a42e..17442da857 100644
--- a/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs
@@ -5,6 +5,7 @@ using Content.Server.Objectives;
using Content.Server.PDA.Ringer;
using Content.Server.Roles;
using Content.Server.Traitor.Uplink;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Mind;
using Content.Shared.NPC.Systems;
using Content.Shared.Objectives.Components;
@@ -15,7 +16,6 @@ using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using System.Linq;
using System.Text;
-using Content.Server.GameTicking.Components;
namespace Content.Server.GameTicking.Rules;
diff --git a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs
index 97e5fd3fc4..95d1f791ef 100644
--- a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs
@@ -6,6 +6,7 @@ using Content.Server.RoundEnd;
using Content.Server.Station.Components;
using Content.Server.Station.Systems;
using Content.Server.Zombies;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Humanoid;
using Content.Shared.Mind;
using Content.Shared.Mobs;
@@ -15,7 +16,6 @@ using Content.Shared.Zombies;
using Robust.Shared.Player;
using Robust.Shared.Timing;
using System.Globalization;
-using Content.Server.GameTicking.Components;
namespace Content.Server.GameTicking.Rules;
diff --git a/Content.Server/Objectives/ObjectivesSystem.cs b/Content.Server/Objectives/ObjectivesSystem.cs
index f8ecc22828..18077b413a 100644
--- a/Content.Server/Objectives/ObjectivesSystem.cs
+++ b/Content.Server/Objectives/ObjectivesSystem.cs
@@ -1,6 +1,7 @@
using Content.Server.GameTicking;
using Content.Server.Shuttles.Systems;
using Content.Shared.Cuffs.Components;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Mind;
using Content.Shared.Objectives.Components;
using Content.Shared.Objectives.Systems;
@@ -9,7 +10,6 @@ using Content.Shared.Random.Helpers;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using System.Linq;
-using Content.Server.GameTicking.Components;
using System.Text;
using Robust.Server.Player;
diff --git a/Content.Server/Power/EntitySystems/PowerMonitoringConsoleSystem.cs b/Content.Server/Power/EntitySystems/PowerMonitoringConsoleSystem.cs
index 42c84b7f43..35b17dc958 100644
--- a/Content.Server/Power/EntitySystems/PowerMonitoringConsoleSystem.cs
+++ b/Content.Server/Power/EntitySystems/PowerMonitoringConsoleSystem.cs
@@ -6,6 +6,7 @@ using Content.Server.Power.Nodes;
using Content.Server.Power.NodeGroups;
using Content.Server.Station.Components;
using Content.Server.StationEvents.Components;
+using Content.Shared.GameTicking.Components;
using Content.Shared.Pinpointer;
using Content.Shared.Power;
using JetBrains.Annotations;
@@ -13,7 +14,6 @@ using Robust.Server.GameObjects;
using Robust.Shared.Map.Components;
using Robust.Shared.Utility;
using System.Linq;
-using Content.Server.GameTicking.Components;
namespace Content.Server.Power.EntitySystems;
diff --git a/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs b/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs
index 75f8618798..f57481b05b 100644
--- a/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs
+++ b/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs
@@ -1,8 +1,8 @@
using System.Numerics;
using Content.Server.GameTicking;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.Spawners.Components;
+using Content.Shared.GameTicking.Components;
using JetBrains.Annotations;
using Robust.Shared.Random;
diff --git a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs
index 7e32f546be..501d9033b9 100644
--- a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs
+++ b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs
@@ -1,11 +1,11 @@
using System.Linq;
using Content.Server.Administration;
using Content.Server.GameTicking;
-using Content.Server.GameTicking.Components;
using Content.Server.GameTicking.Rules;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.StationEvents.Components;
using Content.Shared.Administration;
+using Content.Shared.GameTicking.Components;
using JetBrains.Annotations;
using Robust.Shared.Random;
using Robust.Shared.Toolshed;
diff --git a/Content.Server/StationEvents/Events/AlertLevelInterceptionRule.cs b/Content.Server/StationEvents/Events/AlertLevelInterceptionRule.cs
index a78a542d3b..916d7d1688 100644
--- a/Content.Server/StationEvents/Events/AlertLevelInterceptionRule.cs
+++ b/Content.Server/StationEvents/Events/AlertLevelInterceptionRule.cs
@@ -1,6 +1,6 @@
-using Content.Server.GameTicking.Components;
using Content.Server.StationEvents.Components;
using Content.Server.AlertLevel;
+using Content.Shared.GameTicking.Components;
namespace Content.Server.StationEvents.Events;
@@ -20,4 +20,4 @@ public sealed class AlertLevelInterceptionRule : StationEventSystem
/// Added to game rules before and removed before .
/// Mutually exclusive with .
///
[RegisterComponent]
-public sealed partial class ActiveGameRuleComponent : Component
-{
-}
+public sealed partial class ActiveGameRuleComponent : Component;
diff --git a/Content.Server/GameTicking/Components/DelayedStartRuleComponent.cs b/Content.Shared/GameTicking/Components/DelayedStartRuleComponent.cs
similarity index 91%
rename from Content.Server/GameTicking/Components/DelayedStartRuleComponent.cs
rename to Content.Shared/GameTicking/Components/DelayedStartRuleComponent.cs
index de4be83627..9275da29b0 100644
--- a/Content.Server/GameTicking/Components/DelayedStartRuleComponent.cs
+++ b/Content.Shared/GameTicking/Components/DelayedStartRuleComponent.cs
@@ -1,6 +1,6 @@
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
-namespace Content.Server.GameTicking.Components;
+namespace Content.Shared.GameTicking.Components;
///
/// Generic component used to track a gamerule that's start has been delayed.
diff --git a/Content.Server/GameTicking/Components/EndedGameRuleComponent.cs b/Content.Shared/GameTicking/Components/EndedGameRuleComponent.cs
similarity index 61%
rename from Content.Server/GameTicking/Components/EndedGameRuleComponent.cs
rename to Content.Shared/GameTicking/Components/EndedGameRuleComponent.cs
index 3234bfff3a..5e209ed78a 100644
--- a/Content.Server/GameTicking/Components/EndedGameRuleComponent.cs
+++ b/Content.Shared/GameTicking/Components/EndedGameRuleComponent.cs
@@ -1,10 +1,8 @@
-namespace Content.Server.GameTicking.Components;
+namespace Content.Shared.GameTicking.Components;
///
/// Added to game rules before .
/// Mutually exclusive with .
///
[RegisterComponent]
-public sealed partial class EndedGameRuleComponent : Component
-{
-}
+public sealed partial class EndedGameRuleComponent : Component;
diff --git a/Content.Server/GameTicking/Components/GameRuleComponent.cs b/Content.Shared/GameTicking/Components/GameRuleComponent.cs
similarity index 94%
rename from Content.Server/GameTicking/Components/GameRuleComponent.cs
rename to Content.Shared/GameTicking/Components/GameRuleComponent.cs
index 635452b3f3..4e93c2b003 100644
--- a/Content.Server/GameTicking/Components/GameRuleComponent.cs
+++ b/Content.Shared/GameTicking/Components/GameRuleComponent.cs
@@ -1,8 +1,8 @@
-using Content.Server.Destructible.Thresholds;
+using Content.Shared.Destructible.Thresholds;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
-namespace Content.Server.GameTicking.Components;
+namespace Content.Shared.GameTicking.Components;
///
/// Component attached to all gamerule entities.