diff options
author | BobTheBob <32057864+BobTheBob9@users.noreply.github.com> | 2022-01-08 02:51:14 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-08 02:51:14 +0000 |
commit | c8ce36a68132ab669019e652c6bc3cb4efa83ead (patch) | |
tree | 7be569bb3d69c87fafba48a7979b2062e4bff40b /Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tffa.gnut | |
parent | ac1179b9b9ae6765fcfe7949086bd739a3bca82e (diff) | |
parent | b55efc1402427093b052f85499270c0c0290b525 (diff) | |
download | NorthstarMods-c8ce36a68132ab669019e652c6bc3cb4efa83ead.tar.gz NorthstarMods-c8ce36a68132ab669019e652c6bc3cb4efa83ead.zip |
Merge pull request #89 from VITALISED/tffa
Add Titan Free for All
Diffstat (limited to 'Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tffa.gnut')
-rw-r--r-- | Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tffa.gnut | 79 |
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 |