diff options
author | BobTheBob <32057864+BobTheBob9@users.noreply.github.com> | 2022-01-27 06:52:59 +0000 |
---|---|---|
committer | BobTheBob <32057864+BobTheBob9@users.noreply.github.com> | 2022-01-27 06:52:59 +0000 |
commit | 5e5a249cce1221db032f610057ab986443477d62 (patch) | |
tree | 54ae105ab92d610cc30cb2fc044ea829b061d5a2 | |
parent | 3e98aad76ce9f69eba30770e71518a715991e820 (diff) | |
download | NorthstarMods-5e5a249cce1221db032f610057ab986443477d62.tar.gz NorthstarMods-5e5a249cce1221db032f610057ab986443477d62.zip |
titan cleanup stability improvements
-rw-r--r-- | Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut | 13 | ||||
-rw-r--r-- | Northstar.CustomServers/mod/scripts/vscripts/mp/_gamestate_mp.nut | 12 |
2 files changed, 16 insertions, 9 deletions
diff --git a/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut b/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut index b169de63..feca3bd5 100644 --- a/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut +++ b/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut @@ -318,11 +318,11 @@ void function PostDeathThread_MP( entity player, var damageInfo ) // based on ga else player.SetObserverTarget( null ) - if ( !file.playerDeathsHidden ) - { + if ( ( GamePlayingOrSuddenDeath() || GetGameState() == eGameState.Epilogue ) && !file.playerDeathsHidden ) player.AddToPlayerGameStat( PGS_DEATHS, 1 ) + + if ( !file.playerDeathsHidden ) Remote_CallFunction_NonReplay( player, "ServerCallback_YouDied", attacker.GetEncodedEHandle(), GetHealthFrac( attacker ), methodOfDeath ) - } float deathcamLength = GetDeathCamLength( player ) wait deathcamLength @@ -460,6 +460,7 @@ void function RespawnAsTitan( entity player, bool manualPosition = false ) camera.Fire( "Enable", "!activator", 0, player ) player.EndSignal( "OnDestroy" ) + titan.EndSignal( "OnDestroy" ) OnThreadEnd( function() : ( player, titan, camera ) { if ( IsValid( player ) ) @@ -468,7 +469,11 @@ void function RespawnAsTitan( entity player, bool manualPosition = false ) player.isSpawning = false } - titan.Destroy() // pilotbecomestitan leaves an npc titan that we need to delete + if ( IsValid( titan ) ) + titan.Destroy() // pilotbecomestitan leaves an npc titan that we need to delete + else + RespawnAsPilot( player ) // this is 100% an edgecase, just avoid softlocking if we ever hit it in playable gamestates + camera.Fire( "Disable", "!activator", 0, player ) camera.Destroy() }) diff --git a/Northstar.CustomServers/mod/scripts/vscripts/mp/_gamestate_mp.nut b/Northstar.CustomServers/mod/scripts/vscripts/mp/_gamestate_mp.nut index ddf8cd8d..13f0f75f 100644 --- a/Northstar.CustomServers/mod/scripts/vscripts/mp/_gamestate_mp.nut +++ b/Northstar.CustomServers/mod/scripts/vscripts/mp/_gamestate_mp.nut @@ -670,14 +670,16 @@ void function CleanUpEntitiesForRoundEnd() if ( IsAlive( player ) ) player.Die( svGlobal.worldspawn, svGlobal.worldspawn, { damageSourceId = eDamageSourceId.round_end } ) - - if ( IsAlive( player.GetPetTitan() ) ) - player.GetPetTitan().Destroy() } foreach ( entity npc in GetNPCArray() ) - if ( IsValid( npc ) ) - npc.Destroy() // need this because getnpcarray includes the pettitans we just killed at this point + { + if ( !IsValid( npc ) ) + continue + + // kill rather than destroy, as destroying will cause issues with children which is an issue especially for dropships and titans + npc.Die( svGlobal.worldspawn, svGlobal.worldspawn, { damageSourceId = eDamageSourceId.round_end } ) + } // destroy weapons ClearDroppedWeapons() |