1
0

RampingStationEventSchedulerComponent.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using Content.Shared.EntityTable.EntitySelectors;
  2. namespace Content.Server.StationEvents.Components;
  3. [RegisterComponent, Access(typeof(RampingStationEventSchedulerSystem))]
  4. public sealed partial class RampingStationEventSchedulerComponent : Component
  5. {
  6. /// <summary>
  7. /// Average ending chaos modifier for the ramping event scheduler. Higher means faster.
  8. /// Max chaos chosen for a round will deviate from this
  9. /// </summary>
  10. [DataField]
  11. public float AverageChaos = 12f;
  12. /// <summary>
  13. /// Average time (in minutes) for when the ramping event scheduler should stop increasing the chaos modifier.
  14. /// Close to how long you expect a round to last, so you'll probably have to tweak this on downstreams.
  15. /// </summary>
  16. [DataField]
  17. public float AverageEndTime = 90f;
  18. [DataField]
  19. public float EndTime;
  20. [DataField]
  21. public float MaxChaos;
  22. [DataField]
  23. public float StartingChaos;
  24. [DataField]
  25. public float TimeUntilNextEvent;
  26. /// <summary>
  27. /// The gamerules that the scheduler can choose from
  28. /// </summary>
  29. /// Reminder that though we could do all selection via the EntityTableSelector, we also need to consider various <see cref="StationEventComponent"/> restrictions.
  30. /// As such, we want to pass a list of acceptable game rules, which are then parsed for restrictions by the <see cref="EventManagerSystem"/>.
  31. [DataField(required: true)]
  32. public EntityTableSelector ScheduledGameRules = default!;
  33. }