diff options
Diffstat (limited to 'Northstar.Custom')
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 |