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