mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-04-28 13:17:58 +03:00
Merge ceae5c5fef
into fbbfc07ff1
This commit is contained in:
commit
1cbdf77d5f
24 changed files with 1506 additions and 1200 deletions
|
@ -551,22 +551,22 @@ const std::vector<FlagTable> flagTables = {
|
|||
{ RAND_INF_KF_TWINS_HOUSE_POT_2, "RAND_INF_KF_TWINS_HOUSE_POT_2" },
|
||||
{ RAND_INF_KF_BROTHERS_HOUSE_POT_1, "RAND_INF_KF_BROTHERS_HOUSE_POT_1" },
|
||||
{ RAND_INF_KF_BROTHERS_HOUSE_POT_2, "RAND_INF_KF_BROTHERS_HOUSE_POT_2" },
|
||||
{ RAND_INF_GF_BREAK_ROOM_POT_1, "RAND_INF_GF_BREAK_ROOM_POT_1" },
|
||||
{ RAND_INF_GF_BREAK_ROOM_POT_2, "RAND_INF_GF_BREAK_ROOM_POT_2" },
|
||||
{ RAND_INF_GF_KITCHEN_POT_1, "RAND_INF_GF_KITCHEN_POT_1" },
|
||||
{ RAND_INF_GF_KITCHEN_POT_2, "RAND_INF_GF_KITCHEN_POT_2" },
|
||||
{ RAND_INF_GF_NORTH_F1_CARPENTER_POT_1, "RAND_INF_GF_NORTH_F1_CARPENTER_POT_1" },
|
||||
{ RAND_INF_GF_NORTH_F1_CARPENTER_POT_2, "RAND_INF_GF_NORTH_F1_CARPENTER_POT_2" },
|
||||
{ RAND_INF_GF_NORTH_F1_CARPENTER_POT_3, "RAND_INF_GF_NORTH_F1_CARPENTER_POT_3" },
|
||||
{ RAND_INF_GF_NORTH_F2_CARPENTER_POT_1, "RAND_INF_GF_NORTH_F2_CARPENTER_POT_1" },
|
||||
{ RAND_INF_GF_NORTH_F2_CARPENTER_POT_2, "RAND_INF_GF_NORTH_F2_CARPENTER_POT_2" },
|
||||
{ RAND_INF_GF_SOUTH_F1_CARPENTER_POT_1, "RAND_INF_GF_SOUTH_F1_CARPENTER_POT_1" },
|
||||
{ RAND_INF_GF_SOUTH_F1_CARPENTER_POT_2, "RAND_INF_GF_SOUTH_F1_CARPENTER_POT_2" },
|
||||
{ RAND_INF_GF_SOUTH_F1_CARPENTER_POT_3, "RAND_INF_GF_SOUTH_F1_CARPENTER_POT_3" },
|
||||
{ RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_1, "RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_1" },
|
||||
{ RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2, "RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2" },
|
||||
{ RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3, "RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3" },
|
||||
{ RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4, "RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4" },
|
||||
{ RAND_INF_TH_BREAK_ROOM_POT_1, "RAND_INF_TH_BREAK_ROOM_POT_1" },
|
||||
{ RAND_INF_TH_BREAK_ROOM_POT_2, "RAND_INF_TH_BREAK_ROOM_POT_2" },
|
||||
{ RAND_INF_TH_KITCHEN_POT_1, "RAND_INF_TH_KITCHEN_POT_1" },
|
||||
{ RAND_INF_TH_KITCHEN_POT_2, "RAND_INF_TH_KITCHEN_POT_2" },
|
||||
{ RAND_INF_TH_NORTH_F1_CARPENTER_POT_1, "RAND_INF_TH_NORTH_F1_CARPENTER_POT_1" },
|
||||
{ RAND_INF_TH_NORTH_F1_CARPENTER_POT_2, "RAND_INF_TH_NORTH_F1_CARPENTER_POT_2" },
|
||||
{ RAND_INF_TH_NORTH_F1_CARPENTER_POT_3, "RAND_INF_TH_NORTH_F1_CARPENTER_POT_3" },
|
||||
{ RAND_INF_TH_NORTH_F2_CARPENTER_POT_1, "RAND_INF_TH_NORTH_F2_CARPENTER_POT_1" },
|
||||
{ RAND_INF_TH_NORTH_F2_CARPENTER_POT_2, "RAND_INF_TH_NORTH_F2_CARPENTER_POT_2" },
|
||||
{ RAND_INF_TH_SOUTH_F1_CARPENTER_POT_1, "RAND_INF_TH_SOUTH_F1_CARPENTER_POT_1" },
|
||||
{ RAND_INF_TH_SOUTH_F1_CARPENTER_POT_2, "RAND_INF_TH_SOUTH_F1_CARPENTER_POT_2" },
|
||||
{ RAND_INF_TH_SOUTH_F1_CARPENTER_POT_3, "RAND_INF_TH_SOUTH_F1_CARPENTER_POT_3" },
|
||||
{ RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_1, "RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_1" },
|
||||
{ RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_2, "RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_2" },
|
||||
{ RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_3, "RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_3" },
|
||||
{ RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_4, "RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_4" },
|
||||
{ RAND_INF_WASTELAND_NEAR_GS_POT_1, "RAND_INF_WASTELAND_NEAR_GS_POT_1" },
|
||||
{ RAND_INF_WASTELAND_NEAR_GS_POT_2, "RAND_INF_WASTELAND_NEAR_GS_POT_2" },
|
||||
{ RAND_INF_WASTELAND_NEAR_GS_POT_3, "RAND_INF_WASTELAND_NEAR_GS_POT_3" },
|
||||
|
@ -1590,7 +1590,7 @@ const std::vector<FlagTable> flagTables = {
|
|||
{ RAND_INF_HF_POND_STORMS_FAIRY, "RAND_INF_HF_POND_STORMS_FAIRY" },
|
||||
{ RAND_INF_DMT_FLAG_SUN_FAIRY, "RAND_INF_DMT_FLAG_SUN_FAIRY" },
|
||||
{ RAND_INF_LW_SHORTCUT_STORMS_FAIRY, "RAND_INF_LW_SHORTCUT_STORMS_FAIRY" },
|
||||
{ RAND_INF_GF_KITCHEN_SUN_FAIRY, "RAND_INF_GF_KITCHEN_SUN_FAIRY" },
|
||||
{ RAND_INF_TH_KITCHEN_SUN_FAIRY, "RAND_INF_TH_KITCHEN_SUN_FAIRY" },
|
||||
{ RAND_INF_SPIRIT_TEMPLE_BOULDER_ROOM_SUN_FAIRY, "RAND_INF_SPIRIT_TEMPLE_BOULDER_ROOM_SUN_FAIRY" },
|
||||
{ RAND_INF_SPIRIT_TEMPLE_ARMOS_ROOM_SUN_FAIRY, "RAND_INF_SPIRIT_TEMPLE_ARMOS_ROOM_SUN_FAIRY" },
|
||||
{ RAND_INF_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, "RAND_INF_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY" },
|
||||
|
|
|
@ -1961,7 +1961,7 @@ void StaticData::HintTable_Init_Exclude_Overworld() {
|
|||
/*german*/ "Man erzählt sich, daß das #Machen von Regen in den verlorenen Wäldern# #[[1]]# enthülle.",
|
||||
/*french*/ "Selon moi, #jouer une mélodie orageuse dans les Bois Perdus# révèle #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
hintTextTable[RHT_GF_KITCHEN_SUN_FAIRY] = HintText(CustomMessage("They say that #calling the sun in a guarded kitchen# exposes #[[1]]#.",
|
||||
hintTextTable[RHT_TH_KITCHEN_SUN_FAIRY] = HintText(CustomMessage("They say that #calling the sun in a guarded kitchen# exposes #[[1]]#.",
|
||||
/*german*/ "Man erzählt sich, daß das #Anrufen der Sonne in einer bewachten Küche# #[[1]]# freilege.",
|
||||
/*french*/ "Selon moi, #appeler le soleil dans une cuisine gardée# révèle #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||
|
||||
|
|
|
@ -811,16 +811,16 @@ void GenerateItemPool() {
|
|||
|
||||
// Gerudo Fortress
|
||||
if (ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE)) {
|
||||
ctx->PlaceItemInLocation(RC_GF_NORTH_F1_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_GF_NORTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_GF_SOUTH_F1_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_1_TORCH_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_DEAD_END_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_DOUBLE_CELL_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_STEEP_SLOPE_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
} else if (ctx->GetOption(RSK_GERUDO_KEYS).IsNot(RO_GERUDO_KEYS_VANILLA)) {
|
||||
if (ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST)) {
|
||||
AddItemToMainPool(RG_GERUDO_FORTRESS_SMALL_KEY);
|
||||
ctx->PlaceItemInLocation(RC_GF_NORTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_GF_SOUTH_F1_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_DEAD_END_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_DOUBLE_CELL_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_STEEP_SLOPE_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
} else {
|
||||
// Only add key ring if 4 Fortress keys necessary
|
||||
if (ctx->GetOption(RSK_KEYRINGS_GERUDO_FORTRESS) && ctx->GetOption(RSK_KEYRINGS)) {
|
||||
|
@ -843,15 +843,15 @@ void GenerateItemPool() {
|
|||
}
|
||||
} else {
|
||||
if (ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST)) {
|
||||
ctx->PlaceItemInLocation(RC_GF_NORTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_GF_NORTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_GF_SOUTH_F1_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_1_TORCH_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_DEAD_END_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_DOUBLE_CELL_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_STEEP_SLOPE_CARPENTER, RG_RECOVERY_HEART, false, true);
|
||||
} else {
|
||||
ctx->PlaceItemInLocation(RC_GF_NORTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_GF_NORTH_F2_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_GF_SOUTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_1_TORCH_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_DEAD_END_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_DOUBLE_CELL_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_STEEP_SLOPE_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -862,9 +862,9 @@ void GenerateItemPool() {
|
|||
ctx->possibleIceTrapModels.push_back(RG_GERUDO_MEMBERSHIP_CARD);
|
||||
} else if (ctx->GetOption(RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD)) {
|
||||
AddItemToPool(PendingJunkPool, RG_GERUDO_MEMBERSHIP_CARD);
|
||||
ctx->PlaceItemInLocation(RC_GF_GERUDO_MEMBERSHIP_CARD, RG_ICE_TRAP, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_FREED_CARPENTERS, RG_ICE_TRAP, false, true);
|
||||
} else {
|
||||
ctx->PlaceItemInLocation(RC_GF_GERUDO_MEMBERSHIP_CARD, RG_GERUDO_MEMBERSHIP_CARD, false, true);
|
||||
ctx->PlaceItemInLocation(RC_TH_FREED_CARPENTERS, RG_GERUDO_MEMBERSHIP_CARD, false, true);
|
||||
}
|
||||
|
||||
// Keys
|
||||
|
|
|
@ -304,38 +304,38 @@ void Rando::StaticData::RegisterCrateLocations() {
|
|||
locationTable[RC_GV_FREESTANDING_POH_CRATE] = Location::Crate(RC_GV_FREESTANDING_POH_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_VALLEY, SCENE_GERUDO_VALLEY, TWO_ACTOR_PARAMS(-350, 1480), "Freestanding PoH Crate", RHT_CRATE_GERUDO_VALLEY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_FREESTANDING_POH_CRATE));
|
||||
locationTable[RC_GV_NEAR_COW_CRATE] = Location::Crate(RC_GV_NEAR_COW_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_VALLEY, SCENE_GERUDO_VALLEY, TWO_ACTOR_PARAMS(-449, 123), "Near Cow Crate", RHT_CRATE_GERUDO_VALLEY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_NEAR_COW_CRATE));
|
||||
locationTable[RC_GF_ABOVE_JAIL_CRATE] = Location::Crate(RC_GF_ABOVE_JAIL_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(51, -2997), "Above Jail Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_PURPLE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ABOVE_JAIL_CRATE));
|
||||
locationTable[RC_GF_OUTSIDE_CENTER_CRATE_1] = Location::Crate(RC_GF_OUTSIDE_CENTER_CRATE_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(315, -1534), "Outside Center Crate 1", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSIDE_CENTER_CRATE_1));
|
||||
locationTable[RC_GF_OUTSIDE_CENTER_CRATE_2] = Location::Crate(RC_GF_OUTSIDE_CENTER_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(315, -1594), "Outside Center Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSIDE_CENTER_CRATE_2));
|
||||
locationTable[RC_GF_OUTSIDE_CENTER_CRATE_3] = Location::Crate(RC_GF_OUTSIDE_CENTER_CRATE_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(310, -1782), "Outside Center Crate 3", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSIDE_CENTER_CRATE_3));
|
||||
locationTable[RC_GF_OUTSIDE_CENTER_CRATE_4] = Location::Crate(RC_GF_OUTSIDE_CENTER_CRATE_4, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(310, -1842), "Outside Center Crate 4", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSIDE_CENTER_CRATE_4));
|
||||
locationTable[RC_GF_OUTSIDE_LEFT_CRATE_1] = Location::Crate(RC_GF_OUTSIDE_LEFT_CRATE_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(-60, -2210), "Outside Left Crate 1", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSIDE_LEFT_CRATE_1));
|
||||
locationTable[RC_GF_OUTSIDE_LEFT_CRATE_2] = Location::Crate(RC_GF_OUTSIDE_LEFT_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(-120, -2210), "Outside Left Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSIDE_LEFT_CRATE_2));
|
||||
locationTable[RC_GF_ARCHERY_RANGE_CRATE_2] = Location::Crate(RC_GF_ARCHERY_RANGE_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -1780), "Archery Range Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_RANGE_CRATE_2));
|
||||
locationTable[RC_GF_ARCHERY_RANGE_CRATE_3] = Location::Crate(RC_GF_ARCHERY_RANGE_CRATE_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -2020), "Archery Range Crate 3", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_RANGE_CRATE_3));
|
||||
locationTable[RC_GF_ARCHERY_RANGE_CRATE_4] = Location::Crate(RC_GF_ARCHERY_RANGE_CRATE_4, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -2260), "Archery Range Crate 4", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_RANGE_CRATE_4));
|
||||
locationTable[RC_GF_ARCHERY_RANGE_CRATE_1] = Location::Crate(RC_GF_ARCHERY_RANGE_CRATE_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -1540), "Archery Range Crate 1", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_RANGE_CRATE_1));
|
||||
locationTable[RC_GF_ARCHERY_RANGE_CRATE_5] = Location::Crate(RC_GF_ARCHERY_RANGE_CRATE_5, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -2500), "Archery Range Crate 5", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_RANGE_CRATE_5));
|
||||
locationTable[RC_GF_ARCHERY_RANGE_CRATE_6] = Location::Crate(RC_GF_ARCHERY_RANGE_CRATE_6, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -2740), "Archery Range Crate 6", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_RANGE_CRATE_6));
|
||||
locationTable[RC_GF_ARCHERY_RANGE_CRATE_7] = Location::Crate(RC_GF_ARCHERY_RANGE_CRATE_7, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -2980), "Archery Range Crate 7", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_RANGE_CRATE_7));
|
||||
locationTable[RC_GF_ARCHERY_START_CRATE_1] = Location::Crate(RC_GF_ARCHERY_START_CRATE_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3727, -243), "Near Archery Start Crate 1", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_START_CRATE_1));
|
||||
locationTable[RC_GF_ARCHERY_START_CRATE_2] = Location::Crate(RC_GF_ARCHERY_START_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3667, -243), "Near Archery Start Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_START_CRATE_2));
|
||||
locationTable[RC_GF_ARCHERY_LEFT_END_CRATE_1] = Location::Crate(RC_GF_ARCHERY_LEFT_END_CRATE_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3446, -4875), "Archery Left End Crate 1", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_LEFT_END_CRATE_1));
|
||||
locationTable[RC_GF_ARCHERY_LEFT_END_CRATE_2] = Location::Crate(RC_GF_ARCHERY_LEFT_END_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3303, -5018), "Archery Left End Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_LEFT_END_CRATE_2));
|
||||
locationTable[RC_GF_ARCHERY_RIGHT_END_CRATE_1] = Location::Crate(RC_GF_ARCHERY_RIGHT_END_CRATE_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3406, 414), "Archery Right End Crate 1", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_RIGHT_END_CRATE_1));
|
||||
locationTable[RC_GF_ARCHERY_RIGHT_END_CRATE_2] = Location::Crate(RC_GF_ARCHERY_RIGHT_END_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3330, 406), "Archery Right End Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_RIGHT_END_CRATE_2));
|
||||
locationTable[RC_GF_KITCHEN_CRATE_1] = Location::Crate(RC_GF_KITCHEN_CRATE_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1144, -1251), "Kitchen Crate 1", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_CRATE_1));
|
||||
locationTable[RC_GF_KITCHEN_CRATE_2] = Location::Crate(RC_GF_KITCHEN_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1144, -1191), "Kitchen Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_CRATE_2));
|
||||
locationTable[RC_GF_KITCHEN_CRATE_3] = Location::Crate(RC_GF_KITCHEN_CRATE_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1256, -847), "Kitchen Crate 3", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_CRATE_3));
|
||||
locationTable[RC_GF_KITCHEN_CRATE_4] = Location::Crate(RC_GF_KITCHEN_CRATE_4, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1256, -787), "Kitchen Crate 4", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_CRATE_4));
|
||||
locationTable[RC_GF_KITCHEN_CRATE_5] = Location::Crate(RC_GF_KITCHEN_CRATE_5, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1610, -624), "Kitchen Crate 5", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_CRATE_5));
|
||||
locationTable[RC_GF_BREAK_ROOM_CRATE_1] = Location::Crate(RC_GF_BREAK_ROOM_CRATE_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1260, -3155), "Break Room Crate 1", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_BREAK_ROOM_CRATE_1));
|
||||
locationTable[RC_GF_BREAK_ROOM_CRATE_4] = Location::Crate(RC_GF_BREAK_ROOM_CRATE_4, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1600, -3550), "Break Room Crate 4", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_BREAK_ROOM_CRATE_4));
|
||||
locationTable[RC_GF_BREAK_ROOM_CRATE_2] = Location::Crate(RC_GF_BREAK_ROOM_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1360, -3325), "Break Room Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_BREAK_ROOM_CRATE_2));
|
||||
locationTable[RC_GF_BREAK_ROOM_CRATE_3] = Location::Crate(RC_GF_BREAK_ROOM_CRATE_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1600, -3502), "Break Room Crate 3", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_BREAK_ROOM_CRATE_3));
|
||||
locationTable[RC_GF_NORTH_F1_CARPENTER_CRATE] = Location::Crate(RC_GF_NORTH_F1_CARPENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-510, -2213), "North F1 Carpenter Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_CRATE));
|
||||
locationTable[RC_GF_NORTH_F3_CARPENTER_CRATE] = Location::Crate(RC_GF_NORTH_F3_CARPENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1090, -2210), "North F3 Carpenter Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F3_CARPENTER_CRATE));
|
||||
locationTable[RC_GF_SOUTH_F2_CARPENTER_CRATE_1] = Location::Crate(RC_GF_SOUTH_F2_CARPENTER_CRATE_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-49, 11), "South F2 Carpenter Crate 1", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F2_CARPENTER_CRATE_1));
|
||||
locationTable[RC_GF_SOUTH_F2_CARPENTER_CRATE_2] = Location::Crate(RC_GF_SOUTH_F2_CARPENTER_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(11, 11), "South F2 Carpenter Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F2_CARPENTER_CRATE_2));
|
||||
locationTable[RC_GF_SOUTHMOST_CENTER_CRATE] = Location::Crate(RC_GF_SOUTHMOST_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(315, -1534), "Southmost Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTHMOST_CENTER_CRATE));
|
||||
locationTable[RC_GF_MID_SOUTH_CENTER_CRATE] = Location::Crate(RC_GF_MID_SOUTH_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(315, -1594), "Middle South Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_MID_SOUTH_CENTER_CRATE));
|
||||
locationTable[RC_GF_MID_NORTH_CENTER_CRATE] = Location::Crate(RC_GF_MID_NORTH_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(310, -1782), "Middle North Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_MID_NORTH_CENTER_CRATE));
|
||||
locationTable[RR_GF_NORTHMOST_CENTER_CRATE] = Location::Crate(RR_GF_NORTHMOST_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(310, -1842), "Northmost Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTHMOST_CENTER_CRATE));
|
||||
locationTable[RC_GF_OUTSKIRTS_NE_CRATE] = Location::Crate(RC_GF_OUTSKIRTS_NE_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(-60, -2210), "Outskirts Northeast Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSKIRTS_NE_CRATE));
|
||||
locationTable[RC_GF_OUTSKIRTS_NW_CRATE] = Location::Crate(RC_GF_OUTSKIRTS_NW_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(-120, -2210), "Outskirts Northwest Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSKIRTS_NW_CRATE));
|
||||
locationTable[RC_GF_HBA_RANGE_CRATE_2] = Location::Crate(RC_GF_HBA_RANGE_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -1780), "Horseback Archery Range Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_HBA_RANGE_CRATE_2));
|
||||
locationTable[RC_GF_HBA_RANGE_CRATE_3] = Location::Crate(RC_GF_HBA_RANGE_CRATE_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -2020), "Horseback Archery Range Crate 3", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_HBA_RANGE_CRATE_3));
|
||||
locationTable[RC_GF_HBA_RANGE_CRATE_4] = Location::Crate(RC_GF_HBA_RANGE_CRATE_4, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -2260), "Horseback Archery Range Crate 4", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_HBA_RANGE_CRATE_4));
|
||||
locationTable[RC_GF_HBA_RANGE_CRATE_1] = Location::Crate(RC_GF_HBA_RANGE_CRATE_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -1540), "Horseback Archery Range Crate 1", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_HBA_RANGE_CRATE_1));
|
||||
locationTable[RC_GF_HBA_RANGE_CRATE_5] = Location::Crate(RC_GF_HBA_RANGE_CRATE_5, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -2500), "Horseback Archery Range Crate 5", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_HBA_RANGE_CRATE_5));
|
||||
locationTable[RC_GF_HBA_RANGE_CRATE_6] = Location::Crate(RC_GF_HBA_RANGE_CRATE_6, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -2740), "Horseback Archery Range Crate 6", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_HBA_RANGE_CRATE_6));
|
||||
locationTable[RC_GF_HBA_RANGE_CRATE_7] = Location::Crate(RC_GF_HBA_RANGE_CRATE_7, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -2980), "Horseback Archery Range Crate 7", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_HBA_RANGE_CRATE_7));
|
||||
locationTable[RC_GF_HBA_CANOPY_EAST_CRATE] = Location::Crate(RC_GF_HBA_CANOPY_EAST_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3727, -243), "Horseback Archery Canopy East Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_HBA_CANOPY_EAST_CRATE));
|
||||
locationTable[RC_GF_HBA_CANOPY_WEST_CRATE] = Location::Crate(RC_GF_HBA_CANOPY_WEST_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3667, -243), "Horseback Archery Canopy West Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_HBA_CANOPY_WEST_CRATE));
|
||||
locationTable[RC_GF_NORTH_TARGET_EAST_CRATE] = Location::Crate(RC_GF_NORTH_TARGET_EAST_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3446, -4875), "North Target East Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_TARGET_EAST_CRATE));
|
||||
locationTable[RC_GF_NORTH_TARGET_WEST_CRATE] = Location::Crate(RC_GF_NORTH_TARGET_WEST_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3303, -5018), "North Target West Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_TARGET_WEST_CRATE));
|
||||
locationTable[RC_GF_SOUTH_TARGET_EAST_CRATE] = Location::Crate(RC_GF_SOUTH_TARGET_EAST_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3406, 414), "South Target East Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_TARGET_EAST_CRATE));
|
||||
locationTable[RC_GF_SOUTH_TARGET_WEST_CRATE] = Location::Crate(RC_GF_SOUTH_TARGET_WEST_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3330, 406), "South Target West Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_TARGET_WEST_CRATE));
|
||||
locationTable[RC_TH_NEAR_KITCHEN_LEFTMOST_CRATE] = Location::Crate(RC_TH_NEAR_KITCHEN_LEFTMOST_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1144, -1251), "Near Kitchen Leftmost Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_NEAR_KITCHEN_LEFTMOST_CRATE));
|
||||
locationTable[RC_TH_NEAR_KITCHEN_MID_LEFT_CRATE] = Location::Crate(RC_TH_NEAR_KITCHEN_MID_LEFT_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1144, -1191), "Near Kitchen Middle Left Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_NEAR_KITCHEN_MID_LEFT_CRATE));
|
||||
locationTable[RC_TH_NEAR_KITCHEN_MID_RIGHT_CRATE] = Location::Crate(RC_TH_NEAR_KITCHEN_MID_RIGHT_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1256, -847), "Near Kitchen Middle Right Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_NEAR_KITCHEN_MID_RIGHT_CRATE));
|
||||
locationTable[RC_TH_NEAR_KITCHEN_RIGHTMOST_CRATE] = Location::Crate(RC_TH_NEAR_KITCHEN_RIGHTMOST_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1256, -787), "Near Kitchen Rightmost Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_NEAR_KITCHEN_RIGHTMOST_CRATE));
|
||||
locationTable[RC_TH_KITCHEN_CRATE] = Location::Crate(RC_TH_KITCHEN_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1610, -624), "Kitchen Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_KITCHEN_CRATE));
|
||||
locationTable[RC_TH_BREAK_HALLWAY_OUTER_CRATE] = Location::Crate(RC_TH_BREAK_HALLWAY_OUTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1260, -3155), "Break Hallway Outer Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_BREAK_HALLWAY_OUTER_CRATE));
|
||||
locationTable[RC_TH_BREAK_ROOM_LEFT_CRATE] = Location::Crate(RC_TH_BREAK_ROOM_LEFT_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1600, -3550), "Break Room Left Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_BREAK_ROOM_LEFT_CRATE));
|
||||
locationTable[RC_TH_BREAK_HALLWAY_INNER_CRATE] = Location::Crate(RC_TH_BREAK_HALLWAY_INNER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1360, -3325), "Break Hallway Inner Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_BREAK_HALLWAY_INNER_CRATE));
|
||||
locationTable[RC_TH_BREAK_ROOM_RIGHT_CRATE] = Location::Crate(RC_TH_BREAK_ROOM_RIGHT_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1600, -3502), "Break Room Right Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_BREAK_ROOM_RIGHT_CRATE));
|
||||
locationTable[RC_TH_1_TORCH_CELL_CRATE] = Location::Crate(RC_TH_1_TORCH_CELL_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-510, -2213), "1 Torch Cell Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_1_TORCH_CELL_CRATE));
|
||||
locationTable[RC_TH_DEAD_END_CELL_CRATE] = Location::Crate(RC_TH_DEAD_END_CELL_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1090, -2210), "Dead End Cell Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_DEAD_END_CELL_CRATE));
|
||||
locationTable[RC_TH_DOUBLE_CELL_LEFT_CRATE] = Location::Crate(RC_TH_DOUBLE_CELL_LEFT_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-49, 11), "Double Cell Left Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_DOUBLE_CELL_LEFT_CRATE));
|
||||
locationTable[RC_TH_DOUBLE_CELL_RIGHT_CRATE] = Location::Crate(RC_TH_DOUBLE_CELL_RIGHT_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(11, 11), "Double Cell Right Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_DOUBLE_CELL_RIGHT_CRATE));
|
||||
locationTable[RC_HW_BEFORE_QUICKSAND_CRATE] = Location::Crate(RC_HW_BEFORE_QUICKSAND_CRATE, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(3832, 2840), "Before Quicksand Crate", RHT_CRATE_WASTELAND, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HW_BEFORE_QUICKSAND_CRATE));
|
||||
locationTable[RC_HW_AFTER_QUICKSAND_CRATE_1] = Location::Crate(RC_HW_AFTER_QUICKSAND_CRATE_1, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(3235, 2313), "After Quicksand Crate 1", RHT_CRATE_WASTELAND, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HW_AFTER_QUICKSAND_CRATE_1));
|
||||
locationTable[RC_HW_AFTER_QUICKSAND_CRATE_2] = Location::Crate(RC_HW_AFTER_QUICKSAND_CRATE_2, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(3125, 2459), "After Quicksand Crate 2", RHT_CRATE_WASTELAND, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HW_AFTER_QUICKSAND_CRATE_2));
|
||||
|
@ -380,7 +380,7 @@ void Rando::StaticData::RegisterCrateLocations() {
|
|||
locationTable[RC_GV_CRATE_BRIDGE_2] = Location::NLCrate(RC_GV_CRATE_BRIDGE_2, RCQUEST_BOTH, RCAREA_GERUDO_VALLEY, SCENE_GERUDO_VALLEY, TWO_ACTOR_PARAMS(-860, -125), "Near Bridge Crate 2", RHT_CRATE_GERUDO_VALLEY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_CRATE_BRIDGE_2));
|
||||
locationTable[RC_GV_CRATE_BRIDGE_3] = Location::NLCrate(RC_GV_CRATE_BRIDGE_3, RCQUEST_BOTH, RCAREA_GERUDO_VALLEY, SCENE_GERUDO_VALLEY, TWO_ACTOR_PARAMS(-860, -150), "Near Bridge Crate 3", RHT_CRATE_GERUDO_VALLEY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_CRATE_BRIDGE_3));
|
||||
locationTable[RC_GV_CRATE_BRIDGE_4] = Location::NLCrate(RC_GV_CRATE_BRIDGE_4, RCQUEST_BOTH, RCAREA_GERUDO_VALLEY, SCENE_GERUDO_VALLEY, TWO_ACTOR_PARAMS(-860, -90), "Near Bridge Crate 4", RHT_CRATE_GERUDO_VALLEY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_CRATE_BRIDGE_4));
|
||||
locationTable[RC_GF_ARCHERY_LEFT_END_CHILD_CRATE] = Location::NLCrate(RC_GF_ARCHERY_LEFT_END_CHILD_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3443, -4876), "Archery Left End Child Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_LEFT_END_CHILD_CRATE));
|
||||
locationTable[RC_GF_NORTH_TARGET_CHILD_CRATE] = Location::NLCrate(RC_GF_NORTH_TARGET_CHILD_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3443, -4876), "North Target Child Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_TARGET_CHILD_CRATE));
|
||||
|
||||
// MQ Crates
|
||||
// Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Hint Text Key Vanilla Spoiler Collection Check
|
||||
|
|
|
@ -383,7 +383,7 @@ void Rando::StaticData::RegisterFairyLocations() {
|
|||
locationTable[RC_DMT_FLAG_SUN_FAIRY] = Location::Fairy(RC_DMT_FLAG_SUN_FAIRY, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_TRAIL, SCENE_DEATH_MOUNTAIN_TRAIL, TWO_ACTOR_PARAMS(0x1000, 464), "Flag Sun's Song Fairy", RHT_DMT_FLAG_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_FLAG_SUN_FAIRY));
|
||||
locationTable[RC_DMT_COW_GROTTO_STORMS_FAIRY] = Location::Fairy(RC_DMT_COW_GROTTO_STORMS_FAIRY, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_TRAIL, SCENE_GROTTOS, TWO_ACTOR_PARAMS(0x1000, -311), "Cow Grotto Song of Storms Fairy", RHT_DMT_COW_GROTTO_STORMS_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_COW_GROTTO_STORMS_FAIRY));
|
||||
locationTable[RC_LW_SHORTCUT_STORMS_FAIRY] = Location::Fairy(RC_LW_SHORTCUT_STORMS_FAIRY, RCQUEST_BOTH, RCAREA_LOST_WOODS, SCENE_LOST_WOODS, TWO_ACTOR_PARAMS(0x1000, -795), "Shortcuts Song of Storms Fairy", RHT_LW_SHORTCUT_STORMS_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_SHORTCUT_STORMS_FAIRY));
|
||||
locationTable[RC_GF_KITCHEN_SUN_FAIRY] = Location::Fairy(RC_GF_KITCHEN_SUN_FAIRY, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(0x1000, -621), "Kitchen Sun's Song Fairy", RHT_GF_KITCHEN_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_SUN_FAIRY));
|
||||
locationTable[RC_TH_KITCHEN_SUN_FAIRY] = Location::Fairy(RC_TH_KITCHEN_SUN_FAIRY, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(0x1000, -621), "Kitchen Sun's Song Fairy", RHT_TH_KITCHEN_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_KITCHEN_SUN_FAIRY));
|
||||
locationTable[RC_LW_DEKU_SCRUB_GROTTO_SUN_FAIRY] = Location::Fairy(RC_LW_DEKU_SCRUB_GROTTO_SUN_FAIRY, RCQUEST_BOTH, RCAREA_LOST_WOODS, SCENE_GROTTOS, TWO_ACTOR_PARAMS(0x1000, 741), "Scrub Grotto Sun's Song Fairy", RHT_LW_DEKU_SCRUB_GROTTO_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_DEKU_SCRUB_GROTTO_SUN_FAIRY));
|
||||
locationTable[RC_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY] = Location::Fairy(RC_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_ROYAL_FAMILYS_TOMB, TWO_ACTOR_PARAMS(0x1000, 1476), "Royal Family's Tomb Sun's Song Fairy", RHT_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY));
|
||||
|
||||
|
|
|
@ -108,22 +108,22 @@ void Rando::StaticData::RegisterPotLocations() {
|
|||
locationTable[RC_KF_TWINS_HOUSE_POT_1] = Location::Pot(RC_KF_TWINS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_TWINS_HOUSE, TWO_ACTOR_PARAMS(33, -55), "Twins House Pot 1", RHT_POT_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_TWINS_HOUSE_POT_1));
|
||||
locationTable[RC_KF_BROTHERS_HOUSE_POT_1] = Location::Pot(RC_KF_BROTHERS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KNOW_IT_ALL_BROS_HOUSE, TWO_ACTOR_PARAMS(-134, -29), "Brothers House Pot 1", RHT_POT_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BROTHERS_HOUSE_POT_1));
|
||||
locationTable[RC_KF_BROTHERS_HOUSE_POT_2] = Location::Pot(RC_KF_BROTHERS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KNOW_IT_ALL_BROS_HOUSE, TWO_ACTOR_PARAMS(-68, 114), "Brothers House Pot 2", RHT_POT_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BROTHERS_HOUSE_POT_2));
|
||||
locationTable[RC_GF_BREAK_ROOM_POT_1] = Location::Pot(RC_GF_BREAK_ROOM_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1438, -3629), "Break Room Pot 1", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_BREAK_ROOM_POT_1));
|
||||
locationTable[RC_GF_BREAK_ROOM_POT_2] = Location::Pot(RC_GF_BREAK_ROOM_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1403, -3679), "Break Room Pot 2", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_BREAK_ROOM_POT_2));
|
||||
locationTable[RC_GF_KITCHEN_POT_1] = Location::Pot(RC_GF_KITCHEN_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1908, -789), "Kitchen Pot 1", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_POT_1));
|
||||
locationTable[RC_GF_KITCHEN_POT_2] = Location::Pot(RC_GF_KITCHEN_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1951, -850), "Kitchen Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_POT_2));
|
||||
locationTable[RC_GF_NORTH_F1_CARPENTER_POT_1] = Location::Pot(RC_GF_NORTH_F1_CARPENTER_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-475, -2622), "North F1 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_POT_1));
|
||||
locationTable[RC_GF_NORTH_F1_CARPENTER_POT_2] = Location::Pot(RC_GF_NORTH_F1_CARPENTER_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-512, -2621), "North F1 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_POT_2));
|
||||
locationTable[RC_GF_NORTH_F1_CARPENTER_POT_3] = Location::Pot(RC_GF_NORTH_F1_CARPENTER_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-511, -2582), "North F1 Carpenter Pot 3", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_POT_3));
|
||||
locationTable[RC_GF_NORTH_F2_CARPENTER_POT_1] = Location::Pot(RC_GF_NORTH_F2_CARPENTER_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(67, -1975), "North F2 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F2_CARPENTER_POT_1));
|
||||
locationTable[RC_GF_NORTH_F2_CARPENTER_POT_2] = Location::Pot(RC_GF_NORTH_F2_CARPENTER_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(39, -1943), "North F2 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F2_CARPENTER_POT_2));
|
||||
locationTable[RC_GF_SOUTH_F1_CARPENTER_POT_1] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(691, 48), "South F1 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_POT_1));
|
||||
locationTable[RC_GF_SOUTH_F1_CARPENTER_POT_2] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(691, 16), "South F1 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_POT_2));
|
||||
locationTable[RC_GF_SOUTH_F1_CARPENTER_POT_3] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(661, 16), "South F1 Carpenter Pot 3", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_POT_3));
|
||||
locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(26, 524), "South F1 Carpenter Cell Pot 1", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_1));
|
||||
locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(61, 549), "South F1 Carpenter Cell Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2));
|
||||
locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(215, 549), "South F1 Carpenter Cell Pot 3", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3));
|
||||
locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(254, 529), "South F1 Carpenter Cell Pot 4", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4));
|
||||
locationTable[RC_TH_BREAK_ROOM_FRONT_POT] = Location::Pot(RC_TH_BREAK_ROOM_FRONT_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1438, -3629), "Break Room Pot 1", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_BREAK_ROOM_POT_1));
|
||||
locationTable[RC_TH_BREAK_ROOM_BACK_POT] = Location::Pot(RC_TH_BREAK_ROOM_BACK_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1403, -3679), "Break Room Pot 2", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_BREAK_ROOM_POT_2));
|
||||
locationTable[RC_TH_KITCHEN_POT_1] = Location::Pot(RC_TH_KITCHEN_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1908, -789), "Kitchen Pot 1", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_KITCHEN_POT_1));
|
||||
locationTable[RC_TH_KITCHEN_POT_2] = Location::Pot(RC_TH_KITCHEN_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1951, -850), "Kitchen Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_KITCHEN_POT_2));
|
||||
locationTable[RC_TH_1_TORCH_CELL_RIGHT_POT] = Location::Pot(RC_TH_1_TORCH_CELL_RIGHT_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-475, -2622), "North F1 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_NORTH_F1_CARPENTER_POT_1));
|
||||
locationTable[RC_TH_1_TORCH_CELL_MID_POT] = Location::Pot(RC_TH_1_TORCH_CELL_MID_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-512, -2621), "North F1 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_NORTH_F1_CARPENTER_POT_2));
|
||||
locationTable[RC_TH_1_TORCH_CELL_LEFT_POT] = Location::Pot(RC_TH_1_TORCH_CELL_LEFT_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-511, -2582), "North F1 Carpenter Pot 3", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_NORTH_F1_CARPENTER_POT_3));
|
||||
locationTable[RC_TH_STEEP_SLOPE_RIGHT_POT] = Location::Pot(RC_TH_STEEP_SLOPE_RIGHT_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(67, -1975), "North F2 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_NORTH_F2_CARPENTER_POT_1));
|
||||
locationTable[RC_TH_STEEP_SLOPE_LEFT_POT] = Location::Pot(RC_TH_STEEP_SLOPE_LEFT_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(39, -1943), "North F2 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_NORTH_F2_CARPENTER_POT_2));
|
||||
locationTable[RC_TH_NEAR_DOUBLE_CELL_RIGHT_POT] = Location::Pot(RC_TH_NEAR_DOUBLE_CELL_RIGHT_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(691, 48), "South F1 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_SOUTH_F1_CARPENTER_POT_1));
|
||||
locationTable[RC_TH_NEAR_DOUBLE_CELL_MID_POT] = Location::Pot(RC_TH_NEAR_DOUBLE_CELL_MID_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(691, 16), "South F1 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_SOUTH_F1_CARPENTER_POT_2));
|
||||
locationTable[RC_TH_NEAR_DOUBLE_CELL_LEFT_POT] = Location::Pot(RC_TH_NEAR_DOUBLE_CELL_LEFT_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(661, 16), "South F1 Carpenter Pot 3", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_SOUTH_F1_CARPENTER_POT_3));
|
||||
locationTable[RC_TH_RIGHTMOST_JAILED_POT] = Location::Pot(RC_TH_RIGHTMOST_JAILED_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(26, 524), "South F1 Carpenter Cell Pot 1", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_1));
|
||||
locationTable[RC_TH_RIGHT_MIDDLE_JAILED_POT] = Location::Pot(RC_TH_RIGHT_MIDDLE_JAILED_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(61, 549), "South F1 Carpenter Cell Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_2));
|
||||
locationTable[RC_TH_LEFT_MIDDLE_JAILED_POT] = Location::Pot(RC_TH_LEFT_MIDDLE_JAILED_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(215, 549), "South F1 Carpenter Cell Pot 3", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_3));
|
||||
locationTable[RC_TH_LEFTMOST_JAILED_POT] = Location::Pot(RC_TH_LEFTMOST_JAILED_POT, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(254, 529), "South F1 Carpenter Cell Pot 4", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_4));
|
||||
locationTable[RC_WASTELAND_NEAR_GS_POT_1] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_1, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(488, -2424), "Near GS Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_1));
|
||||
locationTable[RC_WASTELAND_NEAR_GS_POT_2] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_2, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(485, -2463), "Near GS Pot 2", RHT_POT_GERUDO_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_2));
|
||||
locationTable[RC_WASTELAND_NEAR_GS_POT_3] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_3, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(806, -2426), "Near GS Pot 3", RHT_POT_GERUDO_FORTRESS, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_3));
|
||||
|
|
|
@ -878,10 +878,10 @@ int EntranceShuffler::ShuffleAllEntrances() {
|
|||
{ EntranceType::Dungeon, RR_SHADOW_TEMPLE_ENTRYWAY, RR_GRAVEYARD_WARP_PAD_REGION, ENTR_GRAVEYARD_OUTSIDE_TEMPLE } },
|
||||
{ { EntranceType::Dungeon, RR_KAK_WELL, RR_BOTTOM_OF_THE_WELL_ENTRYWAY, ENTR_BOTTOM_OF_THE_WELL_ENTRANCE },
|
||||
{ EntranceType::Dungeon, RR_BOTTOM_OF_THE_WELL_ENTRYWAY, RR_KAK_WELL, ENTR_KAKARIKO_VILLAGE_OUTSIDE_BOTTOM_OF_THE_WELL } },
|
||||
{ { EntranceType::Dungeon, RR_GF_OUTSIDE_GTG, RR_GTG_ENTRYWAY, ENTR_GERUDO_TRAINING_GROUND_ENTRANCE },
|
||||
{ EntranceType::Dungeon, RR_GTG_ENTRYWAY, RR_GF_OUTSIDE_GTG, ENTR_GERUDOS_FORTRESS_OUTSIDE_GERUDO_TRAINING_GROUND } },
|
||||
{ { EntranceType::Dungeon, RR_ZF_LEDGE, RR_ICE_CAVERN_ENTRYWAY, ENTR_ICE_CAVERN_ENTRANCE },
|
||||
{ EntranceType::Dungeon, RR_ICE_CAVERN_ENTRYWAY, RR_ZF_LEDGE, ENTR_ZORAS_FOUNTAIN_OUTSIDE_ICE_CAVERN } },
|
||||
{ { EntranceType::Dungeon, RR_GERUDO_FORTRESS, RR_GERUDO_TRAINING_GROUND_ENTRYWAY, ENTR_GERUDO_TRAINING_GROUND_ENTRANCE },
|
||||
{ EntranceType::Dungeon, RR_GERUDO_TRAINING_GROUND_ENTRYWAY, RR_GERUDO_FORTRESS, ENTR_GERUDOS_FORTRESS_OUTSIDE_GERUDO_TRAINING_GROUND } },
|
||||
{ { EntranceType::GanonDungeon, RR_GANONS_CASTLE_LEDGE, RR_GANONS_CASTLE_ENTRYWAY, ENTR_INSIDE_GANONS_CASTLE_ENTRANCE },
|
||||
{ EntranceType::GanonDungeon, RR_GANONS_CASTLE_ENTRYWAY, RR_CASTLE_GROUNDS_FROM_GANONS_CASTLE, ENTR_CASTLE_GROUNDS_RAINBOW_BRIDGE_EXIT } },
|
||||
|
||||
|
@ -1033,8 +1033,8 @@ int EntranceShuffler::ShuffleAllEntrances() {
|
|||
{ EntranceType::GrottoGrave, RR_KF_STORMS_GROTTO, RR_KOKIRI_FOREST, ENTRANCE_GROTTO_EXIT(GROTTO_KF_STORMS_OFFSET) } },
|
||||
{ { EntranceType::GrottoGrave, RR_ZORAS_DOMAIN_ISLAND, RR_ZD_STORMS_GROTTO, ENTRANCE_GROTTO_LOAD(GROTTO_ZD_STORMS_OFFSET) },
|
||||
{ EntranceType::GrottoGrave, RR_ZD_STORMS_GROTTO, RR_ZORAS_DOMAIN_ISLAND, ENTRANCE_GROTTO_EXIT(GROTTO_ZD_STORMS_OFFSET) } },
|
||||
{ { EntranceType::GrottoGrave, RR_GERUDO_FORTRESS, RR_GF_STORMS_GROTTO, ENTRANCE_GROTTO_LOAD(GROTTO_GF_STORMS_OFFSET) },
|
||||
{ EntranceType::GrottoGrave, RR_GF_STORMS_GROTTO, RR_GERUDO_FORTRESS, ENTRANCE_GROTTO_EXIT(GROTTO_GF_STORMS_OFFSET) } },
|
||||
{ { EntranceType::GrottoGrave, RR_GF_NEAR_GROTTO, RR_GF_STORMS_GROTTO, ENTRANCE_GROTTO_LOAD(GROTTO_GF_STORMS_OFFSET) },
|
||||
{ EntranceType::GrottoGrave, RR_GF_STORMS_GROTTO, RR_GF_NEAR_GROTTO, ENTRANCE_GROTTO_EXIT(GROTTO_GF_STORMS_OFFSET) } },
|
||||
{ { EntranceType::GrottoGrave, RR_GV_FORTRESS_SIDE, RR_GV_STORMS_GROTTO, ENTRANCE_GROTTO_LOAD(GROTTO_GV_STORMS_OFFSET) },
|
||||
{ EntranceType::GrottoGrave, RR_GV_STORMS_GROTTO, RR_GV_FORTRESS_SIDE, ENTRANCE_GROTTO_EXIT(GROTTO_GV_STORMS_OFFSET) } },
|
||||
{ { EntranceType::GrottoGrave, RR_GV_GROTTO_LEDGE, RR_GV_OCTOROK_GROTTO, ENTRANCE_GROTTO_LOAD(GROTTO_GV_OCTOROK_OFFSET) },
|
||||
|
@ -1078,8 +1078,8 @@ int EntranceShuffler::ShuffleAllEntrances() {
|
|||
{ EntranceType::Overworld, RR_LON_LON_RANCH, RR_HYRULE_FIELD, ENTR_HYRULE_FIELD_CENTER_EXIT } },
|
||||
{ { EntranceType::Overworld, RR_LAKE_HYLIA, RR_ZORAS_DOMAIN, ENTR_ZORAS_DOMAIN_UNDERWATER_SHORTCUT },
|
||||
{ EntranceType::Overworld, RR_ZORAS_DOMAIN, RR_LAKE_HYLIA, ENTR_LAKE_HYLIA_UNDERWATER_SHORTCUT } },
|
||||
{ { EntranceType::Overworld, RR_GV_FORTRESS_SIDE, RR_GERUDO_FORTRESS, ENTR_GERUDOS_FORTRESS_EAST_EXIT },
|
||||
{ EntranceType::Overworld, RR_GERUDO_FORTRESS, RR_GV_FORTRESS_SIDE, ENTR_GERUDO_VALLEY_WEST_EXIT } },
|
||||
{ { EntranceType::Overworld, RR_GV_FORTRESS_SIDE, RR_GF_OUTSKIRTS, ENTR_GERUDOS_FORTRESS_EAST_EXIT },
|
||||
{ EntranceType::Overworld, RR_GF_OUTSKIRTS, RR_GV_FORTRESS_SIDE, ENTR_GERUDO_VALLEY_WEST_EXIT } },
|
||||
{ { EntranceType::Overworld, RR_GF_OUTSIDE_GATE, RR_WASTELAND_NEAR_FORTRESS, ENTR_HAUNTED_WASTELAND_EAST_EXIT },
|
||||
{ EntranceType::Overworld, RR_WASTELAND_NEAR_FORTRESS, RR_GF_OUTSIDE_GATE, ENTR_GERUDOS_FORTRESS_GATE_EXIT } },
|
||||
{ { EntranceType::Overworld, RR_WASTELAND_NEAR_COLOSSUS, RR_DESERT_COLOSSUS, ENTR_DESERT_COLOSSUS_EAST_EXIT },
|
||||
|
|
|
@ -1432,7 +1432,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l
|
|||
break;
|
||||
}
|
||||
case VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD: {
|
||||
Flags_SetRandomizerInf(RAND_INF_GF_ITEM_FROM_LEADER_OF_FORTRESS);
|
||||
Flags_SetRandomizerInf(RAND_INF_TH_ITEM_FROM_LEADER_OF_FORTRESS);
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -327,6 +327,11 @@ void RegionTable_Init() {
|
|||
//The big poes bottle softlock safety check does not account for the guard house lock if the guard house is not shuffled, so the key is needed before we can safely allow bottle use in logic
|
||||
//RANDOTODO a setting that lets you drink/dump big poes so we don't need this logic
|
||||
EventAccess(&logic->CouldEmptyBigPoes, []{return !ctx->GetOption(RSK_SHUFFLE_INTERIOR_ENTRANCES).Is(RO_INTERIOR_ENTRANCE_SHUFFLE_OFF) || logic->CanOpenOverworldDoor(RG_GUARD_HOUSE_KEY);}),
|
||||
EventAccess(&logic->THCouldFree1TorchCarpenter, []{return ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE);}),
|
||||
EventAccess(&logic->THCouldFreeDoubleCellCarpenter, []{return ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE) || ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST);}),
|
||||
EventAccess(&logic->TH_CouldFreeDeadEndCarpenter, []{return ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE) || ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST);}),
|
||||
EventAccess(&logic->THCouldRescueSlopeCarpenter, []{return ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE) || ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST);}),
|
||||
EventAccess(&logic->THRescuedAllCarpenters, []{return ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE);}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_LINKS_POCKET, true),
|
||||
|
@ -411,6 +416,7 @@ void RegionTable_Init() {
|
|||
RegionTable_Init_ZorasFountain();
|
||||
RegionTable_Init_GerudoValley();
|
||||
RegionTable_Init_GerudoFortress();
|
||||
RegionTable_Init_ThievesHideout();
|
||||
RegionTable_Init_HauntedWasteland();
|
||||
RegionTable_Init_DesertColossus();
|
||||
// Dungeons
|
||||
|
|
|
@ -385,5 +385,6 @@ void RegionTable_Init_SpiritTemple();
|
|||
void RegionTable_Init_ShadowTemple();
|
||||
void RegionTable_Init_BottomOfTheWell();
|
||||
void RegionTable_Init_IceCavern();
|
||||
void RegionTable_Init_ThievesHideout();
|
||||
void RegionTable_Init_GerudoTrainingGround();
|
||||
void RegionTable_Init_GanonsCastle();
|
|
@ -7,11 +7,11 @@ using namespace Rando;
|
|||
void RegionTable_Init_GerudoTrainingGround() {
|
||||
// clang-format off
|
||||
// Vanilla/MQ Decider
|
||||
areaTable[RR_GERUDO_TRAINING_GROUND_ENTRYWAY] = Region("Gerudo Training Ground Entryway", "Gerudo Training Ground", {RA_GERUDO_TRAINING_GROUND}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
areaTable[RR_GTG_ENTRYWAY] = Region("Gerudo Training Ground Entryway", "Gerudo Training Ground", {RA_GERUDO_TRAINING_GROUND}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
//Exits
|
||||
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_OUTSIDE_GTG, []{return true;}),
|
||||
});
|
||||
|
||||
#pragma region Vanilla
|
||||
|
@ -27,7 +27,7 @@ void RegionTable_Init_GerudoTrainingGround() {
|
|||
LOCATION(RC_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART, true),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GERUDO_TRAINING_GROUND_ENTRYWAY, []{return true;}),
|
||||
Entrance(RR_GTG_ENTRYWAY, []{return true;}),
|
||||
Entrance(RR_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_ROOM, []{return logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 2, true) && (logic->CanUse(RG_HOOKSHOT) || ctx->GetTrickOption(RT_GTG_WITHOUT_HOOKSHOT));}),
|
||||
Entrance(RR_GERUDO_TRAINING_GROUND_LAVA_ROOM, []{return Here(RR_GERUDO_TRAINING_GROUND_LOBBY, []{return logic->CanKillEnemy(RE_BEAMOS) && logic->CanKillEnemy(RE_DINOLFOS, ED_CLOSE, true, 2, true);});}),
|
||||
Entrance(RR_GERUDO_TRAINING_GROUND_CENTRAL_MAZE, []{return true;}),
|
||||
|
@ -124,7 +124,7 @@ void RegionTable_Init_GerudoTrainingGround() {
|
|||
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2, logic->CanBreakPots()),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GERUDO_TRAINING_GROUND_ENTRYWAY, []{return true;}),
|
||||
Entrance(RR_GTG_ENTRYWAY, []{return true;}),
|
||||
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_MAZE_HIDDEN_ROOM, []{return ctx->GetTrickOption(RT_LENS_GTG_MQ) || logic->CanUse(RG_LENS_OF_TRUTH);}),
|
||||
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_MAZE_FIRST_LOCK, []{return logic->SmallKeys(RR_GERUDO_TRAINING_GROUND, 1);}),
|
||||
//It's possible to use the torch in RR_GERUDO_TRAINING_GROUND_MQ_MAZE_HIDDEN_ROOM with flame storage to light these
|
||||
|
|
|
@ -1,120 +0,0 @@
|
|||
#include "soh/Enhancements/randomizer/location_access.h"
|
||||
#include "soh/Enhancements/randomizer/entrance.h"
|
||||
|
||||
using namespace Rando;
|
||||
|
||||
/*
|
||||
* This file should be split into "gerudo_fortress.cpp" (overworld) & "thieves_hideout.cpp" (dungeons)
|
||||
* when the gerudo fortress refactor is done
|
||||
*/
|
||||
|
||||
void RegionTable_Init_GerudoFortress() {
|
||||
// clang-format off
|
||||
areaTable[RR_GERUDO_FORTRESS] = Region("Gerudo Fortress", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {
|
||||
//Events
|
||||
EventAccess(&logic->CarpenterRescue, []{return logic->CanFinishGerudoFortress();}),
|
||||
EventAccess(&logic->GF_GateOpen, []{return logic->IsAdult && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD);}),
|
||||
EventAccess(&logic->GtG_GateOpen, []{return logic->GtG_GateOpen || (logic->IsAdult && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && logic->HasItem(RG_CHILD_WALLET));}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_GF_CHEST, logic->CanUse(RG_HOVER_BOOTS) || (logic->IsAdult && logic->CanUse(RG_SCARECROW)) || logic->CanUse(RG_LONGSHOT)),
|
||||
LOCATION(RC_GF_HBA_1000_POINTS, logic->HasItem(RG_CHILD_WALLET) && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && logic->CanUse(RG_EPONA) && logic->CanUse(RG_FAIRY_BOW) && logic->AtDay),
|
||||
LOCATION(RC_GF_HBA_1500_POINTS, logic->HasItem(RG_CHILD_WALLET) && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && logic->CanUse(RG_EPONA) && logic->CanUse(RG_FAIRY_BOW) && logic->AtDay),
|
||||
LOCATION(RC_GF_NORTH_F1_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_GF_NORTH_F2_CARPENTER, (logic->CanKillEnemy(RE_GERUDO_WARRIOR)) && (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_GF_KITCHEN))),
|
||||
LOCATION(RC_GF_SOUTH_F1_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_GF_SOUTH_F2_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_GF_GERUDO_MEMBERSHIP_CARD, logic->CanFinishGerudoFortress()),
|
||||
LOCATION(RC_GF_GS_ARCHERY_RANGE, logic->IsAdult && logic->HookshotOrBoomerang() && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && logic->CanGetNightTimeGS()),
|
||||
LOCATION(RC_GF_GS_TOP_FLOOR, logic->IsAdult && (logic->CanJumpslashExceptHammer() || logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_BOOMERANG) || logic->HasExplosives() || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_DINS_FIRE)) && (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_GF_KITCHEN) || ctx->GetTrickOption(RT_GF_JUMP)) && logic->CanGetNightTimeGS()),
|
||||
LOCATION(RC_GF_BREAK_ROOM_POT_1, (logic->CanUse(RG_LONGSHOT) || (logic->IsAdult && logic->CanUse(RG_SCARECROW)) || (logic->CanUse(RG_HOVER_BOOTS) || (ctx->GetTrickOption(RT_GF_JUMP) && (ctx->GetTrickOption(RT_GF_KITCHEN) || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT))))) && logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_BREAK_ROOM_POT_2, (logic->CanUse(RG_LONGSHOT) || (logic->IsAdult && logic->CanUse(RG_SCARECROW)) || (logic->CanUse(RG_HOVER_BOOTS) || (ctx->GetTrickOption(RT_GF_JUMP) && (ctx->GetTrickOption(RT_GF_KITCHEN) || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT))))) && logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_KITCHEN_POT_1, (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_KITCHEN_POT_2, (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_NORTH_F1_CARPENTER_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_NORTH_F1_CARPENTER_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_NORTH_F1_CARPENTER_POT_3, logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_NORTH_F2_CARPENTER_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_NORTH_F2_CARPENTER_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_SOUTH_F1_CARPENTER_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_SOUTH_F1_CARPENTER_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_SOUTH_F1_CARPENTER_POT_3, logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3, logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4, logic->CanBreakPots()),
|
||||
LOCATION(RC_GF_ABOVE_JAIL_CRATE, (logic->CanUse(RG_LONGSHOT) || (logic->IsAdult && logic->CanUse(RG_SCARECROW)) || (logic->CanUse(RG_HOOKSHOT) && ctx->GetTrickOption(RT_GF_JUMP))) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_OUTSIDE_CENTER_CRATE_1, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_OUTSIDE_CENTER_CRATE_2, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_OUTSIDE_CENTER_CRATE_3, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_OUTSIDE_CENTER_CRATE_4, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_OUTSIDE_LEFT_CRATE_1, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_OUTSIDE_LEFT_CRATE_2, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_RANGE_CRATE_1, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_RANGE_CRATE_2, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_RANGE_CRATE_3, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_RANGE_CRATE_4, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_RANGE_CRATE_5, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_RANGE_CRATE_6, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_RANGE_CRATE_7, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_START_CRATE_1, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_START_CRATE_2, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_LEFT_END_CRATE_1, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_LEFT_END_CRATE_2, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && (logic->IsAdult || (logic->BlastOrSmash() || logic->HookshotOrBoomerang() || logic->CanUse(RG_HOVER_BOOTS)))),
|
||||
LOCATION(RC_GF_ARCHERY_LEFT_END_CHILD_CRATE, logic->IsChild && logic->HasExplosives() && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_RIGHT_END_CRATE_1, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_ARCHERY_RIGHT_END_CRATE_2, (logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_KITCHEN_CRATE_1, (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_KITCHEN_CRATE_2, (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_KITCHEN_CRATE_3, (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_KITCHEN_CRATE_4, (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_KITCHEN_CRATE_5, (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_BREAK_ROOM_CRATE_1, (logic->CanUse(RG_LONGSHOT) || (logic->IsAdult && logic->CanUse(RG_SCARECROW)) || (logic->CanUse(RG_HOVER_BOOTS) || (ctx->GetTrickOption(RT_GF_JUMP) && (ctx->GetTrickOption(RT_GF_KITCHEN) || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT))))) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_BREAK_ROOM_CRATE_2, (logic->CanUse(RG_LONGSHOT) || (logic->IsAdult && logic->CanUse(RG_SCARECROW)) || (logic->CanUse(RG_HOVER_BOOTS) || (ctx->GetTrickOption(RT_GF_JUMP) && (ctx->GetTrickOption(RT_GF_KITCHEN) || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT))))) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_BREAK_ROOM_CRATE_3, (logic->CanUse(RG_LONGSHOT) || (logic->IsAdult && logic->CanUse(RG_SCARECROW)) || ((logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_GF_JUMP)) && (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW)))) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_BREAK_ROOM_CRATE_4, (logic->CanUse(RG_LONGSHOT) || (logic->IsAdult && logic->CanUse(RG_SCARECROW)) || ((logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_GF_JUMP)) && (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW)))) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_NORTH_F1_CARPENTER_CRATE, (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_NORTH_F3_CARPENTER_CRATE, (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_SOUTH_F2_CARPENTER_CRATE_1, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_SOUTH_F2_CARPENTER_CRATE_2, logic->CanBreakCrates()),
|
||||
|
||||
|
||||
//RANDOTODO doublecheck when GF isn't a blob
|
||||
LOCATION(RC_GF_KITCHEN_SUN_FAIRY, (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_SUNS_SONG)),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GV_FORTRESS_SIDE, []{return true;}),
|
||||
Entrance(RR_GF_OUTSIDE_GATE, []{return logic->GF_GateOpen;}),
|
||||
Entrance(RR_GERUDO_TRAINING_GROUND_ENTRYWAY, []{return logic->GtG_GateOpen && (logic->IsAdult || ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES));}),
|
||||
Entrance(RR_GF_STORMS_GROTTO, []{return logic->IsAdult && logic->CanOpenStormsGrotto();}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_OUTSIDE_GATE] = Region("GF Outside Gate", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {
|
||||
//Events
|
||||
EventAccess(&logic->GF_GateOpen, []{return logic->IsAdult && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && (ctx->GetOption(RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD) || ctx->GetOption(RSK_SHUFFLE_OVERWORLD_ENTRANCES) /*|| ShuffleSpecialIndoorEntrances*/);}),
|
||||
}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_GERUDO_FORTRESS, []{return (logic->IsAdult && (logic->CanUse(RG_HOOKSHOT) || !ctx->GetOption(RSK_SHUFFLE_OVERWORLD_ENTRANCES))) || logic->GF_GateOpen;}),
|
||||
Entrance(RR_WASTELAND_NEAR_FORTRESS, []{return true;}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_STORMS_GROTTO] = Region("GF Storms Grotto", "GF Storms Grotto", {}, NO_DAY_NIGHT_CYCLE, {
|
||||
//Events
|
||||
EventAccess(&logic->FreeFairies, []{return true;}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_1, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_2, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_3, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_4, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_5, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_6, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_7, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_8, true),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GERUDO_FORTRESS, []{return true;}),
|
||||
});
|
||||
|
||||
// clang-format on
|
||||
}
|
|
@ -0,0 +1,245 @@
|
|||
#include "soh/Enhancements/randomizer/location_access.h"
|
||||
#include "soh/Enhancements/randomizer/entrance.h"
|
||||
|
||||
using namespace Rando;
|
||||
|
||||
// clang-format off
|
||||
void RegionTable_Init_GerudoFortress() {
|
||||
#pragma region Ground
|
||||
|
||||
areaTable[RR_GF_OUTSKIRTS] = Region("Gerudo Fortress Outskirts", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {
|
||||
//Events
|
||||
EventAccess(&logic->GF_GateOpen, []{return logic->IsAdult && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD);}), //needs climb
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_GF_OUTSKIRTS_NE_CRATE, (logic->IsChild || logic->CanPassEnemy(RE_GERUDO_GUARD)) && logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_OUTSKIRTS_NW_CRATE, logic->IsChild || logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GV_FORTRESS_SIDE, []{return true;}),
|
||||
Entrance(RR_TH_1_TORCH_CELL, []{return true;}),
|
||||
Entrance(RR_GF_OUTSIDE_GATE, []{return logic->GF_GateOpen;}),
|
||||
Entrance(RR_GF_NEAR_GROTTO, []{return logic->IsChild || logic->CanPassEnemy(RE_GERUDO_GUARD);}),
|
||||
Entrance(RR_GF_OUTSIDE_GTG, []{return logic->IsChild || logic->CanPassEnemy(RE_GERUDO_GUARD);}),
|
||||
//As of now there is no infinitly repeatable way to get thrown in jail, once one is added getting here only needs hookshot from jail
|
||||
Entrance(RR_GF_JAIL_WINDOW, []{return logic->CanUse(RG_LONGSHOT);}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_NEAR_GROTTO] = Region("GF Near Grotto", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_GF_SOUTHMOST_CENTER_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_MID_SOUTH_CENTER_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_MID_NORTH_CENTER_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RR_GF_NORTHMOST_CENTER_CRATE, logic->CanBreakCrates()),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_TH_1_TORCH_CELL, []{return true;}),
|
||||
Entrance(RR_TH_DOUBLE_CELL, []{return true;}),
|
||||
Entrance(RR_TH_KITCHEN_CORRIDOR, []{return true;}),
|
||||
//Jail
|
||||
Entrance(RR_GF_OUTSKIRTS, []{return true;}),
|
||||
Entrance(RR_GF_OUTSIDE_GTG, []{return logic->IsChild || logic->CanPassEnemy(RE_GERUDO_GUARD);}),
|
||||
Entrance(RR_GF_TOP_OF_UPPER_VINES, []{return logic->CanUse(RG_LONGSHOT);}),
|
||||
Entrance(RR_GF_STORMS_GROTTO, []{return logic->IsAdult && logic->CanOpenStormsGrotto();}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_OUTSIDE_GTG] = Region("GF Outside GTG", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {
|
||||
//Events
|
||||
EventAccess(&logic->GtG_GateOpen, []{return (logic->IsAdult && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && logic->HasItem(RG_CHILD_WALLET));}),
|
||||
}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_GTG_ENTRYWAY, []{return logic->GtG_GateOpen && (logic->IsAdult || ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES));}),
|
||||
//Jail
|
||||
Entrance(RR_GF_OUTSKIRTS, []{return true;}),
|
||||
Entrance(RR_GF_NEAR_GROTTO, []{return logic->IsChild || logic->CanPassEnemy(RE_GERUDO_GUARD);}),
|
||||
// RANDTODO: Add tricks for getting past the gerudo guarding the hba range
|
||||
Entrance(RR_GF_ABOVE_GTG, []{return logic->IsChild || logic->CanPassEnemy(RE_GERUDO_GUARD);}),
|
||||
Entrance(RR_GF_TOP_OF_UPPER_VINES, []{return logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && logic->CanUse(RG_LONGSHOT);}),
|
||||
Entrance(RR_GF_HBA_RANGE, []{return logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD);}),
|
||||
});
|
||||
|
||||
#pragma endregion
|
||||
|
||||
#pragma region Rooftops
|
||||
|
||||
areaTable[RR_GF_ABOVE_GTG] = Region("GF Above GTG", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_TH_DOUBLE_CELL, []{return true;}),
|
||||
Entrance(RR_TH_KITCHEN_CORRIDOR, []{return true;}),
|
||||
//Jail
|
||||
Entrance(RR_GF_OUTSKIRTS, []{return true;}),
|
||||
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 ;}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_BOTTOM_OF_LOWER_VINES] = Region("GF Bottom of Lower Vines", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_TH_STEEP_SLOPE_CELL, []{return true;}),
|
||||
Entrance(RR_GF_NEAR_GROTTO, []{return true;}),
|
||||
Entrance(RR_GF_TOP_OF_LOWER_VINES, []{return true /* logic->CanClimb() */;}),
|
||||
Entrance(RR_GF_ABOVE_GTG, []{return true;}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_TOP_OF_LOWER_VINES] = Region("GF Top of Lower Vines", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_TH_KITCHEN_TOP, []{return true;}),
|
||||
Entrance(RR_TH_DOUBLE_CELL, []{return true;}),
|
||||
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();}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_NEAR_GS] = Region("GF Near GS", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_GF_GS_TOP_FLOOR, logic->IsAdult && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOMB_THROW) && logic->CanGetNightTimeGS()),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_TH_KITCHEN_TOP, []{return true;}),
|
||||
Entrance(RR_GF_BOTTOM_OF_LOWER_VINES, []{return true;}),
|
||||
Entrance(RR_GF_TOP_OF_LOWER_VINES, []{return true;}),
|
||||
Entrance(RR_GF_SLOPED_ROOF, []{return logic->IsAdult;}),
|
||||
Entrance(RR_GF_LONG_ROOF, []{return logic->CanUse(RG_HOVER_BOOTS) /* || bunny hood jump */ || logic->IsAdult && ctx->GetTrickOption(RT_GF_JUMP);}),
|
||||
Entrance(RR_GF_NEAR_CHEST, []{return logic->CanUse(RG_LONGSHOT);}),
|
||||
Entrance(RR_GF_BELOW_GS, []{return true;}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_SLOPED_ROOF] = Region("GF Sloped Roof", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_TOP_OF_LOWER_VINES, []{return true;}),
|
||||
Entrance(RR_GF_NEAR_GS, []{return true;}),
|
||||
Entrance(RR_GF_TOP_OF_UPPER_VINES, []{return logic->IsAdult && ctx->GetTrickOption(RT_GF_JUMP).Get();}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_BOTTOM_OF_UPPER_VINES] = Region("GF Bottom of Upper Vines", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
//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);}),
|
||||
Entrance(RR_GF_TOP_OF_UPPER_VINES, []{return true /* logic->CanClimb() */;}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_TOP_OF_UPPER_VINES] = Region("GF Top of Upper Vines", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
//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
|
||||
LOCATION(RC_GF_GS_TOP_FLOOR, logic->IsAdult && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_SHORT_JUMPSLASH) && logic->CanGetNightTimeGS()),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_TOP_OF_LOWER_VINES, []{return true;}),
|
||||
Entrance(RR_GF_SLOPED_ROOF, []{return true;}),
|
||||
Entrance(RR_GF_BOTTOM_OF_UPPER_VINES, []{return true;}),
|
||||
Entrance(RR_GF_NEAR_CHEST, []{return logic->CanUse(RG_HOVER_BOOTS) || (logic->IsAdult && logic->CanUse(RG_SCARECROW) && logic->CanUse(RG_HOOKSHOT)) || logic->CanUse(RG_LONGSHOT);}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_NEAR_CHEST] = Region("GF Near Chest", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_GF_CHEST, true),
|
||||
LOCATION(RC_GF_GS_TOP_FLOOR, logic->IsAdult && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG) && logic->CanGetNightTimeGS()),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_NEAR_GS, []{return true;}),
|
||||
Entrance(RR_GF_LONG_ROOF, []{return true;}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_LONG_ROOF] = Region("GF Long Roof", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
//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_BELOW_GS, []{return true;}),
|
||||
Entrance(RR_GF_NEAR_CHEST, []{return logic->CanUse(RG_LONGSHOT);}),
|
||||
Entrance(RR_GF_BELOW_CHEST, []{return true;}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_BELOW_GS] = Region("GF Below GS", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_GF_GS_TOP_FLOOR, logic->IsAdult && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_LONGSHOT) && logic->CanGetNightTimeGS()),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_TH_DEAD_END_CELL, []{return true;}),
|
||||
Entrance(RR_GF_BOTTOM_OF_LOWER_VINES, []{return true;}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_BELOW_CHEST] = Region("GF Below Chest", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_TH_BREAK_ROOM, []{return true;}),
|
||||
Entrance(RR_GF_OUTSKIRTS, []{return true;}),
|
||||
});
|
||||
|
||||
|
||||
#pragma endregion
|
||||
|
||||
areaTable[RR_GF_ABOVE_JAIL] = Region("GF Above Jail", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_GF_ABOVE_JAIL_CRATE, true),
|
||||
}, {
|
||||
//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;}),
|
||||
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);}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_JAIL_WINDOW] = Region("GF Jail Window", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
//Exits
|
||||
//There's a trick where hovers backwalk into backflip gives access to RR_GF_LONG_ROOF from here
|
||||
Entrance(RR_GF_OUTSKIRTS, []{return true;}),
|
||||
Entrance(RR_GF_BELOW_CHEST, []{return true;}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_HBA_RANGE] = Region("GF HBA Range", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_GF_HBA_1000_POINTS, logic->IsAdult && logic->HasItem(RG_CHILD_WALLET) && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && logic->CanUse(RG_EPONA) && logic->CanUse(RG_FAIRY_BOW) && logic->AtDay),
|
||||
LOCATION(RC_GF_HBA_1500_POINTS, logic->IsAdult && logic->HasItem(RG_CHILD_WALLET) && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && logic->CanUse(RG_EPONA) && logic->CanUse(RG_FAIRY_BOW) && logic->AtDay),
|
||||
LOCATION(RC_GF_HBA_RANGE_GS, logic->IsAdult && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG) && logic->CanGetNightTimeGS()),
|
||||
LOCATION(RC_GF_HBA_RANGE_CRATE_1, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_HBA_RANGE_CRATE_2, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_HBA_RANGE_CRATE_3, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_HBA_RANGE_CRATE_4, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_HBA_RANGE_CRATE_5, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_HBA_RANGE_CRATE_6, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_HBA_RANGE_CRATE_7, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_HBA_CANOPY_EAST_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_HBA_CANOPY_WEST_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_NORTH_TARGET_EAST_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_NORTH_TARGET_WEST_CRATE, logic->IsAdult || (logic->BlastOrSmash() || logic->HookshotOrBoomerang() || logic->CanUse(RG_HOVER_BOOTS))),
|
||||
//implies logic->CanBreakCrates()
|
||||
LOCATION(RC_GF_NORTH_TARGET_CHILD_CRATE, logic->IsChild && logic->BlastOrSmash()),
|
||||
LOCATION(RC_GF_SOUTH_TARGET_EAST_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_GF_SOUTH_TARGET_WEST_CRATE, logic->CanBreakCrates()),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_OUTSIDE_GTG, []{return logic->IsChild || logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD);}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_OUTSIDE_GATE] = Region("GF Outside Gate", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {
|
||||
//Events
|
||||
EventAccess(&logic->GF_GateOpen, []{return logic->IsAdult && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && (ctx->GetOption(RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD) || ctx->GetOption(RSK_SHUFFLE_OVERWORLD_ENTRANCES) /*|| ShuffleSpecialIndoorEntrances*/);}),
|
||||
}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_OUTSKIRTS, []{return (logic->IsAdult && (logic->CanUse(RG_HOOKSHOT) || !ctx->GetOption(RSK_SHUFFLE_OVERWORLD_ENTRANCES))) || logic->GF_GateOpen;}),
|
||||
Entrance(RR_WASTELAND_NEAR_FORTRESS, []{return true;}),
|
||||
});
|
||||
|
||||
areaTable[RR_GF_STORMS_GROTTO] = Region("GF Storms Grotto", "GF Storms Grotto", {}, NO_DAY_NIGHT_CYCLE, {
|
||||
//Events
|
||||
EventAccess(&logic->FreeFairies, []{return true;}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_1, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_2, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_3, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_4, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_5, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_6, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_7, true),
|
||||
LOCATION(RC_GF_FAIRY_GROTTO_FAIRY_8, true),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_NEAR_GROTTO, []{return true;}),
|
||||
});
|
||||
}
|
||||
// clang-format on
|
|
@ -17,7 +17,7 @@ void RegionTable_Init_GerudoValley() {
|
|||
Entrance(RR_GV_UPPER_STREAM, []{return logic->IsChild || logic->HasItem(RG_BRONZE_SCALE) || logic->TakeDamage();}),
|
||||
Entrance(RR_GV_CRATE_LEDGE, []{return logic->IsChild || logic->CanUse(RG_LONGSHOT);}),
|
||||
Entrance(RR_GV_GROTTO_LEDGE, []{return true;}),
|
||||
Entrance(RR_GV_FORTRESS_SIDE, []{return (logic->IsAdult && (logic->CanUse(RG_EPONA) || logic->CanUse(RG_LONGSHOT) || ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE) || logic->CarpenterRescue)) || (logic->IsChild && logic->CanUse(RG_HOOKSHOT));}),
|
||||
Entrance(RR_GV_FORTRESS_SIDE, []{return (logic->IsAdult && (logic->CanUse(RG_EPONA) || logic->CanUse(RG_LONGSHOT) || ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE) || logic->THRescuedAllCarpenters)) || (logic->IsChild && logic->CanUse(RG_HOOKSHOT));}),
|
||||
Entrance(RR_GV_LOWER_STREAM, []{return logic->IsChild;}), //can use cucco as child
|
||||
});
|
||||
|
||||
|
@ -78,9 +78,9 @@ void RegionTable_Init_GerudoValley() {
|
|||
LOCATION(RC_GV_CRATE_BRIDGE_4, logic->IsChild && logic->CanBreakCrates()),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GERUDO_FORTRESS, []{return true;}),
|
||||
Entrance(RR_GF_OUTSKIRTS, []{return true;}),
|
||||
Entrance(RR_GV_UPPER_STREAM, []{return true;}),
|
||||
Entrance(RR_GERUDO_VALLEY, []{return logic->IsChild || logic->CanUse(RG_EPONA) || logic->CanUse(RG_LONGSHOT) || ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE) || logic->CarpenterRescue;}),
|
||||
Entrance(RR_GERUDO_VALLEY, []{return logic->IsChild || logic->CanUse(RG_EPONA) || logic->CanUse(RG_LONGSHOT) || ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE) || logic->THRescuedAllCarpenters;}),
|
||||
Entrance(RR_GV_CARPENTER_TENT, []{return logic->IsAdult;}),
|
||||
Entrance(RR_GV_STORMS_GROTTO, []{return logic->IsAdult && logic->CanOpenStormsGrotto();}),
|
||||
Entrance(RR_GV_CRATE_LEDGE, []{return ctx->GetTrickOption(RT_DAMAGE_BOOST_SIMPLE) && logic->HasExplosives();}),
|
||||
|
|
|
@ -0,0 +1,142 @@
|
|||
#include "soh/Enhancements/randomizer/location_access.h"
|
||||
#include "soh/Enhancements/randomizer/entrance.h"
|
||||
|
||||
using namespace Rando;
|
||||
|
||||
// clang-format off
|
||||
// When Thieve's hideout entrances are shuffled, getting caught by guards should behave like void outs to avoid logic headaches.
|
||||
void RegionTable_Init_ThievesHideout() {
|
||||
areaTable[RR_TH_1_TORCH_CELL] = Region("Thieves Hideout 1 Torch Cell", "Thieves Hideout", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {
|
||||
//Events
|
||||
EventAccess(&logic->THCouldFree1TorchCarpenter, []{return logic->CanKillEnemy(RE_GERUDO_WARRIOR);}),
|
||||
EventAccess(&logic->THRescuedAllCarpenters, []{return logic->SmallKeys(RR_GF_OUTSKIRTS, ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) ? 4 : 1) && logic->THCouldFree1TorchCarpenter && logic->THCouldFreeDoubleCellCarpenter && logic->TH_CouldFreeDeadEndCarpenter && logic->THCouldRescueSlopeCarpenter;}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_TH_1_TORCH_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_TH_1_TORCH_CELL_RIGHT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_1_TORCH_CELL_MID_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_1_TORCH_CELL_LEFT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_1_TORCH_CELL_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_FREED_CARPENTERS, logic->THRescuedAllCarpenters),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_OUTSKIRTS, []{return true;}),
|
||||
Entrance(RR_GF_NEAR_GROTTO, []{return true;}),
|
||||
});
|
||||
|
||||
areaTable[RR_TH_DOUBLE_CELL] = Region("Thieves Hideout Double Cell", "Thieves Hideout", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {
|
||||
//Events
|
||||
EventAccess(&logic->THCouldFreeDoubleCellCarpenter, []{return logic->CanKillEnemy(RE_GERUDO_WARRIOR);}),
|
||||
EventAccess(&logic->THRescuedAllCarpenters, []{return ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) && logic->SmallKeys(RR_GF_OUTSKIRTS, 4) && logic->THCouldFree1TorchCarpenter && logic->THCouldFreeDoubleCellCarpenter && logic->TH_CouldFreeDeadEndCarpenter && logic->THCouldRescueSlopeCarpenter;}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_TH_DOUBLE_CELL_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_TH_NEAR_DOUBLE_CELL_RIGHT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_NEAR_DOUBLE_CELL_MID_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_NEAR_DOUBLE_CELL_LEFT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_RIGHTMOST_JAILED_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_RIGHT_MIDDLE_JAILED_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_LEFT_MIDDLE_JAILED_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_LEFTMOST_JAILED_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_DOUBLE_CELL_LEFT_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_DOUBLE_CELL_RIGHT_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_FREED_CARPENTERS, logic->THRescuedAllCarpenters),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_OUTSKIRTS, []{return true;}),
|
||||
Entrance(RR_GF_NEAR_GROTTO, []{return true;}),
|
||||
});
|
||||
|
||||
areaTable[RR_TH_DEAD_END_CELL] = Region("Thieves Hideout Dead End Cell", "Thieves Hideout", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {
|
||||
//Events
|
||||
EventAccess(&logic->TH_CouldFreeDeadEndCarpenter, []{return logic->CanKillEnemy(RE_GERUDO_WARRIOR);}),
|
||||
EventAccess(&logic->THRescuedAllCarpenters, []{return ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) && logic->SmallKeys(RR_GF_OUTSKIRTS, 4) && logic->THCouldFree1TorchCarpenter && logic->THCouldFreeDoubleCellCarpenter && logic->TH_CouldFreeDeadEndCarpenter && logic->THCouldRescueSlopeCarpenter;}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_TH_DEAD_END_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_TH_DEAD_END_CELL_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_FREED_CARPENTERS, logic->THRescuedAllCarpenters),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_BELOW_GS, []{return true;}),
|
||||
});
|
||||
|
||||
areaTable[RR_TH_STEEP_SLOPE_CELL] = Region("Thieves Hideout Steep Slope Cell", "Thieves Hideout", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {
|
||||
//Events
|
||||
EventAccess(&logic->THCouldRescueSlopeCarpenter, []{return logic->CanKillEnemy(RE_GERUDO_WARRIOR);}),
|
||||
EventAccess(&logic->THRescuedAllCarpenters, []{return ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) && logic->SmallKeys(RR_GF_OUTSKIRTS, 4) && logic->THCouldFree1TorchCarpenter && logic->THCouldFreeDoubleCellCarpenter && logic->TH_CouldFreeDeadEndCarpenter && logic->THCouldRescueSlopeCarpenter;}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_TH_STEEP_SLOPE_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)),
|
||||
LOCATION(RC_TH_STEEP_SLOPE_RIGHT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_STEEP_SLOPE_LEFT_POT, logic->CanBreakPots()),
|
||||
LOCATION(RC_TH_FREED_CARPENTERS, logic->THRescuedAllCarpenters),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_ABOVE_GTG, []{return true;}),
|
||||
Entrance(RR_GF_TOP_OF_LOWER_VINES, []{return true;}),
|
||||
});
|
||||
|
||||
areaTable[RR_TH_KITCHEN_CORRIDOR] = Region("Thieves Hideout Kitchen Corridor", "Thieves Hideout", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_TH_NEAR_KITCHEN_LEFTMOST_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_NEAR_KITCHEN_MID_LEFT_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_NEAR_KITCHEN_MID_RIGHT_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_NEAR_KITCHEN_RIGHTMOST_CRATE, logic->CanBreakCrates()),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_NEAR_GROTTO, []{return true;}),
|
||||
Entrance(RR_GF_ABOVE_GTG, []{return true;}),
|
||||
Entrance(RR_TH_KITCHEN_MAIN, []{return logic->CanPassEnemy(RE_GERUDO_GUARD);}),
|
||||
});
|
||||
|
||||
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)),
|
||||
LOCATION(RC_TH_KITCHEN_CRATE, logic->CanBreakCrates() && logic->CanPassEnemy(RE_GERUDO_GUARD)),
|
||||
LOCATION(RC_TH_KITCHEN_SUN_FAIRY, logic->CanPassEnemy(RE_GERUDO_GUARD) && logic->CanUse(RG_SUNS_SONG)),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_TH_KITCHEN_CORRIDOR, []{return logic->CanPassEnemy(RE_GERUDO_GUARD);}),
|
||||
Entrance(RR_TH_KITCHEN_TOP, []{return logic->CanPassEnemy(RE_GERUDO_GUARD);}),
|
||||
});
|
||||
|
||||
areaTable[RR_TH_KITCHEN_TOP] = Region("Thieves Hideout Kitchen Top", "Thieves Hideout", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_TH_KITCHEN_POT_1, logic->CanUse(RG_BOOMERANG)),
|
||||
LOCATION(RC_TH_KITCHEN_POT_2, logic->CanUse(RG_BOOMERANG)),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_TH_KITCHEN_MAIN, []{return true;}),
|
||||
//hookshot to cross using the rafters is implied in logic->CanPassEnemy(RE_GERUDO_GUARD)
|
||||
Entrance(RR_GF_NEAR_GS, []{return logic->CanPassEnemy(RE_GERUDO_GUARD) || logic->CanUse(RG_HOVER_BOOTS);}),
|
||||
Entrance(RR_GF_TOP_OF_LOWER_VINES, []{return logic->CanPassEnemy(RE_GERUDO_GUARD) || logic->CanUse(RG_HOVER_BOOTS);}),
|
||||
});
|
||||
|
||||
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_FRONT_POT, (logic->CanPassEnemy(RE_BREAK_ROOM_GUARD) && logic->CanBreakPots()) ||
|
||||
(logic->CanPassEnemy(RE_GERUDO_GUARD) && logic->CanUse(RG_BOOMERANG))),
|
||||
LOCATION(RC_TH_BREAK_ROOM_BACK_POT, (logic->CanPassEnemy(RE_BREAK_ROOM_GUARD) && logic->CanBreakPots()) ||
|
||||
(logic->CanPassEnemy(RE_GERUDO_GUARD) && logic->CanUse(RG_BOOMERANG))),
|
||||
LOCATION(RC_TH_BREAK_HALLWAY_OUTER_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_BREAK_HALLWAY_INNER_CRATE, logic->CanBreakCrates()),
|
||||
LOCATION(RC_TH_BREAK_ROOM_RIGHT_CRATE, (logic->CanPassEnemy(RE_BREAK_ROOM_GUARD) && logic->CanBreakCrates()) ||
|
||||
(logic->CanPassEnemy(RE_GERUDO_GUARD) && logic->HasExplosives() && logic->CanUse(RG_BOOMERANG))),
|
||||
LOCATION(RC_TH_BREAK_ROOM_LEFT_CRATE, (logic->CanPassEnemy(RE_BREAK_ROOM_GUARD) && logic->CanBreakCrates()) ||
|
||||
(logic->CanPassEnemy(RE_GERUDO_GUARD) && logic->HasExplosives() && logic->CanUse(RG_BOOMERANG))),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GF_BELOW_CHEST, []{return logic->CanPassEnemy(RE_GERUDO_GUARD);}),
|
||||
//Implies logic->CanPassEnemy(RE_GERUDO_GUARD)
|
||||
Entrance(RR_TH_BREAK_ROOM_CORRIDOR, []{return logic->CanUse(RG_HOOKSHOT);}),
|
||||
});
|
||||
|
||||
areaTable[RR_TH_BREAK_ROOM_CORRIDOR] = Region("Thieves Hideout Break Room", "Thieves Hideout", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_TH_BREAK_ROOM, []{return logic->CanUse(RG_HOOKSHOT);}),
|
||||
Entrance(RR_GF_ABOVE_JAIL, []{return true;}),
|
||||
});
|
||||
}
|
||||
// clang-format on
|
|
@ -173,12 +173,12 @@ void Rando::StaticData::InitLocationTable() {
|
|||
locationTable[RC_GF_CHEST] = Location::Chest(RC_GF_CHEST, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDOS_FORTRESS, 1984, 0x00, "Chest", RHT_GF_CHEST, RG_PIECE_OF_HEART, true);
|
||||
locationTable[RC_GF_HBA_1000_POINTS] = Location::Base(RC_GF_HBA_1000_POINTS, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_GERUDOS_FORTRESS, 0x00, "HBA 1000 Points", RHT_GF_HBA_1000_POINTS, RG_PIECE_OF_HEART, SpoilerCollectionCheck::InfTable(INFTABLE_190), true);
|
||||
locationTable[RC_GF_HBA_1500_POINTS] = Location::Base(RC_GF_HBA_1500_POINTS, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_GERUDOS_FORTRESS, 0x00, "HBA 1500 Points", RHT_GF_HBA_1500_POINTS, RG_PROGRESSIVE_BOW, SpoilerCollectionCheck::ItemGetInf(15), true);
|
||||
// RandoTodo: Do we replace these with the RC_HIDEOUT keys or keep these?
|
||||
locationTable[RC_GF_GERUDO_MEMBERSHIP_CARD] = Location::Base(RC_GF_GERUDO_MEMBERSHIP_CARD, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_THIEVES_HIDEOUT, 0x00, "Gerudo Membership Card", RHT_GF_GERUDO_MEMBERSHIP_CARD, RG_GERUDO_MEMBERSHIP_CARD, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ITEM_FROM_LEADER_OF_FORTRESS), true);
|
||||
locationTable[RC_GF_NORTH_F1_CARPENTER] = Location::Collectable(RC_GF_NORTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3089, 0x0C, "North F1 Carpenter", RHT_GF_NORTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true);
|
||||
locationTable[RC_GF_NORTH_F2_CARPENTER] = Location::Collectable(RC_GF_NORTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 2577, 0x0A, "North F2 Carpenter", RHT_GF_NORTH_F2_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true);
|
||||
locationTable[RC_GF_SOUTH_F1_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3601, 0x0E, "South F1 Carpenter", RHT_GF_SOUTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true);
|
||||
locationTable[RC_GF_SOUTH_F2_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3857, 0x0F, "South F2 Carpenter", RHT_GF_SOUTH_F2_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true);
|
||||
// Thieves Hideout
|
||||
locationTable[RC_TH_FREED_CARPENTERS] = Location::Base(RC_TH_FREED_CARPENTERS, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_THIEVES_HIDEOUT, 0x00, "Gerudo Membership Card", RHT_GF_GERUDO_MEMBERSHIP_CARD, RG_GERUDO_MEMBERSHIP_CARD, SpoilerCollectionCheck::RandomizerInf(RAND_INF_TH_ITEM_FROM_LEADER_OF_FORTRESS), true);
|
||||
locationTable[RC_TH_1_TORCH_CARPENTER] = Location::Collectable(RC_TH_1_TORCH_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3089, 0x0C, "North F1 Carpenter", RHT_GF_NORTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true);
|
||||
locationTable[RC_TH_DEAD_END_CARPENTER] = Location::Collectable(RC_TH_DEAD_END_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 2577, 0x0A, "North F2 Carpenter", RHT_GF_NORTH_F2_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true);
|
||||
locationTable[RC_TH_DOUBLE_CELL_CARPENTER] = Location::Collectable(RC_TH_DOUBLE_CELL_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3601, 0x0E, "South F1 Carpenter", RHT_GF_SOUTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true);
|
||||
locationTable[RC_TH_STEEP_SLOPE_CARPENTER] = Location::Collectable(RC_TH_STEEP_SLOPE_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3857, 0x0F, "South F2 Carpenter", RHT_GF_SOUTH_F2_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true);
|
||||
// Haunted Wasteland
|
||||
locationTable[RC_WASTELAND_CHEST] = Location::Chest(RC_WASTELAND_CHEST, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_WASTELAND, ACTOR_EN_BOX, SCENE_HAUNTED_WASTELAND, -30048, 0x00, "Chest", RHT_WASTELAND_CHEST, RG_PURPLE_RUPEE);
|
||||
locationTable[RC_WASTELAND_BOMBCHU_SALESMAN] = Location::Base(RC_WASTELAND_BOMBCHU_SALESMAN, RCQUEST_BOTH, RCTYPE_MERCHANT, RCAREA_WASTELAND, ACTOR_ID_MAX, SCENE_HAUNTED_WASTELAND, 0x00, "Carpet Salesman", RHT_WASTELAND_BOMBCHU_SALESMAN, RG_BUY_BOMBCHUS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN), false, 200);
|
||||
|
@ -748,7 +748,7 @@ void Rando::StaticData::InitLocationTable() {
|
|||
locationTable[RC_GV_GS_PILLAR] = Location::GSToken(RC_GV_GS_PILLAR, RCQUEST_BOTH, SCENE_GERUDO_VALLEY, 21252, 0x04, "GS Pillar", RHT_GV_GS_PILLAR, 0x13);
|
||||
locationTable[RC_GV_GS_BEHIND_TENT] = Location::GSToken(RC_GV_GS_BEHIND_TENT, RCQUEST_BOTH, SCENE_GERUDO_VALLEY, 21256, 0x08, "GS Behind Tent", RHT_GV_GS_BEHIND_TENT, 0x13);
|
||||
// Gerudo Fortress
|
||||
locationTable[RC_GF_GS_ARCHERY_RANGE] = Location::GSToken(RC_GF_GS_ARCHERY_RANGE, RCQUEST_BOTH, SCENE_GERUDOS_FORTRESS, 21505, 0x01, "GS Archery Range", RHT_GF_GS_ARCHERY_RANGE, 0x14);
|
||||
locationTable[RC_GF_HBA_RANGE_GS] = Location::GSToken(RC_GF_HBA_RANGE_GS, RCQUEST_BOTH, SCENE_GERUDOS_FORTRESS, 21505, 0x01, "GS Archery Range", RHT_GF_GS_ARCHERY_RANGE, 0x14);
|
||||
locationTable[RC_GF_GS_TOP_FLOOR] = Location::GSToken(RC_GF_GS_TOP_FLOOR, RCQUEST_BOTH, SCENE_GERUDOS_FORTRESS, 21506, 0x02, "GS Top Floor", RHT_GF_GS_TOP_FLOOR, 0x14);
|
||||
// Wasteland & Desert Colossus
|
||||
locationTable[RC_WASTELAND_GS] = Location::GSToken(RC_WASTELAND_GS, RCQUEST_BOTH, SCENE_HAUNTED_WASTELAND, 13570, 0x02, "GS", RHT_WASTELAND_GS, 0x15);
|
||||
|
|
|
@ -485,6 +485,9 @@ bool Logic::CanKillEnemy(RandomizerEnemy enemy, EnemyDistance distance, bool wal
|
|||
bool inWater) {
|
||||
bool killed = false;
|
||||
switch (enemy) {
|
||||
case RE_GERUDO_GUARD:
|
||||
case RE_BREAK_ROOM_GUARD:
|
||||
return false;
|
||||
case RE_GOLD_SKULLTULA:
|
||||
switch (distance) {
|
||||
case ED_CLOSE:
|
||||
|
@ -829,6 +832,11 @@ bool Logic::CanPassEnemy(RandomizerEnemy enemy, EnemyDistance distance, bool wal
|
|||
case RE_PURPLE_LEEVER:
|
||||
case RE_OCTOROK:
|
||||
return true;
|
||||
case RE_GERUDO_GUARD:
|
||||
return ctx->GetTrickOption(RT_PASS_GUARDS_WITH_NOTHING) || HasItem(RG_GERUDO_MEMBERSHIP_CARD) ||
|
||||
CanUse(RG_FAIRY_BOW) || CanUse(RG_HOOKSHOT);
|
||||
case RE_BREAK_ROOM_GUARD:
|
||||
return HasItem(RG_GERUDO_MEMBERSHIP_CARD) || CanUse(RG_FAIRY_BOW) || CanUse(RG_HOOKSHOT);
|
||||
case RE_BIG_SKULLTULA:
|
||||
// hammer jumpslash can pass, but only on flat land where you can kill with hammer swing
|
||||
return CanUse(RG_NUTS) || CanUse(RG_BOOMERANG);
|
||||
|
@ -837,6 +845,7 @@ bool Logic::CanPassEnemy(RandomizerEnemy enemy, EnemyDistance distance, bool wal
|
|||
case RE_GIBDO:
|
||||
case RE_REDEAD:
|
||||
// we need a way to check if suns won't force a reload
|
||||
// RANDOTODO: check if stealthing past these guys works everywhere
|
||||
return CanUse(RG_HOOKSHOT) || CanUse(RG_SUNS_SONG);
|
||||
case RE_IRON_KNUCKLE:
|
||||
case RE_BIG_OCTO:
|
||||
|
@ -1302,16 +1311,6 @@ bool Logic::TradeQuestStep(RandomizerGet rg) {
|
|||
return hasState;
|
||||
}
|
||||
|
||||
bool Logic::CanFinishGerudoFortress() {
|
||||
return (ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) && SmallKeys(RR_GERUDO_FORTRESS, 4) &&
|
||||
CanKillEnemy(RE_GERUDO_WARRIOR) &&
|
||||
(HasItem(RG_GERUDO_MEMBERSHIP_CARD) || CanUse(RG_FAIRY_BOW) || CanUse(RG_HOOKSHOT) ||
|
||||
CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_GF_KITCHEN))) ||
|
||||
(ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST) && SmallKeys(RR_GERUDO_FORTRESS, 1) &&
|
||||
CanKillEnemy(RE_GERUDO_WARRIOR)) ||
|
||||
ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE);
|
||||
}
|
||||
|
||||
bool Logic::CanStandingShield() {
|
||||
return CanUse(RG_MIRROR_SHIELD) || (IsAdult && HasItem(RG_HYLIAN_SHIELD)) || CanUse(RG_DEKU_SHIELD);
|
||||
}
|
||||
|
@ -1433,7 +1432,7 @@ bool Logic::SmallKeys(RandomizerRegion dungeon, uint8_t requiredAmountGlitchless
|
|||
}*/
|
||||
return GetSmallKeyCount(SCENE_TREASURE_BOX_SHOP) >= requiredAmountGlitchless;
|
||||
|
||||
case RR_GERUDO_FORTRESS:
|
||||
case RR_GF_OUTSKIRTS:
|
||||
return GetSmallKeyCount(SCENE_THIEVES_HIDEOUT) >= requiredAmountGlitchless;
|
||||
|
||||
default:
|
||||
|
@ -2458,7 +2457,10 @@ void Logic::Reset() {
|
|||
|
||||
// Events
|
||||
ShowedMidoSwordAndShield = false;
|
||||
CarpenterRescue = false;
|
||||
THCouldFree1TorchCarpenter = false;
|
||||
THCouldFreeDoubleCellCarpenter = false;
|
||||
TH_CouldFreeDeadEndCarpenter = false;
|
||||
THCouldRescueSlopeCarpenter = false;
|
||||
GF_GateOpen = false;
|
||||
GtG_GateOpen = false;
|
||||
DampesWindmillAccess = false;
|
||||
|
|
|
@ -116,7 +116,11 @@ class Logic {
|
|||
|
||||
// Events
|
||||
bool ShowedMidoSwordAndShield = false;
|
||||
bool CarpenterRescue = false;
|
||||
bool THCouldFree1TorchCarpenter = false;
|
||||
bool THCouldFreeDoubleCellCarpenter = false;
|
||||
bool TH_CouldFreeDeadEndCarpenter = false;
|
||||
bool THCouldRescueSlopeCarpenter = false;
|
||||
bool THRescuedAllCarpenters = false;
|
||||
bool GF_GateOpen = false;
|
||||
bool GtG_GateOpen = false;
|
||||
bool DampesWindmillAccess = false;
|
||||
|
@ -248,7 +252,6 @@ class Logic {
|
|||
bool HasFireSource();
|
||||
bool HasFireSourceWithTorch();
|
||||
bool TradeQuestStep(RandomizerGet rg);
|
||||
bool CanFinishGerudoFortress();
|
||||
bool CanStandingShield();
|
||||
bool CanShield();
|
||||
bool CanUseProjectile();
|
||||
|
|
|
@ -1579,22 +1579,22 @@ std::map<RandomizerCheck, RandomizerInf> rcToRandomizerInf = {
|
|||
{ RC_KF_TWINS_HOUSE_POT_2, RAND_INF_KF_TWINS_HOUSE_POT_2 },
|
||||
{ RC_KF_BROTHERS_HOUSE_POT_1, RAND_INF_KF_BROTHERS_HOUSE_POT_1 },
|
||||
{ RC_KF_BROTHERS_HOUSE_POT_2, RAND_INF_KF_BROTHERS_HOUSE_POT_2 },
|
||||
{ RC_GF_BREAK_ROOM_POT_1, RAND_INF_GF_BREAK_ROOM_POT_1 },
|
||||
{ RC_GF_BREAK_ROOM_POT_2, RAND_INF_GF_BREAK_ROOM_POT_2 },
|
||||
{ RC_GF_KITCHEN_POT_1, RAND_INF_GF_KITCHEN_POT_1 },
|
||||
{ RC_GF_KITCHEN_POT_2, RAND_INF_GF_KITCHEN_POT_2 },
|
||||
{ RC_GF_NORTH_F1_CARPENTER_POT_1, RAND_INF_GF_NORTH_F1_CARPENTER_POT_1 },
|
||||
{ RC_GF_NORTH_F1_CARPENTER_POT_2, RAND_INF_GF_NORTH_F1_CARPENTER_POT_2 },
|
||||
{ RC_GF_NORTH_F1_CARPENTER_POT_3, RAND_INF_GF_NORTH_F1_CARPENTER_POT_3 },
|
||||
{ RC_GF_NORTH_F2_CARPENTER_POT_1, RAND_INF_GF_NORTH_F2_CARPENTER_POT_1 },
|
||||
{ RC_GF_NORTH_F2_CARPENTER_POT_2, RAND_INF_GF_NORTH_F2_CARPENTER_POT_2 },
|
||||
{ RC_GF_SOUTH_F1_CARPENTER_POT_1, RAND_INF_GF_SOUTH_F1_CARPENTER_POT_1 },
|
||||
{ RC_GF_SOUTH_F1_CARPENTER_POT_2, RAND_INF_GF_SOUTH_F1_CARPENTER_POT_2 },
|
||||
{ RC_GF_SOUTH_F1_CARPENTER_POT_3, RAND_INF_GF_SOUTH_F1_CARPENTER_POT_3 },
|
||||
{ RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_1 },
|
||||
{ RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2 },
|
||||
{ RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3 },
|
||||
{ RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4 },
|
||||
{ RC_TH_BREAK_ROOM_FRONT_POT, RAND_INF_TH_BREAK_ROOM_POT_1 },
|
||||
{ RC_TH_BREAK_ROOM_BACK_POT, RAND_INF_TH_BREAK_ROOM_POT_2 },
|
||||
{ RC_TH_KITCHEN_POT_1, RAND_INF_TH_KITCHEN_POT_1 },
|
||||
{ RC_TH_KITCHEN_POT_2, RAND_INF_TH_KITCHEN_POT_2 },
|
||||
{ RC_TH_1_TORCH_CELL_RIGHT_POT, RAND_INF_TH_NORTH_F1_CARPENTER_POT_1 },
|
||||
{ RC_TH_1_TORCH_CELL_MID_POT, RAND_INF_TH_NORTH_F1_CARPENTER_POT_2 },
|
||||
{ RC_TH_1_TORCH_CELL_LEFT_POT, RAND_INF_TH_NORTH_F1_CARPENTER_POT_3 },
|
||||
{ RC_TH_STEEP_SLOPE_RIGHT_POT, RAND_INF_TH_NORTH_F2_CARPENTER_POT_1 },
|
||||
{ RC_TH_STEEP_SLOPE_LEFT_POT, RAND_INF_TH_NORTH_F2_CARPENTER_POT_2 },
|
||||
{ RC_TH_NEAR_DOUBLE_CELL_RIGHT_POT, RAND_INF_TH_SOUTH_F1_CARPENTER_POT_1 },
|
||||
{ RC_TH_NEAR_DOUBLE_CELL_MID_POT, RAND_INF_TH_SOUTH_F1_CARPENTER_POT_2 },
|
||||
{ RC_TH_NEAR_DOUBLE_CELL_LEFT_POT, RAND_INF_TH_SOUTH_F1_CARPENTER_POT_3 },
|
||||
{ RC_TH_RIGHTMOST_JAILED_POT, RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_1 },
|
||||
{ RC_TH_RIGHT_MIDDLE_JAILED_POT, RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_2 },
|
||||
{ RC_TH_LEFT_MIDDLE_JAILED_POT, RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_3 },
|
||||
{ RC_TH_LEFTMOST_JAILED_POT, RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_4 },
|
||||
{ RC_WASTELAND_NEAR_GS_POT_1, RAND_INF_WASTELAND_NEAR_GS_POT_1 },
|
||||
{ RC_WASTELAND_NEAR_GS_POT_2, RAND_INF_WASTELAND_NEAR_GS_POT_2 },
|
||||
{ RC_WASTELAND_NEAR_GS_POT_3, RAND_INF_WASTELAND_NEAR_GS_POT_3 },
|
||||
|
@ -2145,136 +2145,136 @@ std::map<RandomizerCheck, RandomizerInf> rcToRandomizerInf = {
|
|||
RAND_INF_GF_ABOVE_JAIL_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_OUTSIDE_CENTER_CRATE_1,
|
||||
RAND_INF_GF_OUTSIDE_CENTER_CRATE_1,
|
||||
RC_GF_SOUTHMOST_CENTER_CRATE,
|
||||
RAND_INF_GF_SOUTHMOST_CENTER_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_OUTSIDE_CENTER_CRATE_2,
|
||||
RAND_INF_GF_OUTSIDE_CENTER_CRATE_2,
|
||||
RC_GF_MID_SOUTH_CENTER_CRATE,
|
||||
RAND_INF_GF_MID_SOUTH_CENTER_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_OUTSIDE_CENTER_CRATE_3,
|
||||
RAND_INF_GF_OUTSIDE_CENTER_CRATE_3,
|
||||
RC_GF_MID_NORTH_CENTER_CRATE,
|
||||
RAND_INF_GF_MID_NORTH_CENTER_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_OUTSIDE_CENTER_CRATE_4,
|
||||
RAND_INF_GF_OUTSIDE_CENTER_CRATE_4,
|
||||
RR_GF_NORTHMOST_CENTER_CRATE,
|
||||
RAND_INF_GF_NORTHMOST_CENTER_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_OUTSIDE_LEFT_CRATE_1,
|
||||
RAND_INF_GF_OUTSIDE_LEFT_CRATE_1,
|
||||
RC_GF_OUTSKIRTS_NE_CRATE,
|
||||
RAND_INF_GF_OUTSKIRTS_NE_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_OUTSIDE_LEFT_CRATE_2,
|
||||
RAND_INF_GF_OUTSIDE_LEFT_CRATE_2,
|
||||
RC_GF_OUTSKIRTS_NW_CRATE,
|
||||
RAND_INF_GF_OUTSKIRTS_NW_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_RANGE_CRATE_1,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_1,
|
||||
RC_GF_HBA_RANGE_CRATE_1,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_1,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_RANGE_CRATE_2,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_2,
|
||||
RC_GF_HBA_RANGE_CRATE_2,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_2,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_RANGE_CRATE_3,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_3,
|
||||
RC_GF_HBA_RANGE_CRATE_3,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_3,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_RANGE_CRATE_4,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_4,
|
||||
RC_GF_HBA_RANGE_CRATE_4,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_4,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_RANGE_CRATE_5,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_5,
|
||||
RC_GF_HBA_RANGE_CRATE_5,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_5,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_RANGE_CRATE_6,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_6,
|
||||
RC_GF_HBA_RANGE_CRATE_6,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_6,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_RANGE_CRATE_7,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_7,
|
||||
RC_GF_HBA_RANGE_CRATE_7,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_7,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_START_CRATE_1,
|
||||
RAND_INF_GF_ARCHERY_START_CRATE_1,
|
||||
RC_GF_HBA_CANOPY_EAST_CRATE,
|
||||
RAND_INF_GF_HBA_CANOPY_EAST_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_START_CRATE_2,
|
||||
RAND_INF_GF_ARCHERY_START_CRATE_2,
|
||||
RC_GF_HBA_CANOPY_WEST_CRATE,
|
||||
RAND_INF_GF_HBA_CANOPY_WEST_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_LEFT_END_CRATE_1,
|
||||
RAND_INF_GF_ARCHERY_LEFT_END_CRATE_1,
|
||||
RC_GF_NORTH_TARGET_EAST_CRATE,
|
||||
RAND_INF_GF_NORTH_TARGET_EAST_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_LEFT_END_CRATE_2,
|
||||
RAND_INF_GF_ARCHERY_LEFT_END_CRATE_2,
|
||||
RC_GF_NORTH_TARGET_WEST_CRATE,
|
||||
RAND_INF_GF_NORTH_TARGET_WEST_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_LEFT_END_CHILD_CRATE,
|
||||
RAND_INF_GF_ARCHERY_LEFT_END_CHILD_CRATE,
|
||||
RC_GF_NORTH_TARGET_CHILD_CRATE,
|
||||
RAND_INF_GF_NORTH_TARGET_CHILD_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_RIGHT_END_CRATE_1,
|
||||
RAND_INF_GF_ARCHERY_RIGHT_END_CRATE_1,
|
||||
RC_GF_SOUTH_TARGET_EAST_CRATE,
|
||||
RAND_INF_GF_SOUTH_TARGET_EAST_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_ARCHERY_RIGHT_END_CRATE_2,
|
||||
RAND_INF_GF_ARCHERY_RIGHT_END_CRATE_2,
|
||||
RC_GF_SOUTH_TARGET_WEST_CRATE,
|
||||
RAND_INF_GF_SOUTH_TARGET_WEST_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_KITCHEN_CRATE_1,
|
||||
RAND_INF_GF_KITCHEN_CRATE_1,
|
||||
RC_TH_NEAR_KITCHEN_LEFTMOST_CRATE,
|
||||
RAND_INF_TH_NEAR_KITCHEN_LEFTMOST_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_KITCHEN_CRATE_2,
|
||||
RAND_INF_GF_KITCHEN_CRATE_2,
|
||||
RC_TH_NEAR_KITCHEN_MID_LEFT_CRATE,
|
||||
RAND_INF_TH_NEAR_KITCHEN_MID_LEFT_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_KITCHEN_CRATE_3,
|
||||
RAND_INF_GF_KITCHEN_CRATE_3,
|
||||
RC_TH_NEAR_KITCHEN_MID_RIGHT_CRATE,
|
||||
RAND_INF_TH_NEAR_KITCHEN_MID_RIGHT_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_KITCHEN_CRATE_4,
|
||||
RAND_INF_GF_KITCHEN_CRATE_4,
|
||||
RC_TH_NEAR_KITCHEN_RIGHTMOST_CRATE,
|
||||
RAND_INF_TH_NEAR_KITCHEN_RIGHTMOST_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_KITCHEN_CRATE_5,
|
||||
RAND_INF_GF_KITCHEN_CRATE_5,
|
||||
RC_TH_KITCHEN_CRATE,
|
||||
RAND_INF_TH_KITCHEN_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_BREAK_ROOM_CRATE_1,
|
||||
RAND_INF_GF_BREAK_ROOM_CRATE_1,
|
||||
RC_TH_BREAK_HALLWAY_OUTER_CRATE,
|
||||
RAND_INF_TH_BREAK_HALLWAY_OUTER_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_BREAK_ROOM_CRATE_2,
|
||||
RAND_INF_GF_BREAK_ROOM_CRATE_2,
|
||||
RC_TH_BREAK_HALLWAY_INNER_CRATE,
|
||||
RAND_INF_TH_BREAK_HALLWAY_INNER_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_BREAK_ROOM_CRATE_3,
|
||||
RAND_INF_GF_BREAK_ROOM_CRATE_3,
|
||||
RC_TH_BREAK_ROOM_RIGHT_CRATE,
|
||||
RAND_INF_TH_BREAK_ROOM_RIGHT_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_BREAK_ROOM_CRATE_4,
|
||||
RAND_INF_GF_BREAK_ROOM_CRATE_4,
|
||||
RC_TH_BREAK_ROOM_LEFT_CRATE,
|
||||
RAND_INF_TH_BREAK_ROOM_LEFT_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_NORTH_F1_CARPENTER_CRATE,
|
||||
RAND_INF_GF_NORTH_F1_CARPENTER_CRATE,
|
||||
RC_TH_1_TORCH_CELL_CRATE,
|
||||
RAND_INF_TH_1_TORCH_CELL_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_NORTH_F3_CARPENTER_CRATE,
|
||||
RAND_INF_GF_NORTH_F3_CARPENTER_CRATE,
|
||||
RC_TH_DEAD_END_CELL_CRATE,
|
||||
RAND_INF_TH_DEAD_END_CELL_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_SOUTH_F2_CARPENTER_CRATE_1,
|
||||
RAND_INF_GF_SOUTH_F2_CARPENTER_CRATE_1,
|
||||
RC_TH_DOUBLE_CELL_LEFT_CRATE,
|
||||
RAND_INF_TH_DOUBLE_CELL_LEFT_CRATE,
|
||||
},
|
||||
{
|
||||
RC_GF_SOUTH_F2_CARPENTER_CRATE_2,
|
||||
RAND_INF_GF_SOUTH_F2_CARPENTER_CRATE_2,
|
||||
RC_TH_DOUBLE_CELL_RIGHT_CRATE,
|
||||
RAND_INF_TH_DOUBLE_CELL_RIGHT_CRATE,
|
||||
},
|
||||
{
|
||||
RC_HW_BEFORE_QUICKSAND_CRATE,
|
||||
|
|
|
@ -408,9 +408,34 @@ typedef enum {
|
|||
RR_GV_FORTRESS_SIDE,
|
||||
RR_GV_CARPENTER_TENT,
|
||||
RR_GV_STORMS_GROTTO,
|
||||
RR_GERUDO_FORTRESS,
|
||||
RR_GF_OUTSKIRTS,
|
||||
RR_GF_NEAR_GROTTO,
|
||||
RR_GF_OUTSIDE_GTG,
|
||||
RR_GF_ABOVE_GTG,
|
||||
RR_GF_BOTTOM_OF_LOWER_VINES,
|
||||
RR_GF_TOP_OF_LOWER_VINES,
|
||||
RR_GF_NEAR_GS,
|
||||
RR_GF_SLOPED_ROOF,
|
||||
RR_GF_BOTTOM_OF_UPPER_VINES,
|
||||
RR_GF_TOP_OF_UPPER_VINES,
|
||||
RR_GF_NEAR_CHEST,
|
||||
RR_GF_LONG_ROOF,
|
||||
RR_GF_BELOW_GS,
|
||||
RR_GF_BELOW_CHEST,
|
||||
RR_GF_HBA_RANGE,
|
||||
RR_GF_ABOVE_JAIL,
|
||||
RR_GF_JAIL_WINDOW,
|
||||
RR_GF_OUTSIDE_GATE,
|
||||
RR_GF_STORMS_GROTTO,
|
||||
RR_TH_1_TORCH_CELL,
|
||||
RR_TH_DOUBLE_CELL,
|
||||
RR_TH_DEAD_END_CELL,
|
||||
RR_TH_STEEP_SLOPE_CELL,
|
||||
RR_TH_KITCHEN_CORRIDOR,
|
||||
RR_TH_KITCHEN_MAIN,
|
||||
RR_TH_KITCHEN_TOP,
|
||||
RR_TH_BREAK_ROOM,
|
||||
RR_TH_BREAK_ROOM_CORRIDOR,
|
||||
RR_WASTELAND_NEAR_FORTRESS,
|
||||
RR_HAUNTED_WASTELAND,
|
||||
RR_WASTELAND_NEAR_COLOSSUS,
|
||||
|
@ -532,7 +557,7 @@ typedef enum {
|
|||
RR_SHADOW_TEMPLE_ENTRYWAY,
|
||||
RR_BOTTOM_OF_THE_WELL_ENTRYWAY,
|
||||
RR_ICE_CAVERN_ENTRYWAY,
|
||||
RR_GERUDO_TRAINING_GROUND_ENTRYWAY,
|
||||
RR_GTG_ENTRYWAY,
|
||||
RR_GANONS_CASTLE_ENTRYWAY,
|
||||
|
||||
RR_DEKU_TREE_LOBBY,
|
||||
|
@ -1378,13 +1403,13 @@ typedef enum {
|
|||
RC_GF_CHEST,
|
||||
RC_GF_HBA_1000_POINTS,
|
||||
RC_GF_HBA_1500_POINTS,
|
||||
RC_GF_GERUDO_MEMBERSHIP_CARD,
|
||||
RC_GF_NORTH_F1_CARPENTER,
|
||||
RC_GF_NORTH_F2_CARPENTER,
|
||||
RC_GF_SOUTH_F1_CARPENTER,
|
||||
RC_GF_SOUTH_F2_CARPENTER,
|
||||
RC_TH_FREED_CARPENTERS,
|
||||
RC_TH_1_TORCH_CARPENTER,
|
||||
RC_TH_DEAD_END_CARPENTER,
|
||||
RC_TH_DOUBLE_CELL_CARPENTER,
|
||||
RC_TH_STEEP_SLOPE_CARPENTER,
|
||||
RC_GF_GS_TOP_FLOOR,
|
||||
RC_GF_GS_ARCHERY_RANGE,
|
||||
RC_GF_HBA_RANGE_GS,
|
||||
RC_HIDEOUT_JAIL_GUARD_1_TORCH,
|
||||
RC_HIDEOUT_JAIL_GUARD_2_TORCHES,
|
||||
RC_HIDEOUT_JAIL_GUARD_3_TORCHES,
|
||||
|
@ -1802,22 +1827,22 @@ typedef enum {
|
|||
RC_KF_TWINS_HOUSE_POT_2,
|
||||
RC_KF_BROTHERS_HOUSE_POT_1,
|
||||
RC_KF_BROTHERS_HOUSE_POT_2,
|
||||
RC_GF_BREAK_ROOM_POT_1,
|
||||
RC_GF_BREAK_ROOM_POT_2,
|
||||
RC_GF_KITCHEN_POT_1,
|
||||
RC_GF_KITCHEN_POT_2,
|
||||
RC_GF_NORTH_F1_CARPENTER_POT_1,
|
||||
RC_GF_NORTH_F1_CARPENTER_POT_2,
|
||||
RC_GF_NORTH_F1_CARPENTER_POT_3,
|
||||
RC_GF_NORTH_F2_CARPENTER_POT_1,
|
||||
RC_GF_NORTH_F2_CARPENTER_POT_2,
|
||||
RC_GF_SOUTH_F1_CARPENTER_POT_1,
|
||||
RC_GF_SOUTH_F1_CARPENTER_POT_2,
|
||||
RC_GF_SOUTH_F1_CARPENTER_POT_3,
|
||||
RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1,
|
||||
RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2,
|
||||
RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3,
|
||||
RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4,
|
||||
RC_TH_BREAK_ROOM_FRONT_POT,
|
||||
RC_TH_BREAK_ROOM_BACK_POT,
|
||||
RC_TH_KITCHEN_POT_1,
|
||||
RC_TH_KITCHEN_POT_2,
|
||||
RC_TH_1_TORCH_CELL_RIGHT_POT,
|
||||
RC_TH_1_TORCH_CELL_MID_POT,
|
||||
RC_TH_1_TORCH_CELL_LEFT_POT,
|
||||
RC_TH_STEEP_SLOPE_RIGHT_POT,
|
||||
RC_TH_STEEP_SLOPE_LEFT_POT,
|
||||
RC_TH_NEAR_DOUBLE_CELL_RIGHT_POT,
|
||||
RC_TH_NEAR_DOUBLE_CELL_MID_POT,
|
||||
RC_TH_NEAR_DOUBLE_CELL_LEFT_POT,
|
||||
RC_TH_RIGHTMOST_JAILED_POT,
|
||||
RC_TH_RIGHT_MIDDLE_JAILED_POT,
|
||||
RC_TH_LEFT_MIDDLE_JAILED_POT,
|
||||
RC_TH_LEFTMOST_JAILED_POT,
|
||||
RC_WASTELAND_NEAR_GS_POT_1,
|
||||
RC_WASTELAND_NEAR_GS_POT_2,
|
||||
RC_WASTELAND_NEAR_GS_POT_3,
|
||||
|
@ -2351,39 +2376,39 @@ typedef enum {
|
|||
RC_GV_CRATE_BRIDGE_3,
|
||||
RC_GV_CRATE_BRIDGE_4,
|
||||
RC_GF_ABOVE_JAIL_CRATE,
|
||||
RC_GF_OUTSIDE_CENTER_CRATE_1,
|
||||
RC_GF_OUTSIDE_CENTER_CRATE_2,
|
||||
RC_GF_OUTSIDE_CENTER_CRATE_3,
|
||||
RC_GF_OUTSIDE_CENTER_CRATE_4,
|
||||
RC_GF_OUTSIDE_LEFT_CRATE_1,
|
||||
RC_GF_OUTSIDE_LEFT_CRATE_2,
|
||||
RC_GF_ARCHERY_RANGE_CRATE_1,
|
||||
RC_GF_ARCHERY_RANGE_CRATE_2,
|
||||
RC_GF_ARCHERY_RANGE_CRATE_3,
|
||||
RC_GF_ARCHERY_RANGE_CRATE_4,
|
||||
RC_GF_ARCHERY_RANGE_CRATE_5,
|
||||
RC_GF_ARCHERY_RANGE_CRATE_6,
|
||||
RC_GF_ARCHERY_RANGE_CRATE_7,
|
||||
RC_GF_ARCHERY_START_CRATE_1,
|
||||
RC_GF_ARCHERY_START_CRATE_2,
|
||||
RC_GF_ARCHERY_LEFT_END_CRATE_1,
|
||||
RC_GF_ARCHERY_LEFT_END_CRATE_2,
|
||||
RC_GF_ARCHERY_LEFT_END_CHILD_CRATE,
|
||||
RC_GF_ARCHERY_RIGHT_END_CRATE_1,
|
||||
RC_GF_ARCHERY_RIGHT_END_CRATE_2,
|
||||
RC_GF_KITCHEN_CRATE_1,
|
||||
RC_GF_KITCHEN_CRATE_2,
|
||||
RC_GF_KITCHEN_CRATE_3,
|
||||
RC_GF_KITCHEN_CRATE_4,
|
||||
RC_GF_KITCHEN_CRATE_5,
|
||||
RC_GF_BREAK_ROOM_CRATE_1,
|
||||
RC_GF_BREAK_ROOM_CRATE_2,
|
||||
RC_GF_BREAK_ROOM_CRATE_3,
|
||||
RC_GF_BREAK_ROOM_CRATE_4,
|
||||
RC_GF_NORTH_F1_CARPENTER_CRATE,
|
||||
RC_GF_NORTH_F3_CARPENTER_CRATE,
|
||||
RC_GF_SOUTH_F2_CARPENTER_CRATE_1,
|
||||
RC_GF_SOUTH_F2_CARPENTER_CRATE_2,
|
||||
RC_GF_SOUTHMOST_CENTER_CRATE,
|
||||
RC_GF_MID_SOUTH_CENTER_CRATE,
|
||||
RC_GF_MID_NORTH_CENTER_CRATE,
|
||||
RR_GF_NORTHMOST_CENTER_CRATE,
|
||||
RC_GF_OUTSKIRTS_NE_CRATE,
|
||||
RC_GF_OUTSKIRTS_NW_CRATE,
|
||||
RC_GF_HBA_RANGE_CRATE_1,
|
||||
RC_GF_HBA_RANGE_CRATE_2,
|
||||
RC_GF_HBA_RANGE_CRATE_3,
|
||||
RC_GF_HBA_RANGE_CRATE_4,
|
||||
RC_GF_HBA_RANGE_CRATE_5,
|
||||
RC_GF_HBA_RANGE_CRATE_6,
|
||||
RC_GF_HBA_RANGE_CRATE_7,
|
||||
RC_GF_HBA_CANOPY_EAST_CRATE,
|
||||
RC_GF_HBA_CANOPY_WEST_CRATE,
|
||||
RC_GF_NORTH_TARGET_EAST_CRATE,
|
||||
RC_GF_NORTH_TARGET_WEST_CRATE,
|
||||
RC_GF_NORTH_TARGET_CHILD_CRATE,
|
||||
RC_GF_SOUTH_TARGET_EAST_CRATE,
|
||||
RC_GF_SOUTH_TARGET_WEST_CRATE,
|
||||
RC_TH_NEAR_KITCHEN_LEFTMOST_CRATE,
|
||||
RC_TH_NEAR_KITCHEN_MID_LEFT_CRATE,
|
||||
RC_TH_NEAR_KITCHEN_MID_RIGHT_CRATE,
|
||||
RC_TH_NEAR_KITCHEN_RIGHTMOST_CRATE,
|
||||
RC_TH_KITCHEN_CRATE,
|
||||
RC_TH_BREAK_HALLWAY_OUTER_CRATE,
|
||||
RC_TH_BREAK_HALLWAY_INNER_CRATE,
|
||||
RC_TH_BREAK_ROOM_RIGHT_CRATE,
|
||||
RC_TH_BREAK_ROOM_LEFT_CRATE,
|
||||
RC_TH_1_TORCH_CELL_CRATE,
|
||||
RC_TH_DEAD_END_CELL_CRATE,
|
||||
RC_TH_DOUBLE_CELL_LEFT_CRATE,
|
||||
RC_TH_DOUBLE_CELL_RIGHT_CRATE,
|
||||
RC_HW_BEFORE_QUICKSAND_CRATE,
|
||||
RC_HW_AFTER_QUICKSAND_CRATE_1,
|
||||
RC_HW_AFTER_QUICKSAND_CRATE_2,
|
||||
|
@ -3095,7 +3120,7 @@ typedef enum {
|
|||
RC_DMT_FLAG_SUN_FAIRY,
|
||||
RC_DMT_COW_GROTTO_STORMS_FAIRY,
|
||||
RC_LW_SHORTCUT_STORMS_FAIRY,
|
||||
RC_GF_KITCHEN_SUN_FAIRY,
|
||||
RC_TH_KITCHEN_SUN_FAIRY,
|
||||
RC_LW_DEKU_SCRUB_GROTTO_SUN_FAIRY,
|
||||
RC_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY,
|
||||
RC_SPIRIT_TEMPLE_BOULDER_ROOM_SUN_FAIRY,
|
||||
|
@ -3532,7 +3557,7 @@ typedef enum {
|
|||
RT_LH_LAB_DIVING,
|
||||
RT_LH_WATER_HOOKSHOT,
|
||||
RT_GV_CRATE_HOVERS,
|
||||
RT_GF_KITCHEN,
|
||||
RT_PASS_GUARDS_WITH_NOTHING,
|
||||
RT_GF_JUMP,
|
||||
RT_GF_WARRIOR_WITH_DIFFICULT_WEAPON,
|
||||
RT_HW_BUNNY_CROSSING,
|
||||
|
@ -5557,7 +5582,7 @@ typedef enum {
|
|||
RHT_DMT_FLAG_SUN_FAIRY,
|
||||
RHT_DMT_COW_GROTTO_STORMS_FAIRY,
|
||||
RHT_LW_SHORTCUT_STORMS_FAIRY,
|
||||
RHT_GF_KITCHEN_SUN_FAIRY,
|
||||
RHT_TH_KITCHEN_SUN_FAIRY,
|
||||
RHT_LW_DEKU_SCRUB_GROTTO_SUN_FAIRY,
|
||||
RHT_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY,
|
||||
RHT_SPIRIT_TEMPLE_BOULDER_ROOM_SUN_FAIRY,
|
||||
|
@ -6425,6 +6450,8 @@ typedef enum {
|
|||
RE_STINGER,
|
||||
RE_BIG_OCTO,
|
||||
RE_GERUDO_WARRIOR,
|
||||
RE_GERUDO_GUARD,
|
||||
RE_BREAK_ROOM_GUARD,
|
||||
RE_GIBDO,
|
||||
RE_GOHMA,
|
||||
RE_KING_DODONGO,
|
||||
|
|
|
@ -231,20 +231,20 @@ void RandomizerCheckObjects::UpdateImGuiVisibility() {
|
|||
(location.GetRandomizerCheck() != RC_KAK_100_GOLD_SKULLTULA_REWARD ||
|
||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleGanonBossKey"), RO_GANON_BOSS_KEY_VANILLA) !=
|
||||
RO_GANON_BOSS_KEY_KAK_TOKENS) && // 100 skull reward ganon boss key
|
||||
(location.GetRCType() != RCTYPE_GF_KEY && location.GetRandomizerCheck() != RC_GF_GERUDO_MEMBERSHIP_CARD ||
|
||||
(location.GetRCType() != RCTYPE_GF_KEY && location.GetRandomizerCheck() != RC_TH_FREED_CARPENTERS ||
|
||||
(CVarGetInteger(CVAR_RANDOMIZER_SETTING("FortressCarpenters"), RO_GF_CARPENTERS_NORMAL) ==
|
||||
RO_GF_CARPENTERS_FREE &&
|
||||
location.GetRCType() != RCTYPE_GF_KEY && location.GetRandomizerCheck() != RC_GF_GERUDO_MEMBERSHIP_CARD) ||
|
||||
location.GetRCType() != RCTYPE_GF_KEY && location.GetRandomizerCheck() != RC_TH_FREED_CARPENTERS) ||
|
||||
(CVarGetInteger(CVAR_RANDOMIZER_SETTING("FortressCarpenters"), RO_GF_CARPENTERS_NORMAL) ==
|
||||
RO_GF_CARPENTERS_FAST &&
|
||||
((location.GetRandomizerCheck() == RC_GF_GERUDO_MEMBERSHIP_CARD &&
|
||||
((location.GetRandomizerCheck() == RC_TH_FREED_CARPENTERS &&
|
||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleGerudoToken"), RO_GENERIC_NO) == RO_GENERIC_YES) ||
|
||||
(location.GetRandomizerCheck() == RC_GF_NORTH_F1_CARPENTER &&
|
||||
(location.GetRandomizerCheck() == RC_TH_1_TORCH_CARPENTER &&
|
||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("GerudoKeys"), RO_GERUDO_KEYS_VANILLA) !=
|
||||
RO_GERUDO_KEYS_VANILLA))) ||
|
||||
(CVarGetInteger(CVAR_RANDOMIZER_SETTING("FortressCarpenters"), RO_GF_CARPENTERS_NORMAL) ==
|
||||
RO_GF_CARPENTERS_NORMAL &&
|
||||
((location.GetRandomizerCheck() == RC_GF_GERUDO_MEMBERSHIP_CARD &&
|
||||
((location.GetRandomizerCheck() == RC_TH_FREED_CARPENTERS &&
|
||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleGerudoToken"), RO_GENERIC_NO) == RO_GENERIC_YES) ||
|
||||
(location.GetRCType() == RCTYPE_GF_KEY &&
|
||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("GerudoKeys"), RO_GERUDO_KEYS_VANILLA) !=
|
||||
|
|
|
@ -747,7 +747,7 @@ void CheckTrackerFlagSet(int16_t flagType, int32_t flag) {
|
|||
if ((flag == EVENTCHKINF_CARPENTERS_FREE(0) || flag == EVENTCHKINF_CARPENTERS_FREE(1) ||
|
||||
flag == EVENTCHKINF_CARPENTERS_FREE(2) || flag == EVENTCHKINF_CARPENTERS_FREE(3)) &&
|
||||
GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) {
|
||||
SetCheckCollected(RC_GF_GERUDO_MEMBERSHIP_CARD);
|
||||
SetCheckCollected(RC_TH_FREED_CARPENTERS);
|
||||
return;
|
||||
}
|
||||
checkMatchType = SpoilerCollectionCheckType::SPOILER_CHK_EVENT_CHK_INF;
|
||||
|
@ -1547,10 +1547,10 @@ bool IsCheckShuffled(RandomizerCheck rc) {
|
|||
(loc->GetRCType() != RCTYPE_BOSS_KEY || showBossKeysanity) &&
|
||||
(loc->GetRCType() != RCTYPE_GANON_BOSS_KEY || showGanonBossKey) &&
|
||||
(rc != RC_KAK_100_GOLD_SKULLTULA_REWARD || show100SkullReward) &&
|
||||
(loc->GetRCType() != RCTYPE_GF_KEY && rc != RC_GF_GERUDO_MEMBERSHIP_CARD ||
|
||||
(showGerudoCard && rc == RC_GF_GERUDO_MEMBERSHIP_CARD) ||
|
||||
(loc->GetRCType() != RCTYPE_GF_KEY && rc != RC_TH_FREED_CARPENTERS ||
|
||||
(showGerudoCard && rc == RC_TH_FREED_CARPENTERS) ||
|
||||
(fortressNormal && showGerudoFortressKeys && loc->GetRCType() == RCTYPE_GF_KEY) ||
|
||||
(fortressFast && showGerudoFortressKeys && rc == RC_GF_NORTH_F1_CARPENTER));
|
||||
(fortressFast && showGerudoFortressKeys && rc == RC_TH_1_TORCH_CARPENTER));
|
||||
} else if (loc->IsVanillaCompletion()) {
|
||||
return (OTRGlobals::Instance->gRandoContext->IsQuestOfLocationActive(rc) || rc == RC_GIFT_FROM_RAURU) &&
|
||||
rc != RC_LINKS_POCKET;
|
||||
|
|
|
@ -206,22 +206,22 @@ typedef enum {
|
|||
RAND_INF_KF_TWINS_HOUSE_POT_2,
|
||||
RAND_INF_KF_BROTHERS_HOUSE_POT_1,
|
||||
RAND_INF_KF_BROTHERS_HOUSE_POT_2,
|
||||
RAND_INF_GF_BREAK_ROOM_POT_1,
|
||||
RAND_INF_GF_BREAK_ROOM_POT_2,
|
||||
RAND_INF_GF_KITCHEN_POT_1,
|
||||
RAND_INF_GF_KITCHEN_POT_2,
|
||||
RAND_INF_GF_NORTH_F1_CARPENTER_POT_1,
|
||||
RAND_INF_GF_NORTH_F1_CARPENTER_POT_2,
|
||||
RAND_INF_GF_NORTH_F1_CARPENTER_POT_3,
|
||||
RAND_INF_GF_NORTH_F2_CARPENTER_POT_1,
|
||||
RAND_INF_GF_NORTH_F2_CARPENTER_POT_2,
|
||||
RAND_INF_GF_SOUTH_F1_CARPENTER_POT_1,
|
||||
RAND_INF_GF_SOUTH_F1_CARPENTER_POT_2,
|
||||
RAND_INF_GF_SOUTH_F1_CARPENTER_POT_3,
|
||||
RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_1,
|
||||
RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2,
|
||||
RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3,
|
||||
RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4,
|
||||
RAND_INF_TH_BREAK_ROOM_POT_1,
|
||||
RAND_INF_TH_BREAK_ROOM_POT_2,
|
||||
RAND_INF_TH_KITCHEN_POT_1,
|
||||
RAND_INF_TH_KITCHEN_POT_2,
|
||||
RAND_INF_TH_NORTH_F1_CARPENTER_POT_1,
|
||||
RAND_INF_TH_NORTH_F1_CARPENTER_POT_2,
|
||||
RAND_INF_TH_NORTH_F1_CARPENTER_POT_3,
|
||||
RAND_INF_TH_NORTH_F2_CARPENTER_POT_1,
|
||||
RAND_INF_TH_NORTH_F2_CARPENTER_POT_2,
|
||||
RAND_INF_TH_SOUTH_F1_CARPENTER_POT_1,
|
||||
RAND_INF_TH_SOUTH_F1_CARPENTER_POT_2,
|
||||
RAND_INF_TH_SOUTH_F1_CARPENTER_POT_3,
|
||||
RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_1,
|
||||
RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_2,
|
||||
RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_3,
|
||||
RAND_INF_TH_SOUTH_F1_CARPENTER_CELL_POT_4,
|
||||
RAND_INF_WASTELAND_NEAR_GS_POT_1,
|
||||
RAND_INF_WASTELAND_NEAR_GS_POT_2,
|
||||
RAND_INF_WASTELAND_NEAR_GS_POT_3,
|
||||
|
@ -751,39 +751,39 @@ typedef enum {
|
|||
RAND_INF_GV_CRATE_BRIDGE_3,
|
||||
RAND_INF_GV_CRATE_BRIDGE_4,
|
||||
RAND_INF_GF_ABOVE_JAIL_CRATE,
|
||||
RAND_INF_GF_OUTSIDE_CENTER_CRATE_1,
|
||||
RAND_INF_GF_OUTSIDE_CENTER_CRATE_2,
|
||||
RAND_INF_GF_OUTSIDE_CENTER_CRATE_3,
|
||||
RAND_INF_GF_OUTSIDE_CENTER_CRATE_4,
|
||||
RAND_INF_GF_OUTSIDE_LEFT_CRATE_1,
|
||||
RAND_INF_GF_OUTSIDE_LEFT_CRATE_2,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_1,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_2,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_3,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_4,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_5,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_6,
|
||||
RAND_INF_GF_ARCHERY_RANGE_CRATE_7,
|
||||
RAND_INF_GF_ARCHERY_START_CRATE_1,
|
||||
RAND_INF_GF_ARCHERY_START_CRATE_2,
|
||||
RAND_INF_GF_ARCHERY_LEFT_END_CRATE_1,
|
||||
RAND_INF_GF_ARCHERY_LEFT_END_CRATE_2,
|
||||
RAND_INF_GF_ARCHERY_LEFT_END_CHILD_CRATE,
|
||||
RAND_INF_GF_ARCHERY_RIGHT_END_CRATE_1,
|
||||
RAND_INF_GF_ARCHERY_RIGHT_END_CRATE_2,
|
||||
RAND_INF_GF_KITCHEN_CRATE_1,
|
||||
RAND_INF_GF_KITCHEN_CRATE_2,
|
||||
RAND_INF_GF_KITCHEN_CRATE_3,
|
||||
RAND_INF_GF_KITCHEN_CRATE_4,
|
||||
RAND_INF_GF_KITCHEN_CRATE_5,
|
||||
RAND_INF_GF_BREAK_ROOM_CRATE_1,
|
||||
RAND_INF_GF_BREAK_ROOM_CRATE_2,
|
||||
RAND_INF_GF_BREAK_ROOM_CRATE_3,
|
||||
RAND_INF_GF_BREAK_ROOM_CRATE_4,
|
||||
RAND_INF_GF_NORTH_F1_CARPENTER_CRATE,
|
||||
RAND_INF_GF_NORTH_F3_CARPENTER_CRATE,
|
||||
RAND_INF_GF_SOUTH_F2_CARPENTER_CRATE_1,
|
||||
RAND_INF_GF_SOUTH_F2_CARPENTER_CRATE_2,
|
||||
RAND_INF_GF_SOUTHMOST_CENTER_CRATE,
|
||||
RAND_INF_GF_MID_SOUTH_CENTER_CRATE,
|
||||
RAND_INF_GF_MID_NORTH_CENTER_CRATE,
|
||||
RAND_INF_GF_NORTHMOST_CENTER_CRATE,
|
||||
RAND_INF_GF_OUTSKIRTS_NE_CRATE,
|
||||
RAND_INF_GF_OUTSKIRTS_NW_CRATE,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_1,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_2,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_3,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_4,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_5,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_6,
|
||||
RAND_INF_GF_HBA_RANGE_CRATE_7,
|
||||
RAND_INF_GF_HBA_CANOPY_EAST_CRATE,
|
||||
RAND_INF_GF_HBA_CANOPY_WEST_CRATE,
|
||||
RAND_INF_GF_NORTH_TARGET_EAST_CRATE,
|
||||
RAND_INF_GF_NORTH_TARGET_WEST_CRATE,
|
||||
RAND_INF_GF_NORTH_TARGET_CHILD_CRATE,
|
||||
RAND_INF_GF_SOUTH_TARGET_EAST_CRATE,
|
||||
RAND_INF_GF_SOUTH_TARGET_WEST_CRATE,
|
||||
RAND_INF_TH_NEAR_KITCHEN_LEFTMOST_CRATE,
|
||||
RAND_INF_TH_NEAR_KITCHEN_MID_LEFT_CRATE,
|
||||
RAND_INF_TH_NEAR_KITCHEN_MID_RIGHT_CRATE,
|
||||
RAND_INF_TH_NEAR_KITCHEN_RIGHTMOST_CRATE,
|
||||
RAND_INF_TH_KITCHEN_CRATE,
|
||||
RAND_INF_TH_BREAK_HALLWAY_OUTER_CRATE,
|
||||
RAND_INF_TH_BREAK_HALLWAY_INNER_CRATE,
|
||||
RAND_INF_TH_BREAK_ROOM_RIGHT_CRATE,
|
||||
RAND_INF_TH_BREAK_ROOM_LEFT_CRATE,
|
||||
RAND_INF_TH_1_TORCH_CELL_CRATE,
|
||||
RAND_INF_TH_DEAD_END_CELL_CRATE,
|
||||
RAND_INF_TH_DOUBLE_CELL_LEFT_CRATE,
|
||||
RAND_INF_TH_DOUBLE_CELL_RIGHT_CRATE,
|
||||
RAND_INF_HW_BEFORE_QUICKSAND_CRATE,
|
||||
RAND_INF_HW_AFTER_QUICKSAND_CRATE_1,
|
||||
RAND_INF_HW_AFTER_QUICKSAND_CRATE_2,
|
||||
|
@ -1090,7 +1090,7 @@ typedef enum {
|
|||
RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_4,
|
||||
RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_5,
|
||||
|
||||
RAND_INF_GF_ITEM_FROM_LEADER_OF_FORTRESS,
|
||||
RAND_INF_TH_ITEM_FROM_LEADER_OF_FORTRESS,
|
||||
RAND_INF_GF_GTG_GATE_PERMANENTLY_OPEN,
|
||||
|
||||
RAND_INF_ZELDAS_LETTER,
|
||||
|
@ -1505,7 +1505,7 @@ typedef enum {
|
|||
RAND_INF_DMT_COW_GROTTO_STORMS_FAIRY,
|
||||
RAND_INF_HF_FENCE_GROTTO_STORMS_FAIRY,
|
||||
RAND_INF_LW_SHORTCUT_STORMS_FAIRY,
|
||||
RAND_INF_GF_KITCHEN_SUN_FAIRY,
|
||||
RAND_INF_TH_KITCHEN_SUN_FAIRY,
|
||||
RAND_INF_LW_DEKU_SCRUB_GROTTO_SUN_FAIRY,
|
||||
RAND_INF_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY,
|
||||
RAND_INF_SPIRIT_TEMPLE_BOULDER_ROOM_SUN_FAIRY,
|
||||
|
|
|
@ -569,13 +569,13 @@ void Settings::CreateOptions() {
|
|||
"Gerudo Valley Crate PoH as Adult with Hover Boots",
|
||||
"From the far side of Gerudo Valley, a precise Hover Boots movement and jump-slash recoil can allow "
|
||||
"adult to reach the ledge with the crate PoH without needing Longshot. You will take fall damage.");
|
||||
OPT_TRICK(RT_GF_KITCHEN, RCQUEST_BOTH, RA_GERUDO_FORTRESS, { Tricks::Tag::NOVICE },
|
||||
"Thieves\' Hideout \"Kitchen\" with No Additional Items",
|
||||
"Allows passing through the kitchen by avoiding being seen by the guards. The logic normally guarantees "
|
||||
"Bow or Hookshot to stun them from a distance, or Hover Boots to cross the room without needing to deal "
|
||||
"with the guards.");
|
||||
OPT_TRICK(RT_PASS_GUARDS_WITH_NOTHING, RCQUEST_BOTH, RA_GERUDO_FORTRESS, { Tricks::Tag::NOVICE },
|
||||
"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",
|
||||
"Adult can jump onto the top roof of the fortress without going through the interior of the hideout.");
|
||||
"It is possible to navigate the rooves of Fortress with unintuative jumps to reach additional areas "
|
||||
"without going inside.");
|
||||
OPT_TRICK(RT_GF_WARRIOR_WITH_DIFFICULT_WEAPON, RCQUEST_BOTH, RA_GERUDO_FORTRESS, { Tricks::Tag::NOVICE },
|
||||
"Gerudo\'s Fortress Warriors with Difficult Weapons",
|
||||
"Warriors can be defeated with Slingshot or Bombchus.");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue