aboutsummaryrefslogtreecommitdiff
path: root/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tt.gnut
diff options
context:
space:
mode:
authorBobTheBob <32057864+BobTheBob9@users.noreply.github.com>2021-08-31 23:14:58 +0100
committerBobTheBob <32057864+BobTheBob9@users.noreply.github.com>2021-08-31 23:14:58 +0100
commit9a96d0bff56f1969c68bb52a2f33296095bdc67d (patch)
tree4175928e488632705692e3cccafa1a38dd854615 /Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tt.gnut
parent27bd240871b7c0f2f49fef137718b2e3c208e3b4 (diff)
downloadNorthstarMods-9a96d0bff56f1969c68bb52a2f33296095bdc67d.tar.gz
NorthstarMods-9a96d0bff56f1969c68bb52a2f33296095bdc67d.zip
move to new mod format
Diffstat (limited to 'Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tt.gnut')
-rw-r--r--Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tt.gnut71
1 files changed, 71 insertions, 0 deletions
diff --git a/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tt.gnut b/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tt.gnut
new file mode 100644
index 000000000..6a53ef87b
--- /dev/null
+++ b/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tt.gnut
@@ -0,0 +1,71 @@
+global function GamemodeTT_Init
+
+struct {
+ entity lastPlayerDropped
+} file
+
+void function GamemodeTT_Init()
+{
+ SetSpawnpointGamemodeOverride( TEAM_DEATHMATCH )
+ Riff_ForceTitanAvailability( eTitanAvailability.Never )
+
+ AddCallback_GameStateEnter( eGameState.Playing, OnEnterPlaying )
+
+ AddCallback_OnPlayerKilled( OnPlayerKilled )
+ AddDeathCallback( "npc_titan", OnTitanKilled )
+}
+
+void function OnEnterPlaying()
+{
+ thread DropRandomTitan()
+}
+
+void function DropRandomTitan()
+{
+ array<entity> players = GetPlayerArray()
+
+ if ( players.len() == 1 )
+ file.lastPlayerDropped = null // don't wanna loop forever if only 1 player
+
+ entity titanPlayer
+ do {
+ titanPlayer = players[ RandomInt( players.len() ) ]
+ } while ( titanPlayer == file.lastPlayerDropped )
+
+ DropTitanForPlayer( titanPlayer, 5.0 )
+}
+
+void function DropTitanForPlayer( entity player, float delay )
+{
+ wait delay
+
+ file.lastPlayerDropped = player
+ CreateTitanForPlayerAndHotdrop( player, GetTitanReplacementPoint( player, false ) )
+}
+
+void function AttemptToDropTitanForKill( entity victim, entity attacker, var damageInfo )
+{
+ if ( !victim.IsTitan() )
+ return
+
+ if ( !attacker.IsPlayer() || victim == attacker )
+ thread DropRandomTitan()
+ else
+ thread DropTitanForPlayer( attacker, 2.0 )
+}
+
+void function OnPlayerKilled( entity victim, entity attacker, var damageInfo )
+{
+ if ( victim.IsTitan() )
+ AttemptToDropTitanForKill( victim, attacker, damageInfo )
+ else if ( attacker.IsTitan() )
+ {
+ AddTeamScore( attacker.GetTeam(), 1 )
+ }
+}
+
+void function OnTitanKilled( entity victim, var damageInfo )
+{
+ if ( IsPetTitan( victim ) )
+ AttemptToDropTitanForKill( victim, DamageInfo_GetAttacker( damageInfo ), damageInfo )
+} \ No newline at end of file