-
Notifications
You must be signed in to change notification settings - Fork 42
Add Open DHC + Pedestal goal #106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: staging
Are you sure you want to change the base?
Conversation
Added "Open + Ped" goal. Makes the DHC open and requires you to activate pedestal from within the DHC sanctuary. This probably still has some problems with Pedestal Items and the DHC BK Reward settings. I haven't fully tested them with all 5 goal settings yet.
All_Requirements_Met; `ALLREQUIREMENTS`; requirementPrizeItem:Define:FirstByte, requirementPrizeSub:Define:SecondByte; Helpers.GotSwords `GOTELEMENTS` `DHC_FIG` `DHC_AD`; `REQREWARD` | ||
|
||
!ifdef - OPENPED | ||
AccessDHC; Helper;; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if this is the right way to set the DHC access or if it's the only rule that needs updating
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be better to follow this up with an !else
block that handles the stuff from lines 3772 to 3782. Otherwise the AccessDHC
would get overwritten. (Or actually I am not sure what would happen, it might somehow add 2 locations with the same name, but in either case this is undesired behavior.)
#ifdef noDHC | ||
String("pull the pedestal.") | ||
#ifdef vaatiWarp | ||
String("pull the pedestal and"); BYTE 0x0A; String("defeat Vaati in sanctuary."); BYTE 0x0A; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a clear location for vaati to differentiate between the vaati in sanctuary (vaatiWarp) or regular dhc vaati.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need to be careful with the line breaks at the end of lines 88 and 99 here, they would cause an empty line to be drawn. The texts are good!
BYTE mC81 mC82 mC83 mC84 mC85 mC86 mC87 mC88 mC89 mC8A mC8B mC8C mC8D | ||
|
||
dhcGuards: | ||
BYTE 0x02 // move the dhc guards out of the way of the south entrance |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Always moved the guards since they don't particularly impact anything except the vaatiWarp and openPed goals
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tiny nitpick: With Normal DHC, you can normally see the guards afer pulling the pedestal, and they only disappear after reaching the entrance room (which is the vanilla behavior). It's only visual in Rando, but I think it would be nice to retain that, which could be achieved my putting line 27 inside an #ifdef noDHC
.
I started this branch from my old Fast Vaati branch since the staging branch was giving me logic parse errors at the time that I created it. I'll solve the merge conflict when that's resolved on stanging (unless it's an issue with my environment, in which case I have no idea why) |
#undef noDHC | ||
#endif | ||
|
||
// Remove the check for already watched the stained glass cutscene so that it's repeatable |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is not the best placement for this block, since the code below this can unset openDHC
which could lead to unexpected behavior. Could you move this further down?
Additionally, have you made sure this cannot be used to win the game with the Open DHC option where you are supposed to beat Vaati? Either way, I think a define specific to ped goals should be used for the condition here instead of openDHC
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can move this block to a dedicated #ifdef pedGoal
since that's defined for both openDHC and openPed.
This line only removes the check !CheckLocalFlag(0x78)
in sub_StateChange_Sanctuary_StainedGlass
making the vaati cutscene repeatable after watching it. It's not tied to the triggering the goal itself. The goal code starts at line 70 and is only changed to be applied to when pedGoal
is defined (openDHC + openPed).
|
||
!ifdef - OPENPED | ||
AccessDHC; Helper;; | ||
!define - DHCBK - Items.Rupee5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the intention to make Vaati inaccessible by removing the DHC Big Key?
This line only removes the DHC Big Key from the vanilla location if Big Keys are set to Vanilla. With other settings it would still get placed like normal, for that it would have to be removed from the item pool. The Requirement Reward can also still give you the Big Key (and this is used as a small "hack" for Mystery because getting the DHC Big Key in this way may for the first time reveal that the requirements of the seed are met even if the key itself is completely useless, so changing the behavior here would break this trick). And for Removed Big Keys, the DHC door should be excluded (search for !eventdefine - dhcBigDoor
).
Unfortunately there are a lot of things to consider here.
Maybe the cleanest solution would be to replace the DHC Big Key door with a permanently closed door, then we could even leave the DHC BK in the game in all settings because it would be useless, just like we do with Removed DHC. The only other needed change then would be the Removed Big Key thing which is an easy change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the intention was to make Vaati completely unreachable. I figured removing the DHCBK was the easiest way to do it. My concern was that since DHC would still be open players would still be able to fight vaati and trigger the credits even thought that wasn't their set goal. Personally, I'd prefer to have vaati still fight-able but maybe disable the credits sequence when fighting him. I wasn't sure what the implications of that would be or even whether others would prefer that so I left the solution as it is now.
I agree that there's a lot more to consider. I'll try to play around with other possibilities to see if I can permanently close the door or remove credits on vaati.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think making Vaati fightable without ending the game would cause a lot of confusion, unless there was a very clear indication for this in the game. So I'd prefer if he wasn't fightable in this mode (or maybe only after the game has already been beaten).
This is unfortunately caused by a recent merge. It will be fixed in #103 . In the meantime for testing, it should be sufficient to set Small Keys to Universal. |
Added "Open + Ped" goal. Makes the DHC open and requires you to activate pedestal from within the DHC sanctuary.
This probably still has some problems with Pedestal Items and the DHC BK Reward settings. I haven't fully tested them with all 5 goal settings yet.