Add Fire Trial to Fewer Tunic Requirements (#6336)

This commit is contained in:
Pepper0ni
2026-03-09 00:21:31 +00:00
committed by GitHub
parent 63859efa40
commit 139381a0e0
3 changed files with 63 additions and 23 deletions

View File

@@ -28,7 +28,7 @@ void RegionTable_Init_GanonsCastle() {
//Exits
ENTRANCE(RR_GANONS_CASTLE_LOBBY, true),
ENTRANCE(RR_GANONS_CASTLE_FOREST_TRIAL_WOLFOS_ROOM, !ctx->GetOption(RSK_MEDALLION_LOCKED_TRIALS) || logic->HasItem(RG_FOREST_MEDALLION)),
ENTRANCE(RR_GANONS_CASTLE_FIRE_TRIAL_MAIN_ROOM, !ctx->GetOption(RSK_MEDALLION_LOCKED_TRIALS) || logic->HasItem(RG_FIRE_MEDALLION)),
ENTRANCE(RR_GANONS_CASTLE_FIRE_TRIAL_FROM_OPEN, !ctx->GetOption(RSK_MEDALLION_LOCKED_TRIALS) || logic->HasItem(RG_FIRE_MEDALLION)),
ENTRANCE(RR_GANONS_CASTLE_WATER_TRIAL_BLUE_FIRE_ROOM, !ctx->GetOption(RSK_MEDALLION_LOCKED_TRIALS) || logic->HasItem(RG_WATER_MEDALLION)),
ENTRANCE(RR_GANONS_CASTLE_SHADOW_TRIAL_START, !ctx->GetOption(RSK_MEDALLION_LOCKED_TRIALS) || logic->HasItem(RG_SHADOW_MEDALLION)),
ENTRANCE(RR_GANONS_CASTLE_SPIRIT_TRIAL_BEAMOS_ROOM, !ctx->GetOption(RSK_MEDALLION_LOCKED_TRIALS) || logic->HasItem(RG_SPIRIT_MEDALLION)),
@@ -103,21 +103,37 @@ void RegionTable_Init_GanonsCastle() {
ENTRANCE(RR_GANONS_CASTLE_FOREST_TRIAL_BEAMOS_ROOM_FINAL_DOOR, true),
});
areaTable[RR_GANONS_CASTLE_FIRE_TRIAL_MAIN_ROOM] = Region("Ganon's Castle Fire Trial Main Room", SCENE_INSIDE_GANONS_CASTLE, {
// backwalking hoverboots with backflip reaches silver rupee without needing str3
EVENT_ACCESS(LOGIC_FIRE_TRIAL_SILVER_RUPEES, logic->CanUse(RG_GORON_TUNIC) && logic->CanUse(RG_GOLDEN_GAUNTLETS)),
}, {
//Locations
LOCATION(RC_GANONS_CASTLE_FIRE_TRIAL_HEART, logic->CanUse(RG_GORON_TUNIC)),
}, {
areaTable[RR_GANONS_CASTLE_FIRE_TRIAL_OPEN_DOOR] = Region("Ganon's Castle Fire Trial Open Door", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
//Exits
ENTRANCE(RR_GANONS_CASTLE_MAIN, true),
ENTRANCE(RR_GANONS_CASTLE_FIRE_TRIAL_MAIN_ROOM_END, logic->CanUse(RG_LONGSHOT)),
ENTRANCE(RR_GANONS_CASTLE_MAIN, true),
});
areaTable[RR_GANONS_CASTLE_FIRE_TRIAL_MAIN_ROOM_END] = Region("Ganon's Castle Fire Trial Main Room", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
areaTable[RR_GANONS_CASTLE_FIRE_TRIAL_FROM_OPEN] = Region("Ganon's Castle Fire Trial From Open Door", SCENE_INSIDE_GANONS_CASTLE, {
// backwalking hoverboots with backflip reaches silver rupee without needing str3
EVENT_ACCESS(LOGIC_FIRE_TRIAL_SILVER_RUPEES, logic->FireTimer() >= 48 && logic->CanUse(RG_GOLDEN_GAUNTLETS)),
}, {
//Locations
LOCATION(RC_GANONS_CASTLE_FIRE_TRIAL_HEART, logic->FireTimer() >= 16),
}, {
//Exits
ENTRANCE(RR_GANONS_CASTLE_FIRE_TRIAL_OPEN_DOOR, true),
ENTRANCE(RR_GANONS_CASTLE_FIRE_TRIAL_BARRED_DOOR, logic->CanUse(RG_LONGSHOT) && logic->FireTimer() >= 16),
});
areaTable[RR_GANONS_CASTLE_FIRE_TRIAL_FROM_BARRED] = Region("Ganon's Castle Fire Trial From Barred Door", SCENE_INSIDE_GANONS_CASTLE, {
// backwalking hoverboots with backflip reaches silver rupee without needing str3
EVENT_ACCESS(LOGIC_FIRE_TRIAL_SILVER_RUPEES, logic->FireTimer() >= 56 && logic->CanUse(RG_GOLDEN_GAUNTLETS)),
}, {
//Locations
LOCATION(RC_GANONS_CASTLE_FIRE_TRIAL_HEART, logic->FireTimer() >= 16),
}, {
//Exits
ENTRANCE(RR_GANONS_CASTLE_FIRE_TRIAL_OPEN_DOOR, logic->CanUse(RG_LONGSHOT) && logic->FireTimer() >= 24),
ENTRANCE(RR_GANONS_CASTLE_FIRE_TRIAL_BARRED_DOOR, true),
});
areaTable[RR_GANONS_CASTLE_FIRE_TRIAL_BARRED_DOOR] = Region("Ganon's Castle Fire Trial Barred Door", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
//Exits
ENTRANCE(RR_GANONS_CASTLE_FIRE_TRIAL_MAIN_ROOM, logic->CanUse(RG_LONGSHOT)),
ENTRANCE(RR_GANONS_CASTLE_FIRE_TRIAL_FINAL_ROOM, logic->Get(LOGIC_FIRE_TRIAL_SILVER_RUPEES)),
});
@@ -130,7 +146,7 @@ void RegionTable_Init_GanonsCastle() {
LOCATION(RC_GANONS_CASTLE_FIRE_TRIAL_POT_2, logic->CanBreakPots()),
}, {
//Exits
ENTRANCE(RR_GANONS_CASTLE_FIRE_TRIAL_MAIN_ROOM_END, true),
ENTRANCE(RR_GANONS_CASTLE_FIRE_TRIAL_FROM_BARRED, true),
});
areaTable[RR_GANONS_CASTLE_WATER_TRIAL_BLUE_FIRE_ROOM] = Region("Ganon's Castle Water Trial Blue Fire Room", SCENE_INSIDE_GANONS_CASTLE, {
@@ -352,7 +368,7 @@ void RegionTable_Init_GanonsCastle() {
//Exits
ENTRANCE(RR_GANONS_CASTLE_MQ_LOBBY, true),
ENTRANCE(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_STALFOS_ROOM, !ctx->GetOption(RSK_MEDALLION_LOCKED_TRIALS) || logic->HasItem(RG_FOREST_MEDALLION)),
ENTRANCE(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_MAIN_ROOM, !ctx->GetOption(RSK_MEDALLION_LOCKED_TRIALS) || logic->HasItem(RG_FIRE_MEDALLION)),
ENTRANCE(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_OPEN_DOOR, !ctx->GetOption(RSK_MEDALLION_LOCKED_TRIALS) || logic->HasItem(RG_FIRE_MEDALLION)),
ENTRANCE(RR_GANONS_CASTLE_MQ_WATER_TRIAL_GEYSER_ROOM, !ctx->GetOption(RSK_MEDALLION_LOCKED_TRIALS) || logic->HasItem(RG_WATER_MEDALLION)),
ENTRANCE(RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_STARTING_LEDGE, !ctx->GetOption(RSK_MEDALLION_LOCKED_TRIALS) || logic->HasItem(RG_SHADOW_MEDALLION)),
ENTRANCE(RR_GANONS_CASTLE_MQ_SPIRIT_TRIAL_CHAIRS_ROOM, !ctx->GetOption(RSK_MEDALLION_LOCKED_TRIALS) || logic->HasItem(RG_SPIRIT_MEDALLION)),
@@ -443,11 +459,29 @@ void RegionTable_Init_GanonsCastle() {
ENTRANCE(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM_END, true),
});
areaTable[RR_GANONS_CASTLE_MQ_FIRE_TRIAL_MAIN_ROOM] = Region("Ganon's Castle MQ Fire Trial Main Room", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
areaTable[RR_GANONS_CASTLE_MQ_FIRE_TRIAL_OPEN_DOOR] = Region("Ganon's Castle MQ Fire Trial Open Door", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
//Exits
ENTRANCE(RR_GANONS_CASTLE_MQ_MAIN, true),
//2 checks, 1 for the rupees, 1 for actually making it, as the rupees are permanent but throwing a pillar is not
ENTRANCE(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_FINAL_ROOM, AnyAgeTime([]{return logic->CanUse(RG_GORON_TUNIC) && logic->CanUse(RG_GOLDEN_GAUNTLETS);}) && logic->CanUse(RG_GORON_TUNIC) && (logic->CanUse(RG_LONGSHOT) || (logic->CanUse(RG_GOLDEN_GAUNTLETS) && (logic->CanUse(RG_HOVER_BOOTS) || (ctx->GetTrickOption(RT_GANON_MQ_FIRE_TRIAL) && logic->IsAdult && logic->CanUse(RG_HOOKSHOT)))))),
ENTRANCE(RR_GANONS_CASTLE_MQ_MAIN, true)
});
areaTable[RR_GANONS_CASTLE_MQ_FIRE_TRIAL_FROM_OPEN] = Region("Ganon's Castle MQ Fire Trial From Open Door", SCENE_INSIDE_GANONS_CASTLE, {
//Events
EVENT_ACCESS(LOGIC_FIRE_TRIAL_SILVER_RUPEES, logic->FireTimer() >= 72 && logic->CanUse(RG_GOLDEN_GAUNTLETS);),
}, {}, {
//Exits
ENTRANCE(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_OPEN_DOOR, true),
ENTRANCE(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_BARRED_DOOR, logic->FireTimer() >= 32 && (logic->CanUse(RG_LONGSHOT) ||
(logic->CanUse(RG_GOLDEN_GAUNTLETS) && (logic->CanUse(RG_HOVER_BOOTS) || (ctx->GetTrickOption(RT_GANON_MQ_FIRE_TRIAL) && logic->IsAdult && logic->CanUse(RG_HOOKSHOT)))))),
});
areaTable[RR_GANONS_CASTLE_MQ_FIRE_TRIAL_FROM_BARRED] = Region("Ganon's Castle MQ Fire Trial From Barred Door", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
//Exits
ENTRANCE(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_BARRED_DOOR, true)
});
areaTable[RR_GANONS_CASTLE_MQ_FIRE_TRIAL_BARRED_DOOR] = Region("Ganon's Castle MQ Fire Trial Barred Door", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
//Exits
ENTRANCE(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_FINAL_ROOM, logic->Get(LOGIC_FIRE_TRIAL_SILVER_RUPEES)),
});
areaTable[RR_GANONS_CASTLE_MQ_FIRE_TRIAL_FINAL_ROOM] = Region("Ganon's Castle MQ Fire Trial Final Room", SCENE_INSIDE_GANONS_CASTLE, {
@@ -460,7 +494,7 @@ void RegionTable_Init_GanonsCastle() {
LOCATION(RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2, logic->CanBreakPots()),
}, {
//Exits
ENTRANCE(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_MAIN_ROOM, true),
ENTRANCE(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_OPEN_DOOR, true),
});
areaTable[RR_GANONS_CASTLE_MQ_WATER_TRIAL_GEYSER_ROOM] = Region("Ganon's Castle MQ Water Trial Geyser Room", SCENE_INSIDE_GANONS_CASTLE, {

View File

@@ -954,7 +954,7 @@ void RegionTable_Init_WaterTemple() {
//Locations
//Boxes can kill Gold Skulltulas.
LOCATION(RC_WATER_TEMPLE_MQ_GS_BEFORE_UPPER_WATER_SWITCH, (logic->CanBreakCrates() && logic->HasItem(RG_POWER_BRACELET)) ||
(logic->CanBreakCrates() || ctx->GetTrickOption(RT_VISIBLE_COLLISION)) && logic->CanKillEnemy(RE_GOLD_SKULLTULA)),
((logic->CanBreakCrates() || ctx->GetTrickOption(RT_VISIBLE_COLLISION)) && logic->CanKillEnemy(RE_GOLD_SKULLTULA))),
LOCATION(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_UPPER_CRATE_1, logic->CanBreakCrates()),
LOCATION(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_UPPER_CRATE_2, logic->CanBreakCrates()),
LOCATION(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_UPPER_SMALL_CRATE, logic->CanBreakSmallCrates()),

View File

@@ -1004,8 +1004,10 @@ RANDO_ENUM_ITEM(RR_GANONS_CASTLE_FOREST_TRIAL_BEAMOS_ROOM)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_FOREST_TRIAL_BEAMOS_ROOM_END)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_FOREST_TRIAL_BEAMOS_ROOM_FINAL_DOOR)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_FOREST_TRIAL_FINAL_ROOM)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_FIRE_TRIAL_MAIN_ROOM)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_FIRE_TRIAL_MAIN_ROOM_END)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_FIRE_TRIAL_OPEN_DOOR)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_FIRE_TRIAL_FROM_OPEN)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_FIRE_TRIAL_FROM_BARRED)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_FIRE_TRIAL_BARRED_DOOR)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_FIRE_TRIAL_FINAL_ROOM)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_BLUE_FIRE_ROOM)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_BLUE_FIRE_ROOM_END)
@@ -1035,7 +1037,11 @@ RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM_MIDDLE)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM_END)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_FINAL_ROOM)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_MAIN_ROOM)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_OPEN_DOOR)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_FROM_OPEN)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_FROM_BARRED)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_BARRED_DOOR)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_TARGET_DOOR)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_FIRE_TRIAL_FINAL_ROOM)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_WATER_TRIAL_GEYSER_ROOM)
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM)