Shipwright/soh/soh/Enhancements/debugger/debugSaveEditor.h

415 lines
23 KiB
C
Raw Normal View History

2022-04-03 15:47:24 -04:00
#pragma once
Randomizer v2 (#1065) * Revert changes to GetItemFromGet * Fixes Ganon's Boss Key shuffled while regular boss Keys aren't. * Enum + combo box * Add obtainability checks correctly * combobox title rename + no number tracking * Fix repeatable purchases and bottles rendering incorrectly * Move shopsanity option in GUI * Struct instead of ImVec + basic comportment for all case * Attempt to fix odd build issue * Cast randoGet for ganons boss key * Remove redundancy in KD room * Update logic Cvar names * Fix Ganons Trials coming from old save files. Fixes #1365 * Fixes crash when entering Ganon's Castle lobby on linux. * Makes `Item_Give` safe to use with a NULL globalCtx. This should allow it's use for giving items to Link's Pocket during rando save initialization. * Converts Song from Impa to use `Item_Give` * Adds more options for Link's starting item. * Removes unneeded `GiveLinkItem` functions. * and make it build * bring back new rando dropdown * gSaveContext access in GameMenuBar.cpp * Implement Skip Scarecrow's Song * Reimplement progressive Bombchus * Rando-next: Deku Nut and Seed ammo gives a blue rupee Fixes #1390 * Fixes Link starting with BGS * Persist item tracker notes * Adjust Hooks include * Use SohImGui::RequestCvarSaveOnNextTick * Fix issues from LUS refactor * Fix for overriding deku scrub messages * Fix mistake from merge oops * Restore checkboxes to enhancements menu These got lost in the merge * Update location access logic Including MQ locations in Spirit and GC now * Implement rando bombchu drops * Missing break * Simplify mudwall collision check There was no need to have a second collider specifically for Ice Arrow hits * Update settings.cpp * Simplify mudwall collision check * Restore checkboxes in menu Accidentally lost these during merge * Clean up bool * Update logic Cvar name * Fixed capacity on ammmo tracking * Fix for beans obtainability * Hook into file delete and clear notes * Incorporate magic arrows in rando settings * Update tooltip To inform the player that they might have to reload the room if they're enabling this for the first time. * Update tooltip * Add line break in tooltip * Tooltip wording + line break * tweak on main logic * All color logic for all types * Fix: changes to please new LUS * Ensure itemTrackerNotes vector is not fully empty * Implement's Tycoon Wallet. * Refactor DrawItemCount and Use EnhancementCombobox for tracker capacity options * small tweaks and rename * always display XX/YY when in ammo/capacity mode * Move all merchant messages to be generated on file load * added hovertext for the number display * Swap german and french translations for shop messages * Set key colors to be on by default * Add another flag to skip mask shop * Fix Sold Out bug * Fix gerudo keys, add disabled checkbox * tooltip line break * Add trials required and merchant prices to save file instead of loading from active spoiler log * Remove trialsRequired persisting in save manager * Adds slotIndex to girla (shop item actor) and uses that for IdentifyShopItem. * Fix issue when merchantPrices is empty * Fix for a single zeroed merchantPrice entry * Fix #1417 * Implements items selling out and fixes issues with purchasing some items. * Fixes order of operations so Rupees will be spent. * Fixes sold out items not getting overwritten by the randomized info. * Clarify var names and comments Also preserve chain platform cutscene in spirit based on Link's position * Remove !=0 from cvar check * Clarify var names and comments * Rename randomizerMerchantPrices to merchantPrices * Handle shop items in SaveManager * Fix merge mistake * Base whats in the bazaar shop on entranceIndex instead of age * Tidy up chain platform cutscene check * Fix merge error Didn't mean to have Zhora changes in here yet * Use 3drando item table for parsing spoiler names * Use another nested method instead of one at the top level to fetch the table * Add missing newline * Remove log * Respect custom draw functions * Fix issues with rendering songs * Fix localized item names for shopsanity * Implements a larger array of Sprites for the Icon Hash. * Uses the hash instead of seed for spoilerfile name and icons. * Removes some unused functions and variables in `spoiler_log.cpp` * Prevents leading 0s added to hash from being in file name * Changes filename format to icon indexes separated by dashes * Hopefully makes Jenkins happy * Hopefully makes Jenkins happy * [Rando] Child Gerudo Fortress 37th Heartpiece randomized Fixes #1071 * Add descriptions to save editor flags editor, and added randomizer flags (#1386) * Add descriptions to save editor flags editor, and added randomizer flags * Hide randomizer flags when not on a randomizer save * Move flag descriptions to header file * Update soh/soh/Enhancements/debugger/debugSaveEditor.h * Update soh/soh/Enhancements/debugger/debugSaveEditor.h * Fix merge error * crash on pause menu on linux (only in appimage) Fixes #1437 * Applies fix to Song from Impa as well. * Allow buying tunics as child when shopsanity is on * Fix for custom draw methods overriding sold out sign * Simplify logic around shopsanity and fix some issues * Fix dungeon reward stone rotation and add particles * Fix some issues with ice traps * Fix adult wallet having its own max capacity * Fix amount of keys given for BotW * format * Use EnGirlAShopItem enum instead of raw hex values * [#1434] Renders non-warp songs more consistently with warp songs * A few changes around merchant messages * Various changes from PR feedback * Rando: Junk Hint missing french translation * Typo * Fix free scrub being at 0 instead of TEXT_SCRUB_RANDOM * Replace magic numbers in message handler * Update soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com> * Update soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com> * Fix BGS softlock for shopsanity * Support tycoon wallet on tracker * Revert "Fix BGS softlock for shopsanity" This reverts commit 5fdb961ea460fb9a035cf0bb6ae77bfeedc1de0f. * [#1053] Resolves an issue with shop items and bombchu bowling where BGS would display two message boxes * Implements some necessary plumbing and resolves several Ice Trap Softlocks. Adds a way for an item entry to tell what type of check it came from (NPC vs Chest vs Freestanding, etc.) Sets this value from chests and item00 actors. Relocates pendingIceTraps to save context so it can persist through cutscenes and get stored on save init for Link's Pocket and Song from Impa. Restructures pendingIceTraps into a counter rather than a true or false, so that we can be frozen multiple times in a row if applicable (atm that should only be at the start of a run if Link's Pocket and Song from Impa were both Ice Traps). Adds a textbox for Ice Traps and a special case of holding up nothing in the get item process. This fixes all the cases where Ice Traps would softlock due to the actor giving the item expecting a closing textbox. After holding the item above his head Link increments the pendingIceTraps counter by one and sets whatever flag he has pending. None of the above plumbing applies to Ice Traps from chests, those work exactly the same as before, as do freestanding item00 ice traps (thanks to the additional check for ITEM_FROM_FREESTANDING. OoT and Ruto's Letter count as NPC's, so they get the FOWL text box and set a pending ice trap rather than immediately freezing, since Link weill be in the water. Link will get frozen the next time he touches land, which in the case of OoT is after the fade to white and right before the Song of Time check. Fixes all the other softlocks I'm aware of, including Fishing, Bombchu Bowling, Skull Kid, and losing the second Gerudo Archery check. * fix bgs check in player * move bgs logic for tokensanity into MOD_NONE check * set bgs flag before `Item_Give`ing * move bgs flag into `MOD_NONE` check in girla * use existing check in `z_player` * Adds comment explaining the decision to default ITEM_FROM_NPC. * Rename pendingIceTraps to pendingIceTrapCount * Adds some RANDOTODO comments about cleaning up a couple things. * Merge branch 'develop-zhora' into ztornn * manually restore changes to `z_player.c` * Fix after some ice trap prepwork from earlier * Actual fix * Woops * More rupee names * Actually fix it * Add back comment * Fix Skip Scarecrow Song * Fix ruto's letter and LH sun stick rendering * Also fixes it for treasure chest game * Tweak: Rando French Wallet * ADD: French Tycoon * Hide dungeon items/notes by default * [#1301] Fix issue with UI not restoring after getting an item from biggoron * Update soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c * Update soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c * Fix random crash that only affected one person for some reason Co-authored-by: Garrett Cox <garrettjcox@gmail.com> Co-authored-by: Christopher Leggett <chris@leggett.dev> Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com> Co-authored-by: Sarge-117 <adam_branston@outlook.com> Co-authored-by: briaguya <briaguya@alice> Co-authored-by: aMannus <mannusmenting@gmail.com> Co-authored-by: lil David <1337lilDavid@gmail.com> Co-authored-by: Sarge-117 <108380086+Sarge-117@users.noreply.github.com> Co-authored-by: louist103 <35883445+louist103@users.noreply.github.com>
2022-09-21 00:50:22 -04:00
#include <array>
#include <map>
#include <string>
#include <vector>
#include <soh/Enhancements/randomizer/randomizer_inf.h>
2022-04-03 15:47:24 -04:00
void InitSaveEditor();
Randomizer v2 (#1065) * Revert changes to GetItemFromGet * Fixes Ganon's Boss Key shuffled while regular boss Keys aren't. * Enum + combo box * Add obtainability checks correctly * combobox title rename + no number tracking * Fix repeatable purchases and bottles rendering incorrectly * Move shopsanity option in GUI * Struct instead of ImVec + basic comportment for all case * Attempt to fix odd build issue * Cast randoGet for ganons boss key * Remove redundancy in KD room * Update logic Cvar names * Fix Ganons Trials coming from old save files. Fixes #1365 * Fixes crash when entering Ganon's Castle lobby on linux. * Makes `Item_Give` safe to use with a NULL globalCtx. This should allow it's use for giving items to Link's Pocket during rando save initialization. * Converts Song from Impa to use `Item_Give` * Adds more options for Link's starting item. * Removes unneeded `GiveLinkItem` functions. * and make it build * bring back new rando dropdown * gSaveContext access in GameMenuBar.cpp * Implement Skip Scarecrow's Song * Reimplement progressive Bombchus * Rando-next: Deku Nut and Seed ammo gives a blue rupee Fixes #1390 * Fixes Link starting with BGS * Persist item tracker notes * Adjust Hooks include * Use SohImGui::RequestCvarSaveOnNextTick * Fix issues from LUS refactor * Fix for overriding deku scrub messages * Fix mistake from merge oops * Restore checkboxes to enhancements menu These got lost in the merge * Update location access logic Including MQ locations in Spirit and GC now * Implement rando bombchu drops * Missing break * Simplify mudwall collision check There was no need to have a second collider specifically for Ice Arrow hits * Update settings.cpp * Simplify mudwall collision check * Restore checkboxes in menu Accidentally lost these during merge * Clean up bool * Update logic Cvar name * Fixed capacity on ammmo tracking * Fix for beans obtainability * Hook into file delete and clear notes * Incorporate magic arrows in rando settings * Update tooltip To inform the player that they might have to reload the room if they're enabling this for the first time. * Update tooltip * Add line break in tooltip * Tooltip wording + line break * tweak on main logic * All color logic for all types * Fix: changes to please new LUS * Ensure itemTrackerNotes vector is not fully empty * Implement's Tycoon Wallet. * Refactor DrawItemCount and Use EnhancementCombobox for tracker capacity options * small tweaks and rename * always display XX/YY when in ammo/capacity mode * Move all merchant messages to be generated on file load * added hovertext for the number display * Swap german and french translations for shop messages * Set key colors to be on by default * Add another flag to skip mask shop * Fix Sold Out bug * Fix gerudo keys, add disabled checkbox * tooltip line break * Add trials required and merchant prices to save file instead of loading from active spoiler log * Remove trialsRequired persisting in save manager * Adds slotIndex to girla (shop item actor) and uses that for IdentifyShopItem. * Fix issue when merchantPrices is empty * Fix for a single zeroed merchantPrice entry * Fix #1417 * Implements items selling out and fixes issues with purchasing some items. * Fixes order of operations so Rupees will be spent. * Fixes sold out items not getting overwritten by the randomized info. * Clarify var names and comments Also preserve chain platform cutscene in spirit based on Link's position * Remove !=0 from cvar check * Clarify var names and comments * Rename randomizerMerchantPrices to merchantPrices * Handle shop items in SaveManager * Fix merge mistake * Base whats in the bazaar shop on entranceIndex instead of age * Tidy up chain platform cutscene check * Fix merge error Didn't mean to have Zhora changes in here yet * Use 3drando item table for parsing spoiler names * Use another nested method instead of one at the top level to fetch the table * Add missing newline * Remove log * Respect custom draw functions * Fix issues with rendering songs * Fix localized item names for shopsanity * Implements a larger array of Sprites for the Icon Hash. * Uses the hash instead of seed for spoilerfile name and icons. * Removes some unused functions and variables in `spoiler_log.cpp` * Prevents leading 0s added to hash from being in file name * Changes filename format to icon indexes separated by dashes * Hopefully makes Jenkins happy * Hopefully makes Jenkins happy * [Rando] Child Gerudo Fortress 37th Heartpiece randomized Fixes #1071 * Add descriptions to save editor flags editor, and added randomizer flags (#1386) * Add descriptions to save editor flags editor, and added randomizer flags * Hide randomizer flags when not on a randomizer save * Move flag descriptions to header file * Update soh/soh/Enhancements/debugger/debugSaveEditor.h * Update soh/soh/Enhancements/debugger/debugSaveEditor.h * Fix merge error * crash on pause menu on linux (only in appimage) Fixes #1437 * Applies fix to Song from Impa as well. * Allow buying tunics as child when shopsanity is on * Fix for custom draw methods overriding sold out sign * Simplify logic around shopsanity and fix some issues * Fix dungeon reward stone rotation and add particles * Fix some issues with ice traps * Fix adult wallet having its own max capacity * Fix amount of keys given for BotW * format * Use EnGirlAShopItem enum instead of raw hex values * [#1434] Renders non-warp songs more consistently with warp songs * A few changes around merchant messages * Various changes from PR feedback * Rando: Junk Hint missing french translation * Typo * Fix free scrub being at 0 instead of TEXT_SCRUB_RANDOM * Replace magic numbers in message handler * Update soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com> * Update soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com> * Fix BGS softlock for shopsanity * Support tycoon wallet on tracker * Revert "Fix BGS softlock for shopsanity" This reverts commit 5fdb961ea460fb9a035cf0bb6ae77bfeedc1de0f. * [#1053] Resolves an issue with shop items and bombchu bowling where BGS would display two message boxes * Implements some necessary plumbing and resolves several Ice Trap Softlocks. Adds a way for an item entry to tell what type of check it came from (NPC vs Chest vs Freestanding, etc.) Sets this value from chests and item00 actors. Relocates pendingIceTraps to save context so it can persist through cutscenes and get stored on save init for Link's Pocket and Song from Impa. Restructures pendingIceTraps into a counter rather than a true or false, so that we can be frozen multiple times in a row if applicable (atm that should only be at the start of a run if Link's Pocket and Song from Impa were both Ice Traps). Adds a textbox for Ice Traps and a special case of holding up nothing in the get item process. This fixes all the cases where Ice Traps would softlock due to the actor giving the item expecting a closing textbox. After holding the item above his head Link increments the pendingIceTraps counter by one and sets whatever flag he has pending. None of the above plumbing applies to Ice Traps from chests, those work exactly the same as before, as do freestanding item00 ice traps (thanks to the additional check for ITEM_FROM_FREESTANDING. OoT and Ruto's Letter count as NPC's, so they get the FOWL text box and set a pending ice trap rather than immediately freezing, since Link weill be in the water. Link will get frozen the next time he touches land, which in the case of OoT is after the fade to white and right before the Song of Time check. Fixes all the other softlocks I'm aware of, including Fishing, Bombchu Bowling, Skull Kid, and losing the second Gerudo Archery check. * fix bgs check in player * move bgs logic for tokensanity into MOD_NONE check * set bgs flag before `Item_Give`ing * move bgs flag into `MOD_NONE` check in girla * use existing check in `z_player` * Adds comment explaining the decision to default ITEM_FROM_NPC. * Rename pendingIceTraps to pendingIceTrapCount * Adds some RANDOTODO comments about cleaning up a couple things. * Merge branch 'develop-zhora' into ztornn * manually restore changes to `z_player.c` * Fix after some ice trap prepwork from earlier * Actual fix * Woops * More rupee names * Actually fix it * Add back comment * Fix Skip Scarecrow Song * Fix ruto's letter and LH sun stick rendering * Also fixes it for treasure chest game * Tweak: Rando French Wallet * ADD: French Tycoon * Hide dungeon items/notes by default * [#1301] Fix issue with UI not restoring after getting an item from biggoron * Update soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c * Update soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c * Fix random crash that only affected one person for some reason Co-authored-by: Garrett Cox <garrettjcox@gmail.com> Co-authored-by: Christopher Leggett <chris@leggett.dev> Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com> Co-authored-by: Sarge-117 <adam_branston@outlook.com> Co-authored-by: briaguya <briaguya@alice> Co-authored-by: aMannus <mannusmenting@gmail.com> Co-authored-by: lil David <1337lilDavid@gmail.com> Co-authored-by: Sarge-117 <108380086+Sarge-117@users.noreply.github.com> Co-authored-by: louist103 <35883445+louist103@users.noreply.github.com>
2022-09-21 00:50:22 -04:00
typedef enum {
EVENT_CHECK_INF,
ITEM_GET_INF,
INF_TABLE,
EVENT_INF,
RANDOMIZER_INF,
} FlagTableType;
typedef struct {
const char* name;
FlagTableType flagTableType;
uint32_t size;
std::map<uint16_t, const char*> flagDescriptions;
} FlagTable;
// Reference https://tcrf.net/Proto:The_Legend_of_Zelda:_Ocarina_of_Time_Master_Quest/Event_Editor
// The source was last referenced on 2022-09-03 and had a last updated value of 2020-05-02
const std::vector<FlagTable> flagTables = {
{ "Event Check Inf Flags", EVENT_CHECK_INF, 0x0D, {
{ 0x02, "First Spoke to Mido" },
{ 0x03, "Complained About Mido to Saria" },
{ 0x04, "Showed Mido Sword & Shield" },
{ 0x05, "Deku Tree Opened Mouth" },
{ 0x06, "Spoke to Saria After Deku Tree's Death" },
{ 0x07, "Obtained Kokiri Emerald & Deku Tree Dead" },
{ 0x09, "Used Deku Tree Blue Warp" },
{ 0x0A, "Played Saria's Song for Mido as Adult" },
{ 0x0C, "Met Deku Tree" },
{ 0x10, "Spoke to Child Malon at Castle or Market" },
{ 0x11, "Spoke to Ingo at Ranch before Talon returns" },
{ 0x12, "Obtained Pocket Egg" },
{ 0x13, "Woke Talon" },
{ 0x14, "Talon Fled Hyrule Castle" },
{ 0x15, "Spoke to Child Malon at Ranch" },
{ 0x16, "Invited to Sing With Child Malon" },
{ 0x17, "Great Deku Tree is Dead" },
{ 0x18, "Obtained Epona" },
{ 0x19, "Obtained Kokiri's Emerald" },
{ 0x1B, "Rented Horse From Ingo" },
{ 0x1C, "Spoke to Mido After Deku Tree's Death" },
{ 0x1D, "Destroyed the Royal Family's Tomb" },
{ 0x1E, "Won the Cow in Malon's Race" },
{ 0x23, "Bombed Dodongo's Cavern Entrance" },
{ 0x25, "Used Dodongo's Cavern Blue Warp" },
{ 0x2F, "Death Mountain Erupted" },
{ 0x30, "Spoke to a Zora" },
{ 0x31, "Obtained Ruto's Letter" },
{ 0x33, "King Zora Moved Aside" },
{ 0x37, "Used Jabu-Jabu Blue Warp" },
{ 0x38, "Obtained Silver Scale" },
{ 0x39, "Opened Entrance to Zora's Domain" },
{ 0x3A, "Offered Fish to Jabu-Jabu" },
{ 0x3B, "Began Nabooru Battle" },
{ 0x3C, "Finished Nabooru Battle" },
{ 0x40, "Obtained Zelda's Letter" },
{ 0x43, "Obtained Ocarina of Time" },
{ 0x45, "Pulled Master Sword from Pedestal" },
{ 0x48, "Used Forest Temple Blue Warp" },
{ 0x49, "Used Fire Temple Blue Warp" },
{ 0x4A, "Used Water Temple Blue Warp" },
{ 0x4B, "Opened the Door of Time" },
{ 0x4D, "Rainbow Bridge Built by Sages" },
{ 0x4E, "Caught by Hyrule Castle Guards" },
{ 0x4F, "Entered the Master Sword Chamber" },
{ 0x50, "Learned Minuet of Forest" },
{ 0x51, "Learned Bolero of Fire" },
{ 0x52, "Learned Serenade of Water" },
{ 0x54, "Learned Nocturne of Shadow" },
{ 0x55, "Sheik Moved From Sword Pedestal" },
{ 0x57, "Learned Saria's Song" },
{ 0x59, "Learned Zelda's Lullaby" },
{ 0x5A, "Learned Sun's Song" },
{ 0x5B, "Learned Song of Storms" },
{ 0x65, "Played Song of Storms in Windmill" },
{ 0x67, "Drained Well in Kakariko Village" },
{ 0x68, "Played Gerudo Archery Minigame" },
{ 0x69, "Restored Lake Hylia's Water" },
{ 0x6A, "Woke Talon in Kakariko" },
{ 0x6B, "Spoke to Talon After Saving Ranch" },
{ 0x6F, "Spoke to Kaepora Gaebora by Lost Woods" },
{ 0x70, "Began Gohma Battle" },
{ 0x71, "Began King Dodongo Battle" },
{ 0x72, "Began Phantom Ganon Battle" },
{ 0x73, "Began Volvagia Battle" },
{ 0x74, "Began Morpha Battle" },
{ 0x75, "Began Twinrova Battle" },
{ 0x76, "Began Barinade Battle" },
{ 0x77, "Began Bongo Bongo Battle" },
{ 0x78, "Began Ganondorf Battle" },
{ 0x80, "Zelda Fled Hyrule Castle" },
{ 0x82, "Bridge Unlocked (After Zelda Escape Cutscene)" },
{ 0x8C, "Paid Back Keaton Mask Fee" },
{ 0x8D, "Paid Back Skull Mask Fee" },
{ 0x8E, "Paid Back Spooky Mask Fee" },
{ 0x8F, "Paid Back Bunny Hood Fee" },
{ 0x90, "Rescued Red Carpenter" },
{ 0x91, "Rescued Yellow Carpenter" },
{ 0x92, "Rescued Blue Carpenter" },
{ 0x93, "Rescued Green Carpenter" },
{ 0x94, "Spoke to Nabooru in Spirit Temple" },
{ 0x95, "Nabooru Captured by Twinrova" },
{ 0x96, "Spoke to Cursed Man in Skulltula House" },
{ 0x9C, "Played Song for Scarecrow as Adult" },
{ 0xA0, "Entered Hyrule Field" },
{ 0xA1, "Entered Death Mountain Trail" },
{ 0xA3, "Entered Kakariko Village" },
{ 0xA4, "Entered Zora's Domain" },
{ 0xA5, "Entered Hyrule Castle" },
{ 0xA6, "Entered Goron City" },
{ 0xA7, "Entered Temple of Time" },
{ 0xA8, "Entered Deku Tree" },
{ 0xA9, "Learned Song of Time" },
{ 0xAA, "Bongo Bongo Escaped Well" },
{ 0xAC, "Learned Requiem of Spirit" },
{ 0xAD, "Completed Spirit Trial" },
{ 0xB0, "Entered Dodongo's Cavern" },
{ 0xB1, "Entered Lake Hylia" },
{ 0xB2, "Entered Gerudo Valley" },
{ 0xB3, "Entered Gerudo's Fortress" },
{ 0xB4, "Entered Lon Lon Ranch" },
{ 0xB5, "Entered Jabu-Jabu's Belly" },
{ 0xB6, "Entered Graveyard" },
{ 0xB7, "Entered Zora's Fountain" },
{ 0xB8, "Entered Desert Colossus" },
{ 0xB9, "Entered Death Mountain Crater" },
{ 0xBA, "Entered Ganon's Castle (Exterior)" },
{ 0xBB, "Completed Forest Trial" },
{ 0xBC, "Completed Water Trial" },
{ 0xBD, "Completed Shadow Trial" },
{ 0xBE, "Completed Fire Trial" },
{ 0xBF, "Completed Light Trial" },
{ 0xC0, "Nabooru Ordered to Fight by Twinrova" },
{ 0xC1, "Spoke to Saria on Lost Woods Bridge" },
{ 0xC3, "Dispelled Ganon's Tower Barrier" },
{ 0xC4, "Returned to Temple of Time With All Medallions" },
{ 0xC5, "Sheik, Spawned at Master Sword Pedestal as Adult" },
{ 0xC6, "Spoke to Deku Tree Sprout" },
{ 0xC7, "Watched Ganon's Tower Collapse / Caught by Gerudo" },
{ 0xC8, "Obtained Spirit Medallion" },
{ 0xC9, "Demo_Effect, Temple of Time Warp in blue aura + sfx the first time you spawn as Adult" },
{ 0xD0, "Obtained Frogs' Piece of Heart" },
{ 0xD1, "Played Zelda's Lullaby for Frogs" },
{ 0xD2, "Played Epona's Song for Frogs" },
{ 0xD3, "Played Sun's Song for Frogs" },
{ 0xD4, "Played Saria's Song for Frogs" },
{ 0xD5, "Played Song of Time for Frogs" },
{ 0xD6, "Played Song of Storms for Frogs" },
{ 0xDA, "Obtained Adult's Wallet" },
{ 0xDB, "Obtained Stone of Agony" },
{ 0xDC, "Obtained Giant's Wallet" },
{ 0xDD, "Obtained Skulltula House's Bombchu" },
{ 0xDE, "Obtained Skulltula House's Piece of Heart" },
} },
{ "Item Get Inf Flags", ITEM_GET_INF, 0x03, {
{ 0x02, "Obtained Super Cucco Bottle" },
{ 0x03, "Bought Bombchu (Shelf 2: Top Right)" },
{ 0x04, "Bought Bombchu (Shelf 1: Bot. Right)" },
{ 0x05, "Bought Bombchu (Shelf 1: Top Left)" },
{ 0x06, "Bought Bombchu (Shelf 2: Bot. Left)" },
{ 0x07, "Bought Bombchu (Shelf 2: Bot. Right)" },
{ 0x08, "Bought Bombchu (Shelf 1: Top Right)" },
{ 0x09, "Bought Bombchu (Shelf 1: Bot. Left)" },
{ 0x0A, "Bought Bombchu (Shelf 2: Top Left)" },
{ 0x0B, "Obtained Scrub's Heart Piece" },
{ 0x0C, "Obtained Cucco Lady's Bottle" },
{ 0x0D, "Obtained Bullet Bag Upgrade (Market)" },
{ 0x0E, "Obtained Big Quiver" },
{ 0x0F, "Obtained Biggest Quiver" },
{ 0x10, "Obtained Scientist's Heart Piece" },
{ 0x11, "Obtained Bowling Bomb Bag Upgrade" },
{ 0x12, "Obtained Bowling Heart Piece" },
{ 0x13, "Obtained Deku Seeds" },
{ 0x15, "Obtained Roof Guy's Heart Piece" },
{ 0x16, "Obtained Skullkid's Heart Piece" },
{ 0x17, "Obtained Skullkids' Heart Piece" },
{ 0x18, "Obtained Farore's Wind" },
{ 0x19, "Obtained Din's Fire" },
{ 0x1A, "Obtained Nayru's Love" },
{ 0x1C, "Obtained Grave-Dig Heart Piece" },
{ 0x1D, "Obtained Bullet Bag Upgrade (Woods)" },
{ 0x1E, "Obtained Deku Stick Upgrade (Stage)" },
{ 0x1F, "Obtained Deku Nut Upgrade (Stage)" },
{ 0x23, "Obtained Keaton Mask" },
{ 0x24, "Obtained Skull Mask" },
{ 0x25, "Obtained Spooky Mask" },
{ 0x26, "Obtained Bunny Hood" },
{ 0x2A, "Obtained Mask of Truth" },
{ 0x2C, "Obtained Pocket Egg" },
{ 0x2E, "Obtained Cojiro" },
{ 0x30, "Obtained Odd Potion" },
{ 0x31, "Obtained Poacher's Saw" },
{ 0x38, "Sold Keaton Mask" },
{ 0x39, "Sold Skull Mask" },
{ 0x3A, "Sold Spooky Mask" },
{ 0x3B, "Sold Bunny Hood" },
{ 0x3F, "Obtained Mask of Truth" },
} },
{ "Inf Flags", INF_TABLE, 0x1D, {
{ 0x00, "Greeted by Saria" },
{ 0x01, "Spoke to Saria About Obtaining Fairy" },
{ 0x03, "Complained About Mido to Saria" },
{ 0x05, "Spoke to Saria in Saria's House" },
{ 0x0C, "Mido Asked to See Sword & Shield" },
{ 0x15, "Spoke to Mido in Lost Woods as Adult" },
{ 0x19, "Told Mido Saria Won't Return" },
{ 0x1E, "Spoke to Kokiri Girl by Jumping Stones" },
{ 0x22, "Spoke to Kokiri Boy Guarding Forest Exit" },
{ 0x24, "Spoke to Kokiri Boy Cutting Grass" },
{ 0x26, "Spoke to Kokiri Girl on Shop Awning" },
{ 0x28, "Spoke to Kokiri Girl About Training Center" },
{ 0x31, "Spoke to Kokiri Boy on Bed in Mido's House" },
{ 0x51, "Spoke to Kokiri Girl in Saria's House" },
{ 0x59, "Spoke to Know-It-All Bro. About Temple" },
{ 0x61, "Spoke to Know-It-All Bro. About Saria" },
{ 0x66, "Spoke to Deku Tree Sprout After Cutscene" },
{ 0x6C, "Spoke to Dying Knight" },
{ 0x76, "Showed Zelda's Letter to Gate Guard" },
{ 0x77, "Gate Guard Put On Keaton Mask" },
{ 0x7E, "Spoke to Talon in Lon Lon Ranch House" },
{ 0x84, "Spoke to Child Malon at Castle or Market" },
{ 0x85, "Child Malon Said Epona Was Afraid of You" },
{ 0x8B, "Entered Hyrule Castle" },
{ 0x94, "Spoke to Ingo at Ranch Before Talon's Return" },
{ 0x97, "Spoke to Ingo at Ranch" },
{ 0x9A, "Spoke to Ingo as Adult" },
{ 0xA2, "Refused Ingo's 50 Rupee Rental Request" },
{ 0xAB, "Rode a Horse at Ingo's Ranch" },
{ 0xB0, "Spoke to Medigoron as Child" },
{ 0xB1, "Spoke to Medigoron as Adult" },
{ 0xB6, "Spoke to Poe Collector in Ruined Market" },
{ 0xB7, "Spoke to Fado in Kokiri Forest as Child" },
{ 0xB8, "Spoke to Malon After Saving Ranch" },
{ 0xB9, "Spoke to Malon on Horseback" },
{ 0xBC, "Fado requested Odd Potion" },
Randomizer v2 (#1065) * Revert changes to GetItemFromGet * Fixes Ganon's Boss Key shuffled while regular boss Keys aren't. * Enum + combo box * Add obtainability checks correctly * combobox title rename + no number tracking * Fix repeatable purchases and bottles rendering incorrectly * Move shopsanity option in GUI * Struct instead of ImVec + basic comportment for all case * Attempt to fix odd build issue * Cast randoGet for ganons boss key * Remove redundancy in KD room * Update logic Cvar names * Fix Ganons Trials coming from old save files. Fixes #1365 * Fixes crash when entering Ganon's Castle lobby on linux. * Makes `Item_Give` safe to use with a NULL globalCtx. This should allow it's use for giving items to Link's Pocket during rando save initialization. * Converts Song from Impa to use `Item_Give` * Adds more options for Link's starting item. * Removes unneeded `GiveLinkItem` functions. * and make it build * bring back new rando dropdown * gSaveContext access in GameMenuBar.cpp * Implement Skip Scarecrow's Song * Reimplement progressive Bombchus * Rando-next: Deku Nut and Seed ammo gives a blue rupee Fixes #1390 * Fixes Link starting with BGS * Persist item tracker notes * Adjust Hooks include * Use SohImGui::RequestCvarSaveOnNextTick * Fix issues from LUS refactor * Fix for overriding deku scrub messages * Fix mistake from merge oops * Restore checkboxes to enhancements menu These got lost in the merge * Update location access logic Including MQ locations in Spirit and GC now * Implement rando bombchu drops * Missing break * Simplify mudwall collision check There was no need to have a second collider specifically for Ice Arrow hits * Update settings.cpp * Simplify mudwall collision check * Restore checkboxes in menu Accidentally lost these during merge * Clean up bool * Update logic Cvar name * Fixed capacity on ammmo tracking * Fix for beans obtainability * Hook into file delete and clear notes * Incorporate magic arrows in rando settings * Update tooltip To inform the player that they might have to reload the room if they're enabling this for the first time. * Update tooltip * Add line break in tooltip * Tooltip wording + line break * tweak on main logic * All color logic for all types * Fix: changes to please new LUS * Ensure itemTrackerNotes vector is not fully empty * Implement's Tycoon Wallet. * Refactor DrawItemCount and Use EnhancementCombobox for tracker capacity options * small tweaks and rename * always display XX/YY when in ammo/capacity mode * Move all merchant messages to be generated on file load * added hovertext for the number display * Swap german and french translations for shop messages * Set key colors to be on by default * Add another flag to skip mask shop * Fix Sold Out bug * Fix gerudo keys, add disabled checkbox * tooltip line break * Add trials required and merchant prices to save file instead of loading from active spoiler log * Remove trialsRequired persisting in save manager * Adds slotIndex to girla (shop item actor) and uses that for IdentifyShopItem. * Fix issue when merchantPrices is empty * Fix for a single zeroed merchantPrice entry * Fix #1417 * Implements items selling out and fixes issues with purchasing some items. * Fixes order of operations so Rupees will be spent. * Fixes sold out items not getting overwritten by the randomized info. * Clarify var names and comments Also preserve chain platform cutscene in spirit based on Link's position * Remove !=0 from cvar check * Clarify var names and comments * Rename randomizerMerchantPrices to merchantPrices * Handle shop items in SaveManager * Fix merge mistake * Base whats in the bazaar shop on entranceIndex instead of age * Tidy up chain platform cutscene check * Fix merge error Didn't mean to have Zhora changes in here yet * Use 3drando item table for parsing spoiler names * Use another nested method instead of one at the top level to fetch the table * Add missing newline * Remove log * Respect custom draw functions * Fix issues with rendering songs * Fix localized item names for shopsanity * Implements a larger array of Sprites for the Icon Hash. * Uses the hash instead of seed for spoilerfile name and icons. * Removes some unused functions and variables in `spoiler_log.cpp` * Prevents leading 0s added to hash from being in file name * Changes filename format to icon indexes separated by dashes * Hopefully makes Jenkins happy * Hopefully makes Jenkins happy * [Rando] Child Gerudo Fortress 37th Heartpiece randomized Fixes #1071 * Add descriptions to save editor flags editor, and added randomizer flags (#1386) * Add descriptions to save editor flags editor, and added randomizer flags * Hide randomizer flags when not on a randomizer save * Move flag descriptions to header file * Update soh/soh/Enhancements/debugger/debugSaveEditor.h * Update soh/soh/Enhancements/debugger/debugSaveEditor.h * Fix merge error * crash on pause menu on linux (only in appimage) Fixes #1437 * Applies fix to Song from Impa as well. * Allow buying tunics as child when shopsanity is on * Fix for custom draw methods overriding sold out sign * Simplify logic around shopsanity and fix some issues * Fix dungeon reward stone rotation and add particles * Fix some issues with ice traps * Fix adult wallet having its own max capacity * Fix amount of keys given for BotW * format * Use EnGirlAShopItem enum instead of raw hex values * [#1434] Renders non-warp songs more consistently with warp songs * A few changes around merchant messages * Various changes from PR feedback * Rando: Junk Hint missing french translation * Typo * Fix free scrub being at 0 instead of TEXT_SCRUB_RANDOM * Replace magic numbers in message handler * Update soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com> * Update soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com> * Fix BGS softlock for shopsanity * Support tycoon wallet on tracker * Revert "Fix BGS softlock for shopsanity" This reverts commit 5fdb961ea460fb9a035cf0bb6ae77bfeedc1de0f. * [#1053] Resolves an issue with shop items and bombchu bowling where BGS would display two message boxes * Implements some necessary plumbing and resolves several Ice Trap Softlocks. Adds a way for an item entry to tell what type of check it came from (NPC vs Chest vs Freestanding, etc.) Sets this value from chests and item00 actors. Relocates pendingIceTraps to save context so it can persist through cutscenes and get stored on save init for Link's Pocket and Song from Impa. Restructures pendingIceTraps into a counter rather than a true or false, so that we can be frozen multiple times in a row if applicable (atm that should only be at the start of a run if Link's Pocket and Song from Impa were both Ice Traps). Adds a textbox for Ice Traps and a special case of holding up nothing in the get item process. This fixes all the cases where Ice Traps would softlock due to the actor giving the item expecting a closing textbox. After holding the item above his head Link increments the pendingIceTraps counter by one and sets whatever flag he has pending. None of the above plumbing applies to Ice Traps from chests, those work exactly the same as before, as do freestanding item00 ice traps (thanks to the additional check for ITEM_FROM_FREESTANDING. OoT and Ruto's Letter count as NPC's, so they get the FOWL text box and set a pending ice trap rather than immediately freezing, since Link weill be in the water. Link will get frozen the next time he touches land, which in the case of OoT is after the fade to white and right before the Song of Time check. Fixes all the other softlocks I'm aware of, including Fishing, Bombchu Bowling, Skull Kid, and losing the second Gerudo Archery check. * fix bgs check in player * move bgs logic for tokensanity into MOD_NONE check * set bgs flag before `Item_Give`ing * move bgs flag into `MOD_NONE` check in girla * use existing check in `z_player` * Adds comment explaining the decision to default ITEM_FROM_NPC. * Rename pendingIceTraps to pendingIceTrapCount * Adds some RANDOTODO comments about cleaning up a couple things. * Merge branch 'develop-zhora' into ztornn * manually restore changes to `z_player.c` * Fix after some ice trap prepwork from earlier * Actual fix * Woops * More rupee names * Actually fix it * Add back comment * Fix Skip Scarecrow Song * Fix ruto's letter and LH sun stick rendering * Also fixes it for treasure chest game * Tweak: Rando French Wallet * ADD: French Tycoon * Hide dungeon items/notes by default * [#1301] Fix issue with UI not restoring after getting an item from biggoron * Update soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c * Update soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c * Fix random crash that only affected one person for some reason Co-authored-by: Garrett Cox <garrettjcox@gmail.com> Co-authored-by: Christopher Leggett <chris@leggett.dev> Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com> Co-authored-by: Sarge-117 <adam_branston@outlook.com> Co-authored-by: briaguya <briaguya@alice> Co-authored-by: aMannus <mannusmenting@gmail.com> Co-authored-by: lil David <1337lilDavid@gmail.com> Co-authored-by: Sarge-117 <108380086+Sarge-117@users.noreply.github.com> Co-authored-by: louist103 <35883445+louist103@users.noreply.github.com>
2022-09-21 00:50:22 -04:00
{ 0xC0, "Spoke to Fat Woman by Market Potion Shop" },
{ 0xC1, "Spoke to Fat Woman After Zelda's Escape" },
{ 0xC2, "Spoke to Burly Man About Talon Search" },
{ 0xC3, "Spoke to Burly Man After Zelda's Escape" },
{ 0xC4, "Spoke to Thief After Zelda's Escape" },
{ 0xC5, "Spoke to Thin Man by Market Target Shop" },
{ 0xC6, "Spoke to Old Woman by Market Fountain" },
{ 0xC7, "Spoke to Old Man by Bombchu Bowling" },
{ 0xC8, "Spoke to Thin Lady by Bombchu Bowling" },
{ 0xC9, "Spoke to Thin Lady After Zelda's Escape (1.0)" },
{ 0xCA, "Spoke to Red Joker in Market" },
{ 0xCB, "Spoke to Blue Joker in Market (1.0) / Dog Lady as Adult (DBG)" },
{ 0xCC, "Spoke to Itchy Lady After Malon Left Town" },
{ 0xCD, "Spoke to Blue Jokester in Market (DBG)" },
{ 0xCE, "Spoke to Thin Lady After Zelda's Escape (DBG)" },
{ 0xD9, "Spoke to Dampé as Child" },
{ 0xE0, "Spoke to Goron by Cavern" },
{ 0xE3, "Spoke to Goron Hiding Stick" },
{ 0xE6, "Spoke to Goron by Woods Exit" },
{ 0xEB, "Spoke to Goron by Bomb Flowers" },
{ 0xF0, "Spoke to Goron at City? Entrance" },
{ 0xF4, "Spoke to Ruby-Crazed Goron" },
{ 0xFC, "Spoke to Goron Shop Owner" },
{ 0x109, "Goron City Doors Unlocked" },
{ 0x10B, "Spoke to Goron Link About Volvagia" },
{ 0x10C, "Stopped Goron Link's Rolling" },
{ 0x10E, "Spoke to Goron Link" },
{ 0x113, "Spoke to Darunia in Goron City" },
{ 0x11A, "Spoke to Darunia in Fire Temple" },
{ 0x11E, "Obtained Bomb Bag Upgrade (Goron City)" },
{ 0x124, "Spoke to Zora Near Zora Shop?" },
{ 0x128, "Spoke to Zora Beside Zora Shop?" },
{ 0x129, "Spoke to Zora Swimming Behind Zora Shop" },
{ 0x138, "Thawed King Zora" },
{ 0x139, "Obtained Zora Tunic" },
{ 0x140, "Ruto in JJ (M7) on Blue Switch" },
{ 0x141, "Ruto in JJ (M2) Meet Ruto" },
{ 0x142, "Ruto in JJ (M3) Talk First Time" },
{ 0x143, "Ruto in JJ (M10) Can Be Escorted" },
{ 0x144, "Ruto in JJ (?) Wants to be Tossed to Sapphire" },
{ 0x145, "Ruto in JJ (M6) on Sapphire platform" },
{ 0x146, "Ruto in JJ (M6) Kidnapped" },
{ 0x147, "Ruto in JJ, Spawns on F1 Instead of B1" },
{ 0x160, "Spoke to Man in Impa's House During Day" },
{ 0x161, "Spoke to Man in Impa's House at Night" },
{ 0x162, "Spoke to Man in Impa's House as Adult" },
{ 0x163, "Spoke to Carpenter Boss's Wife as Child" },
{ 0x164, "Spoke to Carpenter Boss's Wife as Adult" },
{ 0x16C, "Refused Nabooru's Request" },
{ 0x170, "Spoke to Carpenter Boss in Valley" },
{ 0x172, "Spoke to Carpenter Boss in Kakariko" },
{ 0x176, "Spoke to Blue Carpenter in Tent" },
{ 0x178, "Spoke to Green Carpenter in Tent" },
{ 0x17F, "Running Man Suggested a Race" },
{ 0x190, "Obtained Gerudo Archery Piece of Heart" },
{ 0x191, "Obtained Dog Lady's Piece of Heart" },
{ 0x192, "Obtained Deku Stick Upgrade (Lost Woods)" },
{ 0x193, "Obtained Deku Nut Upgrade (Grotto)" },
{ 0x195, "Spoke to Kaepora in Lake Hylia" },
{ 0x196, "Spoke to Cursed Man With <10 Tokens" },
{ 0x197, "Spoke to Cursed Man With 10 Tokens" },
{ 0x198, "Obtained Small Magic Jar" },
{ 0x199, "Caught Cucco by Field Entrance" },
{ 0x19A, "Caught Cucco by Bazaar" },
{ 0x19B, "Caught Cucco by Cucco Pen" },
{ 0x19C, "Caught Cucco Behind Windmill" },
{ 0x19D, "Caught Cucco in Crate" },
{ 0x19E, "Caught Cucco by Skulltula House" },
{ 0x19F, "Caught Cucco Behind Potion Shop" },
{ 0x1A0, "Entered Deku Tree" },
{ 0x1A1, "Entered Dodongo's Cavern" },
{ 0x1A2, "Entered Jabu-Jabu's Belly" },
{ 0x1A3, "Entered Forest Temple" },
{ 0x1A4, "Entered Fire Temple" },
{ 0x1A5, "Entered Water Temple" },
{ 0x1A6, "Entered Spirit Temple" },
{ 0x1A7, "Entered Shadow Temple" },
{ 0x1A8, "Entered Bottom of the Well" },
{ 0x1A9, "Entered Ice Cavern" },
{ 0x1AA, "Entered Ganon's Tower" },
{ 0x1AB, "Entered Gerudo Training Ground" },
{ 0x1AC, "Entered Thieves' Hideout" },
{ 0x1AD, "Entered Ganon's Castle" },
{ 0x1AE, "Entered Ganon's Tower (Collapsing)" },
{ 0x1AF, "Entered Ganon's Castle (Collapsing)" },
{ 0x1D0, "No Sword on B" },
} },
{ "Event Inf Flags", EVENT_INF, 0x03, {
{ 0x00, "Rented Horse From Ingo" },
{ 0x01, "Racing Ingo" },
{ 0x02, "Won First Race With Ingo?" },
{ 0x05, "Lost Race With Ingo?" },
{ 0x06, "Racing Ingo For the Second Time" },
{ 0x08, "Finished Special Cucco Minigame / Began Gerudo Archery" },
{ 0x0A, "Won Special Cucco Minigame?" },
{ 0x0F, "Rented Horse From Ingo" },
{ 0x10, "Racing Running Man" },
{ 0x20, "Market Crowd Text Randomizer" },
{ 0x21, "Market Crowd Text Randomizer" },
{ 0x22, "Market Crowd Text Randomizer" },
{ 0x23, "Market Crowd Text Randomizer" },
{ 0x24, "Market Crowd Text Randomizer" },
{ 0x30, "Entered the Market" },
} },
{ "Randomizer Inf Flags", RANDOMIZER_INF, 0x03, {
{ RAND_INF_DUNGEONS_DONE_DEKU_TREE, "DUNGEONS_DONE_DEKU_TREE" },
{ RAND_INF_DUNGEONS_DONE_DODONGOS_CAVERN, "DUNGEONS_DONE_DODONGOS_CAVERN" },
{ RAND_INF_DUNGEONS_DONE_JABU_JABUS_BELLY, "DUNGEONS_DONE_JABU_JABUS_BELLY" },
{ RAND_INF_DUNGEONS_DONE_FOREST_TEMPLE, "DUNGEONS_DONE_FOREST_TEMPLE" },
{ RAND_INF_DUNGEONS_DONE_FIRE_TEMPLE, "DUNGEONS_DONE_FIRE_TEMPLE" },
{ RAND_INF_DUNGEONS_DONE_WATER_TEMPLE, "DUNGEONS_DONE_WATER_TEMPLE" },
{ RAND_INF_DUNGEONS_DONE_SPIRIT_TEMPLE, "DUNGEONS_DONE_SPIRIT_TEMPLE" },
{ RAND_INF_DUNGEONS_DONE_SHADOW_TEMPLE, "DUNGEONS_DONE_SHADOW_TEMPLE" },
{ RAND_INF_TRIALS_DONE_LIGHT_TRIAL, "TRIALS_DONE_LIGHT_TRIAL" },
{ RAND_INF_TRIALS_DONE_FOREST_TRIAL, "TRIALS_DONE_FOREST_TRIAL" },
{ RAND_INF_TRIALS_DONE_FIRE_TRIAL, "TRIALS_DONE_FIRE_TRIAL" },
{ RAND_INF_TRIALS_DONE_WATER_TRIAL, "TRIALS_DONE_WATER_TRIAL" },
{ RAND_INF_TRIALS_DONE_SPIRIT_TRIAL, "TRIALS_DONE_SPIRIT_TRIAL" },
{ RAND_INF_TRIALS_DONE_SHADOW_TRIAL, "TRIALS_DONE_SHADOW_TRIAL" },
{ RAND_INF_COWS_MILKED_LINKS_HOUSE_COW, "COWS_MILKED_LINKS_HOUSE_COW" },
{ RAND_INF_COWS_MILKED_HF_COW_GROTTO_COW, "COWS_MILKED_HF_COW_GROTTO_COW" },
{ RAND_INF_COWS_MILKED_LLR_STABLES_LEFT_COW, "COWS_MILKED_LLR_STABLES_LEFT_COW" },
{ RAND_INF_COWS_MILKED_LLR_STABLES_RIGHT_COW, "COWS_MILKED_LLR_STABLES_RIGHT_COW" },
{ RAND_INF_COWS_MILKED_LLR_TOWER_LEFT_COW, "COWS_MILKED_LLR_TOWER_LEFT_COW" },
{ RAND_INF_COWS_MILKED_LLR_TOWER_RIGHT_COW, "COWS_MILKED_LLR_TOWER_RIGHT_COW" },
{ RAND_INF_COWS_MILKED_KAK_IMPAS_HOUSE_COW, "COWS_MILKED_KAK_IMPAS_HOUSE_COW" },
{ RAND_INF_COWS_MILKED_DMT_COW_GROTTO_COW, "COWS_MILKED_DMT_COW_GROTTO_COW" },
{ RAND_INF_COWS_MILKED_GV_COW, "COWS_MILKED_GV_COW" },
{ RAND_INF_COWS_MILKED_JABU_JABUS_BELLY_MQ_COW, "COWS_MILKED_JABU_JABUS_BELLY_MQ_COW" },
{ RAND_INF_COWS_MILKED_HF_COW_GROTTO_GOSSIP_STONE, "COWS_MILKED_HF_COW_GROTTO_GOSSIP_STONE" },
{ RAND_INF_SCRUBS_PURCHASED_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_LEFT, "SCRUBS_PURCHASED_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_LEFT" },
{ RAND_INF_SCRUBS_PURCHASED_DODONGOS_CAVERN_DEKU_SCRUB_SIDE_ROOM_NEAR_DODONGOS, "SCRUBS_PURCHASED_DODONGOS_CAVERN_DEKU_SCRUB_SIDE_ROOM_NEAR_DODONGOS" },
{ RAND_INF_SCRUBS_PURCHASED_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_RIGHT, "SCRUBS_PURCHASED_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_RIGHT" },
{ RAND_INF_SCRUBS_PURCHASED_DODONGOS_CAVERN_DEKU_SCRUB_LOBBY, "SCRUBS_PURCHASED_DODONGOS_CAVERN_DEKU_SCRUB_LOBBY" },
{ RAND_INF_SCRUBS_PURCHASED_JABU_JABUS_BELLY_DEKU_SCRUB, "SCRUBS_PURCHASED_JABU_JABUS_BELLY_DEKU_SCRUB" },
{ RAND_INF_SCRUBS_PURCHASED_GANONS_CASTLE_DEKU_SCRUB_CENTER_LEFT, "SCRUBS_PURCHASED_GANONS_CASTLE_DEKU_SCRUB_CENTER_LEFT" },
{ RAND_INF_SCRUBS_PURCHASED_GANONS_CASTLE_DEKU_SCRUB_CENTER_RIGHT, "SCRUBS_PURCHASED_GANONS_CASTLE_DEKU_SCRUB_CENTER_RIGHT" },
{ RAND_INF_SCRUBS_PURCHASED_GANONS_CASTLE_DEKU_SCRUB_RIGHT, "SCRUBS_PURCHASED_GANONS_CASTLE_DEKU_SCRUB_RIGHT" },
{ RAND_INF_SCRUBS_PURCHASED_GANONS_CASTLE_DEKU_SCRUB_LEFT, "SCRUBS_PURCHASED_GANONS_CASTLE_DEKU_SCRUB_LEFT" },
{ RAND_INF_SCRUBS_PURCHASED_HF_DEKU_SCRUB_GROTTO, "SCRUBS_PURCHASED_HF_DEKU_SCRUB_GROTTO" },
{ RAND_INF_SCRUBS_PURCHASED_ZR_DEKU_SCRUB_GROTTO_REAR, "SCRUBS_PURCHASED_ZR_DEKU_SCRUB_GROTTO_REAR" },
{ RAND_INF_SCRUBS_PURCHASED_ZR_DEKU_SCRUB_GROTTO_FRONT, "SCRUBS_PURCHASED_ZR_DEKU_SCRUB_GROTTO_FRONT" },
{ RAND_INF_SCRUBS_PURCHASED_SFM_DEKU_SCRUB_GROTTO_REAR, "SCRUBS_PURCHASED_SFM_DEKU_SCRUB_GROTTO_REAR" },
{ RAND_INF_SCRUBS_PURCHASED_SFM_DEKU_SCRUB_GROTTO_FRONT, "SCRUBS_PURCHASED_SFM_DEKU_SCRUB_GROTTO_FRONT" },
{ RAND_INF_SCRUBS_PURCHASED_LH_DEKU_SCRUB_GROTTO_LEFT, "SCRUBS_PURCHASED_LH_DEKU_SCRUB_GROTTO_LEFT" },
{ RAND_INF_SCRUBS_PURCHASED_LH_DEKU_SCRUB_GROTTO_RIGHT, "SCRUBS_PURCHASED_LH_DEKU_SCRUB_GROTTO_RIGHT" },
{ RAND_INF_SCRUBS_PURCHASED_LH_DEKU_SCRUB_GROTTO_CENTER, "SCRUBS_PURCHASED_LH_DEKU_SCRUB_GROTTO_CENTER" },
{ RAND_INF_SCRUBS_PURCHASED_GV_DEKU_SCRUB_GROTTO_REAR, "SCRUBS_PURCHASED_GV_DEKU_SCRUB_GROTTO_REAR" },
{ RAND_INF_SCRUBS_PURCHASED_GV_DEKU_SCRUB_GROTTO_FRONT, "SCRUBS_PURCHASED_GV_DEKU_SCRUB_GROTTO_FRONT" },
{ RAND_INF_SCRUBS_PURCHASED_LW_DEKU_SCRUB_GROTTO_REAR, "SCRUBS_PURCHASED_LW_DEKU_SCRUB_GROTTO_REAR" },
{ RAND_INF_SCRUBS_PURCHASED_LW_DEKU_SCRUB_GROTTO_FRONT, "SCRUBS_PURCHASED_LW_DEKU_SCRUB_GROTTO_FRONT" },
{ RAND_INF_SCRUBS_PURCHASED_DMC_DEKU_SCRUB_GROTTO_LEFT, "SCRUBS_PURCHASED_DMC_DEKU_SCRUB_GROTTO_LEFT" },
{ RAND_INF_SCRUBS_PURCHASED_DMC_DEKU_SCRUB_GROTTO_RIGHT, "SCRUBS_PURCHASED_DMC_DEKU_SCRUB_GROTTO_RIGHT" },
{ RAND_INF_SCRUBS_PURCHASED_DMC_DEKU_SCRUB_GROTTO_CENTER, "SCRUBS_PURCHASED_DMC_DEKU_SCRUB_GROTTO_CENTER" },
{ RAND_INF_SCRUBS_PURCHASED_GC_DEKU_SCRUB_GROTTO_LEFT, "SCRUBS_PURCHASED_GC_DEKU_SCRUB_GROTTO_LEFT" },
{ RAND_INF_SCRUBS_PURCHASED_GC_DEKU_SCRUB_GROTTO_RIGHT, "SCRUBS_PURCHASED_GC_DEKU_SCRUB_GROTTO_RIGHT" },
{ RAND_INF_SCRUBS_PURCHASED_GC_DEKU_SCRUB_GROTTO_CENTER, "SCRUBS_PURCHASED_GC_DEKU_SCRUB_GROTTO_CENTER" },
{ RAND_INF_SCRUBS_PURCHASED_LLR_DEKU_SCRUB_GROTTO_LEFT, "SCRUBS_PURCHASED_LLR_DEKU_SCRUB_GROTTO_LEFT" },
{ RAND_INF_SCRUBS_PURCHASED_LLR_DEKU_SCRUB_GROTTO_RIGHT, "SCRUBS_PURCHASED_LLR_DEKU_SCRUB_GROTTO_RIGHT" },
{ RAND_INF_SCRUBS_PURCHASED_LLR_DEKU_SCRUB_GROTTO_CENTER, "SCRUBS_PURCHASED_LLR_DEKU_SCRUB_GROTTO_CENTER" },
{ RAND_INF_SCRUBS_PURCHASED_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, "SCRUBS_PURCHASED_COLOSSUS_DEKU_SCRUB_GROTTO_REAR" },
{ RAND_INF_SCRUBS_PURCHASED_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, "SCRUBS_PURCHASED_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT" },
{ RAND_INF_SCRUBS_PURCHASED_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT, "SCRUBS_PURCHASED_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT" },
{ RAND_INF_SCRUBS_PURCHASED_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT, "SCRUBS_PURCHASED_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT" },
{ RAND_INF_SCRUBS_PURCHASED_LW_DEKU_SCRUB_NEAR_BRIDGE, "SCRUBS_PURCHASED_LW_DEKU_SCRUB_NEAR_BRIDGE" },
{ RAND_INF_SCRUBS_PURCHASED_DMC_DEKU_SCRUB, "SCRUBS_PURCHASED_DMC_DEKU_SCRUB" },
} },
};