using Content.Server.Anomaly.Effects; using Content.Shared.Destructible.Thresholds; using Content.Shared.DeviceLinking; using Robust.Shared.Prototypes; namespace Content.Server.Anomaly.Components; [RegisterComponent, AutoGenerateComponentPause, Access(typeof(TechAnomalySystem))] public sealed partial class TechAnomalyComponent : Component { /// /// the distance at which random ports will bind to the anomaly. Scales with severity. /// [DataField] public MinMax LinkRadius = new(5, 10); /// /// the maximum number of entities with which an anomaly is associated during pulsing. Scales with severity /// [DataField] public MinMax LinkCountPerPulse = new(2, 8); /// /// Number of linkable pairs. when supercrit, the anomaly will link random devices in the radius to each other in pairs. /// [DataField] public int LinkCountSupercritical = 30; /// /// port activated by pulsation of the anomaly /// [DataField] public ProtoId PulsePort = "Pulse"; /// /// A port that activates every few seconds of an anomaly's lifetime /// [DataField] public ProtoId TimerPort = "Timer"; /// /// Chance of emag the device, when supercrit /// [DataField] public float EmagSupercritProbability = 0.4f; /// /// A prototype beam shot into devices when pulsed /// [DataField] public EntProtoId LinkBeamProto = "AnomalyTechBeam"; /// /// time until the next activation of the timer ports /// [DataField, AutoPausedField] public TimeSpan NextTimer = TimeSpan.Zero; [DataField] public float TimerFrequency = 3f; }