diff --git a/Z3DR b/Z3DR index f6f4ed0..195c065 160000 --- a/Z3DR +++ b/Z3DR @@ -1 +1 @@ -Subproject commit f6f4ed0572882c92dc8fd79a7f6f65c335571eeb +Subproject commit 195c065acd12bde357916b49929245e105017b1a diff --git a/source/fill.cpp b/source/fill.cpp index dc683b5..f4d628e 100644 --- a/source/fill.cpp +++ b/source/fill.cpp @@ -405,7 +405,7 @@ static void FastFill(std::vector items, std::vector locati static void AssumedFill(const std::vector& items, const std::vector& allowedLocations, bool setLocationsAsHintable = false) { if (items.size() > allowedLocations.size()) { - //If Tokensanity is on and RepeatableItemsOnTokens is off + //If NoRepeatOnTokens is on //Don't display this message if (NoRepeatOnTokens) { //do nothing here to not display the message @@ -444,9 +444,9 @@ static void AssumedFill(const std::vector& items, const std::vector& items, const std::vector& items, const std::vectorSetAsHintable(); - } + //Else place it and keep going + PlaceItemInLocation(selectedLocation, item); + attemptedLocations.push_back(selectedLocation); + //This tells us the location went through the randomization algorithm + //to distinguish it from locations which did not or that the player already + //knows + if (setLocationsAsHintable) { + Location(selectedLocation)->SetAsHintable(); + } - //If ALR is off, then we check beatability after placing the item. - //If the game is beatable, then we can stop placing items with logic. - if (!LocationsReachable) { - playthroughBeatable = false; - Logic::LogicReset(); - GetAccessibleLocations(allLocations, SearchMode::CheckBeatable); - if (playthroughBeatable) { - FastFill(itemsToPlace, GetAllEmptyLocations(), true); - return; - } - } + //If ALR is off, then we check beatability after placing the item. + //If the game is beatable, then we can stop placing items with logic. + if (!LocationsReachable) { + playthroughBeatable = false; + Logic::LogicReset(); + GetAccessibleLocations(allLocations, SearchMode::CheckBeatable); + if (playthroughBeatable) { + FastFill(itemsToPlace, GetAllEmptyLocations(), true); + return; } - } - else { + //place the item within one of the allowed locations accounting for if this item needs to be able to be obtained more than once and if location allows that //the only situation we don't want is a non repeatable location with a reusable item if ( !(Location(selectedLocation)->IsRepeatable()) && ItemTable(item).IsReusable() ){ - //unsuccessfulPlacement = true; -#ifdef ENABLE_DEBUG - CitraPrint("Attempting to place repeatable item in non repeatable spot in AssumedFill"); -#endif - PlacementLog_Msg("\n Attempted to place " + ItemTable(item).GetName().GetNAEnglish() + " at " + Location(selectedLocation)->GetName()); - itemsToPlace.push_back(item); - } - else { + //unsuccessfulPlacement = true; + #ifdef ENABLE_DEBUG + CitraPrint("Attempting to place repeatable item in non repeatable spot in AssumedFill"); + #endif + PlacementLog_Msg("\n Attempted to place " + ItemTable(item).GetName().GetNAEnglish() + " at " + Location(selectedLocation)->GetName()); + itemsToPlace.push_back(item); + } + else { PlaceItemInLocation(selectedLocation, item); //PlacementLog_Msg("Placed " + ItemTable(item).GetName().GetNAEnglish() + " at " + Location(selectedLocation)->GetName()); //CitraPrint("Placed " + ItemTable(item).GetName().GetNAEnglish() + " at " + Location(selectedLocation)->GetName()); attemptedLocations.push_back(selectedLocation); - + //This tells us the location went through the randomization algorithm //to distinguish it from locations which did not or that the player already //knows if (setLocationsAsHintable) { Location(selectedLocation)->SetAsHintable(); } - + //If ALR is off, then we check beatability after placing the item. //If the game is beatable, then we can stop placing items with logic. if (!LocationsReachable) { @@ -613,7 +599,8 @@ static void AssumedFill(const std::vector& items, const std::vector songs = FilterAndEraseFromPool(ItemPool, [](const ItemKey i) {return ItemTable(i).GetItemType() == ITEMTYPE_SONG;}); //If Shuffled in Song Locations restrict location pool to only song locations @@ -926,6 +912,7 @@ int Fill() { // Ensure Ocarina and Song of Time are obtainable with the current placement. // If they are not reachable with currently placed items (Rewards, Keys, etc.), // we place additional advancement items from the pool to open paths until they are reachable. + // but only if the logic setting is not set to "None" (No Logic). if (((StartingOcarina.Value() == 0) || ShuffleSongOfTime) && Settings::Logic.IsNot(LogicSetting::LOGIC_NONE)) { while (true) { Logic::LogicReset(); @@ -1041,38 +1028,6 @@ int Fill() { AssumedFill(gfItems, gfLocations, true); } - //Then if repeatable items on tokens is off -- fill token spots with nonrepeatable items - if (Tokensanity && !RepeatableItemsOnTokens){ - //Set Variable to not mess with fill algorithm - NoRepeatOnTokens = true; - //Get SSH locations - std::vector SwampSkullLocations = FilterFromPool(allLocations, [](const LocationKey loc) {return Location(loc)->IsCategory(Category::cSwampSkulltula);}); - //Get NonRepeatItems - std::vector NonRepeatItems = FilterAndEraseFromPool(ItemPool, [](const ItemKey i) {return !ItemTable(i).IsReusable();}); - //fill SSH spots with nonrepeatableitems - AssumedFill(NonRepeatItems, SwampSkullLocations, true); - - //Get OSH locations - std::vector OceanSkullLocations = FilterFromPool(allLocations, [](const LocationKey loc1) {return Location(loc1)->IsCategory(Category::cOceanSkulltula);}); - //Get NonRepeatItems - std::vector NonRepeatItems2 = FilterAndEraseFromPool(ItemPool, [](const ItemKey i) {return !ItemTable(i).IsReusable();}); - //CitraPrint("Items in NonRepeatItems2:\n"); - //fill OSH spots with NonRepeatableItems - AssumedFill(NonRepeatItems2, OceanSkullLocations, true); - //Set Variable back to false to go back to normal filling - NoRepeatOnTokens = false; - - //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 - //Do this before continuing as the pool of accessable locations is smaller after filling all skulltula locations - std::vector day1Locations = FilterFromPool(allLocations, [](const LocationKey loc) {return Location(loc)->IsCategory(Category::cDayOne);}); - std::vector anjukafeiitems = FilterAndEraseFromPool(ItemPool, [](const ItemKey i) {return ItemTable(i).GetItemType() == ITEMTYPE_QUEST;}); - AssumedFill(anjukafeiitems, day1Locations,true); - - //get the rest of the repeatable items and fill them in -- may not be needed? - //std::vector remainingRepeatItems = FilterAndEraseFromPool(ItemPool, [](const ItemKey i) {return ItemTable(i).IsReusable();}); - //CitraPrint("Starting Fill of remaining Repeat Items"); - //AssumedFill(remainingRepeatItems, allLocations,true); - } //Place Main Inventory First //So first get all items in the pool + DekuMask, diff --git a/source/hint_list.cpp b/source/hint_list.cpp index 6d1a894..05ea802 100644 --- a/source/hint_list.cpp +++ b/source/hint_list.cpp @@ -440,6 +440,12 @@ void HintTable_Init() { }, //clear Text{"a progressive magic power", "une amélioration d'énergie magique", "un poder mágico progresivo"} ); + hintTable[PROGRESSIVE_LULLABY] = HintText::Item({ + //obscure + Text{"a progressive lullaby", "une berceuse progressive", "una canción de cuna progresiva"} + }, //clear + Text{"a progressive lullaby", "une berceuse progressive", "una canción de cuna progresiva"} + ); //PROGRESSIVE_BOMBCHUS //BOTTLE ITEMS hintTable[EMPTY_BOTTLE] = HintText::Item({ diff --git a/source/include/keys.hpp b/source/include/keys.hpp index 3ed8eab..c815635 100644 --- a/source/include/keys.hpp +++ b/source/include/keys.hpp @@ -79,6 +79,7 @@ typedef enum { PROGRESSIVE_WALLET, PROGRESSIVE_MAGIC_METER, PROGRESSIVE_BOMBCHUS, + PROGRESSIVE_LULLABY, //Keys just used for Logic RAZOR_SWORD, diff --git a/source/include/logic.hpp b/source/include/logic.hpp index 4169175..aede534 100644 --- a/source/include/logic.hpp +++ b/source/include/logic.hpp @@ -139,6 +139,7 @@ namespace Logic { extern u8 ProgressiveWallet; extern u8 ProgressiveBombBag; extern u8 ProgressiveSword; + extern u8 ProgressiveLullaby; //Keys extern u8 WoodfallTempleKeys; extern u8 SnowheadTempleKeys; diff --git a/source/include/settings.hpp b/source/include/settings.hpp index 29865d6..0b94337 100644 --- a/source/include/settings.hpp +++ b/source/include/settings.hpp @@ -568,7 +568,6 @@ namespace Settings { extern std::vector gameOptions; extern Menu gameSettings; - extern Option RepeatableItemsOnTokens; extern std::vector shuffleItemsMenu; } diff --git a/source/item_list.cpp b/source/item_list.cpp index c3b09c8..9f689ee 100644 --- a/source/item_list.cpp +++ b/source/item_list.cpp @@ -230,6 +230,7 @@ void ItemTable_Init() { //repeatable denotes that an item in a vanilla playth itemTable[PROGRESSIVE_BOW] = Item(true, false, &ProgressiveBow, Text{"Progressive Bow", "Arc (prog.)", "Arco progresivo", }, PROGRESSIVE_BOW, 0x47, ITEMTYPE_ITEM); itemTable[PROGRESSIVE_WALLET] = Item(true, false, &ProgressiveWallet, Text{"Progressive Wallet", "Bourse (prog.)", "Bolsa de rupias progresiva", }, PROGRESSIVE_WALLET, 0x48, ITEMTYPE_ITEM); itemTable[PROGRESSIVE_MAGIC_METER] = Item(true, false, &ProgressiveMagic, Text{"Progressive Magic Meter", "Jauge de magie (prog)", "Poder mágico progresivo", "", "Capacité de magie (prog.)", "" }, PROGRESSIVE_MAGIC_METER, 0x49, ITEMTYPE_GFAIRY); + itemTable[PROGRESSIVE_LULLABY] = Item(true, false, &ProgressiveLullaby, Text{"Progressive Lullaby", "Berceuse (prog.)", "Canción de cuna progresiva", "", "Berceuse (prog.)", "" }, PROGRESSIVE_LULLABY, 0x45, ITEMTYPE_SONG); itemTable[MAJORAS_MASK] = Item(true, false, &noVariable, Text{"Majora's Mask", "Masque de Majora", "Máscara de Majora", }, MAJORAS_MASK, (u32)GetItemID::GI_ERROR_NOTHING_40, ITEMTYPE_EVENT); itemTable[HINT] = Item(true, true, &noVariable, Text{"Hint", "Indice", "Pista", }, HINT, (u32)GetItemID::GI_ERROR_NOTHING_40, ITEMTYPE_EVENT); diff --git a/source/item_location.cpp b/source/item_location.cpp index be4c7a4..6530801 100644 --- a/source/item_location.cpp +++ b/source/item_location.cpp @@ -58,7 +58,7 @@ void LocationTable_Init() { locationTable[GORON_VILLAGE_LENS_OF_TRUTH_CHEST] = ItemLocation::Chest (0x07, 0x01, true, "GV Lens of Truth Chest", GORON_VILLAGE_LENS_OF_TRUTH_CHEST, LENS_OF_TRUTH, {Category::cGoronVillage, Category::cChest, Category::cDayOne, Category::cMainInventory, Category::cNoOcarinaStart}, SpoilerCollectionCheckGroup::GROUP_GORON_VILLAGE ); locationTable[GORON_VILLAGE_SCRUB_TRADE] = ItemLocation::Base (0x4D, 0x99, true, "GV Deku Scrub Merchant Trade", GORON_VILLAGE_SCRUB_TRADE, MOUNTAIN_TITLE, {Category::cGoronVillage, Category::cDekuScrub, Category::cDayOne, Category::cNoOcarinaStart}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_GORON_VILLAGE ); locationTable[GORON_VILLAGE_LEDGE] = ItemLocation::Collectable(0x4D, 0x00, false, "GV Piece of Heart", GORON_VILLAGE_LEDGE, PIECE_OF_HEART, {Category::cGoronVillage, Category::cVanillaHeartPiece, Category::cDayOne, Category::cNoOcarinaStart}, SpoilerCollectionCheckGroup::GROUP_GORON_VILLAGE ); - locationTable[GORON_VILLAGE_GORON_LULLABY] = ItemLocation::Base (0x32, 0x4D, false, "GV Goron Lullaby", GORON_VILLAGE_GORON_LULLABY, GORONS_LULLABY, {Category::cGoronVillage, Category::cSong, Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_GORON_VILLAGE ); + locationTable[GORON_VILLAGE_GORON_LULLABY] = ItemLocation::Base (0x32, 0x4D, false, "GV Goron Lullaby", GORON_VILLAGE_GORON_LULLABY, PROGRESSIVE_LULLABY, {Category::cGoronVillage, Category::cSong, Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_GORON_VILLAGE ); locationTable[LENS_CAVE_RED_RUPEE] = ItemLocation::Chest (0x07, 0x03, true, "GV Lens Cave Invisible Chest", LENS_CAVE_RED_RUPEE, RED_RUPEE, {Category::cGoronVillage, Category::cChest ,Category::cDayOne, Category::cNoOcarinaStart}, SpoilerCollectionCheckGroup::GROUP_GORON_VILLAGE ); locationTable[LENS_CAVE_PURPLE_RUPEE] = ItemLocation::Chest (0x07, 0x06, true, "GV Lens Cave Rock Chest", LENS_CAVE_PURPLE_RUPEE, PURPLE_RUPEE, {Category::cGoronVillage, Category::cChest ,Category::cDayOne, Category::cNoOcarinaStart}, SpoilerCollectionCheckGroup::GROUP_GORON_VILLAGE ); locationTable[GORON_VILLAGE_POWDER_KEG_CHALLENGE_SPRING] = ItemLocation::Base (0x48, 0x34, false, "GV Powder Keg Challenge (Spring)", GORON_VILLAGE_POWDER_KEG_CHALLENGE_SPRING, POWDER_KEG, {Category::cGoronVillage, Category::cDayOne, Category::cAlternateCheck, Category::cNoOcarinaStart}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_GORON_VILLAGE ); @@ -227,7 +227,7 @@ void LocationTable_Init() { locationTable[TWIN_ISLANDS_GORON_RACETRACK_GROTTO_CHEST] = ItemLocation::Chest (0x07, 0x19, true, "TI Goron Racetrack Grotto", TWIN_ISLANDS_GORON_RACETRACK_GROTTO_CHEST, BOMBCHU_5, {Category::cTwinIslands, Category::cGrotto,Category::cChest ,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_TWIN_ISLANDS ); locationTable[TWIN_ISLANDS_UNDERWATER_RAMP_CHEST] = ItemLocation::Chest (0x5E, 0x06, true, "TI Underwater Ramp Chest", TWIN_ISLANDS_UNDERWATER_RAMP_CHEST, PIECE_OF_HEART, {Category::cTwinIslands, Category::cVanillaHeartPiece, Category::cChest, Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_TWIN_ISLANDS ); locationTable[TWIN_ISLANDS_CAVE_CHEST] = ItemLocation::Chest (0x5E, 0x00, true, "TI Cave Chest", TWIN_ISLANDS_CAVE_CHEST, RED_RUPEE, {Category::cTwinIslands,Category::cChest ,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_TWIN_ISLANDS ); - locationTable[TWIN_ISLANDS_LULLABY_INTRO] = ItemLocation::Base (0x5D, 0x74, false, "TI Lullaby Intro", TWIN_ISLANDS_LULLABY_INTRO, LULLABY_INTRO, {Category::cTwinIslands, Category::cSong, Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_TWIN_ISLANDS ); + locationTable[TWIN_ISLANDS_LULLABY_INTRO] = ItemLocation::Base (0x5D, 0x74, false, "TI Lullaby Intro", TWIN_ISLANDS_LULLABY_INTRO, PROGRESSIVE_LULLABY, {Category::cTwinIslands, Category::cSong, Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_TWIN_ISLANDS ); //W Clock Town locationTable[W_CLOCK_TOWN_BOMB_BAG_BUY] = ItemLocation::Base (0x0D, 0x1B, false, "WCT Bomb Bag Purchase", W_CLOCK_TOWN_BOMB_BAG_BUY, PROGRESSIVE_BOMB_BAG, {Category::cWestClockTown,Category::cDayOne, Category::cShop, Category::cMainInventory, Category::cNoOcarinaStart}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_W_CLOCK_TOWN ); locationTable[W_CLOCK_TOWN_BIG_BOMB_BAG_BUY] = ItemLocation::Base (0x0D, 0x1C, false, "WCT Big Bomb Bag Purchase", W_CLOCK_TOWN_BIG_BOMB_BAG_BUY, PROGRESSIVE_BOMB_BAG, {Category::cWestClockTown,Category::cDayTwo, Category::cShop, Category::cMainInventory, Category::cNoOcarinaStart}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_W_CLOCK_TOWN ); diff --git a/source/item_pool.cpp b/source/item_pool.cpp index ea17bc5..57d670c 100644 --- a/source/item_pool.cpp +++ b/source/item_pool.cpp @@ -266,8 +266,10 @@ const std::array songList = { SONG_OF_HEALING, //SONG_OF_SOARING, SONATA_OF_AWAKENING, - LULLABY_INTRO, - GORONS_LULLABY, + //LULLABY_INTRO, + //GORONS_LULLABY, + PROGRESSIVE_LULLABY, + PROGRESSIVE_LULLABY, NEW_WAVE_BOSSA_NOVA, ELEGY_OF_EMPTINESS, OATH_TO_ORDER @@ -276,8 +278,8 @@ const std::array songList = { static void PlaceVanillaSongs() { PlaceItemInLocation(HMS_SONG_OF_HEALING, SONG_OF_HEALING); PlaceItemInLocation(DEKU_PALACE_IMPRISONED_MONKEY, SONATA_OF_AWAKENING); - PlaceItemInLocation(TWIN_ISLANDS_LULLABY_INTRO, LULLABY_INTRO); - PlaceItemInLocation(GORON_VILLAGE_GORON_LULLABY, GORONS_LULLABY); + PlaceItemInLocation(TWIN_ISLANDS_LULLABY_INTRO, PROGRESSIVE_LULLABY); + PlaceItemInLocation(GORON_VILLAGE_GORON_LULLABY, PROGRESSIVE_LULLABY); PlaceItemInLocation(ROMANI_RANCH_ROMANIS_GAME, EPONAS_SONG); PlaceItemInLocation(GBC_BABY_ZORAS, NEW_WAVE_BOSSA_NOVA); PlaceItemInLocation(IKANA_CASTLE_IKANA_KING, ELEGY_OF_EMPTINESS); @@ -1101,25 +1103,6 @@ void GenerateItemPool() { AddItemToMainPool(OCEANSIDE_SKULLTULA_TOKEN, 30); std::vector SwampSkullLocations = FilterFromPool(allLocations, [](const LocationKey loc) {return Location(loc)->IsCategory(Category::cSwampSkulltula);}); std::vector OceanSkullLocations = FilterFromPool(allLocations, [](const LocationKey loc1) {return Location(loc1)->IsCategory(Category::cOceanSkulltula);}); - - //REPEATABLE ITEMS ON SKULLTOKENS - if(RepeatableItemsOnTokens){ - for (LocationKey loc : SwampSkullLocations) { - Location(loc)->SetRepeatable(true); - } - for (LocationKey loc1 : OceanSkullLocations) { - Location(loc1)->SetRepeatable(true); - } - } - else { - //DEFAULT REPEATABLE TO FALSE - for (LocationKey loc : SwampSkullLocations) { - Location(loc)->SetRepeatable(false); - } - for (LocationKey loc1 : OceanSkullLocations) { - Location(loc1)->SetRepeatable(false); - } - } } else { PlaceVanillaSkulltulaTokens(); diff --git a/source/location_access.cpp b/source/location_access.cpp index 9609513..7c5b4ea 100644 --- a/source/location_access.cpp +++ b/source/location_access.cpp @@ -793,7 +793,7 @@ void AreaTable_Init() { }, { //Locations - LocationAccess(TERMINA_FIELD_GOSSIP_STONES, {[] {return (GoronMask && CanPlay(GoronsLullaby)) || + LocationAccess(TERMINA_FIELD_GOSSIP_STONES, {[] {return (GoronMask && (ProgressiveLullaby >= 2)) || (DekuMask && CanPlay(SonataOfAwakening)) || (ZoraMask && CanPlay(NewWaveBossaNova));}}), LocationAccess(TF_FOUR_STONE_GROTTO_1, {[] {return true;}}), @@ -1267,11 +1267,11 @@ void AreaTable_Init() { areaTable[GORON_VILLAGE_INTERIOR] = Area("Goron Village Interior", "Goron Village Interior", GORON_VILLAGE, { //Events EventAccess(&SpokeToBabyGoron, {[]{return true;}}), - EventAccess(&RockSirloin, {[]{return GoronMask && MagicMeter && (CanUse(FIRE_ARROWS) || (CanPlay(LullabyIntro) && HasFireSourceWithTorch));}}), + EventAccess(&RockSirloin, {[]{return GoronMask && MagicMeter && (CanUse(FIRE_ARROWS) || ((ProgressiveLullaby >= 1) && HasFireSourceWithTorch));}}), }, { //Locations - LocationAccess(GORON_VILLAGE_GORON_LULLABY, {[]{return GoronMask && CanPlay(LullabyIntro);}}), + LocationAccess(GORON_VILLAGE_GORON_LULLABY, {[]{return GoronMask && (ProgressiveLullaby >= 1);}}), }, { //Exits @@ -1334,8 +1334,8 @@ void AreaTable_Init() { }, { //Exits - Entrance(SNOWHEAD_TEMPLE_ENTRANCE, {[]{return GoronMask && MagicMeter && CanPlay(GoronsLullaby);}}), - Entrance(SNOWHEAD_FAIRY_FOUNTAIN, {[]{return GoronMask && MagicMeter && CanPlay(GoronsLullaby);}}), + Entrance(SNOWHEAD_TEMPLE_ENTRANCE, {[]{return GoronMask && MagicMeter && (ProgressiveLullaby >= 2);}}), + Entrance(SNOWHEAD_FAIRY_FOUNTAIN, {[]{return GoronMask && MagicMeter && (ProgressiveLullaby >= 2);}}), Entrance(ROAD_TO_SNOWHEAD, {[]{return true;}}), }); diff --git a/source/logic.cpp b/source/logic.cpp index f51fcb0..413726e 100644 --- a/source/logic.cpp +++ b/source/logic.cpp @@ -142,6 +142,7 @@ namespace Logic { u8 ProgressiveWallet = 0; u8 ProgressiveBombBag = 0; u8 ProgressiveSword = 0; + u8 ProgressiveLullaby = 0; //Keys u8 WoodfallTempleKeys = 0; u8 SnowheadTempleKeys = 0; @@ -697,6 +698,7 @@ namespace Logic { ProgressiveWallet = 0; ProgressiveBombBag = 0; ProgressiveSword = 0; + ProgressiveLullaby = 0; //Keys WoodfallTempleKeys = 0; SnowheadTempleKeys = 0; diff --git a/source/setting_descriptions.cpp b/source/setting_descriptions.cpp index 08c127e..524accb 100644 --- a/source/setting_descriptions.cpp +++ b/source/setting_descriptions.cpp @@ -657,12 +657,6 @@ string_view LanguageDesc = "Selected region differs from console mean "Also, Spanish is incomplete and will currently \n" // "be Latin Spanish regardless of game region"; // /*------------------------------ // -| REPEATABLE ITEMS ON TOKENS | // -------------------------------*/ // -string_view repeatItemsOnTokensDesc = "Allows items potentially needed more than once \n" // - "such as Title Deeds and Anju & Kafei quest items \n"// - "to be placed on gold skulltula drops"; // -/*------------------------------ // | MOON AND MAJORA REQUIREMENTS | // ------------------------------*/ // string_view MoonRemainsRequiredDesc = "Select the number of Boss Remains needed to \n" // diff --git a/source/settings.cpp b/source/settings.cpp index 6c1c6b3..9a65c86 100644 --- a/source/settings.cpp +++ b/source/settings.cpp @@ -389,11 +389,9 @@ namespace Settings { //Item Pool Settings Option ItemPoolValue = Option::U8 ("Item Pool", {"Plentiful", "Balanced", "Scarce", "Minimal" }, {itemPoolPlentiful, itemPoolBalanced, itemPoolScarce, itemPoolMinimal }, OptionCategory::Setting, (u8)ItemPoolSetting::ITEMPOOL_BALANCED); Option RemoveDoubleDefense = Option::Bool("Remove Double Defense", {"No", "Yes"}, {removeDDDesc}); - Option RepeatableItemsOnTokens= Option::Bool("Repeat Items on Tokens",{"No", "Yes"}, {repeatItemsOnTokensDesc}); std::vectoritemPoolSettingsOptions = { &ItemPoolValue, &RemoveDoubleDefense, - &RepeatableItemsOnTokens, }; Option GossipStoneHints = Option::U8("Gossip Stone Hints", { "No Hints", "Need Nothing", "Mask of Truth" }, { gossipStonesHintsDesc }, OptionCategory::Setting, (u8)GossipStoneHintsSetting::HINTS_NEED_NOTHING); diff --git a/source/starting_inventory.cpp b/source/starting_inventory.cpp index 575f306..a663728 100644 --- a/source/starting_inventory.cpp +++ b/source/starting_inventory.cpp @@ -84,7 +84,7 @@ void GenerateStartingInventory() { //AddItemToInventory(SONG_OF_TIME, StartingSongOfTime.Value()); AddItemToInventory(SONG_OF_STORMS, StartingSongOfStorms.Value()); AddItemToInventory(SONATA_OF_AWAKENING, StartingSonataOfAwakening.Value()); - AddItemToInventory(GORONS_LULLABY, StartingGoronsLullaby.Value()); + AddItemToInventory(PROGRESSIVE_LULLABY, StartingGoronsLullaby.Value()); AddItemToInventory(NEW_WAVE_BOSSA_NOVA, StartingNewWaveBossaNova.Value()); AddItemToInventory(ELEGY_OF_EMPTINESS, StartingElegyOfEmptiness.Value()); AddItemToInventory(SONG_OF_HEALING, StartingSongOfHealing.Value());