Skip to content

Commit

Permalink
Expand the Plentiful Item Pool
Browse files Browse the repository at this point in the history
• Adds duplicates for all major items and one tier of every upgrade;
• Adds duplicates for all masks;
• Replaces 48 Pieces of Heart with 12 Heart Containers.

The app menu is adjusted to lock Shuffle Piece of Heart while the Plentiful pool is active.
  • Loading branch information
CharadeNut committed Apr 9, 2024
1 parent d4f244a commit 3d5db14
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 7 deletions.
2 changes: 1 addition & 1 deletion Z3DR
30 changes: 26 additions & 4 deletions source/item_pool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1054,11 +1054,13 @@ void GenerateItemPool() {
}

//PIECEOFHEART SHUFFLE
if(ShufflePiecesOfHeart){
AddItemToMainPool(PIECE_OF_HEART,48);//52Total-4MoonHearts
if(ShufflePiecesOfHeart) {
if(ItemPoolValue.IsNot(ItemPoolSetting::ITEMPOOL_PLENTIFUL)) {
AddItemToMainPool(PIECE_OF_HEART,48);//52Total-4MoonHearts}
}
}

else{
else {
PlaceVanillaHeartPieces();
}

Expand Down Expand Up @@ -1117,7 +1119,7 @@ void GenerateItemPool() {
//TO-DO----SHOP SANITY
//for now... its all vanilla lol
//if (Settings::Shopsanity.Is(ShopsanitySetting::SHOPSANITY_OFF) || Settings::Shopsanity.Is(ShopsanitySetting::SHOPSANITY_ZERO)) {
AddItemsToPool(ItemPool, normalRupees);
//AddItemsToPool(ItemPool, normalRupees);
PlaceVanillaShopItems();
// } else { //Shopsanity 1-4, random
//AddItemsToPool(ItemPool, shopsanityRupees); //Shopsanity gets extra large rupees
Expand Down Expand Up @@ -1252,6 +1254,26 @@ void GenerateItemPool() {
}

if (ItemPoolValue.Is(ItemPoolSetting::ITEMPOOL_PLENTIFUL)) {
AddItemsToPool(ItemPool, maskList);
AddItemToMainPool(DEKU_MASK);
AddItemToMainPool(GORON_MASK);
AddItemToMainPool(ZORA_MASK);
AddItemToMainPool(FIERCE_DEITY_MASK);
AddItemToMainPool(PROGRESSIVE_BOW);
AddItemToMainPool(FIRE_ARROWS);
AddItemToMainPool(ICE_ARROWS);
AddItemToMainPool(LIGHT_ARROWS);
AddItemToMainPool(LENS_OF_TRUTH);
AddItemToMainPool(HOOKSHOT);
AddItemToMainPool(PICTOGRAPH_BOX);
AddItemToMainPool(MIRROR_SHIELD);
AddItemToMainPool(GREAT_FAIRYS_SWORD);
AddItemToMainPool(PROGRESSIVE_SWORD);
AddItemToMainPool(PROGRESSIVE_WALLET);
AddItemToMainPool(PROGRESSIVE_MAGIC_METER);
AddItemToMainPool(SPIN_ATTACK);
AddItemToMainPool(DOUBLE_DEFENSE);
AddItemToMainPool(HEART_CONTAINER, 12);

//Plentiful small keys
if (Keysanity.Is(KeysanitySetting::KEYSANITY_ANYWHERE)) {
Expand Down
7 changes: 6 additions & 1 deletion source/setting_descriptions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,12 @@ string_view advancedTrapDmgDesc = "**OPTION CURRENTLY WIP**\n"
/*------------------------------ //
| ITEM POOL | //
------------------------------*/ //
string_view itemPoolPlentiful = "Extra major items are added to the pool."; //
string_view itemPoolPlentiful = "In addition to the regular pool:\n" //
"- A duplicate for each major item and upgrade;\n" //
"- A duplicate for each mask;\n" //
"- A duplicate for each key;\n" //
"- Heart Containers replace most Pieces of Heart.\n\n"
"This will force enable Shuffle Piece of Heart."; //
string_view itemPoolBalanced = "Original item pool."; //
string_view itemPoolScarce = "Some excess items are removed, including health\n"//
"upgrades."; //
Expand Down
10 changes: 9 additions & 1 deletion source/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -639,7 +639,7 @@ namespace Settings {
//ctx.shuffleFierceDeity = (ShuffleFierceDeity) ? 1:0;
//ctx.shuffleMasks = (ShuffleMasks) ? 1 : 0;
ctx.shuffleGreatFairyRewards = ShuffleGFRewards.Value<u8>();
//ctx.shufflePiecesOfHeart = (ShufflePiecesOfHeart) ? 1:0;
ctx.shufflePiecesOfHeart = (ShufflePiecesOfHeart) ? 1:0;

ctx.iceTrapValue = IceTrapValue.Value<u8>();
//ctx.randomTrapDmg = RandomTrapDmg.Value<u8>();
Expand Down Expand Up @@ -1343,6 +1343,14 @@ namespace Settings {
//will force Starting Age to Child).
void ForceChange(u32 kDown, Option* currentSetting) {

//Lock Shuffle Heart Pieces if the item pool is set to Plentiful, since heart piece locations are used to extra items
if (ItemPoolValue.Is(ItemPoolSetting::ITEMPOOL_PLENTIFUL)) {
ShufflePiecesOfHeart.SetSelectedIndex(1);
ShufflePiecesOfHeart.Lock();
} else {
ShufflePiecesOfHeart.Unlock();
}

//Groups the item categories; bottles are handled separately because the proper item is Empty Bottle (1)
CollapseCategory(StartingInventoryToggle, 3, 25);
CollapseCategory(StartingMaskToggle, 26, 50);
Expand Down

0 comments on commit 3d5db14

Please sign in to comment.