--- /dev/null
+namespace Content.Server.GameTicking.Rules.VariationPass.Components.ReplacementMarkers;
+
+/// <summary>
+/// This component marks replaceable solar panels for use with fast queries in variation passes.
+/// </summary>
+[RegisterComponent]
+public sealed partial class SolarPanelReplacementMarkerComponent : Component;
--- /dev/null
+using Content.Server.GameTicking.Rules.VariationPass.Components;
+using Content.Server.GameTicking.Rules.VariationPass.Components.ReplacementMarkers;
+
+namespace Content.Server.GameTicking.Rules.VariationPass;
+
+/// <summary>
+/// This handles the ability to replace entities marked with <see cref="SolarPanelReplacementMarkerComponent"/> in a variation pass
+/// </summary>
+public sealed class SolarPanelReplaceVariationPassSystem : BaseEntityReplaceVariationPassSystem<SolarPanelReplacementMarkerComponent, SolarPanelReplaceVariationPassComponent>
+{
+}
blacklist:
components:
- ParticleAcceleratorControlBox
+
+- type: entity
+ id: SolarPanelDamageVariationPass
+ parent: BaseVariationPass
+ components:
+ - type: SolarPanelReplaceVariationPass
+ - type: EntityReplaceVariationPass
+ entitiesPerReplacementAverage: 30
+ entitiesPerReplacementStdDev: 5
+ replacements:
+ - id: SolarPanelBroken
+
+- type: entity
+ id: SolarPanelEmptyVariationPass
+ parent: BaseVariationPass
+ components:
+ - type: SolarPanelReplaceVariationPass
+ - type: EntityReplaceVariationPass
+ entitiesPerReplacementAverage: 30
+ entitiesPerReplacementStdDev: 5
+ replacements:
+ - id: SolarAssembly