aboutsummaryrefslogtreecommitdiff
path: root/Northstar.Custom/mod/scripts/vscripts/_bleedout_damage.gnut
diff options
context:
space:
mode:
Diffstat (limited to 'Northstar.Custom/mod/scripts/vscripts/_bleedout_damage.gnut')
-rw-r--r--Northstar.Custom/mod/scripts/vscripts/_bleedout_damage.gnut137
1 files changed, 0 insertions, 137 deletions
diff --git a/Northstar.Custom/mod/scripts/vscripts/_bleedout_damage.gnut b/Northstar.Custom/mod/scripts/vscripts/_bleedout_damage.gnut
deleted file mode 100644
index 8b21184ad..000000000
--- a/Northstar.Custom/mod/scripts/vscripts/_bleedout_damage.gnut
+++ /dev/null
@@ -1,137 +0,0 @@
-// note: this is technically vanilla content, since bleedout was shipped with retail, but it needs custom remote functions which would break vanilla compatiblity, so it's not in Northstar.CustomServers
-// idk why bleedout was even shipped in retail lmao
-global function BleedoutDamage_PreInit
-global function BleedoutDamage_Init
-global function SetShouldPlayerStartBleedoutFunc
-
-struct {
- array<entity> bleedingPlayers // this is in _bleedout already, but it doesn't expose a way to track it, so we have to track it ourselves
- bool functionref( entity, var ) shouldPlayerStartBleedoutFunc = null
-} file
-
-void function BleedoutDamage_PreInit()
-{
- AddCallback_OnRegisteringCustomNetworkVars( Bleedout_RegisterRemoteFunctions )
-}
-
-void function Bleedout_RegisterRemoteFunctions()
-{
- Remote_RegisterFunction( "ServerCallback_BLEEDOUT_StartFirstAidProgressBar" )
- Remote_RegisterFunction( "ServerCallback_BLEEDOUT_StopFirstAidProgressBar" )
- Remote_RegisterFunction( "ServerCallback_BLEEDOUT_ShowWoundedMarker" )
- Remote_RegisterFunction( "ServerCallback_BLEEDOUT_HideWoundedMarker" )
-}
-
-// copied from sh_bleedout
-const float DEFAULT_BLEEDOUT_TIME = 30.0
-const float DEFAULT_FIRSTAID_TIME = 3.0
-const float DEFAULT_FIRSTAID_TIME_SELF = -1.0
-const float DEFAULT_FIRSTAID_HEAL_PERCENT = 1.0
-const float DEFAULT_AI_BLEEDING_PLAYER_MISS_CHANCE = 0.0
-const bool DEFAULT_FORCE_WEAPON_HOLSTER = false
-const bool DEFAULT_DEATH_ON_TEAM_BLEEDOUT = false
-
-void function BleedoutDamage_Init()
-{
- AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_BLEEDOUT", "riff_player_bleedout", [ "Default", "Disabled", "Enabled" ], "0" )
- AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_forceHolster", [ "Disabled", "Enabled" ], DEFAULT_FORCE_WEAPON_HOLSTER.tostring() )
- AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_forceDeathOnTeamBleedout", [ "Disabled", "Enabled" ], DEFAULT_DEATH_ON_TEAM_BLEEDOUT.tostring() )
- AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_bleedoutTime", DEFAULT_BLEEDOUT_TIME.tostring() )
- AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_firstAidTime", DEFAULT_FIRSTAID_TIME.tostring() )
- AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_firstAidTimeSelf", DEFAULT_FIRSTAID_TIME_SELF.tostring() )
- AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_firstAidHealPercent", DEFAULT_FIRSTAID_HEAL_PERCENT.tostring() )
- AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_aiBleedingPlayerMissChance", DEFAULT_AI_BLEEDING_PLAYER_MISS_CHANCE.tostring() )
-
- #if CLIENT
- // because playlist var overrides fucking suck, they aren't actually updated by this point
- // client bleedout can be inited late enough that we can just init it on local player spawn
- AddCallback_LocalClientPlayerSpawned( InitClientBleedoutForLocalPlayer )
- #elseif SERVER
- // sh_riff_settings should set this correctly on server
- if ( !Riff_PlayerBleedout() )
- return
-
- AddDamageCallback( "player", HandleDamageForBleedout ) // do this irregardless of whether scripts inited, given it should always be used for bleedout
- Bleedout_SetCallback_OnPlayerStartBleedout( OnPlayerBleedoutBegin ) // kinda sucks we have to use this callback since game scripts could be using it
-
- // dont init if scripts already inited it manually
- if ( !Bleedout_IsBleedoutLogicActive() )
- {
- InitSharedBleedoutWithPlaylistVars()
- Bleedout_Init()
- }
- #endif
-}
-
-void function SetShouldPlayerStartBleedoutFunc( bool functionref( entity, var ) func )
-{
- file.shouldPlayerStartBleedoutFunc = func
-}
-
-void function InitSharedBleedoutWithPlaylistVars()
-{
- BleedoutShared_Init(
- GetCurrentPlaylistVarFloat( "player_bleedout_bleedoutTime", DEFAULT_BLEEDOUT_TIME ),
- GetCurrentPlaylistVarFloat( "player_bleedout_firstAidTime", DEFAULT_FIRSTAID_TIME ),
- GetCurrentPlaylistVarFloat( "player_bleedout_firstAidTimeSelf", DEFAULT_FIRSTAID_TIME_SELF ),
- GetCurrentPlaylistVarFloat( "player_bleedout_firstAidHealPercent", DEFAULT_FIRSTAID_HEAL_PERCENT ),
- GetCurrentPlaylistVarFloat( "player_bleedout_aiBleedingPlayerMissChance", DEFAULT_AI_BLEEDING_PLAYER_MISS_CHANCE ),
- GetCurrentPlaylistVarInt( "player_bleedout_forceHolster", int( DEFAULT_FORCE_WEAPON_HOLSTER ) ) == 1,
- GetCurrentPlaylistVarInt( "player_bleedout_forceDeathOnTeamBleedout", int( DEFAULT_DEATH_ON_TEAM_BLEEDOUT ) ) == 1
- )
-}
-
-#if CLIENT
-void function InitClientBleedoutForLocalPlayer( entity player )
-{
- // dont init if bleedout is disabled or scripts already inited it
- if ( !Riff_PlayerBleedout() || Bleedout_IsBleedoutLogicActive() )
- return
-
- InitSharedBleedoutWithPlaylistVars()
- BleedoutClient_Init()
-}
-#endif
-
-#if SERVER
-void function HandleDamageForBleedout( entity player, var damageInfo )
-{
- if ( IsInstantDeath( damageInfo ) || DamageInfo_GetForceKill( damageInfo ) || player.IsTitan() || file.bleedingPlayers.contains( player ) )
- return
-
- if ( file.shouldPlayerStartBleedoutFunc != null )
- if ( !file.shouldPlayerStartBleedoutFunc( player, damageInfo ) )
- return
-
- // check if damage would kill player
- if ( player.GetHealth() - DamageInfo_GetDamage( damageInfo ) <= 0 )
- {
- Bleedout_StartPlayerBleedout( player, DamageInfo_GetAttacker( damageInfo ) )
- DamageInfo_SetDamage( damageInfo, 1 ) // prevent player from dying, but if we set it to 0, player won't receive any knockback from damage source
- }
-}
-
-void function OnPlayerBleedoutBegin( entity player )
-{
- file.bleedingPlayers.append( player )
-
- // would prefer to use Bleedout_SetCallback_OnPlayerGiveFirstAid for this, but it doesn't expose the player that's receiving first aid for some reason
- thread TrackPlayerBleedout( player )
-}
-
-void function TrackPlayerBleedout( entity player )
-{
- player.EndSignal( "OnDeath" )
- player.EndSignal( "OnDestroy" )
-
- OnThreadEnd( function() : ( player )
- {
- file.bleedingPlayers.remove( file.bleedingPlayers.find( player ) )
- })
-
- WaitFrame() // wait a frame, since this gets called before this status effect is added
-
- while ( StatusEffect_Get( player, eStatusEffect.bleedoutDOF ) != 0 )
- WaitFrame()
-}
-#endif \ No newline at end of file