tentacle blocked pseudoregions

This commit is contained in:
Demur Rumed 2025-07-14 03:42:52 +00:00
commit b1dcb59427
2 changed files with 95 additions and 33 deletions

View file

@ -77,6 +77,7 @@ void RegionTable_Init_JabuJabusBelly() {
});
areaTable[RR_JABU_JABUS_BELLY_WATER_SWITCH_ROOM_NORTH] = Region("Jabu Jabus Belly Water Switch Room North", SCENE_JABU_JABU, {
//Events
EventAccess(&logic->JabuRutoIn1F, []{return logic->IsAdult || logic->HasItem(RG_BRONZE_SCALE);}),
}, {
//Locations
@ -119,9 +120,9 @@ void RegionTable_Init_JabuJabusBelly() {
//Exits
Entrance(RR_JABU_JABUS_BELLY_HOLES_ROOM, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_FORK_WEST, []{return logic->JabuRutoIn1F;}),
Entrance(RR_JABU_JABUS_BELLY_FORK_NORTH_WEST, []{return logic->JabuWestTentacle;}),
Entrance(RR_JABU_JABUS_BELLY_FORK_NORTH, []{return logic->JabuEastTentacle;}),
Entrance(RR_JABU_JABUS_BELLY_FORK_NORTH_EAST, []{return logic->JabuWestTentacle;}),
Entrance(RR_JABU_JABUS_BELLY_TO_FORK_NORTH_WEST, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_TO_FORK_NORTH, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_TO_FORK_NORTH_EAST, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_FORK_EAST, []{return logic->JabuRutoIn1F;}),
});
@ -136,13 +137,27 @@ void RegionTable_Init_JabuJabusBelly() {
Entrance(RR_JABU_JABUS_BELLY_FORKED_CORRIDOR, []{return true;}),
});
// this handles spawning in tentacle
areaTable[RR_JABU_JABUS_BELLY_TO_FORK_NORTH_WEST] = Region("Jabu Jabus Belly To Fork West", SCENE_JABU_JABU, {}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_FORKED_CORRIDOR, []{return logic->JabuWestTentacle || logic->TakeDamage();}),
Entrance(RR_JABU_JABUS_BELLY_FORK_NORTH_WEST, []{return logic->JabuWestTentacle;}),
});
areaTable[RR_JABU_JABUS_BELLY_FORK_NORTH_WEST] = Region("Jabu Jabus Belly Fork North West", SCENE_JABU_JABU, {}, {
//Locations
//ruto could theoretically clear this room, but it's hard because of the timer and she doesn't appear with you when you respawn after failing, which would force a savewarp
LOCATION(RC_JABU_JABUS_BELLY_COMPASS_CHEST, logic->CanKillEnemy(RE_SHABOM, ED_CLOSE, false, 9)),
}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_FORKED_CORRIDOR, []{return Here(RR_JABU_JABUS_BELLY_FORK_NORTH_WEST, []{return logic->CanKillEnemy(RE_SHABOM, ED_CLOSE, false, 9);});}),
Entrance(RR_JABU_JABUS_BELLY_TO_FORK_NORTH_WEST, []{return Here(RR_JABU_JABUS_BELLY_FORK_NORTH_WEST, []{return logic->CanKillEnemy(RE_SHABOM, ED_CLOSE, false, 9);});}),
});
// this handles spawning in tentacle
areaTable[RR_JABU_JABUS_BELLY_TO_FORK_NORTH] = Region("Jabu Jabus Belly To Fork North", SCENE_JABU_JABU, {}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_FORKED_CORRIDOR, []{return logic->JabuEastTentacle || logic->TakeDamage();}),
Entrance(RR_JABU_JABUS_BELLY_FORK_NORTH, []{return logic->JabuEastTentacle;}),
});
areaTable[RR_JABU_JABUS_BELLY_FORK_NORTH] = Region("Jabu Jabus Belly Fork North", SCENE_JABU_JABU, {
@ -151,7 +166,14 @@ void RegionTable_Init_JabuJabusBelly() {
}, {}, {
//Exits
//implied logic->CanKillEnemy(RE_BARI)
Entrance(RR_JABU_JABUS_BELLY_FORKED_CORRIDOR, []{return logic->JabuNorthTentacle;}),
Entrance(RR_JABU_JABUS_BELLY_TO_FORK_NORTH, []{return logic->JabuNorthTentacle;}),
});
// this handles spawning in tentacle
areaTable[RR_JABU_JABUS_BELLY_TO_FORK_NORTH_EAST] = Region("Jabu Jabus Belly MQ To Fork West", SCENE_JABU_JABU, {}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_FORKED_CORRIDOR, []{return logic->JabuWestTentacle || logic->TakeDamage();}),
Entrance(RR_JABU_JABUS_BELLY_FORK_NORTH_EAST, []{return logic->JabuWestTentacle;}),
});
areaTable[RR_JABU_JABUS_BELLY_FORK_NORTH_EAST] = Region("Jabu Jabus Belly Fork North East", SCENE_JABU_JABU, {
@ -159,7 +181,7 @@ void RegionTable_Init_JabuJabusBelly() {
EventAccess(&logic->JabuEastTentacle, []{return logic->CanKillEnemy(RE_TENTACLE, ED_BOOMERANG);}),
}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_FORKED_CORRIDOR, []{return logic->JabuEastTentacle;}),
Entrance(RR_JABU_JABUS_BELLY_TO_FORK_NORTH_EAST, []{return logic->JabuEastTentacle;}),
});
areaTable[RR_JABU_JABUS_BELLY_FORK_EAST] = Region("Jabu Jabus Belly Fork East", SCENE_JABU_JABU, {}, {
@ -221,6 +243,7 @@ void RegionTable_Init_JabuJabusBelly() {
areaTable[RR_JABU_JABUS_BELLY_NEAR_BOSS_ROOM] = Region("Jabu Jabus Belly Near Boss Room", SCENE_JABU_JABU, {}, {
//Locations
//can also use ruto
LOCATION(RC_JABU_JABUS_BELLY_GS_NEAR_BOSS, logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_BOMB_THROW)),
}, {
//Exits
@ -315,17 +338,11 @@ void RegionTable_Init_JabuJabusBelly() {
}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_HOLES_ROOM, []{return true /* logic->HasItem(RG_CLIMB) */;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_OUTSIDE_BIGOCTO, []{return logic->JabuWestTentacle;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_TO_BIGOCTO, []{return logic->JabuWestTentacle;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_WATER_SWITCH_ROOM, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_INVISIBLE_KEESE_ROOM, []{return logic->JabuNorthTentacle;}),
});
areaTable[RR_JABU_JABUS_BELLY_MQ_OUTSIDE_BIGOCTO] = Region("Jabu Jabus Belly MQ Holes Outside Big Octo", SCENE_JABU_JABU, {}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_HOLES_BASEMENT, []{return logic->JabuWestTentacle;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_BIGOCTO, []{return true;}),
});
areaTable[RR_JABU_JABUS_BELLY_MQ_WATER_SWITCH_ROOM] = Region("Jabu Jabus Belly MQ Water Switch Room", SCENE_JABU_JABU, {
//Events
EventAccess(&logic->MQJabuWaterSwitchLiftAccess, []{return logic->CanKillEnemy(RE_LIZALFOS);}),
@ -354,34 +371,57 @@ void RegionTable_Init_JabuJabusBelly() {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM, []{return logic->CanUse(RG_BOOMERANG);}),
//If some mode lets an age use sticks and not sling, and other use sling and not sticks, this needs changing
Entrance(RR_JABU_JABUS_BELLY_MQ_FORK_WEST, []{return logic->JabuEastTentacle;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_FORK_NORTH_WEST, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_FORK_NORTH, []{return logic->BlastOrSmash();}),
Entrance(RR_JABU_JABUS_BELLY_MQ_FORK_NORTH_EAST, []{return logic->JabuWestTentacle;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_TO_FORK_WEST, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_TO_FORK_NORTH_WEST, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_TO_FORK_NORTH, []{return logic->BlastOrSmash();}),
Entrance(RR_JABU_JABUS_BELLY_MQ_FORK_NORTH_EAST, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_FORK_EAST, []{return Here(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, []{return logic->CanUse(RG_FAIRY_SLINGSHOT) && logic->CanUse(RG_STICKS);}) || Here(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, []{return logic->HasFireSource();});}),
});
// this handles spawning in tentacle
areaTable[RR_JABU_JABUS_BELLY_MQ_TO_FORK_WEST] = Region("Jabu Jabus Belly MQ To Fork West", SCENE_JABU_JABU, {}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, []{return logic->JabuEastTentacle || logic->TakeDamage();}),
Entrance(RR_JABU_JABUS_BELLY_MQ_FORK_WEST, []{return logic->JabuEastTentacle;}),
});
areaTable[RR_JABU_JABUS_BELLY_MQ_FORK_WEST] = Region("Jabu Jabus Belly MQ Fork West", SCENE_JABU_JABU, {
//Events
EventAccess(&logic->JabuWestTentacle, []{return logic->CanKillEnemy(RE_TENTACLE, ED_BOOMERANG);}),
}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_TO_FORK_WEST, []{return true;}),
});
// this handles spawning in tentacle
areaTable[RR_JABU_JABUS_BELLY_MQ_TO_FORK_NORTH_WEST] = Region("Jabu Jabus Belly MQ To Fork North West", SCENE_JABU_JABU, {}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, []{return logic->JabuEastTentacle || logic->TakeDamage();}),
Entrance(RR_JABU_JABUS_BELLY_MQ_FORK_WEST, []{return logic->JabuEastTentacle;}),
});
areaTable[RR_JABU_JABUS_BELLY_MQ_FORK_NORTH_WEST] = Region("Jabu Jabus Belly MQ Fork North West", SCENE_JABU_JABU, {}, {
//Locations
LOCATION(RC_JABU_JABUS_BELLY_MQ_GS_TAILPASARAN_ROOM, logic->HasExplosives() && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)),
}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_TO_FORK_NORTH_WEST, []{return true;}),
});
areaTable[RR_JABU_JABUS_BELLY_MQ_TO_FORK_NORTH] = Region("Jabu Jabus Belly MQ To Fork North", SCENE_JABU_JABU, {}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, []{return logic->BlastOrSmash();}),
Entrance(RR_JABU_JABUS_BELLY_MQ_FORK_NORTH, []{return logic->BlastOrSmash() /*&& str0*/;}),
});
areaTable[RR_JABU_JABUS_BELLY_MQ_FORK_NORTH] = Region("Jabu Jabus Belly MQ Fork North", SCENE_JABU_JABU, {
//Events
EventAccess(&logic->JabuNorthTentacle, []{return logic->JabuNorthTentacle || logic->CanUse(RG_BOOMERANG);}),
EventAccess(&logic->JabuNorthTentacle, []{return logic->CanUse(RG_BOOMERANG);}),
}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_TO_FORK_NORTH, []{return true;}),
});
areaTable[RR_JABU_JABUS_BELLY_MQ_FORK_NORTH_EAST] = Region("Jabu Jabus Belly MQ Fork North East", SCENE_JABU_JABU, {}, {
//Locations
//Implies CanKillEnemy(RE_LIKE_LIKE)
@ -395,6 +435,7 @@ void RegionTable_Init_JabuJabusBelly() {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, []{return true;}),
});
areaTable[RR_JABU_JABUS_BELLY_MQ_FORK_EAST] = Region("Jabu Jabus Belly MQ Fork East", SCENE_JABU_JABU, {
//Events
EventAccess(&logic->JabuEastTentacle, []{return logic->CanKillEnemy(RE_TENTACLE, ED_BOOMERANG);}),
@ -423,14 +464,21 @@ void RegionTable_Init_JabuJabusBelly() {
Entrance(RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM, []{return (logic->JabuNorthTentacle || logic->TakeDamage()) && logic->HasItem(RG_BRONZE_SCALE);}),
});
// unlike other entrances behind tentacles, Link spawns behind the tentacle. Running into it throws him into main room still
areaTable[RR_JABU_JABUS_BELLY_MQ_TO_BIGOCTO] = Region("Jabu Jabus Belly MQ To Big Octo", SCENE_JABU_JABU, {}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_HOLES_BASEMENT, []{return logic->JabuWestTentacle || logic->TakeDamage();}),
Entrance(RR_JABU_JABUS_BELLY_MQ_BIGOCTO, []{return true;}),
});
// Need Ruto here
areaTable[RR_JABU_JABUS_BELLY_MQ_BIGOCTO] = Region("Jabu Jabus Belly MQ Big Octo", SCENE_JABU_JABU, {}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_OUTSIDE_BIGOCTO, []{return Here(RR_JABU_JABUS_BELLY_MQ_BIGOCTO, []{return logic->CanKillEnemy(RE_BIG_OCTO);});}),
Entrance(RR_JABU_JABUS_BELLY_MQ_TO_BIGOCTO, []{return Here(RR_JABU_JABUS_BELLY_MQ_BIGOCTO, []{return logic->CanKillEnemy(RE_BIG_OCTO);});}),
Entrance(RR_JABU_JABUS_BELLY_MQ_ABOVE_BIGOCTO, []{return Here(RR_JABU_JABUS_BELLY_MQ_BIGOCTO, []{return logic->CanKillEnemy(RE_BIG_OCTO);});}),
});
areaTable[RR_JABU_JABUS_BELLY_MQ_ABOVE_BIGOCTO] = Region("Jabu Jabus Belly MQ Above Big Octo", SCENE_JABU_JABU, {}, {}, {
areaTable[RR_JABU_JABUS_BELLY_MQ_ABOVE_BIGOCTO] = Region("Jabu Jabus Belly MQ Above Big Octo", SCENE_JABU_JABU, {}, {
//Locations
LOCATION(RC_JABU_JABUS_BELLY_MQ_AFTER_BIG_OCTO_GRASS_1, logic->CanCutShrubs()),
LOCATION(RC_JABU_JABUS_BELLY_MQ_AFTER_BIG_OCTO_GRASS_2, logic->CanCutShrubs()),
@ -467,9 +515,17 @@ void RegionTable_Init_JabuJabusBelly() {
}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_EAST_ROOM, []{return logic->JabuNorthTentacle;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_TO_EAST_ROOM, []{return true;}),
});
// this handles spawning in tentacle
areaTable[RR_JABU_JABUS_BELLY_MQ_TO_EAST_ROOM] = Region("Jabu Jabus Belly To East Room", SCENE_JABU_JABU, {}, {}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_FORKED_CORRIDOR, []{return logic->JabuNorthTentacle || logic->TakeDamage();}),
Entrance(RR_JABU_JABUS_BELLY_FORK_NORTH_WEST, []{return logic->JabuNorthTentacle;}),
});
areaTable[RR_JABU_JABUS_BELLY_MQ_EAST_ROOM] = Region("Jabu Jabus Belly MQ Boss Region", SCENE_JABU_JABU, {
//Events
EventAccess(&logic->FairyPot, []{return true;}),
@ -482,7 +538,7 @@ void RegionTable_Init_JabuJabusBelly() {
LOCATION(RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_GRASS_2, logic->CanCutShrubs()),
}, {
//Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM_EAST_LEDGE, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_MQ_TO_EAST_ROOM, []{return true;}),
Entrance(RR_JABU_JABUS_BELLY_BOSS_ENTRYWAY, []{return Here(RR_JABU_JABUS_BELLY_MQ_EAST_ROOM, []{return logic->CanUse(RG_FAIRY_SLINGSHOT);});}),
});

View file

@ -668,8 +668,11 @@ typedef enum {
RR_JABU_JABUS_BELLY_WATER_SWITCH_ROOM_LEDGE,
RR_JABU_JABUS_BELLY_FORKED_CORRIDOR,
RR_JABU_JABUS_BELLY_FORK_WEST,
RR_JABU_JABUS_BELLY_TO_FORK_NORTH_WEST,
RR_JABU_JABUS_BELLY_FORK_NORTH_WEST,
RR_JABU_JABUS_BELLY_TO_FORK_NORTH,
RR_JABU_JABUS_BELLY_FORK_NORTH,
RR_JABU_JABUS_BELLY_TO_FORK_NORTH_EAST,
RR_JABU_JABUS_BELLY_FORK_NORTH_EAST,
RR_JABU_JABUS_BELLY_FORK_EAST,
RR_JABU_JABUS_BELLY_BIGOCTO_LEDGE,
@ -686,21 +689,24 @@ typedef enum {
RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM,
RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM_PAST_JIGGLY,
RR_JABU_JABUS_BELLY_MQ_HOLES_BASEMENT,
RR_JABU_JABUS_BELLY_MQ_OUTSIDE_BIGOCTO,
RR_JABU_JABUS_BELLY_MQ_WATER_SWITCH_ROOM,
RR_JABU_JABUS_BELLY_MQ_WATER_SWITCH_ROOM_PAST_GEYSER,
RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR,
RR_JABU_JABUS_BELLY_MQ_WEST_FORKED_ROOMS,
RR_JABU_JABUS_BELLY_MQ_TO_FORK_WEST,
RR_JABU_JABUS_BELLY_MQ_FORK_WEST,
RR_JABU_JABUS_BELLY_MQ_TO_FORK_NORTH_WEST,
RR_JABU_JABUS_BELLY_MQ_FORK_NORTH_WEST,
RR_JABU_JABUS_BELLY_MQ_TO_FORK_NORTH,
RR_JABU_JABUS_BELLY_MQ_FORK_NORTH,
RR_JABU_JABUS_BELLY_MQ_FORK_NORTH_EAST,
RR_JABU_JABUS_BELLY_MQ_FORK_EAST,
RR_JABU_JABUS_BELLY_MQ_INVISIBLE_KEESE_ROOM,
RR_JABU_JABUS_BELLY_MQ_TO_BIGOCTO,
RR_JABU_JABUS_BELLY_MQ_BIGOCTO,
RR_JABU_JABUS_BELLY_MQ_ABOVE_BIGOCTO,
RR_JABU_JABUS_BELLY_MQ_JIGGLIES_ROOM,
RR_JABU_JABUS_BELLY_MQ_ABOVE_LIFT_ROOM,
RR_JABU_JABUS_BELLY_MQ_TO_EAST_ROOM,
RR_JABU_JABUS_BELLY_MQ_EAST_ROOM,
RR_JABU_JABUS_BELLY_BOSS_ENTRYWAY,