commit c2346b5b3b69909715ecb4db1122642d8612d0b4 Author: Mathew Guest Date: Mon May 13 03:46:34 2019 -0600 1.0 working server diff --git a/files/config/Engine.ini b/files/config/Engine.ini new file mode 100644 index 0000000..b200c8d --- /dev/null +++ b/files/config/Engine.ini @@ -0,0 +1,14 @@ +[Core.System] +Paths=../../../Engine/Content +Paths=%GAMEDIR%Content +Paths=../../../UnrealTournament/Plugins/SampleGameMode/Content +Paths=../../../UnrealTournament/Plugins/ContentOnly/Content + +[/Script/UnrealTournament.UTGameEngine] +bFirstRun=False +RconPassword=Hidden + +[/Script/OnlineSubsystemUtils.IpNetDriver] +NetServerMaxTickRate=96 +LanServerMaxTickRate=96 + diff --git a/files/config/Game.ini b/files/config/Game.ini new file mode 100644 index 0000000..b4c3720 --- /dev/null +++ b/files/config/Game.ini @@ -0,0 +1,22 @@ +[/Script/UnrealTournament.UTLobbyGameMode] +LobbyPassword= +AutoLaunchGameMode= +AutoLaunchGameOptions= +AutoLaunchMap= +MaxPlayersInLobby=75 +StartingInstancePort=8001 +InstancePortStep=1 +MaxInstances=6 + +[/Script/UnrealTournament.UTBaseGameMode] +ServerInstanceID=Hidden + +[/Script/UnrealTournament.UTGameMode] +MapVoteTime=60 +bRecordReplays=true +bHandleDedicatedServerReplays=true + +[/Script/UnrealTournament.UTGameState] +ServerName=Warehouse Party (Dallas) +ServerMOTD=Elimination, Instagib, BunnyTrack, and Duel\nBig THANK YOU to all the UT4 content creators!!\nProWeapons, UT+, Instagib mods, and more!\n\nHosted in Dallas, Texas (Provider=Linode.com)\nAdmin: zavage.ut4@gmail.com\n\nConsole Commands:\nmutate hitsounds\nmutate teamskins\nmutate weaponskins\n\nDIY simple, self-hosted UT4 Server @ zavage.net/ut4 +ServerDescription=Silky-smooth Unreal Tournament diff --git a/files/maps/.KEEP b/files/maps/.KEEP new file mode 100644 index 0000000..e69de29 diff --git a/files/mutators/.KEEP b/files/mutators/.KEEP new file mode 100644 index 0000000..e69de29 diff --git a/files/rulesets/0-DisableBigCTF.json b/files/rulesets/0-DisableBigCTF.json new file mode 100644 index 0000000..b6ae940 --- /dev/null +++ b/files/rulesets/0-DisableBigCTF.json @@ -0,0 +1,27 @@ +{ + "uniqueTag": "BIGCTF", + "categories": [ + "Classic" + ], + "title": "Big CTF", + "toolTip": "Capture the Flag with large teams.", + "description": "Capture the Flag with large teams.\n\nTimeLimit : %timelimit% minutes with halftime\nMercy Rule : On\nMaximum players : %maxplayers%", + "mapPrefixes": [], + "maxMapsInList": 16, + "epicMaps": ",/Game/RestrictedAssets/Maps/CTF-Face,/Game/RestrictedAssets/Maps/CTF-TitanPass,/Game/RestrictedAssets/Maps/WIP/CTF-Volcano,/Game/RestrictedAssets/Maps/WIP/CTF-BigRock,/Game/RestrictedAssets/Maps/WIP/CTF-Dam", + "defaultMap": "/Game/RestrictedAssets/Maps/CTF-Face", + "customMapList": [], + "maxPlayers": 20, + "maxTeamCount": 2, + "maxTeamSize": 10, + "maxPartySize": 5, + "displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_LargeCTF.GB_LargeCTF'", + "gameMode": "/Script/UnrealTournament.UTCTFGameMode", + "gameOptions": "?TimeLimit=20?GoalScore=0", + "requiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": false, + "optionFlags": 65535, + "bHideFromUI": true, + "epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/0-DisableBlitzVsAi.json b/files/rulesets/0-DisableBlitzVsAi.json new file mode 100644 index 0000000..6c45476 --- /dev/null +++ b/files/rulesets/0-DisableBlitzVsAi.json @@ -0,0 +1,27 @@ +{ + "uniqueTag": "FlagRunVSAI", + "categories": [ + "Featured" + ], + "title": "Blitz vs AI", + "toolTip": "Co-op vs AI. Attackers must deliver their flag to the enemy base.", + "description": "Blitz Coop vs AI.\nMaximum players : %maxplayers%", + "mapPrefixes": [], + "maxMapsInList": 16, + "epicMaps": "/Game/RestrictedAssets/Maps/WIP/FR-Fort,/Game/RestrictedAssets/Maps/WIP/FR-MeltDown,/Game/RestrictedAssets/Maps/WIP/FR-Loh", + "defaultMap": "", + "customMapList": [], + "maxPlayers": 5, + "maxTeamCount": 0, + "maxTeamSize": 0, + "maxPartySize": 0, + "displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'", + "gameMode": "/Script/UnrealTournament.UTFlagRunGame", + "gameOptions": "?VSAI=1", + "requiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": false, + "optionFlags": 4, + "bHideFromUI": true, + "epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/0-DisableCTF.json b/files/rulesets/0-DisableCTF.json new file mode 100644 index 0000000..a66c60a --- /dev/null +++ b/files/rulesets/0-DisableCTF.json @@ -0,0 +1,27 @@ +{ + "uniqueTag": "CTF", + "categories": [ + "Classic" + ], + "title": "Capture the Flag", + "toolTip": "Capture the Flag.", + "description": "Capture the Flag, with guns.\n\nTimeLimit : %timelimit% minutes with halftime\nMercy Rule : On\nMaximum players : %maxplayers%", + "mapPrefixes": [], + "maxMapsInList": 16, + "epicMaps": "/Game/RestrictedAssets/Maps/CTF-TitanPass,/Game/RestrictedAssets/Maps/CTF-Face,/Game/EpicInternal/Pistola/CTF-Pistola,/Game/EpicInternal/Polaris/CTF-Polaris,/Game/RestrictedAssets/Maps/WIP/CTF-Blank,/Game/RestrictedAssets/Maps/WIP/CTF-Quick,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza,/Game/RestrictedAssets/Maps/WIP/CTF-BigRock,/Game/RestrictedAssets/Maps/WIP/CTF-Volcano", + "defaultMap": "/Game/RestrictedAssets/Maps/CTF-TitanPass", + "customMapList": [], + "maxPlayers": 10, + "maxTeamCount": 2, + "maxTeamSize": 5, + "maxPartySize": 5, + "displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'", + "gameMode": "/Script/UnrealTournament.UTCTFGameMode", + "gameOptions": "?TimeLimit=20?GoalScore=0", + "requiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": false, + "optionFlags": 65535, + "bHideFromUI": true, + "epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/0-DisableCompCTF.json b/files/rulesets/0-DisableCompCTF.json new file mode 100644 index 0000000..05f07e8 --- /dev/null +++ b/files/rulesets/0-DisableCompCTF.json @@ -0,0 +1,27 @@ +{ + "uniqueTag": "CompCTF", + "categories": [ + "Competitive" + ], + "title": "Competitive CTF", + "toolTip": "Capture the Flag with competition rules.", + "description": "Capture the Flag, with guns.\n\nTimeLimit : %timelimit% minutes with halftime\nMercy Rule : Off\nMaximum players : %maxplayers%", + "mapPrefixes": [], + "maxMapsInList": 16, + "epicMaps": "/Game/RestrictedAssets/Maps/CTF-TitanPass,/Game/RestrictedAssets/Maps/CTF-Face,/Game/EpicInternal/Pistola/CTF-Pistola,/Game/EpicInternal/Polaris/CTF-Polaris,/Game/RestrictedAssets/Maps/WIP/CTF-Blank,/Game/RestrictedAssets/Maps/WIP/CTF-Quick,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza,/Game/RestrictedAssets/Maps/WIP/CTF-BigRock,/Game/RestrictedAssets/Maps/WIP/CTF-Volcano", + "defaultMap": "/Game/RestrictedAssets/Maps/CTF-TitanPass", + "customMapList": [], + "maxPlayers": 10, + "maxTeamCount": 2, + "maxTeamSize": 5, + "maxPartySize": 5, + "displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'", + "gameMode": "/Script/UnrealTournament.UTCTFGameMode", + "gameOptions": "?TimeLimit=20?GoalScore=0?MercyScore=0", + "requiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": true, + "optionFlags": 65535, + "bHideFromUI": true, + "epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/0-DisableDeathmatch.json b/files/rulesets/0-DisableDeathmatch.json new file mode 100644 index 0000000..12d07d4 --- /dev/null +++ b/files/rulesets/0-DisableDeathmatch.json @@ -0,0 +1,27 @@ +{ + "uniqueTag": "DEATHMATCH", + "categories": [ + "Featured" + ], + "title": "Deathmatch", + "toolTip": "Standard free-for-all Deathmatch.", + "description": "Standard free-for-all deathmatch.\n\nTimeLimit : %TimeLimit% minutes\nMaximum players : %MaxPlayers%", + "mapPrefixes": [], + "maxMapsInList": 16, + "epicMaps": "/Game/RestrictedAssets/Maps/DM-Outpost23,/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/DM-Underland,/Game/EpicInternal/Lea/DM-Lea,/Game/EpicInternal/Unsaved/DM-Unsaved,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/EpicInternal/Batrankus/DM-Batrankus,/Game/RestrictedAssets/Maps/DM-BioTower,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill", + "customMapList": [], + "maxPlayers": 6, + "maxTeamCount": -1, + "maxTeamSize": -1, + "maxPartySize": 5, + "displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_DM.GB_DM'", + "gameMode": "/Script/UnrealTournament.UTDMGameMode", + "gameOptions": "?TimeLimit=10?GoalScore=0", + "requiredPackages": [], + "bTeamGame": false, + "bCompetitiveMatch": false, + "optionFlags": 65535, + "bHideFromUI": true, + "epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/0-DisableDuel.json b/files/rulesets/0-DisableDuel.json new file mode 100644 index 0000000..082d3b5 --- /dev/null +++ b/files/rulesets/0-DisableDuel.json @@ -0,0 +1,27 @@ +{ + "uniqueTag": "DUEL", + "categories": [ + "Competitive" + ], + "title": "Duel", + "toolTip": "One vs one test of deathmatch skill.", + "description": "One vs one test of deathmatch skill.\n\nTimeLimit : %timelimit% minutes\nMaximum players: %maxplayers%", + "mapPrefixes": [], + "maxMapsInList": 16, + "epicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/RestrictedAssets/Maps/DM-Underland,/Game/EpicInternal/Lea/DM-Lea,/Game/EpicInternal/Unsaved/DM-Unsaved,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/EpicInternal/Batrankus/DM-Batrankus,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest", + "defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "customMapList": [], + "maxPlayers": 2, + "maxTeamCount": 2, + "maxTeamSize": 1, + "maxPartySize": 1, + "displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'", + "gameMode": "/Script/UnrealTournament.UTDuelGame", + "gameOptions": "?TimeLimit=10?GoalScore=0", + "requiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": true, + "optionFlags": 65535, + "bHideFromUI": true, + "epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/0-DisableFlagRun.json b/files/rulesets/0-DisableFlagRun.json new file mode 100644 index 0000000..6ca14a8 --- /dev/null +++ b/files/rulesets/0-DisableFlagRun.json @@ -0,0 +1,27 @@ +{ + "uniqueTag": "FlagRun", + "categories": [ + "Featured" + ], + "title": "Blitz", + "toolTip": "Attackers must deliver their flag to the enemy base.", + "description": "Blitz.\nMaximum players : %maxplayers%", + "mapPrefixes": [], + "maxMapsInList": 16, + "epicMaps": "/Game/RestrictedAssets/Maps/WIP/FR-Fort,/Game/RestrictedAssets/Maps/WIP/FR-MeltDown,/Game/RestrictedAssets/Maps/WIP/FR-Loh", + "defaultMap": "", + "customMapList": [], + "maxPlayers": 10, + "maxTeamCount": 0, + "maxTeamSize": 0, + "maxPartySize": 0, + "displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'", + "gameMode": "/Script/UnrealTournament.UTFlagRunGame", + "gameOptions": "", + "requiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": false, + "optionFlags": 65535, + "bHideFromUI": true, + "epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/0-DisableICTF.json b/files/rulesets/0-DisableICTF.json new file mode 100644 index 0000000..6261a08 --- /dev/null +++ b/files/rulesets/0-DisableICTF.json @@ -0,0 +1,27 @@ +{ + "uniqueTag": "iCTF", + "categories": [ + "Instagib" + ], + "title": "Instagib CTF", + "toolTip": "Instagib CTF", + "description": "Capture the Flag with Instagib rifles.\n\nMutators : Instagib\nTimeLimit : %timelimit% minutes with halftime\nMercy Rule : On\nMaximum players : %maxplayers%", + "mapPrefixes": [], + "maxMapsInList": 16, + "epicMaps": "/Game/RestrictedAssets/Maps/CTF-TitanPass,/Game/RestrictedAssets/Maps/CTF-Face,/Game/EpicInternal/Pistola/CTF-Pistola,/Game/EpicInternal/Polaris/CTF-Polaris,/Game/RestrictedAssets/Maps/WIP/CTF-Blank,/Game/RestrictedAssets/Maps/WIP/CTF-BigRock,/Game/RestrictedAssets/Maps/WIP/CTF-Volcano,/Game/RestrictedAssets/Maps/WIP/CTF-Quick,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza", + "defaultMap": "/Game/RestrictedAssets/Maps/CTF-TitanPass", + "customMapList": [], + "maxPlayers": 20, + "maxTeamCount": 2, + "maxTeamSize": 5, + "maxPartySize": 5, + "displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_InstagibCTF.GB_InstagibCTF'", + "gameMode": "/Script/UnrealTournament.UTCTFGameMode", + "gameOptions": "?TimeLimit=20?GoalScore=0?Mutator=Instagib", + "requiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": false, + "optionFlags": 65535, + "bHideFromUI": true, + "epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/0-DisableShowdown.json b/files/rulesets/0-DisableShowdown.json new file mode 100644 index 0000000..bcfdee2 --- /dev/null +++ b/files/rulesets/0-DisableShowdown.json @@ -0,0 +1,27 @@ +{ + "uniqueTag": "TEAMSHOWDOWN", + "categories": [ + "Competitive" + ], + "title": "Showdown", + "toolTip": "Red versus blue team showdown.", + "description": "Red versus blue team showdown.\n\nTimeLimit : %timelimit% minute rounds\nScoring : First to %goalscore% wins\nMaximum players: %maxplayers%", + "mapPrefixes": [], + "maxMapsInList": 16, + "epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/DM-Underland,/Game/EpicInternal/Unsaved/DM-Unsaved,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/EpicInternal/Batrankus/DM-Batrankus,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/RestrictedAssets/Maps/WIP/DM-Solo", + "defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill", + "customMapList": [], + "maxPlayers": 6, + "maxTeamCount": 2, + "maxTeamSize": 3, + "maxPartySize": 3, + "displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'", + "gameMode": "/Script/UnrealTournament.UTTeamShowdownGame", + "gameOptions": "?TimeLimit=2?GoalScore=5", + "requiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": false, + "optionFlags": 65535, + "bHideFromUI": true, + "epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/0-DisableSiege.json b/files/rulesets/0-DisableSiege.json new file mode 100644 index 0000000..50660fd --- /dev/null +++ b/files/rulesets/0-DisableSiege.json @@ -0,0 +1,27 @@ +{ + "uniqueTag": "Siege", + "categories": [ + "MyCustom" + ], + "title": "Siege", + "toolTip": "Prototype PVE mode. Defend your base against hordes of incoming enemies trying to deliver their flag.", + "description": "PROTOTYPE PVE mode. Defend your base against hordes of incoming enemies trying to deliver their flag..\nMaximum players : %maxplayers%", + "mapPrefixes": [], + "maxMapsInList": 16, + "epicMaps": "/Game/RestrictedAssets/Maps/WIP/FR-Fort,/Game/RestrictedAssets/Maps/WIP/FR-MeltDown,/Game/RestrictedAssets/Maps/WIP/FR-Loh", + "defaultMap": "", + "customMapList": [], + "maxPlayers": 5, + "maxTeamCount": 0, + "maxTeamSize": 0, + "maxPartySize": 0, + "displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'", + "gameMode": "/Script/UnrealTournament.UTFlagRunPvEGame", + "gameOptions": "", + "requiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": false, + "optionFlags": 5, + "bHideFromUI": true, + "epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/0-DisableTDM.json b/files/rulesets/0-DisableTDM.json new file mode 100644 index 0000000..ed175e5 --- /dev/null +++ b/files/rulesets/0-DisableTDM.json @@ -0,0 +1,27 @@ +{ + "uniqueTag": "TDM", + "categories": [ + "Classic" + ], + "title": "Team Deathmatch", + "toolTip": "Red versus blue team deathmatch.", + "description": "Red versus blue team deathmatch.\n\nTimeLimit : %timelimit% minutes\nMaximum players: %maxplayers%", + "mapPrefixes": [], + "maxMapsInList": 16, + "epicMaps": "/Game/RestrictedAssets/Maps/DM-Outpost23,/Game/RestrictedAssets/Maps/DM-Underland,/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Unsaved/DM-Unsaved,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/EpicInternal/Batrankus/DM-Batrankus,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill", + "customMapList": [], + "maxPlayers": 10, + "maxTeamCount": 2, + "maxTeamSize": 5, + "maxPartySize": 5, + "displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'", + "gameMode": "/Script/UnrealTournament.UTTeamDMGameMode", + "gameOptions": "?TimeLimit=20?GoalScore=0", + "requiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": false, + "optionFlags": 65535, + "bHideFromUI": true, + "epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/0-Elim-5v5-NOGL.json b/files/rulesets/0-Elim-5v5-NOGL.json new file mode 100644 index 0000000..333a023 --- /dev/null +++ b/files/rulesets/0-Elim-5v5-NOGL.json @@ -0,0 +1,63 @@ +{ +"uniqueTag" : "Elim10", +"categories" : [ + "Elim" +], +"title" : "Elim 5v5 noGL", +"toolTip" : "ProMode, GL replaced by Bio", +"description": "Absolute Elimination, with grenade launchers DISABLED (DEFAULT)\n\nMutators: ProMode, TeamSkins, WeaponSkins, HitSounds, Kickvoting\nOptions: MaxPlayers=10, FriendlyFire=OFF\nGrenade Launcher: OFF", +"mapPrefixes" : [], +"maxMapsInList" : 0, +"quickPlayMaps" : [ ], + "epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill", + "customMapList": [], + "maxPlayers": 10, + "maxTeamCount": 2, +"customMapList" : [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Hack01", + "/Game/Domination/Maps/DM-Seraphim", + "/Game/GrendelKeep/DM-Grendelkeep_Shell", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-3/DM-AncientLost_v2i", + "/Game/Maps/DM-Antalus", + "/Game/Maps/DM-Blaster-v16", + "/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a", + "/Game/Maps/DM-Corrugation-UT2004", + "/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/DM-Cheops-UT4", + "/Game/RestrictedAssets/Maps/WIP/Cr4zy/DM-Edge_03", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7", + "/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1", + "/Game/Signify/DM-Signify", + "/Game/Under/DM-Over", + "/Game/Under/DM-Under-LE", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A", +], +"maxPlayers" : 10, +"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'", +"gameMode": "/Game/ALTS/Elimination_113.Elimination_113_C", +"gameOptions": "?MaxPlayers=10?TimeLimit=99?GoalScore=10?ignoreidle=1?Difficulty=8?botfill=2?WTR=/Game/ProMode/Weapons/Pro_GrenadeLauncher.Pro_GrenadeLauncher_C:None?mutator=ProMode,MutTeamskins,MutHitsounds,WeaponReplacement,WeaponSkins,Global_StatSQL-v2,MutKickVoting?", +"requiredPackages" : [ + "/Game/ALTS/Elimination_113.Elimination_113_C-WindowsNoEditor", + "MutHitsounds", + "ProMode", + "ProMovement", + "ProWeapons", + "MutKickVoting", + "WeaponSkins", + "MutTeamskins" +], +"bTeamGame" : false, +"bCompetitiveMatch" : false, +"bHideFromUI" : false +}, + diff --git a/files/rulesets/0-Elim-5v5-ProOff.json b/files/rulesets/0-Elim-5v5-ProOff.json new file mode 100644 index 0000000..e2f0941 --- /dev/null +++ b/files/rulesets/0-Elim-5v5-ProOff.json @@ -0,0 +1,60 @@ +{ +"uniqueTag" : "Elim10ProOFF", +"categories" : [ + "Elim" +], +"title" : "Elim 5v5 Vanilla", +"toolTip" : "Absolute Elimination w/ unmodified guns and movement", +"description": "Absolute Elimination, slow weapon switch\n\nMutators: TeamSkins, WeaponSkins, HitSounds, Kickvoting\nOptions: MaxPlayers=10, FriendlyFire=OFF\nGrenade Launcher: ON", +"mapPrefixes" : [], +"maxMapsInList" : 0, +"quickPlayMaps" : [ ], + "epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill", + "customMapList": [], + "maxPlayers": 10, + "maxTeamCount": 2, +"customMapList" : [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Hack01", + "/Game/Domination/Maps/DM-Seraphim", + "/Game/GrendelKeep/DM-Grendelkeep_Shell", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-3/DM-AncientLost_v2i", + "/Game/Maps/DM-Antalus", + "/Game/Maps/DM-Blaster-v16", + "/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a", + "/Game/Maps/DM-Corrugation-UT2004", + "/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/DM-Cheops-UT4", + "/Game/RestrictedAssets/Maps/WIP/Cr4zy/DM-Edge_03", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7", + "/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1", + "/Game/Signify/DM-Signify", + "/Game/Under/DM-Over", + "/Game/Under/DM-Under-LE", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A" +], +"maxPlayers" : 10, +"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'", +"gameMode" : "/Game/ALTS/Elimination_113.Elimination_113_C", +"gameOptions" : "?MaxPlayers=10?TimeLimit=99?GoalScore=10?BalanceTeams=true?ignoreidle=1?Difficulty=8?botfill=2?mutator=MutTeamskins,MutHitsounds,WeaponSkins,MutKickVoting?ForceNoBots=1?WTR=/Game/RestrictedAssets/Weapons/GrenadeLauncher/BP_GrenadeLauncher.BP_GrenadeLauncher_C:/Game/RestrictedAssets/Weapons/BioRifle/BP_BioRifle.BP_BioRifle_C", +"requiredPackages" : [ + "/Game/ALTS/Elimination_113.Elimination_113_C-WindowsNoEditor", + "MutHitsounds", + "MutKickVoting", + "WeaponSkins", + "MutTeamskins" +], +"bTeamGame" : false, +"bCompetitiveMatch" : false, +"bHideFromUI" : false +}, + diff --git a/files/rulesets/0-Elim-5v5-UTPlus.json b/files/rulesets/0-Elim-5v5-UTPlus.json new file mode 100644 index 0000000..0d0bdb9 --- /dev/null +++ b/files/rulesets/0-Elim-5v5-UTPlus.json @@ -0,0 +1,62 @@ +{ +"uniqueTag" : "Elim10UTP", +"categories" : [ + "Elim" +], +"title" : "Elim 5v5 UT+", +"toolTip" : "Absolute Elimination w/ UTPlus and GL replaced by Bio", +"description": "Absolute Elimination, UT+ and disabled GL\n\nMutators: UT+, TeamSkins, WeaponSkins, HitSounds, Kickvoting\nOptions: MaxPlayers=10, FriendlyFire=OFF\nGrenade Launcher: OFF", +"mapPrefixes" : [], +"maxMapsInList" : 0, +"quickPlayMaps" : [ ], + "epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill", + "customMapList": [], + "maxPlayers": 10, + "maxTeamCount": 2, +"customMapList" : [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Hack01", + "/Game/Domination/Maps/DM-Seraphim", + "/Game/GrendelKeep/DM-Grendelkeep_Shell", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-3/DM-AncientLost_v2i", + "/Game/Maps/DM-Antalus", + "/Game/Maps/DM-Blaster-v16", + "/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a", + "/Game/Maps/DM-Corrugation-UT2004", + "/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/DM-Cheops-UT4", + "/Game/RestrictedAssets/Maps/WIP/Cr4zy/DM-Edge_03", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7", + "/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1", + "/Game/Signify/DM-Signify", + "/Game/Under/DM-Over", + "/Game/Under/DM-Under-LE", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A" +], +"maxPlayers" : 10, +"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'", +"gameMode": "/Game/ALTS/Elimination_113.Elimination_113_C", +"gameOptions": "?MaxPlayers=10?TimeLimit=99?GoalScore=10?ignoreidle=1?Difficulty=8?botfill=2?WTR=/Game/UT+/UTPlus/UT+GrenadeLauncher.UT+GrenadeLauncher_C:None?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponReplacement,WeaponSkins,Global_StatSQL-v2,MutKickVoting", +"requiredPackages" : [ + "/Game/ALTS/Elimination_113.Elimination_113_C-WindowsNoEditor", + "UTPlus", + "UTPlusMovement", + "MutHitsounds", + "MutKickVoting", + "WeaponSkins", + "MutTeamskins" +], +"bTeamGame" : false, +"bCompetitiveMatch" : false, +"bHideFromUI" : false +}, + diff --git a/files/rulesets/0-Elim-5v5-rFF.json b/files/rulesets/0-Elim-5v5-rFF.json new file mode 100644 index 0000000..a709494 --- /dev/null +++ b/files/rulesets/0-Elim-5v5-rFF.json @@ -0,0 +1,62 @@ +{ +"uniqueTag" : "Elim10rFF", +"categories" : [ + "Elim" +], +"title" : "Elim 5v5 rFF", +"toolTip" : "Absolute Elimination, with Reverse-Friendly Fire", +"description": "Absolute Elimination, with Reverse Friendly-Fire\n\nMutators: UT+, TeamSkins, WeaponSkins, HitSounds, Kickvoting, Reverse-FriendlyFire\nOptions: MaxPlayers=10, FriendlyFire=ON\nGrenade Launcher: OFF", +"mapPrefixes" : [], +"maxMapsInList" : 0, +"quickPlayMaps" : [ ], + "epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill", + "customMapList": [], + "maxPlayers": 10, + "maxTeamCount": 2, +"customMapList" : [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Hack01", + "/Game/Domination/Maps/DM-Seraphim", + "/Game/GrendelKeep/DM-Grendelkeep_Shell", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-3/DM-AncientLost_v2i", + "/Game/Maps/DM-Antalus", + "/Game/Maps/DM-Blaster-v16", + "/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a", + "/Game/Maps/DM-Corrugation-UT2004", + "/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/DM-Cheops-UT4", + "/Game/RestrictedAssets/Maps/WIP/Cr4zy/DM-Edge_03", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7", + "/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1", + "/Game/Signify/DM-Signify", + "/Game/Under/DM-Over", + "/Game/Under/DM-Under-LE", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A" +], +"maxPlayers" : 10, +"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'", +"gameMode": "/Game/ALTS/Elimination_113.Elimination_113_C", +"gameOptions": "?MaxPlayers=10?TimeLimit=99?GoalScore=10?ignoreidle=1?botfill=2?Difficulty=8?WTR=/Game/ProMode/Weapons/Pro_GrenadeLauncher.Pro_GrenadeLauncher_C:None?mutator=UTPlus,UTPlusMovement,MutTeamskins,ReverseFF,MutHitsounds,WeaponReplacement,WeaponSkins,Global_StatSQL-v2,MutKickVoting", +"requiredPackages" : [ + "/Game/ALTS/Elimination_113.Elimination_113_C-WindowsNoEditor", + "MutTeamskins", + "MutHitsounds", + "ReverseFF", + "WeaponSkins", + "UTPlus", + "UTPlusMovement" +], +"bTeamGame" : false, +"bCompetitiveMatch" : false, +"bHideFromUI" : false +}, + diff --git a/files/rulesets/0-Elim-5v5.json b/files/rulesets/0-Elim-5v5.json new file mode 100644 index 0000000..6e39bc1 --- /dev/null +++ b/files/rulesets/0-Elim-5v5.json @@ -0,0 +1,62 @@ +{ +"uniqueTag" : "Elim10NoGL", +"categories" : [ + "Elim" +], +"title" : "Elim 5v5 GL", +"toolTip" : "Absolute Elimination, ProMode w/ GL", +"description": "Absolute Elimination, with grenade launchers ENABLED\n\nMutators: ProMode, TeamSkins, WeaponSkins, HitSounds, Kickvoting\nOptions: MaxPlayers=10, FriendlyFire=OFF\nGrenade Launcher: ON", +"mapPrefixes" : [], +"maxMapsInList" : 0, +"quickPlayMaps" : [ ], + "epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill", + "customMapList": [], + "maxPlayers": 10, + "maxTeamCount": 2, +"customMapList" : [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Hack01", + "/Game/Domination/Maps/DM-Seraphim", + "/Game/GrendelKeep/DM-Grendelkeep_Shell", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-3/DM-AncientLost_v2i", + "/Game/Maps/DM-Antalus", + "/Game/Maps/DM-Blaster-v16", + "/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a", + "/Game/Maps/DM-Corrugation-UT2004", + "/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/DM-Cheops-UT4", + "/Game/RestrictedAssets/Maps/WIP/Cr4zy/DM-Edge_03", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7", + "/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1", + "/Game/Signify/DM-Signify", + "/Game/Under/DM-Over", + "/Game/Under/DM-Under-LE", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A" +], +"maxPlayers" : 10, +"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'", +"gameMode" : "/Game/ALTS/Elimination_113.Elimination_113_C", +"gameOptions" : "?MaxPlayers=10?TimeLimit=99?GoalScore=10?botfill=2?Difficulty=8?BalanceTeams=true?ignoreidle=1?mutator=MutHitsounds,ProMode,MutKickVoting,WeaponSkins,MutTeamskins", +"requiredPackages" : [ + "/Game/ALTS/Elimination_113.Elimination_113_C-WindowsNoEditor", + "MutHitsounds", + "ProMovement", + "ProWeapons", + "MutKickVoting", + "WeaponSkins", + "MutTeamskins" +], +"bTeamGame" : false, +"bCompetitiveMatch" : false, +"bHideFromUI" : false +}, + diff --git a/files/rulesets/1-Instagib-ICTF.json b/files/rulesets/1-Instagib-ICTF.json new file mode 100644 index 0000000..8e6dcac --- /dev/null +++ b/files/rulesets/1-Instagib-ICTF.json @@ -0,0 +1,75 @@ +{ +"uniqueTag": "myiCTF", +"categories": [ + "Gib" +], +"title": "Instagib CTF", +"toolTip": "Instagib CTF", +"description": "One-click kills, Capture the Flag\n\nMutators: Instagib, TeamSkins, HitSounds\nOptions: Translocator=OFF", +"mapPrefixes": [], +"maxMapsInList": 0, +"epicMaps": "/Game/RestrictedAssets/Maps/WIP/CTF-Blank,/Game/RestrictedAssets/Maps/WIP/CTF-Quick,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza", +"defaultMap": "/Game/Maps/CTF-w00tabulousFixed-UT99/CTF-W00t-R3M2", +"customMapList": [ + "/Game/CTF-Joust/CTF-Joust-v18", + "/Game/Deaod/CTF-FP-Anfractous2-PRO", + "/Game/Laambo/Maps/CTF-AW-CastleCourtYard-v7", + "/Game/Laambo/Maps/CTFMaps/CTF-AW-IDKyetMap-v6", + "/Game/Laambo/Maps/CTFMaps/CTF-AW-StonedFace-v1", + "/Game/Laambo/Maps/CTFMaps/CTF-AW-WTFisThis-v2", + "/Game/Laambo/Maps/TestMaps/CTF-AW-MeshingAround2-v4", + "/Game/Laambo/Maps/thePit/CTF-AW-thePit-v9", + "/Game/Maps/CTF-Dynex/CTF-Dynex-WIP6c", + "/Game/Maps/CTF-Dynex/CTF-Dynex-vb", + "/Game/Maps/CTF-w00tabulousFixed-UT99/CTF-W00t-R3M2", + "/Game/Maps/iCTF-SprintaLE14-UT99/CTF-Sprinta-R3M2", + "/Game/RestrictedAssets/Maps/CTF-Command-R3M2", + "/Game/RestrictedAssets/Maps/CTF-Klondike-R3M2", + "/Game/RestrictedAssets/Maps/Test/CTF-PryXon-by-WK-G", + "/Game/RestrictedAssets/Maps/Test/CTF-Revenge-v2-UT99-by-WK", + "/Game/RestrictedAssets/Maps/WIP/CTF-1on1-Hourglass/CTF-1on1-Hourglass", + "/Game/RestrictedAssets/Maps/WIP/CTF-Access-R3", + "/Game/RestrictedAssets/Maps/WIP/CTF-Acrony-R3M/CTF-Acrony-R3M", + "/Game/RestrictedAssets/Maps/WIP/CTF-Anfractuous2-UT2004/CTF-Anfractuous-v3", + "/Game/RestrictedAssets/Maps/WIP/CTF-Bleak-CE100-UT99/CTF-Bleak-v4", + "/Game/RestrictedAssets/Maps/WIP/CTF-BleakLE14-UT99/CTF-Bleak-R3M2", + "/Game/RestrictedAssets/Maps/WIP/CTF-BrokenLimitsCB6-UT99/CTF-BrokenLimits-R3M2", + "/Game/RestrictedAssets/Maps/WIP/CTF-CheckMate-R2", + "/Game/RestrictedAssets/Maps/WIP/CTF-Dam", + "/Game/RestrictedAssets/Maps/WIP/CTF-Drunklet-PRO2-UT2004/CTF-Drunklet-PRO2", + "/Game/RestrictedAssets/Maps/WIP/CTF-Fragtion", + "/Game/RestrictedAssets/Maps/WIP/CTF-Fragtion-R9", + "/Game/RestrictedAssets/Maps/WIP/CTF-GrudgeLE14-UT99/CTF-Grudge-R3M", + "/Game/RestrictedAssets/Maps/WIP/CTF-Lavafury", + "/Game/RestrictedAssets/Maps/WIP/CTF-OverFlow/CTF-OverFlow-R3M6", + "/Game/RestrictedAssets/Maps/WIP/CTF-Rankin-PRO-UT2004/CTF-Rankin-PRO2", + "/Game/RestrictedAssets/Maps/WIP/CTF-Switchback-PRO", + "/Game/RestrictedAssets/Maps/WIP/CTF-Switchback-v2", + "/Game/RestrictedAssets/Maps/WIP/CTF-Turbo-UT3/CTF-Turbo-v3", + "/Game/RestrictedAssets/Maps/WIP/CTF-UCMP4-Talya-UT2004/CTF-Talya-v6", + "/Game/RestrictedAssets/Maps/WIP/CTF-Ultra-UT3/CTF-Ultra-v1", + "/Game/RestrictedAssets/Maps/WIP/CTF-Zest-R5", + "/Game/RestrictedAssets/Maps/WIP/iCTF-Duku-R3M-v1/CTF-Duku-R3M4", + "/Game/RestrictedAssets/Maps/WIP/iCTF-MesmerizeLE14-UT99/CTF-Mesmerize-R3M", + "/Game/Supsun/CTF-FD", + "/Game/UT99/Maps/CTF-Denise", + "/Game/UT99/Maps/CTF-RGI-EliteArenaV2", + "/Game/UT99/Maps/CTF-RGI-Romra", + "/Game/UT99/Maps/CTF-RGI-ThornsV2", + "/Game/UTzoneContent/Maps/Donzi/CTF-Bloxeh", + "/Game/UnrealPUGs/UnrealPUGs/Maps/CTF-LiandriDocks-UPUGs" +], +"maxPlayers": 20, +"maxTeamCount": 2, +"maxTeamSize": 5, +"maxPartySize": 5, +"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'", +"gameMode": "/Game/Instagib/iCTF_GameMode_OT.iCTF_GameMode_OT_C", +"gameOptions": "?TimeLimit=15?GoalScore=0?botfill=2?ignoreidle=1?Mutator=MutTeamskins,MutHitsounds", +"requiredPackages": [], +"bTeamGame": true, +"bCompetitiveMatch": false, +"optionFlags": 65535, +"bHideFromUI": false, +"epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/1-Instagib-xTDM.json b/files/rulesets/1-Instagib-xTDM.json new file mode 100644 index 0000000..ae12dd9 --- /dev/null +++ b/files/rulesets/1-Instagib-xTDM.json @@ -0,0 +1,71 @@ +{ +"uniqueTag": "xTDM Instagib", +"categories": [ + "Gib" +], +"title": "Instagib xTDM", +"toolTip": "Instagib 4x Team Deathmatch", +"description": "Four-Team Instagib Deathmatch (xTDM)\n\nMutators: Instagib, ProMovement, TeamSkins\nOptions: Translocator=OFF", +"mapPrefixes": [], +"maxMapsInList": 0, +"epicMaps": "/Game/RestrictedAssets/Maps/DM-Outpost23,/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/DM-Underland,/Game/EpicInternal/Lea/DM-Lea,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/RestrictedAssets/Maps/DM-BioTower,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", +"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill", +"customMapList": [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Campgrounds-PRO-UNG", + "/Game/Domination/Maps/DM-Seraphim", + "/Game/GrendelKeep/DM-Grendelkeep_Shell", + "/Game/Laambo/Maps/CampThunder/DM-AW-CampThunderArena-v16", + "/Game/Laambo/Maps/DM-AW-CraterLakeArena-v7", + "/Game/Laambo/Maps/DM-AW-IDKyet-v14", + "/Game/Laambo/Maps/FightArena/DM-AW-FightArena-v14", + "/Game/Laambo/Maps/HayRide/DM-AW-HayRideNights-v12", + "/Game/Laambo/Maps/HolyShit/DM-AW-HolyShit-v3", + "/Game/Laambo/Maps/KnockOut/DM-AW-SkyArenaTest-v1", + "/Game/Laambo/Maps/ToonCastle/DM-AW-ToonCastleArena-v11", + "/Game/Laambo/Maps/UnrealBall/DM-AW-ClanArena-v7", + "/Game/Laambo/Maps/ZarkMaps/DM-AW-GiantTreeTest-v8", + "/Game/Laambo/Maps/ZarkMaps/DM-AW-RockScapeTestMap-v4", + "/Game/Laambo/Maps/thePit/DM-AW-thePit-v6", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-3/DM-AncientLost_v2i", + "/Game/Maps/DM-Antalus", + "/Game/Maps/DM-Blaster-v16", + "/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a", + "/Game/Maps/DM-Erase/DM-EraseV2_a03", + "/Game/RestrictedAssets/Maps/DM-Cheops-UT4", + "/Game/Maps/DM-Corrugation-UT2004", + "/Game/Maps/DM-DE-Grendelkeep-UT2004", + "/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/DM-Cheops-UT4", + "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE", + "/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1", + "/Game/Signify/DM-Signify", + "/Game/Under/DM-Under-LE", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A", + "/Game/halfblocked/halloweenarena/DM-AW-HalloweenArena-Redux12", + "/Game/maps/DM-Erase_Beta/DM-Erase_B9", +], +"maxPlayers": 16, +"maxTeamCount": -1, +"maxTeamSize": -1, +"maxPartySize": 5, +"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'", +"gameMode": "/Game/xTDM/v014/xTDM_v014_GameMode.xTDM_v014_GameMode_C", +"gameOptions": "?TimeLimit=10?GoalScore=100?ignoreidle=1?Mutator=Instagib,ProMovement,MutTeamskins", +"requiredPackages": [], +"bTeamGame": false, +"bCompetitiveMatch": false, +"optionFlags": 65535, +"bHideFromUI": false, +"epicForceUIVisibility": 0 +}, + diff --git a/files/rulesets/2-Trials-BunnyTrack-0.json b/files/rulesets/2-Trials-BunnyTrack-0.json new file mode 100644 index 0000000..fc70c59 --- /dev/null +++ b/files/rulesets/2-Trials-BunnyTrack-0.json @@ -0,0 +1,52 @@ +{ +"uniqueTag" : "Bunnytrack-All", +"categories" : [ +"BunnyTrack" +], +"title" : "BunnyTrack (All)", +"toolTip" : "Competitive BT - complete maplist", +"description" : "Competitive BunnyTrack\n\n*Under Construction*\n\nNote: Times don't save in the upstream server (yet?)", +"mapPrefixes" : [ ], +"maxMapsInList" : 0, +"quickPlayMaps" : [ ], +"customMapList" : [ + "/Game/BT-Planets_V3", + "/Game/BT-Rumble_V4", + "/Game/BT/BT-HOPLite", + "/Game/BT/BT-HOPfinal", + "/Game/BTmap/BT-Oneshot", + "/Game/Maps/BT-2019/BT-Happy2019_v2", + "/Game/Maps/BT-2P-DualRun/BT-2P-DualRun", + "/Game/Maps/BT-Airrace/BT-AirRace_V5", + "/Game/Maps/BT-ChatoKeK/BT-ChatoKeK", + "/Game/Maps/BT-CouilleNoire/BT-CN", + "/Game/Maps/BT-Crack/BT-Crack_v1", + "/Game/Maps/BT-GBR/BT-GBR_V2", + "/Game/Maps/BT-Indus/BT-Indus_v6", + "/Game/Maps/BT-Joust/BT-Joust_v2", + "/Game/Maps/BT-LTTT/BT-LTTT", + "/Game/Maps/BT-LavaKEK/BT-LavaKEK_v1", + "/Game/Maps/BT-RadicalTrials1_v5", + "/Game/Maps/BT-RadicalTrials2_v4", + "/Game/Maps/BT-Radioactive/BT-Radioactive_v1", + "/Game/Maps/BT-Scoobmap/BT-ScoobTest-V3", + "/Game/Maps/BT-StarLab/BT-StarLab_v1", + "/Game/Maps/BT-Swampruins/BT-SwampRuins_v2", + "/Game/Maps/BT-TUTORIAL/BT-Welcome_v5", + "/Game/Maps/BT-youarelol/BT-youarelol_v2", + "/Game/MyContent/Maps/BT-TheEscape", + "/Game/My_Projects/BT_Maps/BT-Roaster/BT-Roaster", + "/Game/My_Projects/Maps/BT/BT_Osiris/BT-Osiris", + "/Game/RestrictedAssets/Maps/BT-Ancient_Halls", + "/Game/_Ransom/Maps/BT-Plinko/BT-Plinko", +], +"maxPlayers" : 16, +"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_InstagibCTF.GB_InstagibCTF'", +"gameMode" : "/Game/BT/Gamemode/BT_Game.BT_Game_C", +"gameOptions" : "?ForceNoBots=1?ignoreidle?BalanceTeams=0?MustBeReady=0?ignoreidle=1?MapVoteTime=300?TimeLimit=0?GoalScore=1", +"requiredPackages" : [ ], +"bTeamGame" : false, +"bCompetitiveMatch" : false, +"bHideFromUI" : false +}, + diff --git a/files/rulesets/2-Trials-BunnyTrack-1.json b/files/rulesets/2-Trials-BunnyTrack-1.json new file mode 100644 index 0000000..8b0bba8 --- /dev/null +++ b/files/rulesets/2-Trials-BunnyTrack-1.json @@ -0,0 +1,30 @@ +{ +"uniqueTag" : "Bunnytrack-Easy", +"categories" : [ +"BunnyTrack" +], +"title" : "BunnyTrack (I)", +"toolTip" : "Competitive BT - easier maplist", +"description" : "Competitive BunnyTrack\n\n*Under Construction*\n\nNote: Difficulty categorization is unofficial and only affects the map rotation.\nNote: Times don't save in the upstream server (yet?)", +"mapPrefixes" : [ ], +"maxMapsInList" : 0, +"quickPlayMaps" : [ ], +"customMapList" : [ + "/Game/Maps/BT-2P-DualRun/BT-2P-DualRun", + "/Game/Maps/BT-Airrace/BT-AirRace_V5", + "/Game/Maps/BT-GBR/BT-GBR_V2", + "/Game/Maps/BT-Radioactive/BT-Radioactive_v1", + "/Game/Maps/BT-StarLab/BT-StarLab_v1", + "/Game/Maps/BT-Swampruins/BT-SwampRuins_v2", + "/Game/Maps/BT-TUTORIAL/BT-Welcome_v5", + "/Game/MyContent/Maps/BT-TheEscape", +], +"maxPlayers" : 16, +"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_InstagibCTF.GB_InstagibCTF'", +"gameMode" : "/Game/BT/Gamemode/BT_Game.BT_Game_C", +"gameOptions" : "?ForceNoBots=1?ignoreidle?BalanceTeams=0?MustBeReady=0?ignoreidle=1?MapVoteTime=300?TimeLimit=0?GoalScore=1", +"requiredPackages" : [ ], +"bTeamGame" : false, +"bCompetitiveMatch" : false, +"bHideFromUI" : false +}, diff --git a/files/rulesets/2-Trials-BunnyTrack-2.json b/files/rulesets/2-Trials-BunnyTrack-2.json new file mode 100644 index 0000000..f88f4f2 --- /dev/null +++ b/files/rulesets/2-Trials-BunnyTrack-2.json @@ -0,0 +1,27 @@ +{ +"uniqueTag" : "Bunnytrack-Medium", +"categories" : [ +"BunnyTrack" +], +"title" : "BunnyTrack (II)", +"toolTip" : "Competitive BT - mediumer maplist", +"description" : "Competitive BunnyTrack\n\n*Under Construction*\n\nNote: Difficulty categorization is unofficial and only affects the map rotation.\nNote: Times don't save in the upstream server (yet?)", +"mapPrefixes" : [ ], +"maxMapsInList" : 0, +"quickPlayMaps" : [ ], +"customMapList" : [ + "/Game/BT-Rumble_V4", + "/Game/Maps/BT-LavaKEK/BT-LavaKEK_v1", + "/Game/Maps/BT-RadicalTrials1_v5", + "/Game/Maps/BT-RadicalTrials2_v4", + "/Game/MyContent/Maps/BT-TheEscape", +], +"maxPlayers" : 16, +"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_InstagibCTF.GB_InstagibCTF'", +"gameMode" : "/Game/BT/Gamemode/BT_Game.BT_Game_C", +"gameOptions" : "?ForceNoBots=1?BalanceTeams=0?MustBeReady=0?ignoreidle=1?MapVoteTime=300?TimeLimit=0?GoalScore=1", +"requiredPackages" : [ ], +"bTeamGame" : false, +"bCompetitiveMatch" : false, +"bHideFromUI" : false +}, diff --git a/files/rulesets/2-Trials-BunnyTrack-3.json b/files/rulesets/2-Trials-BunnyTrack-3.json new file mode 100644 index 0000000..efc6f81 --- /dev/null +++ b/files/rulesets/2-Trials-BunnyTrack-3.json @@ -0,0 +1,25 @@ +{ +"uniqueTag" : "Bunnytrack-Hard", +"categories" : [ +"BunnyTrack" +], +"title" : "BunnyTrack (III)", +"toolTip" : "Competitive BT - hardish maplist", +"description" : "Competitive BunnyTrack\n\n*Under Construction*\n\nNote: Difficulty categorization is unofficial and only affects the map rotation.\nNote: Times don't save in the upstream server (yet?)", +"mapPrefixes" : [ ], +"maxMapsInList" : 0, +"quickPlayMaps" : [ ], +"customMapList" : [ + "/Game/Maps/BT-Crack/BT-Crack_v1", + "/Game/Maps/BT-RadicalTrials1_v5", + "/Game/Maps/BT-RadicalTrials2_v4", +], +"maxPlayers" : 16, +"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_InstagibCTF.GB_InstagibCTF'", +"gameMode" : "/Game/BT/Gamemode/BT_Game.BT_Game_C", +"gameOptions" : "?ForceNoBots=1?BalanceTeams=0?MustBeReady=0?ignoreidle=1?MapVoteTime=300?TimeLimit=0?GoalScore=1", +"requiredPackages" : [ ], +"bTeamGame" : false, +"bCompetitiveMatch" : false, +"bHideFromUI" : false +}, diff --git a/files/rulesets/3-Duel-Beginner.json b/files/rulesets/3-Duel-Beginner.json new file mode 100644 index 0000000..0adc126 --- /dev/null +++ b/files/rulesets/3-Duel-Beginner.json @@ -0,0 +1,51 @@ +{ +"uniqueTag": "UTPlusDUELBeginner", +"categories": [ + "Duel" +], +"title": "Duel (Beginners)", +"toolTip": "Ultimate 1v1 test of deathmatch skill", +"description": "1v1 Duel with shield timers\n\nMutators: UT+, TeamSkins, WeaponSkins, HitSounds, CustomHUD\nOptions: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF, PickupTimers=ON", +"mapPrefixes": [], +"maxMapsInList": 0, +"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest", +"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", +"customMapList": [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Coma/Maps/DM-Coma_A015", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-Deep-03g", + "/Game/Maps/DM-Erase/DM-EraseV2_a03", + "/Game/Maps/DM-Fervor/DM-Fervor_V8", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2", + "/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7", + "/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A", + "/Game/maps/DM-Erase_Beta/DM-Erase_B9", + "/Game/Maps/DM-Ironic-UT2004" +], +"maxPlayers": 2, +"maxTeamCount": 2, +"maxTeamSize": 1, +"maxPartySize": 1, +"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'", +"gameMode" : "/Script/UnrealTournament.UTDuelGame", +"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?ForceNoBots=1?ForceRespawn=1?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,CustomHUD,WeaponReplacement?WTR=/Game/UT+/UTPlus/UT+GrenadeLauncher.UT+GrenadeLauncher_C:/Game/UT+/UTPlus/UT+BioRifle.UT+BioRifle_C?", +"requiredPackages" : [ + "CustomHUD", + "MutHitSounds", + "MutTeamSkins", + "WeaponSkins", + "UTPlus", + "UTPlusMovement" +], +"bTeamGame": true, +"bCompetitiveMatch": false, +"optionFlags": 65535, +"bHideFromUI": false, +"epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/3-Duel-ProMode-noGL.json b/files/rulesets/3-Duel-ProMode-noGL.json new file mode 100644 index 0000000..ed95461 --- /dev/null +++ b/files/rulesets/3-Duel-ProMode-noGL.json @@ -0,0 +1,52 @@ +{ +"uniqueTag": "MYDUELnogl", +"categories": [ + "Duel" +], +"title": "ProMode Duel noGL", +"toolTip": "Ultimate 1v1 test of deathmatch skill", +"description": "1v1 Duel (with ProMode Movement and Weapon Stats)\n\nMutators: ProMode, TeamSkins, WeaponSkins, HitSounds, CustomHUD\nOptions: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF*, PickupTimers=OFF", +"mapPrefixes": [], +"maxMapsInList": 0, +"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest", +"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", +"customMapList": [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Coma/Maps/DM-Coma_A015", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-Deep-03g", + "/Game/Maps/DM-Erase/DM-EraseV2_a03", + "/Game/Maps/DM-Fervor/DM-Fervor_V8", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2", + "/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7", + "/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A", + "/Game/maps/DM-Erase_Beta/DM-Erase_B9", + "/Game/Maps/DM-Ironic-UT2004" +], +"maxPlayers": 2, +"maxTeamCount": 2, +"maxTeamSize": 1, +"maxPartySize": 1, +"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'", +"gameMode" : "/Script/UnrealTournament.UTDuelGame", +"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?ForceNoBots=1?ForceRespawn=1?WTR=/Game/ProMode/Weapons/Pro_GrenadeLauncher.Pro_GrenadeLauncher_C:/Game/Proctf/Weapons/Proctf/Weapons/bp2_Orig_BioRifle.bp2_Orig_BioRifle_C?mutator=ProMode,MutHitsounds,MutTeamSkins,WeaponSkins,CustomHUD,NoPickupTimerMutator,WeaponReplacement", +"requiredPackages" : [ + "CustomHUD", + "MutHitSounds", + "MutTeamSkins", + "ProMovement", + "ProWeapons", + "WeaponSkins", + "NoPickupTimerMutator" +], +"bTeamGame": true, +"bCompetitiveMatch": false, +"optionFlags": 65535, +"bHideFromUI": false, +"epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/3-Duel-ProMode.json b/files/rulesets/3-Duel-ProMode.json new file mode 100644 index 0000000..ffe3f3d --- /dev/null +++ b/files/rulesets/3-Duel-ProMode.json @@ -0,0 +1,52 @@ +{ +"uniqueTag": "MYDUEL", +"categories": [ + "Duel" +], +"title": "ProMode Duel", +"toolTip": "Ultimate 1v1 test of deathmatch skill", +"description": "1v1 Duel (with ProMode Movement and Weapon Stats)\n\nMutators: ProMode, TeamSkins, WeaponSkins, HitSounds, CustomHUD\nOptions: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF*, PickupTimers=OFF", +"mapPrefixes": [], +"maxMapsInList": 0, +"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest", +"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", +"customMapList": [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Coma/Maps/DM-Coma_A015", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-Deep-03g", + "/Game/Maps/DM-Erase/DM-EraseV2_a03", + "/Game/Maps/DM-Fervor/DM-Fervor_V8", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2", + "/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7", + "/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A", + "/Game/maps/DM-Erase_Beta/DM-Erase_B9", + "/Game/Maps/DM-Ironic-UT2004" +], +"maxPlayers": 2, +"maxTeamCount": 2, +"maxTeamSize": 1, +"maxPartySize": 1, +"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'", +"gameMode" : "/Script/UnrealTournament.UTDuelGame", +"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?ForceNoBots=1?ForceRespawn=1?mutator=ProMovement,ProWeapons,MutHitsounds,MutTeamSkins,WeaponSkins,CustomHUD,NoPickupTimerMutator", +"requiredPackages" : [ + "CustomHUD", + "MutHitSounds", + "MutTeamSkins", + "ProMovement", + "ProWeapons", + "WeaponSkins", + "NoPickupTimerMutator" +], +"bTeamGame": true, +"bCompetitiveMatch": false, +"optionFlags": 65535, +"bHideFromUI": false, +"epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/3-Duel-UTplus-noGL.json b/files/rulesets/3-Duel-UTplus-noGL.json new file mode 100644 index 0000000..845c3c4 --- /dev/null +++ b/files/rulesets/3-Duel-UTplus-noGL.json @@ -0,0 +1,53 @@ +{ +"uniqueTag": "UTPlusDUELnogl", +"categories": [ + "Duel" +], +"title": "UT+ Duel noGL", +"toolTip": "Ultimate 1v1 test of deathmatch skill", +"description": "1v1 Duel (with UT+ Movement and Weapon Stats)\n\nMutators: UT+, TeamSkins, WeaponSkins, HitSounds, CustomHUD\nOptions: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF, PickupTimers=OFF", +"mapPrefixes": [], +"maxMapsInList": 0, +"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest", +"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", +"customMapList": [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Coma/Maps/DM-Coma_A015", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-Deep-03g", + "/Game/Maps/DM-Erase/DM-EraseV2_a03", + "/Game/Maps/DM-Fervor/DM-Fervor_V8", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2", + "/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7", + "/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A", + "/Game/maps/DM-Erase_Beta/DM-Erase_B9", + "/Game/Maps/DM-Ironic-UT2004" +], +"maxPlayers": 2, +"maxTeamCount": 2, +"maxTeamSize": 1, +"maxPartySize": 1, +"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'", +"gameMode" : "/Script/UnrealTournament.UTDuelGame", +"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?MaxSpecators=10?ForceNoBots=1?ForceRespawn=1?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,CustomHUD,NoPickupTimerMutator,WeaponReplacement?WTR=/Game/UT+/UTPlus/UT+GrenadeLauncher.UT+GrenadeLauncher_C:/Game/UT+/UTPlus/UT+BioRifle.UT+BioRifle_C?", +"requiredPackages" : [ + "CustomHUD", + "MutHitSounds", + "MutTeamskins", + "WeaponSkins", + "UTPlus", + "UTPlusMovement", + "NoPickupTimerMutator" +], +"bTeamGame": true, +"bCompetitiveMatch": false, +"optionFlags": 65535, +"bHideFromUI": false, +"minPlayersToStart": 2, +"epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/3-Duel-UTplus.json b/files/rulesets/3-Duel-UTplus.json new file mode 100644 index 0000000..e3c28da --- /dev/null +++ b/files/rulesets/3-Duel-UTplus.json @@ -0,0 +1,52 @@ +{ +"uniqueTag": "UTPlusDUEL", +"categories": [ + "Duel" +], +"title": "UT+ Duel", +"toolTip": "Ultimate 1v1 test of deathmatch skill", +"description": "1v1 Duel (with UT+ Movement and Weapon Stats)\n\nMutators: UT+, TeamSkins, WeaponSkins, HitSounds, CustomHUD\nOptions: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF, PickupTimers=OFF", +"mapPrefixes": [], +"maxMapsInList": 0, +"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest", +"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", +"customMapList": [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Coma/Maps/DM-Coma_A015", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-Deep-03g", + "/Game/Maps/DM-Erase/DM-EraseV2_a03", + "/Game/Maps/DM-Fervor/DM-Fervor_V8", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2", + "/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7", + "/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A", + "/Game/maps/DM-Erase_Beta/DM-Erase_B9", + "/Game/Maps/DM-Ironic-UT2004" +], +"maxPlayers": 2, +"maxTeamCount": 2, +"maxTeamSize": 1, +"maxPartySize": 1, +"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'", +"gameMode" : "/Script/UnrealTournament.UTDuelGame", +"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?ForceNoBots=1?ForceRespawn=1?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,CustomHUD,NoPickupTimerMutator", +"requiredPackages" : [ + "CustomHUD", + "MutHitSounds", + "MutTeamSkins", + "WeaponSkins", + "UTPlus", + "UTPlusMovement", + "NoPickupTimerMutator" +], +"bTeamGame": true, +"bCompetitiveMatch": false, +"optionFlags": 65535, +"bHideFromUI": false, +"epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/4-Weapons-Blitz.json b/files/rulesets/4-Weapons-Blitz.json new file mode 100644 index 0000000..e90e982 --- /dev/null +++ b/files/rulesets/4-Weapons-Blitz.json @@ -0,0 +1,58 @@ +{ +"uniqueTag": "MYBLITZ", +"categories": [ + "Weapons" +], +"title": "Blitz", +"toolTip": "Blitz Mode", +"description": "Blitz", +"description": "Blitz\n\nMutators: UT+, TeamSkins, WeaponSkins, HitSounds\nOptions: MaxPlayers=12, TimeLimit=20, WeaponStay=OFF, Translocator=ON\n\n*Under Construction*", +"mapPrefixes": [], +"maxMapsInList": 0, +"epicMaps": "", +"defaultMap": "", +"customMapList": [ + "/Game/FR-Farage", + "/Game/FR-Ozone", + "/Game/FR-Quarry", + "/Game/GSC/Maps/FR-Scrapyard", + "/Game/Maps/FR-Canyon/FR-CanyonWIP4", + "/Game/Maps/FR-CastleTest03", + "/Game/Maps/FR-ChocolateFactory/FR-ChocolateFactory", + "/Game/Maps/FR-ChocolateFactory/FR-FudgeFactory", + "/Game/Maps/FR-Foundry/FR-Foundry-WIP6", + "/Game/Maps/FR-Horus/FR-Horus_WIP02", + "/Game/Maps/FR-Nova/FR-Nova_CUP", + "/Game/Maps/FR-Nova/FR-Nova_WIP2", + "/Game/Maps/H27/FR-Morphine-Beta005", + "/Game/Maps/Sprint/FR-Sprint-Beta002", + "/Game/Mogno/FR-Chill/FR-Chill_V2", + "/Game/RestrictedAssets/Maps/FR-DormantCoast", + "/Game/RestrictedAssets/Maps/WIP/FR-Blackstone-UC", + "/Game/RestrictedAssets/Maps/WIP/FR-HighRoad-UC", + "/Game/dmshaft/FR-MeltDownpdv2019superior", + "/Game/fr_crescendo/FR-Crescendo", + "/Game/tidu/Maps/FR-Spacecadet_01" +], +"maxPlayers": 12, +"maxTeamCount": 2, +"maxTeamSize": 5, +"maxPartySize": 5, +"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'", +"gameMode": "/Script/UnrealTournament.UTCTFGameMode", +"gameOptions": "?BalanceTeams=false?TimeLimit=20?GoalScore=0?botfill=2?ignoreidle=1?mutator=MutHitsounds,UTPlus,UTPlusMovement,WeaponSkins,MutTeamskins,NoPickupTimerMutator,NoSpawnProtectionMutator", +"requiredPackages" : [ + "MutHitsounds", + "MutTeamskins", + "UTPlus", + "UTPlusMovement", + "WeaponSkins", + "NoPickupTimerMutator", + "NoSpawnProtectionMutator" +], +"bTeamGame": true, +"bCompetitiveMatch": false, +"optionFlags": 65535, +"bHideFromUI": false, +"epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/4-Weapons-CTF.json b/files/rulesets/4-Weapons-CTF.json new file mode 100644 index 0000000..36c1c05 --- /dev/null +++ b/files/rulesets/4-Weapons-CTF.json @@ -0,0 +1,58 @@ +{ +"uniqueTag": "CTF", +"categories": [ + "Weapons" +], +"title": "CTF", +"toolTip": "Capture the Flag", +"description": "CTF: UT+", +"description": "Capture the Flag\n\nMutators: UT+, TeamSkins, WeaponSkins, HitSounds\nOptions: MaxPlayers=12, TimeLimit=20, WeaponStay=OFF, Translocator=ON\n\n*Under Construction*", +"mapPrefixes": [], +"maxMapsInList": 0, +"epicMaps": "/Game/RestrictedAssets/Maps/WIP/CTF-Blank,/Game/RestrictedAssets/Maps/WIP/CTF-Quick,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza", +"defaultMap": "/Game/RestrictedAssets/Maps/WIP/CTF-Quick", +"customMapList": [ + "/Game/Anfractuous2/CTF-Anfractuous2_scaled", + "/Game/AreaN23/CTF-AreaN23", + "/Game/Azcanize/CTF-Azcanize", + "/Game/CTF-Shadow-Textured", + "/Game/Cynosure/CTF-Cynosure2", + "/Game/EpicInternal/Pistola/CTF-Pistola-Shell", + "/Game/GrendelKeep/CTF-Grendelkeep_shell", + "/Game/Maps/CTF-Archanastre-v5", + "/Game/Maps/CTF-VaultCity_FPS", + "/Game/Ranel/CTF-Ranel", + "/Game/RestrictedAssets/Maps/CTF-Polaris_Shellv2", + "/Game/RestrictedAssets/Maps/Pater/CTF-BollWerK_UT4", + "/Game/RestrictedAssets/Maps/Vengeance99/CTF-Vengeance_v06", + "/Game/RestrictedAssets/Maps/WIP/CTF-Bleak-CE100-UT99/CTF-Bleak-v4", + "/Game/RestrictedAssets/Maps/WIP/CTF-BleakLE14-UT99/CTF-Bleak-R3", + "/Game/RestrictedAssets/Maps/WIP/CTF-Gataka-SE/CTF-Gataka-SE-UT99", + "/Game/RestrictedAssets/Maps/WIP/CTF-Orbital-UT99/CTF-Orbital-SE-UT99_metal-4", + "/Game/Terra/CTF-Terra-v1", + "/Game/UTzoneContent/Maps/Donzi/CTF-Sprinta", + "/Game/Virility/CTF-Virility_CE" +], +"maxPlayers": 12, +"maxTeamCount": 2, +"maxTeamSize": 5, +"maxPartySize": 5, +"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'", +"gameMode": "/Script/UnrealTournament.UTCTFGameMode", +"gameOptions": "?MercyScore=5?TimeLimit=20?GoalScore=0?botfil=2?ignoreidle=1?mutator=MutHitsounds,UTPlus,UTPlusMovement,MutTeamSkins,WeaponSkins,NoPickupTimerMutator,NoSpawnProtectionMutator,MutCaptureTime", +"requiredPackages" : [ + "MutHitsounds", + "MutTeamskins", + "UTPlus", + "UTPlusMovement", + "WeaponSkins", + "NoPickupTimerMutator", + "NoSpawnProtectionMutator", + "MutCaptureTime" +], +"bTeamGame": true, +"bCompetitiveMatch": false, +"optionFlags": 65535, +"bHideFromUI": false, +"epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/4-Weapons-DM.json b/files/rulesets/4-Weapons-DM.json new file mode 100644 index 0000000..45e1fc7 --- /dev/null +++ b/files/rulesets/4-Weapons-DM.json @@ -0,0 +1,64 @@ +{ +"uniqueTag": "MYDEATHMATCH", +"categories": [ + "Weapons" +], +"title": "DM", +"toolTip": "Free-for-all Deathmatch", +"description": "Free for All Deathmatch, WeaponStay is ON\n\nMutators: UT+, TeamSkins, WeaponSkins, HitSounds\nOptions: MaxPlayers=10, TimeLimit=10, WeaponStay=ON", +"mapPrefixes": [], +"maxMapsInList": 0, +"epicMaps": "/Game/RestrictedAssets/Maps/DM-Outpost23,/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/DM-Underland,/Game/EpicInternal/Lea/DM-Lea,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/RestrictedAssets/Maps/DM-BioTower,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", +"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill", +"customMapList": [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Campgrounds-PRO-UNG", + "/Game/Domination/Maps/DM-Seraphim", + "/Game/GrendelKeep/DM-Grendelkeep_Shell", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-3/DM-AncientLost_v2i", + "/Game/Maps/DM-Antalus", + "/Game/Maps/DM-Blaster-v16", + "/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a", + "/Game/Maps/DM-Corrugation-UT2004", + "/Game/Maps/DM-DE-Grendelkeep-UT2004", + "/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/DM-Cheops-UT4", + "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2", + "/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7", + "/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1", + "/Game/Signify/DM-Signify", + "/Game/Under/DM-Under-LE", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A", + "/Game/maps/DM-Erase_Beta/DM-Erase_B9" +], +"maxPlayers": 12, +"maxTeamCount": -1, +"maxTeamSize": -1, +"maxPartySize": 5, +"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_DM.GB_DM'", +"gameMode": "/Script/UnrealTournament.UTDMGameMode", +"gameOptions": "?TimeLimit=10?GoalScore=0?ignoreidle=1?botfill=2?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,NoPickupTimerMutator,WeaponSkins,NoSpawnProtectionMutator", +"requiredPackages" : [ + "MutHitsounds", + "MutTeamskins", + "WeaponSkins", + "UTPlus", + "UTPlusMovement", + "NoPickupTimerMutator", + "NoSpawnProtectionMutator" +], +"bTeamGame": false, +"bCompetitiveMatch": false, +"optionFlags": 65535, +"bHideFromUI": false, +"epicForceUIVisibility": 0 +}, diff --git a/files/rulesets/4-Weapons-TDM.json b/files/rulesets/4-Weapons-TDM.json new file mode 100644 index 0000000..8ac91c4 --- /dev/null +++ b/files/rulesets/4-Weapons-TDM.json @@ -0,0 +1,65 @@ +{ +"uniqueTag": "MYTDM", +"categories": [ + "Weapons" +], +"title": "TDM", +"toolTip": "Red-vs-blue team deathmatch", +"description": "Team Deathmatch, WeaponStay is OFF\n\nMutators: UT+, TeamSkins, WeaponSkins, HitSounds\nOptions: MaxPlayers=12, TimeLimit=15, WeaponStay=OFF", +"mapPrefixes": [], +"maxMapsInList": 0, +"epicMaps": "/Game/RestrictedAssets/Maps/DM-Outpost23,/Game/RestrictedAssets/Maps/DM-Underland,/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", +"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill", +"customMapList": [ + "/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E", + "/Game/DM-Campgrounds-PRO-UNG", + "/Game/Domination/Maps/DM-Seraphim", + "/Game/GrendelKeep/DM-Grendelkeep_Shell", + "/Game/Maps/DM-1/DM-Pure_vrc_3", + "/Game/Maps/DM-3/DM-AncientLost_v2i", + "/Game/Maps/DM-Antalus", + "/Game/Maps/DM-Blaster-v16", + "/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a", + "/Game/Maps/DM-Corrugation-UT2004", + "/Game/Maps/DM-DE-Grendelkeep-UT2004", + "/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c", + "/Game/Rankin/DM-Rankin-LE", + "/Game/RestrictedAssets/Maps/DM-1on1-Roughinery", + "/Game/RestrictedAssets/Maps/DM-Cheops-UT4", + "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal", + "/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7", + "/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE", + "/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1", + "/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1", + "/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma", + "/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1", + "/Game/Signify/DM-Signify", + "/Game/Under/DM-Under-LE", + "/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A", + "/Game/maps/DM-Erase_Beta/DM-Erase_B9" +], +"maxPlayers": 12, +"maxTeamCount": 2, +"maxTeamSize": 5, +"maxPartySize": 5, +"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'", + +"gameMode": "/Script/UnrealTournament.UTTeamDMGameMode", +"gameOptions" : "?BalanceTeams=false?MaxPlayers=12?TimeLimit=15?ignoreidle=1?GoalScore=0?botfill=2?balanceTeams=true?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,NoPickupTimerMutator,NoSpawnProtectionMutator", +"requiredPackages" : [ + "MutHitsounds", + "MutTeamskins", + "WeaponSkins", + "UTPlus", + "UTPlusMovement", + "NoPickupTimerMutator", + "NoSpawnProtectionMutator" +], +"bTeamGame": true, +"bCompetitiveMatch": false, +"optionFlags": 65535, +"bHideFromUI": false, +"epicForceUIVisibility": 0 +}, diff --git a/files/start-server.sh b/files/start-server.sh new file mode 100755 index 0000000..5ae3ac2 --- /dev/null +++ b/files/start-server.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +PROJECT_DIR="/home/ut4/serv" + +cd "$PROJECT_DIR"/LinuxServer/Engine/Binaries/Linux +while true ; do + cd "$PROJECT_DIR"/LinuxServer/Engine/Binaries/Linux + ./UE4Server-Linux-Shipping UnrealTournament UT-Entry?Game=Lobby -log |& tee /home/ut4/serv/ut4-server.log +done +cd - >/dev/null + diff --git a/files/stop-server.sh b/files/stop-server.sh new file mode 100755 index 0000000..5d25987 --- /dev/null +++ b/files/stop-server.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +pkill -SIGINT -f UE4Server-Linux-Shipping +pkill start-server.sh +pkill -SIGINT -f UE4Server-Linux-Shipping + diff --git a/ut4-server-ctl.sh b/ut4-server-ctl.sh new file mode 100755 index 0000000..2dae1bc --- /dev/null +++ b/ut4-server-ctl.sh @@ -0,0 +1,729 @@ +#!/bin/bash + +# The 'All You Need' Unreal Tournament 4 Server (HUB) Script +# ========================================================== +# This script is everything you need for hosting your own UT4 +# server! The way this works is you have a root server directory with this +# script inside it. There's separate directories for config files, maps, +# mutators, and rulesets for the provided game types. You always edit the files +# in those directories and then run this script to deploy the server. This +# includes: +# +# (*) Automatic downloading of the latest from Epic +# (*) Installing the game configuration files, the mutators, the maps into the +# instance +# (*) Uploading all .pak package files to the redirect and automatic +# generation of the required hashes for Game.ini +# (*) The only thing that's left is for you to configure your gametypes, +# add some maps, mutators, and get to fraggin'!!! +# +# Remote and Multiple Instances +# ----------------------------- +# This script is designed to take files (maps, mutators, config) from +# a project directory and deploy them to two remote servers, the game +# instance and the redirect. Alternatively, these could be the same +# computer but the redirect should be distinct from the game server +# or downloads will make everyone lag. There is no restriction on +# where you put the project directory but you need a place for +# this script, all the maps, mutators to reside. You put maps, +# rulesets, and configuration in this project directory and then run +# this script to generate the instance, deploy to the server instance, +# and deploy to the redirect. This is also used to manage multiple +# server instances without as much duplication of effort. You need +# enough hard drive space to store all the files for the server which +# could be 10-20GB if you put lots of stuff on your HUB. + +# Rulesets: +# --------- +# Management of the rulesets (which provide the pre-populated gametypes, including +# all the selected mutators, the map rotation, game options, and mutator +# options) is greatly improved. There's some provided rulesets and some Disable.json +# files which remove the pre-populated ones. You manage each rule as a .json configuration +# file in the ./files/rulesets directory. The main part that is not automated +# is the Resource Path for maps to put them in the rotation. You can get these from +# UTCC, or from hosting a lan game with that map on your local game client, +# +# After you start a map, + to go to the UT4 console window and copy/paste +# the name from the logs. It will be the big line and look like: +# +# ...Game=/? +# +# It will make sense when you see the files. +# +# UPDATE: or better yet there is a script on the forums that will extract the required resource names +# from a directory of paks. +# +# What You Need: +# ------------- +# (1) A Server +# What you need to actually host this somewhere is a server to run the hub. +# Ideally this is a machine with it's own internet line else it may slow +# down when you watch NetFlix. Cloud hosting providers will provide you +# a perfect machine for a fee/month. +# +# (2) A Redirect +# On the same note as giving the server it's own internet line, content +# from the server is sent to gamers from a third-party server. You additionally +# need a 'redirect' server to host the files. This can be another server or I've +# seen many public redirects which would be happy to spread some of that +# Unreal Tournament Love. In case, we use a second cloud server. +# +# (3) A good attitude. You're almost done. There's just a few commands to learn +# that this script provides. You need to put this script in the right directory +# and then edit that directory path to the right place. After that, you can +# invoke the script to install and configure your instance. +# +# Usage and Directions: +# --------------------- +# +# Edit the exported parameters at the top of this file. You +# certainly need to point this to your relevant servers or +# be prepared to perform the file transfer manually. All +# work is done in the PROJECT_DIR variable so you can see the files +# in there. Use the source code as reference. +# +# Relevant directories (starting from PROJECT_DIR as base): +# +# - base Vanilla UT4 server as downloaded +# +# - files Custom Maps, mutators, rulesets, and config +# +# - instance Generated UT4 server application +# (for transfer if moving to a remot eserver) +# (YOU shouldn't need to edit this folder as +# it gets updated by the script) +# +# Requirements: Linux server with installed dependencies, including wget, +# scp, unzip, and sed. These utilities are used for the various file transfers +# and operations, and will be installed on almost every Linux distribution by +# default. +# +# Credits: Script modeled after the code in the unrelated easy-rsa +# script which I found to be helpful in writing this script. +# +# Last tested with UT4 server: +# Last updated: 2019-05-05 + +# Configurable parameters (EDIT THESE): +# ------------------------------------- +# Local directory to do everything in -- Point to a directory on the server +# to be the base directory, storing all the UT4 files. If you don't care, +# then just use /home/ut4/serv like provided. +# Some good places that make sense, though technically anywhere will work: +# * /home/ut4 +# * /opt/ut4 +# * /srv/ut4 + +#### +#### +# BELOW has been moved to vars-dallas +# ---------------------------------------- +# +# export PROJECT_DIR="/home/ut4/serv" +# +# # For creating RedirectReferences= Lines +# export REDIRECT_PROTOCOL="https" +# export REDIRECT_URL="ut4-redirect.zavage.net" +# +# # Remote server, if applicable, to upload instance and paks +# # Only used for upload-redirects and upload-server commands. +# # Format: username@host:/directory/on/remote/server +# export REMOTE_GAME_HOST="ut4-linode:/home/ut4/serv" +# export REMOTE_REDIRECT_HOST="mathewguest.com:/srv/ut4-redirect" + +# BELOW HERE, DEFAULTS SHOULD BE FINE. FEEL FREE TO EDIT IF YOU +# KNOW WHAT YOU'RE DOING +# Latest Linux Server.zip: +export DOWNLOAD_URL="https://s3.amazonaws.com/unrealtournament/ShippedBuilds/%2B%2BUT%2BRelease-Next-CL-3525360/UnrealTournament-Server-XAN-3525360-Linux.zip" +export DOWNLOAD_FILENAME="UnrealTournament-Server-XAN-3525360-Linux.zip" +# If MD5 hash is provided, will verify the download: +export DOWNLOAD_MD5="cad730ad6793ba6261f9a341ad7396eb" + +export SKIP_VALIDATE="false" # anything but 'true' will interactively ask + # the user for variables. + +usage() +{ + cat <<"EOF" +Unreal Tournament 4 Server Build and Deploy Script + +A list of commands is shown below. + +List commands and usage: + ./ut4-server-ctl.sh + +Show help for a specific command: + ./ut4-server-ctl.sh --help + +Here is the list of sub-commands with short syntax reminder: + ./ut4-server-ctl.sh 1click-deploy + ./ut4-server-ctl.sh clean-instance + ./ut4-server-ctl.sh create-directories + ./ut4-server-ctl.sh download-linux-server + ./ut4-server-ctl.sh download-logs + ./ut4-server-ctl.sh generate-instance + ./ut4-server-ctl.sh start-server + ./ut4-server-ctl.sh stop-server + ./ut4-server-ctl.sh upload-redirects + ./ut4-server-ctl.sh upload-server + +Typical Usage: + 1) You need to either configure the remote server hostnames (both game server and remote redirect server) + in the vars files. Edit vars with a text editor, or edit the defaults in this file, or manually type + them interactively when prompted* (coming soon). + + e.g.: + PROJECT_DIR="/path/to/this/script/directory/on/local/machine" + REMOTE_GAME_HOST="54.123.456.10" + REMOTE_GAME_DIR="/home/ut4/hub-instance" + + REMOTE_REDIRECT_HOST="45.321.654.10" + REMOTE_REDIRECT_DIR="/srv/ut4-redirect/" + + 2) You need to download the latest Linux Server release from Epic. Do + this with the 'download-server' command. + + e.g.: + ./ut4-server-ctl.sh download-server + + 3) Add and configure custom maps, mutators, rulesets, and hub configuration to your *local* project folder. + This is done by modifying the files in the project directory. With the current environment variables, + this is set to be: + + "$PROJECT_DIR" + + This is the fun part! Connect with UTCC or UTZONE.DE (unaffiliated) to find custom content to put on + your hub. + + 4) 1click-deploy to update the remote hub and redirect with your latest content. You're done! Rinse and repeat. + + e.g.: + ./ut4-server-ctl.sh 1click-deploy + + Alternatively, this command is equivalent to running the separate commands. If you'd like more fine-grained + control, you can run them individually. + ./ut4-server-ctl.sh generate-instance + ./ut4-server-ctl.sh upload-redirects + ./ut4-server-ctl.sh upload-server + ./ut4-server-ctl.sh restart-server + +EOF +} + +cmd_help() +{ + cmd="$1" + case "$cmd" in + 1click-deploy) + cat <<"EOF" +1click-deploy) + Executes all the commands needed to update a remote game server. This is + equivalent to running these 3 commands: + 1 - generate-instance (installing config, maps, and mutators) + 2 - upload-server (copying hub instance to remote game server) + 3 - upload-redirects (copying customized content to remote redirect server) +EOF + ;; + + clean-instance) + cat <<"EOF" +clean-instance) + This command will delete all files on the generated instance on the LOCAL machine. + + Useful for if you ever delete a map or mutator and wan't it off the server. To do that, + modify the files you need, clean-instance, and then generate-instance from scratch. +EOF + ;; + create-directories) + cat <<"EOF" +EOF + ;; + download-linux-server) + cat <<"EOF" +download-linux-server) + Downloads the latest Linux server release from Epic. +EOF + ;; + download-logs) + cat <<"EOF" +download-logs) + Downloads the instance logs from the remote game server while clearing + them on the server. +EOF + ;; + generata-instance) + cat <<"EOF" +generate-instance) + Installs the game configuration, maps, and mutators into the *local* + instance directory. The next step after this has been done is to + upload-server to copy the instance directory to the remote game server. +EOF + ;; + restart-server) + cat <<"EOF" +restart-server) + Equivalent to stop-server + start-server. +EOF + ;; + start-server) + cat <<"EOF" +start-server) + Turns on the remote game server Unreal Tournament 4 Linux Hub instance. Will run in + an infinite loop until stopped. +EOF + ;; + stop-server) + cat <<"EOF" +stop-server) + Turns off and kills all remote game server instances. +EOF + ;; + upload-redirects) + cat <<"EOF" +upload-redirects) + Uploads customized content and sanitized server configuration to remote + redirect server. +EOF + ;; + upload-server) + cat <<"EOF" +upload-server) + Installs the generated UT4 Hub instance to the configured remote game + server. +EOF + ;; + ""|help|-h|--help|--usage) + usage + ;; + *) + echo "Unknown command '$cmd'. Invoke script for usage help." + ;; + esac +} + +oneclick_deploy() +{ + generate_instance + upload_redirects + upload_server +} + +clean_instance() +{ + _UT4_print Clearing .pak folder... + (set -x # NOTE(MG) set -x echoes all commands that the script does. + # The user will be able to see the computed commands as the + # script runs them. + + rm -rv "$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Content/Paks/* + + ) +} + +create_directories() +{ + (set -x + + mkdir -p "$PROJECT_DIR"/base + mkdir -p "$PROJECT_DIR"/files/config + mkdir -p "$PROJECT_DIR"/files/maps + mkdir -p "$PROJECT_DIR"/files/mutators + mkdir -p "$PROJECT_DIR"/files/rulesets + mkdir -p "$PROJECT_DIR"/files/unused + + ) +} + +download_linux_server() +{ + cd "$PROJECT_DIR"/base + + # Only download server when hasn't already been downloaded + if [ ! -f "$PROJECT_DIR"/base/"$DOWNLOAD_FILENAME" ] ; then + _UT4_print "Downloading Linux Server Archive..." + (set -x + wget "$DOWNLOAD_URL" --show-progress + ) + + _UT4_print "Verifying archive is the file we're expecting" + md5=$(md5sum "$DOWNLOAD_FILENAME" | cut -d' ' -f1) + if [ "$md5" != "$DOWNLOAD_MD5" ] ; then + server.zip echo Downloaded '"$DOWNLOAD_FILENAME"' checksum FAILED. + echo The downloaded zip was not the exact file we\'re expecting. + echo Refusing to continue. + return 1 + else + echo The downloaded zip checksum matched what we expected: "$DOWNLOAD_MD5" + fi + else + _UT4_print "UT4 Server .zip already downloaded" + _UT4_print "You need to invoke this command manually if you want to delete these files. (Being extra safe)" + _UT4_print "DELETE COMMAND (manual): cd "$PROJECT_DIR"/base && rm -rv *" && cd - + cd - >/dev/null + return 1 + fi + + # Extract ut4 linux server into ./base (with overwrite) + _UT4_print "Extracting archive..." + (set -x + + unzip -o "$DOWNLOAD_FILENAME" + # rm "$DOWNLOAD_FILENAME" + + ) + + cd - >/dev/null +} + +download_logs() +{ + _UT4_print "Downloading the game logs from the server (clearing them also)" + # Transfer log directory files from remote game server to local: + (set -x + + rsync -ravzp "$REMOTE_GAME_HOST":"$REMOTE_GAME_DIR"/LinuxServer/UnrealTournament/Saved/Logs/ "$CONFIG_DIR"/downloaded-logs/ + + ) + + # Delete logs on remote game server if successfully transferred to local: + if [ $? -eq 0 ] ; then + (set -x + + : + # ssh "$REMOTE_GAME_HOST" rm "$REMOTE_GAME_DIR"'/LinuxServer/UnrealTournament/Saved/Logs/* -r' + + ) + fi +} + +generate_instance() +{ + _UT4_print "Generating server instance from custom files..." + (set -x + + rsync -ravzp "$PROJECT_DIR"/base/LinuxServer "$PROJECT_DIR"/instance/ + cp "$PROJECT_DIR"/start-server.sh "$PROJECT_DIR"/instance/ + cp "$PROJECT_DIR"/stop-server.sh "$PROJECT_DIR"/instance/ + + ) + # _first_run + _install_config + _install_paks + _install_redirect_lines + _install_rulesets +} + +restart_server() +{ + stop_server + start_server +} + +start_server() +{ + _UT4_print "Starting server!!" + (set -x + + nohup ssh "$REMOTE_GAME_HOST" "$REMOTE_GAME_DIRECTORY"/start-server.sh & + + ) +} + +stop_server() +{ + _UT4_print "Stopping all servers!" + (set -x + + ssh "$REMOTE_GAME_HOST" "$REMOTE_GAME_DIRECTORY"/stop-server.sh + + ) +} + +upload_redirects() +{ + PAKS_DIR="$PROJECT_DIR"/files + + _UT4_print "Uploading redirects (maps, mutators, etc.) to download server" + (set -x + + rsync -rvz --delete --exclude "*.md5" --exclude 'unused' --exclude ".KEEP" --exclude Mods.db "$PAKS_DIR"/ "$REMOTE_REDIRECT_HOST" + + ) + + # _UT4_print "Uploading md5sum files to redirect" + # mkdir /tmp/ut4-md5sums + # for f in $(ls "$PAKS_DIR"); do + # md5sum "$PAKS_DIR"/"$f" | cut -d' ' -f1 > /tmp/ut4-md5sums/"$f".md5 + # done + + # rsync -rvz --exclude ".KEEP" /tmp/ut4-md5sums/ "$REMOTE_REDIRECT_HOST" + + + # Hide admin password from redirect: + # TODO(MG) hardcoded paths and hostname >.< + + gameini="/srv/ut4-redirect/config/Game.ini" + engineini="/srv/ut4-redirect/config/Engine.ini" + (set -x + + ssh mathewguest.com sed -i /ServerInstanceID=/c\ServerInstanceID=Hidden "$gameini" + + ssh mathewguest.com sed -i /RconPassword=/c\RconPassword=Hidden "$engineini" + + rsync -vz "$PROJECT_DIR"/ut4-server-ctl.sh "$REMOTE_REDIRECT_HOST" + + ) + + # Fix permissions for redirect: + (set -x + + ssh mathewguest.com 'chown http.http /srv/ut4-redirect -R' + + ) +} + +upload_server() +{ + _UT4_print "Uploading customized server" + # Exclude everything we don't want to be + # overwritten on the server instance. + # (Hint: uncomment --dry-run to safely verify command works as intended) + (set -x + + rsync -ravzp \ + --delete \ + --exclude ".KEEP" \ + --exclude "Mods.db" \ + --exclude "Mod.ini" \ + --exclude "Logs" \ + --exclude "ut4-server.log" \ + --exclude "Saved/*.ai" \ + --exclude "Saved/Crashes/*" \ + --exclude "Saved/Logs/*" \ + "$PROJECT_DIR"/instance/ \ + "$REMOTE_GAME_HOST":"$REMOTE_GAME_DIRECTORY" + + rsync -avzp "$PROJECT_DIR"/ut4-server-ctl.sh "$REMOTE_GAME_HOST":"$REMOTE_GAME_DIRECTORY" + + ) +} + +_first_run() +{ + _UT4_print "Starting instance once to get UID." + _UT4_print "Unfortunately, this takes 20 seconds. Just wait." + (set -x + + cd "$PROJECT_DIR"/instance/LinuxServer/Engine/Binaries/Linux + chmod 770 UE4Server-Linux-Shipping + ./UE4Server-Linux-Shipping UnrealTournament UT-Entry?Game=Lobby -log &>/dev/null & + cd - >/dev/null + + ) + _UT4_print "sleeping 20 seconds and then we'll kill the server we started just now." + sleep 20 + stop_server + # TODO(MG) get uid and export +} + +_install_config() +{ + f="Game.ini" + _UT4_print Installing file: "$f" + (set -x + + cp "$CONFIG_DIR"/config/"$f" "$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Saved/Config/LinuxServer/ + + ) + + f="Engine.ini" + _UT4_print Installing file: "$f" + (set -x + + cp "$CONFIG_DIR"/config/"$f" "$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Saved/Config/LinuxServer/ + + ) +} + +_install_paks() +{ + _UT4_print Installing maps... + + (set -x + + rsync -ravzp "$PROJECT_DIR"/files/maps/ "$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Content/Paks/ + + ) + + + _UT4_print Installing mutators... + (set -x + + rsync -ravzp "$PROJECT_DIR"/files/mutators/ "$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Content/Paks/ + + ) +} + +_install_redirect_lines() +{ + _UT4_print Generating redirect references... + MOD_DIR="$PROJECT_DIR"/files + shopt -s nocaseglob + echo > /tmp/ut4-server-ctl-references + for f in "$MOD_DIR"/**/*.pak ; do + # f = full path + RELATIVE_PATH=${f#"$MOD_DIR"/} # <- Trims /root/path/up/until/$MOD_DIR + # example output: maps/DM-Rankin.pak + # mutators/GodMode.pak + BASENAME=$(basename "$f") # DM-Rankin.pak + + # Exclusions: + # - exclude the UnrealTournament pak + if [ "$BASENAME" = "UnrealTournament-LinuxServer.pak" ] ; then + continue + fi + + # Exclude any files in the 'unused' directory: + FIRSTDIR=$(echo "$RELATIVE_PATH" | cut -d'/' -f1) + if [ "$FIRSTDIR" = "unused" ] ; then + continue + fi + + MD5=$(md5sum "$f"| cut -d' ' -f1) + EXTENSION="${BASENAME##*.}" # .pak + FILENAME="${BASENAME%.*}" # DM-Rankin + # line continues that way --> --> --> + LINE="RedirectReferences=(PackageName=\""$FILENAME"\",PackageURLProtocol=\"$REDIRECT_PROTOCOL\",PackageURL=\""$REDIRECT_URL"/"$RELATIVE_PATH"\",PackageChecksum=\""$MD5"\")" + echo "$LINE" + echo "$LINE" >> /tmp/ut4-server-ctl-references + done + + _UT4_print Installing redirect references into Game.ini... + FILENAME="$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Saved/Config/LinuxServer/Game.ini + LINE_NUMBER=17 # TODO(MG) Not hard-coded + + # Delete + sed -i '/RedirectReferences/d' "$FILENAME" + + # Insert into Game.ini + awk '1; NR==11 {system("cat /tmp/ut4-server-ctl-references")}' "$FILENAME" > /tmp/ut4-server-ctl-game.ini + cp /tmp/ut4-server-ctl-game.ini "$FILENAME" + cat "$FILENAME" +} + +_install_rulesets() +{ + _UT4_print Concatenating rulesets for game modes... + SRC_DIR="$PROJECT_DIR"/files/rulesets + OUT_DIR="$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Saved/Config/Rulesets + OUT_FILENAME="$OUT_DIR"/ruleset.json + + mkdir -pv "$OUT_DIR" + + echo OUT_FILENAME="$OUT_FILENAME" + + echo {\"rules\":[ > "$OUT_FILENAME" + + for f in "$SRC_DIR"/*.json ; do + cat "$f" >> $OUT_FILENAME + done + + echo "]}" >> "$OUT_FILENAME" + echo output ruleset is at "$OUT_FILENAME" +} + +_validate_env_vars() +{ + # TODO(MG) Add which user we are running this under + _UT4_print Are these environment variables correct? + echo 'PROJECT_DIR: '"$PROJECT_DIR" + echo + echo 'DOWNLOAD_URL: '"$DOWNLOAD_URL" + echo 'DOWNLOAD_FILENAME: '"$DOWNLOAD_FILENAME" + echo 'DOWNLOAD_MD5: '"$DOWNLOAD_MD5" + echo 'REDIRECT_PROTOCOL: '"$REDIRECT_PROTOCOL" + echo 'REDIRECT_URL: '"$REDIRECT_URL" + echo 'REMOTE_GAME_HOST: '"$REMOTE_GAME_HOST" + echo 'REMOTE_GAME_DIRECTORY: '"$REMOTE_GAME_DIRECTORY" + echo 'REMOTE_REDIRECT_HOST: '"$REMOTE_REDIRECT_HOST" + echo + + + read -p "Continue with above configuration? " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Yy]$ ]] ; then + exit 1 + fi +} + +# Wrapper prints colored log messages which stand out to communicate what +# the script is doing to the user. +_UT4_print() +{ + RED='\033[0;31m' + NC='\033[0m' + echo -e "UT4>${RED} "$@" ${NC}" +} + +main() +{ + cmd="$1" + _validate_env_vars + + case "$cmd" in + 1click-instance) + shift + oneclick_deploy "$@" + exit "$?";; + clean-instance) + shift + clean_instance "$@" + exit "$?";; + create-directories) + shift + create_directories "$@" + exit "$?";; + download-linux-server) + shift + download_linux_server "$@" + exit "$?";; + download-logs) + shift + download_logs "$@" + exit "$?";; + generate-instance) + shift + generate_instance "$@" + exit "$?";; + restart-server) + shift + restart_server "$@" + exit "$?";; + start-server) + shift + start_server "$@" + exit "$?";; + stop-server) + shift + stop_server "$@" + exit "$?";; + upload-redirects) + shift + upload_redirects "$@" + exit "$?";; + upload-server) + shift + upload_server "$@" + exit "$?";; + ""|help|-h|--help|--usage) + shift + cmd_help "$@" + exit 0;; + *) + cmd_help "$@" + exit 1;; + esac +} + +main "$@" + diff --git a/vars-dallas b/vars-dallas new file mode 100644 index 0000000..2413307 --- /dev/null +++ b/vars-dallas @@ -0,0 +1,9 @@ +export PROJECT_DIR="/home/ut4/serv" +export CONFIG_DIR="/home/ut4/serv/server-dallas" + +export REDIRECT_PROTOCOL="https" +export REDIRECT_URL="ut4-redirect.zavage.net" + +export REMOTE_GAME_HOST="ut4-dallas" +export REMOTE_GAME_DIR="/home/ut4/serv" +export REMOTE_REDIRECT_HOST="root@45.33.76.178:/srv/ut4-redirect.zavage.net" diff --git a/vars-fremont b/vars-fremont new file mode 100644 index 0000000..407272e --- /dev/null +++ b/vars-fremont @@ -0,0 +1,10 @@ +export PROJECT_DIR="/home/ut4/serv" +export CONFIG_DIR="/home/ut4/serv/server-fremont" + +export REDIRECT_PROTOCOL="https" +export REDIRECT_URL="ut4-redirect.zavage.net" + +export REMOTE_GAME_HOST="ut4-fremont" +export REMOTE_GAME_DIRECTORY="/home/ut4/serv" +export REMOTE_REDIRECT_HOST="mathewguest.com:/srv/ut4-redirect.zavage.net" + diff --git a/vars-newark b/vars-newark new file mode 100644 index 0000000..3722f29 --- /dev/null +++ b/vars-newark @@ -0,0 +1,10 @@ +export PROJECT_DIR="/home/ut4/serv" +export CONFIG_DIR="/home/ut4/serv/server-newark" + +export REDIRECT_PROTOCOL="https" +export REDIRECT_URL="ut4-redirect.zavage.net" + +export REMOTE_GAME_HOST="ut4-newark" +export REMOTE_GAME_DIRECTORY="/home/ut4/serv" +export REMOTE_REDIRECT_HOST="mathewguest.com:/srv/ut4-redirect.zavage.net" +