aboutsummaryrefslogtreecommitdiff
path: root/Northstar.CustomServers/mod/scripts/vscripts/gamemodes
diff options
context:
space:
mode:
authorBobTheBob <32057864+BobTheBob9@users.noreply.github.com>2021-12-30 19:09:27 +0000
committerGitHub <noreply@github.com>2021-12-30 19:09:27 +0000
commit042ce0e735a67db0f956c1b7e9951ce56d44ec5f (patch)
tree851b4bb4c1d7a669b8a0c6eb1dee5c46ac81cb50 /Northstar.CustomServers/mod/scripts/vscripts/gamemodes
parent15665a52bec2b0a6707569c7f27a8d65b34138de (diff)
parent19f0d89e2160d0c152cf127e6bb102d7f872777a (diff)
downloadNorthstarMods-042ce0e735a67db0f956c1b7e9951ce56d44ec5f.tar.gz
NorthstarMods-042ce0e735a67db0f956c1b7e9951ce56d44ec5f.zip
Merge pull request #35 from x3Karma/main
Actually put the files in the correct location
Diffstat (limited to 'Northstar.CustomServers/mod/scripts/vscripts/gamemodes')
-rw-r--r--Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_ps.nut42
-rw-r--r--Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_tdm.nut51
-rw-r--r--Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_ttdm.nut163
3 files changed, 145 insertions, 111 deletions
diff --git a/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_ps.nut b/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_ps.nut
index 7e3e5ea2..7eec7c89 100644
--- a/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_ps.nut
+++ b/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_ps.nut
@@ -1,15 +1,27 @@
-global function GamemodePs_Init
-
-void function GamemodePs_Init()
-{
- Riff_ForceTitanAvailability( eTitanAvailability.Never )
-
- AddCallback_OnPlayerKilled( GiveScoreForPlayerKill )
- ScoreEvent_SetupEarnMeterValuesForMixedModes()
-}
-
-void function GiveScoreForPlayerKill( entity victim, entity attacker, var damageInfo )
-{
- if ( victim != attacker && victim.IsPlayer() && attacker.IsPlayer() && GetGameState() != eGameState.Epilogue )
- AddTeamScore( attacker.GetTeam(), 1 )
-}
+global function GamemodePs_Init
+
+void function GamemodePs_Init()
+{
+ Riff_ForceTitanAvailability( eTitanAvailability.Never )
+
+ AddCallback_OnPlayerKilled( GiveScoreForPlayerKill )
+ ScoreEvent_SetupEarnMeterValuesForMixedModes()
+ SetTimeoutWinnerDecisionFunc( CheckScoreForDraw )
+
+}
+
+void function GiveScoreForPlayerKill( entity victim, entity attacker, var damageInfo )
+{
+ if ( victim != attacker && victim.IsPlayer() && attacker.IsPlayer() || GetGameState() != eGameState.Playing )
+ AddTeamScore( attacker.GetTeam(), 1 )
+}
+
+int function CheckScoreForDraw()
+{
+ if (GameRules_GetTeamScore(TEAM_IMC) > GameRules_GetTeamScore(TEAM_MILITIA))
+ return TEAM_IMC
+ else if (GameRules_GetTeamScore(TEAM_MILITIA) > GameRules_GetTeamScore(TEAM_IMC))
+ return TEAM_MILITIA
+
+ return TEAM_UNASSIGNED
+} \ No newline at end of file
diff --git a/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_tdm.nut b/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_tdm.nut
index fd5cbb14..ba180790 100644
--- a/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_tdm.nut
+++ b/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_tdm.nut
@@ -1,20 +1,31 @@
-global function GamemodeTdm_Init
-global function RateSpawnpoints_Directional
-
-void function GamemodeTdm_Init()
-{
- AddCallback_OnPlayerKilled( GiveScoreForPlayerKill )
- ScoreEvent_SetupEarnMeterValuesForMixedModes()
-}
-
-void function GiveScoreForPlayerKill( entity victim, entity attacker, var damageInfo )
-{
- if ( victim != attacker && victim.IsPlayer() && attacker.IsPlayer() && GetGameState() != eGameState.Epilogue )
- AddTeamScore( attacker.GetTeam(), 1 )
-}
-
-void function RateSpawnpoints_Directional( int checkclass, array<entity> spawnpoints, int team, entity player )
-{
- // temp
- RateSpawnpoints_Generic( checkclass, spawnpoints, team, player )
-}
+global function GamemodeTdm_Init
+global function RateSpawnpoints_Directional
+
+void function GamemodeTdm_Init()
+{
+ AddCallback_OnPlayerKilled( GiveScoreForPlayerKill )
+ ScoreEvent_SetupEarnMeterValuesForMixedModes()
+ SetTimeoutWinnerDecisionFunc( CheckScoreForDraw )
+}
+
+void function GiveScoreForPlayerKill( entity victim, entity attacker, var damageInfo )
+{
+ if ( victim != attacker && victim.IsPlayer() && attacker.IsPlayer() || GetGameState() != eGameState.Playing )
+ AddTeamScore( attacker.GetTeam(), 1 )
+}
+
+void function RateSpawnpoints_Directional( int checkclass, array<entity> spawnpoints, int team, entity player )
+{
+ // temp
+ RateSpawnpoints_Generic( checkclass, spawnpoints, team, player )
+}
+
+int function CheckScoreForDraw()
+{
+ if (GameRules_GetTeamScore(TEAM_IMC) > GameRules_GetTeamScore(TEAM_MILITIA))
+ return TEAM_IMC
+ else if (GameRules_GetTeamScore(TEAM_MILITIA) > GameRules_GetTeamScore(TEAM_IMC))
+ return TEAM_MILITIA
+
+ return TEAM_UNASSIGNED
+} \ No newline at end of file
diff --git a/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_ttdm.nut b/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_ttdm.nut
index 82b673d2..c72fcb0d 100644
--- a/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_ttdm.nut
+++ b/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_gamemode_ttdm.nut
@@ -1,76 +1,87 @@
-global function GamemodeTTDM_Init
-
-const float TTDMIntroLength = 15.0
-
-void function GamemodeTTDM_Init()
-{
- Riff_ForceSetSpawnAsTitan( eSpawnAsTitan.Always )
- Riff_ForceTitanExitEnabled( eTitanExitEnabled.Never )
- TrackTitanDamageInPlayerGameStat( PGS_ASSAULT_SCORE )
- ScoreEvent_SetupEarnMeterValuesForMixedModes()
- SetLoadoutGracePeriodEnabled( false )
-
- ClassicMP_SetCustomIntro( TTDMIntroSetup, TTDMIntroLength )
- ClassicMP_ForceDisableEpilogue( true )
-
- AddCallback_OnPlayerKilled( AddTeamScoreForPlayerKilled ) // dont have to track autotitan kills since you cant leave your titan in this mode
-
- // probably needs scoreevent earnmeter values
-}
-
-void function TTDMIntroSetup()
-{
- // this should show intermission cam for 15 sec in prematch, before spawning players as titans
- AddCallback_GameStateEnter( eGameState.Prematch, TTDMIntroStart )
- AddCallback_OnClientConnected( TTDMIntroShowIntermissionCam )
-}
-
-void function TTDMIntroStart()
-{
- thread TTDMIntroStartThreaded()
-}
-
-void function TTDMIntroStartThreaded()
-{
- ClassicMP_OnIntroStarted()
-
- foreach ( entity player in GetPlayerArray() )
- TTDMIntroShowIntermissionCam( player )
-
- wait TTDMIntroLength
-
- ClassicMP_OnIntroFinished()
-}
-
-void function TTDMIntroShowIntermissionCam( entity player )
-{
- if ( GetGameState() != eGameState.Prematch )
- return
-
- thread PlayerWatchesTTDMIntroIntermissionCam( player )
-}
-
-void function PlayerWatchesTTDMIntroIntermissionCam( entity player )
-{
- ScreenFadeFromBlack( player )
-
- entity intermissionCam = GetEntArrayByClass_Expensive( "info_intermission" )[ 0 ]
-
- // the angle set here seems sorta inconsistent as to whether it actually works or just stays at 0 for some reason
- player.SetObserverModeStaticPosition( intermissionCam.GetOrigin() )
- player.SetObserverModeStaticAngles( intermissionCam.GetAngles() )
- player.StartObserverMode( OBS_MODE_STATIC_LOCKED )
-
- wait TTDMIntroLength
-
- RespawnAsTitan( player, false )
- TryGameModeAnnouncement( player )
-}
-
-void function AddTeamScoreForPlayerKilled( entity victim, entity attacker, var damageInfo )
-{
- if ( victim == attacker || !victim.IsPlayer() || !attacker.IsPlayer() || GetGameState() != eGameState.Playing )
- return
-
- AddTeamScore( GetOtherTeam( victim.GetTeam() ), 1 )
-}
+global function GamemodeTTDM_Init
+
+const float TTDMIntroLength = 15.0
+
+void function GamemodeTTDM_Init()
+{
+ Riff_ForceSetSpawnAsTitan( eSpawnAsTitan.Always )
+ Riff_ForceTitanExitEnabled( eTitanExitEnabled.Never )
+ TrackTitanDamageInPlayerGameStat( PGS_ASSAULT_SCORE )
+ ScoreEvent_SetupEarnMeterValuesForMixedModes()
+ SetLoadoutGracePeriodEnabled( false )
+
+ ClassicMP_SetCustomIntro( TTDMIntroSetup, TTDMIntroLength )
+ ClassicMP_ForceDisableEpilogue( true )
+ SetTimeoutWinnerDecisionFunc( CheckScoreForDraw )
+
+ AddCallback_OnPlayerKilled( AddTeamScoreForPlayerKilled ) // dont have to track autotitan kills since you cant leave your titan in this mode
+
+ // probably needs scoreevent earnmeter values
+}
+
+void function TTDMIntroSetup()
+{
+ // this should show intermission cam for 15 sec in prematch, before spawning players as titans
+ AddCallback_GameStateEnter( eGameState.Prematch, TTDMIntroStart )
+ AddCallback_OnClientConnected( TTDMIntroShowIntermissionCam )
+}
+
+void function TTDMIntroStart()
+{
+ thread TTDMIntroStartThreaded()
+}
+
+void function TTDMIntroStartThreaded()
+{
+ ClassicMP_OnIntroStarted()
+
+ foreach ( entity player in GetPlayerArray() )
+ TTDMIntroShowIntermissionCam( player )
+
+ wait TTDMIntroLength
+
+ ClassicMP_OnIntroFinished()
+}
+
+void function TTDMIntroShowIntermissionCam( entity player )
+{
+ if ( GetGameState() != eGameState.Prematch )
+ return
+
+ thread PlayerWatchesTTDMIntroIntermissionCam( player )
+}
+
+void function PlayerWatchesTTDMIntroIntermissionCam( entity player )
+{
+ ScreenFadeFromBlack( player )
+
+ entity intermissionCam = GetEntArrayByClass_Expensive( "info_intermission" )[ 0 ]
+
+ // the angle set here seems sorta inconsistent as to whether it actually works or just stays at 0 for some reason
+ player.SetObserverModeStaticPosition( intermissionCam.GetOrigin() )
+ player.SetObserverModeStaticAngles( intermissionCam.GetAngles() )
+ player.StartObserverMode( OBS_MODE_STATIC_LOCKED )
+
+ wait TTDMIntroLength
+
+ RespawnAsTitan( player, false )
+ TryGameModeAnnouncement( player )
+}
+
+void function AddTeamScoreForPlayerKilled( entity victim, entity attacker, var damageInfo )
+{
+ if ( victim == attacker || !victim.IsPlayer() || !attacker.IsPlayer() || GetGameState() != eGameState.Playing )
+ return
+
+ AddTeamScore( GetOtherTeam( victim.GetTeam() ), 1 )
+}
+
+int function CheckScoreForDraw()
+{
+ if (GameRules_GetTeamScore(TEAM_IMC) > GameRules_GetTeamScore(TEAM_MILITIA))
+ return TEAM_IMC
+ else if (GameRules_GetTeamScore(TEAM_MILITIA) > GameRules_GetTeamScore(TEAM_IMC))
+ return TEAM_MILITIA
+
+ return TEAM_UNASSIGNED
+} \ No newline at end of file