mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-22 17:32:19 -05:00
fix own dungeon items on shuffled boss rooms (#2683)
This commit is contained in:
parent
330da0b5ec
commit
b47d538e62
@ -7,12 +7,14 @@
|
|||||||
|
|
||||||
namespace Dungeon {
|
namespace Dungeon {
|
||||||
|
|
||||||
DungeonInfo::DungeonInfo(std::string name_, uint32_t map_, uint32_t compass_, uint32_t smallKey_, uint32_t keyRing_,
|
DungeonInfo::DungeonInfo(std::string name_, uint32_t hintKey_, uint32_t map_, uint32_t compass_, uint32_t smallKey_,
|
||||||
uint32_t bossKey_, uint8_t vanillaKeyCount_, uint8_t mqKeyCount_,
|
uint32_t keyRing_, uint32_t bossKey_, uint8_t vanillaKeyCount_, uint8_t mqKeyCount_,
|
||||||
std::vector<uint32_t> vanillaLocations_,
|
std::vector<uint32_t> vanillaLocations_,
|
||||||
std::vector<uint32_t> mqLocations_,
|
std::vector<uint32_t> mqLocations_,
|
||||||
std::vector<uint32_t> sharedLocations_)
|
std::vector<uint32_t> sharedLocations_,
|
||||||
|
std::vector<uint32_t> bossRoomLocations_)
|
||||||
: name(std::move(name_)),
|
: name(std::move(name_)),
|
||||||
|
hintKey(hintKey_),
|
||||||
map(map_),
|
map(map_),
|
||||||
compass(compass_),
|
compass(compass_),
|
||||||
smallKey(smallKey_),
|
smallKey(smallKey_),
|
||||||
@ -22,10 +24,15 @@ DungeonInfo::DungeonInfo(std::string name_, uint32_t map_, uint32_t compass_, ui
|
|||||||
mqKeyCount(mqKeyCount_),
|
mqKeyCount(mqKeyCount_),
|
||||||
vanillaLocations(std::move(vanillaLocations_)),
|
vanillaLocations(std::move(vanillaLocations_)),
|
||||||
mqLocations(std::move(mqLocations_)),
|
mqLocations(std::move(mqLocations_)),
|
||||||
sharedLocations(std::move(sharedLocations_)) {}
|
sharedLocations(std::move(sharedLocations_)),
|
||||||
|
bossRoomLocations(std::move(bossRoomLocations_)) {}
|
||||||
|
|
||||||
DungeonInfo::~DungeonInfo() = default;
|
DungeonInfo::~DungeonInfo() = default;
|
||||||
|
|
||||||
|
uint32_t DungeonInfo::GetHintKey() const {
|
||||||
|
return hintKey;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t DungeonInfo::GetSmallKey() const {
|
uint32_t DungeonInfo::GetSmallKey() const {
|
||||||
return smallKey;
|
return smallKey;
|
||||||
}
|
}
|
||||||
@ -92,6 +99,7 @@ void DungeonInfo::PlaceVanillaSmallKeys() {
|
|||||||
std::vector<uint32_t> DungeonInfo::GetDungeonLocations() const {
|
std::vector<uint32_t> DungeonInfo::GetDungeonLocations() const {
|
||||||
auto locations = masterQuest ? mqLocations : vanillaLocations;
|
auto locations = masterQuest ? mqLocations : vanillaLocations;
|
||||||
AddElementsToPool(locations, sharedLocations);
|
AddElementsToPool(locations, sharedLocations);
|
||||||
|
AddElementsToPool(locations, bossRoomLocations);
|
||||||
return locations;
|
return locations;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,10 +108,11 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
auto locations = vanillaLocations;
|
auto locations = vanillaLocations;
|
||||||
AddElementsToPool(locations, mqLocations);
|
AddElementsToPool(locations, mqLocations);
|
||||||
AddElementsToPool(locations, sharedLocations);
|
AddElementsToPool(locations, sharedLocations);
|
||||||
|
AddElementsToPool(locations, bossRoomLocations);
|
||||||
return locations;
|
return locations;
|
||||||
}
|
}
|
||||||
|
|
||||||
DungeonInfo DekuTree = DungeonInfo("Deku Tree", DEKU_TREE_MAP, DEKU_TREE_COMPASS, NONE, NONE, NONE, 0, 0, {
|
DungeonInfo DekuTree = DungeonInfo("Deku Tree", DEKU_TREE, DEKU_TREE_MAP, DEKU_TREE_COMPASS, NONE, NONE, NONE, 0, 0, {
|
||||||
//Vanilla Locations
|
//Vanilla Locations
|
||||||
DEKU_TREE_MAP_CHEST,
|
DEKU_TREE_MAP_CHEST,
|
||||||
DEKU_TREE_COMPASS_CHEST,
|
DEKU_TREE_COMPASS_CHEST,
|
||||||
@ -129,13 +138,15 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
DEKU_TREE_MQ_GS_COMPASS_ROOM,
|
DEKU_TREE_MQ_GS_COMPASS_ROOM,
|
||||||
DEKU_TREE_MQ_GS_BASEMENT_GRAVES_ROOM,
|
DEKU_TREE_MQ_GS_BASEMENT_GRAVES_ROOM,
|
||||||
DEKU_TREE_MQ_GS_BASEMENT_BACK_ROOM,
|
DEKU_TREE_MQ_GS_BASEMENT_BACK_ROOM,
|
||||||
}, {
|
},
|
||||||
//Shared Locations
|
{},
|
||||||
|
{
|
||||||
|
// Boss Room Locations
|
||||||
DEKU_TREE_QUEEN_GOHMA_HEART,
|
DEKU_TREE_QUEEN_GOHMA_HEART,
|
||||||
QUEEN_GOHMA,
|
QUEEN_GOHMA,
|
||||||
});
|
});
|
||||||
|
|
||||||
DungeonInfo DodongosCavern = DungeonInfo("Dodongo's Cavern", DODONGOS_CAVERN_MAP, DODONGOS_CAVERN_COMPASS, NONE, NONE, NONE, 0, 0, {
|
DungeonInfo DodongosCavern = DungeonInfo("Dodongo's Cavern", DODONGOS_CAVERN, DODONGOS_CAVERN_MAP, DODONGOS_CAVERN_COMPASS, NONE, NONE, NONE, 0, 0, {
|
||||||
//Vanilla Locations
|
//Vanilla Locations
|
||||||
DODONGOS_CAVERN_MAP_CHEST,
|
DODONGOS_CAVERN_MAP_CHEST,
|
||||||
DODONGOS_CAVERN_COMPASS_CHEST,
|
DODONGOS_CAVERN_COMPASS_CHEST,
|
||||||
@ -168,14 +179,16 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
DODONGOS_CAVERN_MQ_GS_LIZALFOS_ROOM,
|
DODONGOS_CAVERN_MQ_GS_LIZALFOS_ROOM,
|
||||||
DODONGOS_CAVERN_MQ_GS_LARVAE_ROOM,
|
DODONGOS_CAVERN_MQ_GS_LARVAE_ROOM,
|
||||||
DODONGOS_CAVERN_MQ_GS_BACK_AREA,
|
DODONGOS_CAVERN_MQ_GS_BACK_AREA,
|
||||||
}, {
|
},
|
||||||
//Shared Locations
|
{},
|
||||||
|
{
|
||||||
|
// Boss Room Locations
|
||||||
DODONGOS_CAVERN_BOSS_ROOM_CHEST,
|
DODONGOS_CAVERN_BOSS_ROOM_CHEST,
|
||||||
DODONGOS_CAVERN_KING_DODONGO_HEART,
|
DODONGOS_CAVERN_KING_DODONGO_HEART,
|
||||||
KING_DODONGO,
|
KING_DODONGO,
|
||||||
});
|
});
|
||||||
|
|
||||||
DungeonInfo JabuJabusBelly = DungeonInfo("Jabu Jabu's Belly", JABU_JABUS_BELLY_MAP, JABU_JABUS_BELLY_COMPASS, NONE, NONE, NONE, 0, 0, {
|
DungeonInfo JabuJabusBelly = DungeonInfo("Jabu Jabu's Belly", JABU_JABUS_BELLY, JABU_JABUS_BELLY_MAP, JABU_JABUS_BELLY_COMPASS, NONE, NONE, NONE, 0, 0, {
|
||||||
//Vanilla Locations
|
//Vanilla Locations
|
||||||
JABU_JABUS_BELLY_MAP_CHEST,
|
JABU_JABUS_BELLY_MAP_CHEST,
|
||||||
JABU_JABUS_BELLY_COMPASS_CHEST,
|
JABU_JABUS_BELLY_COMPASS_CHEST,
|
||||||
@ -203,13 +216,15 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM,
|
JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM,
|
||||||
JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM,
|
JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM,
|
||||||
JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS,
|
JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS,
|
||||||
}, {
|
},
|
||||||
//Shared Locations
|
{},
|
||||||
|
{
|
||||||
|
// Boss Room Locations
|
||||||
JABU_JABUS_BELLY_BARINADE_HEART,
|
JABU_JABUS_BELLY_BARINADE_HEART,
|
||||||
BARINADE,
|
BARINADE,
|
||||||
});
|
});
|
||||||
|
|
||||||
DungeonInfo ForestTemple = DungeonInfo("Forest Temple", FOREST_TEMPLE_MAP, FOREST_TEMPLE_COMPASS, FOREST_TEMPLE_SMALL_KEY, FOREST_TEMPLE_KEY_RING, FOREST_TEMPLE_BOSS_KEY, 5, 6, {
|
DungeonInfo ForestTemple = DungeonInfo("Forest Temple", FOREST_TEMPLE, FOREST_TEMPLE_MAP, FOREST_TEMPLE_COMPASS, FOREST_TEMPLE_SMALL_KEY, FOREST_TEMPLE_KEY_RING, FOREST_TEMPLE_BOSS_KEY, 5, 6, {
|
||||||
//Vanilla Locations
|
//Vanilla Locations
|
||||||
FOREST_TEMPLE_FIRST_ROOM_CHEST,
|
FOREST_TEMPLE_FIRST_ROOM_CHEST,
|
||||||
FOREST_TEMPLE_FIRST_STALFOS_CHEST,
|
FOREST_TEMPLE_FIRST_STALFOS_CHEST,
|
||||||
@ -248,13 +263,15 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
FOREST_TEMPLE_MQ_GS_RAISED_ISLAND_COURTYARD,
|
FOREST_TEMPLE_MQ_GS_RAISED_ISLAND_COURTYARD,
|
||||||
FOREST_TEMPLE_MQ_GS_LEVEL_ISLAND_COURTYARD,
|
FOREST_TEMPLE_MQ_GS_LEVEL_ISLAND_COURTYARD,
|
||||||
FOREST_TEMPLE_MQ_GS_WELL,
|
FOREST_TEMPLE_MQ_GS_WELL,
|
||||||
}, {
|
},
|
||||||
//Shared Locations
|
{},
|
||||||
|
{
|
||||||
|
// Boss Room Locations
|
||||||
FOREST_TEMPLE_PHANTOM_GANON_HEART,
|
FOREST_TEMPLE_PHANTOM_GANON_HEART,
|
||||||
PHANTOM_GANON,
|
PHANTOM_GANON,
|
||||||
});
|
});
|
||||||
|
|
||||||
DungeonInfo FireTemple = DungeonInfo("Fire Temple", FIRE_TEMPLE_MAP, FIRE_TEMPLE_COMPASS, FIRE_TEMPLE_SMALL_KEY, FIRE_TEMPLE_KEY_RING, FIRE_TEMPLE_BOSS_KEY, 8, 5, {
|
DungeonInfo FireTemple = DungeonInfo("Fire Temple", FIRE_TEMPLE, FIRE_TEMPLE_MAP, FIRE_TEMPLE_COMPASS, FIRE_TEMPLE_SMALL_KEY, FIRE_TEMPLE_KEY_RING, FIRE_TEMPLE_BOSS_KEY, 8, 5, {
|
||||||
//Vanilla Locations
|
//Vanilla Locations
|
||||||
FIRE_TEMPLE_NEAR_BOSS_CHEST,
|
FIRE_TEMPLE_NEAR_BOSS_CHEST,
|
||||||
FIRE_TEMPLE_FLARE_DANCER_CHEST,
|
FIRE_TEMPLE_FLARE_DANCER_CHEST,
|
||||||
@ -294,13 +311,15 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
FIRE_TEMPLE_MQ_GS_BIG_LAVA_ROOM_OPEN_DOOR,
|
FIRE_TEMPLE_MQ_GS_BIG_LAVA_ROOM_OPEN_DOOR,
|
||||||
FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM,
|
FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM,
|
||||||
FIRE_TEMPLE_MQ_GS_SKULL_ON_FIRE,
|
FIRE_TEMPLE_MQ_GS_SKULL_ON_FIRE,
|
||||||
}, {
|
},
|
||||||
//Shared Locations
|
{},
|
||||||
|
{
|
||||||
|
// Boos Room Locations
|
||||||
FIRE_TEMPLE_VOLVAGIA_HEART,
|
FIRE_TEMPLE_VOLVAGIA_HEART,
|
||||||
VOLVAGIA,
|
VOLVAGIA,
|
||||||
});
|
});
|
||||||
|
|
||||||
DungeonInfo WaterTemple = DungeonInfo("Water Temple", WATER_TEMPLE_MAP, WATER_TEMPLE_COMPASS, WATER_TEMPLE_SMALL_KEY, WATER_TEMPLE_KEY_RING, WATER_TEMPLE_BOSS_KEY, 6, 2, {
|
DungeonInfo WaterTemple = DungeonInfo("Water Temple", WATER_TEMPLE, WATER_TEMPLE_MAP, WATER_TEMPLE_COMPASS, WATER_TEMPLE_SMALL_KEY, WATER_TEMPLE_KEY_RING, WATER_TEMPLE_BOSS_KEY, 6, 2, {
|
||||||
//Vanilla Locations
|
//Vanilla Locations
|
||||||
WATER_TEMPLE_MAP_CHEST,
|
WATER_TEMPLE_MAP_CHEST,
|
||||||
WATER_TEMPLE_COMPASS_CHEST,
|
WATER_TEMPLE_COMPASS_CHEST,
|
||||||
@ -330,13 +349,15 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
WATER_TEMPLE_MQ_GS_LIZALFOS_HALLWAY,
|
WATER_TEMPLE_MQ_GS_LIZALFOS_HALLWAY,
|
||||||
WATER_TEMPLE_MQ_GS_RIVER,
|
WATER_TEMPLE_MQ_GS_RIVER,
|
||||||
WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH,
|
WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH,
|
||||||
}, {
|
},
|
||||||
//Shared Locations
|
{},
|
||||||
|
{
|
||||||
|
// Boss Room Locations
|
||||||
WATER_TEMPLE_MORPHA_HEART,
|
WATER_TEMPLE_MORPHA_HEART,
|
||||||
MORPHA,
|
MORPHA,
|
||||||
});
|
});
|
||||||
|
|
||||||
DungeonInfo SpiritTemple = DungeonInfo("Spirit Temple", SPIRIT_TEMPLE_MAP, SPIRIT_TEMPLE_COMPASS, SPIRIT_TEMPLE_SMALL_KEY, SPIRIT_TEMPLE_KEY_RING, SPIRIT_TEMPLE_BOSS_KEY, 5, 7, {
|
DungeonInfo SpiritTemple = DungeonInfo("Spirit Temple", SPIRIT_TEMPLE, SPIRIT_TEMPLE_MAP, SPIRIT_TEMPLE_COMPASS, SPIRIT_TEMPLE_SMALL_KEY, SPIRIT_TEMPLE_KEY_RING, SPIRIT_TEMPLE_BOSS_KEY, 5, 7, {
|
||||||
//Vanilla Locations
|
//Vanilla Locations
|
||||||
SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST,
|
SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST,
|
||||||
SPIRIT_TEMPLE_CHILD_EARLY_TORCHES_CHEST,
|
SPIRIT_TEMPLE_CHILD_EARLY_TORCHES_CHEST,
|
||||||
@ -391,11 +412,13 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
//Shared Locations
|
//Shared Locations
|
||||||
SPIRIT_TEMPLE_SILVER_GAUNTLETS_CHEST,
|
SPIRIT_TEMPLE_SILVER_GAUNTLETS_CHEST,
|
||||||
SPIRIT_TEMPLE_MIRROR_SHIELD_CHEST,
|
SPIRIT_TEMPLE_MIRROR_SHIELD_CHEST,
|
||||||
|
}, {
|
||||||
|
// Boss Room Locations
|
||||||
SPIRIT_TEMPLE_TWINROVA_HEART,
|
SPIRIT_TEMPLE_TWINROVA_HEART,
|
||||||
TWINROVA,
|
TWINROVA,
|
||||||
});
|
});
|
||||||
|
|
||||||
DungeonInfo ShadowTemple = DungeonInfo("Shadow Temple", SHADOW_TEMPLE_MAP, SHADOW_TEMPLE_COMPASS, SHADOW_TEMPLE_SMALL_KEY, SHADOW_TEMPLE_KEY_RING, SHADOW_TEMPLE_BOSS_KEY, 5, 6, {
|
DungeonInfo ShadowTemple = DungeonInfo("Shadow Temple", SHADOW_TEMPLE, SHADOW_TEMPLE_MAP, SHADOW_TEMPLE_COMPASS, SHADOW_TEMPLE_SMALL_KEY, SHADOW_TEMPLE_KEY_RING, SHADOW_TEMPLE_BOSS_KEY, 5, 6, {
|
||||||
//Vanilla Locations
|
//Vanilla Locations
|
||||||
SHADOW_TEMPLE_MAP_CHEST,
|
SHADOW_TEMPLE_MAP_CHEST,
|
||||||
SHADOW_TEMPLE_HOVER_BOOTS_CHEST,
|
SHADOW_TEMPLE_HOVER_BOOTS_CHEST,
|
||||||
@ -446,13 +469,15 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
SHADOW_TEMPLE_MQ_GS_AFTER_WIND,
|
SHADOW_TEMPLE_MQ_GS_AFTER_WIND,
|
||||||
SHADOW_TEMPLE_MQ_GS_AFTER_SHIP,
|
SHADOW_TEMPLE_MQ_GS_AFTER_SHIP,
|
||||||
SHADOW_TEMPLE_MQ_GS_NEAR_BOSS,
|
SHADOW_TEMPLE_MQ_GS_NEAR_BOSS,
|
||||||
}, {
|
},
|
||||||
//Shared Locations
|
{},
|
||||||
|
{
|
||||||
|
// Boss Room Locations
|
||||||
SHADOW_TEMPLE_BONGO_BONGO_HEART,
|
SHADOW_TEMPLE_BONGO_BONGO_HEART,
|
||||||
BONGO_BONGO,
|
BONGO_BONGO,
|
||||||
});
|
});
|
||||||
|
|
||||||
DungeonInfo BottomOfTheWell = DungeonInfo("Bottom of the Well", BOTTOM_OF_THE_WELL_MAP, BOTTOM_OF_THE_WELL_COMPASS, BOTTOM_OF_THE_WELL_SMALL_KEY, BOTTOM_OF_THE_WELL_KEY_RING, NONE, 3, 2, {
|
DungeonInfo BottomOfTheWell = DungeonInfo("Bottom of the Well", BOTTOM_OF_THE_WELL, BOTTOM_OF_THE_WELL_MAP, BOTTOM_OF_THE_WELL_COMPASS, BOTTOM_OF_THE_WELL_SMALL_KEY, BOTTOM_OF_THE_WELL_KEY_RING, NONE, 3, 2, {
|
||||||
//Vanilla Locations
|
//Vanilla Locations
|
||||||
BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST,
|
BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST,
|
||||||
BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST,
|
BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST,
|
||||||
@ -481,9 +506,9 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT,
|
BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT,
|
||||||
BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM,
|
BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM,
|
||||||
BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM,
|
BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM,
|
||||||
}, {});
|
}, {}, {});
|
||||||
|
|
||||||
DungeonInfo IceCavern = DungeonInfo("Ice Cavern", ICE_CAVERN_MAP, ICE_CAVERN_COMPASS, NONE, NONE, NONE, 0, 0, {
|
DungeonInfo IceCavern = DungeonInfo("Ice Cavern", ICE_CAVERN, ICE_CAVERN_MAP, ICE_CAVERN_COMPASS, NONE, NONE, NONE, 0, 0, {
|
||||||
//Vanilla Locations
|
//Vanilla Locations
|
||||||
ICE_CAVERN_MAP_CHEST,
|
ICE_CAVERN_MAP_CHEST,
|
||||||
ICE_CAVERN_COMPASS_CHEST,
|
ICE_CAVERN_COMPASS_CHEST,
|
||||||
@ -504,9 +529,9 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
}, {
|
}, {
|
||||||
//Shared Locations
|
//Shared Locations
|
||||||
SHEIK_IN_ICE_CAVERN,
|
SHEIK_IN_ICE_CAVERN,
|
||||||
});
|
}, {});
|
||||||
|
|
||||||
DungeonInfo GerudoTrainingGrounds = DungeonInfo("Gerudo Training Grounds", NONE, NONE, GERUDO_TRAINING_GROUNDS_SMALL_KEY, GERUDO_TRAINING_GROUNDS_KEY_RING, NONE, 9, 3, {
|
DungeonInfo GerudoTrainingGrounds = DungeonInfo("Gerudo Training Grounds", GERUDO_TRAINING_GROUNDS, NONE, NONE, GERUDO_TRAINING_GROUNDS_SMALL_KEY, GERUDO_TRAINING_GROUNDS_KEY_RING, NONE, 9, 3, {
|
||||||
//Vanilla Locations
|
//Vanilla Locations
|
||||||
GERUDO_TRAINING_GROUNDS_LOBBY_LEFT_CHEST,
|
GERUDO_TRAINING_GROUNDS_LOBBY_LEFT_CHEST,
|
||||||
GERUDO_TRAINING_GROUNDS_LOBBY_RIGHT_CHEST,
|
GERUDO_TRAINING_GROUNDS_LOBBY_RIGHT_CHEST,
|
||||||
@ -549,9 +574,9 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
GERUDO_TRAINING_GROUNDS_MQ_HIDDEN_CEILING_CHEST,
|
GERUDO_TRAINING_GROUNDS_MQ_HIDDEN_CEILING_CHEST,
|
||||||
GERUDO_TRAINING_GROUNDS_MQ_UNDERWATER_SILVER_RUPEE_CHEST,
|
GERUDO_TRAINING_GROUNDS_MQ_UNDERWATER_SILVER_RUPEE_CHEST,
|
||||||
GERUDO_TRAINING_GROUNDS_MQ_HEAVY_BLOCK_CHEST,
|
GERUDO_TRAINING_GROUNDS_MQ_HEAVY_BLOCK_CHEST,
|
||||||
}, {});
|
}, {}, {});
|
||||||
|
|
||||||
DungeonInfo GanonsCastle = DungeonInfo("Ganon's Castle", NONE, NONE, GANONS_CASTLE_SMALL_KEY, GANONS_CASTLE_KEY_RING, GANONS_CASTLE_BOSS_KEY, 2, 3, {
|
DungeonInfo GanonsCastle = DungeonInfo("Ganon's Castle", GANONS_CASTLE, NONE, NONE, GANONS_CASTLE_SMALL_KEY, GANONS_CASTLE_KEY_RING, GANONS_CASTLE_BOSS_KEY, 2, 3, {
|
||||||
//Vanilla Locations
|
//Vanilla Locations
|
||||||
GANONS_CASTLE_FOREST_TRIAL_CHEST,
|
GANONS_CASTLE_FOREST_TRIAL_CHEST,
|
||||||
GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST,
|
GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST,
|
||||||
@ -596,7 +621,7 @@ std::vector<uint32_t> DungeonInfo::GetEveryLocation() const {
|
|||||||
//Shared Locations
|
//Shared Locations
|
||||||
GANONS_TOWER_BOSS_KEY_CHEST,
|
GANONS_TOWER_BOSS_KEY_CHEST,
|
||||||
GANON,
|
GANON,
|
||||||
});
|
}, {});
|
||||||
|
|
||||||
const DungeonArray dungeonList = {
|
const DungeonArray dungeonList = {
|
||||||
&DekuTree,
|
&DekuTree,
|
||||||
|
@ -9,11 +9,12 @@
|
|||||||
namespace Dungeon {
|
namespace Dungeon {
|
||||||
class DungeonInfo {
|
class DungeonInfo {
|
||||||
public:
|
public:
|
||||||
DungeonInfo(std::string name_, uint32_t map_, uint32_t compass_, uint32_t smallKey_, uint32_t keyRing_, uint32_t bossKey_,
|
DungeonInfo(std::string name_, uint32_t hintKey_, uint32_t map_, uint32_t compass_, uint32_t smallKey_, uint32_t keyRing_, uint32_t bossKey_,
|
||||||
uint8_t vanillaKeyCount_, uint8_t mqKeyCount_,
|
uint8_t vanillaKeyCount_, uint8_t mqKeyCount_,
|
||||||
std::vector<uint32_t> vanillaLocations_,
|
std::vector<uint32_t> vanillaLocations_,
|
||||||
std::vector<uint32_t> mqLocations_,
|
std::vector<uint32_t> mqLocations_,
|
||||||
std::vector<uint32_t> sharedLocations_);
|
std::vector<uint32_t> sharedLocations_,
|
||||||
|
std::vector<uint32_t> bossRoomLocations_);
|
||||||
~DungeonInfo();
|
~DungeonInfo();
|
||||||
|
|
||||||
const std::string& GetName() const {
|
const std::string& GetName() const {
|
||||||
@ -52,6 +53,7 @@ public:
|
|||||||
return (masterQuest) ? mqKeyCount : vanillaKeyCount;
|
return (masterQuest) ? mqKeyCount : vanillaKeyCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t GetHintKey() const;
|
||||||
uint32_t GetSmallKey() const;
|
uint32_t GetSmallKey() const;
|
||||||
uint32_t GetKeyRing() const;
|
uint32_t GetKeyRing() const;
|
||||||
uint32_t GetMap() const;
|
uint32_t GetMap() const;
|
||||||
@ -71,6 +73,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::string name;
|
std::string name;
|
||||||
|
uint32_t hintKey;
|
||||||
uint32_t map;
|
uint32_t map;
|
||||||
uint32_t compass;
|
uint32_t compass;
|
||||||
uint32_t smallKey;
|
uint32_t smallKey;
|
||||||
@ -83,6 +86,7 @@ private:
|
|||||||
std::vector<uint32_t> vanillaLocations;
|
std::vector<uint32_t> vanillaLocations;
|
||||||
std::vector<uint32_t> mqLocations;
|
std::vector<uint32_t> mqLocations;
|
||||||
std::vector<uint32_t> sharedLocations;
|
std::vector<uint32_t> sharedLocations;
|
||||||
|
std::vector<uint32_t> bossRoomLocations;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern DungeonInfo DekuTree;
|
extern DungeonInfo DekuTree;
|
||||||
|
@ -759,9 +759,15 @@ static void FillExcludedLocations() {
|
|||||||
|
|
||||||
//Function to handle the Own Dungeon setting
|
//Function to handle the Own Dungeon setting
|
||||||
static void RandomizeOwnDungeon(const Dungeon::DungeonInfo* dungeon) {
|
static void RandomizeOwnDungeon(const Dungeon::DungeonInfo* dungeon) {
|
||||||
std::vector<uint32_t> dungeonLocations = dungeon->GetDungeonLocations();
|
|
||||||
std::vector<uint32_t> dungeonItems;
|
std::vector<uint32_t> dungeonItems;
|
||||||
|
|
||||||
|
// Search and filter for locations that match the hint region of the dungeon
|
||||||
|
// This accounts for boss room shuffle so that own dungeon items can be placed
|
||||||
|
// in the shuffled boss room
|
||||||
|
std::vector<LocationKey> dungeonLocations = FilterFromPool(allLocations, [dungeon](const auto loc) {
|
||||||
|
return GetHintRegionHintKey(Location(loc)->GetParentRegionKey()) == dungeon->GetHintKey();
|
||||||
|
});
|
||||||
|
|
||||||
//filter out locations that may be required to have songs placed at them
|
//filter out locations that may be required to have songs placed at them
|
||||||
dungeonLocations = FilterFromPool(dungeonLocations, [](const auto loc){
|
dungeonLocations = FilterFromPool(dungeonLocations, [](const auto loc){
|
||||||
if (ShuffleSongs.Is(SONGSHUFFLE_SONG_LOCATIONS)) {
|
if (ShuffleSongs.Is(SONGSHUFFLE_SONG_LOCATIONS)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user