aboutsummaryrefslogtreecommitdiff
path: root/Northstar.CustomServers/scripts/vscripts/earn_meter/sv_earn_meter_mp.gnut
diff options
context:
space:
mode:
Diffstat (limited to 'Northstar.CustomServers/scripts/vscripts/earn_meter/sv_earn_meter_mp.gnut')
-rw-r--r--Northstar.CustomServers/scripts/vscripts/earn_meter/sv_earn_meter_mp.gnut136
1 files changed, 0 insertions, 136 deletions
diff --git a/Northstar.CustomServers/scripts/vscripts/earn_meter/sv_earn_meter_mp.gnut b/Northstar.CustomServers/scripts/vscripts/earn_meter/sv_earn_meter_mp.gnut
deleted file mode 100644
index b41640ad4..000000000
--- a/Northstar.CustomServers/scripts/vscripts/earn_meter/sv_earn_meter_mp.gnut
+++ /dev/null
@@ -1,136 +0,0 @@
-global function Sv_EarnMeterMP_Init
-global function EarnMeterMP_SetTitanLoadout
-global function EarnMeterMP_SetPassiveMeterGainEnabled
-
-struct {
- float playingStartTime
- bool passiveMeterGainEnabled = true
-} file
-
-void function Sv_EarnMeterMP_Init()
-{
- if ( !EARNMETER_ENABLED )
- return
-
- AddCallback_OnClientConnected( SetupPlayerEarnMeter )
- AddCallback_GameStateEnter( eGameState.Playing, OnPlaying ) // can't change boost after prematch
- AddCallback_OnPlayerRespawned( OnPlayerRespawned )
-}
-
-void function EarnMeterMP_SetTitanLoadout( entity player )
-{
- if ( EarnMeterMP_IsTitanEarnGametype() )
- PlayerEarnMeter_SetGoal( player, EarnObject_GetByRef( GetTitanLoadoutForPlayer( player ).titanClass ) )
-}
-
-void function EarnMeterMP_SetPassiveMeterGainEnabled( bool enabled )
-{
- file.passiveMeterGainEnabled = enabled
-}
-
-void function SetupPlayerEarnMeter( entity player )
-{
- PlayerEarnMeter_Reset( player )
-
- // todo: need to do burnmeter stuff here ( e.g. rewards/boosts )
- if ( EarnMeterMP_IsTitanEarnGametype() )
- PlayerEarnMeter_SetGoal( player, EarnObject_GetByRef( GetTitanLoadoutForPlayer( player ).titanClass ) )
-
- PlayerEarnMeter_EnableGoal( player ) // prevents goalstate from being set incorrectly
-
- // catchup bonus for late joiners
- // todo: maths on this is fine but for some reason it won't set correctly, could be getting reset somewhere?
- PlayerEarnMeter_AddOwnedFrac( player, ( ( Time() - file.playingStartTime ) / 4.0 ) * 0.01 )
-}
-
-void function OnPlaying()
-{
- file.playingStartTime = Time()
- foreach ( entity player in GetPlayerArray() )
- SetupPlayerEarnMeter( player )
-
- // do this in playing so that gamemodes/maps can disable and this'll take affect
- if ( EarnMeterMP_IsTitanEarnGametype() ) // settitanavailable when earnmeter full
- {
- Riff_ForceTitanAvailability( eTitanAvailability.Custom ) // doesn't seem to affect anything aside from preventing some annoying client stuff
- svGlobal.titanAvailabilityCheck = IsTitanAvailable
- AddEarnMeterThresholdEarnedCallback( 1.0, void function( entity player ) { SetTitanAvailable( player ) }, true )
- }
- else // if no titans from earnmeter in this mode, just reset when we finish meter
- AddEarnMeterThresholdEarnedCallback( 1.0, PlayerEarnMeter_Reset, true )
-}
-
-void function OnPlayerRespawned( entity player )
-{
- thread EarnMeterMP_PlayerLifeThink( player )
-}
-
-void function EarnMeterMP_PlayerLifeThink( entity player )
-{
- player.EndSignal( "OnDeath" )
- player.EndSignal( "OnDestroy" )
-
- int lastEarnMeterMode = PlayerEarnMeter_GetMode( player )
- float lastPassiveGainTime = Time()
-
- while ( true )
- {
- int desiredEarnMeterMode
-
- if ( player.IsTitan() )
- {
- entity soul = player.GetTitanSoul()
- if ( SoulTitanCore_GetExpireTime( soul ) > Time() )
- desiredEarnMeterMode = eEarnMeterMode.CORE_ACTIVE
- else
- desiredEarnMeterMode = eEarnMeterMode.CORE
- }
- else if ( IsValid( player.GetPetTitan() ) )
- desiredEarnMeterMode = eEarnMeterMode.PET
- else
- desiredEarnMeterMode = eEarnMeterMode.DEFAULT
-
- if ( desiredEarnMeterMode != lastEarnMeterMode )
- {
- PlayerEarnMeter_SetMode( player, desiredEarnMeterMode )
-
- if ( desiredEarnMeterMode == eEarnMeterMode.DEFAULT )
- {
- if ( !IsTitanAvailable( player ) && PlayerEarnMeter_GetOwnedFrac( player ) == 1.0 ) // this should only be the case after player has dropped their titan
- PlayerEarnMeter_Reset( player )
-
- if ( PlayerEarnMeter_GetRewardFrac( player ) != 0 )
- PlayerEarnMeter_EnableReward( player )
- }
- else
- {
- PlayerEarnMeter_DisableGoal( player )
- PlayerEarnMeter_DisableReward( player )
- }
-
- lastEarnMeterMode = desiredEarnMeterMode
- }
-
- if ( lastEarnMeterMode == eEarnMeterMode.DEFAULT )
- {
- if ( PlayerEarnMeter_GetOwnedFrac( player ) < 1.0 )
- PlayerEarnMeter_DisableGoal( player )
- else if ( player.GetPlayerNetInt( "goalState" ) != eRewardState.UNAVAILABLE )
- {
- // if goal is enabled then the client will show "titan ready" alerts even if it isn't
- // the problem is that if the goal isn't available when we fill the earnmeter, then it won't make it available
- // so unfortunately we have to do this manually
- player.SetPlayerNetInt( "goalState", eRewardState.AVAILABLE )
- PlayerEarnMeter_RefreshGoal( player )
- }
-
- if ( Time() - lastPassiveGainTime > 4.0 && file.passiveMeterGainEnabled ) // this might be 5.0
- {
- lastPassiveGainTime = Time()
- PlayerEarnMeter_AddOwnedFrac( player, 0.01 )
- }
- }
-
- WaitFrame()
- }
-} \ No newline at end of file