using Content.Shared.Roles; using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Server.GameTicking.Rules.Components; [RegisterComponent, Access(typeof(ValleyPointsRuleSystem))] public sealed partial class ValleyPointsComponent : Component { /// /// The current points for Blugoslavia. /// [DataField] public int BlugoslaviaPoints = 0; /// /// The current points for the Insurgents. /// [DataField] public int InsurgentPoints = 0; /// /// Points needed to win the match. /// [DataField] public int PointsToWin = 1000; /// /// Match duration in minutes. /// [DataField] public float MatchDurationMinutes = 50f; /// /// Points awarded for killing a Blugoslavian soldier. /// [DataField] public int KillPoints = 30; /// /// Points awarded for delivering a supply box. /// [DataField] public int SupplyBoxDeliveryPoints = 50; /// /// Points awarded for stealing a supply box. /// [DataField] public int StolenSupplyBoxPoints = 75; /// /// Points awarded for escorting a convoy. /// [DataField] public int ConvoyEscortPoints = 100; /// /// Points awarded for holding a checkpoint. /// [DataField] public int CheckpointHoldPoints = 5; /// /// Bonus points for holding all checkpoints. /// [DataField] public int AllCheckpointsBonusPoints = 100; /// /// Time in seconds to hold a checkpoint before earning points. /// [DataField] public float CheckpointHoldTime = 60f; // 1 minute /// /// Time in seconds to secure a supply box at a checkpoint. /// [DataField] public float SupplyBoxSecureTime = 30f; /// /// Interval in seconds for all-checkpoints bonus. /// [DataField] public float CheckpointBonusInterval = 300f; // 5 minutes /// /// Initial count of civilian NPCs. /// [DataField] public int InitialCivilianCount = 0; /// /// Total civilian NPCs. /// [DataField] public int TotalCivilianNPCs = 0; /// /// Total civilian NPCs currently alive. /// [DataField] public int AliveCivilianNPCs = 0; /// /// Required civilian survival rate for UN objectives (0.0 to 1.0). /// [DataField] public float RequiredCivilianSurvivalRate = 0.8f; // 80% /// /// Whether the UN hospital zone is controlled by UN forces. /// [DataField] public bool UNHospitalZoneControlled = true; /// /// Whether the UN has maintained neutrality. /// [DataField] public bool UNNeutralityMaintained = true; /// /// When the game started. /// [DataField] public TimeSpan GameStartTime; /// /// Last time the all-checkpoints bonus was awarded. /// [DataField] public TimeSpan LastCheckpointBonusTime; /// /// Whether the game has ended. /// [DataField] public bool GameEnded = false; /// /// Checkpoints currently held by Blugoslavia. /// [DataField] public List BlugoslaviaHeldCheckpoints = new(); /// /// When each checkpoint started being held. /// [DataField] public Dictionary CheckpointHoldStartTimes = new(); /// /// Supply boxes currently being secured. /// [DataField] public Dictionary SecuringSupplyBoxes = new(); /// /// Last time scores were announced. /// [DataField] public TimeSpan LastScoreAnnouncementTime; }