diff options
Diffstat (limited to 'Northstar.Custom')
-rw-r--r-- | Northstar.Custom/mod.json | 7 | ||||
-rw-r--r-- | Northstar.Custom/playlists_v2.txt | 87 | ||||
-rw-r--r-- | Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_ctf_comp.gnut | 109 |
3 files changed, 203 insertions, 0 deletions
diff --git a/Northstar.Custom/mod.json b/Northstar.Custom/mod.json index 2c82cb0b..75a14291 100644 --- a/Northstar.Custom/mod.json +++ b/Northstar.Custom/mod.json @@ -162,6 +162,13 @@ }, { + "Path": "gamemodes/sh_gamemode_ctf_comp.gnut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientPreCallback": "ShGamemodeCTFComp_Init", + "ServerPreCallback": "ShGamemodeCTFComp_Init" + }, + + { "Path": "titan/sh_first_person_embark.gnut", "RunOn": "( CLIENT || SERVER ) && MP", "ClientPreCallback": "FirstPersonEmbark_Init", diff --git a/Northstar.Custom/playlists_v2.txt b/Northstar.Custom/playlists_v2.txt index be938cc3..56b56603 100644 --- a/Northstar.Custom/playlists_v2.txt +++ b/Northstar.Custom/playlists_v2.txt @@ -996,6 +996,34 @@ playlists gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM } } + ctf_comp + { + inherit defaults + vars + { + name #GAMEMODE_ctf_comp + lobbytitle #PL_capture_the_flag_lobby + description #PL_capture_the_flag_desc + hint #PL_capture_the_flag_hint + abbreviation #PL_capture_the_flag_abbr + image ctf + respawn_delay 8 + scorelimit 5 + suddendeath_timelimit 2 + timelimit 12 + max_players 10 + phase_shift_drop_flag 1 + ctf_flag_return_time 1 + color "0 119 245 255" + + gamemode_score_hint #GAMEMODE_SCORE_HINT_CTF + gamemode_bullet_001 #GAMEMODE_BULLET_CTF_001 + gamemode_bullet_002 #GAMEMODE_BULLET_CTF_002 + gamemode_bullet_003 #GAMEMODE_BULLET_CTF_003 + gamemode_bullet_004 #GAMEMODE_BULLET_CTF_004 + gamemode_bullet_005 #GAMEMODE_BULLET_CTF_005 + } + } // END OF MP GAMEMODES LINE ---------------------------------------------------- @@ -2684,6 +2712,63 @@ playlists } } } + ctf_comp + { + inherit defaults + vars + { + name #GAMEMODE_ctf_comp + lobbytitle #PL_capture_the_flag_lobby + description #PL_capture_the_flag_desc + abbreviation #PL_capture_the_flag_abbr + image ctf + mixtape_slot 4 + mixtape_timeout 120 + visible 1 + + // comp-exclusive settings + // note: these don't display right on the private match menu yet + pilot_health_multiplier 1.25 + respawn_delay 7.0 + + boosts_enabled 1 // this is actually disabled lol + earn_meter_pilot_overdrive 0 + earn_meter_pilot_multiplier 0.5 + earn_meter_titan_multiplier 0.5 + + scorelimit 6 + timelimit 14 + } + gamemodes + { + ctf + { + maps + { + mp_complex3 1 + mp_drydock 2 + mp_glitch 1 + mp_homestead 2 + mp_eden 2 + mp_forwardbase_kodai 1 + mp_black_water_canal 2 + mp_glitch 1 + mp_angel_city 1 + mp_colony02 1 + mp_relic02 1 + mp_grave 2 + mp_homestead 2 + mp_drydock 2 + mp_glitch 1 + mp_thaw 1 + mp_eden 2 + mp_black_water_canal 2 + mp_glitch 1 + mp_relic02 1 + } + } + } + } // END OF MP PLAYLISTS LINE ---------------------------------------------------- @@ -4877,6 +4962,8 @@ playlists "FASTBALL_PANEL_CAPTURED" "%s1 captured panel %s2" "SCOREBOARD_FASTBALL_HACKS" "Panels Captured" + "GAMEMODE_ctf_comp" "Competitive CTF" + // FAQ - Community // diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_ctf_comp.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_ctf_comp.gnut new file mode 100644 index 00000000..aff693c7 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_ctf_comp.gnut @@ -0,0 +1,109 @@ +global function ShGamemodeCTFComp_Init + +global const string GAMEMODE_CTF_COMP = "ctf_comp" + +void function ShGamemodeCTFComp_Init() +{ + // create custom gamemode + AddCallback_OnCustomGamemodesInit( CreateGamemodeCTFComp ) + AddCallback_OnRegisteringCustomNetworkVars( CTFCompRegisterNetworkVars ) +} + +void function CreateGamemodeCTFComp() +{ + GameMode_Create( GAMEMODE_CTF_COMP ) + GameMode_SetName( GAMEMODE_CTF_COMP, "#GAMEMODE_ctf_comp" ) + GameMode_SetGameModeAnnouncement( GAMEMODE_CTF_COMP, "ctf_modeDesc" ) + GameMode_SetDesc( GAMEMODE_CTF_COMP, "#PL_capture_the_flag_hint" ) + GameMode_SetIcon( GAMEMODE_CTF_COMP, $"ui/menu/playlist/ctf" ) + GameMode_SetSuddenDeath( GAMEMODE_CTF_COMP, true ) + GameMode_SetDefaultScoreLimits( GAMEMODE_CTF_COMP, 0, 5 ) + GameMode_SetDefaultTimeLimits( GAMEMODE_CTF_COMP, 0, 3.0 ) + GameMode_AddScoreboardColumnData( GAMEMODE_CTF_COMP, "#SCOREBOARD_CAPTURES", PGS_ASSAULT_SCORE, 2 ) + GameMode_AddScoreboardColumnData( GAMEMODE_CTF_COMP, "#SCOREBOARD_RETURNS", PGS_DEFENSE_SCORE, 2 ) + GameMode_AddScoreboardColumnData( GAMEMODE_CTF_COMP, "#SCOREBOARD_KILLS", PGS_KILLS, 2 ) + GameMode_AddScoreboardColumnData( GAMEMODE_CTF_COMP, "#SCOREBOARD_TITAN_DAMAGE", PGS_DISTANCE_SCORE, 6 ) // gotta use a weird pgs here since we're running out of them lol + GameMode_SetColor( GAMEMODE_CTF_COMP, [61, 117, 193, 255] ) + + // this gamemode is literally just normal ctf + a few extra settings + // as such we do all the inits in this file, not enough logic to be worth splitting it up + + #if SERVER + GameMode_AddServerInit( GAMEMODE_CTF_COMP, InitCTFCompSpecificSettings ) + GameMode_AddServerInit( GAMEMODE_CTF_COMP, CaptureTheFlag_Init ) + GameMode_SetPilotSpawnpointsRatingFunc( GAMEMODE_CTF_COMP, RateSpawnpoints_CTF ) + GameMode_SetTitanSpawnpointsRatingFunc( GAMEMODE_CTF_COMP, RateSpawnpoints_CTF ) + #elseif CLIENT + GameMode_AddClientInit( GAMEMODE_CTF_COMP, InitCTFCompSpecificSettings ) + GameMode_AddClientInit( GAMEMODE_CTF_COMP, ClCaptureTheFlag_Init ) + #endif + #if !UI + GameMode_SetScoreCompareFunc( GAMEMODE_CTF_COMP, CompareCTF ) + GameMode_AddSharedInit( GAMEMODE_CTF_COMP, GamemodeCtfDialogue_Init ) + GameMode_AddSharedInit( GAMEMODE_CTF_COMP, CaptureTheFlagShared_Init ) + #endif +} + +void function CTFCompRegisterNetworkVars() +{ + // copied from the vanilla ctf remote functions + RegisterNetworkedVariable( "imcFlag", SNDC_GLOBAL, SNVT_ENTITY ) + RegisterNetworkedVariable( "milFlag", SNDC_GLOBAL, SNVT_ENTITY ) + + RegisterNetworkedVariable( "imcFlagHome", SNDC_GLOBAL, SNVT_ENTITY ) + RegisterNetworkedVariable( "milFlagHome", SNDC_GLOBAL, SNVT_ENTITY ) + + RegisterNetworkedVariable( "imcFlagState", SNDC_GLOBAL, SNVT_INT, 0 ) + RegisterNetworkedVariable( "milFlagState", SNDC_GLOBAL, SNVT_INT, 0 ) + + RegisterNetworkedVariable( "flagReturnProgress", SNDC_GLOBAL, SNVT_FLOAT_RANGE_OVER_TIME, 0.0, 0.0, 1.0 ) + RegisterNetworkedVariable( "returningFlag", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) + + Remote_RegisterFunction( "ServerCallback_CTF_PlayMatchNearEndMusic" ) + Remote_RegisterFunction( "ServerCallback_CTF_StartReturnFlagProgressBar" ) + Remote_RegisterFunction( "ServerCallback_CTF_StopReturnFlagProgressBar" ) + + #if CLIENT + CLCaptureTheFlag_RegisterNetworkFunctions() + #endif +} + +void function InitCTFCompSpecificSettings() +{ + #if SERVER + SetShouldUsePickLoadoutScreen( true ) + TrackTitanDamageInPlayerGameStat( PGS_DISTANCE_SCORE ) + SetSpawnpointGamemodeOverride( CAPTURE_THE_FLAG ) + TeamTitanSelectMenu_Init() + #elseif CLIENT + ClTeamTitanSelectMenu_Init() + + // gotta register the music here because this is done hardcoded to ctf in cl_music + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_mp_ctf_intro_flyin", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_mp_ctf_intro_flyin", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_ctf_epilogue_win", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_ctf_epilogue_win", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_ctf_halftime_losing", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_ctf_halftime_losing", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_SUDDEN_DEATH, "music_mp_ctf_draw", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_SUDDEN_DEATH, "music_mp_ctf_draw", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_ctf_epilogue_lose", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_ctf_epilogue_lose", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.ROUND_BASED_GAME_WON, "music_mp_ctf_halftime_winning", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.ROUND_BASED_GAME_WON, "music_mp_ctf_halftime_winning", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.ROUND_BASED_GAME_LOST, "music_mp_ctf_halftime_losing", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.ROUND_BASED_GAME_LOST, "music_mp_ctf_halftime_losing", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.GAMEMODE_1, "music_mp_ctf_flag_4", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.GAMEMODE_1, "music_mp_ctf_flag_4", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_ctf_lastminute", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_ctf_lastminute", TEAM_MILITIA ) + #endif +}
\ No newline at end of file |