mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-19 21:03:42 -07:00
Removed LocationAccess::CanBuy and added GetCheckPrice.
This commit is contained in:
parent
e8e6727409
commit
614c91f55f
23 changed files with 134 additions and 137 deletions
|
@ -413,6 +413,8 @@ void ApplyOrStoreItem(Rando::ItemLocation* loc, GetAccessibleLocationsStruct& ga
|
|||
// Adds the contents of a location to the current progression and optionally playthrough
|
||||
bool AddCheckToLogic(LocationAccess& locPair, GetAccessibleLocationsStruct& gals, RandomizerGet ignore,
|
||||
bool stopOnBeatable, Region* parentRegion, bool addToPlaythrough = false) {
|
||||
logic->CurrentCheckKey = locPair.GetLocation();
|
||||
|
||||
auto ctx = Rando::Context::GetInstance();
|
||||
StartPerformanceTimer(PT_LOCATION_LOGIC);
|
||||
RandomizerCheck loc = locPair.GetLocation();
|
||||
|
@ -459,10 +461,12 @@ bool AddCheckToLogic(LocationAccess& locPair, GetAccessibleLocationsStruct& gals
|
|||
}
|
||||
// All we care about is if the game is beatable, used to pare down playthrough
|
||||
if (location->GetPlacedRandomizerGet() == RG_TRIFORCE && stopOnBeatable) {
|
||||
logic->CurrentCheckKey = RC_UNKNOWN_CHECK;
|
||||
StopPerformanceTimer(PT_LOCATION_LOGIC);
|
||||
return true; // Return early for efficiency
|
||||
}
|
||||
}
|
||||
logic->CurrentCheckKey = RC_UNKNOWN_CHECK;
|
||||
StopPerformanceTimer(PT_LOCATION_LOGIC);
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ bool LocationAccess::ConditionsMet(Region* parentRegion, bool calculatingAvailab
|
|||
conditionsMet = true;
|
||||
}
|
||||
|
||||
return conditionsMet && CanBuy(calculatingAvailableChecks);
|
||||
return conditionsMet;
|
||||
}
|
||||
|
||||
static uint16_t GetMinimumPrice(const Rando::Location* loc) {
|
||||
|
@ -102,24 +102,19 @@ static uint16_t GetMinimumPrice(const Rando::Location* loc) {
|
|||
}
|
||||
}
|
||||
|
||||
bool LocationAccess::CanBuy(bool calculatingAvailableChecks) const {
|
||||
const auto& loc = Rando::StaticData::GetLocation(location);
|
||||
const auto& itemLoc = OTRGlobals::Instance->gRandoContext->GetItemLocation(location);
|
||||
uint16_t GetCheckPrice(RandomizerCheck check /* = RC_UNKNOWN_CHECK */) {
|
||||
RandomizerCheck rc = check != RC_UNKNOWN_CHECK ? check : logic->CurrentCheckKey;
|
||||
assert(rc != RC_UNKNOWN_CHECK);
|
||||
const auto& loc = Rando::StaticData::GetLocation(rc);
|
||||
assert(loc->GetRCType() == RCTYPE_SHOP || loc->GetRCType() == RCTYPE_SCRUB || loc->GetRCType() == RCTYPE_MERCHANT);
|
||||
const auto& itemLoc = OTRGlobals::Instance->gRandoContext->GetItemLocation(rc);
|
||||
|
||||
if (loc->GetRCType() == RCTYPE_SHOP || loc->GetRCType() == RCTYPE_SCRUB || loc->GetRCType() == RCTYPE_MERCHANT) {
|
||||
// Checks should only be identified while playing
|
||||
if (calculatingAvailableChecks && itemLoc->GetCheckStatus() != RCSHOW_IDENTIFIED) {
|
||||
return CanBuyAnother(GetMinimumPrice(loc));
|
||||
} else {
|
||||
return CanBuyAnother(itemLoc->GetPrice());
|
||||
}
|
||||
// Checks should only be identified while playing
|
||||
if (logic->CalculatingAvailableChecks && itemLoc->GetCheckStatus() != RCSHOW_IDENTIFIED) {
|
||||
return CanBuyAnother(GetMinimumPrice(loc));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CanBuyAnother(RandomizerCheck rc) {
|
||||
return CanBuyAnother(ctx->GetItemLocation(rc)->GetPrice());
|
||||
return CanBuyAnother(itemLoc->GetPrice());
|
||||
}
|
||||
|
||||
bool CanBuyAnother(uint16_t price) {
|
||||
|
|
|
@ -91,13 +91,10 @@ class LocationAccess {
|
|||
RandomizerCheck location;
|
||||
ConditionFn condition_function;
|
||||
std::string condition_str;
|
||||
|
||||
// Makes sure shop locations are buyable
|
||||
bool CanBuy(bool calculatingAvailableChecks) const;
|
||||
};
|
||||
|
||||
uint16_t GetCheckPrice(RandomizerCheck check = RC_UNKNOWN_CHECK);
|
||||
bool CanBuyAnother(uint16_t price);
|
||||
bool CanBuyAnother(RandomizerCheck rc);
|
||||
|
||||
namespace Rando {
|
||||
class Entrance;
|
||||
|
|
|
@ -407,7 +407,7 @@ void RegionTable_Init_DekuTree() {
|
|||
EventAccess(&logic->PushedDekuBasementBlock, []{return true;}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_DEKU_TREE_MQ_DEKU_SCRUB, logic->CanStunDeku()),
|
||||
LOCATION(RC_DEKU_TREE_MQ_DEKU_SCRUB, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_DEKU_TREE_MQ_BASEMENT_UPPER_GRASS_1, logic->CanCutShrubs()),
|
||||
LOCATION(RC_DEKU_TREE_MQ_BASEMENT_UPPER_GRASS_2, logic->CanCutShrubs()),
|
||||
LOCATION(RC_DEKU_TREE_MQ_BASEMENT_UPPER_GRASS_3, logic->CanCutShrubs()),
|
||||
|
|
|
@ -28,10 +28,10 @@ void RegionTable_Init_DodongosCavern() {
|
|||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_DODONGOS_CAVERN_MAP_CHEST, logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET);),
|
||||
LOCATION(RC_DODONGOS_CAVERN_DEKU_SCRUB_LOBBY, logic->CanStunDeku() || logic->HasItem(RG_GORONS_BRACELET)),
|
||||
LOCATION(RC_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY, Here(RR_DODONGOS_CAVERN_LOBBY, []{return logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET);}) && logic->CallGossipFairy()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY_BIG, Here(RR_DODONGOS_CAVERN_LOBBY, []{return logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET);}) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_DODONGOS_CAVERN_GOSSIP_STONE, Here(RR_DODONGOS_CAVERN_LOBBY, []{return logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET);})),
|
||||
LOCATION(RC_DODONGOS_CAVERN_DEKU_SCRUB_LOBBY, (logic->CanStunDeku() || logic->HasItem(RG_GORONS_BRACELET)) && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY, Here(RR_DODONGOS_CAVERN_LOBBY, [] {return logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET); }) && logic->CallGossipFairy()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY_BIG, Here(RR_DODONGOS_CAVERN_LOBBY, [] {return logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET); }) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_DODONGOS_CAVERN_GOSSIP_STONE, Here(RR_DODONGOS_CAVERN_LOBBY, [] {return logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET); })),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_DODONGOS_CAVERN_BEGINNING, []{return true;}),
|
||||
|
@ -114,7 +114,7 @@ void RegionTable_Init_DodongosCavern() {
|
|||
|
||||
areaTable[RR_DODONGOS_CAVERN_NEAR_DODONGO_ROOM] = Region("Dodongos Cavern Near Dodongo Room", SCENE_DODONGOS_CAVERN, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_DODONGOS_CAVERN_DEKU_SCRUB_SIDE_ROOM_NEAR_DODONGOS, logic->CanStunDeku()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_DEKU_SCRUB_SIDE_ROOM_NEAR_DODONGOS, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_DODONGOS_CAVERN_DODONGO_ROOM, []{return true;}),
|
||||
|
@ -174,8 +174,8 @@ void RegionTable_Init_DodongosCavern() {
|
|||
|
||||
areaTable[RR_DODONGOS_CAVERN_2F_SIDE_ROOM] = Region("Dodongos Cavern 2F Side Room", SCENE_DODONGOS_CAVERN, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_LEFT, logic->CanStunDeku()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_RIGHT, logic->CanStunDeku()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_LEFT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_RIGHT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_DODONGOS_CAVERN_BOMB_ROOM_LOWER, []{return true;}),
|
||||
|
@ -285,8 +285,8 @@ void RegionTable_Init_DodongosCavern() {
|
|||
areaTable[RR_DODONGOS_CAVERN_MQ_LOBBY] = Region("Dodongos Cavern MQ Lobby", SCENE_DODONGOS_CAVERN, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_MAP_CHEST, logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET)),
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_REAR, logic->CanStunDeku()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_FRONT, logic->CanStunDeku()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_REAR, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_FRONT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_DODONGOS_CAVERN_MQ_BEGINNING, []{return true;}),
|
||||
|
@ -358,7 +358,7 @@ void RegionTable_Init_DodongosCavern() {
|
|||
|
||||
areaTable[RR_DODONGOS_CAVERN_MQ_STAIRS_UPPER] = Region("Dodongos Cavern MQ Stairs Upper", SCENE_DODONGOS_CAVERN, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_STAIRCASE, logic->CanStunDeku()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_STAIRCASE, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_UPPER_CRATE_1, logic->CanBreakCrates()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_UPPER_CRATE_2, logic->CanBreakCrates()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_UPPER_CRATE_3, logic->CanBreakCrates()),
|
||||
|
@ -478,7 +478,7 @@ void RegionTable_Init_DodongosCavern() {
|
|||
|
||||
areaTable[RR_DODONGOS_CAVERN_MQ_LOWER_RIGHT_SIDE] = Region("Dodongos Cavern MQ Lower Right Side", SCENE_DODONGOS_CAVERN, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_SIDE_ROOM_NEAR_LOWER_LIZALFOS, (logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET)) && logic->CanStunDeku()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_SIDE_ROOM_NEAR_LOWER_LIZALFOS, (logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET)) && logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2, logic->CanBreakPots()),
|
||||
LOCATION(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3, logic->CanBreakPots()),
|
||||
|
|
|
@ -38,10 +38,10 @@ void RegionTable_Init_GanonsCastle() {
|
|||
EventAccess(&logic->FreeFairies, []{return true;}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_GANONS_CASTLE_DEKU_SCRUB_CENTER_LEFT, logic->CanStunDeku()),
|
||||
LOCATION(RC_GANONS_CASTLE_DEKU_SCRUB_CENTER_RIGHT, logic->CanStunDeku()),
|
||||
LOCATION(RC_GANONS_CASTLE_DEKU_SCRUB_RIGHT, logic->CanStunDeku()),
|
||||
LOCATION(RC_GANONS_CASTLE_DEKU_SCRUB_LEFT, logic->CanStunDeku()),
|
||||
LOCATION(RC_GANONS_CASTLE_DEKU_SCRUB_CENTER_LEFT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GANONS_CASTLE_DEKU_SCRUB_CENTER_RIGHT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GANONS_CASTLE_DEKU_SCRUB_RIGHT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GANONS_CASTLE_DEKU_SCRUB_LEFT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GANONS_CASTLE_SCRUBS_FAIRY_1, true),
|
||||
LOCATION(RC_GANONS_CASTLE_SCRUBS_FAIRY_2, true),
|
||||
LOCATION(RC_GANONS_CASTLE_SCRUBS_FAIRY_3, true),
|
||||
|
@ -166,11 +166,11 @@ void RegionTable_Init_GanonsCastle() {
|
|||
EventAccess(&logic->FreeFairies, []{return true;}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_LEFT, logic->CanStunDeku()),
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER, logic->CanStunDeku()),
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT, logic->CanStunDeku()),
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_LEFT, logic->CanStunDeku()),
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_RIGHT, logic->CanStunDeku()),
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_LEFT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_LEFT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_RIGHT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_1, true),
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_2, true),
|
||||
LOCATION(RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_3, true),
|
||||
|
|
|
@ -28,7 +28,7 @@ void RegionTable_Init_JabuJabusBelly() {
|
|||
EventAccess(&logic->JabuWestTentacle, []{return logic->JabuRutoIn1F && logic->CanKillEnemy(RE_TENTACLE, ED_BOOMERANG);}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_JABU_JABUS_BELLY_DEKU_SCRUB, logic->HasItem(RG_BRONZE_SCALE) && (logic->IsChild || logic->HasItem(RG_SILVER_SCALE) || ctx->GetTrickOption(RT_JABU_ALCOVE_JUMP_DIVE) || logic->CanUse(RG_IRON_BOOTS)) && logic->CanStunDeku()),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_DEKU_SCRUB, logic->HasItem(RG_BRONZE_SCALE) && (logic->IsChild || logic->HasItem(RG_SILVER_SCALE) || ctx->GetTrickOption(RT_JABU_ALCOVE_JUMP_DIVE) || logic->CanUse(RG_IRON_BOOTS)) && logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
//We can kill the Stingers with ruto
|
||||
LOCATION(RC_JABU_JABUS_BELLY_BOOMERANG_CHEST, logic->JabuRutoIn1F),
|
||||
LOCATION(RC_JABU_JABUS_BELLY_MAP_CHEST, logic->JabuWestTentacle),
|
||||
|
|
|
@ -35,7 +35,7 @@ void RegionTable_Init_DeathMountainCrater() {
|
|||
|
||||
areaTable[RR_DMC_LADDER_AREA_NEARBY] = Region("DMC Ladder Region Nearby", SCENE_DEATH_MOUNTAIN_CRATER, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_DMC_DEKU_SCRUB, logic->IsChild && logic->CanStunDeku()),
|
||||
LOCATION(RC_DMC_DEKU_SCRUB, logic->IsChild && logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_DMC_UPPER_NEARBY, []{return logic->Hearts() >= 3;}),
|
||||
|
@ -127,9 +127,9 @@ void RegionTable_Init_DeathMountainCrater() {
|
|||
|
||||
areaTable[RR_DMC_HAMMER_GROTTO] = Region("DMC Hammer Grotto", SCENE_GROTTOS, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_DMC_DEKU_SCRUB_GROTTO_LEFT, logic->CanStunDeku()),
|
||||
LOCATION(RC_DMC_DEKU_SCRUB_GROTTO_RIGHT, logic->CanStunDeku()),
|
||||
LOCATION(RC_DMC_DEKU_SCRUB_GROTTO_CENTER, logic->CanStunDeku()),
|
||||
LOCATION(RC_DMC_DEKU_SCRUB_GROTTO_LEFT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_DMC_DEKU_SCRUB_GROTTO_RIGHT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_DMC_DEKU_SCRUB_GROTTO_CENTER, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_DMC_HAMMER_GROTTO_BEEHIVE, logic->CanBreakUpperBeehives()),
|
||||
}, {
|
||||
//Exits
|
||||
|
|
|
@ -68,8 +68,8 @@ void RegionTable_Init_DesertColossus() {
|
|||
|
||||
areaTable[RR_COLOSSUS_GROTTO] = Region("Colossus Grotto", SCENE_GROTTOS, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, logic->CanStunDeku()),
|
||||
LOCATION(RC_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, logic->CanStunDeku()),
|
||||
LOCATION(RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_COLOSSUS_GROTTO_BEEHIVE, logic->CanBreakUpperBeehives()),
|
||||
}, {
|
||||
//Exits
|
||||
|
|
|
@ -108,8 +108,8 @@ void RegionTable_Init_GerudoValley() {
|
|||
|
||||
areaTable[RR_GV_STORMS_GROTTO] = Region("GV Storms Grotto", SCENE_GROTTOS, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_GV_DEKU_SCRUB_GROTTO_REAR, logic->CanStunDeku()),
|
||||
LOCATION(RC_GV_DEKU_SCRUB_GROTTO_FRONT, logic->CanStunDeku()),
|
||||
LOCATION(RC_GV_DEKU_SCRUB_GROTTO_REAR, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GV_DEKU_SCRUB_GROTTO_FRONT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GV_DEKU_SCRUB_GROTTO_BEEHIVE, logic->CanBreakUpperBeehives()),
|
||||
}, {
|
||||
//Exits
|
||||
|
|
|
@ -26,7 +26,7 @@ void RegionTable_Init_GoronCity() {
|
|||
LOCATION(RC_GC_ROLLING_GORON_AS_ADULT, logic->StopGCRollingGoronAsAdult),
|
||||
LOCATION(RC_GC_GS_BOULDER_MAZE, logic->IsChild && logic->BlastOrSmash()),
|
||||
LOCATION(RC_GC_GS_CENTER_PLATFORM, logic->IsAdult && logic->CanAttack()),
|
||||
LOCATION(RC_GC_MEDIGORON, logic->IsAdult && (logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET))),
|
||||
LOCATION(RC_GC_MEDIGORON, logic->IsAdult && (logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET)) && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GC_MAZE_GOSSIP_STONE_FAIRY, (logic->BlastOrSmash() || logic->CanUse(RG_SILVER_GAUNTLETS)) && logic->CallGossipFairyExceptSuns()),
|
||||
LOCATION(RC_GC_MAZE_GOSSIP_STONE_FAIRY_BIG, (logic->BlastOrSmash() || logic->CanUse(RG_SILVER_GAUNTLETS)) && logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
LOCATION(RC_GC_MAZE_GOSSIP_STONE, logic->BlastOrSmash() || logic->CanUse(RG_SILVER_GAUNTLETS)),
|
||||
|
@ -90,14 +90,14 @@ void RegionTable_Init_GoronCity() {
|
|||
|
||||
areaTable[RR_GC_SHOP] = Region("GC Shop", SCENE_GORON_SHOP, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_GC_SHOP_ITEM_1, true),
|
||||
LOCATION(RC_GC_SHOP_ITEM_2, true),
|
||||
LOCATION(RC_GC_SHOP_ITEM_3, true),
|
||||
LOCATION(RC_GC_SHOP_ITEM_4, true),
|
||||
LOCATION(RC_GC_SHOP_ITEM_5, true),
|
||||
LOCATION(RC_GC_SHOP_ITEM_6, true),
|
||||
LOCATION(RC_GC_SHOP_ITEM_7, true),
|
||||
LOCATION(RC_GC_SHOP_ITEM_8, true),
|
||||
LOCATION(RC_GC_SHOP_ITEM_1, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GC_SHOP_ITEM_2, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GC_SHOP_ITEM_3, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GC_SHOP_ITEM_4, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GC_SHOP_ITEM_5, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GC_SHOP_ITEM_6, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GC_SHOP_ITEM_7, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GC_SHOP_ITEM_8, CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_GORON_CITY, []{return true;}),
|
||||
|
@ -105,9 +105,9 @@ void RegionTable_Init_GoronCity() {
|
|||
|
||||
areaTable[RR_GC_GROTTO] = Region("GC Grotto", SCENE_GROTTOS, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_GC_DEKU_SCRUB_GROTTO_LEFT, logic->CanStunDeku()),
|
||||
LOCATION(RC_GC_DEKU_SCRUB_GROTTO_RIGHT, logic->CanStunDeku()),
|
||||
LOCATION(RC_GC_DEKU_SCRUB_GROTTO_CENTER, logic->CanStunDeku()),
|
||||
LOCATION(RC_GC_DEKU_SCRUB_GROTTO_LEFT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GC_DEKU_SCRUB_GROTTO_RIGHT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GC_DEKU_SCRUB_GROTTO_CENTER, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_GC_GROTTO_BEEHIVE, logic->CanBreakUpperBeehives()),
|
||||
}, {
|
||||
//Exits
|
||||
|
|
|
@ -19,11 +19,11 @@ void RegionTable_Init_HauntedWasteland() {
|
|||
//Events
|
||||
EventAccess(&logic->FairyPot, []{return true;}),
|
||||
EventAccess(&logic->NutPot, []{return true;}),
|
||||
EventAccess(&logic->CarpetMerchant, []{return logic->HasItem(RG_ADULT_WALLET) && CanBuyAnother(RC_WASTELAND_BOMBCHU_SALESMAN) && (logic->CanJumpslash() || logic->CanUse(RG_HOVER_BOOTS));}),
|
||||
EventAccess(&logic->CarpetMerchant, []{return logic->HasItem(RG_ADULT_WALLET) && CanBuyAnother(GetCheckPrice(RC_WASTELAND_BOMBCHU_SALESMAN)) && (logic->CanJumpslash() || logic->CanUse(RG_HOVER_BOOTS));}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_WASTELAND_CHEST, logic->HasFireSource()),
|
||||
LOCATION(RC_WASTELAND_BOMBCHU_SALESMAN, logic->CanJumpslash() || logic->CanUse(RG_HOVER_BOOTS)),
|
||||
LOCATION(RC_WASTELAND_BOMBCHU_SALESMAN, (logic->CanJumpslash() || logic->CanUse(RG_HOVER_BOOTS)) && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_WASTELAND_GS, logic->HookshotOrBoomerang()),
|
||||
LOCATION(RC_WASTELAND_NEAR_GS_POT_1, logic->CanBreakPots()),
|
||||
LOCATION(RC_WASTELAND_NEAR_GS_POT_2, logic->CanBreakPots()),
|
||||
|
|
|
@ -119,7 +119,7 @@ void RegionTable_Init_HyruleField() {
|
|||
|
||||
areaTable[RR_HF_INSIDE_FENCE_GROTTO] = Region("HF Inside Fence Grotto", SCENE_GROTTOS, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_HF_DEKU_SCRUB_GROTTO, logic->CanStunDeku()),
|
||||
LOCATION(RC_HF_DEKU_SCRUB_GROTTO, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_HF_INSIDE_FENCE_GROTTO_BEEHIVE, logic->CanBreakLowerBeehives()),
|
||||
LOCATION(RC_HF_FENCE_GROTTO_STORMS_FAIRY, logic->CanUse(RG_SONG_OF_STORMS)),
|
||||
}, {
|
||||
|
|
|
@ -180,14 +180,14 @@ void RegionTable_Init_Kakariko() {
|
|||
|
||||
areaTable[RR_KAK_BAZAAR] = Region("Kak Bazaar", SCENE_BAZAAR, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_1, true),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_2, true),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_3, true),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_4, true),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_5, true),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_6, true),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_7, true),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_8, true),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_1, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_2, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_3, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_4, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_5, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_6, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_7, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_BAZAAR_ITEM_8, CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_KAKARIKO_VILLAGE, []{return true;}),
|
||||
|
@ -203,14 +203,14 @@ void RegionTable_Init_Kakariko() {
|
|||
|
||||
areaTable[RR_KAK_POTION_SHOP_FRONT] = Region("Kak Potion Shop Front", SCENE_POTION_SHOP_KAKARIKO, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_1, logic->IsAdult),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_2, logic->IsAdult),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_3, logic->IsAdult),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_4, logic->IsAdult),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_5, logic->IsAdult),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_6, logic->IsAdult),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_7, logic->IsAdult),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_8, logic->IsAdult),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_1, logic->IsAdult && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_2, logic->IsAdult && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_3, logic->IsAdult && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_4, logic->IsAdult && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_5, logic->IsAdult && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_6, logic->IsAdult && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_7, logic->IsAdult && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KAK_POTION_SHOP_ITEM_8, logic->IsAdult && CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_KAKARIKO_VILLAGE, []{return true;}),
|
||||
|
@ -229,7 +229,7 @@ void RegionTable_Init_Kakariko() {
|
|||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_KAK_TRADE_ODD_MUSHROOM, logic->IsAdult && logic->CanUse(RG_ODD_MUSHROOM)),
|
||||
LOCATION(RC_KAK_GRANNYS_SHOP, logic->IsAdult && (logic->CanUse(RG_ODD_MUSHROOM) || logic->TradeQuestStep(RG_ODD_MUSHROOM))),
|
||||
LOCATION(RC_KAK_GRANNYS_SHOP, logic->IsAdult && (logic->CanUse(RG_ODD_MUSHROOM) || logic->TradeQuestStep(RG_ODD_MUSHROOM)) && CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
// Exits
|
||||
Entrance(RR_KAK_BACKYARD, []{return true;}),
|
||||
|
|
|
@ -159,14 +159,14 @@ void RegionTable_Init_KokiriForest() {
|
|||
|
||||
areaTable[RR_KF_KOKIRI_SHOP] = Region("KF Kokiri Shop", SCENE_KOKIRI_SHOP, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_KF_SHOP_ITEM_1, true),
|
||||
LOCATION(RC_KF_SHOP_ITEM_2, true),
|
||||
LOCATION(RC_KF_SHOP_ITEM_3, true),
|
||||
LOCATION(RC_KF_SHOP_ITEM_4, true),
|
||||
LOCATION(RC_KF_SHOP_ITEM_5, true),
|
||||
LOCATION(RC_KF_SHOP_ITEM_6, true),
|
||||
LOCATION(RC_KF_SHOP_ITEM_7, true),
|
||||
LOCATION(RC_KF_SHOP_ITEM_8, true),
|
||||
LOCATION(RC_KF_SHOP_ITEM_1, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KF_SHOP_ITEM_2, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KF_SHOP_ITEM_3, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KF_SHOP_ITEM_4, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KF_SHOP_ITEM_5, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KF_SHOP_ITEM_6, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KF_SHOP_ITEM_7, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_KF_SHOP_ITEM_8, CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_KOKIRI_FOREST, []{return true;}),
|
||||
|
|
|
@ -176,9 +176,9 @@ void RegionTable_Init_LakeHylia() {
|
|||
|
||||
areaTable[RR_LH_GROTTO] = Region("LH Grotto", SCENE_GROTTOS, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_LH_DEKU_SCRUB_GROTTO_LEFT, logic->CanStunDeku()),
|
||||
LOCATION(RC_LH_DEKU_SCRUB_GROTTO_RIGHT, logic->CanStunDeku()),
|
||||
LOCATION(RC_LH_DEKU_SCRUB_GROTTO_CENTER, logic->CanStunDeku()),
|
||||
LOCATION(RC_LH_DEKU_SCRUB_GROTTO_LEFT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_LH_DEKU_SCRUB_GROTTO_RIGHT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_LH_DEKU_SCRUB_GROTTO_CENTER, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_LH_GROTTO_BEEHIVE, logic->CanBreakUpperBeehives()),
|
||||
}, {
|
||||
//Exits
|
||||
|
|
|
@ -65,9 +65,9 @@ void RegionTable_Init_LonLonRanch() {
|
|||
|
||||
areaTable[RR_LLR_GROTTO] = Region("LLR Grotto", SCENE_GROTTOS, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_LLR_DEKU_SCRUB_GROTTO_LEFT, logic->CanStunDeku()),
|
||||
LOCATION(RC_LLR_DEKU_SCRUB_GROTTO_RIGHT, logic->CanStunDeku()),
|
||||
LOCATION(RC_LLR_DEKU_SCRUB_GROTTO_CENTER, logic->CanStunDeku()),
|
||||
LOCATION(RC_LLR_DEKU_SCRUB_GROTTO_LEFT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_LLR_DEKU_SCRUB_GROTTO_RIGHT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_LLR_DEKU_SCRUB_GROTTO_CENTER, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_LLR_GROTTO_BEEHIVE, logic->CanBreakUpperBeehives()),
|
||||
}, {
|
||||
//Exits
|
||||
|
|
|
@ -32,7 +32,7 @@ void RegionTable_Init_LostWoods() {
|
|||
//5 buttons => 100%
|
||||
LOCATION(RC_LW_OCARINA_MEMORY_GAME, logic->IsChild && logic->HasItem(RG_FAIRY_OCARINA) && logic->OcarinaButtons() >= 5),
|
||||
LOCATION(RC_LW_TARGET_IN_WOODS, logic->IsChild && logic->CanUse(RG_FAIRY_SLINGSHOT)),
|
||||
LOCATION(RC_LW_DEKU_SCRUB_NEAR_BRIDGE, logic->IsChild && logic->CanStunDeku()),
|
||||
LOCATION(RC_LW_DEKU_SCRUB_NEAR_BRIDGE, logic->IsChild && logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_LW_GS_BEAN_PATCH_NEAR_BRIDGE, logic->CanSpawnSoilSkull() && logic->CanAttack()),
|
||||
//RANDOTODO handle collecting some of these as you leave the shortcut from the other side
|
||||
LOCATION(RC_LW_SHORTCUT_RUPEE_1, logic->IsChild && (logic->HasItem(RG_SILVER_SCALE) || logic->CanUse(RG_IRON_BOOTS))),
|
||||
|
@ -68,8 +68,8 @@ void RegionTable_Init_LostWoods() {
|
|||
EventAccess(&logic->ButterflyFairy, []{return logic->CanUse(RG_STICKS);}),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT, logic->IsChild && logic->CanStunDeku()),
|
||||
LOCATION(RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT, logic->IsChild && logic->CanStunDeku()),
|
||||
LOCATION(RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT, logic->IsChild && logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT, logic->IsChild && logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_LW_GS_ABOVE_THEATER, logic->IsAdult && ((CanPlantBean(RR_LW_BEYOND_MIDO) && logic->CanAttack()) || (ctx->GetTrickOption(RT_LW_GS_BEAN) && logic->CanUse(RG_HOOKSHOT) && (logic->CanUse(RG_LONGSHOT) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_BOMBCHU_5) || logic->CanUse(RG_DINS_FIRE)))) && logic->CanGetNightTimeGS()),
|
||||
LOCATION(RC_LW_GS_BEAN_PATCH_NEAR_THEATER, logic->CanSpawnSoilSkull() && (logic->CanAttack() || (ctx->GetOption(RSK_SHUFFLE_SCRUBS).Is(RO_SCRUBS_OFF) && logic->CanReflectNuts()))),
|
||||
LOCATION(RC_LW_BOULDER_RUPEE, logic->BlastOrSmash()),
|
||||
|
@ -120,8 +120,8 @@ void RegionTable_Init_LostWoods() {
|
|||
|
||||
areaTable[RR_LW_SCRUBS_GROTTO] = Region("LW Scrubs Grotto", SCENE_GROTTOS, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_LW_DEKU_SCRUB_GROTTO_REAR, logic->CanStunDeku()),
|
||||
LOCATION(RC_LW_DEKU_SCRUB_GROTTO_FRONT, logic->CanStunDeku()),
|
||||
LOCATION(RC_LW_DEKU_SCRUB_GROTTO_REAR, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_LW_DEKU_SCRUB_GROTTO_FRONT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_LW_DEKU_SCRUB_GROTTO_BEEHIVE, logic->CanBreakUpperBeehives()),
|
||||
LOCATION(RC_LW_DEKU_SCRUB_GROTTO_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)),
|
||||
}, {
|
||||
|
|
|
@ -123,14 +123,14 @@ void RegionTable_Init_Market() {
|
|||
|
||||
areaTable[RR_MARKET_BAZAAR] = Region("Market Bazaar", SCENE_BAZAAR, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_1, true),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_2, true),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_3, true),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_4, true),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_5, true),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_6, true),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_7, true),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_8, true),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_1, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_2, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_3, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_4, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_5, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_6, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_7, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BAZAAR_ITEM_8, CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_THE_MARKET, []{return true;}),
|
||||
|
@ -176,14 +176,14 @@ void RegionTable_Init_Market() {
|
|||
|
||||
areaTable[RR_MARKET_POTION_SHOP] = Region("Market Potion Shop", SCENE_POTION_SHOP_MARKET, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_1, true),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_2, true),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_3, true),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_4, true),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_5, true),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_6, true),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_7, true),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_8, true),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_1, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_2, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_3, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_4, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_5, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_6, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_7, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_POTION_SHOP_ITEM_8, CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_THE_MARKET, []{return true;}),
|
||||
|
@ -210,14 +210,14 @@ void RegionTable_Init_Market() {
|
|||
|
||||
areaTable[RR_MARKET_BOMBCHU_SHOP] = Region("Market Bombchu Shop", SCENE_BOMBCHU_SHOP, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_1, true),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_2, true),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_3, true),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_4, true),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_5, true),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_6, true),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_7, true),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_8, true),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_1, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_2, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_3, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_4, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_5, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_6, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_7, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_MARKET_BOMBCHU_SHOP_ITEM_8, CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_MARKET_BACK_ALLEY, []{return true;}),
|
||||
|
|
|
@ -65,8 +65,8 @@ void RegionTable_Init_SacredForestMeadow() {
|
|||
|
||||
areaTable[RR_SFM_STORMS_GROTTO] = Region("SFM Storms Grotto", SCENE_GROTTOS, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_SFM_DEKU_SCRUB_GROTTO_REAR, logic->CanStunDeku()),
|
||||
LOCATION(RC_SFM_DEKU_SCRUB_GROTTO_FRONT, logic->CanStunDeku()),
|
||||
LOCATION(RC_SFM_DEKU_SCRUB_GROTTO_REAR, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_SFM_DEKU_SCRUB_GROTTO_FRONT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_SFM_STORMS_GROTTO_BEEHIVE, logic->CanBreakUpperBeehives()),
|
||||
}, {
|
||||
//Exits
|
||||
|
|
|
@ -64,14 +64,14 @@ void RegionTable_Init_ZorasDomain() {
|
|||
|
||||
areaTable[RR_ZD_SHOP] = Region("ZD Shop", SCENE_ZORA_SHOP, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_ZD_SHOP_ITEM_1, true),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_2, true),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_3, true),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_4, true),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_5, true),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_6, true),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_7, true),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_8, true),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_1, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_2, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_3, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_4, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_5, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_6, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_7, CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_ZD_SHOP_ITEM_8, CanBuyAnother(GetCheckPrice())),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_ZORAS_DOMAIN, []{return true;}),
|
||||
|
|
|
@ -121,8 +121,8 @@ void RegionTable_Init_ZoraRiver() {
|
|||
|
||||
areaTable[RR_ZR_STORMS_GROTTO] = Region("ZR Storms Grotto", SCENE_GROTTOS, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_ZR_DEKU_SCRUB_GROTTO_REAR, logic->CanStunDeku()),
|
||||
LOCATION(RC_ZR_DEKU_SCRUB_GROTTO_FRONT, logic->CanStunDeku()),
|
||||
LOCATION(RC_ZR_DEKU_SCRUB_GROTTO_REAR, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_ZR_DEKU_SCRUB_GROTTO_FRONT, logic->CanStunDeku() && CanBuyAnother(GetCheckPrice())),
|
||||
LOCATION(RC_ZR_STORMS_GROTTO_BEEHIVE, logic->CanBreakUpperBeehives()),
|
||||
}, {
|
||||
//Exits
|
||||
|
|
|
@ -110,6 +110,7 @@ class Logic {
|
|||
// Other
|
||||
bool AtDay = false;
|
||||
bool AtNight = false;
|
||||
RandomizerCheck CurrentCheckKey = RC_UNKNOWN_CHECK;
|
||||
|
||||
// Events
|
||||
bool ShowedMidoSwordAndShield = false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue