aboutsummaryrefslogtreecommitdiff
path: root/Northstar.Custom
diff options
context:
space:
mode:
Diffstat (limited to 'Northstar.Custom')
-rw-r--r--Northstar.Custom/keyvalues/playlists_v2.txt116
-rw-r--r--Northstar.Custom/mod.json22
-rw-r--r--Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_fastball.gnut18
-rw-r--r--Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_tffa.gnut79
-rw-r--r--Northstar.Custom/mod/scripts/vscripts/gamemodes/cl_gamemode_tffa.gnut28
-rw-r--r--Northstar.Custom/mod/scripts/vscripts/gamemodes/sh_gamemode_tffa.gnut39
6 files changed, 272 insertions, 30 deletions
diff --git a/Northstar.Custom/keyvalues/playlists_v2.txt b/Northstar.Custom/keyvalues/playlists_v2.txt
index 37734025..3bf111b5 100644
--- a/Northstar.Custom/keyvalues/playlists_v2.txt
+++ b/Northstar.Custom/keyvalues/playlists_v2.txt
@@ -241,6 +241,23 @@ playlists
gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM
}
}
+ tffa
+ {
+ inherit defaults
+ vars
+ {
+ name #PL_tffa
+ lobbytitle #PL_tffa_lobby
+ description #PL_tffa_desc
+ abbreviation #PL_sbox_abbr
+
+ scorelimit 20
+ max_players 10
+ max_teams 10
+ classic_mp 1
+ gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM
+ }
+ }
}
Playlists
{
@@ -652,35 +669,38 @@ playlists
{
hs
{
- mp_complex3 1
- mp_drydock 1
- mp_glitch 1
- mp_homestead 2
- mp_eden 1
- mp_forwardbase_kodai 1
- mp_black_water_canal 1
- mp_glitch 1
- mp_angel_city 1
- mp_colony02 1
- mp_relic02 1
- mp_grave 1
- mp_homestead 1
- mp_drydock 1
- mp_glitch 1
- mp_thaw 1
- mp_eden 2
- mp_black_water_canal 1
- mp_glitch 1
- mp_relic02 1
- mp_wargames 1
- mp_rise 1
- mp_crashsite3 1
- mp_lf_stacks 1
- mp_lf_deck 1
- mp_lf_meadow 1
- mp_lf_traffic 1
- mp_lf_township 1
- mp_lf_uma 1
+ maps
+ {
+ mp_complex3 1
+ mp_drydock 1
+ mp_glitch 1
+ mp_homestead 2
+ mp_eden 1
+ mp_forwardbase_kodai 1
+ mp_black_water_canal 1
+ mp_glitch 1
+ mp_angel_city 1
+ mp_colony02 1
+ mp_relic02 1
+ mp_grave 1
+ mp_homestead 1
+ mp_drydock 1
+ mp_glitch 1
+ mp_thaw 1
+ mp_eden 2
+ mp_black_water_canal 1
+ mp_glitch 1
+ mp_relic02 1
+ mp_wargames 1
+ mp_rise 1
+ mp_crashsite3 1
+ mp_lf_stacks 1
+ mp_lf_deck 1
+ mp_lf_meadow 1
+ mp_lf_traffic 1
+ mp_lf_township 1
+ mp_lf_uma 1
+ }
}
}
}
@@ -780,5 +800,43 @@ playlists
}
}
}
+ tffa
+ {
+ inherit defaults
+ vars
+ {
+ name #PL_tffa
+ lobbytitle #PL_tffa_lobby
+ description #PL_tffa_desc
+ hint #PL_tffa_hint
+ image lts
+ abbreviation #PL_tffa_abbr
+ visible 0
+ }
+ gamemodes
+ {
+ tffa
+ {
+ maps
+ {
+ mp_forwardbase_kodai 1
+ mp_grave 1
+ mp_homestead 1
+ mp_thaw 1
+ mp_black_water_canal 1
+ mp_eden 1
+ mp_drydock 1
+ mp_crashsite3 1
+ mp_complex3 1
+ mp_angel_city 1
+ mp_colony02 1
+ mp_glitch 1
+ mp_relic02 1
+ mp_wargames 1
+ mp_rise 1
+ }
+ }
+ }
+ }
}
}
diff --git a/Northstar.Custom/mod.json b/Northstar.Custom/mod.json
index d6c54033..2aaa7eb7 100644
--- a/Northstar.Custom/mod.json
+++ b/Northstar.Custom/mod.json
@@ -278,6 +278,28 @@
"Before": "ShGamemodeCTFComp_Init"
}
},
+
+ {
+ "Path": "gamemodes/sh_gamemode_tffa.gnut",
+ "RunOn": "( CLIENT || SERVER ) && MP",
+ "ClientCallback": {
+ "Before": "Sh_GamemodeTFFA_Init"
+ },
+
+ "ServerCallback": {
+ "Before": "Sh_GamemodeTFFA_Init"
+ }
+ },
+
+ {
+ "Path": "gamemodes/_gamemode_tffa.gnut",
+ "RunOn": "SERVER && MP"
+ },
+
+ {
+ "Path": "gamemodes/cl_gamemode_tffa.gnut",
+ "RunOn": "CLIENT && MP"
+ },
{
"Path": "sh_3psequence_to_1p_hacks.gnut",
diff --git a/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_fastball.gnut b/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_fastball.gnut
index 98878c3a..405ef16e 100644
--- a/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_fastball.gnut
+++ b/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_fastball.gnut
@@ -97,6 +97,22 @@ void function GamemodeFastball_Init()
< 8, 825, 1096 >, < 0, -90.00, 0 > ,
< 740 , -600, 960 >, < 0, 0, 0 >
])
+
+ FastballAddBuddySpawnForLevel( "mp_crashsite3", TEAM_MILITIA, < -6364.65, -1291.28, 822.02>, <0, -19.17, 0> )
+ FastballAddBuddySpawnForLevel( "mp_crashsite3", TEAM_IMC, < -2455.29, 821.52, 539.21>, <0, -179.21, 0> )
+ FastballAddPanelSpawnsForLevel( "mp_crashsite3", [
+ < -672.27, -2786, 931.17 >, < 0, -45, 0 >,
+ < -3770, -990, 985 >, < 10, 80.00, 20 >,
+ < -6190.25, 1658.51, 1400.03 >, < 0, 144, 0 >
+ ])
+
+ FastballAddBuddySpawnForLevel( "mp_rise", TEAM_MILITIA, < -3885.97, 35.11, 704.03>, <0, 11.86, 0> )
+ FastballAddBuddySpawnForLevel( "mp_rise", TEAM_IMC, < 2206.76, 1869.08, 453.9>, <0, -165.77, 0> )
+ FastballAddPanelSpawnsForLevel( "mp_rise", [
+ < 141, 2484.71, 296.03 >, < 0, 0, 0 >,
+ < -448.54, 1091.42, 545.03 >, < 0, 0, 0 >,
+ < -2097, 1050, 320.03 >, < 0, 180, 0 >
+ ])
//Current BT fast ball points are good
FastballAddPanelSpawnsForLevel( "mp_colony02", [
@@ -208,4 +224,4 @@ int function FastballDecideWinner()
return TEAM_IMC
return TEAM_UNASSIGNED
-} \ No newline at end of file
+}
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 00000000..edea5a76
--- /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
diff --git a/Northstar.Custom/mod/scripts/vscripts/gamemodes/cl_gamemode_tffa.gnut b/Northstar.Custom/mod/scripts/vscripts/gamemodes/cl_gamemode_tffa.gnut
new file mode 100644
index 00000000..5a5a3b9c
--- /dev/null
+++ b/Northstar.Custom/mod/scripts/vscripts/gamemodes/cl_gamemode_tffa.gnut
@@ -0,0 +1,28 @@
+global function ClGamemodeTFFA_Init
+
+void function ClGamemodeTFFA_Init()
+{
+ // register gamestate asset, this is default so not necessary but doing it anyway
+ ClGameState_RegisterGameStateAsset( $"ui/gamestate_info_ffa.rpak" )
+
+ // add music for mode, this is copied directly from the attrition/tdm music registered in cl_music.gnut
+ RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_mp_pilothunt_intro_flyin", TEAM_IMC )
+ RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_mp_pilothunt_intro_flyin", TEAM_MILITIA )
+
+ RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_pilothunt_epilogue_win", TEAM_IMC )
+ RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_pilothunt_epilogue_win", TEAM_MILITIA )
+
+ RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_pilothunt_epilogue_win", TEAM_IMC )
+ RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_pilothunt_epilogue_win", TEAM_MILITIA )
+
+ RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_pilothunt_epilogue_lose", TEAM_IMC )
+ RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_pilothunt_epilogue_lose", TEAM_MILITIA )
+
+ RegisterLevelMusicForTeam( eMusicPieceID.GAMEMODE_1, "music_mp_pilothunt_almostdone", TEAM_IMC )
+ RegisterLevelMusicForTeam( eMusicPieceID.GAMEMODE_1, "music_mp_pilothunt_almostdone", TEAM_MILITIA )
+
+ RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_pilothunt_lastminute", TEAM_IMC )
+ RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_pilothunt_lastminute", TEAM_MILITIA )
+
+ AddCallback_GameStateEnter( eGameState.Postmatch, DisplayPostMatchTop3 )
+} \ No newline at end of file
diff --git a/Northstar.Custom/mod/scripts/vscripts/gamemodes/sh_gamemode_tffa.gnut b/Northstar.Custom/mod/scripts/vscripts/gamemodes/sh_gamemode_tffa.gnut
new file mode 100644
index 00000000..a45e59a4
--- /dev/null
+++ b/Northstar.Custom/mod/scripts/vscripts/gamemodes/sh_gamemode_tffa.gnut
@@ -0,0 +1,39 @@
+global function Sh_GamemodeTFFA_Init
+
+global const string GAMEMODE_TFFA = "tffa"
+
+void function Sh_GamemodeTFFA_Init()
+{
+ AddCallback_OnCustomGamemodesInit( CreateGamemodeTFFA )
+}
+
+void function CreateGamemodeTFFA()
+{
+ GameMode_Create( GAMEMODE_TFFA )
+ GameMode_SetName( GAMEMODE_TFFA, "#GAMEMODE_TFFA" )
+ GameMode_SetDesc( GAMEMODE_TFFA, "#PL_tffa_desc" )
+ GameMode_SetGameModeAnnouncement( GAMEMODE_TFFA, "ffa_modeDesc" )
+ GameMode_SetDefaultTimeLimits( GAMEMODE_TFFA, 10, 0.0 )
+ GameMode_AddScoreboardColumnData( GAMEMODE_TFFA, "#SCOREBOARD_TITAN_KILLS", PGS_TITAN_KILLS, 2 )
+ GameMode_AddScoreboardColumnData( GAMEMODE_TFFA, "#SCOREBOARD_TITAN_DAMAGE", PGS_ASSAULT_SCORE, 6 )
+ GameMode_SetColor( GAMEMODE_TFFA, [147, 204, 57, 255] )
+
+ AddPrivateMatchMode( GAMEMODE_TFFA )
+
+ GameMode_SetDefaultScoreLimits( GAMEMODE_TFFA, 20, 0)
+
+ #if SERVER
+ GameMode_AddServerInit( GAMEMODE_TFFA, GamemodeTFFA_Init )
+ GameMode_AddServerInit( GAMEMODE_TFFA, GamemodeFFAShared_Init )
+ GameMode_SetPilotSpawnpointsRatingFunc( GAMEMODE_TFFA, RateSpawnpoints_Generic )
+ GameMode_SetTitanSpawnpointsRatingFunc( GAMEMODE_TFFA, RateSpawnpoints_Generic )
+ #elseif CLIENT
+ GameMode_AddClientInit( GAMEMODE_TFFA, ClGamemodeTFFA_Init )
+ GameMode_AddClientInit( GAMEMODE_TFFA, GamemodeFFAShared_Init )
+ GameMode_AddClientInit( GAMEMODE_TFFA, ClGamemodeTFFA_Init )
+ #endif
+ #if !UI
+ GameMode_SetScoreCompareFunc( GAMEMODE_TFFA, CompareAssaultScore )
+ GameMode_AddSharedInit( GAMEMODE_TFFA, GamemodeFFA_Dialogue_Init )
+ #endif
+} \ No newline at end of file