From 1486b861c467cc95335d53ffd2532493ec3c9def Mon Sep 17 00:00:00 2001
From: GeckoEidechse <40122905+GeckoEidechse@users.noreply.github.com>
Date: Sat, 18 Nov 2023 21:25:15 +0100
Subject: [PATCH 1/2] Add translation status indicator badge to README (#758)
Add translation status indicator badge to README
Add section showing all languages
---
README.md | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/README.md b/README.md
index 5a180df9c..7b6dfaf02 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,7 @@
# NorthstarMods
+
+
+
[Squirrel](http://www.squirrel-lang.org/squirreldoc/reference/index.html) scripts used to recreate server-side gamelogic and add [custom content](https://r2northstar.gitbook.io/r2northstar-wiki/using-northstar/gamemodes) to the game.
@@ -9,3 +12,11 @@ Issues in this repository should be created if they are related to these domains
- `Northstar.Coop` - Soon™.
- `Northstar.Custom` - Northstar custom content.
- `Northstar.CustomServer` - Server config files and scripts necessary for multiplayer.
+
+### Translating
+
+Translations can be submitted via [weblate](https://translate.harmony.tf/projects/northstar/client/).
+
+
+
+
From 4e394ce4f7cdf18a4acea8db6ff85fc6f858d45e Mon Sep 17 00:00:00 2001
From: Jack <66967891+ASpoonPlaysGames@users.noreply.github.com>
Date: Tue, 21 Nov 2023 01:22:45 +0000
Subject: [PATCH 2/2] Implement missing Score Events (#700)
* use consts for killingspree and rampage score events
* add Revenge and Quick Revenge score events
* ensure no revenge/quick revenge against non-players
* this is OnPlayerKilled i dont need this check
* implement mayhem and onslaught
---
.../mod/scripts/vscripts/mp/_score.nut | 50 ++++++++++++++++++-
1 file changed, 48 insertions(+), 2 deletions(-)
diff --git a/Northstar.CustomServers/mod/scripts/vscripts/mp/_score.nut b/Northstar.CustomServers/mod/scripts/vscripts/mp/_score.nut
index df7577aa0..be20982df 100644
--- a/Northstar.CustomServers/mod/scripts/vscripts/mp/_score.nut
+++ b/Northstar.CustomServers/mod/scripts/vscripts/mp/_score.nut
@@ -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 )
@@ -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
@@ -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
@@ -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 )