From dd4100f752295d2c4d80717a444967aa2998bdd4 Mon Sep 17 00:00:00 2001 From: Misa Date: Sat, 10 Apr 2021 15:38:46 -0700 Subject: [PATCH] Fix softlocks from mistimed trinket text skip You can skip the "You have found a shiny trinket!" cutscene. The conditions are that this can only be done in the main game, in the main dimension (no Polar Dimension), the checkpoint that you last touched must not be in the same room as the trinket, and you have to have skipped the Comms Relay cutscene. To do the skip, you press R on the exact frame (or previous frame, if input delay is enabled) that Viridian touches the trinket. Then, the gamestate will be immediately set to 0 (because of the gotoroom) and the cutscene will be skipped. Speedrunners of the main game, well, run the main game already, the only trinket in the Polar Dimension is not one you want to do a death warp at, and they have a habit of automatically skipping over the Comms Relay cutscene because they press R at the beginning of the run when Viridian teleports to Welcome Aboard, to warp back to the Ship and so they can leave rescuing Violet for later. So someone reported softlocking themselves by doing the trinket text skip in 2.3. The softlock is because they're stuck in a state where completestop is true but can't advance to a state that turns it off. How does this happen? It's because they pressed R too late and interrupted the gamestate sequence. In 2.2 and previous, if you're in the gamestate sequence then you can't press R at all, but 2.3 removes this restriction (on account of aiming to prevent softlocks). So only on the very first frame can you death warp and interrupt the gamestate sequence before it happens at all. Anyways to fix this, just turn completestop off automatically if we're in gamestate 0 and there's no script running. This softlock was reported by Euni on the VVVVVV speedrunning Discord. --- desktop_version/src/Game.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index 3c28290f..0d5b89d9 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -739,6 +739,7 @@ void Game::updatestate(void) if (!script.running) { hascontrol = true; + completestop = false; } break; case 1: