Skip to content

Commit

Permalink
Various Fixes (#92)
Browse files Browse the repository at this point in the history
* Various Fixes

- Renamed `PF Ext Log Chest` to `PF Ext Ledge Chest` as it was moved in 3D (thanks grezzo)
- Adjusts Starting Song of Healing setting to prevent Deku Mask and Bomber's Notebook being unobtainable depending on settings. (When Starting with Song of Healing if Shuffle Transformation is OFF you will start with Deku Mask. If Shuffle Bombers Notebook is OFF you will start with Bombers Notebook. If Starting with Song of Healing and Shuffle Transformation or Shuffle Bombers Notebook are ON the respective item will be replaced with an unobtainable green rupee to prevent important items being placed there.)
- Removes all button combinations involving ZL and ZR from the spoiler log menu opening button options
-  Fixes TI Tingle Romani Ranch Map Buy (Spring) not marking as obtained when buying TI Tingle Romani Ranch Map Buy or MR Tingle Romani Ranch Map Buy
- Adds 2 missing Gossip Stones in Stone Tower
- Adjust quest item placement to be independent of Anju and Kafei shuffle setting
- Adds fighting requirement to entrances in Woodfall behind a hiploop
- Fixes Moon Link Trial Chests not being randomized properly
- Fixes Any Dungeon & Overworld settings for dungeon items will not work properly
- Add setting to implement fast transformation mask animations.
- Add setting for starting inventory Bomber's Notebook
- Reorganize Starting Inventory so it's easier to navigate

* Update Z3DR
  • Loading branch information
Tacoman369 authored May 29, 2024
1 parent 87db81a commit 1ac073d
Show file tree
Hide file tree
Showing 12 changed files with 233 additions and 94 deletions.
2 changes: 2 additions & 0 deletions source/dungeon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,8 @@ std::vector<LocationKey> DungeonInfo::GetEveryLocation() const {
THE_MOON_DEKU_TRIAL_BONUS,
THE_MOON_GORON_TRIAL_BONUS,
THE_MOON_ZORA_TRIAL_BONUS,
THE_MOON_GARO_CHEST,
THE_MOON_IRON_KNUCKLE_CHEST,
THE_MOON_LINK_TRIAL_BONUS,
THE_MOON_MAJORA_CHILD,
},{} );
Expand Down
9 changes: 4 additions & 5 deletions source/fill.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -828,11 +828,13 @@ int Fill() {
RandomizeDungeonRewards();

//Place dungeon items restricted to their Own Dungeon

for (auto dungeon : Dungeon::dungeonList) {
RandomizeOwnDungeon(dungeon);
}

//Then place dungeon items that are assigned to restrictive location pools
RandomizeDungeonItems();

if (ShuffleGFRewards.Is((u8)GreatFairyRewardShuffleSetting::GFREWARDSHUFFLE_ALL_GREAT_FARIES)){
//get GF locations
std::vector<LocationKey> gfLocations = FilterFromPool(allLocations, [](const LocationKey loc) {return Location(loc)->IsCategory(Category::cFairyFountain);});
Expand All @@ -848,11 +850,9 @@ int Fill() {
AssumedFill(mainadvancementItems, allLocations,true);

//Then Place Anju & Kafei Items in spots accessable on Day 1, this should prevent situations where you cant get an item in time for its use
if(ShuffleTradeItems) {
std::vector<LocationKey> day1Locations = FilterFromPool(allLocations, [](const LocationKey loc) {return Location(loc)->IsCategory(Category::cDayOne);});
std::vector<ItemKey> anjukafeiitems = FilterAndEraseFromPool(ItemPool, [](const ItemKey i) {return ItemTable(i).GetItemType() == ITEMTYPE_QUEST;});
AssumedFill(anjukafeiitems, day1Locations,true);
}

//Then Place Deku Merchant Items
/* if(ShuffleMerchants) {
Expand Down Expand Up @@ -880,8 +880,7 @@ int Fill() {



//Then place dungeon items that are assigned to restrictive location pools
RandomizeDungeonItems();


//Then place Link's Pocket Item if it has to be an advancement item
//Links Pocket is useless as there is no unobtainable check due to a certain time travel sword pedistal
Expand Down
2 changes: 2 additions & 0 deletions source/include/keys.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1031,6 +1031,8 @@ typedef enum {
IC_DOCK_GOSSIP,
IC_SAKON_GOSSIP,
IC_SPIRIT_HOUSE_GOSSIP,
ST_LOWER_GOSSIP,
ST_UPPER_GOSSIP,
MOON_DEKU_GOSSIP_1,
MOON_DEKU_GOSSIP_2,
MOON_DEKU_GOSSIP_3,
Expand Down
3 changes: 2 additions & 1 deletion source/include/setting_descriptions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -229,4 +229,5 @@ extern string_view skipBombersMinigameDesc;
extern string_view NARegionDesc;
extern string_view EURegionDesc;
extern string_view VersionDesc;
extern string_view LanguageDesc;
extern string_view LanguageDesc;
extern string_view fastMaskDesc;
16 changes: 16 additions & 0 deletions source/include/settings.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ namespace Settings {
extern Option StartingNutCapacity;
extern Option StartingInventoryToggle;
extern Option StartingOcarina;
extern Option StartingNotebook;
extern Option StartingBombBag;
extern Option StartingBombchus;
extern Option StartingHookshot;
Expand Down Expand Up @@ -349,6 +350,13 @@ namespace Settings {
extern Option StartingRazorSword;
extern Option StartingGildedSword;
extern std::vector<Option*> startingInventoryOptions;
extern std::vector<Option*> startingInventoryInventory;
extern std::vector<Option*> startingInventoryMasks;
extern std::vector<Option*> startingInventorySongs;
extern std::vector<Option*> startingInventoryUpgrades;
extern std::vector<Option*> startingInventoryRemains;
extern std::vector<Option*> startingInventoryTokensFairys;
extern std::vector<Menu*> startingInventoryMenu;

//Starting Masks
extern Option StartingMaskToggle;
Expand Down Expand Up @@ -465,6 +473,7 @@ namespace Settings {
extern Option DpadOcarina;
extern Option DpadArrows;
extern Option TwinmoldRestoraion;
extern Option FastMasks;

//Trial Skips
extern Option OdolwaTrialSkip;
Expand Down Expand Up @@ -508,6 +517,13 @@ namespace Settings {
extern Menu glitchSettings;
//extern Menu itemSettings;
extern Menu otherSettings;
extern Menu startingInventoryOptionals;
extern Menu startingInventoryInventoryMenu;
extern Menu startingInventoryMasksMenu;
extern Menu startingInventorySongsMenu;
extern Menu startingInventoryUpgradesMenu;
extern Menu startingInventoryRemainsMenu;
extern Menu startingInventoryTokensMenu;

//Main Menu
extern std::vector<Menu *> mainSettingsOptions;
Expand Down
6 changes: 5 additions & 1 deletion source/item_location.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ void LocationTable_Init() {
locationTable[PF_CAGE_ROOM_DEEP_CHEST] = ItemLocation::Chest (0x23, 0x06, true, "Pirate's Fortress Sewer Cage Room Deep Chest", PF_CAGE_ROOM_DEEP_CHEST, BLUE_RUPEE, {Category::cPiratesFortressSewer,Category::cChest ,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_PIRATE_FORTRESS );
locationTable[PF_MAZE_CHEST] = ItemLocation::Chest (0x23, 0x01, true, "Pirate's Fortress Sewer Maze Chest", PF_MAZE_CHEST, RED_RUPEE, {Category::cPiratesFortressSewer,Category::cChest ,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_PIRATE_FORTRESS );
locationTable[PF_SEWER_CAGE] = ItemLocation::Collectable(0x23, 0x00, false, "Pirate's Fortress Sewer Cage", PF_SEWER_CAGE, PIECE_OF_HEART, {Category::cPiratesFortressSewer, Category::cVanillaHeartPiece,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_PIRATE_FORTRESS );
locationTable[PF_EXTERIOR_LOG_CHEST] = ItemLocation::Chest (0x3B, 0x00, true, "Pirate's Fortress Ext Log Chest", PF_EXTERIOR_LOG_CHEST, RED_RUPEE, {Category::cPiratesFortressExterior,Category::cChest ,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_PIRATE_FORTRESS );
locationTable[PF_EXTERIOR_LOG_CHEST] = ItemLocation::Chest (0x3B, 0x00, true, "Pirate's Fortress Ext Ledge Chest", PF_EXTERIOR_LOG_CHEST, RED_RUPEE, {Category::cPiratesFortressExterior,Category::cChest ,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_PIRATE_FORTRESS );
locationTable[PF_EXTERIOR_SAND_CHEST] = ItemLocation::Chest (0x3B, 0x01, true, "Pirate's Fortress Ext Sand Chest", PF_EXTERIOR_SAND_CHEST, RED_RUPEE, {Category::cPiratesFortressExterior,Category::cChest ,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_PIRATE_FORTRESS );
locationTable[PF_EXTERIOR_CORNER_CHEST] = ItemLocation::Chest (0x3B, 0x02, true, "Pirate's Fortress Ext Corner Chest", PF_EXTERIOR_CORNER_CHEST, RED_RUPEE, {Category::cPiratesFortressExterior,Category::cChest ,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_PIRATE_FORTRESS );
locationTable[PF_INT_INVISIBLE_SOLDIER] = ItemLocation::Base (0x14, 0x8B, false, "Pirate's Fortress Int Invisible Soldier", PF_INT_INVISIBLE_SOLDIER, STONE_MASK, {Category::cPiratesFortressInterior, Category::cVanillaMask,Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_DUNGEON_PIRATE_FORTRESS );
Expand Down Expand Up @@ -616,6 +616,8 @@ locationTable[CUCCO_SHACK_GOSSIP] = ItemLocatio
locationTable[IC_DOCK_GOSSIP] = ItemLocation::HintStone (0x00,0x20b6, true, "IC Dock Gossip Stone", {});
locationTable[IC_SAKON_GOSSIP] = ItemLocation::HintStone (0x00,0x20c5, true, "IC Across from Sakon's Hideout Gossip Stone", {});
locationTable[IC_SPIRIT_HOUSE_GOSSIP] = ItemLocation::HintStone (0x00,0x20b7, true, "IC Above Spirit House Gossip Stone", {});
locationTable[ST_LOWER_GOSSIP] = ItemLocation::HintStone (0x00,0x00, true, "Stone Tower Lower Gossip Stone", {});
locationTable[ST_UPPER_GOSSIP] = ItemLocation::HintStone (0x00,0x00, true, "Stone Tower Upper Gossip Stone", {});
locationTable[MOON_DEKU_GOSSIP_1] = ItemLocation::HintStone (0x00,0x2109, true, "Moon Deku Trial Gossip Stone 1", {});
locationTable[MOON_DEKU_GOSSIP_2] = ItemLocation::HintStone (0x00,0x2108, true, "Moon Deku Trial Gossip Stone 2", {});
locationTable[MOON_DEKU_GOSSIP_3] = ItemLocation::HintStone (0x00,0x210b, true, "Moon Deku Trial Gossip Stone 3", {});
Expand Down Expand Up @@ -751,6 +753,8 @@ std::vector<LocationKey> gossipStoneLocations = {
IC_DOCK_GOSSIP,
IC_SAKON_GOSSIP,
IC_SPIRIT_HOUSE_GOSSIP,
ST_LOWER_GOSSIP,
ST_UPPER_GOSSIP,
MOON_DEKU_GOSSIP_1,
MOON_DEKU_GOSSIP_2,
MOON_DEKU_GOSSIP_3,
Expand Down
6 changes: 4 additions & 2 deletions source/location_access.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1050,9 +1050,9 @@ void AreaTable_Init() {
},
{
//Exits
Entrance(WOODFALL_TEMPLE_ENTRANCE, {[]{return DekuMask && CanPlay(SonataOfAwakening);}}),
Entrance(WOODFALL_TEMPLE_ENTRANCE, {[]{return DekuMask && CanPlay(SonataOfAwakening) && (Fighting || CanUseProjectile);}}),
Entrance(SOUTHERN_SWAMP_TOP, {[]{return true;}}),
Entrance(WOODFALL_FAIRY_FOUNTAIN, {[]{return DekuMask;}}),
Entrance(WOODFALL_FAIRY_FOUNTAIN, {[]{return DekuMask && (Fighting || CanUseProjectile);}}),
Entrance(WOODFALL_TEMPLE_PRINCESS_ROOM, {[]{return WoodfallClear;}}),
});

Expand Down Expand Up @@ -2012,6 +2012,8 @@ void AreaTable_Init() {
},
{
//Locations
LocationAccess(ST_LOWER_GOSSIP, {[] {return CanPlay(ElegyOfEmptiness) && GoronMask && ZoraMask && Hookshot;}}),
LocationAccess(ST_UPPER_GOSSIP, {[] {return CanPlay(ElegyOfEmptiness) && GoronMask && ZoraMask && Hookshot;}}),
},
{
//Exits
Expand Down
1 change: 1 addition & 0 deletions source/setting_descriptions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -623,6 +623,7 @@ string_view dpadArrowDesc = "Enables using D-Pad up to change your cu
string_view twinmoldRestorationDesc = "Fixes Twinmold boss fight so Red Twinmold does not\n"
"regen health when it burrows."; //
//
string_view fastMaskDesc = "Enables Fast Transformation Animations."; //
/*------------------------------- //
| CUSTOM BUTTON MAPPING | //
-------------------------------*/ //
Expand Down
Loading

0 comments on commit 1ac073d

Please sign in to comment.