Makes the Own Dungeon, Any Dungeon, and Overworld options work.
This commit is contained in:
parent
8e28316664
commit
6cb373da1a
|
@ -863,6 +863,11 @@ static void RandomizeOwnDungeon(const Rando::DungeonInfo* dungeon) {
|
||||||
AddElementsToPool(dungeonItems, dungeonBossKey);
|
AddElementsToPool(dungeonItems, dungeonBossKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((ctx->GetOption(RSK_SHUFFLE_SILVER_RUPEES).Is(RO_SILVER_SHUFFLE_OWN_DUNGEON) && dungeon->HasSilverRupees())) {
|
||||||
|
auto silverRupees = FilterAndEraseFromPool(ItemPool, [dungeon](const RandomizerGet i){ return dungeon->ContainsSilverRupee(i); });
|
||||||
|
AddElementsToPool(dungeonItems, silverRupees);
|
||||||
|
}
|
||||||
|
|
||||||
//randomize boss key and small keys together for even distribution
|
//randomize boss key and small keys together for even distribution
|
||||||
AssumedFill(dungeonItems, dungeonLocations);
|
AssumedFill(dungeonItems, dungeonLocations);
|
||||||
|
|
||||||
|
@ -916,6 +921,14 @@ static void RandomizeDungeonItems() {
|
||||||
auto ganonBossKey = FilterAndEraseFromPool(ItemPool, [](const auto i) { return i == RG_GANONS_CASTLE_BOSS_KEY; });
|
auto ganonBossKey = FilterAndEraseFromPool(ItemPool, [](const auto i) { return i == RG_GANONS_CASTLE_BOSS_KEY; });
|
||||||
AddElementsToPool(overworldItems, ganonBossKey);
|
AddElementsToPool(overworldItems, ganonBossKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ctx->GetOption(RSK_SHUFFLE_SILVER_RUPEES).Is(RO_SILVER_SHUFFLE_ANY_DUNGEON)) {
|
||||||
|
auto silverRupees = FilterAndEraseFromPool(ItemPool, [dungeon](const RandomizerGet i) { return dungeon->ContainsSilverRupee(i); });
|
||||||
|
AddElementsToPool(anyDungeonItems, silverRupees);
|
||||||
|
} else if (ctx->GetOption(RSK_SHUFFLE_SILVER_RUPEES).Is(RO_SILVER_SHUFFLE_OVERWORLD)) {
|
||||||
|
auto silverRupees = FilterAndEraseFromPool(ItemPool, [dungeon](const RandomizerGet i){ return dungeon->ContainsSilverRupee(i); });
|
||||||
|
AddElementsToPool(overworldItems, silverRupees);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->GetOption(RSK_GERUDO_KEYS).Is(RO_GERUDO_KEYS_ANY_DUNGEON)) {
|
if (ctx->GetOption(RSK_GERUDO_KEYS).Is(RO_GERUDO_KEYS_ANY_DUNGEON)) {
|
||||||
|
|
|
@ -6,12 +6,15 @@
|
||||||
|
|
||||||
namespace Rando {
|
namespace Rando {
|
||||||
DungeonInfo::DungeonInfo(std::string name_, const RandomizerHintTextKey hintKey_, const RandomizerGet map_,
|
DungeonInfo::DungeonInfo(std::string name_, const RandomizerHintTextKey hintKey_, const RandomizerGet map_,
|
||||||
const RandomizerGet compass_, const RandomizerGet smallKey_, const RandomizerGet keyRing_,
|
const RandomizerGet compass_, const RandomizerGet smallKey_, const RandomizerGet keyRing_,
|
||||||
const RandomizerGet bossKey_, RandomizerArea area_, const uint8_t vanillaKeyCount_, const uint8_t mqKeyCount_,
|
const RandomizerGet bossKey_, std::unordered_set<RandomizerGet> vanillaSilverRupees_,
|
||||||
std::vector<RandomizerCheck> vanillaLocations_, std::vector<RandomizerCheck> mqLocations_,
|
std::unordered_set<RandomizerGet> mqSilverRupees_, RandomizerArea area_,
|
||||||
std::vector<RandomizerCheck> sharedLocations_, std::vector<RandomizerCheck> bossRoomLocations_)
|
const uint8_t vanillaKeyCount_, const uint8_t mqKeyCount_,
|
||||||
|
std::vector<RandomizerCheck> vanillaLocations_, std::vector<RandomizerCheck> mqLocations_,
|
||||||
|
std::vector<RandomizerCheck> sharedLocations_, std::vector<RandomizerCheck> bossRoomLocations_)
|
||||||
: name(std::move(name_)), hintKey(hintKey_), map(map_), compass(compass_), smallKey(smallKey_), keyRing(keyRing_),
|
: name(std::move(name_)), hintKey(hintKey_), map(map_), compass(compass_), smallKey(smallKey_), keyRing(keyRing_),
|
||||||
bossKey(bossKey_), area(area_), vanillaKeyCount(vanillaKeyCount_), mqKeyCount(mqKeyCount_),
|
bossKey(bossKey_), vanillaSilverRupees(std::move(vanillaSilverRupees_)), mqSilverRupees(std::move(mqSilverRupees_)),
|
||||||
|
area(area_), vanillaKeyCount(vanillaKeyCount_), mqKeyCount(mqKeyCount_),
|
||||||
vanillaLocations(std::move(vanillaLocations_)), mqLocations(std::move(mqLocations_)),
|
vanillaLocations(std::move(vanillaLocations_)), mqLocations(std::move(mqLocations_)),
|
||||||
sharedLocations(std::move(sharedLocations_)), bossRoomLocations(std::move(bossRoomLocations_)) {
|
sharedLocations(std::move(sharedLocations_)), bossRoomLocations(std::move(bossRoomLocations_)) {
|
||||||
}
|
}
|
||||||
|
@ -51,6 +54,20 @@ bool DungeonInfo::IsVanilla() const {
|
||||||
return !masterQuest;
|
return !masterQuest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DungeonInfo::ContainsSilverRupee(RandomizerGet rg) const {
|
||||||
|
if (masterQuest) {
|
||||||
|
return mqSilverRupees.contains(rg);
|
||||||
|
}
|
||||||
|
return vanillaSilverRupees.contains(rg);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DungeonInfo::HasSilverRupees() const {
|
||||||
|
if (masterQuest) {
|
||||||
|
return !mqSilverRupees.empty();
|
||||||
|
}
|
||||||
|
return !vanillaSilverRupees.empty();
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t DungeonInfo::GetSmallKeyCount() const {
|
uint8_t DungeonInfo::GetSmallKeyCount() const {
|
||||||
return masterQuest ? mqKeyCount : vanillaKeyCount;
|
return masterQuest ? mqKeyCount : vanillaKeyCount;
|
||||||
}
|
}
|
||||||
|
@ -152,7 +169,7 @@ std::vector<RandomizerCheck> DungeonInfo::GetEveryLocation() const {
|
||||||
|
|
||||||
Dungeons::Dungeons() {
|
Dungeons::Dungeons() {
|
||||||
dungeonList[DEKU_TREE] =
|
dungeonList[DEKU_TREE] =
|
||||||
DungeonInfo("Deku Tree", RHT_DEKU_TREE, RG_DEKU_TREE_MAP, RG_DEKU_TREE_COMPASS, RG_NONE, RG_NONE, RG_NONE, RA_DEKU_TREE, 0, 0,
|
DungeonInfo("Deku Tree", RHT_DEKU_TREE, RG_DEKU_TREE_MAP, RG_DEKU_TREE_COMPASS, RG_NONE, RG_NONE, RG_NONE, {}, {}, RA_DEKU_TREE, 0, 0,
|
||||||
{
|
{
|
||||||
// Vanilla Locations
|
// Vanilla Locations
|
||||||
RC_DEKU_TREE_MAP_CHEST,
|
RC_DEKU_TREE_MAP_CHEST,
|
||||||
|
@ -188,7 +205,7 @@ Dungeons::Dungeons() {
|
||||||
RC_QUEEN_GOHMA,
|
RC_QUEEN_GOHMA,
|
||||||
});
|
});
|
||||||
dungeonList[DODONGOS_CAVERN] = DungeonInfo("Dodongo's Cavern", RHT_DODONGOS_CAVERN, RG_DODONGOS_CAVERN_MAP,
|
dungeonList[DODONGOS_CAVERN] = DungeonInfo("Dodongo's Cavern", RHT_DODONGOS_CAVERN, RG_DODONGOS_CAVERN_MAP,
|
||||||
RG_DODONGOS_CAVERN_COMPASS, RG_NONE, RG_NONE, RG_NONE, RA_DODONGOS_CAVERN, 0, 0,
|
RG_DODONGOS_CAVERN_COMPASS, RG_NONE, RG_NONE, RG_NONE, {}, {RG_DODONGOS_CAVERN_MQ_SILVER_RUPEE}, RA_DODONGOS_CAVERN, 0, 0,
|
||||||
{
|
{
|
||||||
// Vanilla Locations
|
// Vanilla Locations
|
||||||
RC_DODONGOS_CAVERN_MAP_CHEST,
|
RC_DODONGOS_CAVERN_MAP_CHEST,
|
||||||
|
@ -237,7 +254,7 @@ Dungeons::Dungeons() {
|
||||||
RC_KING_DODONGO,
|
RC_KING_DODONGO,
|
||||||
});
|
});
|
||||||
dungeonList[JABU_JABUS_BELLY] = DungeonInfo("Jabu Jabu's Belly", RHT_JABU_JABUS_BELLY, RG_JABU_JABUS_BELLY_MAP,
|
dungeonList[JABU_JABUS_BELLY] = DungeonInfo("Jabu Jabu's Belly", RHT_JABU_JABUS_BELLY, RG_JABU_JABUS_BELLY_MAP,
|
||||||
RG_JABU_JABUS_BELLY_COMPASS, RG_NONE, RG_NONE, RG_NONE, RA_JABU_JABUS_BELLY, 0, 0,
|
RG_JABU_JABUS_BELLY_COMPASS, RG_NONE, RG_NONE, RG_NONE, {}, {}, RA_JABU_JABUS_BELLY, 0, 0,
|
||||||
{
|
{
|
||||||
// Vanilla Locations
|
// Vanilla Locations
|
||||||
RC_JABU_JABUS_BELLY_MAP_CHEST,
|
RC_JABU_JABUS_BELLY_MAP_CHEST,
|
||||||
|
@ -276,7 +293,7 @@ Dungeons::Dungeons() {
|
||||||
});
|
});
|
||||||
dungeonList[FOREST_TEMPLE] =
|
dungeonList[FOREST_TEMPLE] =
|
||||||
DungeonInfo("Forest Temple", RHT_FOREST_TEMPLE, RG_FOREST_TEMPLE_MAP, RG_FOREST_TEMPLE_COMPASS,
|
DungeonInfo("Forest Temple", RHT_FOREST_TEMPLE, RG_FOREST_TEMPLE_MAP, RG_FOREST_TEMPLE_COMPASS,
|
||||||
RG_FOREST_TEMPLE_SMALL_KEY, RG_FOREST_TEMPLE_KEY_RING, RG_FOREST_TEMPLE_BOSS_KEY, RA_FOREST_TEMPLE, 5, 6,
|
RG_FOREST_TEMPLE_SMALL_KEY, RG_FOREST_TEMPLE_KEY_RING, RG_FOREST_TEMPLE_BOSS_KEY, {}, {}, RA_FOREST_TEMPLE, 5, 6,
|
||||||
{
|
{
|
||||||
// Vanilla Locations
|
// Vanilla Locations
|
||||||
RC_FOREST_TEMPLE_FIRST_ROOM_CHEST,
|
RC_FOREST_TEMPLE_FIRST_ROOM_CHEST,
|
||||||
|
@ -326,7 +343,7 @@ Dungeons::Dungeons() {
|
||||||
});
|
});
|
||||||
dungeonList[FIRE_TEMPLE] =
|
dungeonList[FIRE_TEMPLE] =
|
||||||
DungeonInfo("Fire Temple", RHT_FIRE_TEMPLE, RG_FIRE_TEMPLE_MAP, RG_FIRE_TEMPLE_COMPASS,
|
DungeonInfo("Fire Temple", RHT_FIRE_TEMPLE, RG_FIRE_TEMPLE_MAP, RG_FIRE_TEMPLE_COMPASS,
|
||||||
RG_FIRE_TEMPLE_SMALL_KEY, RG_FIRE_TEMPLE_KEY_RING, RG_FIRE_TEMPLE_BOSS_KEY, RA_FIRE_TEMPLE, 8, 5,
|
RG_FIRE_TEMPLE_SMALL_KEY, RG_FIRE_TEMPLE_KEY_RING, RG_FIRE_TEMPLE_BOSS_KEY, {}, {}, RA_FIRE_TEMPLE, 8, 5,
|
||||||
{
|
{
|
||||||
// Vanilla Locations
|
// Vanilla Locations
|
||||||
RC_FIRE_TEMPLE_NEAR_BOSS_CHEST,
|
RC_FIRE_TEMPLE_NEAR_BOSS_CHEST,
|
||||||
|
@ -377,7 +394,7 @@ Dungeons::Dungeons() {
|
||||||
});
|
});
|
||||||
dungeonList[WATER_TEMPLE] =
|
dungeonList[WATER_TEMPLE] =
|
||||||
DungeonInfo("Water Temple", RHT_WATER_TEMPLE, RG_WATER_TEMPLE_MAP, RG_WATER_TEMPLE_COMPASS,
|
DungeonInfo("Water Temple", RHT_WATER_TEMPLE, RG_WATER_TEMPLE_MAP, RG_WATER_TEMPLE_COMPASS,
|
||||||
RG_WATER_TEMPLE_SMALL_KEY, RG_WATER_TEMPLE_KEY_RING, RG_WATER_TEMPLE_BOSS_KEY, RA_WATER_TEMPLE, 6, 2,
|
RG_WATER_TEMPLE_SMALL_KEY, RG_WATER_TEMPLE_KEY_RING, RG_WATER_TEMPLE_BOSS_KEY, {}, {}, RA_WATER_TEMPLE, 6, 2,
|
||||||
{
|
{
|
||||||
// Vanilla Locations
|
// Vanilla Locations
|
||||||
RC_WATER_TEMPLE_MAP_CHEST,
|
RC_WATER_TEMPLE_MAP_CHEST,
|
||||||
|
@ -418,7 +435,13 @@ Dungeons::Dungeons() {
|
||||||
});
|
});
|
||||||
dungeonList[SPIRIT_TEMPLE] =
|
dungeonList[SPIRIT_TEMPLE] =
|
||||||
DungeonInfo("Spirit Temple", RHT_SPIRIT_TEMPLE, RG_SPIRIT_TEMPLE_MAP, RG_SPIRIT_TEMPLE_COMPASS,
|
DungeonInfo("Spirit Temple", RHT_SPIRIT_TEMPLE, RG_SPIRIT_TEMPLE_MAP, RG_SPIRIT_TEMPLE_COMPASS,
|
||||||
RG_SPIRIT_TEMPLE_SMALL_KEY, RG_SPIRIT_TEMPLE_KEY_RING, RG_SPIRIT_TEMPLE_BOSS_KEY, RA_SPIRIT_TEMPLE, 5, 7,
|
RG_SPIRIT_TEMPLE_SMALL_KEY, RG_SPIRIT_TEMPLE_KEY_RING, RG_SPIRIT_TEMPLE_BOSS_KEY, {
|
||||||
|
RG_SPIRIT_CHILD_BLOCK_PUSH_SILVER_RUPEE,
|
||||||
|
RG_SPIRIT_BOULDER_SILVER_RUPEE,
|
||||||
|
RG_SPIRIT_CHILD_GATE_SILVER_RUPEE,
|
||||||
|
}, {
|
||||||
|
RG_SPIRIT_MQ_LOBBY_SILVER_RUPEE,
|
||||||
|
}, RA_SPIRIT_TEMPLE, 5, 7,
|
||||||
{
|
{
|
||||||
// Vanilla Locations
|
// Vanilla Locations
|
||||||
RC_SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST,
|
RC_SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST,
|
||||||
|
@ -504,7 +527,16 @@ Dungeons::Dungeons() {
|
||||||
});
|
});
|
||||||
dungeonList[SHADOW_TEMPLE] =
|
dungeonList[SHADOW_TEMPLE] =
|
||||||
DungeonInfo("Shadow Temple", RHT_SHADOW_TEMPLE, RG_SHADOW_TEMPLE_MAP, RG_SHADOW_TEMPLE_COMPASS,
|
DungeonInfo("Shadow Temple", RHT_SHADOW_TEMPLE, RG_SHADOW_TEMPLE_MAP, RG_SHADOW_TEMPLE_COMPASS,
|
||||||
RG_SHADOW_TEMPLE_SMALL_KEY, RG_SHADOW_TEMPLE_KEY_RING, RG_SHADOW_TEMPLE_BOSS_KEY, RA_SHADOW_TEMPLE, 5, 6,
|
RG_SHADOW_TEMPLE_SMALL_KEY, RG_SHADOW_TEMPLE_KEY_RING, RG_SHADOW_TEMPLE_BOSS_KEY, {
|
||||||
|
RG_SHADOW_SCYTHE_SILVER_RUPEE,
|
||||||
|
RG_SHADOW_OUTSIDE_SPIKE_RAIN_SILVER_RUPEE,
|
||||||
|
RG_SHADOW_INVISIBLE_SPIKES_SILVER_RUPEE,
|
||||||
|
}, {
|
||||||
|
RG_SHADOW_MQ_SCYTHE_SILVER_RUPEE,
|
||||||
|
RG_SHADOW_MQ_INVISIBLE_SCYTHE_SILVER_RUPEE,
|
||||||
|
RG_SHADOW_MQ_OUTSIDE_SPIKE_RAIN_SILVER_RUPEE,
|
||||||
|
RG_SHADOW_MQ_INVISIBLE_SPIKES_SILVER_RUPEE,
|
||||||
|
}, RA_SHADOW_TEMPLE, 5, 6,
|
||||||
{
|
{
|
||||||
// Vanilla Locations
|
// Vanilla Locations
|
||||||
RC_SHADOW_TEMPLE_MAP_CHEST,
|
RC_SHADOW_TEMPLE_MAP_CHEST,
|
||||||
|
@ -611,7 +643,9 @@ Dungeons::Dungeons() {
|
||||||
});
|
});
|
||||||
dungeonList[BOTTOM_OF_THE_WELL] = DungeonInfo(
|
dungeonList[BOTTOM_OF_THE_WELL] = DungeonInfo(
|
||||||
"Bottom of the Well", RHT_BOTTOM_OF_THE_WELL, RG_BOTTOM_OF_THE_WELL_MAP, RG_BOTTOM_OF_THE_WELL_COMPASS,
|
"Bottom of the Well", RHT_BOTTOM_OF_THE_WELL, RG_BOTTOM_OF_THE_WELL_MAP, RG_BOTTOM_OF_THE_WELL_COMPASS,
|
||||||
RG_BOTTOM_OF_THE_WELL_SMALL_KEY, RG_BOTTOM_OF_THE_WELL_KEY_RING, RG_NONE, RA_BOTTOM_OF_THE_WELL, 3, 2,
|
RG_BOTTOM_OF_THE_WELL_SMALL_KEY, RG_BOTTOM_OF_THE_WELL_KEY_RING, RG_NONE, {
|
||||||
|
RG_BOTTOM_OF_THE_WELL_SILVER_RUPEE,
|
||||||
|
}, {}, RA_BOTTOM_OF_THE_WELL, 3, 2,
|
||||||
{
|
{
|
||||||
// Vanilla Locations
|
// Vanilla Locations
|
||||||
RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST,
|
RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST,
|
||||||
|
@ -650,7 +684,10 @@ Dungeons::Dungeons() {
|
||||||
},
|
},
|
||||||
{}, {});
|
{}, {});
|
||||||
dungeonList[ICE_CAVERN] = DungeonInfo("Ice Cavern", RHT_ICE_CAVERN, RG_ICE_CAVERN_MAP, RG_ICE_CAVERN_COMPASS,
|
dungeonList[ICE_CAVERN] = DungeonInfo("Ice Cavern", RHT_ICE_CAVERN, RG_ICE_CAVERN_MAP, RG_ICE_CAVERN_COMPASS,
|
||||||
RG_NONE, RG_NONE, RG_NONE, RA_ICE_CAVERN, 0, 0,
|
RG_NONE, RG_NONE, RG_NONE,{
|
||||||
|
RG_ICE_CAVERN_SPINNING_BLADES_SILVER_RUPEE,
|
||||||
|
RG_ICE_CAVERN_SLIDING_SILVER_RUPEE,
|
||||||
|
}, {}, RA_ICE_CAVERN, 0, 0,
|
||||||
{
|
{
|
||||||
// Vanilla Locations
|
// Vanilla Locations
|
||||||
RC_ICE_CAVERN_MAP_CHEST,
|
RC_ICE_CAVERN_MAP_CHEST,
|
||||||
|
@ -688,7 +725,15 @@ Dungeons::Dungeons() {
|
||||||
{});
|
{});
|
||||||
dungeonList[GERUDO_TRAINING_GROUNDS] =
|
dungeonList[GERUDO_TRAINING_GROUNDS] =
|
||||||
DungeonInfo("Gerudo Training Grounds", RHT_GERUDO_TRAINING_GROUND, RG_NONE, RG_NONE,
|
DungeonInfo("Gerudo Training Grounds", RHT_GERUDO_TRAINING_GROUND, RG_NONE, RG_NONE,
|
||||||
RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY, RG_GERUDO_TRAINING_GROUNDS_KEY_RING, RG_NONE, RA_GERUDO_TRAINING_GROUND, 9, 3,
|
RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY, RG_GERUDO_TRAINING_GROUNDS_KEY_RING, RG_NONE, {
|
||||||
|
RG_GERUDO_TRAINING_GROUNDS_BOULDER_SILVER_RUPEE,
|
||||||
|
RG_GERUDO_TRAINING_GROUNDS_LAVA_SILVER_RUPEE,
|
||||||
|
RG_GERUDO_TRAINING_GROUNDS_TOILET_SILVER_RUPEE,
|
||||||
|
}, {
|
||||||
|
RG_GERUDO_TRAINING_GROUNDS_MQ_BOULDER_SILVER_RUPEE,
|
||||||
|
RG_GERUDO_TRAINING_GROUNDS_MQ_LAVA_SILVER_RUPEE,
|
||||||
|
RG_GERUDO_TRAINING_GROUNDS_MQ_TOILET_SILVER_RUPEE,
|
||||||
|
}, RA_GERUDO_TRAINING_GROUND, 9, 3,
|
||||||
{
|
{
|
||||||
// Vanilla Locations
|
// Vanilla Locations
|
||||||
RC_GERUDO_TRAINING_GROUND_LOBBY_LEFT_CHEST,
|
RC_GERUDO_TRAINING_GROUND_LOBBY_LEFT_CHEST,
|
||||||
|
@ -766,7 +811,16 @@ Dungeons::Dungeons() {
|
||||||
{}, {});
|
{}, {});
|
||||||
dungeonList[GANONS_CASTLE] =
|
dungeonList[GANONS_CASTLE] =
|
||||||
DungeonInfo("Ganon's Castle", RHT_GANONS_CASTLE, RG_NONE, RG_NONE, RG_GANONS_CASTLE_SMALL_KEY,
|
DungeonInfo("Ganon's Castle", RHT_GANONS_CASTLE, RG_NONE, RG_NONE, RG_GANONS_CASTLE_SMALL_KEY,
|
||||||
RG_GANONS_CASTLE_KEY_RING, RG_GANONS_CASTLE_BOSS_KEY, RA_GANONS_CASTLE, 2, 3,
|
RG_GANONS_CASTLE_KEY_RING, RG_GANONS_CASTLE_BOSS_KEY, {
|
||||||
|
RG_FOREST_TRIAL_SILVER_RUPEE,
|
||||||
|
RG_FIRE_TRIAL_SILVER_RUPEE,
|
||||||
|
RG_SPIRIT_TRIAL_SILVER_RUPEE,
|
||||||
|
RG_LIGHT_TRIAL_SILVER_RUPEE,
|
||||||
|
}, {
|
||||||
|
RG_FIRE_TRIAL_MQ_SILVER_RUPEE,
|
||||||
|
RG_WATER_TRIAL_MQ_SILVER_RUPEE,
|
||||||
|
RG_SHADOW_TRIAL_MQ_SILVER_RUPEE,
|
||||||
|
}, RA_GANONS_CASTLE, 2, 3,
|
||||||
{
|
{
|
||||||
// Vanilla Locations
|
// Vanilla Locations
|
||||||
RC_GANONS_CASTLE_FOREST_TRIAL_CHEST,
|
RC_GANONS_CASTLE_FOREST_TRIAL_CHEST,
|
||||||
|
|
|
@ -6,15 +6,17 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "nlohmann/json.hpp"
|
#include "nlohmann/json.hpp"
|
||||||
|
#include <unordered_set>
|
||||||
|
|
||||||
namespace Rando {
|
namespace Rando {
|
||||||
class DungeonInfo {
|
class DungeonInfo {
|
||||||
public:
|
public:
|
||||||
DungeonInfo(std::string name_, RandomizerHintTextKey hintKey_, RandomizerGet map_, RandomizerGet compass_,
|
DungeonInfo(std::string name_, RandomizerHintTextKey hintKey_, RandomizerGet map_, RandomizerGet compass_,
|
||||||
RandomizerGet smallKey_, RandomizerGet keyRing_, RandomizerGet bossKey_, RandomizerArea area_,
|
RandomizerGet smallKey_, RandomizerGet keyRing_, RandomizerGet bossKey_,
|
||||||
uint8_t vanillaKeyCount_, uint8_t mqKeyCount_, std::vector<RandomizerCheck> vanillaLocations_,
|
std::unordered_set<RandomizerGet> vanillaSilverRupees_, std::unordered_set<RandomizerGet> mqSilverRupees_,
|
||||||
std::vector<RandomizerCheck> mqLocations_, std::vector<RandomizerCheck> sharedLocations_,
|
RandomizerArea area_, uint8_t vanillaKeyCount_, uint8_t mqKeyCount_,
|
||||||
std::vector<RandomizerCheck> bossRoomLocations_);
|
std::vector<RandomizerCheck> vanillaLocations_, std::vector<RandomizerCheck> mqLocations_,
|
||||||
|
std::vector<RandomizerCheck> sharedLocations_, std::vector<RandomizerCheck> bossRoomLocations_);
|
||||||
DungeonInfo();
|
DungeonInfo();
|
||||||
~DungeonInfo();
|
~DungeonInfo();
|
||||||
|
|
||||||
|
@ -26,6 +28,8 @@ class DungeonInfo {
|
||||||
void ClearKeyRing();
|
void ClearKeyRing();
|
||||||
bool HasKeyRing() const;
|
bool HasKeyRing() const;
|
||||||
bool IsVanilla() const;
|
bool IsVanilla() const;
|
||||||
|
bool ContainsSilverRupee(RandomizerGet rg) const;
|
||||||
|
bool HasSilverRupees() const;
|
||||||
uint8_t GetSmallKeyCount() const;
|
uint8_t GetSmallKeyCount() const;
|
||||||
RandomizerHintTextKey GetHintKey() const;
|
RandomizerHintTextKey GetHintKey() const;
|
||||||
RandomizerArea GetArea() const;
|
RandomizerArea GetArea() const;
|
||||||
|
@ -50,6 +54,8 @@ class DungeonInfo {
|
||||||
RandomizerGet smallKey;
|
RandomizerGet smallKey;
|
||||||
RandomizerGet keyRing;
|
RandomizerGet keyRing;
|
||||||
RandomizerGet bossKey;
|
RandomizerGet bossKey;
|
||||||
|
std::unordered_set<RandomizerGet> vanillaSilverRupees;
|
||||||
|
std::unordered_set<RandomizerGet> mqSilverRupees;
|
||||||
uint8_t vanillaKeyCount{};
|
uint8_t vanillaKeyCount{};
|
||||||
uint8_t mqKeyCount{};
|
uint8_t mqKeyCount{};
|
||||||
bool masterQuest = false;
|
bool masterQuest = false;
|
||||||
|
|
Loading…
Reference in New Issue