From 95aa8efb03158db3caf9c5119f19604fad87f360 Mon Sep 17 00:00:00 2001 From: 12problems Date: Wed, 12 Aug 2026 06:51:56 -0400 Subject: [PATCH] Set opts.ranked on real ranked queue attempts MPAPI.matchmaking.queue()'s launcher-anti-cheat gate only runs when the caller explicitly passes ranked=true or lobby_type=RANKED - it has no way to infer that from the game_mode string's "ranked:" prefix alone (see that function's own doc comment). _join_queue() never set it, so the client-side gate silently never ran for any real ranked SPDRN queue attempt - a no-op layer of defense-in-depth, not a working one. The server-side launcher-integrity gate was unaffected either way (it's independent, keyed off the game_mode prefix directly), so this was never an actual bypass - just a missing client-side check that should have been running. --- objects/matchmaking/queue.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/objects/matchmaking/queue.lua b/objects/matchmaking/queue.lua index be62e4b..84d7d22 100644 --- a/objects/matchmaking/queue.lua +++ b/objects/matchmaking/queue.lua @@ -18,6 +18,14 @@ function SPDRN._join_queue(kind, gamemode_key) game_mode = game_mode, min_players = 2, max_players = mm_max, + -- Without this, MPAPI.matchmaking.queue() has no way to know this is a + -- ranked attempt (it can't infer that from game_mode's "ranked:" prefix + -- alone - see that function's own doc comment), so its launcher-anti-cheat + -- gate silently never ran for a real ranked queue attempt here. The + -- server-side launcher-integrity gate is unaffected either way (it's + -- independent, keyed off the game_mode prefix), but this client-side + -- layer of defense-in-depth was a no-op for every ranked SPDRN queue. + ranked = kind == SPDRN.LobbyKind.RANKED, }) if not handle then