mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-20 13:23:45 -07:00
NL Trees
This commit is contained in:
parent
cba3271473
commit
07e3454bc0
12 changed files with 117 additions and 81 deletions
|
@ -607,17 +607,16 @@ void GenerateItemPool() {
|
||||||
// Shuffle Trees
|
// Shuffle Trees
|
||||||
bool treesActive = (bool)ctx->GetOption(RSK_SHUFFLE_TREES);
|
bool treesActive = (bool)ctx->GetOption(RSK_SHUFFLE_TREES);
|
||||||
PlaceItemsForType(RCTYPE_TREE, treesActive, false);
|
PlaceItemsForType(RCTYPE_TREE, treesActive, false);
|
||||||
|
PlaceItemsForType(RCTYPE_NLTREE, treesActive && ctx->GetOption(RSK_LOGIC_RULES).Is(RO_LOGIC_NO_LOGIC), false);
|
||||||
|
|
||||||
// Shuffle Crates
|
// Shuffle Crates
|
||||||
bool overworldCratesActive = ctx->GetOption(RSK_SHUFFLE_CRATES).Is(RO_SHUFFLE_CRATES_OVERWORLD) ||
|
bool overworldCratesActive = ctx->GetOption(RSK_SHUFFLE_CRATES).Is(RO_SHUFFLE_CRATES_OVERWORLD) ||
|
||||||
ctx->GetOption(RSK_SHUFFLE_CRATES).Is(RO_SHUFFLE_CRATES_ALL);
|
ctx->GetOption(RSK_SHUFFLE_CRATES).Is(RO_SHUFFLE_CRATES_ALL);
|
||||||
bool overworldNLCratesActive = ctx->GetOption(RSK_LOGIC_RULES).Is(RO_LOGIC_NO_LOGIC) &&
|
bool overworldNLCratesActive = overworldCratesActive && ctx->GetOption(RSK_LOGIC_RULES).Is(RO_LOGIC_NO_LOGIC);
|
||||||
(ctx->GetOption(RSK_SHUFFLE_CRATES).Is(RO_SHUFFLE_CRATES_OVERWORLD) ||
|
|
||||||
ctx->GetOption(RSK_SHUFFLE_CRATES).Is(RO_SHUFFLE_CRATES_ALL));
|
|
||||||
bool dungeonCratesActive = ctx->GetOption(RSK_SHUFFLE_CRATES).Is(RO_SHUFFLE_CRATES_DUNGEONS) ||
|
bool dungeonCratesActive = ctx->GetOption(RSK_SHUFFLE_CRATES).Is(RO_SHUFFLE_CRATES_DUNGEONS) ||
|
||||||
ctx->GetOption(RSK_SHUFFLE_CRATES).Is(RO_SHUFFLE_CRATES_ALL);
|
ctx->GetOption(RSK_SHUFFLE_CRATES).Is(RO_SHUFFLE_CRATES_ALL);
|
||||||
PlaceItemsForType(RCTYPE_CRATE, overworldCratesActive, dungeonCratesActive);
|
PlaceItemsForType(RCTYPE_CRATE, overworldCratesActive, dungeonCratesActive);
|
||||||
PlaceItemsForType(RCTYPE_NLCRATE, overworldNLCratesActive, dungeonCratesActive);
|
PlaceItemsForType(RCTYPE_NLCRATE, overworldNLCratesActive, false);
|
||||||
PlaceItemsForType(RCTYPE_SMALL_CRATE, overworldCratesActive, dungeonCratesActive);
|
PlaceItemsForType(RCTYPE_SMALL_CRATE, overworldCratesActive, dungeonCratesActive);
|
||||||
|
|
||||||
auto fsMode = ctx->GetOption(RSK_FISHSANITY);
|
auto fsMode = ctx->GetOption(RSK_FISHSANITY);
|
||||||
|
|
|
@ -145,11 +145,13 @@ void Rando::StaticData::RegisterTreeLocations() {
|
||||||
locationTable[RC_HC_NEAR_GUARDS_TREE_6] = Location::Tree(RC_HC_NEAR_GUARDS_TREE_6, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(1494, 2108), "Tree Near Guards 6", RHT_TREE_HYRULE_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_NEAR_GUARDS_TREE_6));
|
locationTable[RC_HC_NEAR_GUARDS_TREE_6] = Location::Tree(RC_HC_NEAR_GUARDS_TREE_6, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(1494, 2108), "Tree Near Guards 6", RHT_TREE_HYRULE_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_NEAR_GUARDS_TREE_6));
|
||||||
locationTable[RC_HC_SKULLTULA_TREE] = Location::Tree(RC_HC_SKULLTULA_TREE, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(-145, 2961), "HC GS Tree", RHT_TREE_HYRULE_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_SKULLTULA_TREE));
|
locationTable[RC_HC_SKULLTULA_TREE] = Location::Tree(RC_HC_SKULLTULA_TREE, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(-145, 2961), "HC GS Tree", RHT_TREE_HYRULE_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_SKULLTULA_TREE));
|
||||||
locationTable[RC_HC_GROTTO_TREE] = Location::Tree(RC_HC_GROTTO_TREE, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(924, 872), "Tree Near Storms Grotto", RHT_TREE_HYRULE_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_GROTTO_TREE));
|
locationTable[RC_HC_GROTTO_TREE] = Location::Tree(RC_HC_GROTTO_TREE, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(924, 872), "Tree Near Storms Grotto", RHT_TREE_HYRULE_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_GROTTO_TREE));
|
||||||
|
locationTable[RC_HC_NL_TREE_1] = Location::NLTree(RC_HC_NL_TREE_1, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(-331, 1438), "NL Tree Near Guards 1", RHT_TREE_HYRULE_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_NL_TREE_1));
|
||||||
|
locationTable[RC_HC_NL_TREE_2] = Location::NLTree(RC_HC_NL_TREE_2, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_HYRULE_CASTLE, TWO_ACTOR_PARAMS(1022, 1444), "NL Tree Near Guards 2", RHT_TREE_HYRULE_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_NL_TREE_2));
|
||||||
locationTable[RC_HF_NEAR_KAK_TREE] = Location::Tree(RC_HF_NEAR_KAK_TREE, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(3276, 971), "Tree Outside Kakariko", RHT_TREE_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_KAK_TREE));
|
locationTable[RC_HF_NEAR_KAK_TREE] = Location::Tree(RC_HF_NEAR_KAK_TREE, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(3276, 971), "Tree Outside Kakariko", RHT_TREE_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_KAK_TREE));
|
||||||
locationTable[RC_HF_NEAR_KAK_SMALL_TREE] = Location::Tree(RC_HF_NEAR_KAK_SMALL_TREE, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(2076, -91), "Small Tree Outside Kakariko", RHT_TREE_HYRULE_FIELD, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_KAK_SMALL_TREE));
|
locationTable[RC_HF_NEAR_KAK_SMALL_TREE] = Location::Tree(RC_HF_NEAR_KAK_SMALL_TREE, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(2076, -91), "Small Tree Outside Kakariko", RHT_TREE_HYRULE_FIELD, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_KAK_SMALL_TREE));
|
||||||
locationTable[RC_HF_TREE_NEAR_HC_GROTTO_1] = Location::Tree(RC_HF_TREE_NEAR_HC_GROTTO_1, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-1041, 1022), "Tree Near HC Entrance Grotto 1", RHT_TREE_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_TREE_NEAR_HC_GROTTO_1));
|
locationTable[RC_HF_NEAR_MARKET_TREE_1] = Location::Tree(RC_HF_NEAR_MARKET_TREE_1, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-1041, 1022), "Tree Near HC Entrance Grotto 1", RHT_TREE_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_MARKET_TREE_1));
|
||||||
locationTable[RC_HF_TREE_NEAR_HC_GROTTO_2] = Location::Tree(RC_HF_TREE_NEAR_HC_GROTTO_2, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-1244, 819), "Tree Near HC Entrance Grotto 2", RHT_TREE_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_TREE_NEAR_HC_GROTTO_2));
|
locationTable[RC_HF_NEAR_MARKET_TREE_2] = Location::Tree(RC_HF_NEAR_MARKET_TREE_2, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-1244, 819), "Tree Near HC Entrance Grotto 2", RHT_TREE_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_MARKET_TREE_2));
|
||||||
locationTable[RC_HF_TREE_NEAR_HC_GROTTO_3] = Location::Tree(RC_HF_TREE_NEAR_HC_GROTTO_3, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-1448, 620), "Tree Near HC Entrance Grotto 3", RHT_TREE_HYRULE_FIELD, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_TREE_NEAR_HC_GROTTO_3));
|
locationTable[RC_HF_NEAR_MARKET_TREE_3] = Location::Tree(RC_HF_NEAR_MARKET_TREE_3, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-1448, 620), "Tree Near HC Entrance Grotto 3", RHT_TREE_HYRULE_FIELD, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_MARKET_TREE_3));
|
||||||
locationTable[RC_HF_NEAR_LLR_TREE] = Location::Tree(RC_HF_NEAR_LLR_TREE, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-1907, 5409), "Tree Outside Lon Lon Ranch", RHT_TREE_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_LLR_TREE));
|
locationTable[RC_HF_NEAR_LLR_TREE] = Location::Tree(RC_HF_NEAR_LLR_TREE, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-1907, 5409), "Tree Outside Lon Lon Ranch", RHT_TREE_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_LLR_TREE));
|
||||||
locationTable[RC_HF_NEAR_LH_TREE] = Location::Tree(RC_HF_NEAR_LH_TREE, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-4377, 13662), "Tree Outside Lake Hylia", RHT_TREE_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_LH_TREE));
|
locationTable[RC_HF_NEAR_LH_TREE] = Location::Tree(RC_HF_NEAR_LH_TREE, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-4377, 13662), "Tree Outside Lake Hylia", RHT_TREE_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_LH_TREE));
|
||||||
locationTable[RC_HF_CHILD_NEAR_GV_TREE] = Location::Tree(RC_HF_CHILD_NEAR_GV_TREE, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-6270, 8579), "Child Near Gerudo Valley Tree", RHT_TREE_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_CHILD_NEAR_GV_TREE));
|
locationTable[RC_HF_CHILD_NEAR_GV_TREE] = Location::Tree(RC_HF_CHILD_NEAR_GV_TREE, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_HYRULE_FIELD, TWO_ACTOR_PARAMS(-6270, 8579), "Child Near Gerudo Valley Tree", RHT_TREE_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_CHILD_NEAR_GV_TREE));
|
||||||
|
|
|
@ -189,10 +189,12 @@ void Context::GenerateLocationPool() {
|
||||||
(location.GetRCType() == RCTYPE_GRASS && mOptions[RSK_SHUFFLE_GRASS].Is(RO_SHUFFLE_GRASS_OFF)) ||
|
(location.GetRCType() == RCTYPE_GRASS && mOptions[RSK_SHUFFLE_GRASS].Is(RO_SHUFFLE_GRASS_OFF)) ||
|
||||||
(location.GetRCType() == RCTYPE_CRATE && mOptions[RSK_SHUFFLE_CRATES].Is(RO_SHUFFLE_CRATES_OFF)) ||
|
(location.GetRCType() == RCTYPE_CRATE && mOptions[RSK_SHUFFLE_CRATES].Is(RO_SHUFFLE_CRATES_OFF)) ||
|
||||||
(location.GetRCType() == RCTYPE_NLCRATE && (mOptions[RSK_SHUFFLE_CRATES].Is(RO_SHUFFLE_CRATES_OFF) ||
|
(location.GetRCType() == RCTYPE_NLCRATE && (mOptions[RSK_SHUFFLE_CRATES].Is(RO_SHUFFLE_CRATES_OFF) ||
|
||||||
!mOptions[RSK_LOGIC_RULES].Is(RO_LOGIC_NO_LOGIC))) ||
|
mOptions[RSK_LOGIC_RULES].IsNot(RO_LOGIC_NO_LOGIC))) ||
|
||||||
(location.GetRCType() == RCTYPE_SMALL_CRATE && mOptions[RSK_SHUFFLE_CRATES].Is(RO_SHUFFLE_CRATES_OFF)) ||
|
(location.GetRCType() == RCTYPE_SMALL_CRATE && mOptions[RSK_SHUFFLE_CRATES].Is(RO_SHUFFLE_CRATES_OFF)) ||
|
||||||
(location.GetRCType() == RCTYPE_FAIRY && !mOptions[RSK_SHUFFLE_FAIRIES]) ||
|
(location.GetRCType() == RCTYPE_FAIRY && !mOptions[RSK_SHUFFLE_FAIRIES]) ||
|
||||||
(location.GetRCType() == RCTYPE_TREE && !mOptions[RSK_SHUFFLE_TREES]) ||
|
(location.GetRCType() == RCTYPE_TREE && !mOptions[RSK_SHUFFLE_TREES]) ||
|
||||||
|
(location.GetRCType() == RCTYPE_NLTREE &&
|
||||||
|
(!mOptions[RSK_SHUFFLE_TREES] || mOptions[RSK_LOGIC_RULES].IsNot(RO_LOGIC_NO_LOGIC))) ||
|
||||||
(location.GetRCType() == RCTYPE_FREESTANDING &&
|
(location.GetRCType() == RCTYPE_FREESTANDING &&
|
||||||
mOptions[RSK_SHUFFLE_FREESTANDING].Is(RO_SHUFFLE_FREESTANDING_OFF)) ||
|
mOptions[RSK_SHUFFLE_FREESTANDING].Is(RO_SHUFFLE_FREESTANDING_OFF)) ||
|
||||||
(location.GetRCType() == RCTYPE_BEEHIVE && !mOptions[RSK_SHUFFLE_BEEHIVES])) {
|
(location.GetRCType() == RCTYPE_BEEHIVE && !mOptions[RSK_SHUFFLE_BEEHIVES])) {
|
||||||
|
|
|
@ -575,6 +575,15 @@ Rando::Location Rando::Location::Tree(RandomizerCheck rc, RandomizerCheckQuest q
|
||||||
false, collectionCheck };
|
false, collectionCheck };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rando::Location Rando::Location::NLTree(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
||||||
|
SceneID scene_, int32_t actorParams_, std::string&& shortName_,
|
||||||
|
RandomizerHintTextKey hintKey, RandomizerGet vanillaItem,
|
||||||
|
SpoilerCollectionCheck collectionCheck) {
|
||||||
|
return { rc, quest_, RCTYPE_NLTREE, area_, ACTOR_EN_WOOD02,
|
||||||
|
scene_, actorParams_, std::move(shortName_), hintKey, vanillaItem,
|
||||||
|
false, collectionCheck };
|
||||||
|
}
|
||||||
|
|
||||||
Rando::Location Rando::Location::HintStone(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
Rando::Location Rando::Location::HintStone(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
||||||
SceneID scene_, int32_t actorParams_, std::string&& shortName_) {
|
SceneID scene_, int32_t actorParams_, std::string&& shortName_) {
|
||||||
return { rc, quest_, RCTYPE_GOSSIP_STONE, area_, ACTOR_EN_GS,
|
return { rc, quest_, RCTYPE_GOSSIP_STONE, area_, ACTOR_EN_GS,
|
||||||
|
|
|
@ -250,6 +250,10 @@ class Location {
|
||||||
int32_t actorParams_, std::string&& shortName_, RandomizerHintTextKey hintKey,
|
int32_t actorParams_, std::string&& shortName_, RandomizerHintTextKey hintKey,
|
||||||
RandomizerGet vanillaItem, SpoilerCollectionCheck collectionCheck);
|
RandomizerGet vanillaItem, SpoilerCollectionCheck collectionCheck);
|
||||||
|
|
||||||
|
static Location NLTree(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_,
|
||||||
|
int32_t actorParams_, std::string&& shortName_, RandomizerHintTextKey hintKey,
|
||||||
|
RandomizerGet vanillaItem, SpoilerCollectionCheck collectionCheck);
|
||||||
|
|
||||||
static Location OtherHint(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
static Location OtherHint(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
||||||
ActorID actorId_, SceneID scene_, std::string&& shortName_, std::string&& spoilerName_);
|
ActorID actorId_, SceneID scene_, std::string&& shortName_, std::string&& spoilerName_);
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,8 @@ void RegionTable_Init_CastleGrounds() {
|
||||||
LOCATION(RC_HC_GRASS_1, logic->CanCutShrubs()),
|
LOCATION(RC_HC_GRASS_1, logic->CanCutShrubs()),
|
||||||
LOCATION(RC_HC_GRASS_2, logic->CanCutShrubs()),
|
LOCATION(RC_HC_GRASS_2, logic->CanCutShrubs()),
|
||||||
LOCATION(RC_HC_GROTTO_TREE, logic->CanBonkTrees()),
|
LOCATION(RC_HC_GROTTO_TREE, logic->CanBonkTrees()),
|
||||||
|
LOCATION(RC_HC_NL_TREE_1, logic->CanBonkTrees()),
|
||||||
|
LOCATION(RC_HC_NL_TREE_2, logic->CanBonkTrees()),
|
||||||
LOCATION(RC_HC_SKULLTULA_TREE, logic->CanBonkTrees()),
|
LOCATION(RC_HC_SKULLTULA_TREE, logic->CanBonkTrees()),
|
||||||
LOCATION(RC_HC_NEAR_GUARDS_TREE_1, logic->CanBonkTrees()),
|
LOCATION(RC_HC_NEAR_GUARDS_TREE_1, logic->CanBonkTrees()),
|
||||||
LOCATION(RC_HC_NEAR_GUARDS_TREE_2, logic->CanBonkTrees()),
|
LOCATION(RC_HC_NEAR_GUARDS_TREE_2, logic->CanBonkTrees()),
|
||||||
|
|
|
@ -68,9 +68,9 @@ void RegionTable_Init_HyruleField() {
|
||||||
LOCATION(RC_HF_NEAR_ZR_TREE, logic->CanBonkTrees()),
|
LOCATION(RC_HF_NEAR_ZR_TREE, logic->CanBonkTrees()),
|
||||||
LOCATION(RC_HF_NEAR_KAK_TREE, logic->CanBonkTrees()),
|
LOCATION(RC_HF_NEAR_KAK_TREE, logic->CanBonkTrees()),
|
||||||
LOCATION(RC_HF_NEAR_KAK_SMALL_TREE, logic->CanBonkTrees()),
|
LOCATION(RC_HF_NEAR_KAK_SMALL_TREE, logic->CanBonkTrees()),
|
||||||
LOCATION(RC_HF_TREE_NEAR_HC_GROTTO_1, logic->CanBonkTrees()),
|
LOCATION(RC_HF_NEAR_MARKET_TREE_1, logic->CanBonkTrees()),
|
||||||
LOCATION(RC_HF_TREE_NEAR_HC_GROTTO_2, logic->CanBonkTrees()),
|
LOCATION(RC_HF_NEAR_MARKET_TREE_2, logic->CanBonkTrees()),
|
||||||
LOCATION(RC_HF_TREE_NEAR_HC_GROTTO_3, logic->CanBonkTrees()),
|
LOCATION(RC_HF_NEAR_MARKET_TREE_3, logic->CanBonkTrees()),
|
||||||
LOCATION(RC_HF_NORTHWEST_TREE_1, logic->CanBonkTrees()),
|
LOCATION(RC_HF_NORTHWEST_TREE_1, logic->CanBonkTrees()),
|
||||||
LOCATION(RC_HF_NORTHWEST_TREE_2, logic->CanBonkTrees()),
|
LOCATION(RC_HF_NORTHWEST_TREE_2, logic->CanBonkTrees()),
|
||||||
LOCATION(RC_HF_NORTHWEST_TREE_3, logic->CanBonkTrees()),
|
LOCATION(RC_HF_NORTHWEST_TREE_3, logic->CanBonkTrees()),
|
||||||
|
|
|
@ -3267,11 +3267,13 @@ std::map<RandomizerCheck, RandomizerInf> rcToRandomizerInf = {
|
||||||
{ RC_HC_NEAR_GUARDS_TREE_6, RAND_INF_HC_NEAR_GUARDS_TREE_6 },
|
{ RC_HC_NEAR_GUARDS_TREE_6, RAND_INF_HC_NEAR_GUARDS_TREE_6 },
|
||||||
{ RC_HC_SKULLTULA_TREE, RAND_INF_HC_SKULLTULA_TREE },
|
{ RC_HC_SKULLTULA_TREE, RAND_INF_HC_SKULLTULA_TREE },
|
||||||
{ RC_HC_GROTTO_TREE, RAND_INF_HC_GROTTO_TREE },
|
{ RC_HC_GROTTO_TREE, RAND_INF_HC_GROTTO_TREE },
|
||||||
|
{ RC_HC_NL_TREE_1, RAND_INF_HC_NL_TREE_1 },
|
||||||
|
{ RC_HC_NL_TREE_2, RAND_INF_HC_NL_TREE_2 },
|
||||||
{ RC_HF_NEAR_KAK_TREE, RAND_INF_HF_NEAR_KAK_TREE },
|
{ RC_HF_NEAR_KAK_TREE, RAND_INF_HF_NEAR_KAK_TREE },
|
||||||
{ RC_HF_NEAR_KAK_SMALL_TREE, RAND_INF_HF_NEAR_KAK_SMALL_TREE },
|
{ RC_HF_NEAR_KAK_SMALL_TREE, RAND_INF_HF_NEAR_KAK_SMALL_TREE },
|
||||||
{ RC_HF_TREE_NEAR_HC_GROTTO_1, RAND_INF_HF_TREE_NEAR_HC_GROTTO_1 },
|
{ RC_HF_NEAR_MARKET_TREE_1, RAND_INF_HF_NEAR_MARKET_TREE_1 },
|
||||||
{ RC_HF_TREE_NEAR_HC_GROTTO_2, RAND_INF_HF_TREE_NEAR_HC_GROTTO_2 },
|
{ RC_HF_NEAR_MARKET_TREE_2, RAND_INF_HF_NEAR_MARKET_TREE_2 },
|
||||||
{ RC_HF_TREE_NEAR_HC_GROTTO_3, RAND_INF_HF_TREE_NEAR_HC_GROTTO_3 },
|
{ RC_HF_NEAR_MARKET_TREE_3, RAND_INF_HF_NEAR_MARKET_TREE_3 },
|
||||||
{ RC_HF_NEAR_LLR_TREE, RAND_INF_HF_NEAR_LLR_TREE },
|
{ RC_HF_NEAR_LLR_TREE, RAND_INF_HF_NEAR_LLR_TREE },
|
||||||
{ RC_HF_NEAR_LH_TREE, RAND_INF_HF_NEAR_LH_TREE },
|
{ RC_HF_NEAR_LH_TREE, RAND_INF_HF_NEAR_LH_TREE },
|
||||||
{ RC_HF_CHILD_NEAR_GV_TREE, RAND_INF_HF_CHILD_NEAR_GV_TREE },
|
{ RC_HF_CHILD_NEAR_GV_TREE, RAND_INF_HF_CHILD_NEAR_GV_TREE },
|
||||||
|
@ -3752,6 +3754,10 @@ TreeIdentity Randomizer::IdentifyTree(s32 sceneNum, s32 posX, s32 posZ) {
|
||||||
s32 actorParams = TWO_ACTOR_PARAMS(posX + x, posZ + z);
|
s32 actorParams = TWO_ACTOR_PARAMS(posX + x, posZ + z);
|
||||||
Rando::Location* location = GetCheckObjectFromActor(ACTOR_EN_WOOD02, sceneNum, actorParams);
|
Rando::Location* location = GetCheckObjectFromActor(ACTOR_EN_WOOD02, sceneNum, actorParams);
|
||||||
if (location->GetRandomizerCheck() != RC_UNKNOWN_CHECK) {
|
if (location->GetRandomizerCheck() != RC_UNKNOWN_CHECK) {
|
||||||
|
if (location->GetRCType() == RCTYPE_NLTREE &&
|
||||||
|
CVarGetInteger(CVAR_RANDOMIZER_SETTING("LogicRules"), RO_LOGIC_GLITCHLESS) != RO_LOGIC_NO_LOGIC) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
treeIdentity.randomizerInf = rcToRandomizerInf[location->GetRandomizerCheck()];
|
treeIdentity.randomizerInf = rcToRandomizerInf[location->GetRandomizerCheck()];
|
||||||
treeIdentity.randomizerCheck = location->GetRandomizerCheck();
|
treeIdentity.randomizerCheck = location->GetRandomizerCheck();
|
||||||
return treeIdentity;
|
return treeIdentity;
|
||||||
|
|
|
@ -300,6 +300,7 @@ typedef enum {
|
||||||
RCTYPE_NLCRATE, // NL Crates
|
RCTYPE_NLCRATE, // NL Crates
|
||||||
RCTYPE_SMALL_CRATE, // Small crates
|
RCTYPE_SMALL_CRATE, // Small crates
|
||||||
RCTYPE_TREE, // Trees
|
RCTYPE_TREE, // Trees
|
||||||
|
RCTYPE_NLTREE, // NL Trees
|
||||||
RCTYPE_DUNGEON_REWARD, // Dungeon rewards (blue warps)
|
RCTYPE_DUNGEON_REWARD, // Dungeon rewards (blue warps)
|
||||||
RCTYPE_OCARINA, // Ocarina locations
|
RCTYPE_OCARINA, // Ocarina locations
|
||||||
RCTYPE_BEEHIVE, // Beehives
|
RCTYPE_BEEHIVE, // Beehives
|
||||||
|
@ -2656,6 +2657,8 @@ typedef enum {
|
||||||
RC_HC_NEAR_GUARDS_TREE_6,
|
RC_HC_NEAR_GUARDS_TREE_6,
|
||||||
RC_HC_SKULLTULA_TREE,
|
RC_HC_SKULLTULA_TREE,
|
||||||
RC_HC_GROTTO_TREE,
|
RC_HC_GROTTO_TREE,
|
||||||
|
RC_HC_NL_TREE_1,
|
||||||
|
RC_HC_NL_TREE_2,
|
||||||
RC_HF_NEAR_LLR_TREE,
|
RC_HF_NEAR_LLR_TREE,
|
||||||
RC_HF_NEAR_LH_TREE,
|
RC_HF_NEAR_LH_TREE,
|
||||||
RC_HF_CHILD_NEAR_GV_TREE,
|
RC_HF_CHILD_NEAR_GV_TREE,
|
||||||
|
@ -2663,9 +2666,9 @@ typedef enum {
|
||||||
RC_HF_NEAR_ZR_TREE,
|
RC_HF_NEAR_ZR_TREE,
|
||||||
RC_HF_NEAR_KAK_TREE,
|
RC_HF_NEAR_KAK_TREE,
|
||||||
RC_HF_NEAR_KAK_SMALL_TREE,
|
RC_HF_NEAR_KAK_SMALL_TREE,
|
||||||
RC_HF_TREE_NEAR_HC_GROTTO_1,
|
RC_HF_NEAR_MARKET_TREE_1,
|
||||||
RC_HF_TREE_NEAR_HC_GROTTO_2,
|
RC_HF_NEAR_MARKET_TREE_2,
|
||||||
RC_HF_TREE_NEAR_HC_GROTTO_3,
|
RC_HF_NEAR_MARKET_TREE_3,
|
||||||
RC_HF_NORTHWEST_TREE_1,
|
RC_HF_NORTHWEST_TREE_1,
|
||||||
RC_HF_NORTHWEST_TREE_2,
|
RC_HF_NORTHWEST_TREE_2,
|
||||||
RC_HF_NORTHWEST_TREE_3,
|
RC_HF_NORTHWEST_TREE_3,
|
||||||
|
|
|
@ -191,6 +191,8 @@ void RandomizerCheckObjects::UpdateImGuiVisibility() {
|
||||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleCrates"), RO_GENERIC_NO)) &&
|
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleCrates"), RO_GENERIC_NO)) &&
|
||||||
(location.GetRCType() != RCTYPE_TREE ||
|
(location.GetRCType() != RCTYPE_TREE ||
|
||||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleTrees"), RO_GENERIC_NO)) &&
|
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleTrees"), RO_GENERIC_NO)) &&
|
||||||
|
(location.GetRCType() != RCTYPE_NLTREE ||
|
||||||
|
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleTrees"), RO_GENERIC_NO)) &&
|
||||||
(location.GetRCType() != RCTYPE_FISH ||
|
(location.GetRCType() != RCTYPE_FISH ||
|
||||||
ctx->GetFishsanity()->GetFishLocationIncluded(&location, FSO_SOURCE_CVARS)) &&
|
ctx->GetFishsanity()->GetFishLocationIncluded(&location, FSO_SOURCE_CVARS)) &&
|
||||||
(location.GetRCType() != RCTYPE_ADULT_TRADE ||
|
(location.GetRCType() != RCTYPE_ADULT_TRADE ||
|
||||||
|
|
|
@ -1533,69 +1533,74 @@ bool IsCheckShuffled(RandomizerCheck rc) {
|
||||||
auto identity = OTRGlobals::Instance->gRandomizer->IdentifyShopItem(loc->GetScene(), loc->GetActorParams() + 1);
|
auto identity = OTRGlobals::Instance->gRandomizer->IdentifyShopItem(loc->GetScene(), loc->GetActorParams() + 1);
|
||||||
}
|
}
|
||||||
if (IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_LOGIC_RULES) != RO_LOGIC_VANILLA) {
|
if (IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_LOGIC_RULES) != RO_LOGIC_VANILLA) {
|
||||||
return (loc->GetArea() != RCAREA_INVALID) && // don't show Invalid locations
|
return (loc->GetArea() != RCAREA_INVALID) && // don't show Invalid locations
|
||||||
(loc->GetRCType() != RCTYPE_GOSSIP_STONE) && // TODO: Don't show hints until tracker supports them
|
(loc->GetRCType() != RCTYPE_GOSSIP_STONE) && // TODO: Don't show hints until tracker supports them
|
||||||
(loc->GetRCType() != RCTYPE_STATIC_HINT) && // TODO: Don't show hints until tracker supports them
|
(loc->GetRCType() != RCTYPE_STATIC_HINT) && // TODO: Don't show hints until tracker supports them
|
||||||
(loc->GetRCType() !=
|
(loc->GetRCType() != RCTYPE_CHEST_GAME) && // don't show non final reward chest game checks until we
|
||||||
RCTYPE_CHEST_GAME) && // don't show non final reward chest game checks until we support shuffling them
|
// support shuffling them
|
||||||
(rc != RC_HC_ZELDAS_LETTER) && // don't show zeldas letter until we support shuffling it
|
(rc != RC_HC_ZELDAS_LETTER) && // don't show zeldas letter until we support shuffling it
|
||||||
(rc != RC_LINKS_POCKET || showLinksPocket) &&
|
(rc != RC_LINKS_POCKET || showLinksPocket) &&
|
||||||
OTRGlobals::Instance->gRandoContext->IsQuestOfLocationActive(rc) &&
|
OTRGlobals::Instance->gRandoContext->IsQuestOfLocationActive(rc) &&
|
||||||
(loc->GetRCType() != RCTYPE_SHOP ||
|
(loc->GetRCType() != RCTYPE_SHOP ||
|
||||||
(showShops &&
|
(showShops &&
|
||||||
OTRGlobals::Instance->gRandomizer->IdentifyShopItem(loc->GetScene(), loc->GetActorParams() + 1)
|
OTRGlobals::Instance->gRandomizer->IdentifyShopItem(loc->GetScene(), loc->GetActorParams() + 1)
|
||||||
.enGirlAShopItem == 50)) &&
|
.enGirlAShopItem == 50)) &&
|
||||||
(rc != RC_TRIFORCE_COMPLETED) && (rc != RC_GANON) &&
|
(rc != RC_TRIFORCE_COMPLETED) && (rc != RC_GANON) &&
|
||||||
(loc->GetRCType() != RCTYPE_SCRUB || showScrubs ||
|
(loc->GetRCType() != RCTYPE_SCRUB || showScrubs ||
|
||||||
(showMajorScrubs && (rc == RC_LW_DEKU_SCRUB_NEAR_BRIDGE || // The 3 scrubs that are always randomized
|
(showMajorScrubs &&
|
||||||
rc == RC_HF_DEKU_SCRUB_GROTTO || rc == RC_LW_DEKU_SCRUB_GROTTO_FRONT))) &&
|
(rc == RC_LW_DEKU_SCRUB_NEAR_BRIDGE || // The 3 scrubs that are always randomized
|
||||||
(loc->GetRCType() != RCTYPE_MERCHANT || showMerchants) &&
|
rc == RC_HF_DEKU_SCRUB_GROTTO || rc == RC_LW_DEKU_SCRUB_GROTTO_FRONT))) &&
|
||||||
(loc->GetRCType() != RCTYPE_SONG_LOCATION || showSongs) &&
|
(loc->GetRCType() != RCTYPE_MERCHANT || showMerchants) &&
|
||||||
(loc->GetRCType() != RCTYPE_BEEHIVE || showBeehives) &&
|
(loc->GetRCType() != RCTYPE_SONG_LOCATION || showSongs) &&
|
||||||
(loc->GetRCType() != RCTYPE_OCARINA || showOcarinas) &&
|
(loc->GetRCType() != RCTYPE_BEEHIVE || showBeehives) &&
|
||||||
(loc->GetRCType() != RCTYPE_SKULL_TOKEN || alwaysShowGS ||
|
(loc->GetRCType() != RCTYPE_OCARINA || showOcarinas) &&
|
||||||
(showOverworldTokens && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
(loc->GetRCType() != RCTYPE_SKULL_TOKEN || alwaysShowGS ||
|
||||||
(showDungeonTokens && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
(showOverworldTokens && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
||||||
(loc->GetRCType() != RCTYPE_POT ||
|
(showDungeonTokens && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
||||||
(showOverworldPots && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
(loc->GetRCType() != RCTYPE_POT ||
|
||||||
(showDungeonPots && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
(showOverworldPots && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
||||||
(loc->GetRCType() != RCTYPE_GRASS ||
|
(showDungeonPots && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
||||||
(showOverworldGrass && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
(loc->GetRCType() != RCTYPE_GRASS ||
|
||||||
(showDungeonGrass && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
(showOverworldGrass && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
||||||
(loc->GetRCType() != RCTYPE_CRATE ||
|
(showDungeonGrass && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
||||||
(showOverworldCrates && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
(loc->GetRCType() != RCTYPE_CRATE ||
|
||||||
(showDungeonCrates && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
(showOverworldCrates && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
||||||
(loc->GetRCType() != RCTYPE_NLCRATE ||
|
(showDungeonCrates && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
||||||
(showOverworldCrates && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea()) &&
|
(loc->GetRCType() != RCTYPE_NLCRATE ||
|
||||||
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_LOGIC_RULES) == RO_LOGIC_NO_LOGIC) ||
|
(showOverworldCrates && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea()) &&
|
||||||
(showDungeonCrates && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_LOGIC_RULES) == RO_LOGIC_NO_LOGIC) ||
|
||||||
(loc->GetRCType() != RCTYPE_SMALL_CRATE ||
|
(showDungeonCrates && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
||||||
(showOverworldCrates && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
(loc->GetRCType() != RCTYPE_SMALL_CRATE ||
|
||||||
(showDungeonCrates && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
(showOverworldCrates && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
||||||
(loc->GetRCType() != RCTYPE_TREE || showTrees) && (loc->GetRCType() != RCTYPE_COW || showCows) &&
|
(showDungeonCrates && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
||||||
|
(loc->GetRCType() != RCTYPE_TREE || showTrees) && (loc->GetRCType() != RCTYPE_COW || showCows) &&
|
||||||
|
(loc->GetRCType() != RCTYPE_NLTREE ||
|
||||||
|
(showTrees &&
|
||||||
|
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_LOGIC_RULES) == RO_LOGIC_NO_LOGIC)) ||
|
||||||
(loc->GetRCType() != RCTYPE_FISH ||
|
(loc->GetRCType() != RCTYPE_FISH ||
|
||||||
OTRGlobals::Instance->gRandoContext->GetFishsanity()->GetFishLocationIncluded(loc)) &&
|
OTRGlobals::Instance->gRandoContext->GetFishsanity()->GetFishLocationIncluded(loc)) &&
|
||||||
(loc->GetRCType() != RCTYPE_FREESTANDING ||
|
(loc->GetRCType() != RCTYPE_FREESTANDING ||
|
||||||
(showOverworldFreestanding && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
(showOverworldFreestanding && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
||||||
(showDungeonFreestanding && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
(showDungeonFreestanding && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
||||||
(loc->GetRCType() != RCTYPE_ADULT_TRADE || showAdultTrade ||
|
(loc->GetRCType() != RCTYPE_ADULT_TRADE || showAdultTrade ||
|
||||||
rc == RC_KAK_ANJU_AS_ADULT || // adult trade checks that are always shuffled
|
rc == RC_KAK_ANJU_AS_ADULT || // adult trade checks that are always shuffled
|
||||||
rc == RC_DMT_TRADE_CLAIM_CHECK // even when shuffle adult trade is off
|
rc == RC_DMT_TRADE_CLAIM_CHECK // even when shuffle adult trade is off
|
||||||
) &&
|
) &&
|
||||||
(rc != RC_KF_KOKIRI_SWORD_CHEST || showKokiriSword) && (rc != RC_TOT_MASTER_SWORD || showMasterSword) &&
|
(rc != RC_KF_KOKIRI_SWORD_CHEST || showKokiriSword) &&
|
||||||
(rc != RC_LH_HYRULE_LOACH || showHyruleLoach) && (rc != RC_ZR_MAGIC_BEAN_SALESMAN || showBeans) &&
|
(rc != RC_TOT_MASTER_SWORD || showMasterSword) && (rc != RC_LH_HYRULE_LOACH || showHyruleLoach) &&
|
||||||
(rc != RC_HC_MALON_EGG || showWeirdEgg) &&
|
(rc != RC_ZR_MAGIC_BEAN_SALESMAN || showBeans) && (rc != RC_HC_MALON_EGG || showWeirdEgg) &&
|
||||||
(loc->GetRCType() != RCTYPE_FROG_SONG || showFrogSongRupees) &&
|
(loc->GetRCType() != RCTYPE_FROG_SONG || showFrogSongRupees) &&
|
||||||
((loc->GetRCType() != RCTYPE_MAP && loc->GetRCType() != RCTYPE_COMPASS) || showStartingMapsCompasses) &&
|
((loc->GetRCType() != RCTYPE_MAP && loc->GetRCType() != RCTYPE_COMPASS) ||
|
||||||
(loc->GetRCType() != RCTYPE_FAIRY || showFairies) &&
|
showStartingMapsCompasses) &&
|
||||||
(loc->GetRCType() != RCTYPE_SMALL_KEY || showKeysanity) &&
|
(loc->GetRCType() != RCTYPE_FAIRY || showFairies) &&
|
||||||
(loc->GetRCType() != RCTYPE_BOSS_KEY || showBossKeysanity) &&
|
(loc->GetRCType() != RCTYPE_SMALL_KEY || showKeysanity) &&
|
||||||
(loc->GetRCType() != RCTYPE_GANON_BOSS_KEY || showGanonBossKey) &&
|
(loc->GetRCType() != RCTYPE_BOSS_KEY || showBossKeysanity) &&
|
||||||
(rc != RC_KAK_100_GOLD_SKULLTULA_REWARD || show100SkullReward) &&
|
(loc->GetRCType() != RCTYPE_GANON_BOSS_KEY || showGanonBossKey) &&
|
||||||
(loc->GetRCType() != RCTYPE_GF_KEY && rc != RC_TH_FREED_CARPENTERS ||
|
(rc != RC_KAK_100_GOLD_SKULLTULA_REWARD || show100SkullReward) &&
|
||||||
(showGerudoCard && rc == RC_TH_FREED_CARPENTERS) ||
|
(loc->GetRCType() != RCTYPE_GF_KEY && rc != RC_TH_FREED_CARPENTERS ||
|
||||||
(fortressNormal && showGerudoFortressKeys && loc->GetRCType() == RCTYPE_GF_KEY) ||
|
(showGerudoCard && rc == RC_TH_FREED_CARPENTERS) ||
|
||||||
(fortressFast && showGerudoFortressKeys && rc == RC_TH_1_TORCH_CARPENTER));
|
(fortressNormal && showGerudoFortressKeys && loc->GetRCType() == RCTYPE_GF_KEY) ||
|
||||||
|
(fortressFast && showGerudoFortressKeys && rc == RC_TH_1_TORCH_CARPENTER));
|
||||||
} else if (loc->IsVanillaCompletion()) {
|
} else if (loc->IsVanillaCompletion()) {
|
||||||
return (OTRGlobals::Instance->gRandoContext->IsQuestOfLocationActive(rc) || rc == RC_GIFT_FROM_RAURU) &&
|
return (OTRGlobals::Instance->gRandoContext->IsQuestOfLocationActive(rc) || rc == RC_GIFT_FROM_RAURU) &&
|
||||||
rc != RC_LINKS_POCKET;
|
rc != RC_LINKS_POCKET;
|
||||||
|
|
|
@ -1006,6 +1006,8 @@ DEFINE_RAND_INF(RAND_INF_HC_NEAR_GUARDS_TREE_5)
|
||||||
DEFINE_RAND_INF(RAND_INF_HC_NEAR_GUARDS_TREE_6)
|
DEFINE_RAND_INF(RAND_INF_HC_NEAR_GUARDS_TREE_6)
|
||||||
DEFINE_RAND_INF(RAND_INF_HC_SKULLTULA_TREE)
|
DEFINE_RAND_INF(RAND_INF_HC_SKULLTULA_TREE)
|
||||||
DEFINE_RAND_INF(RAND_INF_HC_GROTTO_TREE)
|
DEFINE_RAND_INF(RAND_INF_HC_GROTTO_TREE)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_HC_NL_TREE_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_HC_NL_TREE_2)
|
||||||
DEFINE_RAND_INF(RAND_INF_HF_NEAR_LLR_TREE)
|
DEFINE_RAND_INF(RAND_INF_HF_NEAR_LLR_TREE)
|
||||||
DEFINE_RAND_INF(RAND_INF_HF_NEAR_LH_TREE)
|
DEFINE_RAND_INF(RAND_INF_HF_NEAR_LH_TREE)
|
||||||
DEFINE_RAND_INF(RAND_INF_HF_CHILD_NEAR_GV_TREE)
|
DEFINE_RAND_INF(RAND_INF_HF_CHILD_NEAR_GV_TREE)
|
||||||
|
@ -1013,9 +1015,9 @@ DEFINE_RAND_INF(RAND_INF_HF_ADULT_NEAR_GV_TREE)
|
||||||
DEFINE_RAND_INF(RAND_INF_HF_NEAR_ZR_TREE)
|
DEFINE_RAND_INF(RAND_INF_HF_NEAR_ZR_TREE)
|
||||||
DEFINE_RAND_INF(RAND_INF_HF_NEAR_KAK_TREE)
|
DEFINE_RAND_INF(RAND_INF_HF_NEAR_KAK_TREE)
|
||||||
DEFINE_RAND_INF(RAND_INF_HF_NEAR_KAK_SMALL_TREE)
|
DEFINE_RAND_INF(RAND_INF_HF_NEAR_KAK_SMALL_TREE)
|
||||||
DEFINE_RAND_INF(RAND_INF_HF_TREE_NEAR_HC_GROTTO_1)
|
DEFINE_RAND_INF(RAND_INF_HF_NEAR_MARKET_TREE_1)
|
||||||
DEFINE_RAND_INF(RAND_INF_HF_TREE_NEAR_HC_GROTTO_2)
|
DEFINE_RAND_INF(RAND_INF_HF_NEAR_MARKET_TREE_2)
|
||||||
DEFINE_RAND_INF(RAND_INF_HF_TREE_NEAR_HC_GROTTO_3)
|
DEFINE_RAND_INF(RAND_INF_HF_NEAR_MARKET_TREE_3)
|
||||||
DEFINE_RAND_INF(RAND_INF_HF_NORTHWEST_TREE_1)
|
DEFINE_RAND_INF(RAND_INF_HF_NORTHWEST_TREE_1)
|
||||||
DEFINE_RAND_INF(RAND_INF_HF_NORTHWEST_TREE_2)
|
DEFINE_RAND_INF(RAND_INF_HF_NORTHWEST_TREE_2)
|
||||||
DEFINE_RAND_INF(RAND_INF_HF_NORTHWEST_TREE_3)
|
DEFINE_RAND_INF(RAND_INF_HF_NORTHWEST_TREE_3)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue