namespace Content.Server.GameTicking.Rules.Components; [RegisterComponent, Access(typeof(CaptureAreaSystem))] public sealed partial class CaptureAreaRuleComponent : Component { } [RegisterComponent] public sealed partial class CaptureAreaComponent : Component { /// /// The name for this capturable area /// [DataField("name")] public string Name { get; set; } = "Objective Area"; /// /// How long does the area need to be held for, in seconds /// [DataField("captureDuration")] public float CaptureDuration { get; set; } = 300f; /// /// How far entities need to be to count towards capture /// [DataField("captureRadius")] public float CaptureRadius { get; set; } = 4f; /// /// What the capture timer is currently at /// [DataField("captureTimer")] public float CaptureTimer { get; set; } = 0f; /// /// Is the area currently occupied? /// [DataField("occupied")] public bool Occupied { get; set; } = false; /// /// Which faction is occupying the area? /// [DataField("controller")] public string Controller { get; set; } = ""; /// /// The previous controller (for announcements when controller changes) /// [DataField("previousController")] public string PreviousController { get; set; } = ""; /// /// Which factions can occupy this area? /// [DataField("capturableFactions")] public List CapturableFactions { get; set; } = []; }