Fix superslide Rainbow Bridge CS softlock if not unshielding#2591
Open
djevangelia wants to merge 1 commit into
Open
Fix superslide Rainbow Bridge CS softlock if not unshielding#2591djevangelia wants to merge 1 commit into
djevangelia wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Prevent softlock if supersliding into Rainbow Bridge CS and never unshielding. Fixes #2008.
During superslide player is stuck in action
WaitForPutAwayin order to lift the bomb. As long as player is shielding, player cannot exit that function. Further, while inWaitForPutAway, player cannot enterCSActionaction function because the function necessary to do that isn't run, even though acsActionis set that should force player into a cutscene. So, if player superslides into a cutscene and never stops shielding, thecsActionis never removed and as soon as player drops shield, player will enterCSActionaction function which cannot be exited.This fix in
WaitForPutAwaychecks if player is outside Ganon's Castle and then if player has acsActionset. If both are true,WaitForPutAwaywill continue as if the "wait" condition is fulfilled and run the next planned function, exitingWaitForPutAwayand getting a new action function that can properly enter a cutscene.This fix is thus specific to outside Ganon's Castle. Of course, other scenes may be added (or inversely, some excluded) and other conditions can be added as needed.
Now I like fixing bugs, but this feels more like a skill issue. If you use a glitch to enter a cutscene, maybe you should know not to hold shield the entire cutscene. If there was shortage of space I'd slash this fix, but if it is deemed a good addition, here it is.
Disassembly
Player_Action_WaitForPutAwayhttps://gist.github.com/djevangelia/57d4aa0d431ac4258064040fe4e2579eTesting
Tested in ares recent nightly release and Project64 3.0.1.
Looks like this: https://www.youtube.com/watch?v=zVX7bHytmvQ (softlock, prevent softlock, fix, Minuet not affected)
Also tested lifting the heavy block outside GF fountain (normally a cutscene) which works.
This has to be tested by someone who can do a real bomb superslide without Nayru. There shouldn't be a difference between them - both should be in
WaitForPutAwayduring the superslide - but just in case.(Note: if using Nayru to test, make sure that you do not enter taking damage animation, only block; supersliding into cutscene with
DamageReactionaction function works fine because it runs function to enter cutscenes)