Dessyreqt / alttprandomizer

The Legend of Zelda: A Link to the Past Randomizer
178 stars 30 forks source link

C3202862 - Bumper Cave HP Missing CanLiftLightRocks #281

Closed Newlife88 closed 7 years ago

Newlife88 commented 7 years ago

So the power gloves are in Ganon's Tower, the titan's mitts are in the flooded room in Swamp Palace and the flippers are in the bumper cave. There is no way (casually) to get to those items. Thanks

BlueViper85 commented 7 years ago

This occurred because the BumperCave doesn't explicitly check for CanLiftLightRocks

CanAccessNorthwestDarkWorld DOES include this logic; however, it includes a path that doesn't require lifting light rocks. It's my opinion that CanAccessNorthwestDarkWorld is accurate and shouldn't be changed, and CanLiftLightRocks(have) should be added as a requirement for this specific cave in the Casual version.

I went through each step of CanAccessNorthwestDarkWorld and wrote out each step. I'll go ahead and paste that here in case there's a flaw in my reading of this function:

You have to have the moon pearl AND one of the following must be true:

You must have the Hammer and CanLiftLightRocks

If that evaluates to false, then you must have the Titan's Mitt

If that evaluates to false then, it determines if you can get the mastersword, which includes logic for being able to lift.

If THAT evaluates to false then it says you have to have the cape. If that's false it stops whatever item it's looking to place wont' be placed.

So let's say you have the cape and can't get the master sword. Then this section evaluates to True. In that instance, you also need one of these other things to be true in addition to having the cape: You must have the hookshot AND either the ability to lift rocks, the hammer, or flippers.

If you have ither the hammer or flippers and can't lift light rocks, this whole thing still evaluates to True and places the item. Which is fine if it's strictly in the Northwest Dark World (hence why I don't think this specific function should be changed)

ChristosOwen commented 7 years ago

This is fully accurate and I agree. This exact issue was logged and fixed I think in v5 for v6 release so must have simply dropped off somewhere, or been accidentally missed off. Yay, a nice easy one!

ChristosOwen commented 7 years ago

For simplicity, this is what needs to replace the existing logic:

                Region = Region.DarkWorld,
                Name = "Piece of Heart (Dark World - bumper cave)",
                Address = 0x180146,
                CanAccess =
                    have =>
                    CanAccessNorthWestDarkWorld(have)
                                && CanLiftLightRocks(have)
                                && have.Contains(InventoryItemType.Cape)
Radagast81 commented 7 years ago

Yeah, the logic for CanAccessNorthwestDarkWorld is absolutely correct and but the logic for the bumper cave misses that there is a rock before the cave that you have to lift to get access. Perhaps the logic for CanAccessNorthwestDarkWorld initialy required CanLiftLightRocks and has changed since then. => One should ever add all requirements to the logic that are needed even if a used macro implies some of these. So the logic becomes independent from the macros and changes on the macro that soften the requirements don't break the logic for single locations...

ChristosOwen commented 7 years ago

We did have this explicitly listing the exact requirements, it either fell off or didn't get fixed initially when it was reported. No worries though :)

BlueViper85 commented 7 years ago

The fix for this issue has been applied to the base code and will be available when the next version is released (no ETA). Closing this issue since a fix has been applied.