Partial Manager class handling an "endless mode" toggle for the game. Provides a host-only console command to toggle endless mode during a run, validates state, and broadcasts an RPC to set synced flags that prevent leaderboard submission and record that endless mode was used.
using Sandbox;
public partial class Manager
{
[Sync] public bool IsEndlessMode { get; private set; }
[Sync] public bool HasUsedEndlessMode { get; private set; }
[ConCmd( "endless_mode", Help = "Toggle boss generator invincibility (host only). Disqualifies this run from leaderboards." )]
public static void ToggleEndlessMode()
{
if ( !Networking.IsHost )
{
Log.Info( "Endless mode is host-only." );
return;
}
var manager = Instance;
if ( !manager.IsValid() || manager.GameState != GameState.Playing || manager.IsGameOver )
{
Log.Info( "Endless mode can only be toggled during a run." );
return;
}
if ( !manager.IsEndlessMode && manager.Boss.IsValid() && !manager.Boss.CanEnableEndlessMode )
{
Log.Info( "Endless mode must be enabled before the last boss generator is destroyed." );
return;
}
manager.SetEndlessModeRpc( !manager.IsEndlessMode );
}
[Rpc.Broadcast( NetFlags.Reliable | NetFlags.HostOnly )]
private void SetEndlessModeRpc( bool enabled )
{
IsEndlessMode = enabled;
// This stays latched until Restart, even after generators become vulnerable again.
HasUsedEndlessMode |= enabled;
// Clients can receive this RPC before the synced flag updates.
DontSubmitScore |= enabled;
Log.Info( $"Endless mode {(enabled ? "enabled" : "disabled")}. This run will not be submitted to the leaderboard." );
}
}