-
Notifications
You must be signed in to change notification settings - Fork 236
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
Logic Definitions are Out of Date #1573
Conversation
Fixes #1554. |
Hellmode preset needs to be updated to include the new tricks and remove the old one that no longer exists Besides that, as far as I can tell, everything here seems good. Admittedly the MQ forest change is over my head (especially as I don't know MQ) so if someone else could verify I'd feel better about that. |
I don't normally update things like the changelog or hellmode when I do these logic updates. (I wouldn't be surprised if those things were more out of date than just what's going on here.) I hope that's not a problem? I don't think the rando balks at the least if you try to pass it tricks that don't exist. If not then I would suggest just trying to remember to update hellmode prior to any release. Not gonna lie the MQ forest one is a bit over my head as well. Definitely the most challenging change in this PR. Unfortunately the person that I trust most to look over logic-related PRs is not longer interested in helping this project. :( |
The changelog is usually handled by the dev preparing the release, but hell mode should be updated as part of the PR. I can send a PR updating it to your branch after my review if you don't want to update it yourself. |
Do you know if anything else is missing from that preset? If there are no new settings that should be added and the only trick changes are from this PR, then I will update it. But I didn't think that was likely to be the case. |
Not to my knowledge, it's been kept up to date with the latest PRs afaik. If there's something else missing, it can be handled in a separate PR. |
An event is included in the playthrough by listing it as an item in ItemList.py.
Probably. As such, it makes sense not to include it for the heart container or medallion locations. But I'm wondering if it should be renamed to |
I spotted the issue with using that event after implementing everything else and genning a few seeds to look for obvious problems. So it was a pretty last-minute change. To be fair I guess, stepping into the blue warp is what matters, not just defeating morpha, maybe 'morpha boss room clear' is the fully accurate way of putting it, so I don't think changing the name of the event matters too much. |
There are definitely tricks that I didn't add that aren't in this preset. I'm not sure if they're all from boss entrance shuffle only or if there are more of them. Added/renamed the tricks that I touched on; hopefully I didn't miss any. It's actually really easy to see what tricks are missing. Not so easy to see if tricks are hanging around that don't exist. Here are the missing ones:
All from dungeon shortcuts (though DC boss floor was touched on in boss entrance shuffle). The two tricks for jabu ceiling switch were added by me just now b/c I touched on them, but they were from boss entrance shuffle. |
Note: Some of the 'modified' tricks weren't present and needed to be added to the preset, so there are likely more missing tricks that will need to be added later. I only added the tricks that I touched on in this PR, so somebody will still have to update the entire list later.
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.
No logic issues spotted, just some typos and trailing whitespace. I didn't review MQ because I'm not familiar enough with it.
I have no idea how these extra spaces keep getting in there. Co-authored-by: Fenhl <[email protected]>
Don't worry about those conflicts in the OW file. It's just two ways of writing the same fix. You can take whichever way you like better. Now let me try again to break down the trick MQ Forest line. Access to outdoor ledge the usual way by climbing up and falling down is still handled by the old region access. This tricky line is about accessing it early from the block room. To do this you're going to need some way of hitting the hallway switch to remove the glass block. First,
checks if you could go there the normal way. Since it's possible that adult might have to do this to open the way for child to go through and do something. Besides that we need an event to cover all of the ways you might hit the hallway switch.
This allows hitting it as child with the Boomerang. Otherwise you will need to use the jumpslash trick.
To jumpslash the switch we have to get in front of it somehow. Hover Boots is one way.
Besides that we will have to jump from the glass blocks. In order to jump from the glass blocks we're going to need some way of spawning them by hitting the switch at the top of the room. You can use the bombchu trick.
Or you can climb to the top as adult and hit the switch directly. Child can't climb the whole way up, but from halfway up he can get a line of sight on using the slingshot to hit it.
Once the switch has been hit, you're going to actually have to get on top of the glass blocks to be able to jump from them, which can be done with either the Hookshot on the targets that you've spawned, or you climb up again using Strength.
And then once you're on the block you're going to need some method of actually jumpslashing. Kokiri Sword's range is unfortunately too short for this.
Finally with the glass block gone you still need some way to get up to the ledge. You can use Hovers or Hookshot.
Or with Strength to push the blocks, you can then perform the jumpslash recoil trick.
Let me know if anything about this explanation seems unclear. I felt that the two-tiered access from the block room that we had here before, one from the bottom of the room and one from the top, was clever once but wasn't really helping anymore b/c things were just getting too tangled together, I dunno how to explain. |
ok, thanks to the breakdown I think I understand it. Thanks r0b! |
Logic Update:
With this first pass I wanted to tackle what I felt were some of the more pressing issues in the logic currently. I have an absolutely gigantic list of new tricks still to parse though. It's gonna be a rough time.
Other Logic PRs that Exist at the Moment of Writing:
Assorted Changes:
-- You can jump from the bean to the Lower ZR PoH or to the Bug Shrub. This is relevant now that child access is not required to plant the bean. I decided to rewrite these lines without checking "is_adult" since if you're not child you must be adult. I put is_adult there originally not really thinking about it, and it was pointed out to me that it wasn't needed, but then some people requested is_adult stay for 'readability', but I'm over it. You're increasing the number of parentheses and that's just asking for trouble. Feel free to disagree, lol. I also implemented it as here(can_plant_bean), which technically works, though only the plant_beans part of that helper is actually relevant. It's kind of overkill but I think it makes more sense written the same way as all of the other bean rides.
-- Bean plant fairies can't be summoned as adult. It used to be that the can_plant_bean helper always checked that you were child, since you had to be child to plant beans, and bean plant fairies relied on this fact to avoid having to check is_child themselves. Under plant_beans this is no longer the case, so I added is_child to all bean plant fairies. I tested if the DMT bean plant fairy could be spawned while the cavern boulder was still there, and it could not be.
-- Riding the DMT Bean normally requires strength or explosives for child to be able to plant it, but this is not longer the case if beans are already planted. I added plant_beans as an alternative to Strength or Explosives, affecting the DMT PoH, the bean trick for lower red rock GS, and DMT Summit access. I considered making DMT Bean planting an event. Certainly there are several ways this could have been implemented.
-- For the vanilla Jabu ceiling switch, the parantheses were wrong. Luckily it didn't cause an actual bug.
-- Now with boss entrance shuffle, tricks were add to hit the vanilla Jabu preboss switch. One of those tricks allowed using the slingshot or bow from near the entrance into the room. But longshot works just as well and seems to have been forgotten.
-- However, since dungeon shortcuts were added, longshot was in default logic for obtain the skulltula in MQ Jabu through about the same means. I could see it either way, but perhaps having this longshot usage in default logic was a bit of an overreach. Because the two tricks work about the same way, it's been quite a stretch, but I did my best to combine the roughly equivalent tricks for the vanilla preboss switch and MQ skulltula together. The alternative would be to split them into two tricks for MQ and vanilla, only for the reason that it's difficult to succinctly describe them together as the same trick.
-- There's one last thing to mention here though is that the hookshot alone can be used on both the switch and the skulltula, and it's maybe more obvious than using the longshot from over by the door. If you climb up the vines and stand on the right edge of the platform, you can simply aim the hookshot around the glass at your target. The bow and slingshot can both use this exact same method, though it seems a bit harder with those weapons, I think because perhaps Link holds the hookshot a little bit farther to the right.
-- The other trick that was added for the vanilla Jabu preboss switch uses Bombchus. I didn't want to combine the bombchu trick together with the previous trick for bow/slingshot/hookshot because these are quite different methods with different knowledge and skills required. After investigating I found another method of using explosives to hit that switch where adult uses the hover boots to get around the glass, then uses a timed bomb throw to hit the switch. I feel that this method of hitting the switch is novel enough to warrant inclusion as well, and while it too is quite unique from the other methods, at some point I have to start worrying about overdosing on tricks all for the same thing, and so I opted to combine this method together with the bombchu method as part of a "with explosives" trick. (I tried to hit the switch with only bomb bag, no hovers, and it seemed close, particularly as child, but I couldn't quite make it work. It might still be possible, though.)
-- So recap: Fix the brackets. Add longshot to the bow/slingshot trick for the vanilla Jabu switch. Combine MQ Jabu's skulltula into the trick. Reduce the longshot requirement down to just hookshot. Add hovers+bombs to the bombchus trick, renaming it to "with explosives".
-- I added a region to vanilla forest for deal with the skulltula in the first hallway, which was long overdue. That doesn't really relate to this I just didn't want it hanging over my head anymore as I was trying to figure the rest of this place out.
-- I updated the jumpslash trick tooltip to refer to the recoil method, and updated the logic to allow any means of jumpslash, not just as adult. There was no need to check for a weapon for the floormaster because a sword item was required to reach this area as child anyway. You have guaranteed access to nuts in order to help calm the babies, but still it is a minimum 5 sticks. That's still manageable enough, and since it's already locked behind a trick I think it's not worth worrying about. And of course the skulltula in this courtyard has been updated to be collected with Boomerang. The comments were a bit too strong about what child couldn't do, so I had to rework those a bit.
-- In MQ forest it could be necessary for adult to defeat the Stalfos for child to pass through. So the logic for beating that Stalfos needed to be wrapped in a here(), except there wasn't actually a region for that so I had to add one for that too.
-- I added a new trick for using the Boomerang to hit the hallway switch. This switch is permanent so it's conceivable that child might have to hit the switch like this for adult to pass through later. Child can also boomerang trick throw the shortcut switch at the top, but since that's logically obsoleted by the new trick, there was no reason to include that.
-- I added the ability for child to perform the recoil to the courtyard ledge in MQ Forest as well. I had something kind of clean before where there was early access to this ledge from both the before after block puzzle regions, but the fact that child can only halfway climb the block puzzle kind of ruined that, so I opted to move everything (except the normal passing through and using small keys route) into the before block puzzle region. This line is absurdly complicated so I will try to explain it to you, and maybe we're just going to pray it's correct because it's really hard to wrap one's mind around.
-- First you need to hit the lower switch to remove the glass blocks. This needs to be an event because one age could potentially open access for the other. I used two events actually, an at() for reaching the switch normally (again, I opted not to include the 'normal' route as part of this logic, so that's why I had to use at() as well instead of one big here()), and a here() event for all methods of jumpslashing the switch through the block.
-- There's the hover boots method of getting in front of the switch, and then the other methods have to hit the shortcut switch at the top in order to jump from the glass blocks. Climbing up normally as adult, or the usual bombchu trick, can be used to hit the switch, but I also included using the Slingshot. It's kind of weird to recognize that you have the option to use the Slingshot there, and I think if it mattered without any tricks it would still be default, but you do have to have tricks enabled before it's relevant, so I don't think it's worth worrying about.
-- Of course to perform the jumpslash from the blocks, you must be able to get on top of them somehow, which, after hitting the switch at the top, requires strength or hookshot, and then you must have a weapon with which to actually jumpslash the hallway switch.
-- Kokiri Sword is too short to reach. Sticks does work and has been included, but they're much more precise than the other methods of using the jumpslash trick. I think the problem is that if you jumpslash even a little bit too early, the stick breaks and becomes too short to hit the switch. It's a bit of a shame that a trick that used to be borderline default logic will now be tied together with this much more precise method, but I think it's the only place it fits and luckily it's not relevant unless the recoil trick is also on.
-- And then finally once the lower switch has been hit, you need some method of getting up there early, either using hookshot, hovers, or the jumpslash recoil trick. Please look this over very carefully and think very hard about whether or not I might have missed anything.
-- In the future I may add a trick for hitting the lower hallway switch with explosives. Only really relevant is throwing bombs at the switch from up top as child. This is an absurdly precise throw and I don't feel completely comfortable adding it as a trick until I understand it better. Bombchuing the switch from below is also relevant as a means to skip sticks, and we don't normally add tricks just to skip sticks or nuts, but since there's room for it by combining it with throwing bombs at the switch, maybe it could be added. I know how to implement this but I just didn't feel it was important enough to include at this time.
Newly-Added Tricks:
Things I investigated but didn't make changes: