diff --git a/Z3DR b/Z3DR index bb96482..f0afc85 160000 --- a/Z3DR +++ b/Z3DR @@ -1 +1 @@ -Subproject commit bb96482da1d1f728020f352a67191a902ea644e0 +Subproject commit f0afc85893fab4c077cd3a99f295cd45ef22befd diff --git a/source/include/settings.hpp b/source/include/settings.hpp index a33d75d..c6fc5a9 100644 --- a/source/include/settings.hpp +++ b/source/include/settings.hpp @@ -346,6 +346,10 @@ namespace Settings { extern Option StartingTwinmoldRemains; extern Option StartingSwampToken; extern Option StartingOceanToken; + extern Option StartingWoodfallStrays; + extern Option StartingSnowheadStrays; + extern Option StartingGreatBayStrays; + extern Option StartingStoneTowerStrays; extern Option StartingStickCapacity; extern Option StartingPowderKeg; extern Option StartingPictographBox; diff --git a/source/item_pool.cpp b/source/item_pool.cpp index 9bd306d..9ad2175 100644 --- a/source/item_pool.cpp +++ b/source/item_pool.cpp @@ -1141,7 +1141,7 @@ void GenerateItemPool() { //CLOCK TOWN STRAY FAIRY (Separated because it's not in a dungeon) if (!ShuffleCTStray) { - PlaceItemInLocation(CT_STRAY_FAIRY, LAUNDRY_POOL_SF); + PlaceItemInLocation(LAUNDRY_POOL_SF, CT_STRAY_FAIRY); } else { AddItemToMainPool(CT_STRAY_FAIRY, 1); diff --git a/source/location_access.cpp b/source/location_access.cpp index ed3811a..17be4ff 100644 --- a/source/location_access.cpp +++ b/source/location_access.cpp @@ -556,7 +556,7 @@ void AreaTable_Init() { LocationAccess(S_CLOCK_TOWN_FINAL_DAY_CHEST, {[] {return Hookshot || (DekuMask && MoonsTear);}}), LocationAccess(S_CLOCK_TOWN_BANK_REWARD_1, {[] {return true;}}), LocationAccess(S_CLOCK_TOWN_BANK_REWARD_2, {[] {return AnyWallet;}}),//Adult Wallet for lenience - LocationAccess(S_CLOCK_TOWN_BANK_REWARD_3, {[] {return (OceanWallet500 || ProgressiveWallet > 1);}}),//Giant Wallet for lenience + LocationAccess(S_CLOCK_TOWN_BANK_REWARD_3, {[] {return ProgressiveWallet > 1;}}),//Giant Wallet for lenience }, { //Exits diff --git a/source/settings.cpp b/source/settings.cpp index fdbea1f..7ad350b 100644 --- a/source/settings.cpp +++ b/source/settings.cpp @@ -158,6 +158,10 @@ namespace Settings { Option StartingTwinmoldRemains = Option::U8("Twinmold's Remains", { "None", "TwinMold's R." }, { "" }); Option StartingSwampToken = Option::U8("Swamp Skulltula Tokens", {/*Options 0-30 defined in InitSettings()*/ }, { "" }, OptionCategory::Setting, 0); Option StartingOceanToken = Option::U8("Ocean Skulltula Tokens", {/*Options 0-30 defined in InitSettings()*/ }, { "" }, OptionCategory::Setting, 0); + Option StartingWoodfallStrays = Option::U8("Woodfall Stray Fairies", {/*Options 0-15 defined in InitSettings()*/ }, { "" }, OptionCategory::Setting, 0); + Option StartingSnowheadStrays = Option::U8("Snowhead Stray Fairies", {/*Options 0-15 defined in InitSettings()*/ }, { "" }, OptionCategory::Setting, 0); + Option StartingGreatBayStrays = Option::U8("Great Bay Stray Fairies", {/*Options 0-15 defined in InitSettings()*/ }, { "" }, OptionCategory::Setting, 0); + Option StartingStoneTowerStrays = Option::U8("Stone Tower Stray Fairies", {/*Options 0-15 defined in InitSettings()*/ }, { "" }, OptionCategory::Setting, 0); //Starting Masks Option StartingMaskToggle = Option::U8("Masks", { "All Off", "All On", "Choose" }, { "" }); Option StartingDekuMask = Option::U8("Deku Mask", { "None", "Deku M." }, { "" }); @@ -282,6 +286,10 @@ namespace Settings { std::vector startingInventoryTokensFairys = { &StartingSwampToken, &StartingOceanToken, + &StartingWoodfallStrays, + &StartingSnowheadStrays, + &StartingGreatBayStrays, + &StartingStoneTowerStrays, }; //Excluded Locations (Individual definitions made in ItemLocation class) @@ -832,6 +840,11 @@ namespace Settings { //Tokens ctx.startingSwampTokens = StartingSwampToken.Value(); ctx.startingOceanTokens = StartingOceanToken.Value(); + //Stray Fairies + ctx.startingWoodfallStrays = StartingWoodfallStrays.Value(); + ctx.startingSnowheadStrays = StartingSnowheadStrays.Value(); + ctx.startingGreatBayStrays = StartingGreatBayStrays.Value(); + ctx.startingStoneTowerStrays = StartingStoneTowerStrays.Value(); //Masks ctx.startingDekuMask = StartingDekuMask.Value(); ctx.startingGoronMask = StartingGoronMask.Value(); @@ -1058,10 +1071,19 @@ namespace Settings { OtokenOptions.reserve(31); for (int i = 0; i <= 30; i++) { OtokenOptions.push_back(std::to_string(i)); + } + std::vector StrayOptions; + StrayOptions.reserve(16); + for (int i = 0; i <= 15; i++) { + StrayOptions.push_back(std::to_string(i)); } StartingSwampToken.SetOptions(StokenOptions); StartingOceanToken.SetOptions(OtokenOptions); - + StartingWoodfallStrays.SetOptions(StrayOptions); + StartingSnowheadStrays.SetOptions(StrayOptions); + StartingGreatBayStrays.SetOptions(StrayOptions); + StartingStoneTowerStrays.SetOptions(StrayOptions); + //Create Location Exclude settings AddExcludedOptions(); diff --git a/source/starting_inventory.cpp b/source/starting_inventory.cpp index 3fb6fe5..bb341ec 100644 --- a/source/starting_inventory.cpp +++ b/source/starting_inventory.cpp @@ -114,6 +114,10 @@ void GenerateStartingInventory() { AddItemToInventory(TWINMOLDS_REMAINS, StartingTwinmoldRemains.Value()); AddItemToInventory(SWAMP_SKULLTULA_TOKEN, StartingSwampToken.Value()); AddItemToInventory(OCEANSIDE_SKULLTULA_TOKEN, StartingOceanToken.Value()); + AddItemToInventory(WF_STRAY_FAIRY, StartingWoodfallStrays.Value()); + AddItemToInventory(SH_STRAY_FAIRY, StartingSnowheadStrays.Value()); + AddItemToInventory(GBT_STRAY_FAIRY, StartingGreatBayStrays.Value()); + AddItemToInventory(ST_STRAY_FAIRY, StartingStoneTowerStrays.Value()); AddItemToInventory(DEKU_MASK, StartingDekuMask.Value()); AddItemToInventory(GORON_MASK, StartingGoronMask.Value());