Conversation
| !soh/soh/Enhancements/randomizer/location_access/gerudo_fortress_regions.png | ||
| !soh/soh/Enhancements/randomizer/location_access/gerudo_fortress_regions_no_labels.png | ||
|
|
There was a problem hiding this comment.
| !soh/soh/Enhancements/randomizer/location_access/gerudo_fortress_regions.png | |
| !soh/soh/Enhancements/randomizer/location_access/gerudo_fortress_regions_no_labels.png |
think these paths are wrong given this is one level deep
|
-1 to basing names colors in arbitrary image Some descriptive name suggestions:
|
|
I'd also like to have actual names instead of colors but we haven't found a good set yet.
|
|
Oh, wasn't sure about 2nd vines. But that helps even more, since names can be around |
|
Good: Salmon: Enough for now: Red: Adjusted for vines:
Left: Green, Magenta, Orange, Violet I'll try some more suggestions, but these 4 are rough
(edit: also overlooked Lime Green, maybe |
|
I think that |
|
Wading into the name discussion:
|
Pepper0ni
left a comment
There was a problem hiding this comment.
Couple of small things, will give a deeper review later
soh/soh/Enhancements/randomizer/location_access/overworld/gerudo_fortress.cpp
Outdated
Show resolved
Hide resolved
soh/soh/Enhancements/randomizer/location_access/overworld/gerudo_fortress.cpp
Outdated
Show resolved
Hide resolved
Pepper0ni
left a comment
There was a problem hiding this comment.
A more in-depth review of the logic and some cleanups.
soh/soh/Enhancements/randomizer/location_access/overworld/gerudo_fortress.cpp
Outdated
Show resolved
Hide resolved
| Entrance(RR_GF_GROUND_GREY, []{return true;}), | ||
| }); | ||
|
|
||
| areaTable[RR_GF_GROUND_RED] = Region("GF Ground Red", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {}, { |
There was a problem hiding this comment.
Is there any reason not to merge red with RR_GF_GROUND_BOTTOM? this would actually be a nice solution for what to name red.
There was a problem hiding this comment.
RR_GF_GROUND_RED could be merged with RR_GF_GROUND_BOTTOM but RR_GF_GROUND_BOTTOM as a name doesn't really fit for both areas combined.
soh/soh/Enhancements/randomizer/location_access/overworld/gerudo_fortress.cpp
Outdated
Show resolved
Hide resolved
| Entrance(RR_GERUDO_TRAINING_GROUND_LOBBY, []{return ctx->GetDungeon(GERUDO_TRAINING_GROUND)->IsVanilla();}), | ||
| Entrance(RR_GERUDO_TRAINING_GROUND_MQ_LOBBY, []{return ctx->GetDungeon(GERUDO_TRAINING_GROUND)->IsMQ();}), | ||
| Entrance(RR_GERUDO_FORTRESS, []{return true;}), | ||
| Entrance(RR_GF_GROUND_BOTTOM, []{return true;}), |
There was a problem hiding this comment.
I'm pretty sure this is already the case, but getting caught always gives access to GROUND_BOTTOM right?
There was a problem hiding this comment.
I'm not sure on how exactly getting caught is handled in every case as iirc it puts you in different places depending on if you have hookshot or not and on if ER is enabled or not
There was a problem hiding this comment.
It's probably worth doing a quick testing sweep and noting them down in a comment, as coming out of GTG without gcard gets you instantly caught.
| Entrance(RR_TH_KITCHEN_MAIN, []{return logic->CanPassEnemy(RE_GERUDO_GUARD) || ctx->GetTrickOption(RT_GF_KITCHEN);}), | ||
| }); | ||
|
|
||
| areaTable[RR_TH_KITCHEN_MAIN] = Region("Thieves Hideout Kitchen Bottom", "Thieves Hideout", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, { |
There was a problem hiding this comment.
I'm not sure what I think about this kitchen layout, while it functions just fine it's not how I previously handled areas where merely existing in them requires an item.
How I handled it before was that the offending item is checked on entry, and then I mark the area as "Assuming this thing", figuring it is marginally more efficient (less looping checks for that thing) and less cluttered in the logic. That being said it would force RR_TH_KITCHEN_TOP to be split if done here and is probably worse for reading the check's logic in the check tracker so there are upsides of this approach.
Regardless of what we do here, we should probably come up with a general policy, even if that policy is doing things case by case (Goron tunic checks in fire were the main reason I had for doing it my way, as there would be a lot of them repeated in the temple otherwise.)
There was a problem hiding this comment.
note a general policy with assumptions can't cross doors after #5105 (even thinking how to adjust fire timer by marking hot rooms & hot rooms would say how long it takes to get from entrance A to B, & logic would chain those times together)
There was a problem hiding this comment.
That makes sense, then this kitchen layout is fine.
I did theorise a system for timer tracking between areas which would solve that fire temple problem, but it's not a small thing and was originally thought up to handle adult trade quest routes in entrance rando, so may need some adaption.
soh/soh/Enhancements/randomizer/location_access/overworld/gerudo_fortress.cpp
Outdated
Show resolved
Hide resolved
| return GetSmallKeyCount(SCENE_TREASURE_BOX_SHOP) >= requiredAmountGlitchless; | ||
|
|
||
| case RR_GERUDO_FORTRESS: | ||
| case RR_GF_GROUND_BOTTOM: |
There was a problem hiding this comment.
Probably out of scope, but this should really take an area instead of a region.
soh/soh/Enhancements/randomizer/location_access/overworld/thieves_hideout.cpp
Outdated
Show resolved
Hide resolved
|
Another name idea for |
|
Renamed all regions except |
|
|
||
| areaTable[RR_GF_GROUND_RED] = Region("GF Ground Red", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {}, { | ||
| //Exits | ||
| Entrance(RR_TH_NORTH_F1_CARPENTER_AREA, []{return true;}), |
There was a problem hiding this comment.
Can reach upper vines with long shot
There was a problem hiding this comment.
So you saw the same zfg stream I did That shot was from salmon not red.
There was a problem hiding this comment.
I even looked at map color, this is part of trouble with color coding. Still, applies to RR_GF_GROUND_OUTSIDE_GTG. Requires Gerudo Card
It'd be good to review hookshot access here in general. It's particularly important for Shuffle Climb
There was a problem hiding this comment.
Went & checked around, from what I could see only other useful case is long shot can go from crate alcove to lower vines
There was a problem hiding this comment.
I added the connections.
Pepper0ni
left a comment
There was a problem hiding this comment.
did a pass over the logic, found a bunch of issues and am giving ideas for better carpenter names which seem to be desperately needed.
| Entrance(RR_GF_HBA_RANGE, []{return logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD);}), | ||
| Entrance(RR_GF_GROUND_BOTTOM, []{return true;}), | ||
| Entrance(RR_GF_ROOFTOP_ABOVE_GTG, []{return logic->IsChild || logic->CanPassEnemy(RE_GERUDO_GUARD);}), | ||
| Entrance(RR_GF_ROOFTOP_TOP_OF_UPPER_VINES, []{return logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && logic->CanUse(RG_LONGSHOT);}), |
There was a problem hiding this comment.
To prepare for equip swap, this should have IsChild as an OR to gcard
| areaTable[RR_GF_GROUND_RED] = Region("GF Ground Red", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {}, { | ||
| //Exits | ||
| Entrance(RR_TH_NORTH_F1_CARPENTER_AREA, []{return true;}), | ||
| Entrance(RR_GF_GROUND_GREY, []{return true;}), |
There was a problem hiding this comment.
You can longshot from here to the jail windowsill, and from there jump to Yellow. It is also possible to reach Lime-Green from windowsill with a hovers backwalk into backflip but that's a trick.
The logical issue here is that it's possible to get onto the windowsill with only a hookshot, but only from jail, and there's no way to get thrown in jail if you have a g-card. The fix for this is likely some rando feature to get arrested while having the g-card, until then we cannot logically include jail + hookshot as a way to windowsill.
| // 1 crate | ||
| }, { | ||
| //Exits | ||
| Entrance(RR_GF_GROUND_RED, []{return logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD);}), |
There was a problem hiding this comment.
backflipping to red/bottom without taking damage isn't obvious, you have to go wide and aim for the rock which somehow doesn't hurt you, but you can do it without g-card if you time your backflip well. You also don't need a g-card if we say that getting caught in fortress always sends you to bottom. As getting arrested and sticking the landing have the same logical outcome.
More obvious and common is to backflip to yellow, take 1 heart of fall damage, and then walk down to Red. top ledge > yellow is definitely in logic with damage.
It's also possible with more hovers-backflip shenanigans to reach limegreen, this time going from the crate to the raised wall on the right, using the backflip to clear the rail, then carefully walking along the wall to reach the end and hover w/rolls to limegreen. This is more difficult than the windowsill movement but also skips taking damage.
| //Exits | ||
| Entrance(RR_GF_ROOFTOP_YELLOW, []{return true;}), | ||
| Entrance(RR_GF_GROUND_RED, []{return true;}), | ||
| Entrance(RR_GF_GROUND_GREY, []{return true;}), |
There was a problem hiding this comment.
You can longshot the chest from here, you can also hovers or do a kinda tight jump as adult to RR_GF_ROOFTOP_NEAR_GS, and jump down to RR_GF_ROOFTOP_BELOW_GS, which becomes relevant if the player gets here via hovers tricks from the jail area.
| Entrance(RR_TH_SOUTH_F1_CARPENTER_AREA, []{return true;}), | ||
| Entrance(RR_GF_STORMS_GROTTO, []{return logic->IsAdult && logic->CanOpenStormsGrotto();}), | ||
| Entrance(RR_GF_GROUND_GREY, []{return true;}), | ||
| Entrance(RR_GF_ROOFTOP_TOP_OF_UPPER_VINES, []{return logic->CanUse(RG_LONGSHOT);}), |
There was a problem hiding this comment.
This should be top of lower vines.
| areaTable[RR_TH_BREAK_ROOM] = Region("Thieves Hideout Break Room", "Thieves Hideout", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, { | ||
| //Locations | ||
| LOCATION(RC_TH_BREAK_ROOM_POT_1, logic->CanBreakPots()), | ||
| LOCATION(RC_TH_BREAK_ROOM_POT_2, logic->CanBreakPots()), |
There was a problem hiding this comment.
These pots are under constant watch by a purple guard, so a way to deal with them or boomerang is required
| }, { | ||
| //Exits | ||
| Entrance(RR_GF_ROOFTOP_YELLOW, []{return true;}), | ||
| Entrance(RR_GF_TOP_LEDGE, []{return true;}), |
There was a problem hiding this comment.
Moving between the top ledge and the main section here needs hookshot to get over a wall. the corridor behind the blockage should be a separate region.
| areaTable[RR_TH_KITCHEN_MAIN] = Region("Thieves Hideout Kitchen Bottom", "Thieves Hideout", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, { | ||
| //Locations | ||
| LOCATION(RC_TH_KITCHEN_POT_1, logic->CanBreakPots() && logic->CanPassEnemy(RE_GERUDO_GUARD)), | ||
| LOCATION(RC_TH_KITCHEN_POT_2, logic->CanBreakPots() && logic->CanPassEnemy(RE_GERUDO_GUARD)), |
There was a problem hiding this comment.
These pots can also be reached from top with rang, skipping the need to dodge the guards
| }, { | ||
| //Exits | ||
| Entrance(RR_GF_GROUND_RED, []{return true;}), | ||
| Entrance(RR_GF_GROUND_NEAR_GROTTO, []{return true;}), |
There was a problem hiding this comment.
This comes out in RR_GF_ROOFTOP_BOTTOM_OF_LOWER_VINES not RED
| }, { | ||
| //Exits | ||
| Entrance(RR_GF_ROOFTOP_BELOW_GS, []{return true;}), | ||
| }); |
There was a problem hiding this comment.
The dead end carpenter with 1 exit does not have any pots. Combined with the 2 pot carpenter stretching from south 1F to north 2F is why we need to rename these guys and the rooms to be less bad.
DEAD_END_CARPENTER is 1, POT_CELL_CARPENTER is another. STEEP_SLOPE_CARPENTER kinda works for the 2 pot guy, which just leaves what to name the initial carpenter.
|
for carpenter names in #4949 I've been calling them by name based on their names in code (Ichiro, Saboor, Jiro, Shiro) |
|
That makes sense, though it'll probably take some time for people to get used to those names and area names might want to be more obvious. I checked N64 and they seem to count torches(?) which I didn't even notice. |

Splits the current
RR_GERUDO_FORTRESSregion into multiple regions in order to untangle logic.The rooftops are named by color (included clarifying images).
Build Artifacts