Force player respawn to match vanilla (#554)
Automatically respawns dead players after 5 seconds unless set otherwise
This commit is contained in:
parent
2b26328651
commit
f16af28753
|
@ -227,6 +227,7 @@ Press Yes if you agree to this. This choice can be changed in the mods menu at a
|
|||
"classic_rodeo" "Classic Rodeo"
|
||||
"oob_timer_enabled" "Out of Bounds Timer"
|
||||
"riff_instagib" "Instagib Mode"
|
||||
"player_force_respawn" "Forced Respawn"
|
||||
|
||||
"riff_player_bleedout" "Pilot Bleedout"
|
||||
"player_bleedout_forceHolster" "Holster weapons when downed"
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
playlists
|
||||
{
|
||||
Gamemodes
|
||||
{
|
||||
defaults
|
||||
{
|
||||
vars
|
||||
{
|
||||
player_force_respawn 5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,6 +17,7 @@ void function PrivateMatchModesInit()
|
|||
AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_PILOT", "boosts_enabled", [ "#SETTING_DEFAULT", "#SETTING_DISABLED" ], "1" )
|
||||
AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_PILOT", "earn_meter_pilot_overdrive", [ "#SETTING_DISABLED", "#SETTING_ENABLED", "Only" ], "1" )
|
||||
AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_PILOT", "earn_meter_pilot_multiplier", "1.0" )
|
||||
AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_PILOT", "player_force_respawn", "5" )
|
||||
|
||||
AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_TITAN", "earn_meter_titan_multiplier", "1.0" )
|
||||
AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_TITAN", "aegis_upgrades", [ "#SETTING_DISABLED", "#SETTING_ENABLED" ], "0" )
|
||||
|
|
|
@ -274,6 +274,9 @@ void function PostDeathThread_MP( entity player, var damageInfo ) // based on ga
|
|||
|
||||
ClearRespawnAvailable( player )
|
||||
|
||||
// reset this so that we default to pilot spawn
|
||||
player.SetPersistentVar( "spawnAsTitan", false )
|
||||
|
||||
OnThreadEnd( function() : ( player )
|
||||
{
|
||||
if ( !IsValid( player ) )
|
||||
|
@ -379,6 +382,13 @@ void function PostDeathThread_MP( entity player, var damageInfo ) // based on ga
|
|||
SetRespawnAvailable( player )
|
||||
|
||||
wait respawnDelay
|
||||
|
||||
int forceRespawn = GetCurrentPlaylistVarInt( "player_force_respawn", -1 )
|
||||
|
||||
// -1 is disabled, anything over is the time we wait in seconds
|
||||
// before respawning the player
|
||||
if( forceRespawn >= 0 )
|
||||
thread ForceRespawnMeSignalAfterDelay( player, forceRespawn )
|
||||
|
||||
player.WaitSignal( "RespawnMe" ) // set in base_gametype: ClientCommand_RespawnPlayer
|
||||
|
||||
|
@ -398,6 +408,21 @@ void function PostDeathThread_MP( entity player, var damageInfo ) // based on ga
|
|||
}
|
||||
}
|
||||
|
||||
// idk if this is a good delay or if it matches vanilla
|
||||
void function ForceRespawnMeSignalAfterDelay( entity player, int delay = 5 )
|
||||
{
|
||||
player.EndSignal( "RespawnMe" )
|
||||
player.EndSignal( "OnDestroy" )
|
||||
|
||||
if( player.IsWatchingKillReplay() )
|
||||
player.WaitSignal( "KillCamOver" )
|
||||
|
||||
wait delay
|
||||
|
||||
printt( format( "Forcing player respawn for player %s (took >%d seconds to respawn)", player.GetPlayerName(), delay ) )
|
||||
player.Signal( "RespawnMe" )
|
||||
}
|
||||
|
||||
void function PlayerWatchesKillReplayWrapper( entity player, entity attacker, float timeSinceAttackerSpawned, float timeOfDeath, float beforeTime, table replayTracker )
|
||||
{
|
||||
player.EndSignal( "RespawnMe" )
|
||||
|
|
Loading…
Reference in New Issue