aboutsummaryrefslogtreecommitdiff
path: root/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tffa.gnut
diff options
context:
space:
mode:
authorBobTheBob <32057864+BobTheBob9@users.noreply.github.com>2022-01-08 03:20:04 +0000
committerBobTheBob <32057864+BobTheBob9@users.noreply.github.com>2022-01-08 03:20:04 +0000
commit4413f541063ae14efd54f873a43aeaf7c53dd983 (patch)
treeba422c4306f37f7d914da9f5f8f53ab95a696b00 /Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tffa.gnut
parentd888352dc05c2b5ba89ff2e40c4a4d1acc1e4e0a (diff)
parent218b251440988e5070c92a21fb593f255c53ad74 (diff)
downloadNorthstarMods-4413f541063ae14efd54f873a43aeaf7c53dd983.tar.gz
NorthstarMods-4413f541063ae14efd54f873a43aeaf7c53dd983.zip
Merge branch 'main' of https://github.com/R2Northstar/NorthstarMods
Diffstat (limited to 'Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tffa.gnut')
-rw-r--r--Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tffa.gnut79
1 files changed, 79 insertions, 0 deletions
diff --git a/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tffa.gnut b/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tffa.gnut
new file mode 100644
index 000000000..edea5a764
--- /dev/null
+++ b/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tffa.gnut
@@ -0,0 +1,79 @@
+// literally just ttdm paste
+
+global function GamemodeTFFA_Init
+
+const float TFFAIntroLength = 15.0
+
+void function GamemodeTFFA_Init()
+{
+ Riff_ForceSetSpawnAsTitan( eSpawnAsTitan.Always )
+ Riff_ForceTitanExitEnabled( eTitanExitEnabled.Never )
+ TrackTitanDamageInPlayerGameStat( PGS_ASSAULT_SCORE )
+ ScoreEvent_SetupEarnMeterValuesForMixedModes()
+ SetLoadoutGracePeriodEnabled( false )
+
+ ClassicMP_SetCustomIntro( TFFAIntroSetup, TFFAIntroLength )
+
+ 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 TFFAIntroSetup()
+{
+ // this should show intermission cam for 15 sec in prematch, before spawning players as titans
+ AddCallback_GameStateEnter( eGameState.Prematch, TFFAIntroStart )
+ AddCallback_OnClientConnected( TFFAIntroShowIntermissionCam )
+}
+
+void function TFFAIntroStart()
+{
+ thread TFFAIntroStartThreaded()
+}
+
+void function TFFAIntroStartThreaded()
+{
+ ClassicMP_OnIntroStarted()
+
+ foreach ( entity player in GetPlayerArray() )
+ TFFAIntroShowIntermissionCam( player )
+
+ wait TFFAIntroLength
+
+ ClassicMP_OnIntroFinished()
+}
+
+void function TFFAIntroShowIntermissionCam( entity player )
+{
+ if ( GetGameState() != eGameState.Prematch )
+ return
+
+ thread PlayerWatchesTFFAIntroIntermissionCam( player )
+}
+
+void function PlayerWatchesTFFAIntroIntermissionCam( 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 TFFAIntroLength
+
+ RespawnAsTitan( player, false )
+ TryGameModeAnnouncement( player )
+}
+
+void function AddTeamScoreForPlayerKilled( entity victim, entity attacker, var damageInfo )
+{
+ if ( victim != attacker && victim.IsPlayer() && attacker.IsPlayer() && GetGameState() == eGameState.Playing )
+ {
+ AddTeamScore( attacker.GetTeam(), 1 )
+ // why isn't this PGS_SCORE? odd game
+ attacker.AddToPlayerGameStat( PGS_ASSAULT_SCORE, 1 )
+ }
+} \ No newline at end of file