From a0b891f427803fe9fa877035a69ca82f9c5b0caf Mon Sep 17 00:00:00 2001 From: Virx Date: Sun, 22 Jun 2025 18:08:03 -0400 Subject: [PATCH] New mutators and game mode presets --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 88 ++++++++---------- frontend/src/arena-names.ts | 1 + .../src/components/MatchSettings/rlmodes.ts | 90 ++++++++++++++++++- .../components/MatchSettings/rlmutators.ts | 10 ++- go.mod | 2 +- go.sum | 4 +- 7 files changed, 139 insertions(+), 58 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index c33180f..0c23eac 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,7 +11,7 @@ "@thisux/sveltednd": "^0.0.20", "@wailsio/runtime": "3.0.0-alpha.66", "superjson": "^2.2.2", - "svelte": "^5.34.3", + "svelte": "^5.34.7", "svelte-5-french-toast": "^2.0.4", "svelte-portal": "^2.2.1" }, diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 92240e9..807dcf8 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@thisux/sveltednd': specifier: ^0.0.20 - version: 0.0.20(svelte@5.34.3) + version: 0.0.20(svelte@5.34.7) '@wailsio/runtime': specifier: 3.0.0-alpha.66 version: 3.0.0-alpha.66 @@ -18,11 +18,11 @@ importers: specifier: ^2.2.2 version: 2.2.2 svelte: - specifier: ^5.34.3 - version: 5.34.3 + specifier: ^5.34.7 + version: 5.34.7 svelte-5-french-toast: specifier: ^2.0.4 - version: 2.0.4(svelte@5.34.3) + version: 2.0.4(svelte@5.34.7) svelte-portal: specifier: ^2.2.1 version: 2.2.1 @@ -35,7 +35,7 @@ importers: version: 1.3.22 '@rsbuild/plugin-svelte': specifier: ^1.0.10 - version: 1.0.10(@rsbuild/core@1.3.22)(svelte@5.34.3)(typescript@5.8.3) + version: 1.0.10(@rsbuild/core@1.3.22)(svelte@5.34.7)(typescript@5.8.3) typescript: specifier: ^5.8.3 version: 5.8.3 @@ -214,15 +214,8 @@ packages: '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - '@thisux/sveltednd@0.0.12': - resolution: {integrity: sha512-9edVcakYkoCzU6pNIwmJ6Cf+9anECod26Ue/rL3Ssf5LyuLaBLXtBx4H4U8YwQCkwtMeSGFf0OsiMpPpFjvCcg==} - peerDependencies: - svelte: ^5.0.0 - '@thisux/sveltednd@0.0.14': resolution: {integrity: sha512-Vbq69SU3HUomPg6oCXtb89OG89hka0YIkdaErYibn3waK7tYE66IcQxD/Fzg8YNW3EVsXoA9kc7kW5EUBCSQGg==} - peerDependencies: - svelte: ^5.0.0 '@thisux/sveltednd@0.0.17': resolution: {integrity: sha512-lRninjw439phhA8xAHqCpMAX0hnwFMdbXW4M0XJgAdnGxeum+QsLiIC4P3HnkNXAygsVKUqxRcbS84CxDZ9hPw==} @@ -261,8 +254,8 @@ packages: big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - caniuse-lite@1.0.30001723: - resolution: {integrity: sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==} + caniuse-lite@1.0.30001724: + resolution: {integrity: sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==} clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} @@ -379,8 +372,8 @@ packages: peerDependencies: svelte: ^3.2.1 || ^4.0.0-next.1 || ^5.0.0-next.94 - svelte@5.34.3: - resolution: {integrity: sha512-Y0QKP2rfWD+ARKe91c4JgZgc/nXa2BfOnVBUjYUMB819m7VyPszihkjdzXPIV0qlGRZYEukpgNq7hgbzTbopJw==} + svelte@5.34.7: + resolution: {integrity: sha512-5PEg+QQKce4t1qiOtVUhUS3AQRTtxJyGBTpxLcNWnr0Ve8q4r06bMo0Gv8uhtCPWlztZHoi3Ye7elLhu+PCTMg==} engines: {node: '>=18'} tslib@2.8.1: @@ -486,11 +479,11 @@ snapshots: core-js: 3.42.0 jiti: 2.4.2 - '@rsbuild/plugin-svelte@1.0.10(@rsbuild/core@1.3.22)(svelte@5.34.3)(typescript@5.8.3)': + '@rsbuild/plugin-svelte@1.0.10(@rsbuild/core@1.3.22)(svelte@5.34.7)(typescript@5.8.3)': dependencies: '@rsbuild/core': 1.3.22 - svelte-loader: 3.2.4(svelte@5.34.3) - svelte-preprocess: 6.0.3(svelte@5.34.3)(typescript@5.8.3) + svelte-loader: 3.2.4(svelte@5.34.7) + svelte-preprocess: 6.0.3(svelte@5.34.7)(typescript@5.8.3) transitivePeerDependencies: - '@babel/core' - coffeescript @@ -548,7 +541,7 @@ snapshots: '@module-federation/runtime-tools': 0.14.0 '@rspack/binding': 1.3.12 '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001723 + caniuse-lite: 1.0.30001724 optionalDependencies: '@swc/helpers': 0.5.17 @@ -562,29 +555,22 @@ snapshots: dependencies: tslib: 2.8.1 - '@thisux/sveltednd@0.0.12(svelte@5.34.3)': - dependencies: - svelte: 5.34.3 - - '@thisux/sveltednd@0.0.14(svelte@5.34.3)': - dependencies: - '@thisux/sveltednd': 0.0.12(svelte@5.34.3) - svelte: 5.34.3 + '@thisux/sveltednd@0.0.14': {} - '@thisux/sveltednd@0.0.17(svelte@5.34.3)': + '@thisux/sveltednd@0.0.17(svelte@5.34.7)': dependencies: - '@thisux/sveltednd': 0.0.14(svelte@5.34.3) - svelte: 5.34.3 + '@thisux/sveltednd': 0.0.14 + svelte: 5.34.7 - '@thisux/sveltednd@0.0.18(svelte@5.34.3)': + '@thisux/sveltednd@0.0.18(svelte@5.34.7)': dependencies: - '@thisux/sveltednd': 0.0.17(svelte@5.34.3) - svelte: 5.34.3 + '@thisux/sveltednd': 0.0.17(svelte@5.34.7) + svelte: 5.34.7 - '@thisux/sveltednd@0.0.20(svelte@5.34.3)': + '@thisux/sveltednd@0.0.20(svelte@5.34.7)': dependencies: - '@thisux/sveltednd': 0.0.18(svelte@5.34.3) - svelte: 5.34.3 + '@thisux/sveltednd': 0.0.18(svelte@5.34.7) + svelte: 5.34.7 '@types/estree@1.0.8': {} @@ -598,7 +584,7 @@ snapshots: big.js@5.2.2: {} - caniuse-lite@1.0.30001723: {} + caniuse-lite@1.0.30001724: {} clsx@2.1.1: {} @@ -642,37 +628,37 @@ snapshots: dependencies: copy-anything: 3.0.5 - svelte-5-french-toast@2.0.4(svelte@5.34.3): + svelte-5-french-toast@2.0.4(svelte@5.34.7): dependencies: - svelte: 5.34.3 - svelte-writable-derived: 3.1.1(svelte@5.34.3) + svelte: 5.34.7 + svelte-writable-derived: 3.1.1(svelte@5.34.7) svelte-dev-helper@1.1.9: {} - svelte-hmr@0.14.12(svelte@5.34.3): + svelte-hmr@0.14.12(svelte@5.34.7): dependencies: - svelte: 5.34.3 + svelte: 5.34.7 - svelte-loader@3.2.4(svelte@5.34.3): + svelte-loader@3.2.4(svelte@5.34.7): dependencies: loader-utils: 2.0.4 - svelte: 5.34.3 + svelte: 5.34.7 svelte-dev-helper: 1.1.9 - svelte-hmr: 0.14.12(svelte@5.34.3) + svelte-hmr: 0.14.12(svelte@5.34.7) svelte-portal@2.2.1: {} - svelte-preprocess@6.0.3(svelte@5.34.3)(typescript@5.8.3): + svelte-preprocess@6.0.3(svelte@5.34.7)(typescript@5.8.3): dependencies: - svelte: 5.34.3 + svelte: 5.34.7 optionalDependencies: typescript: 5.8.3 - svelte-writable-derived@3.1.1(svelte@5.34.3): + svelte-writable-derived@3.1.1(svelte@5.34.7): dependencies: - svelte: 5.34.3 + svelte: 5.34.7 - svelte@5.34.3: + svelte@5.34.7: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 diff --git a/frontend/src/arena-names.ts b/frontend/src/arena-names.ts index 1db34de..6fa1f9f 100644 --- a/frontend/src/arena-names.ts +++ b/frontend/src/arena-names.ts @@ -88,4 +88,5 @@ export const MAPS_NON_STANDARD = { "Quadron": "KO_Quadron_P", "Calavera": "KO_Calavera_P", "Carbon": "KO_Carbon_P", + "Holyfield": "Labs_Holyfield_Space_P" }; diff --git a/frontend/src/components/MatchSettings/rlmodes.ts b/frontend/src/components/MatchSettings/rlmodes.ts index c81478b..6cd9904 100644 --- a/frontend/src/components/MatchSettings/rlmodes.ts +++ b/frontend/src/components/MatchSettings/rlmodes.ts @@ -59,7 +59,7 @@ export const gamemodes: { rumble: mutators.rumble[1], }, }, - "Nike Fc Showdown": { + "Nike FC Showdown": { match: { game_mode: mutators.game_mode[0], game_map_upk: "swoosh_p", @@ -79,7 +79,7 @@ export const gamemodes: { rumble: mutators.rumble[9], }, }, - "Gforce Frenzy": { + "G-Force Frenzy": { match: { game_mode: mutators.game_mode[0], }, @@ -154,4 +154,90 @@ export const gamemodes: { ball_weight: mutators.ball_weight[3], }, }, + "Split Shot": { + match: { + game_mode: mutators.game_mode[0], + game_map_upk: "NeoTokyo_Arcade_P", + }, + mutators: { + territory: mutators.territory[1], + boost_amount: mutators.boost_amount[1], + ball_weight: mutators.ball_weight[1], + respawn_time: mutators.respawn_time[2], + stable_ball: mutators.stale_ball[1], + }, + }, + "Split Shot Heatseeker": { + match: { + game_mode: mutators.game_mode[5], + game_map_upk: "NeoTokyo_Arcade_P", + }, + mutators: { + territory: mutators.territory[1], + boost_amount: mutators.boost_amount[1], + respawn_time: mutators.respawn_time[2], + stable_ball: mutators.stale_ball[1], + }, + }, + "Split Shot Snow Day": { + match: { + game_mode: mutators.game_mode[3], + game_map_upk: "NeoTokyo_Arcade_P", + }, + mutators: { + territory: mutators.territory[1], + boost_amount: mutators.boost_amount[1], + ball_weight: mutators.ball_weight[1], + respawn_time: mutators.respawn_time[2], + stable_ball: mutators.stale_ball[1], + ball_type: mutators.ball_type[2], + }, + }, + "Run It Back": { + match: { + game_mode: mutators.game_mode[3], + }, + mutators: { + input_restriction: mutators.input_restriction[1], + }, + }, + "Car Wars": { + match: { + game_mode: mutators.game_mode[0], + game_map_upk: "Labs_Holyfield_Space_P", + }, + mutators: { + max_score: mutators.max_score[4], + ball_size: mutators.ball_size[1], + boost_amount: mutators.boost_amount[2], + rumble: mutators.rumble[13], + }, + }, + "Pizza Party": { + match: { + game_mode: mutators.game_mode[0], + game_map_upk: "Labs_DoubleGoal_V2_P", + }, + mutators: { + ball_type: mutators.ball_type[14], + jump: mutators.jump[6], + ball_weight: mutators.ball_weight[2], + ball_size: mutators.ball_size[2], + ball_bounciness: mutators.ball_bounciness[1], + ball_gravity: mutators.ball_gravity[2], + boost_amount: mutators.boost_amount[13], + rumble: mutators.rumble[11], + boost_strength: mutators.boost_strength[1], + }, + }, + "Adidas Soccar Strike": { + match: { + game_mode: mutators.game_mode[0], + game_map_upk: "Labs_DoubleGoal_V2_P", + }, + mutators: { + ball_weight: mutators.ball_weight[7], + ball_type: mutators.ball_type[13], + }, + }, }; diff --git a/frontend/src/components/MatchSettings/rlmutators.ts b/frontend/src/components/MatchSettings/rlmutators.ts index 204d40b..d4328d2 100644 --- a/frontend/src/components/MatchSettings/rlmutators.ts +++ b/frontend/src/components/MatchSettings/rlmutators.ts @@ -40,12 +40,14 @@ export const mutators: { [x: string]: string[] } = { "Beachball", "Anniversary", "Haunted", - "Ekin", + "Nike", "Spooky Cube", "Egg", "Player Seeking", "Dropshot", "Score Absorb", + "Adidas", + "Pizza Puck", ], ball_weight: [ "Default", @@ -55,6 +57,7 @@ export const mutators: { [x: string]: string[] } = { "Curve Ball", "Beach Ball Curve", "Magnus FutBall", + "Soccar Ball Curve", ], ball_size: ["Default", "Small", "Medium", "Large", "Gigantic"], ball_bounciness: ["Default", "Low", "High", "Super High", "Lowish"], @@ -79,6 +82,8 @@ export const mutators: { [x: string]: string[] } = { "Batman Rumble", "Grappling Only", "Haymaker Only", + "Spike Rush Force", + "Rock-Paper-Scissors", ], boost_strength: ["1x", "1.5x", "2x", "5x", "10x"], gravity: ["Default", "Low", "High", "Super High", "Reverse"], @@ -90,6 +95,8 @@ export const mutators: { [x: string]: string[] } = { "On Contact FF", "On Ball Contact", "On Ball Contact FF", + "On Ball Contact Silent", + "On Ball Contact FF Silent", ], respawn_time: ["3 Seconds", "2 Seconds", "1 Second", "Disable Goal Reset"], max_time: ["Unlimited", "Eleven Minutes"], @@ -106,4 +113,5 @@ export const mutators: { [x: string]: string[] } = { aerial_goal_score: ["1", "0", "2", "3", "5", "10"], assist_goal_score: ["0", "1", "2", "3"], input_restriction: ["None", "Backwards"], + scoring_rule: ["Default", "Disable Goal Scoring"], }; diff --git a/go.mod b/go.mod index 64a7cde..78bd7de 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ toolchain go1.23.6 require ( github.com/BurntSushi/toml v1.5.0 - github.com/RLBot/go-interface v0.0.0-20250614230240-3eb3ca4b34e1 + github.com/RLBot/go-interface v0.0.0-20250622212621-386aff5bf548 github.com/ncruces/zenity v0.10.14 github.com/ulikunitz/xz v0.5.12 github.com/wailsapp/mimetype v1.4.1 diff --git a/go.sum b/go.sum index a5d5d9b..13e043d 100644 --- a/go.sum +++ b/go.sum @@ -7,8 +7,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= -github.com/RLBot/go-interface v0.0.0-20250614230240-3eb3ca4b34e1 h1:iWOTI2DIjy9g/WZV4uaFl/UrG0SbzjJSAnds1UES/C4= -github.com/RLBot/go-interface v0.0.0-20250614230240-3eb3ca4b34e1/go.mod h1:zogQvXLJKb2EQ4bb/PUH168VPwxBdzG1SSFJt9uJM5c= +github.com/RLBot/go-interface v0.0.0-20250622212621-386aff5bf548 h1:oaBftapE2YFN6DPMXhVzFpvj27W1X4cUzVhg/bwlNko= +github.com/RLBot/go-interface v0.0.0-20250622212621-386aff5bf548/go.mod h1:zogQvXLJKb2EQ4bb/PUH168VPwxBdzG1SSFJt9uJM5c= github.com/adrg/xdg v0.5.3 h1:xRnxJXne7+oWDatRhR1JLnvuccuIeCoBu2rtuLqQB78= github.com/adrg/xdg v0.5.3/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ= github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw=