Random emergency shuttle time (#10047)
* Random emergency shuttle time 60 to 180 seconds. Rounds up to nearest 10. All other FTL will go to the default of 30s. * fix
This commit is contained in:
@@ -41,7 +41,17 @@ public sealed partial class EmergencyShuttleSystem
|
||||
private readonly TimeSpan _bufferTime = TimeSpan.FromSeconds(5);
|
||||
|
||||
/// <summary>
|
||||
/// <see cref="CCVars.EmergencyShuttleTransitTime"/>
|
||||
/// <see cref="CCVars.EmergencyShuttleMinTransitTime"/>
|
||||
/// </summary>
|
||||
public float MinimumTransitTime { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// <see cref="CCVars.EmergencyShuttleMaxTransitTime"/>
|
||||
/// </summary>
|
||||
public float MaximumTransitTime { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// How long it will take for the emergency shuttle to arrive at CentComm.
|
||||
/// </summary>
|
||||
public float TransitTime { get; private set; }
|
||||
|
||||
@@ -69,7 +79,8 @@ public sealed partial class EmergencyShuttleSystem
|
||||
|
||||
private void InitializeEmergencyConsole()
|
||||
{
|
||||
_configManager.OnValueChanged(CCVars.EmergencyShuttleTransitTime, SetTransitTime, true);
|
||||
_configManager.OnValueChanged(CCVars.EmergencyShuttleMinTransitTime, SetMinTransitTime, true);
|
||||
_configManager.OnValueChanged(CCVars.EmergencyShuttleMaxTransitTime, SetMaxTransitTime, true);
|
||||
_configManager.OnValueChanged(CCVars.EmergencyShuttleAuthorizeTime, SetAuthorizeTime, true);
|
||||
SubscribeLocalEvent<EmergencyShuttleConsoleComponent, ComponentStartup>(OnEmergencyStartup);
|
||||
SubscribeLocalEvent<EmergencyShuttleConsoleComponent, EmergencyShuttleAuthorizeMessage>(OnEmergencyAuthorize);
|
||||
@@ -95,15 +106,22 @@ public sealed partial class EmergencyShuttleSystem
|
||||
_authorizeTime = obj;
|
||||
}
|
||||
|
||||
private void SetTransitTime(float obj)
|
||||
private void SetMinTransitTime(float obj)
|
||||
{
|
||||
TransitTime = obj;
|
||||
MinimumTransitTime = obj;
|
||||
MaximumTransitTime = Math.Max(MaximumTransitTime, MinimumTransitTime);
|
||||
}
|
||||
|
||||
private void SetMaxTransitTime(float obj)
|
||||
{
|
||||
MaximumTransitTime = Math.Max(MinimumTransitTime, obj);
|
||||
}
|
||||
|
||||
private void ShutdownEmergencyConsole()
|
||||
{
|
||||
_configManager.UnsubValueChanged(CCVars.EmergencyShuttleAuthorizeTime, SetAuthorizeTime);
|
||||
_configManager.UnsubValueChanged(CCVars.EmergencyShuttleTransitTime, SetTransitTime);
|
||||
_configManager.UnsubValueChanged(CCVars.EmergencyShuttleMinTransitTime, SetMinTransitTime);
|
||||
_configManager.UnsubValueChanged(CCVars.EmergencyShuttleMaxTransitTime, SetMaxTransitTime);
|
||||
}
|
||||
|
||||
private void OnEmergencyStartup(EntityUid uid, EmergencyShuttleConsoleComponent component, ComponentStartup args)
|
||||
@@ -283,6 +301,9 @@ public sealed partial class EmergencyShuttleSystem
|
||||
_consoleAccumulator = float.MinValue;
|
||||
EarlyLaunchAuthorized = false;
|
||||
EmergencyShuttleArrived = false;
|
||||
TransitTime = MinimumTransitTime + (MaximumTransitTime - MinimumTransitTime) * _random.NextFloat();
|
||||
// Round to nearest 10
|
||||
TransitTime = MathF.Round(TransitTime / 10f) * 10f;
|
||||
}
|
||||
|
||||
private void UpdateAllEmergencyConsoles()
|
||||
|
||||
Reference in New Issue
Block a user