Oblivion talk:Glitch Hunting

From PRCLive 100% Speedrun Wiki
Revision as of 02:39, 25 January 2022 by MeemawHustlin (talk | contribs) (Created page with "This discussion page is reserved to act as an archive of glitch hunting projects that have been resolved, either through finding a direct solution or a workaround to the problem proposed. ==Fixing the Wait Timer Bug== '''This has not been solved, but a separate workaround has been achieved.''' ''See here: Class Reset'' When you skip the tutorial exit via load warping, you gain access to the use of the Class Reset Glitch but lose the ability to...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This discussion page is reserved to act as an archive of glitch hunting projects that have been resolved, either through finding a direct solution or a workaround to the problem proposed.

Fixing the Wait Timer Bug

This has not been solved, but a separate workaround has been achieved. See here: Class Reset

When you skip the tutorial exit via load warping, you gain access to the use of the Class Reset Glitch but lose the ability to manipulate NPCs with the wait timer. This results in having to use an excessive amount of setups to spawn NPCs in the right locations, incurring a significant time loss compared to how much time Class Resetting could potentially save.

From analyzing the Construction Set, here is what we know:

  • Exiting the sewer triggers the door’s CGSewerExitScript script which calls setstage MQ01 88. This quest’s stage 88 calls a script that includes setinchargen 0. We have confirmed that this command is what fixes the wait timer bug by entering it as a console command on a “broken” save file and seeing that the save file is now able to wait to move NPCs again.
    • setinchargen 0 appears to not be present in any other scripts in the game, with the only other setinchargen being it set to 1 at the very start of the game.
  • No variation of setstage MQ01 88 or set MQ01.stage to 88 is anywhere else in scripts.
  • Manually console commanding setinchargen 0 does not prevent the player from activating the sewer exit popup. In the CGSewerExitScript that calls all of this, the popup is set to appear if IsActionRef player == 1 && getstagedone MQ01 88 == 0 meaning that if we could sequence break the tutorial quest to be below stage 88 somehow after exiting we could make the popup appear a second time.
    • Attempting to use console commands to directly alter a quest stage to be lower than its current stage does not work. It seems this isn’t possible.
  • The purpose of all of this is to call showclassmenu so if we can find a way to do that outside of the tutorial then we'd have more options. However, this command only appears twice in the game, triggered by Baurus and by the sewer exit.
  • The sewer exit actually still checks for a button input from a popup regardless of if it passes the check to display the popup in the first place. This could potentially mean we could inject a different button value that matches the value we need for it to run showclassmenu. The scope of the getbuttonpressed function may make this impossible.
    • According to the Oghma script and Meridia Shrine script, we have two options for doing this:
      1. Injecting the “Path of Spirits” from Oghma Infinium, which gives us a getbuttonpressed value of 2, matching the value needed for showclassmenu.
      2. Choosing the Mort Flesh offering at Meridia’s Shrine when we have bonemeal, ectoplasm, and mort flesh in our inventory for the same return value.
    • Trying various combinations of inputs, especially ones related to the Gold Dropping Glitch and Load Warping, have been tested but with no success currently.