mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-07-15 09:33:00 -07:00
from room to boat to wind tunnel need hovers to get back
can't reach entry without hookshot or hovers split invisible spikes room for decoupled don't need hovers to get GS from boss door
This commit is contained in:
parent
32f7c9e2e8
commit
ec4a463f70
2 changed files with 44 additions and 18 deletions
|
@ -18,7 +18,7 @@ void RegionTable_Init_ShadowTemple() {
|
||||||
|
|
||||||
areaTable[RR_SHADOW_TEMPLE_BEGINNING] = Region("Shadow Temple Beginning", SCENE_SHADOW_TEMPLE, {}, {}, {
|
areaTable[RR_SHADOW_TEMPLE_BEGINNING] = Region("Shadow Temple Beginning", SCENE_SHADOW_TEMPLE, {}, {}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_ENTRYWAY, []{return true;}),
|
Entrance(RR_SHADOW_TEMPLE_ENTRYWAY, []{return logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT);}),
|
||||||
Entrance(RR_SHADOW_TEMPLE_WHISPERING_WALLS, []{return ctx->GetTrickOption(RT_LENS_SHADOW) || logic->CanUse(RG_LENS_OF_TRUTH);}),
|
Entrance(RR_SHADOW_TEMPLE_WHISPERING_WALLS, []{return ctx->GetTrickOption(RT_LENS_SHADOW) || logic->CanUse(RG_LENS_OF_TRUTH);}),
|
||||||
Entrance(RR_SHADOW_TEMPLE_FIRST_BEAMOS, []{return (ctx->GetTrickOption(RT_LENS_SHADOW) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOVER_BOOTS);}),
|
Entrance(RR_SHADOW_TEMPLE_FIRST_BEAMOS, []{return (ctx->GetTrickOption(RT_LENS_SHADOW) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOVER_BOOTS);}),
|
||||||
});
|
});
|
||||||
|
@ -134,14 +134,20 @@ void RegionTable_Init_ShadowTemple() {
|
||||||
Entrance(RR_SHADOW_TEMPLE_UPPER_HUGE_PIT, []{return true;}),
|
Entrance(RR_SHADOW_TEMPLE_UPPER_HUGE_PIT, []{return true;}),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_SHADOW_TEMPLE_INVISIBLE_SPIKES] = Region("Shadow Temple Invisible Spinning Blades", SCENE_SHADOW_TEMPLE, {}, {
|
areaTable[RR_SHADOW_TEMPLE_INVISIBLE_SPIKES] = Region("Shadow Temple Invisible Spikes", SCENE_SHADOW_TEMPLE, {}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_SHADOW_TEMPLE_INVISIBLE_SPIKES_CHEST, ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
LOCATION(RC_SHADOW_TEMPLE_INVISIBLE_SPIKES_CHEST, ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_LOWER_HUGE_PIT, []{return logic->SmallKeys(RR_SHADOW_TEMPLE, 2);}),
|
Entrance(RR_SHADOW_TEMPLE_LOWER_HUGE_PIT, []{return logic->SmallKeys(RR_SHADOW_TEMPLE, 2);}),
|
||||||
Entrance(RR_SHADOW_TEMPLE_SKULL_JAR, []{return ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOOKSHOT);}),
|
Entrance(RR_SHADOW_TEMPLE_SKULL_JAR, []{return ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOOKSHOT);}),
|
||||||
Entrance(RR_SHADOW_TEMPLE_UPPER_WIND_TUNNEL, []{return ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_SHADOW_TEMPLE, 3);}),
|
Entrance(RR_SHADOW_TEMPLE_INVISIBLE_SPIKES_PLATFORM, []{return ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOOKSHOT);}),
|
||||||
|
});
|
||||||
|
|
||||||
|
areaTable[RR_SHADOW_TEMPLE_INVISIBLE_SPIKES_PLATFORM] = Region("Shadow Temple Invisible Spikes Platform", SCENE_SHADOW_TEMPLE, {}, {}, {
|
||||||
|
//Exits
|
||||||
|
Entrance(RR_SHADOW_TEMPLE_INVISIBLE_SPIKES, []{return true;}),
|
||||||
|
Entrance(RR_SHADOW_TEMPLE_UPPER_WIND_TUNNEL, []{return logic->SmallKeys(RR_SHADOW_TEMPLE, 3);}),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_SHADOW_TEMPLE_SKULL_JAR] = Region("Shadow Temple Skull Jar", SCENE_SHADOW_TEMPLE, {}, {
|
areaTable[RR_SHADOW_TEMPLE_SKULL_JAR] = Region("Shadow Temple Skull Jar", SCENE_SHADOW_TEMPLE, {}, {
|
||||||
|
@ -155,14 +161,19 @@ void RegionTable_Init_ShadowTemple() {
|
||||||
|
|
||||||
areaTable[RR_SHADOW_TEMPLE_UPPER_WIND_TUNNEL] = Region("Shadow Temple Upper Wind Tunnel", SCENE_SHADOW_TEMPLE, {}, {}, {
|
areaTable[RR_SHADOW_TEMPLE_UPPER_WIND_TUNNEL] = Region("Shadow Temple Upper Wind Tunnel", SCENE_SHADOW_TEMPLE, {}, {}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_INVISIBLE_SPIKES, []{return logic->SmallKeys(RR_SHADOW_TEMPLE, 3);}),
|
Entrance(RR_SHADOW_TEMPLE_INVISIBLE_SPIKES_PLATFORM, []{return logic->SmallKeys(RR_SHADOW_TEMPLE, 3);}),
|
||||||
Entrance(RR_SHADOW_TEMPLE_LOWER_WIND_TUNNEL, []{return (logic->CanUse(RG_HOVER_BOOTS) && logic->CanPassEnemy(RE_BIG_SKULLTULA)) || logic->CanUse(RG_HOOKSHOT);}),
|
Entrance(RR_SHADOW_TEMPLE_LOWER_WIND_TUNNEL, []{return (logic->CanUse(RG_HOVER_BOOTS) && logic->CanPassEnemy(RE_BIG_SKULLTULA)) || logic->CanUse(RG_HOOKSHOT);}),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_SHADOW_TEMPLE_LOWER_WIND_TUNNEL] = Region("Shadow Temple Lower Wind Tunnel", SCENE_SHADOW_TEMPLE, {}, {}, {
|
areaTable[RR_SHADOW_TEMPLE_LOWER_WIND_TUNNEL] = Region("Shadow Temple Lower Wind Tunnel", SCENE_SHADOW_TEMPLE, {}, {}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_UPPER_WIND_TUNNEL, []{return logic->CanUse(RG_HOOKSHOT);}),
|
Entrance(RR_SHADOW_TEMPLE_UPPER_WIND_TUNNEL, []{return logic->CanUse(RG_HOOKSHOT);}),
|
||||||
|
Entrance(RR_SHADOW_TEMPLE_WIND_TUNNEL_ALCOVE, []{return true;}),
|
||||||
Entrance(RR_SHADOW_TEMPLE_WIND_TUNNEL_HINT_ROOM, []{return true;}),
|
Entrance(RR_SHADOW_TEMPLE_WIND_TUNNEL_HINT_ROOM, []{return true;}),
|
||||||
|
});
|
||||||
|
|
||||||
|
areaTable[RR_SHADOW_TEMPLE_WIND_TUNNEL_ALCOVE] = Region("Shadow Temple Wind Tunnel Alcove", SCENE_SHADOW_TEMPLE, {}, {}, {
|
||||||
|
Entrance(RR_SHADOW_TEMPLE_LOWER_WIND_TUNNEL, []{return logic->CanUse(RG_HOVER_BOOTS);}),
|
||||||
Entrance(RR_SHADOW_TEMPLE_ROOM_TO_BOAT, []{return true;}),
|
Entrance(RR_SHADOW_TEMPLE_ROOM_TO_BOAT, []{return true;}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -458,10 +469,16 @@ void RegionTable_Init_ShadowTemple() {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_MQ_STALFOS_ROOM, []{return logic->MQShadowFloorSpikeRupees;}),
|
Entrance(RR_SHADOW_TEMPLE_MQ_STALFOS_ROOM, []{return logic->MQShadowFloorSpikeRupees;}),
|
||||||
//We need to assume we can get here with or without the glass platforms
|
//We need to assume we can get here with or without the glass platforms
|
||||||
Entrance(RR_SHADOW_TEMPLE_MQ_UPPER_WIND_TUNNEL, []{return logic->SmallKeys(RR_SHADOW_TEMPLE, 4) && (logic->CanUse(RG_LONGSHOT) || (logic->IsAdult && logic->CanUse(RG_HOOKSHOT) && (logic->MQShadowFloorSpikeRupees || Here(RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_ROOM, []{return logic->CanKillEnemy(RE_REDEAD);})))) && (logic->CanJumpslash() || logic->CanUse(RG_HOVER_BOOTS));}),
|
Entrance(RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_PLATFORM, []{return (logic->CanUse(RG_LONGSHOT) || (logic->IsAdult && logic->CanUse(RG_HOOKSHOT) && (logic->MQShadowFloorSpikeRupees || Here(RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_ROOM, []{return logic->CanKillEnemy(RE_REDEAD);})))) && (logic->CanJumpslash() || logic->CanUse(RG_HOVER_BOOTS));}),
|
||||||
Entrance(RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT, []{return logic->SmallKeys(RR_SHADOW_TEMPLE, 3);}),
|
Entrance(RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT, []{return logic->SmallKeys(RR_SHADOW_TEMPLE, 3);}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
areaTable[RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_PLATFORM] = Region("Shadow Temple MQ Floor Spikes Platform", SCENE_SHADOW_TEMPLE, {}, {}, {
|
||||||
|
//Exits
|
||||||
|
Entrance(RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_ROOM, []{return true;}),
|
||||||
|
Entrance(RR_SHADOW_TEMPLE_MQ_UPPER_WIND_TUNNEL, []{return logic->SmallKeys(RR_SHADOW_TEMPLE, 4);}),
|
||||||
|
});
|
||||||
|
|
||||||
areaTable[RR_SHADOW_TEMPLE_MQ_STALFOS_ROOM] = Region("Shadow Temple MQ Stalfos Room", SCENE_SHADOW_TEMPLE, {}, {
|
areaTable[RR_SHADOW_TEMPLE_MQ_STALFOS_ROOM] = Region("Shadow Temple MQ Stalfos Room", SCENE_SHADOW_TEMPLE, {}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_SHADOW_TEMPLE_MQ_STALFOS_ROOM_CHEST, logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 2)),
|
LOCATION(RC_SHADOW_TEMPLE_MQ_STALFOS_ROOM_CHEST, logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 2)),
|
||||||
|
@ -493,6 +510,11 @@ void RegionTable_Init_ShadowTemple() {
|
||||||
Entrance(RR_SHADOW_TEMPLE_MQ_LOWER_WIND_TUNNEL, []{return true;}),
|
Entrance(RR_SHADOW_TEMPLE_MQ_LOWER_WIND_TUNNEL, []{return true;}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
areaTable[RR_SHADOW_TEMPLE_MQ_WIND_TUNNEL_ALCOVE] = Region("Shadow Temple MQ Wind Tunnel Alcove", SCENE_SHADOW_TEMPLE, {}, {}, {
|
||||||
|
Entrance(RR_SHADOW_TEMPLE_MQ_LOWER_WIND_TUNNEL, []{return logic->CanUse(RG_HOVER_BOOTS);}),
|
||||||
|
Entrance(RR_SHADOW_TEMPLE_MQ_B4_GIBDO_ROOM, []{return true;}),
|
||||||
|
});
|
||||||
|
|
||||||
areaTable[RR_SHADOW_TEMPLE_MQ_B4_GIBDO_ROOM] = Region("Shadow Temple MQ B4 Gibdo Room", SCENE_SHADOW_TEMPLE, {
|
areaTable[RR_SHADOW_TEMPLE_MQ_B4_GIBDO_ROOM] = Region("Shadow Temple MQ B4 Gibdo Room", SCENE_SHADOW_TEMPLE, {
|
||||||
//Events
|
//Events
|
||||||
EventAccess(&logic->NutPot, []{return true;}),
|
EventAccess(&logic->NutPot, []{return true;}),
|
||||||
|
@ -558,17 +580,17 @@ void RegionTable_Init_ShadowTemple() {
|
||||||
Entrance(RR_SHADOW_TEMPLE_MQ_PRE_BOSS_ROOM, []{return true;}),
|
Entrance(RR_SHADOW_TEMPLE_MQ_PRE_BOSS_ROOM, []{return true;}),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_SHADOW_TEMPLE_PRE_BOSS_ROOM] = Region("Shadow Temple MQ Pre Boss Room", SCENE_SHADOW_TEMPLE, {}, {
|
areaTable[RR_SHADOW_TEMPLE_PRE_BOSS_ROOM] = Region("Shadow Temple MQ Pre Boss Room", SCENE_SHADOW_TEMPLE, {}, {}, {
|
||||||
//Locations
|
|
||||||
//you can drop onto this and the respawn is reasonable
|
|
||||||
LOCATION(RC_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS, logic->CanUse(RG_HOVER_BOOTS) && (logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_BOMB_THROW) || logic->CanUse(RG_MEGATON_HAMMER)) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
|
||||||
}, {
|
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT, []{return true;}),
|
Entrance(RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT, []{return true;}),
|
||||||
Entrance(RR_SHADOW_TEMPLE_MQ_BOSS_DOOR, []{return logic->CanUse(RG_HOVER_BOOTS) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH));}),
|
Entrance(RR_SHADOW_TEMPLE_MQ_BOSS_DOOR, []{return logic->CanUse(RG_HOVER_BOOTS) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH));}),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_SHADOW_TEMPLE_MQ_BOSS_DOOR] = Region("Shadow Temple MQ Boss Door", SCENE_SHADOW_TEMPLE, {}, {}, {
|
areaTable[RR_SHADOW_TEMPLE_MQ_BOSS_DOOR] = Region("Shadow Temple MQ Boss Door", SCENE_SHADOW_TEMPLE, {}, {
|
||||||
|
//Locations
|
||||||
|
//you can drop onto this and the respawn is reasonable
|
||||||
|
LOCATION(RC_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS, (logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_BOMB_THROW) || logic->CanUse(RG_MEGATON_HAMMER)) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
||||||
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_MQ_PRE_BOSS_ROOM, []{return logic->CanUse(RG_HOVER_BOOTS) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH));}),
|
Entrance(RR_SHADOW_TEMPLE_MQ_PRE_BOSS_ROOM, []{return logic->CanUse(RG_HOVER_BOOTS) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH));}),
|
||||||
Entrance(RR_SHADOW_TEMPLE_BOSS_ENTRYWAY, []{return true;}),
|
Entrance(RR_SHADOW_TEMPLE_BOSS_ENTRYWAY, []{return true;}),
|
||||||
|
|
|
@ -946,9 +946,11 @@ typedef enum {
|
||||||
RR_SHADOW_TEMPLE_LOWER_HUGE_PIT,
|
RR_SHADOW_TEMPLE_LOWER_HUGE_PIT,
|
||||||
RR_SHADOW_TEMPLE_INVISIBLE_SPINNING_BLADES,
|
RR_SHADOW_TEMPLE_INVISIBLE_SPINNING_BLADES,
|
||||||
RR_SHADOW_TEMPLE_INVISIBLE_SPIKES,
|
RR_SHADOW_TEMPLE_INVISIBLE_SPIKES,
|
||||||
|
RR_SHADOW_TEMPLE_INVISIBLE_SPIKES_PLATFORM,
|
||||||
RR_SHADOW_TEMPLE_SKULL_JAR,
|
RR_SHADOW_TEMPLE_SKULL_JAR,
|
||||||
RR_SHADOW_TEMPLE_UPPER_WIND_TUNNEL,
|
RR_SHADOW_TEMPLE_UPPER_WIND_TUNNEL,
|
||||||
RR_SHADOW_TEMPLE_LOWER_WIND_TUNNEL,
|
RR_SHADOW_TEMPLE_LOWER_WIND_TUNNEL,
|
||||||
|
RR_SHADOW_TEMPLE_WIND_TUNNEL_ALCOVE,
|
||||||
RR_SHADOW_TEMPLE_WIND_TUNNEL_HINT_ROOM,
|
RR_SHADOW_TEMPLE_WIND_TUNNEL_HINT_ROOM,
|
||||||
RR_SHADOW_TEMPLE_ROOM_TO_BOAT,
|
RR_SHADOW_TEMPLE_ROOM_TO_BOAT,
|
||||||
RR_SHADOW_TEMPLE_DOCK,
|
RR_SHADOW_TEMPLE_DOCK,
|
||||||
|
@ -978,9 +980,11 @@ typedef enum {
|
||||||
RR_SHADOW_TEMPLE_MQ_STONE_UMBRELLA_ROOM,
|
RR_SHADOW_TEMPLE_MQ_STONE_UMBRELLA_ROOM,
|
||||||
RR_SHADOW_TEMPLE_MQ_UPPER_STONE_UMBRELLA,
|
RR_SHADOW_TEMPLE_MQ_UPPER_STONE_UMBRELLA,
|
||||||
RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_ROOM,
|
RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_ROOM,
|
||||||
|
RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_PLATFORM,
|
||||||
RR_SHADOW_TEMPLE_MQ_STALFOS_ROOM,
|
RR_SHADOW_TEMPLE_MQ_STALFOS_ROOM,
|
||||||
RR_SHADOW_TEMPLE_MQ_UPPER_WIND_TUNNEL,
|
RR_SHADOW_TEMPLE_MQ_UPPER_WIND_TUNNEL,
|
||||||
RR_SHADOW_TEMPLE_MQ_LOWER_WIND_TUNNEL,
|
RR_SHADOW_TEMPLE_MQ_LOWER_WIND_TUNNEL,
|
||||||
|
RR_SHADOW_TEMPLE_MQ_WIND_TUNNEL_ALCOVE,
|
||||||
RR_SHADOW_TEMPLE_MQ_WIND_HINT_ROOM,
|
RR_SHADOW_TEMPLE_MQ_WIND_HINT_ROOM,
|
||||||
RR_SHADOW_TEMPLE_MQ_B4_GIBDO_ROOM,
|
RR_SHADOW_TEMPLE_MQ_B4_GIBDO_ROOM,
|
||||||
RR_SHADOW_TEMPLE_MQ_DOCK,
|
RR_SHADOW_TEMPLE_MQ_DOCK,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue