using Content.Shared.Radio; using Content.Shared.Robotics; using Content.Shared.Robotics.Systems; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Robotics.Components; /// /// Robotics console for managing borgs. /// [RegisterComponent, NetworkedComponent, Access(typeof(SharedRoboticsConsoleSystem))] [AutoGenerateComponentState, AutoGenerateComponentPause] public sealed partial class RoboticsConsoleComponent : Component { /// /// Address and data of each cyborg. /// [DataField] public Dictionary Cyborgs = new(); /// /// After not responding for this length of time borgs are removed from the console. /// [DataField] public TimeSpan Timeout = TimeSpan.FromSeconds(10); /// /// Radio channel to send messages on. /// [DataField] public ProtoId RadioChannel = "Science"; /// /// Radio message sent when destroying a borg. /// [DataField] public LocId DestroyMessage = "robotics-console-cyborg-destroying"; /// /// Cooldown on destroying borgs to prevent complete abuse. /// [DataField] public TimeSpan DestroyCooldown = TimeSpan.FromSeconds(30); /// /// When a borg can next be destroyed. /// [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] [AutoNetworkedField, AutoPausedField] public TimeSpan NextDestroy = TimeSpan.Zero; /// /// Controls if the console can disable or destroy any borg. /// [DataField] public bool AllowBorgControl = true; }