RT_UNINTUITIVE_JUMPS (#6107)
consolidate novice jump tricks that are purely movement based 2 new jumps added: shadow boat jump, & forest trial child jump
This commit is contained in:
@@ -34,7 +34,7 @@ void RegionTable_Init_FireTemple() {
|
||||
//Exits
|
||||
Entrance(RR_FIRE_TEMPLE_FOYER, []{return (logic->IsAdult || logic->CanUse(RG_HOVER_BOOTS)) && (logic->FireTimer() >= 16 || (logic->Get(LOGIC_FIRE_HIT_PLATFORM) && logic->FireTimer() >= 8));}),
|
||||
Entrance(RR_FIRE_TEMPLE_NEAR_BOSS_UPPER, []{return logic->IsAdult && (logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS)) && logic->FireTimer() >= 16;}),
|
||||
Entrance(RR_FIRE_TEMPLE_BOSS_ENTRYWAY, []{return logic->FireTimer() >= 16 && (logic->CanUse(RG_HOVER_BOOTS) || (logic->IsAdult && (ctx->GetTrickOption(RT_FIRE_BOSS_DOOR_JUMP) || logic->Get(LOGIC_FIRE_HIT_PLATFORM))));}),
|
||||
Entrance(RR_FIRE_TEMPLE_BOSS_ENTRYWAY, []{return logic->FireTimer() >= 16 && (logic->CanUse(RG_HOVER_BOOTS) || (logic->IsAdult && (ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) || logic->Get(LOGIC_FIRE_HIT_PLATFORM))));}),
|
||||
});
|
||||
|
||||
//This region assumes tunic logic is handled on entry.
|
||||
@@ -538,7 +538,7 @@ void RegionTable_Init_FireTemple() {
|
||||
//Exits
|
||||
Entrance(RR_FIRE_TEMPLE_MQ_FOYER_UPPER, []{return (logic->IsAdult || logic->CanUse(RG_HOVER_BOOTS)) && (logic->FireTimer() >= 16 || (logic->Get(LOGIC_FIRE_HIT_PLATFORM) && logic->FireTimer() >= 8));}),
|
||||
Entrance(RR_FIRE_TEMPLE_MQ_NEAR_BOSS_TARGET, []{return logic->FireTimer() >= 32 && (logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS));}),
|
||||
Entrance(RR_FIRE_TEMPLE_BOSS_ENTRYWAY, []{return logic->FireTimer() >= 16 && (logic->CanUse(RG_HOVER_BOOTS) || (logic->IsAdult && (ctx->GetTrickOption(RT_FIRE_BOSS_DOOR_JUMP) || logic->Get(LOGIC_FIRE_HIT_PLATFORM))));}),
|
||||
Entrance(RR_FIRE_TEMPLE_BOSS_ENTRYWAY, []{return logic->FireTimer() >= 16 && (logic->CanUse(RG_HOVER_BOOTS) || (logic->IsAdult && (ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) || logic->Get(LOGIC_FIRE_HIT_PLATFORM))));}),
|
||||
});
|
||||
|
||||
//This region assumes tunic logic is handled on entry.
|
||||
|
||||
@@ -71,7 +71,7 @@ void RegionTable_Init_GanonsCastle() {
|
||||
});
|
||||
|
||||
areaTable[RR_GANONS_CASTLE_FOREST_TRIAL_BEAMOS_ROOM] = Region("Ganon's Castle Forest Trial Beamos Room", SCENE_INSIDE_GANONS_CASTLE, {
|
||||
EventAccess(LOGIC_FOREST_TRIAL_SILVER_RUPEES, []{return logic->IsAdult || logic->CanUse(RG_HOOKSHOT);}),
|
||||
EventAccess(LOGIC_FOREST_TRIAL_SILVER_RUPEES, []{return logic->IsAdult || logic->CanUse(RG_HOOKSHOT);}), // child can get these by voiding after switch
|
||||
}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_GANONS_CASTLE_FOREST_TRIAL_WOLFOS_ROOM, []{return true;}),
|
||||
@@ -81,13 +81,13 @@ void RegionTable_Init_GanonsCastle() {
|
||||
areaTable[RR_GANONS_CASTLE_FOREST_TRIAL_BEAMOS_ROOM_END] = Region("Ganon's Castle Forest Trial Beamos Room End", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_GANONS_CASTLE_FOREST_TRIAL_BEAMOS_ROOM, []{return logic->CanUse(RG_LONGSHOT);}),
|
||||
Entrance(RR_GANONS_CASTLE_FOREST_TRIAL_BEAMOS_ROOM_FINAL_DOOR, []{return logic->IsAdult || logic->CanGroundJump();}), // child can do unintuitive jump
|
||||
Entrance(RR_GANONS_CASTLE_FOREST_TRIAL_BEAMOS_ROOM_FINAL_DOOR, []{return logic->IsAdult || logic->CanGroundJump() || ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS);}),
|
||||
});
|
||||
|
||||
areaTable[RR_GANONS_CASTLE_FOREST_TRIAL_BEAMOS_ROOM_FINAL_DOOR] = Region("Ganon's Castle Forest Trial Beamos Room Final Door", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_GANONS_CASTLE_FOREST_TRIAL_BEAMOS_ROOM_END, []{return true;}),
|
||||
Entrance(RR_GANONS_CASTLE_FOREST_TRIAL_FINAL_ROOM, []{return logic->Get(LOGIC_FOREST_TRIAL_SILVER_RUPEES);}), // child needs to either ground jump or do unintuitive jump
|
||||
Entrance(RR_GANONS_CASTLE_FOREST_TRIAL_FINAL_ROOM, []{return logic->Get(LOGIC_FOREST_TRIAL_SILVER_RUPEES);}),
|
||||
});
|
||||
|
||||
areaTable[RR_GANONS_CASTLE_FOREST_TRIAL_FINAL_ROOM] = Region("Ganon's Castle Forest Trial Final Room", SCENE_INSIDE_GANONS_CASTLE, {
|
||||
@@ -416,7 +416,7 @@ void RegionTable_Init_GanonsCastle() {
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM, []{return logic->Get(LOGIC_FOREST_TRIAL_MQ_SPAWN_BEAMOS_CHEST) && (logic->CanAvoidEnemy(RE_BEAMOS) || logic->CanKillEnemy(RE_ARMOS)) && logic->CanUse(RG_LONGSHOT);}),
|
||||
Entrance(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM_END, []{return logic->IsAdult || logic->CanGroundJump();}), // child can do unintuitive jump
|
||||
Entrance(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM_END, []{return logic->IsAdult || logic->CanGroundJump() || ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS);}),
|
||||
});
|
||||
|
||||
areaTable[RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM_END] = Region("Ganon's Castle MQ Forest Trial Beamos Room Final Door", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
|
||||
|
||||
@@ -24,7 +24,7 @@ void RegionTable_Init_JabuJabusBelly() {
|
||||
|
||||
areaTable[RR_JABU_JABUS_BELLY_LIFT_ROOM] = Region("Jabu Jabus Belly Lift Room", SCENE_JABU_JABU, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_JABU_JABUS_BELLY_DEKU_SCRUB, logic->HasItem(RG_BRONZE_SCALE) && (logic->IsChild || logic->HasItem(RG_SILVER_SCALE) || ctx->GetTrickOption(RT_JABU_ALCOVE_JUMP_DIVE) || logic->CanUse(RG_IRON_BOOTS)) && logic->CanStunDeku() && GetCheckPrice() <= GetWalletCapacity()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_DEKU_SCRUB, logic->HasItem(RG_BRONZE_SCALE) && (logic->IsChild || logic->HasItem(RG_SILVER_SCALE) || ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) || logic->CanUse(RG_IRON_BOOTS)) && logic->CanStunDeku() && GetCheckPrice() <= GetWalletCapacity()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_PLATFORM_ROOM_SMALL_CRATE_1, logic->CanBreakSmallCrates()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_PLATFORM_ROOM_SMALL_CRATE_2, logic->CanBreakSmallCrates()),
|
||||
}, {
|
||||
@@ -285,7 +285,7 @@ void RegionTable_Init_JabuJabusBelly() {
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_JABU_JABUS_BELLY_MQ_BEGINNING, []{return true;}),
|
||||
Entrance(RR_JABU_JABUS_BELLY_MQ_UNDERWATER_ALCOVE, []{return logic->HasItem(RG_SILVER_SCALE) || (logic->HasItem(RG_BRONZE_SCALE) && ((logic->IsChild || logic->CanUse(RG_IRON_BOOTS) || ctx->GetTrickOption(RT_JABU_ALCOVE_JUMP_DIVE))));}),
|
||||
Entrance(RR_JABU_JABUS_BELLY_MQ_UNDERWATER_ALCOVE, []{return logic->HasItem(RG_SILVER_SCALE) || (logic->HasItem(RG_BRONZE_SCALE) && ((logic->IsChild || logic->CanUse(RG_IRON_BOOTS) || ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS))));}),
|
||||
Entrance(RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM, []{return logic->Get(LOGIC_JABU_MQ_HOLES_ROOM_DOOR);}),
|
||||
Entrance(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM_EAST_LEDGE, []{return logic->Get(LOGIC_JABU_LOWERED_PATH) || logic->CanUse(RG_HOVER_BOOTS) || (logic->CanUse(RG_HOOKSHOT) && logic->Get(LOGIC_JABU_MQ_LIFT_ROOM_COW));}),
|
||||
Entrance(RR_JABU_JABUS_BELLY_MQ_WATER_SWITCH_ROOM_PAST_GEYSER, []{return logic->Get(LOGIC_JABU_MQ_WATER_SWITCH_LIFT_ACCESS);}),
|
||||
|
||||
@@ -268,7 +268,7 @@ void RegionTable_Init_ShadowTemple() {
|
||||
//Exits
|
||||
Entrance(RR_SHADOW_TEMPLE_ROOM_TO_BOAT, []{return logic->SmallKeys(SCENE_SHADOW_TEMPLE, 4);}),
|
||||
Entrance(RR_SHADOW_TEMPLE_SPINNING_BLADES, []{return logic->HasItem(RG_GORONS_BRACELET);}),
|
||||
Entrance(RR_SHADOW_TEMPLE_BEYOND_BOAT, []{return ((logic->IsAdult && logic->HasItem(RG_GORONS_BRACELET)) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_ZELDAS_LULLABY);}),
|
||||
Entrance(RR_SHADOW_TEMPLE_BEYOND_BOAT, []{return ((logic->IsAdult && (logic->HasItem(RG_GORONS_BRACELET) || ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS))) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_ZELDAS_LULLABY);}),
|
||||
});
|
||||
|
||||
areaTable[RR_SHADOW_TEMPLE_BEYOND_BOAT] = Region("Shadow Temple Beyond Boat", SCENE_SHADOW_TEMPLE, {
|
||||
@@ -642,7 +642,7 @@ void RegionTable_Init_ShadowTemple() {
|
||||
//Exits
|
||||
Entrance(RR_SHADOW_TEMPLE_MQ_SHORTCUT_PATH, []{return logic->Get(LOGIC_SHADOW_SHORTCUT_BLOCK);}),
|
||||
Entrance(RR_SHADOW_TEMPLE_MQ_B4_GIBDO_ROOM, []{return logic->SmallKeys(SCENE_SHADOW_TEMPLE, 5);}),
|
||||
Entrance(RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT, []{return ((logic->IsAdult && logic->HasItem(RG_GORONS_BRACELET)) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_ZELDAS_LULLABY);}),
|
||||
Entrance(RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT, []{return ((logic->IsAdult && (logic->HasItem(RG_GORONS_BRACELET) || ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS))) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_ZELDAS_LULLABY);}),
|
||||
});
|
||||
|
||||
areaTable[RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT] = Region("Shadow Temple MQ Beyond Boat", SCENE_SHADOW_TEMPLE, {
|
||||
|
||||
@@ -294,7 +294,7 @@ void RegionTable_Init_WaterTemple() {
|
||||
//Exits
|
||||
Entrance(RR_WATER_TEMPLE_3_JETS_SWITCH, []{return true;}),
|
||||
Entrance(RR_WATER_TEMPLE_BOULDER_CANAL, []{return logic->IsAdult || logic->HasItem(RG_BRONZE_SCALE) || (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8);}),
|
||||
Entrance(RR_WATER_TEMPLE_BEHIND_CANAL, []{return logic->IsAdult && ctx->GetTrickOption(RT_WATER_BK_JUMP_DIVE) && logic->HasItem(RG_BRONZE_SCALE);}),
|
||||
Entrance(RR_WATER_TEMPLE_BEHIND_CANAL, []{return logic->IsAdult && ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) && logic->HasItem(RG_BRONZE_SCALE);}),
|
||||
});
|
||||
|
||||
areaTable[RR_WATER_TEMPLE_BOULDER_CANAL] = Region("Water Temple Boulder Canal", SCENE_WATER_TEMPLE, {}, {
|
||||
@@ -1310,7 +1310,7 @@ void RegionTable_Init_WaterTemple() {
|
||||
//Exits
|
||||
Entrance(RR_WATER_TEMPLE_MQ_3_JETS_ROOM, []{return logic->SmallKeys(SCENE_WATER_TEMPLE, 2);}),
|
||||
Entrance(RR_WATER_TEMPLE_MQ_SCARECROW_CANAL, []{return logic->IsAdult || logic->HasItem(RG_BRONZE_SCALE) || (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8);}),
|
||||
Entrance(RR_WATER_TEMPLE_MQ_BEHIND_CANAL, []{return logic->IsAdult && ctx->GetTrickOption(RT_WATER_BK_JUMP_DIVE) && logic->HasItem(RG_BRONZE_SCALE);}),
|
||||
Entrance(RR_WATER_TEMPLE_MQ_BEHIND_CANAL, []{return logic->IsAdult && ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) && logic->HasItem(RG_BRONZE_SCALE);}),
|
||||
});
|
||||
|
||||
areaTable[RR_WATER_TEMPLE_MQ_BEHIND_CANAL] = Region("Water Temple MQ Behind Canal", SCENE_WATER_TEMPLE, {}, {}, {
|
||||
|
||||
@@ -85,7 +85,7 @@ void RegionTable_Init_GerudoFortress() {
|
||||
Entrance(RR_GF_NEAR_GROTTO, []{return true;}),
|
||||
Entrance(RR_GF_OUTSIDE_GTG, []{return logic->IsChild || logic->CanPassEnemy(RE_GERUDO_GUARD);}),
|
||||
// need to explicitly convert it into a bool
|
||||
Entrance(RR_GF_BOTTOM_OF_LOWER_VINES, []{return ctx->GetTrickOption(RT_GF_JUMP).Get() != 0 ;}),
|
||||
Entrance(RR_GF_BOTTOM_OF_LOWER_VINES, []{return ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS).Get() != 0 ;}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_BOTTOM_OF_LOWER_VINES] = Region("GF Bottom of Lower Vines", SCENE_GERUDOS_FORTRESS, {}, {}, {
|
||||
@@ -104,7 +104,7 @@ void RegionTable_Init_GerudoFortress() {
|
||||
Entrance(RR_GF_ABOVE_GTG, []{return true;}),
|
||||
Entrance(RR_GF_BOTTOM_OF_LOWER_VINES, []{return true;}),
|
||||
// need to explicitly convert it into a bool
|
||||
Entrance(RR_GF_BOTTOM_OF_UPPER_VINES, []{return logic->IsAdult && ctx->GetTrickOption(RT_GF_JUMP).Get();}),
|
||||
Entrance(RR_GF_BOTTOM_OF_UPPER_VINES, []{return logic->IsAdult && ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS).Get();}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_NEAR_GS] = Region("GF Near GS", SCENE_GERUDOS_FORTRESS, {}, {
|
||||
@@ -126,21 +126,21 @@ void RegionTable_Init_GerudoFortress() {
|
||||
Entrance(RR_GF_TOP_OF_LOWER_VINES, []{return true;}),
|
||||
Entrance(RR_GF_NEAR_GS, []{return true;}),
|
||||
Entrance(RR_GF_BOTTOM_OF_UPPER_VINES, []{return true;}),
|
||||
Entrance(RR_GF_TOP_OF_UPPER_VINES, []{return logic->IsAdult && ctx->GetTrickOption(RT_GF_JUMP).Get();}),
|
||||
Entrance(RR_GF_TOP_OF_UPPER_VINES, []{return logic->IsAdult && ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS).Get();}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_BOTTOM_OF_UPPER_VINES] = Region("GF Bottom of Upper Vines", SCENE_GERUDOS_FORTRESS, {}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_OUTSIDE_GTG, []{return true;}),
|
||||
Entrance(RR_GF_TOP_OF_LOWER_VINES, []{return true;}),
|
||||
Entrance(RR_GF_SLOPED_ROOF, []{return logic->IsAdult && (logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_GF_JUMP));}),
|
||||
Entrance(RR_GF_SLOPED_ROOF, []{return logic->IsAdult && (logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS));}),
|
||||
Entrance(RR_GF_TOP_OF_UPPER_VINES, []{return true /* logic->CanClimb() */;}),
|
||||
Entrance(RR_GF_TO_GTG, []{return logic->IsAdult && ctx->GetTrickOption(RT_GF_LEDGE_CLIP_INTO_GTG).Get();}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_TOP_OF_UPPER_VINES] = Region("GF Top of Upper Vines", SCENE_GERUDOS_FORTRESS, {}, {
|
||||
//Locations
|
||||
//if RR_GF_SLOPED_ROOF > RR_GF_TOP_OF_UPPER_VINES is ever made part of RT_GF_JUMP, climb is needed to get back up
|
||||
//if RR_GF_SLOPED_ROOF > RR_GF_TOP_OF_UPPER_VINES is ever made part of RT_UNINTUITIVE_JUMPS, climb is needed to get back up
|
||||
LOCATION(RC_GF_GS_TOP_FLOOR, logic->IsAdult && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_SHORT_JUMPSLASH) && logic->CanGetNightTimeGS()),
|
||||
}, {
|
||||
//Exits
|
||||
@@ -163,7 +163,7 @@ void RegionTable_Init_GerudoFortress() {
|
||||
areaTable[RR_GF_LONG_ROOF] = Region("GF Long Roof", SCENE_GERUDOS_FORTRESS, {}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_BOTTOM_OF_LOWER_VINES, []{return true;}),
|
||||
Entrance(RR_GF_NEAR_GS, []{return (logic->IsAdult && ctx->GetTrickOption(RT_GF_JUMP)) || logic->CanUse(RG_HOVER_BOOTS);}),
|
||||
Entrance(RR_GF_NEAR_GS, []{return (logic->IsAdult && ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS)) || logic->CanUse(RG_HOVER_BOOTS);}),
|
||||
Entrance(RR_GF_BELOW_GS, []{return true;}),
|
||||
Entrance(RR_GF_NEAR_CHEST, []{return logic->CanUse(RG_LONGSHOT);}),
|
||||
Entrance(RR_GF_BELOW_CHEST, []{return true;}),
|
||||
@@ -193,8 +193,8 @@ void RegionTable_Init_GerudoFortress() {
|
||||
}, {
|
||||
//Exits
|
||||
//you don't take fall damage if you land on the rock with the flag on for some reason
|
||||
//there's a trick to reach RR_GF_LONG_ROOF but that's too intricate for GF_JUMP
|
||||
Entrance(RR_GF_OUTSKIRTS, []{return ctx->GetTrickOption(RT_GF_JUMP).Get() != 0;}),
|
||||
//there's a trick to reach RR_GF_LONG_ROOF
|
||||
Entrance(RR_GF_OUTSKIRTS, []{return ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS).Get() != 0;}),
|
||||
Entrance(RR_GF_NEAR_CHEST, []{return logic->CanUse(RG_LONGSHOT);}),
|
||||
Entrance(RR_GF_BELOW_CHEST, []{return logic->TakeDamage();}),
|
||||
Entrance(RR_GF_JAIL_WINDOW, []{return logic->CanUse(RG_HOOKSHOT);}),
|
||||
|
||||
@@ -74,7 +74,7 @@ void RegionTable_Init_Kakariko() {
|
||||
Entrance(RR_KAK_REDEAD_GROTTO, []{return logic->CanOpenBombGrotto();}),
|
||||
Entrance(RR_KAK_IMPAS_LEDGE, []{return (logic->IsChild && logic->AtDay) || (logic->IsAdult && ctx->GetTrickOption(RT_VISIBLE_COLLISION));}),
|
||||
Entrance(RR_KAK_WATCHTOWER, []{return logic->IsAdult || logic->AtDay || logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_LONGSHOT) || (ctx->GetTrickOption(RT_KAK_TOWER_GS) && logic->CanJumpslashExceptHammer());}),
|
||||
Entrance(RR_KAK_ROOFTOP, []{return logic->CanUse(RG_HOOKSHOT) || (ctx->GetTrickOption(RT_KAK_MAN_ON_ROOF) && logic->IsAdult);}),
|
||||
Entrance(RR_KAK_ROOFTOP, []{return logic->CanUse(RG_HOOKSHOT) || (ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) && logic->IsAdult);}),
|
||||
Entrance(RR_KAK_IMPAS_ROOFTOP, []{return logic->CanUse(RG_HOOKSHOT) || (ctx->GetTrickOption(RT_KAK_ROOFTOP_GS) && logic->CanUse(RG_HOVER_BOOTS));}),
|
||||
Entrance(RR_THE_GRAVEYARD, []{return true;}),
|
||||
Entrance(RR_KAK_BEHIND_GATE, []{return logic->IsAdult || logic->Get(LOGIC_KAKARIKO_GATE_OPEN);}),
|
||||
@@ -104,7 +104,7 @@ void RegionTable_Init_Kakariko() {
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_KAKARIKO_VILLAGE, []{return true;}),
|
||||
Entrance(RR_KAK_ROOFTOP, []{return ctx->GetTrickOption(RT_KAK_MAN_ON_ROOF) && logic->IsChild;}),
|
||||
Entrance(RR_KAK_ROOFTOP, []{return ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) && logic->IsChild;}),
|
||||
});
|
||||
|
||||
areaTable[RR_KAK_ROOFTOP] = Region("Kak Rooftop", SCENE_KAKARIKO_VILLAGE, {}, {
|
||||
@@ -177,7 +177,7 @@ void RegionTable_Init_Kakariko() {
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_KAKARIKO_VILLAGE, []{return true;}),
|
||||
Entrance(RR_KAK_WINDMILL_UPPER, []{return (logic->IsAdult && (ctx->GetTrickOption(RT_KAK_ADULT_WINDMILL_POH) || logic->CanGroundJump())) || (logic->IsChild && logic->CanJumpslash() && ctx->GetTrickOption(RT_KAK_CHILD_WINDMILL_POH));}),
|
||||
Entrance(RR_KAK_WINDMILL_UPPER, []{return (logic->IsAdult && (ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) || logic->CanGroundJump())) || (logic->IsChild && logic->CanJumpslash() && ctx->GetTrickOption(RT_KAK_CHILD_WINDMILL_POH));}),
|
||||
});
|
||||
|
||||
areaTable[RR_KAK_WINDMILL_UPPER] = Region("Kak Windmill Upper", SCENE_WINDMILL_AND_DAMPES_GRAVE, {}, {
|
||||
|
||||
@@ -4102,6 +4102,7 @@ typedef enum {
|
||||
RT_VISIBLE_COLLISION, // -- general tricks
|
||||
RT_GROTTOS_WITHOUT_AGONY,
|
||||
RT_FEWER_TUNIC_REQUIREMENTS,
|
||||
RT_UNINTUITIVE_JUMPS,
|
||||
RT_RUSTED_SWITCHES,
|
||||
RT_FLAMING_CHESTS,
|
||||
RT_BUNNY_HOOD_JUMPS,
|
||||
@@ -4117,9 +4118,7 @@ typedef enum {
|
||||
RT_LW_GS_BEAN,
|
||||
RT_HC_STORMS_GS,
|
||||
RT_HF_BIG_POE_WITHOUT_EPONA,
|
||||
RT_KAK_MAN_ON_ROOF,
|
||||
RT_KAK_TOWER_GS,
|
||||
RT_KAK_ADULT_WINDMILL_POH,
|
||||
RT_KAK_CHILD_WINDMILL_POH,
|
||||
RT_KAK_ROOFTOP_GS,
|
||||
RT_GY_POH,
|
||||
@@ -4157,7 +4156,6 @@ typedef enum {
|
||||
RT_GV_CHILD_TENT,
|
||||
RT_GV_CHILD_CUCCO_JUMP,
|
||||
RT_PASS_GUARDS_WITH_NOTHING,
|
||||
RT_GF_JUMP,
|
||||
RT_GF_CHILD_SKIP_WASTELAND_GATE,
|
||||
RT_GF_ADULT_SKIP_WASTELAND_GATE,
|
||||
RT_GF_WARRIOR_WITH_DIFFICULT_WEAPON,
|
||||
@@ -4186,7 +4184,6 @@ typedef enum {
|
||||
RT_DC_MQ_ADULT_EYES,
|
||||
RT_DC_DODONGO_CHU,
|
||||
RT_DC_EYES_CHU,
|
||||
RT_JABU_ALCOVE_JUMP_DIVE,
|
||||
RT_JABU_BOSS_HOVER,
|
||||
RT_JABU_NEAR_BOSS_RANGED,
|
||||
RT_JABU_NEAR_BOSS_EXPLOSIVES,
|
||||
@@ -4212,7 +4209,6 @@ typedef enum {
|
||||
RT_FOREST_MQ_JS_HALLWAY_SWITCH,
|
||||
RT_FOREST_MQ_HOOKSHOT_HALLWAY_SWITCH,
|
||||
RT_FOREST_MQ_RANG_HALLWAY_SWITCH,
|
||||
RT_FIRE_BOSS_DOOR_JUMP,
|
||||
RT_FIRE_SOT,
|
||||
RT_FIRE_STRENGTH,
|
||||
RT_FIRE_SCARECROW,
|
||||
@@ -4230,7 +4226,6 @@ typedef enum {
|
||||
RT_WATER_CRACKED_WALL,
|
||||
RT_WATER_BK_REGION,
|
||||
RT_WATER_NORTH_BASEMENT_LEDGE_JUMP,
|
||||
RT_WATER_BK_JUMP_DIVE,
|
||||
RT_WATER_FW_CENTRAL_GS,
|
||||
RT_WATER_IRONS_CENTRAL_GS,
|
||||
RT_WATER_CENTRAL_BOW,
|
||||
|
||||
@@ -1347,6 +1347,10 @@ void Settings::CreateOptions() {
|
||||
"Allows the following possible without Tunics:\n- Enter Water Temple. The area below the center pillar "
|
||||
"still requires Zora Tunic. Applies to MQ also.\n- Enter Fire Temple. Volvagia still requires Goron "
|
||||
"Tunic. Applies to MQ also, and includes child access to first floor with dungeon shuffle.");
|
||||
OPT_TRICK(RT_UNINTUITIVE_JUMPS, RCQUEST_BOTH, RA_NONE, { Tricks::Tag::NOVICE }, "Unintuitive Jumps",
|
||||
"Many ledges can be overcome with particular jumps which are simple to execute without items.\n"
|
||||
"This includes jumping from heights to dive deeper without scales,\n"
|
||||
"though this trick doesn't cover Water Temple's Dragon Room.");
|
||||
OPT_TRICK(RT_RUSTED_SWITCHES, RCQUEST_BOTH, RA_NONE, { Tricks::Tag::NOVICE }, "Hammer Through Collision",
|
||||
"Applies to:\n"
|
||||
"- Hitting Fire Temple Highest Goron Chest's Rusted Switch in the SoT Block without Song of Time.\n"
|
||||
@@ -1422,17 +1426,11 @@ void Settings::CreateOptions() {
|
||||
OPT_TRICK(RT_HF_BIG_POE_WITHOUT_EPONA, RCQUEST_BOTH, RA_HYRULE_FIELD, { Tricks::Tag::NOVICE },
|
||||
"Big Poe without Epona",
|
||||
"Big Poes have a chance of appearing without Epona, you can shoot them quickly with only bow.");
|
||||
OPT_TRICK(RT_KAK_MAN_ON_ROOF, RCQUEST_BOTH, RA_KAKARIKO_VILLAGE, { Tricks::Tag::NOVICE },
|
||||
"Man on Roof without Hookshot",
|
||||
"Can be reached by side-hopping off the watchtower as either age, or by jumping onto the potion shop's "
|
||||
"roof from the ledge as adult.");
|
||||
OPT_TRICK(RT_KAK_TOWER_GS, RCQUEST_BOTH, RA_KAKARIKO_VILLAGE, { Tricks::Tag::INTERMEDIATE },
|
||||
"Kakariko Tower GS with Jump Slash",
|
||||
"Climb the tower as high as you can without touching the Gold Skulltula, then let go and jump slash "
|
||||
"immediately. By jump-slashing from as low on the ladder as possible to still hit the Skulltula, this "
|
||||
"trick can be done without taking fall damage.");
|
||||
OPT_TRICK(RT_KAK_ADULT_WINDMILL_POH, RCQUEST_BOTH, RA_KAKARIKO_VILLAGE, { Tricks::Tag::NOVICE },
|
||||
"Windmill PoH as Adult with Nothing", "Can jump up to the spinning platform from below as adult.");
|
||||
OPT_TRICK(RT_KAK_CHILD_WINDMILL_POH, RCQUEST_BOTH, RA_KAKARIKO_VILLAGE, { Tricks::Tag::EXTREME },
|
||||
"Windmill PoH as Child with Precise Jump Slash",
|
||||
"Can jump up to the spinning platform from below as child with a precise jumpslash timed with the "
|
||||
@@ -1578,9 +1576,6 @@ void Settings::CreateOptions() {
|
||||
"Sneak Past Moving Gerudo Guards with No Items",
|
||||
"The logic normally guarantees Bow or Hookshot to stun them from a distance,"
|
||||
"but every moving guard can be passed with basic movement and AI manipulation");
|
||||
OPT_TRICK(RT_GF_JUMP, RCQUEST_BOTH, RA_GERUDO_FORTRESS, { Tricks::Tag::NOVICE }, "Gerudo\'s Fortress Ledge Jumps",
|
||||
"It is possible to navigate the rooves of Fortress with unintuative jumps to reach additional areas "
|
||||
"without going inside.");
|
||||
OPT_TRICK(RT_GF_CHILD_SKIP_WASTELAND_GATE, RCQUEST_BOTH, RA_GERUDO_FORTRESS, { Tricks::Tag::NOVICE },
|
||||
"Gerudo\'s Fortress Skip Wasteland Gate as Child",
|
||||
"As child a sidehop out of bounds off the tower can be used to get past the gate.");
|
||||
@@ -1661,9 +1656,6 @@ void Settings::CreateOptions() {
|
||||
"Dodongo\'s Cavern Two Scrub Room with Strength",
|
||||
"With help from a conveniently-positioned block, Adult can quickly carry a Bomb Flower over to destroy "
|
||||
"the mud wall blocking the room with two Deku Scrubs.");
|
||||
OPT_TRICK(RT_DC_JUMP, RCQUEST_BOTH, RA_DODONGOS_CAVERN, { Tricks::Tag::NOVICE },
|
||||
"Dodongo\'s Cavern Spike Trap Room Jump without Hover Boots",
|
||||
"The jump is Adult Link only. Applies to both Vanilla and MQ.");
|
||||
OPT_TRICK(RT_DC_HAMMER_FLOOR, RCQUEST_BOTH, RA_DODONGOS_CAVERN, { Tricks::Tag::NOVICE },
|
||||
"Dodongo\'s Cavern Smash the Boss Lobby Floor",
|
||||
"The bombable floor before King Dodongo can be destroyed with Hammer if hit in the very center. This is "
|
||||
@@ -1694,11 +1686,6 @@ void Settings::CreateOptions() {
|
||||
"Dodongo\'s Cavern Light the Eyes with Bombchus",
|
||||
"You can light the dodongo head's eyes with bombchus from the main room, allowing instant access to the end "
|
||||
"of the dungeon.");
|
||||
OPT_TRICK(RT_JABU_ALCOVE_JUMP_DIVE, RCQUEST_BOTH, RA_JABU_JABUS_BELLY, { Tricks::Tag::NOVICE },
|
||||
"Jabu Underwater Alcove as Adult with Jump Dive",
|
||||
"Standing above the underwater tunnel leading to the scrub, jump down and swim through the tunnel. This "
|
||||
"allows adult to access the alcove with no Scale or Iron Boots. In Vanilla Jabu, this alcove has a "
|
||||
"business scrub. In MQ Jabu, it has the compass chest and a door switch for the main floor.");
|
||||
OPT_TRICK(RT_JABU_BOSS_HOVER, RCQUEST_VANILLA, RA_JABU_JABUS_BELLY, { Tricks::Tag::INTERMEDIATE },
|
||||
"Jabu Near Boss Room with Hover Boots",
|
||||
"A box for the blue switch can be carried over by backwalking with one while the elevator is at its "
|
||||
@@ -1809,10 +1796,6 @@ void Settings::CreateOptions() {
|
||||
"The Boomerang can return to Link through walls, allowing child to hit the hallway switch. This can be "
|
||||
"used to allow adult to pass through later, or in conjunction with \"Forest Temple Outside Backdoor with "
|
||||
"Jump Slash\".");
|
||||
OPT_TRICK(RT_FIRE_BOSS_DOOR_JUMP, RCQUEST_BOTH, RA_FIRE_TEMPLE, { Tricks::Tag::NOVICE },
|
||||
"Fire Temple Boss Door without Hover Boots or Pillar",
|
||||
"The Fire Temple Boss Door can be reached as adult with a precise jump. You must be touching the side "
|
||||
"wall of the room so that Link will grab the ledge from farther away than is normally possible.");
|
||||
// Is also used in MQ logic, but has no practical effect there as of now
|
||||
OPT_TRICK(RT_FIRE_SOT, RCQUEST_VANILLA, RA_FIRE_TEMPLE, { Tricks::Tag::INTERMEDIATE },
|
||||
"Fire Temple Song of Time Room GS without Song of Time",
|
||||
@@ -1891,12 +1874,6 @@ void Settings::CreateOptions() {
|
||||
"In the northern basement there's a ledge from where, in Vanilla Water Temple, boulders roll out into "
|
||||
"the room. Normally to jump directly to this ledge logically requires the Hover Boots, but with precise "
|
||||
"jump, it can be done without them. This trick applies to both Vanilla and Master Quest.");
|
||||
OPT_TRICK(
|
||||
RT_WATER_BK_JUMP_DIVE, RCQUEST_VANILLA, RA_WATER_TEMPLE, { Tricks::Tag::NOVICE },
|
||||
"Water Temple Boss Key Jump Dive",
|
||||
"Stand on the very edge of the raised corridor leading from the push block room to the rolling boulder "
|
||||
"corridor. Face the Gold Skulltula on the waterfall and jump over the boulder corridor floor into the pool of "
|
||||
"water, swimming right once underwater. This allows access to the boss key room without Iron boots.");
|
||||
// Also used in MQ logic, but won't be relevent unless a way to enter tower without irons exists (likely a clip +
|
||||
// swim)
|
||||
OPT_TRICK(RT_WATER_FW_CENTRAL_GS, RCQUEST_VANILLA, RA_WATER_TEMPLE, { Tricks::Tag::NOVICE },
|
||||
@@ -1929,7 +1906,7 @@ void Settings::CreateOptions() {
|
||||
"to find some other way of killing it.");
|
||||
OPT_TRICK(RT_WATER_DRAGON_JUMP_DIVE, RCQUEST_BOTH, RA_WATER_TEMPLE, { Tricks::Tag::NOVICE },
|
||||
"Water Temple Dragon Statue Jump Dive",
|
||||
"If you come into the dragon statue room from the serpent river, you can jump down from above and get "
|
||||
"If you come into the dragon statue room from the serpent river, you can sidehop down from above and get "
|
||||
"into the tunnel without needing either Iron Boots or a Scale. This trick applies to both Vanilla and "
|
||||
"Master Quest. In Vanilla, you must shoot the switch from above with the Bow, and then quickly get "
|
||||
"through the tunnel before the gate closes.");
|
||||
|
||||
Reference in New Issue
Block a user