Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement missing Score Events #700

Merged
merged 11 commits into from
Nov 21, 2023
50 changes: 48 additions & 2 deletions Northstar.CustomServers/mod/scripts/vscripts/mp/_score.nut
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ void function InitPlayerForScoreEvents( entity player )
player.s.currentKillstreak <- 0
player.s.lastKillTime <- 0.0
player.s.currentTimedKillstreak <- 0
player.s.lastKillTime_Mayhem <- 0.0
player.s.currentTimedKillstreak_Mayhem <- 0
player.s.lastKillTime_Onslaught <- 0.0
player.s.currentTimedKillstreak_Onslaught <- 0
}

void function AddPlayerScore( entity targetPlayer, string scoreEventName, entity associatedEnt = null, string noideawhatthisis = "", int pointValueOverride = -1 )
Expand Down Expand Up @@ -93,6 +97,7 @@ void function ScoreEvent_PlayerKilled( entity victim, entity attacker, var damag
victim.s.currentTimedKillstreak = 0

victim.p.numberOfDeathsSinceLastKill++ // this is reset on kill
victim.p.lastKiller = attacker

// have to do this early before we reset victim's player killstreaks
// nemesis when you kill a player that is dominating you
Expand Down Expand Up @@ -131,12 +136,20 @@ void function ScoreEvent_PlayerKilled( entity victim, entity attacker, var damag
attacker.p.numberOfDeathsSinceLastKill = 0
}

// revenge + quick revenge
if ( attacker.p.lastKiller == victim )
{
if ( Time() - GetPlayerLastRespawnTime( attacker ) < QUICK_REVENGE_TIME_LIMIT )
AddPlayerScore( attacker, "QuickRevenge" )
else
AddPlayerScore( attacker, "Revenge" )
}

// untimed killstreaks
attacker.s.currentKillstreak++
if ( attacker.s.currentKillstreak == 3 )
if ( attacker.s.currentKillstreak == KILLINGSPREE_KILL_REQUIREMENT )
AddPlayerScore( attacker, "KillingSpree" )
else if ( attacker.s.currentKillstreak == 5 )
else if ( attacker.s.currentKillstreak == RAMPAGE_KILL_REQUIREMENT )
AddPlayerScore( attacker, "Rampage" )

// increment untimed killstreaks against specific players
Expand Down Expand Up @@ -234,6 +247,39 @@ void function ScoreEvent_NPCKilled( entity victim, entity attacker, var damageIn
AddPlayerScore( attacker, ScoreEventForNPCKilled( victim, damageInfo ), victim )
}
catch ( ex ) {}

if ( !attacker.IsPlayer() )
return

// mayhem/onslaught (timed killstreaks vs AI)

// reset before checking
if ( Time() - attacker.s.lastKillTime_Mayhem > MAYHEM_REQUIREMENT_TIME )
{
attacker.s.currentTimedKillstreak_Mayhem = 0
attacker.s.lastKillTime_Mayhem = Time()
}
if ( Time() - attacker.s.lastKillTime_Mayhem <= MAYHEM_REQUIREMENT_TIME )
{
attacker.s.currentTimedKillstreak_Mayhem++

if ( attacker.s.currentTimedKillstreak_Mayhem == MAYHEM_REQUIREMENT_KILLS )
AddPlayerScore( attacker, "Mayhem" )
}

// reset before checking
if ( Time() - attacker.s.lastKillTime_Onslaught > ONSLAUGHT_REQUIREMENT_TIME )
{
attacker.s.currentTimedKillstreak_Onslaught = 0
attacker.s.lastKillTime_Onslaught = Time()
}
if ( Time() - attacker.s.lastKillTime_Onslaught <= ONSLAUGHT_REQUIREMENT_TIME )
{
attacker.s.currentTimedKillstreak_Onslaught++

if ( attacker.s.currentTimedKillstreak_Onslaught == ONSLAUGHT_REQUIREMENT_KILLS )
AddPlayerScore( attacker, "Onslaught" )
}
}

void function ScoreEvent_MatchComplete( int winningTeam )
Expand Down
Loading