aboutsummaryrefslogtreecommitdiff
path: root/Northstar.CustomServers/scripts/vscripts/mp/_score.nut
diff options
context:
space:
mode:
Diffstat (limited to 'Northstar.CustomServers/scripts/vscripts/mp/_score.nut')
-rw-r--r--Northstar.CustomServers/scripts/vscripts/mp/_score.nut224
1 files changed, 0 insertions, 224 deletions
diff --git a/Northstar.CustomServers/scripts/vscripts/mp/_score.nut b/Northstar.CustomServers/scripts/vscripts/mp/_score.nut
deleted file mode 100644
index 238eab1d1..000000000
--- a/Northstar.CustomServers/scripts/vscripts/mp/_score.nut
+++ /dev/null
@@ -1,224 +0,0 @@
-untyped
-
-global function Score_Init
-
-global function AddPlayerScore
-global function ScoreEvent_PlayerKilled
-global function ScoreEvent_TitanDoomed
-global function ScoreEvent_TitanKilled
-global function ScoreEvent_NPCKilled
-
-global function ScoreEvent_SetEarnMeterValues
-global function ScoreEvent_SetupEarnMeterValuesForMixedModes
-
-struct {
- bool firstStrikeDone = false
-} file
-
-void function Score_Init()
-{
- AddCallback_OnClientConnected( InitPlayerForScoreEvents )
-}
-
-void function InitPlayerForScoreEvents( entity player )
-{
- player.s.currentKillstreak <- 0
- player.s.lastKillTime <- 0.0
- player.s.currentTimedKillstreak <- 0
-}
-
-void function AddPlayerScore( entity targetPlayer, string scoreEventName, entity associatedEnt = null, string noideawhatthisis = "", int pointValueOverride = -1 )
-{
- ScoreEvent event = GetScoreEvent( scoreEventName )
-
- if ( !event.enabled || !IsValid( targetPlayer ) || !targetPlayer.IsPlayer() )
- return
-
- var associatedHandle = 0
- if ( associatedEnt != null )
- associatedHandle = associatedEnt.GetEncodedEHandle()
-
- if ( pointValueOverride != -1 )
- event.pointValue = pointValueOverride
-
- float scale = targetPlayer.IsTitan() ? event.coreMeterScalar : 1.0
-
- float earnValue = event.earnMeterEarnValue * scale
- float ownValue = event.earnMeterOwnValue * scale
-
- PlayerEarnMeter_AddEarnedAndOwned( targetPlayer, earnValue * scale, ownValue * scale )
-
- // PlayerEarnMeter_AddEarnedAndOwned handles this scaling by itself, we just need to do this for the visual stuff
- float pilotScaleVar = ( expect string ( GetCurrentPlaylistVarOrUseValue( "earn_meter_pilot_multiplier", "1" ) ) ).tofloat()
- float titanScaleVar = ( expect string ( GetCurrentPlaylistVarOrUseValue( "earn_meter_titan_multiplier", "1" ) ) ).tofloat()
-
- if ( targetPlayer.IsTitan() )
- {
- earnValue *= titanScaleVar
- ownValue *= titanScaleVar
- }
- else
- {
- earnValue *= pilotScaleVar
- ownValue *= pilotScaleVar
- }
-
- Remote_CallFunction_NonReplay( targetPlayer, "ServerCallback_ScoreEvent", event.eventId, event.pointValue, event.displayType, associatedHandle, ownValue, earnValue )
-
- if ( event.displayType & eEventDisplayType.CALLINGCARD ) // callingcardevents are shown to all players
- {
- foreach ( entity player in GetPlayerArray() )
- {
- if ( player == targetPlayer ) // targetplayer already gets this in the scorevent callback
- continue
-
- Remote_CallFunction_NonReplay( player, "ServerCallback_CallingCardEvent", event.eventId, associatedHandle )
- }
- }
-
- if ( ScoreEvent_HasConversation( event ) )
- PlayFactionDialogueToPlayer( event.conversation, targetPlayer )
-}
-
-void function ScoreEvent_PlayerKilled( entity victim, entity attacker, var damageInfo )
-{
- // reset killstreaks and stuff
- victim.s.currentKillstreak = 0
- victim.s.lastKillTime = 0.0
- victim.s.currentTimedKillstreak = 0
-
- victim.p.numberOfDeathsSinceLastKill++ // this is reset on kill
-
- // have to do this early before we reset victim's player killstreaks
- // nemesis when you kill a player that is dominating you
- if ( attacker.IsPlayer() && attacker in victim.p.playerKillStreaks && victim.p.playerKillStreaks[ attacker ] == NEMESIS_KILL_REQUIREMENT )
- AddPlayerScore( attacker, "Nemesis" )
-
- // reset killstreaks on specific players
- foreach ( entity killstreakPlayer, int numKills in victim.p.playerKillStreaks )
- delete victim.p.playerKillStreaks[ killstreakPlayer ]
-
- if ( victim.IsTitan() )
- ScoreEvent_TitanKilled( victim, attacker, damageInfo )
-
- if ( !attacker.IsPlayer() )
- return
-
-
- // pilot kill
- AddPlayerScore( attacker, "KillPilot", victim )
-
- // headshot
- if ( DamageInfo_GetCustomDamageType( damageInfo ) & DF_HEADSHOT )
- AddPlayerScore( attacker, "Headshot", victim )
-
- // first strike
- if ( !file.firstStrikeDone )
- {
- file.firstStrikeDone = true
- AddPlayerScore( attacker, "FirstStrike", attacker )
- }
-
- // comeback
- if ( attacker.p.numberOfDeathsSinceLastKill >= COMEBACK_DEATHS_REQUIREMENT )
- {
- AddPlayerScore( attacker, "Comeback" )
- attacker.p.numberOfDeathsSinceLastKill = 0
- }
-
-
- // untimed killstreaks
- attacker.s.currentKillstreak++
- if ( attacker.s.currentKillstreak == 3 )
- AddPlayerScore( attacker, "KillingSpree" )
- else if ( attacker.s.currentKillstreak == 5 )
- AddPlayerScore( attacker, "Rampage" )
-
- // increment untimed killstreaks against specific players
- if ( !( victim in attacker.p.playerKillStreaks ) )
- attacker.p.playerKillStreaks[ victim ] <- 1
- else
- attacker.p.playerKillStreaks[ victim ]++
-
- // dominating
- if ( attacker.p.playerKillStreaks[ victim ] == DOMINATING_KILL_REQUIREMENT )
- AddPlayerScore( attacker, "Dominating" )
-
-
- // timed killstreaks
- if ( Time() - attacker.s.lastKillTime <= CASCADINGKILL_REQUIREMENT_TIME )
- {
- attacker.s.currentTimedKillstreak++
-
- if ( attacker.s.currentTimedKillstreak == DOUBLEKILL_REQUIREMENT_KILLS )
- AddPlayerScore( attacker, "DoubleKill" )
- else if ( attacker.s.currentTimedKillstreak == TRIPLEKILL_REQUIREMENT_KILLS )
- AddPlayerScore( attacker, "TripleKill" )
- else if ( attacker.s.currentTimedKillstreak == MEGAKILL_REQUIREMENT_KILLS )
- AddPlayerScore( attacker, "MegaKill" )
- }
- else
- attacker.s.currentTimedKillstreak = 0 // reset if a kill took too long
-
- attacker.s.lastKillTime = Time()
-}
-
-void function ScoreEvent_TitanDoomed( entity titan, entity attacker, var damageInfo )
-{
- // will this handle npc titans with no owners well? i have literally no idea
-
- if ( titan.IsNPC() )
- AddPlayerScore( attacker, "DoomAutoTitan", titan )
- else
- AddPlayerScore( attacker, "DoomTitan", titan )
-}
-
-void function ScoreEvent_TitanKilled( entity victim, entity attacker, var damageInfo )
-{
- // will this handle npc titans with no owners well? i have literally no idea
- if ( !attacker.IsPlayer() )
- return
-
- if ( attacker.IsTitan() )
- AddPlayerScore( attacker, "TitanKillTitan", victim.GetTitanSoul().GetOwner() )
- else
- AddPlayerScore( attacker, "KillTitan", victim.GetTitanSoul().GetOwner() )
-}
-
-void function ScoreEvent_NPCKilled( entity victim, entity attacker, var damageInfo )
-{
- AddPlayerScore( attacker, ScoreEventForNPCKilled( victim, damageInfo ), victim )
-}
-
-
-
-void function ScoreEvent_SetEarnMeterValues( string eventName, float earned, float owned, float coreScale = 1.0 )
-{
- ScoreEvent event = GetScoreEvent( eventName )
- event.earnMeterEarnValue = earned
- event.earnMeterOwnValue = owned
- event.coreMeterScalar = coreScale
-}
-
-void function ScoreEvent_SetupEarnMeterValuesForMixedModes() // mixed modes in this case means modes with both pilots and titans
-{
- // todo needs earn/overdrive values
- // player-controlled stuff
- ScoreEvent_SetEarnMeterValues( "KillPilot", 0.0, 0.05 )
- ScoreEvent_SetEarnMeterValues( "KillTitan", 0.0, 0.15 )
- ScoreEvent_SetEarnMeterValues( "TitanKillTitan", 0.0, 0.0 ) // unsure
- ScoreEvent_SetEarnMeterValues( "PilotBatteryStolen", 0.0, 0.35 )
-
- // ai
- ScoreEvent_SetEarnMeterValues( "KillGrunt", 0.0, 0.02, 0.5 )
- ScoreEvent_SetEarnMeterValues( "KillSpectre", 0.0, 0.02, 0.5 )
- ScoreEvent_SetEarnMeterValues( "LeechSpectre", 0.0, 0.02 )
- ScoreEvent_SetEarnMeterValues( "KillStalker", 0.0, 0.02, 0.5 )
- ScoreEvent_SetEarnMeterValues( "KillSuperSpectre", 0.0, 0.1, 0.5 )
-}
-
-void function ScoreEvent_SetupEarnMeterValuesForTitanModes()
-{
- // todo needs earn/overdrive values
-
-} \ No newline at end of file