using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; using Robust.Shared.Utility; namespace Content.Shared.Silicons.Borgs.Components; /// /// Periodically broadcasts borg data to robotics consoles. /// When not emagged, handles disabling and destroying commands as expected. /// [RegisterComponent, Access(typeof(SharedBorgSystem))] public sealed partial class BorgTransponderComponent : Component { /// /// Sprite of the chassis to send. /// [DataField(required: true)] public SpriteSpecifier? Sprite; /// /// Name of the chassis to send. /// [DataField(required: true)] public string Name = string.Empty; /// /// Popup shown to everyone after a borg is disabled. /// Gets passed a string "name". /// [DataField] public LocId DisabledPopup = "borg-transponder-disabled-popup"; /// /// Popup shown to the borg when it is being disabled. /// [DataField] public LocId DisablingPopup = "borg-transponder-disabling-popup"; /// /// Popup shown to everyone when a borg is being destroyed. /// Gets passed a string "name". /// [DataField] public LocId DestroyingPopup = "borg-transponder-destroying-popup"; /// /// How long to wait between each broadcast. /// [DataField] public TimeSpan BroadcastDelay = TimeSpan.FromSeconds(5); /// /// When to next broadcast data. /// [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] public TimeSpan NextBroadcast = TimeSpan.Zero; /// /// When to next disable the borg. /// [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] public TimeSpan? NextDisable; /// /// How long to wait to disable the borg after RD has ordered it. /// [DataField] public TimeSpan DisableDelay = TimeSpan.FromSeconds(5); /// /// Pretend that the borg cannot be disabled due to being on delay. /// [DataField] public bool FakeDisabling; /// /// Pretend that the borg has no brain inserted. /// [DataField] public bool FakeDisabled; }