From abcf35ccc851e4f3b09a2fa13baf43a114aaf7ea Mon Sep 17 00:00:00 2001 From: Kiernan Brown Date: Mon, 29 Apr 2024 17:30:36 -0400 Subject: [PATCH 01/11] Update Extensions and HintService Added the changes Sonicshadowsilver2 made to the Extensions and HintService files. These changes adjust a few incorrect chests and some text for hints. --- KH3Randomizer/Data/Extensions.cs | 48 +++++----- KH3Randomizer/Data/HintService.cs | 142 ++++++++++++++++-------------- 2 files changed, 101 insertions(+), 89 deletions(-) diff --git a/KH3Randomizer/Data/Extensions.cs b/KH3Randomizer/Data/Extensions.cs index b8e3dc5..c2b1a72 100644 --- a/KH3Randomizer/Data/Extensions.cs +++ b/KH3Randomizer/Data/Extensions.cs @@ -482,19 +482,19 @@ public static string KeyIdToDisplay(this string input) "EVENT_HEARTBINDER_002" => "Complete Verum Rex: Beat of Lead in Toy Box", "EVENT_HEARTBINDER_003" => "Received After Putting Out the Fires in Monstropolis", "EVENT_HEARTBINDER_004" => "Complete Flash Tracer in San Fransokyo", - "EVENT_REPORT_001a" or "EVENT_REPORT_001b" => "Complete Battle Portal 1 in Olympus", - "EVENT_REPORT_002a" or "EVENT_REPORT_002b" => "Complete Battle Portal 2 in Olympus", - "EVENT_REPORT_003a" or "EVENT_REPORT_003b" => "Complete Battle Portal 3 in Twilight Town", - "EVENT_REPORT_004a" or "EVENT_REPORT_004b" => "Complete Battle Portal 4 in Toy Box", - "EVENT_REPORT_005a" or "EVENT_REPORT_005b" => "Complete Battle Portal 5 in Toy Box", - "EVENT_REPORT_006a" or "EVENT_REPORT_006b" => "Complete Battle Portal 6 in Kingdom of Corona", - "EVENT_REPORT_007a" or "EVENT_REPORT_007b" => "Complete Battle Portal 7 in Kingdom of Corona", - "EVENT_REPORT_008a" or "EVENT_REPORT_008b" => "Complete Battle Portal 8 in Monstropolis", - "EVENT_REPORT_009a" or "EVENT_REPORT_009b" => "Complete Battle Portal 9 in Arendelle", - "EVENT_REPORT_010a" or "EVENT_REPORT_010b" => "Complete Battle Portal 10 in The Caribbean", - "EVENT_REPORT_011a" or "EVENT_REPORT_011b" => "Complete Battle Portal 11 in San Fransokyo", - "EVENT_REPORT_012a" or "EVENT_REPORT_012b" => "Complete Battle Portal 12 in San Fransokyo", - "EVENT_REPORT_013a" or "EVENT_REPORT_013b" => "Complete Battle Portal 13 in The Keyblade Graveyard", + "EVENT_REPORT_001a" or "EVENT_REPORT_001b" => "Complete Battlegate 1 in Olympus", + "EVENT_REPORT_002a" or "EVENT_REPORT_002b" => "Complete Battlegate 2 in Olympus", + "EVENT_REPORT_003a" or "EVENT_REPORT_003b" => "Complete Battlegate 3 in Twilight Town", + "EVENT_REPORT_004a" or "EVENT_REPORT_004b" => "Complete Battlegate 4 in Toy Box", + "EVENT_REPORT_005a" or "EVENT_REPORT_005b" => "Complete Battlegate 5 in Toy Box", + "EVENT_REPORT_006a" or "EVENT_REPORT_006b" => "Complete Battlegate 6 in Kingdom of Corona", + "EVENT_REPORT_007a" or "EVENT_REPORT_007b" => "Complete Battlegate 7 in Kingdom of Corona", + "EVENT_REPORT_008a" or "EVENT_REPORT_008b" => "Complete Battlegate 8 in Monstropolis", + "EVENT_REPORT_009a" or "EVENT_REPORT_009b" => "Complete Battlegate 9 in Arendelle", + "EVENT_REPORT_010a" or "EVENT_REPORT_010b" => "Complete Battlegate 10 in The Caribbean", + "EVENT_REPORT_011a" or "EVENT_REPORT_011b" => "Complete Battlegate 11 in San Fransokyo", + "EVENT_REPORT_012a" or "EVENT_REPORT_012b" => "Complete Battlegate 12 in San Fransokyo", + "EVENT_REPORT_013a" or "EVENT_REPORT_013b" => "Complete Battlegate 13 in The Keyblade Graveyard", "EVENT_REPORT_014" => "Defeat Dark Inferno", "EVENT_CKGAME_001" => "Complete Twilight Town", "EVENT_KEYITEM_001" => "Received After Returning to Yen Sid's Tower", @@ -619,8 +619,8 @@ public static string KeyIdToDescription(this string input) "VBonus_DLC_006" => "After the Terra-Xehanort & Vanitas boss battle in The Keyblade Graveyard (Re+Mind)", "VBonus_DLC_007" => "After the Saix boss battle in The Keyblade Graveyard (Re+Mind)", "VBonus_DLC_008" => "After the Young Xehanort, Ansem & Xemnas boss battle in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_009" => "After the Shadow Heartless battle in Scala Ad Caelum (Re+Mind)", - "VBonus_DLC_010" => "After the Darkside boss battle in Scala Ad Caelum (Re+Mind)", + "VBonus_DLC_009" => "After the Shadow Heartless battle in Scala ad Caelum (Re+Mind)", + "VBonus_DLC_010" => "After the Darkside boss battle in Scala ad Caelum (Re+Mind)", "VBonus_DLC_011" => "After collecting all of Kairi's heart fragments in Re+Mind", "VBonus_DLC_012" => "After the Replica Xehanorts boss battle as the Guardians of Light in Re+Mind", "VBonus_DLC_013" => "After the Replica Xehanorts boss battle as King Mickey in Re+Mind", @@ -1321,8 +1321,8 @@ public static string ToLevelUpRoute(this string type) { return type switch { - "TypeA" => "Warrior", - "TypeB" => "Mystic", + "TypeA" => "Mystic", + "TypeB" => "Warrior", "TypeC" => "Guardian", _ => "", }; @@ -1334,10 +1334,10 @@ public static string GetChestLocation(this string chest, DataTableEnum dataTable { DataTableEnum.TreasureHE => chest switch { - "Large Chest 1" => "Chest 24 (Large Chest, Thebes: Overlook)", + "Large Chest 1" => "Chest 29 (Large Chest, Realm of the Gods: Corridors)", "Large Chest 2" => "Chest 9 (Large Chest, Mount Olympus: Cliff Ascent)", "Large Chest 3" => "Chest 31 (Large Chest, Realm of the Gods: Apex)", - "Large Chest 4" => "Chest 29 (Large Chest, Realm of the Gods: Corridors)", + "Large Chest 4" => "Chest 24 (Large Chest, Thebes: Overlook)", "Small Chest 1" => "Chest 25 (Small Chest, Realm of the Gods: Courtyard)", "Small Chest 2" => "Chest 26 (Small Chest, Realm of the Gods: Courtyard)", "Small Chest 3" => "Chest 27 (Small Chest, Realm of the Gods: Courtyard)", @@ -1504,11 +1504,11 @@ public static string GetChestLocation(this string chest, DataTableEnum dataTable }, DataTableEnum.TreasureCA => chest switch { - "Large Chest 1" => "Chest 20 (Large Chest, The Huddled Isles)", - "Large Chest 2" => "Chest 19 (Large Chest, Sandbar Isle)", - "Large Chest 3" => "Chest 17 (Large Chest, Isla de los Mástiles)", - "Large Chest 4" => "Chest 18 (Large Chest, Ship's End)", - "Large Chest 5" => "Chest 51 (Large Chest, Port Royal: Docks)", + "Large Chest 1" => "Chest 51 (Large Chest, Port Royal: Docks)", + "Large Chest 2" => "Chest 17 (Large Chest, Isla de los Mástiles)", + "Large Chest 3" => "Chest 18 (Large Chest, Ship's End)", + "Large Chest 4" => "Chest 19 (Large Chest, Sandbar Isle)", + "Large Chest 5" => "Chest 20 (Large Chest, The Huddled Isles)", "Large Chest 6" => "Chest 47 (Large Chest, Port Royal: Fort)", "Large Chest 7" => "Chest 4 (Large Chest, The Huddled Isles)", "Large Chest 8" => "Chest 10 (Large Chest, Isla Verdemontaña)", diff --git a/KH3Randomizer/Data/HintService.cs b/KH3Randomizer/Data/HintService.cs index 60540ea..2418df5 100644 --- a/KH3Randomizer/Data/HintService.cs +++ b/KH3Randomizer/Data/HintService.cs @@ -364,9 +364,9 @@ public string GetHintItemLocation(Dictionary GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_008": world = "Olympus"; - description = "(Rock Troll Boss)"; + description = "(Defeat Rock Troll)"; break; case "Vbonus_010": world = "Olympus"; - description = "(Rock Titan Boss)"; + description = "(Defeat Rock Titan)"; break; case "Vbonus_011": world = "Olympus"; @@ -521,14 +521,14 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_013": world = "Olympus"; - description = "(Tornado Titan Boss)"; + description = "(Defeat Tornado Titan)"; break; #endregion Olympus #region Twilight Town case "Vbonus_014": world = "Twilight Town"; - description = "(Demon Tide Boss)"; + description = "(Defeat Demon Tide)"; break; case "Vbonus_015": world = "Twilight Town"; @@ -555,7 +555,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_020": world = "Toy Box"; - description = "(Angelic Amber Boss)"; + description = "(Defeat Angelic Amber)"; break; case "Vbonus_021": world = "Toy Box"; @@ -567,7 +567,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_023": world = "Toy Box"; - description = "(King of Toys Boss)"; + description = "(Defeat King of Toys)"; break; #endregion Toy Box @@ -598,7 +598,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_030": world = "Kingdom of Corona"; - description = "(Grim Guardianess Boss)"; + description = "(Defeat Grim Guardianess)"; break; #endregion Kingdom of Corona @@ -637,7 +637,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_040": world = "Monstropolis"; - description = "(Lump of Horror Boss)"; + description = "(Defeat Lump of Horror)"; break; #endregion Monstropolis @@ -664,7 +664,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_047": world = "Arendelle"; - description = "(Marshmallow Boss)"; + description = "(Defeat Marshmallow)"; break; case "Vbonus_048": world = "Arendelle"; @@ -676,7 +676,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_050": world = "Arendelle"; - description = "(Skoll Boss)"; + description = "(Defeat Skoll)"; break; #endregion Arendelle @@ -695,7 +695,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_054": world = "San Fransokyo"; - description = "(Catastrochorus Boss)"; + description = "(Defeat Catastrochorus)"; break; case "Vbonus_055": world = "San Fransokyo"; @@ -703,11 +703,11 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_056": world = "San Fransokyo"; - description = "(Darkube Boss)"; + description = "(Defeat Darkubes)"; break; case "Vbonus_057": world = "San Fransokyo"; - description = "(Dark Baymax Boss)"; + description = "(Defeat Dark Baymax)"; break; #endregion San Fransokyo @@ -722,11 +722,11 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_060": world = "The Caribbean"; - description = "(Raging Vulture Boss)"; + description = "(Defeat Raging Vulture)"; break; case "Vbonus_061": world = "The Caribbean"; - description = "(Lightning Angler Boss)"; + description = "(Defeat Lightning Angler)"; break; case "Vbonus_062": world = "The Caribbean"; @@ -742,23 +742,23 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_065": world = "The Caribbean"; - description = "(Kraken Boss)"; + description = "(Defeat Kraken)"; break; case "Vbonus_066": world = "The Caribbean"; - description = "(Davy Jones Boss)"; + description = "(Defeat Davy Jones)"; break; #endregion The Caribbean case "Vbonus_067": world = "The Dark World"; - description = "(Anti-Aqua Boss)"; + description = "(Defeat Anti-Aqua)"; break; #region The Keyblade Graveyard case "Vbonus_068": world = "The Keyblade Graveyard"; - description = "(Lich Boss)"; + description = "(Defeat Lich in San Fransokyo)"; break; case "Vbonus_069": world = "The Keyblade Graveyard"; @@ -766,27 +766,27 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_070": world = "The Keyblade Graveyard"; - description = "(Demon Tide Boss)"; + description = "(Defeat Demon Tide)"; break; case "Vbonus_071": world = "The Keyblade Graveyard"; - description = "(Xigbar & Dark Riku Boss)"; + description = "(Defeat Xigbar & Dark Riku)"; break; case "Vbonus_072": world = "The Keyblade Graveyard"; - description = "(Luxord, Larxene & Marluxia Boss)"; + description = "(Defeat Luxord, Marluxia, & Larxene)"; break; case "Vbonus_073": world = "The Keyblade Graveyard"; - description = "(Terra-Xehanort & Vanitas Boss)"; + description = "(Defeat Vanitas & Terra-Xehanort)"; break; case "Vbonus_074": world = "The Keyblade Graveyard"; - description = "(Saix Boss)"; + description = "(Defeat Saix)"; break; case "Vbonus_075": world = "The Keyblade Graveyard"; - description = "(Young Xehanort, Ansem & Xemnas Boss)"; + description = "(Defeat Young Xehanort, Ansem, & Xemnas)"; break; case "Vbonus_076": world = "The Keyblade Graveyard"; @@ -797,7 +797,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg #region The Final World case "Vbonus_082": world = "The Final World"; - description = "(Darkside Tutorial Boss)"; + description = "(Defeat Darkside)"; break; case "Vbonus_083": world = "The Final World"; @@ -812,15 +812,15 @@ public Tuple GetLocation(DataTableEnum category, string subCateg #region Mini-Games case "VBonus_Minigame001": world = "Toy Box"; - description = "(A-rank Verum Rex: Beat of Lead)"; + description = "(A-Rank Verum Rex: Beat of Lead)"; break; case "VBonus_Minigame002": world = "Kingdom of Corona"; - description = "(A-rank Festival Dance)"; + description = "(A-Rank Festival Dance)"; break; case "VBonus_Minigame003": world = "Arendelle"; - description = "(A-rank Frozen Slider)"; + description = "(A-Rank Frozen Slider)"; break; case "VBonus_Minigame004": world = "Arendelle"; @@ -828,87 +828,87 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "VBonus_Minigame005": world = "San Fransokyo"; - description = "(A-rank Flash Tracer 1 (Fred))"; + description = "(A-Rank Flash Tracer 1 (Fred))"; break; case "VBonus_Minigame006": world = "San Fransokyo"; - description = "(A-rank Flash Tracer 2 (Go Go))"; + description = "(A-Rank Flash Tracer 2 (Go Go))"; break; #endregion Mini-Games #region Flans case "VBonus_Minigame007": world = "Olympus"; - description = "(A-rank Cherry Flan)"; + description = "(A-Rank Cherry Flan)"; break; case "VBonus_Minigame008": world = "Toy Box"; - description = "(A-rank Strawberry Flan)"; + description = "(A-Rank Strawberry Flan)"; break; case "VBonus_Minigame009": world = "Kingdom of Corona"; - description = "(A-rank Orange Flan)"; + description = "(A-Rank Orange Flan)"; break; case "VBonus_Minigame010": world = "Monstropolis"; - description = "(A-rank Banana Flan)"; + description = "(A-Rank Banana Flan)"; break; case "VBonus_Minigame011": world = "Arendelle"; - description = "(A-rank Grape Flan)"; + description = "(A-Rank Grape Flan)"; break; case "VBonus_Minigame012": world = "The Caribbean"; - description = "(A-rank Watermelon Flan)"; + description = "(A-Rank Watermelon Flan)"; break; case "VBonus_Minigame013": world = "San Fransokyo"; - description = "(A-rank Melon Flan)"; + description = "(A-Rank Melon Flan)"; break; #endregion Flans #region Re+Mind case "VBonus_DLC_001": world = "Re+Mind (The Keyblade Graveyard)"; - description = "(Dark Inferno Boss)"; + description = "(Defeat Dark Inferno χ)"; break; case "VBonus_DLC_002": world = "Re+Mind (The Keyblade Graveyard)"; - description = "(Anti-Aqua Boss)"; + description = "(Defeat Anti-Aqua)"; break; case "VBonus_DLC_003": world = "Re+Mind (The Keyblade Graveyard)"; - description = "(Terra-Xehanort Boss)"; + description = "(Defeat Terra-Xehanort)"; break; case "VBonus_DLC_004": world = "Re+Mind (The Keyblade Graveyard)"; - description = "(Xigbar & Dark Riku Boss)"; + description = "(Defeat Xigbar & Dark Riku)"; break; case "VBonus_DLC_005": world = "Re+Mind (The Keyblade Graveyard)"; - description = "(Luxord, Larxene & Marluxia Boss)"; + description = "(Defeat Luxord, Marluxia, & Larxene)"; break; case "VBonus_DLC_006": world = "Re+Mind (The Keyblade Graveyard)"; - description = "(Terra-Xehanort & Vanitas Boss)"; + description = "(Defeat Vanitas & Terra-Xehanort)"; break; case "VBonus_DLC_007": world = "Re+Mind (The Keyblade Graveyard)"; - description = "(Saix Boss)"; + description = "(Defeat Saix)"; break; case "VBonus_DLC_008": world = "Re+Mind (The Keyblade Graveyard)"; - description = "(Young Xehanort, Ansem & Xemnas Boss)"; + description = "(Defeat Young Xehanort, Ansem, & Xemnas)"; break; case "VBonus_DLC_010": - world = "Scala Ad Caelum"; - description = "(Darkside Boss)"; + world = "Scala ad Caelum"; + description = "(Defeat Darkside)"; break; case "VBonus_DLC_015": - world = "Scala Ad Caelum"; - description = "(Armored Xehanort Boss)"; + world = "Scala ad Caelum"; + description = "(Defeat Armored Xehanort)"; break; #endregion Re+Mind @@ -956,7 +956,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg #region Keyblades case "TresUIMobilePortalDataAsset": world = "Classic Kingdom"; - description = "(Complete All Classic Kingdom Games)"; + description = "(Complete All Classic Kingdom Minigames)"; break; case "EVENT_KEYBLADE_001": @@ -1028,56 +1028,68 @@ public Tuple GetLocation(DataTableEnum category, string subCateg #region Battle Gates case "EVENT_REPORT_001a": case "EVENT_REPORT_001b": + world = "Olympus"; + description = "(Complete Battlegate 1)"; + break; case "EVENT_REPORT_002a": case "EVENT_REPORT_002b": world = "Olympus"; - description = "(Complete Battle Portal)"; + description = "(Complete Battlegate 2)"; break; case "EVENT_REPORT_003a": case "EVENT_REPORT_003b": world = "Twilight Town"; - description = "(Complete Battle Portal)"; + description = "(Complete Battlegate 3)"; break; case "EVENT_REPORT_004a": case "EVENT_REPORT_004b": + world = "Toy Box"; + description = "(Complete Battlegate 4)"; + break; case "EVENT_REPORT_005a": case "EVENT_REPORT_005b": world = "Toy Box"; - description = "(Complete Battle Portal)"; + description = "(Complete Battlegate 5)"; break; case "EVENT_REPORT_006a": case "EVENT_REPORT_006b": + world = "Kingdom of Corona"; + description = "(Complete Battlegate 6)"; + break; case "EVENT_REPORT_007a": case "EVENT_REPORT_007b": world = "Kingdom of Corona"; - description = "(Complete Battle Portal)"; + description = "(Complete Battlegate 7)"; break; case "EVENT_REPORT_008a": case "EVENT_REPORT_008b": world = "Monstropolis"; - description = "(Complete Battle Portal)"; + description = "(Complete Battlegate 8)"; break; case "EVENT_REPORT_009a": case "EVENT_REPORT_009b": world = "Arendelle"; - description = "(Complete Battle Portal)"; + description = "(Complete Battlegate 9)"; break; case "EVENT_REPORT_010a": case "EVENT_REPORT_010b": world = "The Caribbean"; - description = "(Complete Battle Portal)"; + description = "(Complete Battlegate 10)"; break; case "EVENT_REPORT_011a": case "EVENT_REPORT_011b": + world = "San Fransokyo"; + description = "(Complete Battlegate 11)"; + break; case "EVENT_REPORT_012a": case "EVENT_REPORT_012b": world = "San Fransokyo"; - description = "(Complete Battle Portal)"; + description = "(Complete Battlegate 12)"; break; case "EVENT_REPORT_013a": case "EVENT_REPORT_013b": world = "The Keyblade Graveyard"; - description = "(Complete Battle Portal)"; + description = "(Complete Battlegate 13)"; break; case "EVENT_REPORT_014": world = "The Keyblade Graveyard"; @@ -1168,7 +1180,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case DataTableEnum.TreasureBT: - world = "Scala Ad Caelum"; + world = "Scala ad Caelum"; description = this.GetTreasure(subCategory); break; case DataTableEnum.TreasureBX: @@ -1712,10 +1724,10 @@ public string GetLevelUpAlternatives(Dictionary Date: Tue, 30 Apr 2024 20:39:45 -0400 Subject: [PATCH 02/11] Update defaults Turn off boss/enemy/party randomizer by default. Adjusted Battle Portals to Battlegates to fit with the game's naming. --- .../OptionComponents/OptionsSubsection.razor | 2 +- KH3Randomizer/Components/Pools.razor | 2 +- KH3Randomizer/Data/HintService.cs | 2 +- KH3Randomizer/Data/RandomizerService.cs | 12 ++++++------ KH3Randomizer/Pages/Index.razor | 12 ++++++------ KH3Randomizer/Pages/SpoilerLog.razor | 2 +- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/KH3Randomizer/Components/OptionComponents/OptionsSubsection.razor b/KH3Randomizer/Components/OptionComponents/OptionsSubsection.razor index 660bec4..6531b56 100644 --- a/KH3Randomizer/Components/OptionComponents/OptionsSubsection.razor +++ b/KH3Randomizer/Components/OptionComponents/OptionsSubsection.razor @@ -129,7 +129,7 @@ } - else if (option.Key == "Battle Portals") + else if (option.Key == "Battlegates") { diff --git a/KH3Randomizer/Components/Pools.razor b/KH3Randomizer/Components/Pools.razor index 92bf101..7849c80 100644 --- a/KH3Randomizer/Components/Pools.razor +++ b/KH3Randomizer/Components/Pools.razor @@ -452,7 +452,7 @@ { "Lucky Emblems", "Rewards earned for finding Lucky Emblems." }, { "Flantastic Flans", "Rewards earned for max completing a Flan Missions." }, { "Minigames", "Rewards earned for obtaining an A-Rank in a Minigame." }, - { "Battle Portals", "Rewards earned for completing a Battle Portal." }, + { "Battlegates", "Rewards earned for completing a Battle Portal." }, { "Base Sora Stats", "Stats related to Sora's initial Max Health, Magic and Focus Points." }, { "Level Up Stats", "Stats for Sora's Level Up Attack, Magic, Defense and Ability Points." }, diff --git a/KH3Randomizer/Data/HintService.cs b/KH3Randomizer/Data/HintService.cs index 2418df5..3283c07 100644 --- a/KH3Randomizer/Data/HintService.cs +++ b/KH3Randomizer/Data/HintService.cs @@ -13,7 +13,7 @@ public class HintService // Don't provide empty hints for these pools List blockedEmptyPools = new List() { - "Equipment Abilities", "Fullcourse Abilities", "Flantastic Flans", "Minigames", "Battle Portals", "Always On" + "Equipment Abilities", "Fullcourse Abilities", "Flantastic Flans", "Minigames", "Battlegates", "Always On" }; public byte[] GenerateHints(string seed, Dictionary>> randomizedOptions, Dictionary availablePools, string hintType, List importantChecks, ref Dictionary> hintValues) diff --git a/KH3Randomizer/Data/RandomizerService.cs b/KH3Randomizer/Data/RandomizerService.cs index a8ed3a5..53a9089 100644 --- a/KH3Randomizer/Data/RandomizerService.cs +++ b/KH3Randomizer/Data/RandomizerService.cs @@ -1445,7 +1445,7 @@ public Dictionary>> options.Add(DataTableEnum.VBonus, minigameVbonuses); break; - case "Battle Portals": + case "Battlegates": // Events events = new List { "EVENT_REPORT_001a", "EVENT_REPORT_001b", "EVENT_REPORT_002a", "EVENT_REPORT_002b", "EVENT_REPORT_003a", "EVENT_REPORT_003b", "EVENT_REPORT_004a", "EVENT_REPORT_004b", "EVENT_REPORT_005a", "EVENT_REPORT_005b", "EVENT_REPORT_006a", "EVENT_REPORT_006b", "EVENT_REPORT_007a", "EVENT_REPORT_007b", "EVENT_REPORT_008a", "EVENT_REPORT_008b", @@ -1621,7 +1621,7 @@ public string GetPoolFromOption(DataTableEnum dataTableEnum, string subCategory) case "EVENT_REPORT_013a": case "EVENT_REPORT_013b": case "EVENT_REPORT_014": - poolName = "Battle Portals"; + poolName = "Battlegates"; break; case "EVENT_KEYBLADE_012": case "EVENT_KEYBLADE_013": @@ -2923,7 +2923,7 @@ public Dictionary> GetAvailableOptions(Dictiona availableOptions.Add(pool.Key, minigameOptions); break; - case "Battle Portals": + case "Battlegates": var battlePortalOptions = new Dictionary { { "Reports", true }, { "Rewards", true } @@ -3170,7 +3170,7 @@ public Dictionary GetPools(Dictionary x.Key == "Sora" || x.Key == "Equipment Abilities" || x.Key == "Data Battle Rewards" || x.Key == "Moogle Workshop" || x.Key == "Fullcourse Abilities" || x.Key == "Lucky Emblems" || x.Key == "Flantastic Flans" || - x.Key == "Minigames" || x.Key == "Battle Portals" || x.Key == "Always On") + x.Key == "Minigames" || x.Key == "Battlegates" || x.Key == "Always On") .ToDictionary(x => x.Key, y => y.Value); } else if (category == "Stats") @@ -3846,7 +3846,7 @@ public List GetAvailableMinigameVictoryBonuses(string currentSelection, r #endregion Minigames - #region Battle Portals + #region Battlegates public List GetAvailableBattlePortalEvents(string currentSelection, ref Dictionary>> randomizedOptions) { @@ -3883,7 +3883,7 @@ public List GetAvailableBattlePortalEvents(string currentSelection, ref D return events; } - #endregion Battle Portals + #endregion Battlegates #region Always On diff --git a/KH3Randomizer/Pages/Index.razor b/KH3Randomizer/Pages/Index.razor index 6e3abf9..79b815d 100644 --- a/KH3Randomizer/Pages/Index.razor +++ b/KH3Randomizer/Pages/Index.razor @@ -82,17 +82,17 @@ // Miscellaneous Categories { "Sora", RandomizeOptionEnum.Randomize }, { "Equipment Abilities", RandomizeOptionEnum.Randomize }, { "Data Battle Rewards", RandomizeOptionEnum.Randomize }, { "Moogle Workshop", RandomizeOptionEnum.Randomize }, { "Fullcourse Abilities", RandomizeOptionEnum.Vanilla }, { "Lucky Emblems", RandomizeOptionEnum.Randomize }, - { "Flantastic Flans", RandomizeOptionEnum.Replace }, { "Minigames", RandomizeOptionEnum.Replace }, { "Battle Portals", RandomizeOptionEnum.Randomize }, + { "Flantastic Flans", RandomizeOptionEnum.Replace }, { "Minigames", RandomizeOptionEnum.Replace }, { "Battlegates", RandomizeOptionEnum.Randomize }, // Stat Categories { "Base Sora Stats", RandomizeOptionEnum.Balanced }, { "Level Up Stats", RandomizeOptionEnum.Balanced }, { "Keyblade Enhance Stats", RandomizeOptionEnum.Boosted }, { "Equipment Stats", RandomizeOptionEnum.Balanced }, { "Food Effect Stats", RandomizeOptionEnum.Balanced }, // Enemy Categories - { "Enemies", RandomizeOptionEnum.Randomize }, { "Bosses", RandomizeOptionEnum.Randomize }, + { "Enemies", RandomizeOptionEnum.Vanilla }, { "Bosses", RandomizeOptionEnum.Vanilla }, // Party Categories - { "Party Members", RandomizeOptionEnum.Randomize }, + { "Party Members", RandomizeOptionEnum.Vanilla }, // Always On - Proofs, Oathkeeper, Oblivion, Meow Wow, Gummiphone { "Always On", RandomizeOptionEnum.Replace } @@ -118,9 +118,9 @@ { "Allow All Stats", false }, { "Allow Negative Stats", false }, - { "Default Data Battles", true }, - { "Default End Game Battles", true }, - { "Default Yozora Battle", true }, + { "Default Data Battles", false }, + { "Default End Game Battles", false }, + { "Default Yozora Battle", false }, { "Default Donald & Goofy", false }, { "Enemy Chaos", false }, { "Party Chaos", false } diff --git a/KH3Randomizer/Pages/SpoilerLog.razor b/KH3Randomizer/Pages/SpoilerLog.razor index 54d690f..6c4c01d 100644 --- a/KH3Randomizer/Pages/SpoilerLog.razor +++ b/KH3Randomizer/Pages/SpoilerLog.razor @@ -92,7 +92,7 @@ // Miscellaneous Categories { "Sora", RandomizeOptionEnum.Randomize }, { "Equipment Abilities", RandomizeOptionEnum.Randomize }, { "Data Battle Rewards", RandomizeOptionEnum.Randomize }, { "Moogle Workshop", RandomizeOptionEnum.Randomize }, { "Fullcourse Abilities", RandomizeOptionEnum.Vanilla }, { "Lucky Emblems", RandomizeOptionEnum.Randomize }, - { "Flantastic Flans", RandomizeOptionEnum.Replace }, { "Minigames", RandomizeOptionEnum.Replace }, { "Battle Portals", RandomizeOptionEnum.Randomize }, + { "Flantastic Flans", RandomizeOptionEnum.Replace }, { "Minigames", RandomizeOptionEnum.Replace }, { "Battlegates", RandomizeOptionEnum.Randomize }, // Stat Categories { "Base Sora Stats", RandomizeOptionEnum.Balanced }, { "Level Up Stats", RandomizeOptionEnum.Balanced }, { "Keyblade Enhance Stats", RandomizeOptionEnum.Boosted }, From d340d161446cddb8fb30afcbb887656e955b5ace Mon Sep 17 00:00:00 2001 From: Kiernan Brown Date: Fri, 3 May 2024 17:23:29 -0400 Subject: [PATCH 03/11] Merge Sonic's Changes Added changes Sonicshadowsilver2 made to hint descriptions and default randomization settings. --- KH3Randomizer/Components/Pools.razor | 2 +- KH3Randomizer/Data/Extensions.cs | 142 +++++++++++++-------------- KH3Randomizer/Data/HintService.cs | 28 ++++-- KH3Randomizer/Pages/Index.razor | 8 +- 4 files changed, 96 insertions(+), 84 deletions(-) diff --git a/KH3Randomizer/Components/Pools.razor b/KH3Randomizer/Components/Pools.razor index 7849c80..d0ee93a 100644 --- a/KH3Randomizer/Components/Pools.razor +++ b/KH3Randomizer/Components/Pools.razor @@ -452,7 +452,7 @@ { "Lucky Emblems", "Rewards earned for finding Lucky Emblems." }, { "Flantastic Flans", "Rewards earned for max completing a Flan Missions." }, { "Minigames", "Rewards earned for obtaining an A-Rank in a Minigame." }, - { "Battlegates", "Rewards earned for completing a Battle Portal." }, + { "Battlegates", "Rewards earned for completing a Battlegate." }, { "Base Sora Stats", "Stats related to Sora's initial Max Health, Magic and Focus Points." }, { "Level Up Stats", "Stats for Sora's Level Up Attack, Magic, Defense and Ability Points." }, diff --git a/KH3Randomizer/Data/Extensions.cs b/KH3Randomizer/Data/Extensions.cs index c2b1a72..30cb253 100644 --- a/KH3Randomizer/Data/Extensions.cs +++ b/KH3Randomizer/Data/Extensions.cs @@ -455,26 +455,26 @@ public static string KeyIdToDisplay(this string input) "IW_187" => "Oblivion Upgrade 8", "IW_188" => "Oblivion Upgrade 9", "IW_189" => "Oblivion Upgrade 10", - "EVENT_001" => "Forge Goofy's Shield", - "EVENT_002" => "Find 1st Golden Herc Statue", - "EVENT_003" => "Find 2nd Golden Herc Statue", - "EVENT_004" => "Find 3rd Golden Herc Statue", - "EVENT_005" => "Find 4th Golden Herc Statue", - "EVENT_006" => "Find 5th Golden Herc Statue", - "EVENT_007" => "Return All Golden Herc Statues", - "EVENT_008" => "Defeat the Unversed before the Power Plant", + "EVENT_001" => "Forge Knight's Shield+ for Goofy", + "EVENT_002" => "Find Golden Herc Figure in Thebes: Alleyway", + "EVENT_003" => "Find Golden Herc Figure in Thebes: Garden", + "EVENT_004" => "Find Golden Herc Figure in Thebes: Garden", + "EVENT_005" => "Find Golden Herc Figure in Thebes: Overlook", + "EVENT_006" => "Find Golden Herc Figure in Thebes: Agora", + "EVENT_007" => "Return All Golden Herc Figures", + "EVENT_008" => "Defeat the Unversed in The Factory: Second Floor", "EVENT_009" => "Rescue the Trapped Big Hero 6 Members", - "TresUIMobilePortalDataAsset" => "Complete All Classic Mickey Games", - "EVENT_KEYBLADE_001" => "Complete Olympus", + "TresUIMobilePortalDataAsset" => "Complete All Classic Kingdom Minigames", + "EVENT_KEYBLADE_001" => "Defeat Tornado Titan & Complete Olympus", "EVENT_KEYBLADE_002" => "Complete Twilight Town", - "EVENT_KEYBLADE_003" => "Complete Toy Box", - "EVENT_KEYBLADE_004" => "Complete Kingdom of Corona", - "EVENT_KEYBLADE_005" => "Complete Monstropolis", + "EVENT_KEYBLADE_003" => "Defeat King of Toys & Complete Toy Box", + "EVENT_KEYBLADE_004" => "Defeat Grim Guardianess & Complete Kingdom of Corona", + "EVENT_KEYBLADE_005" => "Defeat Lump of Horror & Complete Monstropolis", "EVENT_KEYBLADE_006" => "Complete 100 Acre Wood", - "EVENT_KEYBLADE_007" => "Complete Arendelle", - "EVENT_KEYBLADE_008" => "Complete The Caribbean", - "EVENT_KEYBLADE_009" => "Complete San Fransokyo", - "EVENT_KEYBLADE_010" => "Complete All of Tiny Chef's Recipes", + "EVENT_KEYBLADE_007" => "Defeat Skoll & Complete Arendelle", + "EVENT_KEYBLADE_008" => "Defeat Davy Jones & Complete The Caribbean", + "EVENT_KEYBLADE_009" => "Defeat Dark Baymax & Complete San Fransokyo", + "EVENT_KEYBLADE_010" => "Complete All of Little Chef's Recipes", "EVENT_KEYBLADE_011" => "Defeat Demon Tide in The Keyblade Graveyard", "EVENT_KEYBLADE_012" => "Return the Proof of Promises to the Moogle", "EVENT_KEYBLADE_013" => "Return the Proof of Times Past to the Moogle", @@ -485,8 +485,8 @@ public static string KeyIdToDisplay(this string input) "EVENT_REPORT_001a" or "EVENT_REPORT_001b" => "Complete Battlegate 1 in Olympus", "EVENT_REPORT_002a" or "EVENT_REPORT_002b" => "Complete Battlegate 2 in Olympus", "EVENT_REPORT_003a" or "EVENT_REPORT_003b" => "Complete Battlegate 3 in Twilight Town", - "EVENT_REPORT_004a" or "EVENT_REPORT_004b" => "Complete Battlegate 4 in Toy Box", - "EVENT_REPORT_005a" or "EVENT_REPORT_005b" => "Complete Battlegate 5 in Toy Box", + "EVENT_REPORT_004a" or "EVENT_REPORT_004b" => "Complete Battlegate 4 in Toy Box (Galaxy Toys - Kid Korral)", + "EVENT_REPORT_005a" or "EVENT_REPORT_005b" => "Complete Battlegate 5 in Toy Box (Galaxy Toys - Main Floor: 1F)", "EVENT_REPORT_006a" or "EVENT_REPORT_006b" => "Complete Battlegate 6 in Kingdom of Corona", "EVENT_REPORT_007a" or "EVENT_REPORT_007b" => "Complete Battlegate 7 in Kingdom of Corona", "EVENT_REPORT_008a" or "EVENT_REPORT_008b" => "Complete Battlegate 8 in Monstropolis", @@ -494,7 +494,7 @@ public static string KeyIdToDisplay(this string input) "EVENT_REPORT_010a" or "EVENT_REPORT_010b" => "Complete Battlegate 10 in The Caribbean", "EVENT_REPORT_011a" or "EVENT_REPORT_011b" => "Complete Battlegate 11 in San Fransokyo", "EVENT_REPORT_012a" or "EVENT_REPORT_012b" => "Complete Battlegate 12 in San Fransokyo", - "EVENT_REPORT_013a" or "EVENT_REPORT_013b" => "Complete Battlegate 13 in The Keyblade Graveyard", + "EVENT_REPORT_013a" or "EVENT_REPORT_013b" => "Complete Battlegate 13 in The Keyblade Graveyard: ", "EVENT_REPORT_014" => "Defeat Dark Inferno", "EVENT_CKGAME_001" => "Complete Twilight Town", "EVENT_KEYITEM_001" => "Received After Returning to Yen Sid's Tower", @@ -503,7 +503,7 @@ public static string KeyIdToDisplay(this string input) "EVENT_KEYITEM_004" => "Complete the Game on Critical", "EVENT_KEYITEM_005" => "Defeat Yozora", "EVENT_DATAB_001" => "Defeat Data Master Xehanort", - "EVENT_DATAB_002" => "Defeat Data Ansem: Seeker of Darkness", + "EVENT_DATAB_002" => "Defeat Data Ansem", "EVENT_DATAB_003" => "Defeat Data Xemnas", "EVENT_DATAB_004" => "Defeat Data Xigbar", "EVENT_DATAB_005" => "Defeat Data Luxord", @@ -529,28 +529,28 @@ public static string KeyIdToDescription(this string input) "Vbonus_005" => "After the 2nd Flame Core battle in Olympus - Thebes: Overlook", "Vbonus_006" => "After the 3rd Flame Core battle in Olympus - Thebes: Gardens", "Vbonus_007" => "After the timed Heartless battle in Olympus - Thebes: Alleyway", - "Vbonus_008" => "After the Rock Troll battle in Olympus - Thebes: Agora", + "Vbonus_008" => "Defeat Rock Troll in Olympus - Thebes: Agora", "Vbonus_009" => "After the Water Core(?) battle on the way up mountain in Olympus", - "Vbonus_010" => "After the Rock Titan boss battle in Olympus", + "Vbonus_010" => "Defeat Rock Titan in Olympus", "Vbonus_011" => "After the Satyr Mob battle in Olympus - Realm of the Gods: Courtyard", - "Vbonus_013" => "After the Tornado Titan boss battle in Olympus", - "Vbonus_014" => "After the Demon Tide battle in Twilight Town - Tram Common", + "Vbonus_013" => "Defeat Tornado Titan in Olympus", + "Vbonus_014" => "Defeat Demon Tide in Twilight Town - Tram Common", "Vbonus_015" => "After the Powerwild Mob battle in Twilight Town - The Woods", "Vbonus_016" => "After the Heartless & Nobody Mob battle in Twilight Town - The Old Mansion", "Vbonus_017" => "After the Heartless Mob battle in Toy Box - Andy's House", "Vbonus_018" => "After the Gigas Mob battle in Toy Box - Galaxy Toys Main Floor: 1F", - "Vbonus_019" => "After the Supreme Smashes battle in Toy Box - Action Figures", - "Vbonus_020" => "After the Angelic Amber boss battle in Toy Box - Babies & Toddlers: Dolls", + "Vbonus_019" => "After the Supreme Smashers battle in Toy Box - Action Figures", + "Vbonus_020" => "Defeat Angelic Amber in Toy Box - Babies & Toddlers: Dolls", "Vbonus_021" => "After the UFO battle in Toy Box - Babies & Toddlers: Outdoors", "Vbonus_022" => "After the Verum Rex: Beat of Lead minigame in Toy Box", - "Vbonus_023" => "After the King of Toys boss battle in Toy Box", + "Vbonus_023" => "Defeat King of Toys in Toy Box", "Vbonus_024" => "After the 1st Heartless Mob battle in Kingdom of Corona - Hills", "Vbonus_025" => "After the 2nd Heartless Mob battle in Kingdom of Corona - Hills", "Vbonus_026" => "After the Reapers Nobody battle in Kingdom of Corona - Hills", - "Vbonus_027" => "After the Chaos Carriage Heartless battle in Kingdom of Corona", + "Vbonus_027" => "Defeat Chaos Carriage in Kingdom of Corona", "Vbonus_028" => "After the Reapers Nobody battle in the Castle Town in Kingdom of Corona", "Vbonus_029" => "After the Heartless Mob battle in Kingdom of Corona - Tower", - "Vbonus_030" => "After the Grim Guardianess boss battle in Kingdom of Corona - Tower", + "Vbonus_030" => "Defeat Grim Guardianess in Kingdom of Corona - Tower", "Vbonus_032" => "After the Unversed battle in Monstropolis - Lobby & Offices", "Vbonus_033" => "After the Unversed battle in Monstropolis - Laugh Floor", "Vbonus_034" => "After the battle to make Boo laugh in in Monstropolis - The Door Vault: Upper Level", @@ -559,43 +559,43 @@ public static string KeyIdToDescription(this string input) "Vbonus_037" => "After the Heartless & Unversed battle in Monstropolis - The Power Plant: Accessway", "Vbonus_038" => "After the Heartless Mob battle in Monstropolis - The Power Plant: Tank Yard", "Vbonus_039" => "After the Unversed battle in Monstropolis - The Power Plant: Tank Yard", - "Vbonus_040" => "After the Lump of Horror boss battle in Monstropolis - The Door Vault: Service Area", - "Vbonus_041" => "After the Rock Troll battle in Arendelle", + "Vbonus_040" => "Defeat Lump of Horror in Monstropolis - The Door Vault: Service Area", + "Vbonus_041" => "Defeat Rock Troll in Arendelle", "Vbonus_042" => "After the first Ninja Nobody battle in Arendelle - The Labyrinth of Ice", "Vbonus_043" => "After the second Ninja Nobody battle in Arendelle - The Labyrinth of Ice", "Vbonus_044" => "After the third Ninja Nobody battle in Arendelle - The Labyrinth of Ice", "Vbonus_045" => "After the fourth Ninja Nobody battle in Arendelle - The Labyrinth of Ice", - "Vbonus_047" => "After the Marshmallow boss battle in Arendelle", + "Vbonus_047" => "Defeat Marshmallow in Arendelle", "Vbonus_048" => "After the 3 Frost Serpent Heartless battle in Arendelle", "Vbonus_049" => "After the Heartless Mob battle in Valley of Ice in Arendelle", - "Vbonus_050" => "After the Skoll boss battle in Arendelle", - "Vbonus_051" => "After the Metal Troll battle on the bridge in San Fransokyo", + "Vbonus_050" => "Defeat Skoll in Arendelle", + "Vbonus_051" => "Defeat Metal Troll on the bridge in San Fransokyo", "Vbonus_052" => "After the meeting Hiro in the garage in San Fransokyo", "Vbonus_053" => "After the Heartless Mob battle on the roof in San Fransokyo - The City (Day)", - "Vbonus_054" => "After the Catastrochorus boss battle in San Fransokyo - The City (Day)", + "Vbonus_054" => "Defeat Catastrochorus in San Fransokyo - The City (Day)", "Vbonus_055" => "After the rescue mission for the Big Hero 6 team in San Fransokyo - The City (Night)", - "Vbonus_056" => "After the Darkube boss battle in San Fransokyo - The City (Night)", - "Vbonus_057" => "After the Dark Baymax boss battle in San Fransokyo - The City (Day)", + "Vbonus_056" => "Defeat Darkubes in San Fransokyo - The City (Night)", + "Vbonus_057" => "Defeat Dark Baymax in San Fransokyo - The City (Day)", "Vbonus_058" => "After catching the Black Pearl in Davy Jones Locker in The Caribbean", "Vbonus_059" => "After the first ship battle in The Caribbean", - "Vbonus_060" => "After the Raging Vulture boss battle in The Caribbean", - "Vbonus_061" => "After the Lightning Angler boss battle in The Caribbean", + "Vbonus_060" => "Defeat Raging Vulture in The Caribbean", + "Vbonus_061" => "Defeat Lightning Angler in The Caribbean", "Vbonus_062" => "After the Luxord ship race to Port Royal in The Caribbean", "Vbonus_063" => "After the second ship battle in The Caribbean", "Vbonus_064" => "After the third ship battle in The Caribbean", - "Vbonus_065" => "After the Kraken boss battle in The Caribbean", - "Vbonus_066" => "After the Davy Jones boss battle in The Caribbean", - "Vbonus_067" => "After the Anti-Aqua boss battle in The Dark World", - "Vbonus_068" => "After the last Lich boss battle in San Fransokyo", + "Vbonus_065" => "Defeat the Kraken in The Caribbean", + "Vbonus_066" => "Defeat Davy Jones in The Caribbean", + "Vbonus_067" => "Defeat Anti-Aqua boss battle in The Dark World", + "Vbonus_068" => "Defeat the last Lich in San Fransokyo", "Vbonus_069" => "After the Heartless, Nobody & Unversed Mob battle in The Keyblade Graveyard", - "Vbonus_070" => "After the Demon Tide boss battle in The Keyblade Graveyard", - "Vbonus_071" => "After the Xigbar & Dark Riku boss battle in The Keyblade Graveyard", - "Vbonus_072" => "After the Luxord, Larxene & Marluxia boss battle in The Keyblade Graveyard", - "Vbonus_073" => "After the Terra-Xehanort & Vanitas boss battle in The Keyblade Graveyard", - "Vbonus_074" => "After the Saix boss battle in The Keyblade Graveyard", - "Vbonus_075" => "After the Young Xehanort, Ansem & Xemnas boss battle in The Keyblade Graveyard", + "Vbonus_070" => "Defeat Demon Tide in The Keyblade Graveyard", + "Vbonus_071" => "Defeat Xigbar & Dark Riku in The Keyblade Graveyard", + "Vbonus_072" => "Defeat Luxord, Marluxia, & Larxene in The Keyblade Graveyard", + "Vbonus_073" => "Defeat Vanitas & Terra-Xehanort in The Keyblade Graveyard", + "Vbonus_074" => "Defeat Saix in The Keyblade Graveyard", + "Vbonus_075" => "Defeat Young Xehanort, Ansem, & Xemnas in The Keyblade Graveyard", "Vbonus_076" => "After the Heartless, Nobody & Unversed Mob battle in The Keyblade Graveyard", - "Vbonus_082" => "After the Darkside boss battle in The Final World", + "Vbonus_082" => "Defeat Darkside in The Final World", "Vbonus_083" => "After collecting 222 Soras in The Final World", "Vbonus_084" => "After collecting 333 Soras in The Final World", "VBonus_Minigame001" => "After obtaining the first A-rank in Verum Rex: Beat of Lead minigame in Toy Box", @@ -611,21 +611,21 @@ public static string KeyIdToDescription(this string input) "VBonus_Minigame011" => "After obtaining the first A-Rank in the Grape Flan minigame in Arendelle", "VBonus_Minigame012" => "After obtaining the first A-Rank in the Watermelon Flan minigame in The Caribbean", "VBonus_Minigame013" => "After obtaining the first A-Rank in the Melon Flan minigame in San Fransokyo", - "VBonus_DLC_001" => "After the Dark Inferno χ boss battle in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_002" => "After the Anti-Aqua boss battle in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_003" => "After the Terra-Xehanort boss battle in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_004" => "After the Xigbar & Dark Riku boss battle in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_005" => "After the Luxord, Larxene & Marluxia boss battle in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_006" => "After the Terra-Xehanort & Vanitas boss battle in The Keyblade Graveyard (Re+Mind)", + "VBonus_DLC_001" => "Defeat Dark Inferno χ in The Keyblade Graveyard (Re+Mind)", + "VBonus_DLC_002" => "Defeat Anti-Aqua in The Keyblade Graveyard (Re+Mind)", + "VBonus_DLC_003" => "Defeat Terra-Xehanort in The Keyblade Graveyard (Re+Mind)", + "VBonus_DLC_004" => "Defeat Xigbar & Dark Riku in The Keyblade Graveyard (Re+Mind)", + "VBonus_DLC_005" => "Defeat Luxord, Marluxia, & Larxene in The Keyblade Graveyard (Re+Mind)", + "VBonus_DLC_006" => "Defeat Vanitas & Terra-Xehanort in The Keyblade Graveyard (Re+Mind)", "VBonus_DLC_007" => "After the Saix boss battle in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_008" => "After the Young Xehanort, Ansem & Xemnas boss battle in The Keyblade Graveyard (Re+Mind)", + "VBonus_DLC_008" => "Defeat Young Xehanort, Ansem, & Xemnas in The Keyblade Graveyard (Re+Mind)", "VBonus_DLC_009" => "After the Shadow Heartless battle in Scala ad Caelum (Re+Mind)", - "VBonus_DLC_010" => "After the Darkside boss battle in Scala ad Caelum (Re+Mind)", + "VBonus_DLC_010" => "Defeat Darkside in Scala ad Caelum (Re+Mind)", "VBonus_DLC_011" => "After collecting all of Kairi's heart fragments in Re+Mind", - "VBonus_DLC_012" => "After the Replica Xehanorts boss battle as the Guardians of Light in Re+Mind", - "VBonus_DLC_013" => "After the Replica Xehanorts boss battle as King Mickey in Re+Mind", + "VBonus_DLC_012" => "Defeat the Replica Xehanorts as the Guardians of Light in Re+Mind", + "VBonus_DLC_013" => "Defeat the Replica Xehanorts as King Mickey in Re+Mind", "VBonus_DLC_014" => "After connecting all the keyholes in Re+Mind", - "VBonus_DLC_015" => "After the Armored Xehanort boss battle in Re+Mind", + "VBonus_DLC_015" => "Defeat Armored Xehanort in Re+Mind", "IS_0" => "Originally Ether", "IS_1" => "Originally Fire Bangle", "IS_2" => "Originally Fira Bangle", @@ -1321,9 +1321,9 @@ public static string ToLevelUpRoute(this string type) { return type switch { - "TypeA" => "Mystic", - "TypeB" => "Warrior", - "TypeC" => "Guardian", + "TypeA" => "Wisdom", + "TypeB" => "Vitality", + "TypeC" => "Balance", _ => "", }; } @@ -1392,7 +1392,7 @@ public static string GetChestLocation(this string chest, DataTableEnum dataTable "Large Chest 6" => "Chest 29 (Large Chest, Galaxy Toys: Rail 3)", "Small Chest 1" => "Chest 3 (Small Chest, Andy's House)", "Small Chest 2" => "Chest 4 (Small Chest, Andy's House)", - "Small Chest 3" => "Chest 6 (Small Chest, Galaxy Toys: Exit)", + "Small Chest 3" => "Chest 6 (Small Chest, Galaxy Toys: Above Entrance)", "Small Chest 4" => "Chest 7 (Small Chest, Galaxy Toys: Rail 3)", "Small Chest 5" => "Chest 8 (Small Chest, Galaxy Toys: Action Figures)", "Small Chest 6" => "Chest 9 (Small Chest, Galaxy Toys: Action Figures)", @@ -1440,7 +1440,7 @@ public static string GetChestLocation(this string chest, DataTableEnum dataTable "Small Chest 15" => "Chest 19 (Small Chest, The Forest: Campsite)", "Small Chest 16" => "Chest 20 (Small Chest, The Forest: Shore)", "Small Chest 17" => "Chest 21 (Small Chest, The Forest: Wildflower Clearing)", - "Small Chest 18" => "Chest 23 (Small Chest, The Kingdom: Thoroughfare)", + "Small Chest 18" => "Chest 23 (Small Chest, The Kingdom: Festival Dance Area)", "Small Chest 19" => "Chest 25 (Small Chest, The Kingdom: Thoroughfare)", "Small Chest 20" => "Chest 26 (Small Chest, The Kingdom: Wharf)", "Small Chest 21" => "Chest 27 (Small Chest, The Kingdom: Wharf)", @@ -1449,12 +1449,12 @@ public static string GetChestLocation(this string chest, DataTableEnum dataTable }, DataTableEnum.TreasureMI => chest switch { - "Large Chest 1" => "Chest 1 (Large Chest, Monsters, Inc.)", + "Large Chest 1" => "Chest 1 (Large Chest, Monsters, Inc.: Lobby & Offices)", "Large Chest 2" => "Chest 9 (Large Chest, The Factory)", "Large Chest 3" => "Chest 19 (Large Chest, The Power Plant: Tank Yard)", "Large Chest 4" => "Chest 10 (Large Chest, The Factory)", - "Small Chest 1" => "Chest 2 (Small Chest, Monsters, Inc.)", - "Small Chest 2" => "Chest 3 (Small Chest, Monsters, Inc.)", + "Small Chest 1" => "Chest 2 (Small Chest, Monsters, Inc.: Lobby & Offices)", + "Small Chest 2" => "Chest 3 (Small Chest, Monsters, Inc.: Laugh Floor)", "Small Chest 3" => "Chest 4 (Small Chest, Monsters, Inc.)", "Small Chest 5" => "Chest 11 (Small Chest, The Factory)", "Small Chest 6" => "Chest 12 (Small Chest, The Factory)", @@ -1607,7 +1607,7 @@ public static string GetChestLocation(this string chest, DataTableEnum dataTable "Large Chest 1" => "Chest 1 (Large Chest, The Badlands)", "Large Chest 2" => "Chest 3 (Large Chest, The Skein of Severance: Trail of Valediction)", "Small Chest 1" => "Chest 4 (Small Chest, The Skein of Severance: Trail of Valediction)", - "Small Chest 2" => "Chest 5 (Small Chest, The Skein of Severance: Trail of Valediction/Twist of Isolation)", + "Small Chest 2" => "Chest 5 (Small Chest, The Skein of Severance: Trail of Valediction, Switch Floor Maze)", "Small Chest 3" => "Chest 6 (Small Chest, The Skein of Severance: Twist of Isolation)", "Small Chest 4" => "Chest 2 (Small Chest, The Badlands)", _ => "", diff --git a/KH3Randomizer/Data/HintService.cs b/KH3Randomizer/Data/HintService.cs index 3283c07..2358a3e 100644 --- a/KH3Randomizer/Data/HintService.cs +++ b/KH3Randomizer/Data/HintService.cs @@ -82,7 +82,7 @@ public byte[] GenerateHints(string seed, DictionaryString used for hints public string GetCategoryHint(string hintKey, List hintValue) { - return hintValue.Count == 1 ? $"There is {hintValue.Count} check {hintKey}" : $"There are {hintValue.Count} checks {hintKey}"; + return hintValue.Count == 1 ? $"There is {hintValue.Count} important check {hintKey}" : $"There are {hintValue.Count} important checks {hintKey}"; } /// @@ -925,21 +925,33 @@ public Tuple GetLocation(DataTableEnum category, string subCateg #region Events case "EVENT_001": world = "Olympus"; - description = "(Forge Goofy's Shield)"; + description = "(Forge Knight's Shield+ for Goofy)"; break; case "EVENT_002": + world = "Olympus"; + description = "(Obtain Golden Herc Figure in Thebes: Alleyway, In Building)"; + break; case "EVENT_003": + world = "Olympus"; + description = "(Obtain Golden Herc Figure in Thebes: Garden, Digged-Up Pit)"; + break; case "EVENT_004": + world = "Olympus"; + description = "(Obtain Golden Herc Figure in Thebes: Garden, In Building)"; + break; case "EVENT_005": + world = "Olympus"; + description = "(Obtain Golden Herc Figure in Thebes: Overlook, On Statue's Shield)"; + break; case "EVENT_006": world = "Olympus"; - description = "(Golden Herc Statue)"; + description = "(Obtain Golden Herc Figure in Thebes: Agora, Near Save Point)"; break; case "EVENT_007": world = "Olympus"; - description = "(Return Herc Statues)"; + description = "(Return all Golden Herc Figures)"; break; case "EVENT_008": @@ -1724,13 +1736,13 @@ public string GetLevelUpAlternatives(Dictionary { { "Frozen Chase Skip", true }, { "Faster Crab Collection", true }, { "Big Hero Rescue Skip", false }, - { "Faster Sora Collection", true }, { "Union χ Skip", false }, { "Guardians of Light Skip", true } } + { "Faster Sora Collection", true }, { "Union χ Skip", false }, { "Guardians of Light Skip", false } } }, { "Items", new Dictionary { - { "All Maps Unlocked", false }, { "Easily Upgraded Keyblades", false }, { "Max Level Ship", true } } + { "All Maps Unlocked", true }, { "Easily Upgraded Keyblades", false }, { "Max Level Ship", true } } } }; From d701c6b53ac73d1fd8532c3dd962621d9b89e109 Mon Sep 17 00:00:00 2001 From: Kiernan Brown Date: Sun, 5 May 2024 19:34:51 -0400 Subject: [PATCH 04/11] Update RandomizerService.cs First pass at addressing issues with Level Up Limit and Lucky Emblem Limit. --- KH3Randomizer/Data/RandomizerService.cs | 46 +++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/KH3Randomizer/Data/RandomizerService.cs b/KH3Randomizer/Data/RandomizerService.cs index 53a9089..6f138dd 100644 --- a/KH3Randomizer/Data/RandomizerService.cs +++ b/KH3Randomizer/Data/RandomizerService.cs @@ -170,6 +170,10 @@ public class RandomizerService { "Food Effect Stats", new Tuple(0, 6) } }; + // It looks like there are issues when processing limiters/cleaning up + // This is to stop from swaping into pools that have been cleaned + private List BlockedCategories = new() { }; + public HintService HintService { get; set; } public RandomizerService(HintService hintService) @@ -295,6 +299,8 @@ public Dictionary>> // } //} + this.BlockedCategories.Clear(); + return randomizedOptions; } @@ -1069,7 +1075,7 @@ public void ProcessExceptions(ref Dictionary>> randomizedOptions, Dictionary randomizePools, Dictionary limiters, Random random, bool canUseNone = true) { // Handle Level Up Limit - if (randomizedOptions.ContainsKey(DataTableEnum.LevelUp) && limiters["Level Up Limit"] != 50) + /*if (randomizedOptions.ContainsKey(DataTableEnum.LevelUp) && limiters["Level Up Limit"] != 50) { var levelStart = limiters["Level Up Limit"]; for (int i = levelStart; i <= 50; ++i) @@ -1081,10 +1087,38 @@ public void ProcessLimiters(ref Dictionary>> GetOptionsForPool(string pool, Dictionary>> defaultOptions) @@ -2048,6 +2086,10 @@ public void SwapRandomOption(ref Dictionary GetLevels(string subCategory) return subCategory switch { "2" => new Tuple("6", "6"), - "4" => new Tuple("14", "16"), + "4" => new Tuple("16", "14"), "6" => new Tuple("4", "12"), "9" => new Tuple("30", "24"), "12" => new Tuple("44", "18"), From 3287c1d81edd0802903fd7a4c6d220a5421c8670 Mon Sep 17 00:00:00 2001 From: Kiernan Brown Date: Tue, 7 May 2024 11:42:29 -0400 Subject: [PATCH 05/11] Merge Sonic's Changes Merged Sonicshadowsilver2's changes to hint/chest descriptions. --- KH3Randomizer/Components/Pools.razor | 4 +- KH3Randomizer/Data/Extensions.cs | 826 +++++++++++++-------------- KH3Randomizer/Data/HintService.cs | 168 +++--- 3 files changed, 501 insertions(+), 497 deletions(-) diff --git a/KH3Randomizer/Components/Pools.razor b/KH3Randomizer/Components/Pools.razor index d0ee93a..d875f99 100644 --- a/KH3Randomizer/Components/Pools.razor +++ b/KH3Randomizer/Components/Pools.razor @@ -411,7 +411,7 @@ { "Extra Movement", "Adds additional movement abilities that overwrite materials in the Pools, like Dodge Roll, Air Slide, etc. - This can cause empty checks." }, { "Safe Magic Locations", "Attempts to add Magic only in places where a retry will not remove it from Sora's magic pool." }, - { "Replace Classic Kingdom Reward", "Replaces the reward for getting all High-scores with something marked as replaceable." }, + { "Replace Classic Kingdom Reward", "Replaces the reward for getting High Scores on all Classic Kingdom minigames with something marked as replaceable." }, { "Replace Little Chef's Reward", "Replaces the reward for completing all Little Chef's recipes with something marked as replaceable." }, { "Replace Golden Herc Rewards", "Replaces the reward for finding all Golden Herc statues with something marked as replaceable." }, { "Replace Sora Collection Rewards", "Replaces the reward for collecting 222 and 333 Soras in the Final World with something marked as replaceable." }, @@ -450,7 +450,7 @@ { "Moogle Workshop", "Synthesis Items, Photo Mission Rewards and Abilities gained from leveling up Keyblades." }, { "Fullcourse Abilities", "Abilities gained for a limited amount of time from eating fullcourse meals." }, { "Lucky Emblems", "Rewards earned for finding Lucky Emblems." }, - { "Flantastic Flans", "Rewards earned for max completing a Flan Missions." }, + { "Flantastic Flans", "Rewards earned for getting a certain amount of points in Flan Missions." }, { "Minigames", "Rewards earned for obtaining an A-Rank in a Minigame." }, { "Battlegates", "Rewards earned for completing a Battlegate." }, diff --git a/KH3Randomizer/Data/Extensions.cs b/KH3Randomizer/Data/Extensions.cs index 30cb253..cb4faaf 100644 --- a/KH3Randomizer/Data/Extensions.cs +++ b/KH3Randomizer/Data/Extensions.cs @@ -456,49 +456,49 @@ public static string KeyIdToDisplay(this string input) "IW_188" => "Oblivion Upgrade 9", "IW_189" => "Oblivion Upgrade 10", "EVENT_001" => "Forge Knight's Shield+ for Goofy", - "EVENT_002" => "Find Golden Herc Figure in Thebes: Alleyway", - "EVENT_003" => "Find Golden Herc Figure in Thebes: Garden", - "EVENT_004" => "Find Golden Herc Figure in Thebes: Garden", - "EVENT_005" => "Find Golden Herc Figure in Thebes: Overlook", - "EVENT_006" => "Find Golden Herc Figure in Thebes: Agora", + "EVENT_002" => "Find Golden Herc Figure in Thebes: Alleyway, In Building", + "EVENT_003" => "Find Golden Herc Figure in Thebes: Garden, Digged-Up Pit", + "EVENT_004" => "Find Golden Herc Figure in Thebes: Garden, In Building", + "EVENT_005" => "Find Golden Herc Figure in Thebes: Overlook, On Statue's Shield", + "EVENT_006" => "Find Golden Herc Figure in Thebes: Agora, Near Save Point", "EVENT_007" => "Return All Golden Herc Figures", - "EVENT_008" => "Defeat the Unversed in The Factory: Second Floor", - "EVENT_009" => "Rescue the Trapped Big Hero 6 Members", + "EVENT_008" => "The Factory: Second Floor Unversed", + "EVENT_009" => "Rescue Big Hero 6 from Darkubes", "TresUIMobilePortalDataAsset" => "Complete All Classic Kingdom Minigames", - "EVENT_KEYBLADE_001" => "Defeat Tornado Titan & Complete Olympus", + "EVENT_KEYBLADE_001" => "Complete Olympus", "EVENT_KEYBLADE_002" => "Complete Twilight Town", - "EVENT_KEYBLADE_003" => "Defeat King of Toys & Complete Toy Box", - "EVENT_KEYBLADE_004" => "Defeat Grim Guardianess & Complete Kingdom of Corona", - "EVENT_KEYBLADE_005" => "Defeat Lump of Horror & Complete Monstropolis", + "EVENT_KEYBLADE_003" => "Complete Toy Box", + "EVENT_KEYBLADE_004" => "Complete Kingdom of Corona", + "EVENT_KEYBLADE_005" => "Complete Monstropolis", "EVENT_KEYBLADE_006" => "Complete 100 Acre Wood", - "EVENT_KEYBLADE_007" => "Defeat Skoll & Complete Arendelle", - "EVENT_KEYBLADE_008" => "Defeat Davy Jones & Complete The Caribbean", - "EVENT_KEYBLADE_009" => "Defeat Dark Baymax & Complete San Fransokyo", - "EVENT_KEYBLADE_010" => "Complete All of Little Chef's Recipes", + "EVENT_KEYBLADE_007" => "Complete Arendelle", + "EVENT_KEYBLADE_008" => "Complete The Caribbean", + "EVENT_KEYBLADE_009" => "Complete San Fransokyo", + "EVENT_KEYBLADE_010" => "Complete All Recipes", "EVENT_KEYBLADE_011" => "Defeat Demon Tide in The Keyblade Graveyard", "EVENT_KEYBLADE_012" => "Return the Proof of Promises to the Moogle", "EVENT_KEYBLADE_013" => "Return the Proof of Times Past to the Moogle", "EVENT_HEARTBINDER_001" => "Received After Returning to Yen Sid's Tower", - "EVENT_HEARTBINDER_002" => "Complete Verum Rex: Beat of Lead in Toy Box", - "EVENT_HEARTBINDER_003" => "Received After Putting Out the Fires in Monstropolis", - "EVENT_HEARTBINDER_004" => "Complete Flash Tracer in San Fransokyo", - "EVENT_REPORT_001a" or "EVENT_REPORT_001b" => "Complete Battlegate 1 in Olympus", - "EVENT_REPORT_002a" or "EVENT_REPORT_002b" => "Complete Battlegate 2 in Olympus", - "EVENT_REPORT_003a" or "EVENT_REPORT_003b" => "Complete Battlegate 3 in Twilight Town", - "EVENT_REPORT_004a" or "EVENT_REPORT_004b" => "Complete Battlegate 4 in Toy Box (Galaxy Toys - Kid Korral)", - "EVENT_REPORT_005a" or "EVENT_REPORT_005b" => "Complete Battlegate 5 in Toy Box (Galaxy Toys - Main Floor: 1F)", - "EVENT_REPORT_006a" or "EVENT_REPORT_006b" => "Complete Battlegate 6 in Kingdom of Corona", - "EVENT_REPORT_007a" or "EVENT_REPORT_007b" => "Complete Battlegate 7 in Kingdom of Corona", - "EVENT_REPORT_008a" or "EVENT_REPORT_008b" => "Complete Battlegate 8 in Monstropolis", - "EVENT_REPORT_009a" or "EVENT_REPORT_009b" => "Complete Battlegate 9 in Arendelle", - "EVENT_REPORT_010a" or "EVENT_REPORT_010b" => "Complete Battlegate 10 in The Caribbean", - "EVENT_REPORT_011a" or "EVENT_REPORT_011b" => "Complete Battlegate 11 in San Fransokyo", - "EVENT_REPORT_012a" or "EVENT_REPORT_012b" => "Complete Battlegate 12 in San Fransokyo", - "EVENT_REPORT_013a" or "EVENT_REPORT_013b" => "Complete Battlegate 13 in The Keyblade Graveyard: ", + "EVENT_HEARTBINDER_002" => "Complete Verum Rex: Beat of Lead during the Story", + "EVENT_HEARTBINDER_003" => "The Power Plant: Tank Yard Heartless", + "EVENT_HEARTBINDER_004" => "Complete Flash Tracer during the Story", + "EVENT_REPORT_001a" or "EVENT_REPORT_001b" => "Complete Battlegate 1 in Olympus (Realm of the Gods: Courtyard)", + "EVENT_REPORT_002a" or "EVENT_REPORT_002b" => "Complete Battlegate 2 in Olympus (Realm of the Gods: Apex)", + "EVENT_REPORT_003a" or "EVENT_REPORT_003b" => "Complete Battlegate 3 in Twilight Town (The Old Mansion)", + "EVENT_REPORT_004a" or "EVENT_REPORT_004b" => "Complete Battlegate 4 in Toy Box (Galaxy Toys: Kid Korral)", + "EVENT_REPORT_005a" or "EVENT_REPORT_005b" => "Complete Battlegate 5 in Toy Box (Galaxy Toys: Main Floor: 1F)", + "EVENT_REPORT_006a" or "EVENT_REPORT_006b" => "Complete Battlegate 6 in Kingdom of Corona (The Forest: Wetlands)", + "EVENT_REPORT_007a" or "EVENT_REPORT_007b" => "Complete Battlegate 7 in Kingdom of Corona (The Forest: Hills)", + "EVENT_REPORT_008a" or "EVENT_REPORT_008b" => "Complete Battlegate 8 in Monstropolis (The Power Plant: Tank Yard)", + "EVENT_REPORT_009a" or "EVENT_REPORT_009b" => "Complete Battlegate 9 in Arendelle (The Labyrinth of Ice: Middle Tier)", + "EVENT_REPORT_010a" or "EVENT_REPORT_010b" => "Complete Battlegate 10 in The Caribbean (The High Seas: Huddled Isles)", + "EVENT_REPORT_011a" or "EVENT_REPORT_011b" => "Complete Battlegate 11 in San Fransokyo (The City: North District)", + "EVENT_REPORT_012a" or "EVENT_REPORT_012b" => "Complete Battlegate 12 in San Fransokyo (The City: Central District)", + "EVENT_REPORT_013a" or "EVENT_REPORT_013b" => "Complete Battlegate 13 in The Keyblade Graveyard (The Badlands)", "EVENT_REPORT_014" => "Defeat Dark Inferno", "EVENT_CKGAME_001" => "Complete Twilight Town", "EVENT_KEYITEM_001" => "Received After Returning to Yen Sid's Tower", - "EVENT_KEYITEM_002" => "Received During First Visit to Hiro's Garage", + "EVENT_KEYITEM_002" => "Meet Big Hero 6 in Hiro's Garage", "EVENT_KEYITEM_003" => "Find All Lucky Emblems", "EVENT_KEYITEM_004" => "Complete the Game on Critical", "EVENT_KEYITEM_005" => "Defeat Yozora", @@ -509,7 +509,7 @@ public static string KeyIdToDisplay(this string input) "EVENT_DATAB_005" => "Defeat Data Luxord", "EVENT_DATAB_006" => "Defeat Data Larxene", "EVENT_DATAB_007" => "Defeat Data Marluxia", - "EVENT_DATAB_008" => "Defeat Data Saix", + "EVENT_DATAB_008" => "Defeat Data Saïx", "EVENT_DATAB_009" => "Defeat Data Terra-Xehanort", "EVENT_DATAB_010" => "Defeat Data Dark Riku", "EVENT_DATAB_011" => "Defeat Data Vanitas", @@ -524,108 +524,108 @@ public static string KeyIdToDescription(this string input) { return input.Replace("\u0000", "") switch { - "Vbonus_001" => "After the first battle in Olympus - Cliff Ascent", - "Vbonus_002" => "After the 1st Flame Core battle in Olympus - Thebes: Agora", - "Vbonus_005" => "After the 2nd Flame Core battle in Olympus - Thebes: Overlook", - "Vbonus_006" => "After the 3rd Flame Core battle in Olympus - Thebes: Gardens", - "Vbonus_007" => "After the timed Heartless battle in Olympus - Thebes: Alleyway", + "Vbonus_001" => "Olympus - Mount Olympus: Cliff Ascent Heartless", + "Vbonus_002" => "Olympus - Thebes: Agora Flame Cores", + "Vbonus_005" => "Olympus - Thebes: Overlook Flame Cores", + "Vbonus_006" => "Olympus - Thebes: Gardens Flame Cores", + "Vbonus_007" => "Olympus - Thebes: Alleyway Heartless", "Vbonus_008" => "Defeat Rock Troll in Olympus - Thebes: Agora", "Vbonus_009" => "After the Water Core(?) battle on the way up mountain in Olympus", - "Vbonus_010" => "Defeat Rock Titan in Olympus", - "Vbonus_011" => "After the Satyr Mob battle in Olympus - Realm of the Gods: Courtyard", - "Vbonus_013" => "Defeat Tornado Titan in Olympus", - "Vbonus_014" => "Defeat Demon Tide in Twilight Town - Tram Common", - "Vbonus_015" => "After the Powerwild Mob battle in Twilight Town - The Woods", - "Vbonus_016" => "After the Heartless & Nobody Mob battle in Twilight Town - The Old Mansion", - "Vbonus_017" => "After the Heartless Mob battle in Toy Box - Andy's House", - "Vbonus_018" => "After the Gigas Mob battle in Toy Box - Galaxy Toys Main Floor: 1F", - "Vbonus_019" => "After the Supreme Smashers battle in Toy Box - Action Figures", + "Vbonus_010" => "Defeat Rock Titan in Olympus: Mount Olympus - Summit", + "Vbonus_011" => "Olympus - Realm of the Gods: Courtyard Satyrs", + "Vbonus_013" => "Defeat Tornado Titan in Olympus: Realm of the Gods", + "Vbonus_014" => "Defeat Demon Tide in Twilight Town - The Neighborhood: Tram Common", + "Vbonus_015" => "Twilight Town - The Woods Powerwilds", + "Vbonus_016" => "Twilight Town - The Old Mansion Heartless & Nobodies", + "Vbonus_017" => "Toy Box - Andy's House Heartless", + "Vbonus_018" => "Toy Box - Galaxy Toys: Main Floor: 1F Gigas", + "Vbonus_019" => "Toy Box - Galaxy Toys: Action Figures Supreme Smashers", "Vbonus_020" => "Defeat Angelic Amber in Toy Box - Babies & Toddlers: Dolls", - "Vbonus_021" => "After the UFO battle in Toy Box - Babies & Toddlers: Outdoors", - "Vbonus_022" => "After the Verum Rex: Beat of Lead minigame in Toy Box", - "Vbonus_023" => "Defeat King of Toys in Toy Box", - "Vbonus_024" => "After the 1st Heartless Mob battle in Kingdom of Corona - Hills", - "Vbonus_025" => "After the 2nd Heartless Mob battle in Kingdom of Corona - Hills", - "Vbonus_026" => "After the Reapers Nobody battle in Kingdom of Corona - Hills", + "Vbonus_021" => "After the UFO Mini-Boss in Toy Box - Babies & Toddlers: Outdoors", + "Vbonus_022" => "Complete Verum Rex: Beat of Lead during the Story", + "Vbonus_023" => "Defeat King of Toys in Toy Box: Galaxy Toys", + "Vbonus_024" => "Kingdom of Corona - The Forest: Hills Heartless", + "Vbonus_025" => "Kingdom of Corona - The Forest: Hills Chief Puffs & Puffballs", + "Vbonus_026" => "Kingdom of Corona - The Forest: Hills Reapers", "Vbonus_027" => "Defeat Chaos Carriage in Kingdom of Corona", - "Vbonus_028" => "After the Reapers Nobody battle in the Castle Town in Kingdom of Corona", - "Vbonus_029" => "After the Heartless Mob battle in Kingdom of Corona - Tower", - "Vbonus_030" => "Defeat Grim Guardianess in Kingdom of Corona - Tower", - "Vbonus_032" => "After the Unversed battle in Monstropolis - Lobby & Offices", - "Vbonus_033" => "After the Unversed battle in Monstropolis - Laugh Floor", - "Vbonus_034" => "After the battle to make Boo laugh in in Monstropolis - The Door Vault: Upper Level", - "Vbonus_035" => "After the Heartless & Unversed battle in Monstropolis - The Factory: Second Floor", - "Vbonus_036" => "After the battle to make Boo laugh in Monstropolis - The Factory: Second Floor", - "Vbonus_037" => "After the Heartless & Unversed battle in Monstropolis - The Power Plant: Accessway", - "Vbonus_038" => "After the Heartless Mob battle in Monstropolis - The Power Plant: Tank Yard", - "Vbonus_039" => "After the Unversed battle in Monstropolis - The Power Plant: Tank Yard", + "Vbonus_028" => "Kingdom of Corona - The Kingdom: Wharf Nobodies", + "Vbonus_029" => "Kingdom of Corona - The Forest: Tower Heartless", + "Vbonus_030" => "Defeat Grim Guardianess in Kingdom of Corona - The Forest: Tower", + "Vbonus_032" => "Monstropolis - Monsters Inc.: Lobby & Offices Unversed", + "Vbonus_033" => "Monstropolis - Monsters Inc.: Laugh Floor Unversed", + "Vbonus_034" => "Monstropolis - The Door Vault: Upper Level Heartless", + "Vbonus_035" => "Monstropolis - The Factory: Second Floor Heartless & Unversed", + "Vbonus_036" => "Monstropolis - The Factory: Second Floor Unversed", + "Vbonus_037" => "Monstropolis - The Power Plant: Accessway Heartless & Unversed", + "Vbonus_038" => "Monstropolis - The Power Plant: Tank Yard Heartless", + "Vbonus_039" => "Monstropolis - The Power Plant: Tank Yard Unversed", "Vbonus_040" => "Defeat Lump of Horror in Monstropolis - The Door Vault: Service Area", - "Vbonus_041" => "Defeat Rock Troll in Arendelle", - "Vbonus_042" => "After the first Ninja Nobody battle in Arendelle - The Labyrinth of Ice", - "Vbonus_043" => "After the second Ninja Nobody battle in Arendelle - The Labyrinth of Ice", - "Vbonus_044" => "After the third Ninja Nobody battle in Arendelle - The Labyrinth of Ice", - "Vbonus_045" => "After the fourth Ninja Nobody battle in Arendelle - The Labyrinth of Ice", - "Vbonus_047" => "Defeat Marshmallow in Arendelle", - "Vbonus_048" => "After the 3 Frost Serpent Heartless battle in Arendelle", - "Vbonus_049" => "After the Heartless Mob battle in Valley of Ice in Arendelle", + "Vbonus_041" => "Defeat Rock Troll & Winterhorns in Arendelle - The North Mountain: Gorge", + "Vbonus_042" => "The Labyrinth of Ice: Middle Tier Ninjas I", + "Vbonus_043" => "The Labyrinth of Ice: Lower Tier Ninjas II", + "Vbonus_044" => "The Labyrinth of Ice: Middle Tier Ninjas III", + "Vbonus_045" => "The Labyrinth of Ice: Middle Tier Ninjas IV", + "Vbonus_047" => "Defeat Marshmallow in Arendelle - The North Mountain: Mountain Ridge", + "Vbonus_048" => "Frozen Slider Frost Serpents", + "Vbonus_049" => "Arendelle - The North Mountain: The Valley of Ice Heartless", "Vbonus_050" => "Defeat Skoll in Arendelle", - "Vbonus_051" => "Defeat Metal Troll on the bridge in San Fransokyo", - "Vbonus_052" => "After the meeting Hiro in the garage in San Fransokyo", - "Vbonus_053" => "After the Heartless Mob battle on the roof in San Fransokyo - The City (Day)", + "Vbonus_051" => "Defeat Metal Troll in San Fransokyo: The Bridge", + "Vbonus_052" => "Meet Big Hero 6 in San Fransokyo - Hiro's Garage", + "Vbonus_053" => "The City Heartless at Hiro's indicator in San Fransokyo - The City (Day)", "Vbonus_054" => "Defeat Catastrochorus in San Fransokyo - The City (Day)", - "Vbonus_055" => "After the rescue mission for the Big Hero 6 team in San Fransokyo - The City (Night)", + "Vbonus_055" => "Rescue Big Hero 6 from Darkubes in San Fransokyo - The City (Night)", "Vbonus_056" => "Defeat Darkubes in San Fransokyo - The City (Night)", "Vbonus_057" => "Defeat Dark Baymax in San Fransokyo - The City (Day)", - "Vbonus_058" => "After catching the Black Pearl in Davy Jones Locker in The Caribbean", - "Vbonus_059" => "After the first ship battle in The Caribbean", - "Vbonus_060" => "Defeat Raging Vulture in The Caribbean", - "Vbonus_061" => "Defeat Lightning Angler in The Caribbean", - "Vbonus_062" => "After the Luxord ship race to Port Royal in The Caribbean", - "Vbonus_063" => "After the second ship battle in The Caribbean", - "Vbonus_064" => "After the third ship battle in The Caribbean", - "Vbonus_065" => "Defeat the Kraken in The Caribbean", - "Vbonus_066" => "Defeat Davy Jones in The Caribbean", - "Vbonus_067" => "Defeat Anti-Aqua boss battle in The Dark World", - "Vbonus_068" => "Defeat the last Lich in San Fransokyo", - "Vbonus_069" => "After the Heartless, Nobody & Unversed Mob battle in The Keyblade Graveyard", - "Vbonus_070" => "Defeat Demon Tide in The Keyblade Graveyard", - "Vbonus_071" => "Defeat Xigbar & Dark Riku in The Keyblade Graveyard", - "Vbonus_072" => "Defeat Luxord, Marluxia, & Larxene in The Keyblade Graveyard", - "Vbonus_073" => "Defeat Vanitas & Terra-Xehanort in The Keyblade Graveyard", - "Vbonus_074" => "Defeat Saix in The Keyblade Graveyard", - "Vbonus_075" => "Defeat Young Xehanort, Ansem, & Xemnas in The Keyblade Graveyard", - "Vbonus_076" => "After the Heartless, Nobody & Unversed Mob battle in The Keyblade Graveyard", + "Vbonus_058" => "Defeat Anchor Raiders in The Caribbean - Davy Jones' Locker", + "Vbonus_059" => "1st Ship Battle in The Caribbean - Over the Edge", + "Vbonus_060" => "Defeat Raging Vulture in The Caribbean - The High Seas: Southern Waters", + "Vbonus_061" => "Defeat Lightning Angler in The Caribbean - The High Seas: Undersea Cavern", + "Vbonus_062" => "Race Luxord to Port Royal in The Caribbean", + "Vbonus_063" => "2nd Ship Battle in The Caribbean: The High Seas - Port Royal Waters", + "Vbonus_064" => "3rd Ship Battle in The Caribbean: The High Seas - Forsaken Isle", + "Vbonus_065" => "Defeat Kraken in The Caribbean - Shipwreck Cove", + "Vbonus_066" => "Defeat Davy Jones in The Caribbean - Shipwreck Cove", + "Vbonus_067" => "Defeat Anti-Aqua in The Dark World - The Realm of Darkness", + "Vbonus_068" => "Defeat Lich in The Final World (San Fransokyo - The City: Central District)", + "Vbonus_069" => "10,000 Enemy Fight in The Keyblade Graveyard: The Badlands", + "Vbonus_070" => "Defeat Demon Tide in The Keyblade Graveyard: The Badlands", + "Vbonus_071" => "Defeat Xigbar & Dark Riku in The Keyblade Graveyard - The Skein of Severance: Trail of Valediction", + "Vbonus_072" => "Defeat Luxord, Marluxia, & Larxene in The Keyblade Graveyard - The Skein of Severance: Trail of Valediction", + "Vbonus_073" => "Defeat Vanitas & Terra-Xehanort in The Keyblade Graveyard - The Skein of Severance: Twist of Isolation", + "Vbonus_074" => "Defeat Saïx in The Keyblade Graveyard - The Skein of Severance: Twist of Isolation", + "Vbonus_075" => "Defeat Young Xehanort, Ansem, & Xemnas in The Keyblade Graveyard: The Skein of Severance - Tower of Endings", + "Vbonus_076" => "10,000 Enemy Fight in The Keyblade Graveyard: The Badlands", "Vbonus_082" => "Defeat Darkside in The Final World", "Vbonus_083" => "After collecting 222 Soras in The Final World", "Vbonus_084" => "After collecting 333 Soras in The Final World", - "VBonus_Minigame001" => "After obtaining the first A-rank in Verum Rex: Beat of Lead minigame in Toy Box", - "VBonus_Minigame002" => "After obtaining the first A-rank in the Festival Dance minigame in Kingdom of Corona", - "VBonus_Minigame003" => "After obtaining the first A-rank in the Frozen Slider minigame in Arendelle", + "VBonus_Minigame001" => "Obtain A-rank in Verum Rex: Beat of Lead minigame in Toy Box", + "VBonus_Minigame002" => "Obtain A-rank in the Festival Dance minigame in Kingdom of Corona", + "VBonus_Minigame003" => "Obtain A-rank in the Frozen Slider minigame in Arendelle", "VBonus_Minigame004" => "After obtaining all the treasures in the Frozen Slider minigame in Arendelle", - "VBonus_Minigame005" => "After obtaining the first A-Rank in the Flash Tracer 1 (Fred) minigame in San Fransokyo", - "VBonus_Minigame006" => "After obtaining the first A-Rank in the Flash Tracer 2 (Go Go) minigame in San Fransokyo", - "VBonus_Minigame007" => "After obtaining the first A-Rank in the Cherry Flan minigame in Olympus", - "VBonus_Minigame008" => "After obtaining the first A-Rank in the Strawberry Flan minigame in Toy Box", - "VBonus_Minigame009" => "After obtaining the first A-Rank in the Orange Flan minigame in Kingdom of Corona", - "VBonus_Minigame010" => "After obtaining the first A-Rank in the Banana Flan minigame in Monstropolis", - "VBonus_Minigame011" => "After obtaining the first A-Rank in the Grape Flan minigame in Arendelle", - "VBonus_Minigame012" => "After obtaining the first A-Rank in the Watermelon Flan minigame in The Caribbean", - "VBonus_Minigame013" => "After obtaining the first A-Rank in the Melon Flan minigame in San Fransokyo", - "VBonus_DLC_001" => "Defeat Dark Inferno χ in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_002" => "Defeat Anti-Aqua in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_003" => "Defeat Terra-Xehanort in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_004" => "Defeat Xigbar & Dark Riku in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_005" => "Defeat Luxord, Marluxia, & Larxene in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_006" => "Defeat Vanitas & Terra-Xehanort in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_007" => "After the Saix boss battle in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_008" => "Defeat Young Xehanort, Ansem, & Xemnas in The Keyblade Graveyard (Re+Mind)", - "VBonus_DLC_009" => "After the Shadow Heartless battle in Scala ad Caelum (Re+Mind)", - "VBonus_DLC_010" => "Defeat Darkside in Scala ad Caelum (Re+Mind)", - "VBonus_DLC_011" => "After collecting all of Kairi's heart fragments in Re+Mind", - "VBonus_DLC_012" => "Defeat the Replica Xehanorts as the Guardians of Light in Re+Mind", - "VBonus_DLC_013" => "Defeat the Replica Xehanorts as King Mickey in Re+Mind", - "VBonus_DLC_014" => "After connecting all the keyholes in Re+Mind", - "VBonus_DLC_015" => "Defeat Armored Xehanort in Re+Mind", + "VBonus_Minigame005" => "Obtain A-Rank in the Flash Tracer: Course A (Fred) minigame in San Fransokyo", + "VBonus_Minigame006" => "Obtain A-Rank in the Flash Tracer: Course 2 (Go Go) minigame in San Fransokyo", + "VBonus_Minigame007" => "Encounter Cherry Flan and obtain 20,000 points in Olympus", + "VBonus_Minigame008" => "Encounter Strawberry Flan and obtain 17,000 points in Toy Box", + "VBonus_Minigame009" => "Encounter Orange Flan and obtain 23,000 points in Kingdom of Corona", + "VBonus_Minigame010" => "Encounter Banana Flan and obtain 20,000 points in Monstropolis", + "VBonus_Minigame011" => "Encounter Grape Flan and obtain 20,000 points in Arendelle", + "VBonus_Minigame012" => "Encounter Watermelon Flan and obtain 28,000 points in The Caribbean", + "VBonus_Minigame013" => "Encounter Honeydew Flan and obtain 15,000 points in San Fransokyo", + "VBonus_DLC_001" => "Defeat Dark Inferno χ in The Keyblade Graveyard (Re:Mind)", + "VBonus_DLC_002" => "Defeat Anti-Aqua in The Keyblade Graveyard (Re:Mind)", + "VBonus_DLC_003" => "Defeat Terra-Xehanort in The Keyblade Graveyard (Re:Mind)", + "VBonus_DLC_004" => "Defeat Xigbar & Dark Riku in The Keyblade Graveyard (Re:Mind) - The Skein of Severance: Trail of Valediction", + "VBonus_DLC_005" => "Defeat Luxord, Marluxia, & Larxene in The Keyblade Graveyard (Re:Mind) - The Skein of Severance: Trail of Valediction", + "VBonus_DLC_006" => "Defeat Vanitas & Terra-Xehanort in The Keyblade Graveyard (Re:Mind) - The Skein of Severance: Twist of Isolation", + "VBonus_DLC_007" => "After the Saïx boss battle in The Keyblade Graveyard (Re:Mind) - The Skein of Severance: Twist of Isolation", + "VBonus_DLC_008" => "Defeat Young Xehanort, Ansem, & Xemnas in The Keyblade Graveyard (Re:Mind) - The Skein of Severance: Tower of Endings", + "VBonus_DLC_009" => "Defeat the Special Shadow in Scala ad Caelum (Re:Mind) - The Stairway to the Sky", + "VBonus_DLC_010" => "Defeat Darkside in Scala ad Caelum (Re:Mind) - Breezy Quarter", + "VBonus_DLC_011" => "After collecting all of Kairi's heart fragments in Re:Mind", + "VBonus_DLC_012" => "Defeat the Replica Xehanorts as the Guardians of Light in Re:Mind", + "VBonus_DLC_013" => "Defeat the Replica Xehanorts as King Mickey in Re:Mind", + "VBonus_DLC_014" => "After connecting all the keyholes in Re:Mind", + "VBonus_DLC_015" => "Defeat Armored Xehanort in Re:Mind", "IS_0" => "Originally Ether", "IS_1" => "Originally Fire Bangle", "IS_2" => "Originally Fira Bangle", @@ -687,26 +687,26 @@ public static string KeyIdToDescription(this string input) "IS_58" => "Originally Ultima Weapon", "IS_59" => "Originally Save the Queen+", "IS_60" => "Originally Save the King+", - "IS_61" => "Originally Recipe for Firefighter Rosette", - "IS_62" => "Originally Recipe for Umbrella Rosette", - "IS_63" => "Originally Recipe for Soldier's Earring", - "IS_64" => "Originally Recipe for Mage's Earring", - "IS_65" => "Originally Recipe for Mask Rosette", - "IS_66" => "Originally Recipe for Insulator Rosette", - "IS_67" => "Originally Recipe for Cosmic Ring", - "IS_68" => "Originally Recipe for Moon Amulet", - "IS_69" => "Originally Recipe for Fire Chain", - "IS_70" => "Originally Recipe for Blizzard Chain", - "IS_71" => "Originally Recipe for Thunder Chain", - "IS_72" => "Originally Recipe for Snowman Rosette", - "IS_73" => "Originally Recipe for Star Charm", - "IS_74" => "Originally Recipe for Draw Ring", - "IS_75" => "Originally Recipe for Aqua Chaplet", - "IS_76" => "Originally Recipe for Aero Armlet", - "IS_77" => "Originally Recipe for Fencer's Earring", - "IS_78" => "Originally Recipe for Slayer's Earring", - "IS_79" => "Originally Recipe for Dark Chain", - "IS_80" => "Originally Recipe for Petite Ribbon", + "IS_61" => "Photo Mission Synthesis: Flame Core", + "IS_62" => "Photo Mission Synthesis: Water Core", + "IS_63" => "Photo Mission Synthesis: Big Beasts & Bugs Wall Display", + "IS_64" => "Photo Mission Synthesis: Rapunzel's Tower", + "IS_65" => "Photo Mission Synthesis: Chief Puff", + "IS_66" => "Photo Mission Synthesis: CDA Agent", + "IS_67" => "Photo Mission Synthesis: Statue of Hercules", + "IS_68" => "Photo Mission Synthesis: Festival", + "IS_69" => "Photo Mission Synthesis: Fire in the Secluded Forge", + "IS_70" => "Photo Mission Synthesis: Ice Palace", + "IS_71" => "Photo Mission Synthesis: Zeus", + "IS_72" => "Photo Mission Synthesis: Olaf", + "IS_73" => "Photo Mission Synthesis: Evening Star", + "IS_74" => "Photo Mission Synthesis: Tram", + "IS_75" => "Photo Mission Synthesis: Waterfall in Port Royal", + "IS_76" => "Photo Mission Synthesis: Fish-Shaped Wind Socks in Broad Daylight", + "IS_77" => "Photo Mission Synthesis: Big Green Cactuar", + "IS_78" => "Photo Mission Synthesis: Scarecrow in the Fields", + "IS_79" => "Photo Mission Synthesis: Demon Tower", + "IS_80" => "Photo Mission Synthesis: Sora's Teammates", "IS_81" => "Originally Lucid Crystal", "IS_82" => "Originally Soothing Crystal", "IS_83" => "Originally Writhing Crystal", @@ -1127,12 +1127,12 @@ public static string ValueIdToDisplay(this string input) "ETresVictoryBonusKind::MELEM_THUNDER" => "Magic: Thunder", "ETresVictoryBonusKind::MELEM_AERO" => "Magic: Aero", "ETresAbilityKind::NONE" or "ETresVictoryBonusKind::NONE" => "", - "Fire" or "Fira" or "Firaga" => "Fire Spell", - "Water" or "Watera" or "Waterga" => "Water Spell", - "Cure" or "Cura" or "Curaga" => "Cure Spell", - "Blizzard" or "Blizzara" or "Blizzaga" => "Blizzard Spell", - "Thunder" or "Thundara" or "Thundaga" => "Thunder Spell", - "Aero" or "Aerora" or "Aeroga" => "Aero Spell", + "Fire" or "Fira" or "Firaga" => "Fire Element", + "Water" or "Watera" or "Waterga" => "Water Element", + "Cure" or "Cura" or "Curaga" => "Cure Element", + "Blizzard" or "Blizzara" or "Blizzaga" => "Blizzard Element", + "Thunder" or "Thundara" or "Thundaga" => "Thunder Element", + "Aero" or "Aerora" or "Aeroga" => "Aero Element", _ => input, }; } @@ -1334,229 +1334,229 @@ public static string GetChestLocation(this string chest, DataTableEnum dataTable { DataTableEnum.TreasureHE => chest switch { - "Large Chest 1" => "Chest 29 (Large Chest, Realm of the Gods: Corridors)", - "Large Chest 2" => "Chest 9 (Large Chest, Mount Olympus: Cliff Ascent)", - "Large Chest 3" => "Chest 31 (Large Chest, Realm of the Gods: Apex)", - "Large Chest 4" => "Chest 24 (Large Chest, Thebes: Overlook)", - "Small Chest 1" => "Chest 25 (Small Chest, Realm of the Gods: Courtyard)", - "Small Chest 2" => "Chest 26 (Small Chest, Realm of the Gods: Courtyard)", - "Small Chest 3" => "Chest 27 (Small Chest, Realm of the Gods: Courtyard)", - "Small Chest 4" => "Chest 28 (Small Chest, Realm of the Gods: Corridors)", - "Small Chest 6" => "Chest 30 (Small Chest, Realm of the Gods: Cloud Ridge)", - "Small Chest 8" => "Chest 32 (Small Chest, Realm of the Gods: Apex)", - "Small Chest 9" => "Chest 1 (Small Chest, Mount Olympus: Ravine)", - "Small Chest 10" => "Chest 2 (Small Chest, Mount Olympus: Ravine)", - "Small Chest 11" => "Chest 3 (Small Chest, Mount Olympus: Cliff Ascent)", - "Small Chest 12" => "Chest 4 (Small Chest, Mount Olympus: Cliff Ascent)", - "Small Chest 13" => "Chest 5 (Small Chest, Mount Olympus: Cliff Ascent)", - "Small Chest 14" => "Chest 6 (Small Chest, Mount Olympus: Cliff Ascent)", - "Small Chest 15" => "Chest 7 (Small Chest, Mount Olympus: Cliff Ascent)", - "Small Chest 16" => "Chest 8 (Small Chest, Mount Olympus: Cliff Ascent)", - "Small Chest 17" => "Chest 10 (Small Chest, Mount Olympus: Mountainside)", - "Small Chest 20" => "Chest 11 (Small Chest, Mount Olympus: Summit)", - "Small Chest 21" => "Chest 12 (Small Chest, Mount Olympus: Mountainside)", - "Small Chest 22" => "Chest 13 (Small Chest, Thebes: Alleyway)", - "Small Chest 23" => "Chest 14 (Small Chest, Thebes: Alleyway)", - "Small Chest 24" => "Chest 15 (Small Chest, Thebes: Agora)", - "Small Chest 25" => "Chest 16 (Small Chest, Thebes: The Big Olive)", - "Small Chest 26" => "Chest 17 (Small Chest, Thebes: The Big Olive)", - "Small Chest 27" => "Chest 18 (Small Chest, Thebes: Gardens)", - "Small Chest 28" => "Chest 19 (Small Chest, Thebes: Overlook)", - "Small Chest 29" => "Chest 20 (Small Chest, Thebes: Overlook)", - "Small Chest 30" => "Chest 21 (Small Chest, Thebes: Gardens)", - "Small Chest 31" => "Chest 22 (Small Chest, Thebes: Overlook)", - "Small Chest 33" => "Chest 23 (Small Chest, Thebes: Overlook)", + "Large Chest 1" => "Chest 29 (Large Chest, Realm of the Gods: Corridors, Near Save Point)", + "Large Chest 2" => "Chest 9 (Large Chest, Mount Olympus: Cliff Ascent, Below the Apple Tree)", + "Large Chest 3" => "Chest 31 (Large Chest, Realm of the Gods: Apex, Within Breakable Dive Box)", + "Large Chest 4" => "Chest 24 (Large Chest, Thebes: Overlook, Near Save Point)", + "Small Chest 1" => "Chest 25 (Small Chest, Realm of the Gods: Courtyard, Hallway Under Stairs)", + "Small Chest 2" => "Chest 26 (Small Chest, Realm of the Gods: Courtyard, Right of Entrance)", + "Small Chest 3" => "Chest 27 (Small Chest, Realm of the Gods: Courtyard, Left of Entrance)", + "Small Chest 4" => "Chest 28 (Small Chest, Realm of the Gods: Corridors, Near Lucky Emblem on Stairs Wall)", + "Small Chest 6" => "Chest 30 (Small Chest, Realm of the Gods: Cloud Ridge, After Rail Gauntlet)", + "Small Chest 8" => "Chest 32 (Small Chest, Realm of the Gods: Apex, 2nd Airstep Platform)", + "Small Chest 9" => "Chest 1 (Small Chest, Mount Olympus: Ravine, Inside the Foot Statue)", + "Small Chest 10" => "Chest 2 (Small Chest, Mount Olympus: Ravine, In the River)", + "Small Chest 11" => "Chest 3 (Small Chest, Mount Olympus: Cliff Ascent, Cave Alcove Northwest Corner)", + "Small Chest 12" => "Chest 4 (Small Chest, Mount Olympus: Cliff Ascent, Cave Alcove Southwest Corner)", + "Small Chest 13" => "Chest 5 (Small Chest, Mount Olympus: Cliff Ascent, Cave Alcove Northwest Corner)", + "Small Chest 14" => "Chest 6 (Small Chest, Mount Olympus: Cliff Ascent, On Lucky Emblem Mountain)", + "Small Chest 15" => "Chest 7 (Small Chest, Mount Olympus: Cliff Ascent, Near Lucky Emblem Mountain)", + "Small Chest 16" => "Chest 8 (Small Chest, Mount Olympus: Cliff Ascent, South Side of 1st Scalable Wall)", + "Small Chest 17" => "Chest 10 (Small Chest, Mount Olympus: Mountainside, Near the Top of the 1st Cliff)", + "Small Chest 20" => "Chest 11 (Small Chest, Mount Olympus: Summit, Top of the 2nd Cliff)", + "Small Chest 21" => "Chest 12 (Small Chest, Mount Olympus: Mountainside, High Platform After 1st Cliff)", + "Small Chest 22" => "Chest 13 (Small Chest, Thebes: Alleyway, Upper Grass Platform)", + "Small Chest 23" => "Chest 14 (Small Chest, Thebes: Alleyway, Inside Waterway)", + "Small Chest 24" => "Chest 15 (Small Chest, Thebes: Agora, Near Lucky Emblem on Stairs)", + "Small Chest 25" => "Chest 16 (Small Chest, Thebes: The Big Olive, Left Trinity Shield Path)", + "Small Chest 26" => "Chest 17 (Small Chest, Thebes: The Big Olive, Platform Above the Lava Pit)", + "Small Chest 27" => "Chest 18 (Small Chest, Thebes: Gardens, Break the Statue's Right Foot)", + "Small Chest 28" => "Chest 19 (Small Chest, Thebes: Overlook, Below Statue with Shield)", + "Small Chest 29" => "Chest 20 (Small Chest, Thebes: Overlook, End of Left Trinity Shield Path)", + "Small Chest 30" => "Chest 21 (Small Chest, Thebes: Gardens, Near Save Point)", + "Small Chest 31" => "Chest 22 (Small Chest, Thebes: Overlook, Northwest of Statue with Shield)", + "Small Chest 33" => "Chest 23 (Small Chest, Thebes: Overlook, Before Crossing the Roofs)", _ => "", }, DataTableEnum.TreasureTT => chest switch { - "Large Chest 1" => "Chest 1 (Large Chest, The Neighborhood: Tram Common)", - "Small Chest 1" => "Chest 2 (Small Chest, The Neighborhood: Tram Common)", - "Small Chest 2" => "Chest 3 (Small Chest, The Neighborhood: Tram Common)", - "Small Chest 3" => "Chest 4 (Small Chest, The Neighborhood: Tram Common)", - "Small Chest 4" => "Chest 5 (Small Chest, The Neighborhood: Tram Common)", - "Small Chest 5" => "Chest 6 (Small Chest, Underground Conduit)", - "Small Chest 6" => "Chest 7 (Small Chest, The Woods)", - "Small Chest 7" => "Chest 8 (Small Chest, The Woods)", - "Small Chest 8" => "Chest 9 (Small Chest, The Woods)", - "Small Chest 9" => "Chest 10 (Small Chest, The Old Mansion)", + "Large Chest 1" => "Chest 1 (Large Chest, The Neighborhood: Tram Common, Near Gummi Shop)", + "Small Chest 1" => "Chest 2 (Small Chest, The Neighborhood: Tram Common, Near Theater)", + "Small Chest 2" => "Chest 3 (Small Chest, The Neighborhood: Tram Common, Underground Conduit Entrance)", + "Small Chest 3" => "Chest 4 (Small Chest, The Neighborhood: Tram Common, Rooftop)", + "Small Chest 4" => "Chest 5 (Small Chest, The Neighborhood: Tram Common, Near Le Grand Bistrot)", + "Small Chest 5" => "Chest 6 (Small Chest, Underground Conduit, Near The Woods Entrance)", + "Small Chest 6" => "Chest 7 (Small Chest, The Woods, On Northwest Log)", + "Small Chest 7" => "Chest 8 (Small Chest, The Woods, Inside Southwest Log)", + "Small Chest 8" => "Chest 9 (Small Chest, The Woods, Under Northeast Log)", + "Small Chest 9" => "Chest 10 (Small Chest, The Old Mansion, Right of Mansion Entrance)", _ => "", }, DataTableEnum.TreasureTS => chest switch { - "Large Chest 1" => "Chest 1 (Large Chest, Andy's House)", - "Large Chest 2" => "Chest 2 (Large Chest, Andy's House)", - "Large Chest 3" => "Chest 5 (Large Chest, Galaxy Toys: Main Floor 1F)", - "Large Chest 4" => "Chest 13 (Large Chest, Galaxy Toys: Lower Vents)", - "Large Chest 5" => "Chest 24 (Large Chest, Galaxy Toys: Kid Korral)", - "Large Chest 6" => "Chest 29 (Large Chest, Galaxy Toys: Rail 3)", - "Small Chest 1" => "Chest 3 (Small Chest, Andy's House)", - "Small Chest 2" => "Chest 4 (Small Chest, Andy's House)", - "Small Chest 3" => "Chest 6 (Small Chest, Galaxy Toys: Above Entrance)", - "Small Chest 4" => "Chest 7 (Small Chest, Galaxy Toys: Rail 3)", - "Small Chest 5" => "Chest 8 (Small Chest, Galaxy Toys: Action Figures)", - "Small Chest 6" => "Chest 9 (Small Chest, Galaxy Toys: Action Figures)", - "Small Chest 7" => "Chest 10 (Small Chest, Galaxy Toys: Action Figures)", - "Small Chest 8" => "Chest 11 (Small Chest, Galaxy Toys: Lower Vents)", - "Small Chest 9" => "Chest 12 (Small Chest, Galaxy Toys: Lower Vents)", - "Small Chest 11" => "Chest 14 (Small Chest, Babies and Toddlers: Dolls)", - "Small Chest 12" => "Chest 15 (Small Chest, Babies and Toddlers: Dolls)", - "Small Chest 13" => "Chest 16 (Small Chest, Babies and Toddlers: Dolls)", - "Small Chest 14" => "Chest 17 (Small Chest, Babies and Toddlers: Dolls)", - "Small Chest 15" => "Chest 18 (Small Chest, Babies and Toddlers: Outdoors)", - "Small Chest 16" => "Chest 19 (Small Chest, Babies and Toddlers: Outdoors)", - "Small Chest 17" => "Chest 20 (Small Chest, Galaxy Toys: Video Games)", - "Small Chest 18" => "Chest 21 (Small Chest, Galaxy Toys: Kid Korral)", - "Small Chest 19" => "Chest 22 (Small Chest, Galaxy Toys: Kid Korral)", - "Small Chest 20" => "Chest 23 (Small Chest, Galaxy Toys: Kid Korral)", - "Small Chest 22" => "Chest 25 (Small Chest, Galaxy Toys: Kid Korral)", - "Small Chest 23" => "Chest 26 (Small Chest, Galaxy Toys: Main Floor 2F)", - "Small Chest 24" => "Chest 27 (Small Chest, Galaxy Toys: Main Floor 1F)", - "Small Chest 25" => "Chest 28 (Small Chest, Babies and Toddlers: Outdoors)", + "Large Chest 1" => "Chest 1 (Large Chest, Andy's House, Near Save Point)", + "Large Chest 2" => "Chest 2 (Large Chest, Andy's House, Inside the Red Tool Box)", + "Large Chest 3" => "Chest 5 (Large Chest, Galaxy Toys: Main Floor 1F, Inside Space Capsule)", + "Large Chest 4" => "Chest 13 (Large Chest, Galaxy Toys: Lower Vents, West of Save Point)", + "Large Chest 5" => "Chest 24 (Large Chest, Galaxy Toys: Kid Korral, Tunnel Playground: Intersection)", + "Large Chest 6" => "Chest 29 (Large Chest, Galaxy Toys: Main Floor: 3F, East of Green Rail)", + "Small Chest 1" => "Chest 3 (Small Chest, Andy's House, On Northeast Shelf)", + "Small Chest 2" => "Chest 4 (Small Chest, Andy's House, Under the Bed)", + "Small Chest 3" => "Chest 6 (Small Chest, Galaxy Toys: Main Floor: 2F, Above Galaxy Toys Entrance)", + "Small Chest 4" => "Chest 7 (Small Chest, Galaxy Toys: Main Floor: 3F, North of Green Rail)", + "Small Chest 5" => "Chest 8 (Small Chest, Galaxy Toys: Action Figures, Win Rumblin' Time Minigame)", + "Small Chest 6" => "Chest 9 (Small Chest, Galaxy Toys: Action Figures, Southwest of Dissidia Figures)", + "Small Chest 7" => "Chest 10 (Small Chest, Galaxy Toys: Action Figures, Near Customer Service)", + "Small Chest 8" => "Chest 11 (Small Chest, Galaxy Toys: Lower Vents, Near Lucky Emblem)", + "Small Chest 9" => "Chest 12 (Small Chest, Galaxy Toys: Lower Vents, Upper Level)", + "Small Chest 11" => "Chest 14 (Small Chest, Babies and Toddlers: Dolls, Near Upper Vents Entrance)", + "Small Chest 12" => "Chest 15 (Small Chest, Babies and Toddlers: Dolls, On Julia the Dress Queen Shelf)", + "Small Chest 13" => "Chest 16 (Small Chest, Babies and Toddlers: Dolls, On Patchwork Animals Shelf)", + "Small Chest 14" => "Chest 17 (Small Chest, Babies and Toddlers: Dolls, Inside My Little House)", + "Small Chest 15" => "Chest 18 (Small Chest, Babies and Toddlers: Outdoors, Near Kid Korral Upper Entrance)", + "Small Chest 16" => "Chest 19 (Small Chest, Babies and Toddlers: Outdoors, Behind Wood Building Blocks)", + "Small Chest 17" => "Chest 20 (Small Chest, Galaxy Toys: Video Games, Inside Checkout Counter)", + "Small Chest 18" => "Chest 21 (Small Chest, Galaxy Toys: Kid Korral, Climbing Playground: Blue Level)", + "Small Chest 19" => "Chest 22 (Small Chest, Galaxy Toys: Kid Korral, Climbing Playground: Yellow Level)", + "Small Chest 20" => "Chest 23 (Small Chest, Galaxy Toys: Kid Korral, Behind Dice Blocks East of Ball Pit)", + "Small Chest 22" => "Chest 25 (Small Chest, Galaxy Toys: Kid Korral, Inside Ball Pit Area - North)", + "Small Chest 23" => "Chest 26 (Small Chest, Galaxy Toys: Rest Area, Top of Drink Factory)", + "Small Chest 24" => "Chest 27 (Small Chest, Galaxy Toys: Main Floor 1F, Back of Delivery Service Counter)", + "Small Chest 25" => "Chest 28 (Small Chest, Babies and Toddlers: Outdoors, Inside Slide Set)", _ => "", }, DataTableEnum.TreasureRA => chest switch { - "Large Chest 1" => "Chest 7 (Large Chest, The Forest: Hills)", - "Large Chest 2" => "Chest 10 (Large Chest, The Forest: Marsh)", - "Large Chest 3" => "Chest 9 (Large Chest, The Forest: Hills)", - "Large Chest 4" => "Chest 22 (Large Chest, The Forest: Wildflower Clearing)", - "Large Chest 5" => "Chest 24 (Large Chest, The Kingdom: Thoroughfare)", - "Large Chest 6" => "Chest 14 (Large Chest, The Forest: Wetlands)", - "Small Chest 1" => "Chest 1 (Small Chest, The Forest: Tower)", - "Small Chest 2" => "Chest 2 (Small Chest, The Forest: Hills)", - "Small Chest 3" => "Chest 3 (Small Chest, The Forest: Hills)", - "Small Chest 4" => "Chest 4 (Small Chest, The Forest: Hills)", - "Small Chest 5" => "Chest 5 (Small Chest, The Forest: Hills)", - "Small Chest 6" => "Chest 6 (Small Chest, The Forest: Hills)", - "Small Chest 7" => "Chest 8 (Small Chest, The Forest: Hills)", - "Small Chest 8" => "Chest 11 (Small Chest, The Forest: Marsh)", - "Small Chest 9" => "Chest 12 (Small Chest, The Forest: Marsh)", - "Small Chest 10" => "Chest 13 (Small Chest, The Forest: Wetlands)", - "Small Chest 11" => "Chest 15 (Small Chest, The Forest: Wetlands)", - "Small Chest 12" => "Chest 16 (Small Chest, The Forest: Wetlands)", - "Small Chest 13" => "Chest 17 (Small Chest, The Forest: Wetlands)", - "Small Chest 14" => "Chest 18 (Small Chest, The Forest: Wetlands/Campsite)", - "Small Chest 15" => "Chest 19 (Small Chest, The Forest: Campsite)", - "Small Chest 16" => "Chest 20 (Small Chest, The Forest: Shore)", - "Small Chest 17" => "Chest 21 (Small Chest, The Forest: Wildflower Clearing)", - "Small Chest 18" => "Chest 23 (Small Chest, The Kingdom: Festival Dance Area)", - "Small Chest 19" => "Chest 25 (Small Chest, The Kingdom: Thoroughfare)", - "Small Chest 20" => "Chest 26 (Small Chest, The Kingdom: Wharf)", - "Small Chest 21" => "Chest 27 (Small Chest, The Kingdom: Wharf)", - "Small Chest 22" => "Chest 28 (Small Chest, The Kingdom: Wharf)", + "Large Chest 1" => "Chest 7 (Large Chest, The Forest: Hills, Starting Area Up Against Tree)", + "Large Chest 2" => "Chest 10 (Large Chest, The Forest: Marsh, West of Save Point Up Against Tree)", + "Large Chest 3" => "Chest 9 (Large Chest, The Forest: Hills, Inside Cave)", + "Large Chest 4" => "Chest 22 (Large Chest, The Forest: Wildflower Clearing, Northwest of Save Point)", + "Large Chest 5" => "Chest 24 (Large Chest, The Kingdom: Thoroughfare, Perform on Barrel Near Save Point)", + "Large Chest 6" => "Chest 14 (Large Chest, The Forest: Wetlands, Within Breakable Dive Rock)", + "Small Chest 1" => "Chest 1 (Small Chest, The Forest: Tower, West of the Tower Near Pond)", + "Small Chest 2" => "Chest 2 (Small Chest, The Forest: Hills, Upper-Left Platform Before Marsh)", + "Small Chest 3" => "Chest 3 (Small Chest, The Forest: Hills, Upper-Right Platform Before Marsh)", + "Small Chest 4" => "Chest 4 (Small Chest, The Forest: Hills, A Gift from Rabbits)", + "Small Chest 5" => "Chest 5 (Small Chest, The Forest: Hills, Surrounded by Bushes)", + "Small Chest 6" => "Chest 6 (Small Chest, The Forest: Hills, Near Save Point Behind Log)", + "Small Chest 7" => "Chest 8 (Small Chest, The Forest: Hills, Across the Pond)", + "Small Chest 8" => "Chest 11 (Small Chest, The Forest: Marsh, Platform Southeast of Lucky Emblem)", + "Small Chest 9" => "Chest 12 (Small Chest, The Forest: Marsh, Within the Southwest River)", + "Small Chest 10" => "Chest 13 (Small Chest, The Forest: Wetlands, North Platform After Chaos Carriage)", + "Small Chest 11" => "Chest 15 (Small Chest, The Forest: Wetlands, High Platform South of Dive Rock)", + "Small Chest 12" => "Chest 16 (Small Chest, The Forest: Wetlands, Platform Near Wall Inside Cave)", + "Small Chest 13" => "Chest 17 (Small Chest, The Forest: Wetlands, Southwest Corner Inside Cave)", + "Small Chest 14" => "Chest 18 (Small Chest, The Forest: Wetlands, West of Campsite Save Point)", + "Small Chest 15" => "Chest 19 (Small Chest, The Forest: Campsite, Platform Before Save Point)", + "Small Chest 16" => "Chest 20 (Small Chest, The Forest: Shore, South of Bridge)", + "Small Chest 17" => "Chest 21 (Small Chest, The Forest: Wildflower Clearing, Hill West of Save Point)", + "Small Chest 18" => "Chest 23 (Small Chest, The Kingdom: Thoroughfare, Festival Dance Area)", + "Small Chest 19" => "Chest 25 (Small Chest, The Kingdom: Thoroughfare, Next to Wall Near the Save Point)", + "Small Chest 20" => "Chest 26 (Small Chest, The Kingdom: Wharf, End of East Dock)", + "Small Chest 21" => "Chest 27 (Small Chest, The Kingdom: Wharf, Top of the Mini-Tower)", + "Small Chest 22" => "Chest 28 (Small Chest, The Kingdom: Wharf, Hidden in Boxes and Barrels)", _ => "", }, DataTableEnum.TreasureMI => chest switch { - "Large Chest 1" => "Chest 1 (Large Chest, Monsters, Inc.: Lobby & Offices)", - "Large Chest 2" => "Chest 9 (Large Chest, The Factory)", - "Large Chest 3" => "Chest 19 (Large Chest, The Power Plant: Tank Yard)", - "Large Chest 4" => "Chest 10 (Large Chest, The Factory)", - "Small Chest 1" => "Chest 2 (Small Chest, Monsters, Inc.: Lobby & Offices)", - "Small Chest 2" => "Chest 3 (Small Chest, Monsters, Inc.: Laugh Floor)", - "Small Chest 3" => "Chest 4 (Small Chest, Monsters, Inc.)", - "Small Chest 5" => "Chest 11 (Small Chest, The Factory)", - "Small Chest 6" => "Chest 12 (Small Chest, The Factory)", - "Small Chest 7" => "Chest 13 (Small Chest, Vault Door: Service Area)", - "Small Chest 8" => "Chest 14 (Small Chest, The Factory: Second Floor)", - "Small Chest 9" => "Chest 15 (Small Chest, The Power Plant: Accessway)", - "Small Chest 10" => "Chest 16 (Small Chest, The Power Plant: Accessway)", - "Small Chest 11" => "Chest 17 (Small Chest, The Power Plant: Accessway)", - "Small Chest 12" => "Chest 18 (Small Chest, The Power Plant: Tank Yard)", - "Small Chest 13" => "Chest 20 (Small Chest, The Power Plant: Vault Passage)", - "Small Chest 14" => "Chest 21 (Small Chest, The Power Plant: Vault Passage)", - "Small Chest 15" => "Chest 22 (Small Chest, The Power Plant: Accessway)", - "Small Chest 16" => "Chest 5 (Small Chest, Monsters, Inc.: Upper Level)", - "Small Chest 17" => "Chest 6 (Small Chest, Monsters, Inc.: Lower Levels)", - "Small Chest 18" => "Chest 7 (Small Chest, The Door Vault: Service Area)", - "Small Chest 19" => "Chest 8 (Small Chest, The Door Vault: Upper Level)", + "Large Chest 1" => "Chest 1 (Large Chest, Monsters, Inc.: Lobby & Offices, Before Save Point)", + "Large Chest 2" => "Chest 9 (Large Chest, The Factory: Basement, Near Save Point)", + "Large Chest 3" => "Chest 19 (Large Chest, The Power Plant: Tank Yard, Within Breakable Dive Box)", + "Large Chest 4" => "Chest 10 (Large Chest, The Factory: Ground Floor, Electrical Path from Second Floor)", + "Small Chest 1" => "Chest 2 (Small Chest, Monsters, Inc.: Lobby & Offices, Behind Canisters)", + "Small Chest 2" => "Chest 3 (Small Chest, Monsters, Inc.: Laugh Floor, Behind Counter at Entrance)", + "Small Chest 3" => "Chest 4 (Small Chest, Monsters, Inc.: Laugh Floor, Back-Left Corner)", + "Small Chest 5" => "Chest 11 (Small Chest, The Factory: Ground Floor, Behind Boxes Next to Door E6)", + "Small Chest 6" => "Chest 12 (Small Chest, The Factory: Ground Floor, Canister Platform Near Save Point)", + "Small Chest 7" => "Chest 13 (Small Chest, The Factory: Second Floor, Middle of Lasers Path)", + "Small Chest 8" => "Chest 14 (Small Chest, The Factory: Second Floor, Northwest Canister Platform)", + "Small Chest 9" => "Chest 15 (Small Chest, The Power Plant: Accessway, Near Moogle Shop)", + "Small Chest 10" => "Chest 16 (Small Chest, The Power Plant: Accessway, Forced Fight Area)", + "Small Chest 11" => "Chest 17 (Small Chest, The Power Plant: Accessway, Before Circluar Ramp)", + "Small Chest 12" => "Chest 18 (Small Chest, The Power Plant: Tank Yard, Platform Near Save Point)", + "Small Chest 13" => "Chest 20 (Small Chest, The Power Plant: Vault Passage, Under Stairs)", + "Small Chest 14" => "Chest 21 (Small Chest, The Power Plant: Vault Passage, Behind Flames)", + "Small Chest 15" => "Chest 22 (Small Chest, The Power Plant: Accessway, Rest Area Before Bridge)", + "Small Chest 16" => "Chest 5 (Small Chest, Monsters, Inc.: Upper Level, Across from Banana Flan)", + "Small Chest 17" => "Chest 6 (Small Chest, Monsters, Inc.: Lower Level, Near Many Doors)", + "Small Chest 18" => "Chest 7 (Small Chest, The Door Vault: Service Area, Right of Stairs)", + "Small Chest 19" => "Chest 8 (Small Chest, The Door Vault: Service Area, Elevator Post World Visit)", _ => "", }, DataTableEnum.TreasureFZ => chest switch { - "Large Chest 1" => "Chest 1 (Large Chest, The North Mountain: Treescape)", - "Large Chest 2" => "Chest 10 (Large Chest, The Labyrinth of Ice: Middle Tier)", - "Large Chest 3" => "Chest 8 (Large Chest, The North Mountain: Treescape)", - "Large Chest 4" => "Chest 7 (Large Chest, The North Mountain: Snowfield)", - "Large Chest 5" => "Chest 14 (Large Chest, The Labyrinth of Ice: Lower Tier)", - "Large Chest 6" => "Chest 9 (Large Chest, The North Mountain: Snowfield)", - "Small Chest 1" => "Chest 2 (Small Chest, The North Mountain: Treescape)", - "Small Chest 2" => "Chest 3 (Small Chest, The North Mountain: Treescape)", - "Small Chest 4" => "Chest 4 (Small Chest, The North Mountain: Gorge)", - "Small Chest 5" => "Chest 5 (Small Chest, The North Mountain: Gorge)", - "Small Chest 7" => "Chest 6 (Small Chest, The North Mountain: Snowfield)", - "Small Chest 11" => "Chest 11 (Small Chest, The Labyrinth of Ice: Lower Tier)", - "Small Chest 12" => "Chest 12 (Small Chest, The Labyrinth of Ice: Middle Tier)", - "Small Chest 13" => "Chest 13 (Small Chest, The Labyrinth of Ice: Lower Tier)", - "Small Chest 15" => "Chest 15 (Small Chest, The Labyrinth of Ice: Middle Tier)", - "Small Chest 16" => "Chest 16 (Small Chest, The North Mountain: Valley of Ice)", - "Small Chest 17" => "Chest 17 (Small Chest, The North Mountain: Valley of Ice)", - "Small Chest 19" => "Chest 18 (Small Chest, The North Mountain: Valley of Ice)", - "Small Chest 20" => "Chest 19 (Small Chest, The North Mountain: Valley of Ice)", - "Small Chest 22" => "Chest 20 (Small Chest, The North Mountain: Valley of Ice)", - "Small Chest 23" => "Chest 21 (Small Chest, The North Mountain: The Frozen Wall)", - "Small Chest 24" => "Chest 22 (Small Chest, The North Mountain: The Frozen Wall)", - "Small Chest 25" => "Chest 23 (Small Chest, The North Mountain: The Frozen Wall)", - "Small Chest 27" => "Chest 24 (Small Chest, The North Mountain: Foothills)", - "Small Chest 29" => "Chest 25 (Small Chest, The North Mountain: Foothills)", + "Large Chest 1" => "Chest 1 (Large Chest, The North Mountain: Treescape, Near Moogle Shop)", + "Large Chest 2" => "Chest 10 (Large Chest, The Labyrinth of Ice: Middle Tier, Secret Passage Behind Ice Wall)", + "Large Chest 3" => "Chest 8 (Large Chest, The North Mountain: Treescape, Within Breakable Dive Icicle)", + "Large Chest 4" => "Chest 7 (Large Chest, The North Mountain: Snowfield, On a Snowy Rock)", + "Large Chest 5" => "Chest 14 (Large Chest, The Labyrinth of Ice: Lower Tier, Hidden Alcove Close to Save Point)", + "Large Chest 6" => "Chest 9 (Large Chest, The North Mountain: Snowfield, Within Breakable Dive Icicle)", + "Small Chest 1" => "Chest 2 (Small Chest, The North Mountain: Treescape, Snowy Rock Behind Trees)", + "Small Chest 2" => "Chest 3 (Small Chest, The North Mountain: Treescape, Behind Snowy Bushes)", + "Small Chest 4" => "Chest 4 (Small Chest, The North Mountain: Gorge, High Platform Near Icicles)", + "Small Chest 5" => "Chest 5 (Small Chest, The North Mountain: Gorge, East Alcove with Popcats)", + "Small Chest 7" => "Chest 6 (Small Chest, The North Mountain: Snowfield, East Path After Save Point)", + "Small Chest 11" => "Chest 11 (Small Chest, The Labyrinth of Ice: Upper Tier, Left of Exit Portal)", + "Small Chest 12" => "Chest 12 (Small Chest, The Labyrinth of Ice: Middle Tier, High Platform at East Corner)", + "Small Chest 13" => "Chest 13 (Small Chest, The Labyrinth of Ice: Upper Tier, Right of Exit Portal)", + "Small Chest 15" => "Chest 15 (Small Chest, The Labyrinth of Ice: Middle Tier, End of Hidden Rail Gauntlet Route)", + "Small Chest 16" => "Chest 16 (Small Chest, The North Mountain: Valley of Ice, Upper-Right Path Near Save Point)", + "Small Chest 17" => "Chest 17 (Small Chest, The North Mountain: Valley of Ice, Across from the Ice Wall)", + "Small Chest 19" => "Chest 18 (Small Chest, The North Mountain: Valley of Ice, Past the Trees After Helping Olaf)", + "Small Chest 20" => "Chest 19 (Small Chest, The North Mountain: Valley of Ice, East Upper Platform)", + "Small Chest 22" => "Chest 20 (Small Chest, The North Mountain: Valley of Ice, Very High Southwest Platform)", + "Small Chest 23" => "Chest 21 (Small Chest, The North Mountain: Frozen Wall, South of 1st Superjump)", + "Small Chest 24" => "Chest 22 (Small Chest, The North Mountain: Frozen Wall, Hidden Northwest Alcove)", + "Small Chest 25" => "Chest 23 (Small Chest, The North Mountain: Frozen Wall, Very High Ledge East of Exit)", + "Small Chest 27" => "Chest 24 (Small Chest, The North Mountain: Foothills, High Platform Near Lucky Emblem)", + "Small Chest 29" => "Chest 25 (Small Chest, The North Mountain: Foothills, Last Southwest Corner)", _ => "", }, DataTableEnum.TreasureCA => chest switch { - "Large Chest 1" => "Chest 51 (Large Chest, Port Royal: Docks)", - "Large Chest 2" => "Chest 17 (Large Chest, Isla de los Mástiles)", - "Large Chest 3" => "Chest 18 (Large Chest, Ship's End)", - "Large Chest 4" => "Chest 19 (Large Chest, Sandbar Isle)", - "Large Chest 5" => "Chest 20 (Large Chest, The Huddled Isles)", - "Large Chest 6" => "Chest 47 (Large Chest, Port Royal: Fort)", - "Large Chest 7" => "Chest 4 (Large Chest, The Huddled Isles)", - "Large Chest 8" => "Chest 10 (Large Chest, Isla Verdemontaña)", - "Large Chest 9" => "Chest 13 (Large Chest, Confinement Island)", - "Large Chest 10" => "Chest 15 (Large Chest, The Huddled Isles)", - "Large Chest 11" => "Chest 6 (Large Chest, Isla de los Mástiles)", - "Small Chest 1" => "Chest 46 (Small Chest, Port Royal: Fort)", - "Small Chest 2" => "Chest 48 (Small Chest, Port Royal: Seaport)", - "Small Chest 3" => "Chest 49 (Small Chest, Port Royal: Seaport)", - "Small Chest 4" => "Chest 50 (Small Chest, Port Royal: Seaport)", - "Small Chest 5" => "Chest 52 (Small Chest, Port Royal: Settlement)", - "Small Chest 6" => "Chest 53 (Small Chest, Port Royal: Docks)", - "Small Chest 7" => "Chest 54 (Small Chest, Port Royal: Underwater)", - "Small Chest 8" => "Chest 55 (Small Chest, Port Royal: Settlement)", - "Small Chest 9" => "Chest 56 (Small Chest, Port Royal: Seaport)", - "Small Chest 10" => "Chest 1 (Small Chest, The Huddled Isles)", - "Small Chest 11" => "Chest 2 (Small Chest, The Huddled Isles)", - "Small Chest 12" => "Chest 3 (Small Chest, The Huddled Isles)", - "Small Chest 13" => "Chest 5 (Small Chest, Isla de los Mástiles)", - "Small Chest 14" => "Chest 7 (Small Chest, Ship's End)", - "Small Chest 15" => "Chest 8 (Small Chest, Ship's End)", - "Small Chest 16" => "Chest 9 (Small Chest, Isla Verdemontaña)", - "Small Chest 17" => "Chest 11 (Small Chest, Sandbar Isle)", + "Large Chest 1" => "Chest 51 (Large Chest, Port Royal: Docks, North Side Near Docks)", + "Large Chest 2" => "Chest 17 (Large Chest, Isla de los Mastiles, Inside Cave)", + "Large Chest 3" => "Chest 18 (Large Chest, Ship's End, On a Sunken Ship)", + "Large Chest 4" => "Chest 19 (Large Chest, Sandbar Isle, On Left Island Surrounded by Water)", + "Large Chest 5" => "Chest 20 (Large Chest, Huddled Isles, Near Save Point)", + "Large Chest 6" => "Chest 47 (Large Chest, Port Royal: Fort, In the Prison Cell)", + "Large Chest 7" => "Chest 4 (Large Chest, Huddled Isles: Undersea Cavern, 4th Dead End)", + "Large Chest 8" => "Chest 10 (Large Chest, Isla Verdemontana, Within Breakable Dive Box)", + "Large Chest 9" => "Chest 13 (Large Chest, Confinement Island, Ambush Alcove)", + "Large Chest 10" => "Chest 15 (Large Chest, Huddled Isles: Undersea Cavern, Lightning Angler's Lair)", + "Large Chest 11" => "Chest 6 (Large Chest, Isla de los Mastiles, Within Breakable Dive Box)", + "Small Chest 1" => "Chest 46 (Small Chest, Port Royal: Fort, Northeast Side of Rampart)", + "Small Chest 2" => "Chest 48 (Small Chest, Port Royal: Seaport, Behind the Waterfall)", + "Small Chest 3" => "Chest 49 (Small Chest, Port Royal: Seaport, North Dock Near Water)", + "Small Chest 4" => "Chest 50 (Small Chest, Port Royal: Seaport, Under the Bridge Near Settlement)", + "Small Chest 5" => "Chest 52 (Small Chest, Port Royal: Settlement, South Side On Roof)", + "Small Chest 6" => "Chest 53 (Small Chest, Port Royal: Docks, Southwest Corner Near Building)", + "Small Chest 7" => "Chest 54 (Small Chest, Port Royal: Underwater, In a Broken Ship)", + "Small Chest 8" => "Chest 55 (Small Chest, Port Royal: Settlement, West Side Behind Boxes)", + "Small Chest 9" => "Chest 56 (Small Chest, Port Royal: Seaport, Behind the Waterfall)", + "Small Chest 10" => "Chest 1 (Small Chest, Huddled Isles, Within a Sunken Ship)", + "Small Chest 11" => "Chest 2 (Small Chest, Huddled Isles: Undersea Cavern, 2nd Dead End)", + "Small Chest 12" => "Chest 3 (Small Chest, Huddled Isles: Undersea Cavern, 3rd Dead End)", + "Small Chest 13" => "Chest 5 (Small Chest, Isla de los Mastiles: Underwater Alcove)", + "Small Chest 14" => "Chest 7 (Small Chest, Ship's End, Within a Sunken Ship)", + "Small Chest 15" => "Chest 8 (Small Chest, Ship's End, Within a Sunken Ship)", + "Small Chest 16" => "Chest 9 (Small Chest, Isla Verdemontana, Top of 1st Cliff)", + "Small Chest 17" => "Chest 11 (Small Chest, Sandbar Isle: Underwater Alcove)", "Small Chest 18" => "Chest 12 (Small Chest, Exile Island)", "Small Chest 19" => "Chest 14 (Small Chest, The Gateway of Regret)", "Small Chest 20" => "Chest 16 (Small Chest, Horseshoe Island)", - "Small Chest 21" => "Chest 21 (Small Chest, The Huddled Isles)", - "Small Chest 22" => "Chest 22 (Small Chest, The Huddled Isles)", - "Small Chest 23" => "Chest 23 (Small Chest, Isla de los Mástiles)", - "Small Chest 24" => "Chest 24 (Small Chest, Isla de los Mástiles)", - "Small Chest 25" => "Chest 45 (Small Chest, Leviathan)", - "Small Chest 26" => "Chest 25 (Small Chest, Isla Verdemontaña)", - "Small Chest 27" => "Chest 26 (Small Chest, Sandbar Isle)", - "Small Chest 28" => "Chest 27 (Small Chest, Sandbar Isle)", - "Small Chest 29" => "Chest 28 (Small Chest, Sandbar Isle)", - "Small Chest 30" => "Chest 29 (Small Chest, Sandbar Isle)", - "Small Chest 31" => "Chest 30 (Small Chest, Sandbar Isle)", - "Small Chest 32" => "Chest 31 (Small Chest, Sandbar Isle)", - "Small Chest 33" => "Chest 32 (Small Chest, Sandbar Isle)", - "Small Chest 34" => "Chest 33 (Small Chest, Sandbar Isle)", - "Small Chest 35" => "Chest 34 (Small Chest, Sandbar Isle)", - "Small Chest 36" => "Chest 35 (Small Chest, Sandbar Isle)", - "Small Chest 37" => "Chest 36 (Small Chest, Sandbar Isle)", - "Small Chest 38" => "Chest 37 (Small Chest, Sandbar Isle)", - "Small Chest 39" => "Chest 38 (Small Chest, Sandbar Isle)", - "Small Chest 40" => "Chest 39 (Small Chest, Sandbar Isle)", - "Small Chest 41" => "Chest 40 (Small Chest, Sandbar Isle)", - "Small Chest 42" => "Chest 41 (Small Chest, Horseshoe Island)", + "Small Chest 21" => "Chest 21 (Small Chest, Huddled Isles, Within a Sunken Ship)", + "Small Chest 22" => "Chest 22 (Small Chest, Huddled Isles, Within a Sunken Ship)", + "Small Chest 23" => "Chest 23 (Small Chest, Isla de los Mastiles: Underwater Alcove)", + "Small Chest 24" => "Chest 24 (Small Chest, Isla de los Mastiles: Underwater Alcove)", + "Small Chest 25" => "Chest 45 (Small Chest, The Leviathan)", + "Small Chest 26" => "Chest 25 (Small Chest, Isla Verdemontana, Top of 2nd Cliff)", + "Small Chest 27" => "Chest 26 (Small Chest, Sandbar Isle: Underwater, North Side)", + "Small Chest 28" => "Chest 27 (Small Chest, Sandbar Isle, On Right Island Surrounded by Water)", + "Small Chest 29" => "Chest 28 (Small Chest, Sandbar Isle: Underwater, South Side Near Seaweed)", + "Small Chest 30" => "Chest 29 (Small Chest, Sandbar Isle: Underwater, South Side Near Broken Box)", + "Small Chest 31" => "Chest 30 (Small Chest, Sandbar Isle: Underwater, South Side On Rock Near Surface)", + "Small Chest 32" => "Chest 31 (Small Chest, Sandbar Isle: Underwater Alcove, Inside the Lucky Emblem)", + "Small Chest 33" => "Chest 32 (Small Chest, Sandbar Isle: Underwater Alcove, Inside the Lucky Emblem)", + "Small Chest 34" => "Chest 33 (Small Chest, Sandbar Isle: Underwater Alcove)", + "Small Chest 35" => "Chest 34 (Small Chest, Sandbar Isle: Underwater Alcove)", + "Small Chest 36" => "Chest 35 (Small Chest, Sandbar Isle: Underwater Alcove)", + "Small Chest 37" => "Chest 36 (Small Chest, Sandbar Isle: Underwater Alcove)", + "Small Chest 38" => "Chest 37 (Small Chest, Sandbar Isle: Underwater Alcove)", + "Small Chest 39" => "Chest 38 (Small Chest, Sandbar Isle: Underwater Alcove)", + "Small Chest 40" => "Chest 39 (Small Chest, Sandbar Isle: Underwater Alcove)", + "Small Chest 41" => "Chest 40 (Small Chest, Sandbar Isle: Underwater Alcove)", + "Small Chest 42" => "Chest 41 (Small Chest, Horseshoe Island, Behind Rocks)", "Small Chest 43" => "Chest 42 (Small Chest, Horseshoe Island)", "Small Chest 44" => "Chest 43 (Small Chest, Horseshoe Island)", "Small Chest 45" => "Chest 44 (Small Chest, Horseshoe Island)", @@ -1564,70 +1564,70 @@ public static string GetChestLocation(this string chest, DataTableEnum dataTable }, DataTableEnum.TreasureBX => chest switch { - "Large Chest 1" => "Chest 3 (Large Chest, The City: South District)", - "Large Chest 5" => "Chest 34 (Large Chest, The City: Central District)", - "Large Chest 6" => "Chest 35 (Large Chest, The City: South District)", - "Large Chest 7" => "Chest 36 (Large Chest, The City: Central District)", - "Small Chest 1" => "Chest 1 (Small Chest, The City: Central District)", - "Small Chest 2" => "Chest 2 (Small Chest, The City: South District)", - "Small Chest 3" => "Chest 4 (Small Chest, The City: South District)", - "Small Chest 4" => "Chest 5 (Small Chest, The City: North District)", - "Small Chest 5" => "Chest 6 (Small Chest, The City: North District)", - "Small Chest 6" => "Chest 7 (Small Chest, The City: South District)", - "Small Chest 7" => "Chest 8 (Small Chest, The City: Central District)", - "Small Chest 8" => "Chest 9 (Small Chest, The City: Central District)", - "Small Chest 9" => "Chest 10 (Small Chest, The City: North District)", - "Small Chest 10" => "Chest 11 (Small Chest, The City: South District)", - "Small Chest 11" => "Chest 12 (Small Chest, The City: South District)", - "Small Chest 12" => "Chest 13 (Small Chest, The City: North District)", - "Small Chest 13" => "Chest 14 (Small Chest, The City: North District)", - "Small Chest 14" => "Chest 15 (Small Chest, The City: North District)", - "Small Chest 15" => "Chest 16 (Small Chest, The City: Central District)", - "Small Chest 16" => "Chest 17 (Small Chest, The City: Central District)", - "Small Chest 17" => "Chest 18 (Small Chest, The City: South District)", - "Small Chest 18" => "Chest 19 (Small Chest, The City: North District)", - "Small Chest 19" => "Chest 20 (Small Chest, The City: South District)", - "Small Chest 20" => "Chest 21 (Small Chest, The City: South District)", - "Small Chest 21" => "Chest 22 (Small Chest, The City: North District)", - "Small Chest 22" => "Chest 23 (Small Chest, The City: Central District)", - "Small Chest 23" => "Chest 24 (Small Chest, The City: Central District)", - "Small Chest 24" => "Chest 25 (Small Chest, The City: Central District)", - "Small Chest 25" => "Chest 26 (Small Chest, The City: Central District)", - "Small Chest 26" => "Chest 27 (Small Chest, The City: South District)", - "Small Chest 27" => "Chest 28 (Small Chest, The City: North District)", - "Small Chest 28" => "Chest 29 (Small Chest, The City: North District)", - "Small Chest 29" => "Chest 30 (Small Chest, The City: Central District)", - "Small Chest 30" => "Chest 31 (Small Chest, The City: South District)", - "Small Chest 31" => "Chest 32 (Small Chest, The City: North District)", - "Small Chest 32" => "Chest 33 (Small Chest, The City: North District)", + "Large Chest 1" => "Chest 3 (Large Chest, The City: South District, On Sidewalk North of M Building)", + "Large Chest 5" => "Chest 34 (Large Chest, The City: Central District, On the Red Circle Platform)", + "Large Chest 6" => "Chest 35 (Large Chest, The City: South District, On Top of M Building)", + "Large Chest 7" => "Chest 36 (Large Chest, The City: Central District, Within Breakable Dive Object)", + "Small Chest 1" => "Chest 1 (Small Chest, The City: Central District, Top of East Building Under Platform)", + "Small Chest 2" => "Chest 2 (Small Chest, The City: South District, Southeast Building Roof, South Side)", + "Small Chest 3" => "Chest 4 (Small Chest, The City: South District, Underneath West Ramp to Highway)", + "Small Chest 4" => "Chest 5 (Small Chest, The City: North District, South of Monorail Behind Boxes)", + "Small Chest 5" => "Chest 6 (Small Chest, The City: North District), Northeast Building Lower Platform", + "Small Chest 6" => "Chest 7 (Small Chest, The City: South District, On Sidewalk East of M Building)", + "Small Chest 7" => "Chest 8 (Small Chest, The City: Central District, Between the Air Vents)", + "Small Chest 8" => "Chest 9 (Small Chest, The City: Central District, Upper Level of Blue Circle Building)", + "Small Chest 9" => "Chest 10 (Small Chest, The City: North District, South of Monorail East Side)", + "Small Chest 10" => "Chest 11 (Small Chest, The City: South District, On Top of Triple Billboards Building)", + "Small Chest 11" => "Chest 12 (Small Chest, The City: South District, On Top of Triple Billboards Building)", + "Small Chest 12" => "Chest 13 (Small Chest, The City: North District, Underneath Monorail West Side)", + "Small Chest 13" => "Chest 14 (Small Chest, The City: North District, On Sloped Roof North of Monorail)", + "Small Chest 14" => "Chest 15 (Small Chest, The City: North District, On Flat Roof North on Monorail)", + "Small Chest 15" => "Chest 16 (Small Chest, The City: Central District, Balcony Underneath West Ramp)", + "Small Chest 16" => "Chest 17 (Small Chest, The City: Central District, Next to Green Roofs Building)", + "Small Chest 17" => "Chest 18 (Small Chest, The City: South District, On Top of Triple Billboards Building)", + "Small Chest 18" => "Chest 19 (Small Chest, The City: North District, Northeast Building On Roof)", + "Small Chest 19" => "Chest 20 (Small Chest, The City: South District, Southeast of Save Point)", + "Small Chest 20" => "Chest 21 (Small Chest, The City: South District, On Sidewalk at M Building)", + "Small Chest 21" => "Chest 22 (Small Chest, The City: North District, Near Save Point in Parking Lot)", + "Small Chest 22" => "Chest 23 (Small Chest, The City: Central District, North of Breakable Dive Object)", + "Small Chest 23" => "Chest 24 (Small Chest, The City: Central District, Lower Level of Blue Circle Building)", + "Small Chest 24" => "Chest 25 (Small Chest, The City: Central District, On Railing Underneath Highway)", + "Small Chest 25" => "Chest 26 (Small Chest, The City: Central District, Southeast of Red Circle Platform)", + "Small Chest 26" => "Chest 27 (Small Chest, The City: South District, East of Save Point Above Highway)", + "Small Chest 27" => "Chest 28 (Small Chest, The City: North District, On Building Railing Above Monorail)", + "Small Chest 28" => "Chest 29 (Small Chest, The City: North District, Alleyway Behind Boxes)", + "Small Chest 29" => "Chest 30 (Small Chest, The City: Central District, Top of East Building Under Platform)", + "Small Chest 30" => "Chest 31 (Small Chest, The City: South District, On Building Southeast of M Building)", + "Small Chest 31" => "Chest 32 (Small Chest, The City: North District, Alleyway East of Boxes)", + "Small Chest 32" => "Chest 33 (Small Chest, The City: North District, Top of Building Above Monorail)", _ => "", }, DataTableEnum.TreasureKG => chest switch { - "Large Chest 1" => "Chest 1 (Large Chest, The Badlands)", - "Large Chest 2" => "Chest 3 (Large Chest, The Skein of Severance: Trail of Valediction)", - "Small Chest 1" => "Chest 4 (Small Chest, The Skein of Severance: Trail of Valediction)", + "Large Chest 1" => "Chest 1 (Large Chest, The Badlands, Before Save Point)", + "Large Chest 2" => "Chest 3 (Large Chest, The Skein of Severance: Trail of Valediction, Near Save Point)", + "Small Chest 1" => "Chest 4 (Small Chest, The Skein of Severance: Trail of Valediction, Path Between 1st Org. XIII Fights)", "Small Chest 2" => "Chest 5 (Small Chest, The Skein of Severance: Trail of Valediction, Switch Floor Maze)", - "Small Chest 3" => "Chest 6 (Small Chest, The Skein of Severance: Twist of Isolation)", - "Small Chest 4" => "Chest 2 (Small Chest, The Badlands)", + "Small Chest 3" => "Chest 6 (Small Chest, The Skein of Severance: Twist of Isolation, Path Between 2nd Org. XIII Fights)", + "Small Chest 4" => "Chest 2 (Small Chest, The Badlands, After Save Point)", _ => "", }, DataTableEnum.TreasureEW => chest switch { - "Large Chest 1" => "Chest 1 (Large Chest, The Final World)", + "Large Chest 1" => "Chest 1 (Large Chest, The Final World, Between Two Portals)", _ => "", }, DataTableEnum.TreasureBT => chest switch { - "Large Chest 1" => "Chest 1 (Large Chest, The Stairway to the Sky)", - "Large Chest 2" => "Chest 2 (Large Chest, Breezy Quarter)", - "Small Chest 1" => "Chest 3 (Small Chest, Breezy Quarter)", - "Small Chest 2" => "Chest 4 (Small Chest, Breezy Quarter)", - "Small Chest 3" => "Chest 5 (Small Chest, Breezy Quarter)", - "Small Chest 4" => "Chest 6 (Small Chest, Breezy Quarter)", - "Small Chest 5" => "Chest 7 (Small Chest, Breezy Quarter)", - "Small Chest 6" => "Chest 8 (Small Chest, Breezy Quarter)", - "Small Chest 7" => "Chest 9 (Small Chest, Breezy Quarter)", + "Large Chest 1" => "Chest 1 (Large Chest, The Stairway to the Sky, Near Save Point)", + "Large Chest 2" => "Chest 2 (Large Chest, Breezy Quarter, Near Moogle Shop)", + "Small Chest 1" => "Chest 3 (Small Chest, Breezy Quarter, Upper Area North of Save Point)", + "Small Chest 2" => "Chest 4 (Small Chest, Breezy Quarter, Within the Windmill Tower)", + "Small Chest 3" => "Chest 5 (Small Chest, Breezy Quarter, Near the Windmill Tower)", + "Small Chest 4" => "Chest 6 (Small Chest, Breezy Quarter, Waterway Below Battle Arena)", + "Small Chest 5" => "Chest 7 (Small Chest, Breezy Quarter, South of Fountain Near Stairs)", + "Small Chest 6" => "Chest 8 (Small Chest, Breezy Quarter, South of Daybreak Town's History)", + "Small Chest 7" => "Chest 9 (Small Chest, Breezy Quarter, Northmost Corner)", _ => "", }, _ => "", @@ -1773,7 +1773,7 @@ public static string LevelIdToLevelName(this string level) "he_05" => "Ice & Lava Titan Arena", "he_06" => "Tornado Titan Arena", - "tt_01" => "Town Square", + "tt_01" => "The Neighborhood", "ts_01" => "Andy's House", "ts_02" => "Galaxy Toys", @@ -1783,26 +1783,26 @@ public static string LevelIdToLevelName(this string level) "ra_01" => "The Forest", "ra_02" => "The Kingdom", - "mi_01" => "The Lobby", + "mi_01" => "Monsters Inc.", "mi_02" => "The Factory", - "mi_03" => "The Powerplant", + "mi_03" => "The Power Plant", "mi_04" => "The Door Vault", - "fz_01" => "North Mountain", - "fz_02" => "Ice Labyrinth", + "fz_01" => "The North Mountain", + "fz_02" => "The Labyrinth of Ice", "fz_03" => "Down the Mountain", - "fz_04" => "North Mountain", + "fz_04" => "The North Mountain", "fz_06" => "Skoll Arena", - "bx_01" => "Bridge", + "bx_01" => "The Bridge", "bx_02" => "The City", "ca_01" => "Port Royal", "ca_02" => "The High Seas", - "ca_03" => "Davy Jones Arena", + "ca_03" => "Shipwreck Cove", "ca_04" => "Davy Jones' Locker", - "dw_21" or "dw_22" => "Dark World", + "dw_21" or "dw_22" => "The Realm of Darkness", "kg_01" => "The Badlands", "kg_02" or "kg_05" => "The Skein of Severance", @@ -1842,7 +1842,7 @@ public static string LevelIdToLevelName(this string level) "rg_14" => "Luxord Arena", "rg_15" => "Larxene Arena", "rg_16" => "Marluxia Arena", - "rg_17" => "Saix Arena", + "rg_17" => "Saïx Arena", "rg_18" => "Terra-Xehanort Arena", "rg_19" => "Dark Riku Arena", "rg_20" => "Vanitas Arena", @@ -1947,7 +1947,7 @@ public static string EnemyIdToEnemyName(this string enemy) "e_ex302" => "Young Xehanort", "e_ex304" => "Xemnas", "e_ex305" => "Xigbar", - "e_ex306" => "Saix", + "e_ex306" => "Saïx", "e_ex307" => "Luxord", "e_ex308" => "Marluxia", "e_ex309" => "Larxene", @@ -1961,7 +1961,7 @@ public static string EnemyIdToEnemyName(this string enemy) "e_ex352" => "Data Ansem", "e_ex353" => "Data Xemnas", "e_ex354" => "Data Xigbar", - "e_ex355" => "Data Saix", + "e_ex355" => "Data Saïx", "e_ex356" => "Data Luxord", "e_ex357" => "Data Marluxia", "e_ex358" => "Data Larxene", @@ -2029,8 +2029,8 @@ public static string BossIdToBossName(this string boss) "BOSS_026" or "e_ex311_Pawn" => "Vanitas", "BOSS_027" or "e_ex325_Pawn" => "Terra-Xehanort", "BOSS_028" or "e_ex310_Pawn" => "Xion", - "BOSS_029" or "e_ex306_Pawn_s0" => "Saix 1", - "BOSS_030" or "e_ex306_Pawn" => "Saix 2", + "BOSS_029" or "e_ex306_Pawn_s0" => "Saïx 1", + "BOSS_030" or "e_ex306_Pawn" => "Saïx 2", "BOSS_031" or "e_ex316_Pawn" => "Ansem Seeker of Darkness", "BOSS_032" or "e_ex304_Pawn" => "Xemnas", "BOSS_033" or "e_ex302_Pawn" => "Young Xehanort", @@ -2071,9 +2071,9 @@ public static string BossIdToBossName(this string boss) "BOSS_068" or "e_ex325_Pawn_s10" => "Terra-Xehanort (KG DLC)", "BOSS_069" or "e_ex311_Pawn_s10" => "Vanitas (KG DLC)", "BOSS_070" or "e_ex310_Pawn_s10" => "Xion (KG DLC)", - "BOSS_071" or "e_ex306_Pawn_s11" => "Saix 1 (KG DLC)", - "BOSS_072" or "e_ex306_Pawn_s10" => "Saix 2 (KG DLC)", - "BOSS_073" or "e_ex304_Pawn_s11" => "Xemnas (Saix - KG DLC)", + "BOSS_071" or "e_ex306_Pawn_s11" => "Saïx 1 (KG DLC)", + "BOSS_072" or "e_ex306_Pawn_s10" => "Saïx 2 (KG DLC)", + "BOSS_073" or "e_ex304_Pawn_s11" => "Xemnas (Saïx - KG DLC)", "BOSS_074" or "e_ex316_Pawn_s10" => "Ansem Seeker of Darkness (KG DLC)", "BOSS_075" or "e_ex304_Pawn_s10" => "Xemnas (KG DLC)", "BOSS_076" or "e_ex302_Pawn_s10" => "Young Xehanort (KG DLC)", @@ -2100,7 +2100,7 @@ public static string BossIdToBossName(this string boss) "BOSS_097" or "e_ex356_Pawn" => "Data Luxord", "BOSS_098" or "e_ex358_Pawn" => "Data Larxene", "BOSS_099" or "e_ex357_Pawn" => "Data Marluxia", - "BOSS_0100" or "e_ex355_Pawn" => "Data Saix", + "BOSS_0100" or "e_ex355_Pawn" => "Data Saïx", "BOSS_0101" or "e_ex362_Pawn" => "Data Terra-Xehanort", "BOSS_0102" or "e_ex361_Pawn" => "Data Dark Riku", "BOSS_0103" or "e_ex360_Pawn" => "Data Vanitas", diff --git a/KH3Randomizer/Data/HintService.cs b/KH3Randomizer/Data/HintService.cs index 2358a3e..13a8f68 100644 --- a/KH3Randomizer/Data/HintService.cs +++ b/KH3Randomizer/Data/HintService.cs @@ -458,7 +458,7 @@ public string CleanHintName(string hintName) string newHintName = hintName; if (hintName.Contains("Magic: ")) { - newHintName = hintName.Split("Magic: ")[1] + " Spell"; + newHintName = hintName.Split("Magic: ")[1] + " Element"; } else if (hintName.Contains("Ability: ")) { @@ -489,23 +489,23 @@ public Tuple GetLocation(DataTableEnum category, string subCateg #region Olympus case "Vbonus_001": world = "Olympus"; - description = "(Cliff Ascent Heartless)"; + description = "(Mount Olympus: Cliff Ascent Heartless)"; break; case "Vbonus_002": world = "Olympus"; - description = "(Thebes Agora Flame Cores)"; + description = "(Thebes: Agora Flame Cores)"; break; case "Vbonus_005": world = "Olympus"; - description = "(Thebes Overlook Flame Cores)"; + description = "(Thebes: Overlook Flame Cores)"; break; case "Vbonus_006": world = "Olympus"; - description = "(Thebes Garden Flame Cores)"; + description = "(Thebes: Garden Flame Cores)"; break; case "Vbonus_007": world = "Olympus"; - description = "(Thebes Alleyway Heartless)"; + description = "(Thebes: Alleyway Heartless)"; break; case "Vbonus_008": world = "Olympus"; @@ -517,7 +517,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_011": world = "Olympus"; - description = "(Satyr Heartless)"; + description = "(Realm of the Gods: Courtyard Satyrs)"; break; case "Vbonus_013": world = "Olympus"; @@ -536,7 +536,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_016": world = "Twilight Town"; - description = "(The Old Mansion Nobodies & Heartless)"; + description = "(The Old Mansion Heartless & Nobodies)"; break; #endregion Twilight Town @@ -547,11 +547,11 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_018": world = "Toy Box"; - description = "(Galaxy Toys Main Floor: 1F Gigas)"; + description = "(Galaxy Toys: Main Floor: 1F Gigas)"; break; case "Vbonus_019": world = "Toy Box"; - description = "(Galaxy Toys Action Figures Supreme Smashers)"; + description = "(Galaxy Toys: Action Figures Supreme Smashers)"; break; case "Vbonus_020": world = "Toy Box"; @@ -563,7 +563,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_022": world = "Toy Box"; - description = "(Verum Rex: Beat of Lead)"; + description = "(Complete Verum Rex: Beat of Lead during the Story)"; break; case "Vbonus_023": world = "Toy Box"; @@ -574,23 +574,23 @@ public Tuple GetLocation(DataTableEnum category, string subCateg #region Kingdom of Corona case "Vbonus_024": world = "Kingdom of Corona"; - description = "(Hills Heartless 1)"; + description = "(The Forest: Hills Heartless)"; break; case "Vbonus_025": world = "Kingdom of Corona"; - description = "(Hills Heartless 2)"; + description = "(The Forest: Hills Chief Puffs & Puffballs)"; break; case "Vbonus_026": world = "Kingdom of Corona"; - description = "(Hills Reapers)"; + description = "(The Forest: Hills Reapers)"; break; case "Vbonus_027": world = "Kingdom of Corona"; - description = "(Chaos Carriage Mini-Boss)"; + description = "(Defeat Chaos Carriage)"; break; case "Vbonus_028": world = "Kingdom of Corona"; - description = "(The Kingdom Nobodies)"; + description = "(The Kingdom: Wharf Nobodies)"; break; case "Vbonus_029": world = "Kingdom of Corona"; @@ -605,35 +605,35 @@ public Tuple GetLocation(DataTableEnum category, string subCateg #region Monstropolis case "Vbonus_032": world = "Monstropolis"; - description = "(Lobby & Offices Unversed)"; + description = "(Monsters Inc: Lobby & Offices Unversed)"; break; case "Vbonus_033": world = "Monstropolis"; - description = "(Laugh Floor Unversed)"; + description = "(Monsters Inc.: Laugh Floor Unversed)"; break; case "Vbonus_034": world = "Monstropolis"; - description = "(Upper Level Heartless)"; + description = "(The Door Vault: Upper Level Heartless)"; break; case "Vbonus_035": world = "Monstropolis"; - description = "(Second Floor Unversed & Heartless)"; + description = "(The Factory: Second Floor Heartless & Unversed)"; break; case "Vbonus_036": world = "Monstropolis"; - description = "(Second Floor Unversed)"; + description = "(The Factory: Second Floor Unversed)"; break; case "Vbonus_037": world = "Monstropolis"; - description = "(Accessway Unversed & Heartless)"; + description = "(The Power Plant: Accessway Heartless & Unversed)"; break; case "Vbonus_038": world = "Monstropolis"; - description = "(Tank Yard Heartless)"; + description = "(The Power Plant: Tank Yard Heartless)"; break; case "Vbonus_039": world = "Monstropolis"; - description = "(Tank Yard Unversed)"; + description = "(The Power Plant: Tank Yard Unversed)"; break; case "Vbonus_040": world = "Monstropolis"; @@ -644,23 +644,23 @@ public Tuple GetLocation(DataTableEnum category, string subCateg #region Arendelle case "Vbonus_041": world = "Arendelle"; - description = "(Rock Troll & Winterhorns Mini-Boss)"; + description = "(Defeat Rock Troll & Winterhorns)"; break; case "Vbonus_042": world = "Arendelle"; - description = "(1st Ninja Nobodies)"; + description = "(The Labyrinth of Ice: Middle Tier Ninjas I)"; break; case "Vbonus_043": world = "Arendelle"; - description = "(2nd Ninja Nobodies)"; + description = "(The Labyrinth of Ice: Lower Tier Ninjas II)"; break; case "Vbonus_044": world = "Arendelle"; - description = "(3rd Ninja Nobodies)"; + description = "(The Labyrinth of Ice: Middle Tier Ninjas III)"; break; case "Vbonus_045": world = "Arendelle"; - description = "(4th Ninja Nobodies)"; + description = "(The Labyrinth of Ice: Middle Tier Ninjas IV)"; break; case "Vbonus_047": world = "Arendelle"; @@ -668,11 +668,11 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_048": world = "Arendelle"; - description = "(Frost Serpent Heartless)"; + description = "(Frozen Slider Frost Serpents)"; break; case "Vbonus_049": world = "Arendelle"; - description = "(Valley of Ice Heartless)"; + description = "(The North Mountain: Valley of Ice Heartless)"; break; case "Vbonus_050": world = "Arendelle"; @@ -683,15 +683,15 @@ public Tuple GetLocation(DataTableEnum category, string subCateg #region San Fransokyo case "Vbonus_051": world = "San Fransokyo"; - description = "(Metal Troll Mini-Boss)"; + description = "(Defeat Metal Troll on The Bridge)"; break; case "Vbonus_052": world = "San Fransokyo"; - description = "(Meeting Hiro in the Garage)"; + description = "(Meet Big Hero 6 in Hiro's Garage)"; break; case "Vbonus_053": world = "San Fransokyo"; - description = "(Satyr Heartless Roof)"; + description = "(The City Heartless at Hiro's indicator)"; break; case "Vbonus_054": world = "San Fransokyo"; @@ -699,7 +699,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_055": world = "San Fransokyo"; - description = "(Big Hero 6 Rescue Mission)"; + description = "(Rescue Big Hero 6 from Darkubes)"; break; case "Vbonus_056": world = "San Fransokyo"; @@ -714,11 +714,11 @@ public Tuple GetLocation(DataTableEnum category, string subCateg #region The Caribbean case "Vbonus_058": world = "The Caribbean"; - description = "(Black Pearl Davy Jones Locker)"; + description = "(Davy Jones' Locker Anchor Raiders)"; break; case "Vbonus_059": world = "The Caribbean"; - description = "(1st Ship Battle)"; + description = "(1st Ship Battle - Over the Edge)"; break; case "Vbonus_060": world = "The Caribbean"; @@ -730,15 +730,15 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "Vbonus_062": world = "The Caribbean"; - description = "(Luxord Ship Race)"; + description = "(Race Luxord to Port Royal)"; break; case "Vbonus_063": world = "The Caribbean"; - description = "(2nd Ship Battle)"; + description = "(2nd Ship Battle - Port Royal Waters)"; break; case "Vbonus_064": world = "The Caribbean"; - description = "(3rd Ship Battle)"; + description = "(3rd Ship Battle - Forsaken Isle)"; break; case "Vbonus_065": world = "The Caribbean"; @@ -812,92 +812,92 @@ public Tuple GetLocation(DataTableEnum category, string subCateg #region Mini-Games case "VBonus_Minigame001": world = "Toy Box"; - description = "(A-Rank Verum Rex: Beat of Lead)"; + description = "(Obtain A-Rank in Verum Rex: Beat of Lead)"; break; case "VBonus_Minigame002": world = "Kingdom of Corona"; - description = "(A-Rank Festival Dance)"; + description = "(Obtain A-Rank in Festival Dance)"; break; case "VBonus_Minigame003": world = "Arendelle"; - description = "(A-Rank Frozen Slider)"; + description = "(Obtain A-Rank in Frozen Slider)"; break; case "VBonus_Minigame004": world = "Arendelle"; - description = "(All Treasures Frozen Slider)"; + description = "(Collect All Treasures in Frozen Slider)"; break; case "VBonus_Minigame005": world = "San Fransokyo"; - description = "(A-Rank Flash Tracer 1 (Fred))"; + description = "(Obtain A-Rank in Flash Tracer: Course A (Fred))"; break; case "VBonus_Minigame006": world = "San Fransokyo"; - description = "(A-Rank Flash Tracer 2 (Go Go))"; + description = "(Obtain A-Rank in Flash Tracer: Course B (Go Go))"; break; #endregion Mini-Games #region Flans case "VBonus_Minigame007": world = "Olympus"; - description = "(A-Rank Cherry Flan)"; + description = "(Encounter Cherry Flan and obtain 20,000 points)"; break; case "VBonus_Minigame008": world = "Toy Box"; - description = "(A-Rank Strawberry Flan)"; + description = "(Encounter Strawberry Flan and obtain 17,000 points)"; break; case "VBonus_Minigame009": world = "Kingdom of Corona"; - description = "(A-Rank Orange Flan)"; + description = "(Encounter Orange Flan and obtain 23,000 points)"; break; case "VBonus_Minigame010": world = "Monstropolis"; - description = "(A-Rank Banana Flan)"; + description = "(Encounter Banana Flan and obtain 20,000 points)"; break; case "VBonus_Minigame011": world = "Arendelle"; - description = "(A-Rank Grape Flan)"; + description = "(Encounter Grape Flan and obtain 20,000 points)"; break; case "VBonus_Minigame012": world = "The Caribbean"; - description = "(A-Rank Watermelon Flan)"; + description = "(Encounter Watermelon Flan and obtain 28,000 points)"; break; case "VBonus_Minigame013": world = "San Fransokyo"; - description = "(A-Rank Melon Flan)"; + description = "(Encounter Honeydew Flan and obtain 15,000 points)"; break; #endregion Flans #region Re+Mind case "VBonus_DLC_001": - world = "Re+Mind (The Keyblade Graveyard)"; + world = "Re:Mind (The Keyblade Graveyard)"; description = "(Defeat Dark Inferno χ)"; break; case "VBonus_DLC_002": - world = "Re+Mind (The Keyblade Graveyard)"; + world = "Re:Mind (The Keyblade Graveyard)"; description = "(Defeat Anti-Aqua)"; break; case "VBonus_DLC_003": - world = "Re+Mind (The Keyblade Graveyard)"; + world = "Re:Mind (The Keyblade Graveyard)"; description = "(Defeat Terra-Xehanort)"; break; case "VBonus_DLC_004": - world = "Re+Mind (The Keyblade Graveyard)"; + world = "Re:Mind (The Keyblade Graveyard)"; description = "(Defeat Xigbar & Dark Riku)"; break; case "VBonus_DLC_005": - world = "Re+Mind (The Keyblade Graveyard)"; + world = "Re:Mind (The Keyblade Graveyard)"; description = "(Defeat Luxord, Marluxia, & Larxene)"; break; case "VBonus_DLC_006": - world = "Re+Mind (The Keyblade Graveyard)"; + world = "Re:Mind (The Keyblade Graveyard)"; description = "(Defeat Vanitas & Terra-Xehanort)"; break; case "VBonus_DLC_007": - world = "Re+Mind (The Keyblade Graveyard)"; + world = "Re:Mind (The Keyblade Graveyard)"; description = "(Defeat Saix)"; break; case "VBonus_DLC_008": - world = "Re+Mind (The Keyblade Graveyard)"; + world = "Re:Mind (The Keyblade Graveyard)"; description = "(Defeat Young Xehanort, Ansem, & Xemnas)"; break; @@ -932,18 +932,22 @@ public Tuple GetLocation(DataTableEnum category, string subCateg world = "Olympus"; description = "(Obtain Golden Herc Figure in Thebes: Alleyway, In Building)"; break; + case "EVENT_003": world = "Olympus"; description = "(Obtain Golden Herc Figure in Thebes: Garden, Digged-Up Pit)"; break; + case "EVENT_004": world = "Olympus"; description = "(Obtain Golden Herc Figure in Thebes: Garden, In Building)"; break; + case "EVENT_005": world = "Olympus"; description = "(Obtain Golden Herc Figure in Thebes: Overlook, On Statue's Shield)"; break; + case "EVENT_006": world = "Olympus"; description = "(Obtain Golden Herc Figure in Thebes: Agora, Near Save Point)"; @@ -956,12 +960,12 @@ public Tuple GetLocation(DataTableEnum category, string subCateg case "EVENT_008": world = "Monstropolis"; - description = "(Defeat the Unversed before the Power Plant)"; + description = "(The Factory: Second Floor Unversed)"; break; case "EVENT_009": world = "San Fransokyo"; - description = "(Rescue the Trapped Big Hero 6 Members)"; + description = "(Rescue Big Hero 6 from Darkubes)"; break; #endregion Events @@ -1025,89 +1029,89 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "EVENT_HEARTBINDER_002": world = "Toy Box"; - description = "(After Verum Rex: Beat of Lead)"; + description = "(Complete Verum Rex: Beat of Lead during the Story)"; break; case "EVENT_HEARTBINDER_003": world = "Monstropolis"; - description = "(After Tank Yard Heartless)"; + description = "(The Power Plant: Tank Yard Heartless)"; break; case "EVENT_HEARTBINDER_004": world = "San Fransokyo"; - description = "(After Flash Tracer)"; + description = "(Complete Flash Tracer during the Story)"; break; #endregion Heartbinders - #region Battle Gates + #region Battlegates case "EVENT_REPORT_001a": case "EVENT_REPORT_001b": world = "Olympus"; - description = "(Complete Battlegate 1)"; + description = "(Complete Battlegate 1 in Realm of the Gods: Courtyard)"; break; case "EVENT_REPORT_002a": case "EVENT_REPORT_002b": world = "Olympus"; - description = "(Complete Battlegate 2)"; + description = "(Complete Battlegate 2 in Realm of the Gods: Apex)"; break; case "EVENT_REPORT_003a": case "EVENT_REPORT_003b": world = "Twilight Town"; - description = "(Complete Battlegate 3)"; + description = "(Complete Battlegate 3 at The Old Mansion)"; break; case "EVENT_REPORT_004a": case "EVENT_REPORT_004b": world = "Toy Box"; - description = "(Complete Battlegate 4)"; + description = "(Complete Battlegate 4 in Galaxy Toys: Kid Korral)"; break; case "EVENT_REPORT_005a": case "EVENT_REPORT_005b": world = "Toy Box"; - description = "(Complete Battlegate 5)"; + description = "(Complete Battlegate 5 in Galaxy Toys: Main Floor: 1F)"; break; case "EVENT_REPORT_006a": case "EVENT_REPORT_006b": world = "Kingdom of Corona"; - description = "(Complete Battlegate 6)"; + description = "(Complete Battlegate 6 in The Forest: Wetlands)"; break; case "EVENT_REPORT_007a": case "EVENT_REPORT_007b": world = "Kingdom of Corona"; - description = "(Complete Battlegate 7)"; + description = "(Complete Battlegate 7 in The Forest: Hills)"; break; case "EVENT_REPORT_008a": case "EVENT_REPORT_008b": world = "Monstropolis"; - description = "(Complete Battlegate 8)"; + description = "(Complete Battlegate 8 in The Power Plant: Tank Yard)"; break; case "EVENT_REPORT_009a": case "EVENT_REPORT_009b": world = "Arendelle"; - description = "(Complete Battlegate 9)"; + description = "(Complete Battlegate 9 in The Labyrinth of Ice: Middle Tier)"; break; case "EVENT_REPORT_010a": case "EVENT_REPORT_010b": world = "The Caribbean"; - description = "(Complete Battlegate 10)"; + description = "(Complete Battlegate 10 in The High Seas: Huddled Isles)"; break; case "EVENT_REPORT_011a": case "EVENT_REPORT_011b": world = "San Fransokyo"; - description = "(Complete Battlegate 11)"; + description = "(Complete Battlegate 11 in The City: North District)"; break; case "EVENT_REPORT_012a": case "EVENT_REPORT_012b": world = "San Fransokyo"; - description = "(Complete Battlegate 12)"; + description = "(Complete Battlegate 12 in The City: Central District)"; break; case "EVENT_REPORT_013a": case "EVENT_REPORT_013b": world = "The Keyblade Graveyard"; - description = "(Complete Battlegate 13)"; + description = "(Complete Battlegate 13 in The Badlands)"; break; case "EVENT_REPORT_014": world = "The Keyblade Graveyard"; description = "(Defeat Dark Inferno)"; break; - #endregion Battle Gates + #endregion Battlegates #region Key Items case "EVENT_KEYITEM_001": @@ -1116,7 +1120,7 @@ public Tuple GetLocation(DataTableEnum category, string subCateg break; case "EVENT_KEYITEM_002": world = "San Fransokyo"; - description = "(Hiro's Garage First Visit)"; + description = "(Meet Big Hero 6 at Hiro's Garage)"; break; case "EVENT_KEYITEM_003": world = "Lucky Emblem Milestones"; From 3c5be5e77df7c3ddc92eda1c4ae3c270f8aad77f Mon Sep 17 00:00:00 2001 From: Kiernan Brown Date: Fri, 10 May 2024 19:43:02 -0400 Subject: [PATCH 06/11] Update RandomizerService.cs Replace some problematic chests if they contain abilities or vbonus rewards --- KH3Randomizer/Data/RandomizerService.cs | 28 ++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/KH3Randomizer/Data/RandomizerService.cs b/KH3Randomizer/Data/RandomizerService.cs index 6f138dd..22d4719 100644 --- a/KH3Randomizer/Data/RandomizerService.cs +++ b/KH3Randomizer/Data/RandomizerService.cs @@ -152,6 +152,19 @@ public class RandomizerService "Vbonus_069" }; + // List of chests that have had issues with properly giving Abilites or VBonus rewards + private readonly List> ProblemChests = new() + { + new Tuple("FZ_SBOX_005", DataTableEnum.TreasureFZ), + new Tuple("FZ_SBOX_011", DataTableEnum.TreasureFZ), + new Tuple("FZ_SBOX_013", DataTableEnum.TreasureFZ), + new Tuple("FZ_SBOX_015", DataTableEnum.TreasureFZ), + new Tuple("FZ_SBOX_016", DataTableEnum.TreasureFZ), + new Tuple("BX_SBOX_016", DataTableEnum.TreasureBX), + new Tuple("CA_SBOX_043", DataTableEnum.TreasureCA), + new Tuple("CA_SBOX_044", DataTableEnum.TreasureCA) + }; + private readonly Dictionary> StatBalancedValues = new() { { "Base Sora Stats", new Tuple(80, 120) }, @@ -2133,6 +2146,19 @@ public void SwapRandomOption(ref Dictionary>> randomizedOptions, Dictionary>> defaultOptions, Dictionary randomizePools, Random random, bool canUseNone) { + foreach (var pChest in this.ProblemChests) + { + var chestName = pChest.Item1.KeyIdToDisplay().GetChestLocation(pChest.Item2); + var currentValue = randomizedOptions[pChest.Item2][pChest.Item1]["Treasure"]; + + if (currentValue.Contains("ETresAbilityKind::") || currentValue.Contains("ETresVictoryBonusKind::")) + { + var pChestOption = new Option { Category = pChest.Item2, SubCategory = pChest.Item1, Name = "Treasure", Value = currentValue }; + + this.SwapRandomOption(ref randomizedOptions, randomizePools, random, "Item", pChestOption, canUseNone); + } + } + // Account for early abilities for Critical Mode foreach (var vbonus in this.VBonusCriticalAbilities) { @@ -2222,7 +2248,7 @@ public void CleanUpOptions(ref Dictionary>> randomizedOptions) From a802082fd65593a06d9c5f6e1fbff6d954dd1395 Mon Sep 17 00:00:00 2001 From: Kiernan Brown Date: Fri, 10 May 2024 20:27:31 -0400 Subject: [PATCH 07/11] Update RandomizerService.cs Added Monstropolis Chest 20 to the ProblemChests list --- KH3Randomizer/Data/RandomizerService.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/KH3Randomizer/Data/RandomizerService.cs b/KH3Randomizer/Data/RandomizerService.cs index 22d4719..ddfab1a 100644 --- a/KH3Randomizer/Data/RandomizerService.cs +++ b/KH3Randomizer/Data/RandomizerService.cs @@ -155,12 +155,20 @@ public class RandomizerService // List of chests that have had issues with properly giving Abilites or VBonus rewards private readonly List> ProblemChests = new() { - new Tuple("FZ_SBOX_005", DataTableEnum.TreasureFZ), + // Monstropolis Chest 20 + new Tuple("MI_SBOX_013", DataTableEnum.TreasureMI), + + // Arrendelle Chests 5, 11, 13, 15, & 16 + new Tuple("FZ_SBOX_005", DataTableEnum.TreasureFZ), new Tuple("FZ_SBOX_011", DataTableEnum.TreasureFZ), new Tuple("FZ_SBOX_013", DataTableEnum.TreasureFZ), new Tuple("FZ_SBOX_015", DataTableEnum.TreasureFZ), new Tuple("FZ_SBOX_016", DataTableEnum.TreasureFZ), + + // San Fransokyo Chest 17 new Tuple("BX_SBOX_016", DataTableEnum.TreasureBX), + + // Caribbean Chests 42 & 43 new Tuple("CA_SBOX_043", DataTableEnum.TreasureCA), new Tuple("CA_SBOX_044", DataTableEnum.TreasureCA) }; @@ -2146,9 +2154,9 @@ public void SwapRandomOption(ref Dictionary>> randomizedOptions, Dictionary>> defaultOptions, Dictionary randomizePools, Random random, bool canUseNone) { + // Replace Abilities or VBonus rewards from problem chests foreach (var pChest in this.ProblemChests) { - var chestName = pChest.Item1.KeyIdToDisplay().GetChestLocation(pChest.Item2); var currentValue = randomizedOptions[pChest.Item2][pChest.Item1]["Treasure"]; if (currentValue.Contains("ETresAbilityKind::") || currentValue.Contains("ETresVictoryBonusKind::")) From 52ef4f095e97ac03a4d6e4ee312458a66f4c4f68 Mon Sep 17 00:00:00 2001 From: Kiernan Brown Date: Fri, 10 May 2024 20:48:55 -0400 Subject: [PATCH 08/11] Update RandomizerService.cs Updated Caribbean Chests --- KH3Randomizer/Data/RandomizerService.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/KH3Randomizer/Data/RandomizerService.cs b/KH3Randomizer/Data/RandomizerService.cs index ddfab1a..279146e 100644 --- a/KH3Randomizer/Data/RandomizerService.cs +++ b/KH3Randomizer/Data/RandomizerService.cs @@ -168,9 +168,12 @@ public class RandomizerService // San Fransokyo Chest 17 new Tuple("BX_SBOX_016", DataTableEnum.TreasureBX), - // Caribbean Chests 42 & 43 + // Caribbean Chests 16, 41, 42, 43, & 44 + new Tuple("CA_SBOX_020", DataTableEnum.TreasureCA), + new Tuple("CA_SBOX_042", DataTableEnum.TreasureCA), new Tuple("CA_SBOX_043", DataTableEnum.TreasureCA), - new Tuple("CA_SBOX_044", DataTableEnum.TreasureCA) + new Tuple("CA_SBOX_044", DataTableEnum.TreasureCA), + new Tuple("CA_SBOX_045", DataTableEnum.TreasureCA) }; private readonly Dictionary> StatBalancedValues = new() From 18ec96bda60454fef77850f31a09339954b2ff6a Mon Sep 17 00:00:00 2001 From: Kiernan Brown Date: Sat, 11 May 2024 17:14:01 -0400 Subject: [PATCH 09/11] Update RandomizerService.cs First pass at fixing the default abilities exceptions and the replace exceptions. --- KH3Randomizer/Data/RandomizerService.cs | 32 +++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/KH3Randomizer/Data/RandomizerService.cs b/KH3Randomizer/Data/RandomizerService.cs index 279146e..d333d26 100644 --- a/KH3Randomizer/Data/RandomizerService.cs +++ b/KH3Randomizer/Data/RandomizerService.cs @@ -196,7 +196,8 @@ public class RandomizerService // It looks like there are issues when processing limiters/cleaning up // This is to stop from swaping into pools that have been cleaned - private List BlockedCategories = new() { }; + private List BlockedCategories = new List() { }; + private List BlockedKeys = new List() { }; public HintService HintService { get; set; } @@ -324,6 +325,7 @@ public Dictionary>> //} this.BlockedCategories.Clear(); + this.BlockedKeys.Clear(); return randomizedOptions; } @@ -838,6 +840,7 @@ public void ProcessExceptions(ref Dictionary(); + var superslidesSeen = new List(); foreach (var (subCategory, subCategoryOptions) in randomizedOptions[DataTableEnum.VBonus]) { @@ -895,6 +900,18 @@ public void ProcessExceptions(ref Dictionary x.Value.Any(y => !y.Key.Contains("GIVESORA") && y.Key != subCategory && !superslidesSeen.Contains(y.Key) && y.Value.Any(z => z.Key != "EquipAbility5" && z.Value == result.Value))).Key; + + if (abilityBonusCategory != DataTableEnum.None) + { + abilityBonusSubCategory = randomizedOptions[abilityBonusCategory].FirstOrDefault(y => !y.Key.Contains("GIVESORA") && y.Key != subCategory && y.Value.Any(z => z.Key != "EquipAbility5" && z.Value == result.Value)).Key; + abilityBonus = randomizedOptions[abilityBonusCategory][abilityBonusSubCategory].FirstOrDefault(z => z.Key != "EquipAbility5" && z.Value == result.Value); + + superslidesSeen.Add(subCategory); + } + } else { abilityBonusCategory = randomizedOptions.FirstOrDefault(x => x.Value.Any(y => !y.Key.Contains("GIVESORA") && y.Key != subCategory && y.Value.Any(z => z.Value == result.Value))).Key; @@ -922,6 +939,8 @@ public void ProcessExceptions(ref Dictionary Date: Sat, 11 May 2024 17:46:06 -0400 Subject: [PATCH 10/11] Important Check and Exception Adjustments Merged Sonicshadowsilver2's changes for what is considered an important check. Merged Sonicshadowsilver2's changes for names and tooltips of a few exceptions. --- KH3Randomizer/Components/Pools.razor | 10 ++++----- KH3Randomizer/Components/Review.razor | 2 +- KH3Randomizer/Data/RandomizerService.cs | 28 +++++++++++-------------- KH3Randomizer/Pages/Index.razor | 4 ++-- KH3Randomizer/Pages/SpoilerLog.razor | 4 ++-- 5 files changed, 22 insertions(+), 26 deletions(-) diff --git a/KH3Randomizer/Components/Pools.razor b/KH3Randomizer/Components/Pools.razor index d875f99..5ac124f 100644 --- a/KH3Randomizer/Components/Pools.razor +++ b/KH3Randomizer/Components/Pools.razor @@ -258,7 +258,7 @@

World & Miscellaneous Exceptions

- @foreach (var (name, value) in this.exceptions.Where(x => x.Key == "Can Be None" || x.Key == "Default Abilities" || x.Key == "Default Critical Abilities" || x.Key == "Early Critical Abilities" || x.Key == "Extra Movement" || x.Key == "Safe Magic Locations" + @foreach (var (name, value) in this.exceptions.Where(x => x.Key == "Can Be None" || x.Key == "Default Base Abilities" || x.Key == "Default Critical Abilities" || x.Key == "Default Bonus Critical Abilities" || x.Key == "Extra Movement" || x.Key == "Safe Magic Locations" || x.Key == "Replace Classic Kingdom Reward" || x.Key == "Replace Little Chef's Reward" || x.Key == "Replace Golden Herc Rewards" || x.Key == "Replace Sora Collection Rewards" || x.Key == "Replace Photo Missions")) {
@@ -405,15 +405,15 @@ private Dictionary exceptionDescriptions = new Dictionary { { "Can Be None", "Allows None to appear in all Pools. For instance, opening a chest may have nothing in it." }, - { "Default Abilities", "Keeps Sora's base abilities from being randomized, like Pole Spin, Dodge, Block, etc." }, - { "Default Critical Abilities", "Keeps Sora's base critical abilities from being randomized, like Critical Converter, Critical Counter, etc." }, - { "Early Critical Abilities", "Keeps Sora's early critical abilities earned from being randomized, like Air Slide, Superslide, etc." }, + { "Default Base Abilities", "Prevents default starting abilities from being randomized like Block, Dodge Roll, Pole Spin, etc." }, + { "Default Critical Abilities", "Prevents Critical Counter, Critical Recharge, and Critical Converter from being randomized." }, + { "Default Bonus Critical Abilities", "Prevents abilities from Bonuses when starting on Critical Mode from being randomized like Aerial Recovery, Combo Master, etc." }, { "Extra Movement", "Adds additional movement abilities that overwrite materials in the Pools, like Dodge Roll, Air Slide, etc. - This can cause empty checks." }, { "Safe Magic Locations", "Attempts to add Magic only in places where a retry will not remove it from Sora's magic pool." }, { "Replace Classic Kingdom Reward", "Replaces the reward for getting High Scores on all Classic Kingdom minigames with something marked as replaceable." }, { "Replace Little Chef's Reward", "Replaces the reward for completing all Little Chef's recipes with something marked as replaceable." }, - { "Replace Golden Herc Rewards", "Replaces the reward for finding all Golden Herc statues with something marked as replaceable." }, + { "Replace Golden Herc Rewards", "Replaces the rewards for picking up Golden Herc statues and returning all Golden Herc statues with something marked as replaceable." }, { "Replace Sora Collection Rewards", "Replaces the reward for collecting 222 and 333 Soras in the Final World with something marked as replaceable." }, { "Replace Photo Missions", "Replaces the reward for taking pictures of specific enemies, party members or locations." }, diff --git a/KH3Randomizer/Components/Review.razor b/KH3Randomizer/Components/Review.razor index 9355267..a80afc7 100644 --- a/KH3Randomizer/Components/Review.razor +++ b/KH3Randomizer/Components/Review.razor @@ -281,7 +281,7 @@ private Dictionary exceptionColors = new Dictionary { { "Can Be None", "background: #56adff;" }, - { "Default Abilities", "background: #56adff;" }, + { "Default Base Abilities", "background: #56adff;" }, }; private Dictionary hintColors = new Dictionary diff --git a/KH3Randomizer/Data/RandomizerService.cs b/KH3Randomizer/Data/RandomizerService.cs index d333d26..1989a70 100644 --- a/KH3Randomizer/Data/RandomizerService.cs +++ b/KH3Randomizer/Data/RandomizerService.cs @@ -22,10 +22,6 @@ public class RandomizerService "KEY", "REPORT", "LSI", - "ITEM_APUP", - "ITEM_MAGICUP", - "ITEM_POWERUP", - "ITEM_GUARDUP", "WEP", "ACC", "PRT", @@ -39,10 +35,7 @@ public class RandomizerService "DOUBLEFLIGHT", "LAST_LEAVE", "COMBO_LEAVE", - "MELEM", - "HP_UP", - "MP_UP", - "SLOT_UP" + "MELEM" }; private readonly List ReplaceableAbilities = new() @@ -158,7 +151,7 @@ public class RandomizerService // Monstropolis Chest 20 new Tuple("MI_SBOX_013", DataTableEnum.TreasureMI), - // Arrendelle Chests 5, 11, 13, 15, & 16 + // Arendelle Chests 5, 11, 13, 15, & 16 new Tuple("FZ_SBOX_005", DataTableEnum.TreasureFZ), new Tuple("FZ_SBOX_011", DataTableEnum.TreasureFZ), new Tuple("FZ_SBOX_013", DataTableEnum.TreasureFZ), @@ -173,7 +166,10 @@ public class RandomizerService new Tuple("CA_SBOX_042", DataTableEnum.TreasureCA), new Tuple("CA_SBOX_043", DataTableEnum.TreasureCA), new Tuple("CA_SBOX_044", DataTableEnum.TreasureCA), - new Tuple("CA_SBOX_045", DataTableEnum.TreasureCA) + new Tuple("CA_SBOX_045", DataTableEnum.TreasureCA), + + // Scala ad Caelum Chest 5 + new Tuple("BT_SBOX_003", DataTableEnum.TreasureBT) }; private readonly Dictionary> StatBalancedValues = new() @@ -194,8 +190,8 @@ public class RandomizerService { "Food Effect Stats", new Tuple(0, 6) } }; - // It looks like there are issues when processing limiters/cleaning up - // This is to stop from swaping into pools that have been cleaned + // It looks like there are issues when processing limiters/exceptions/cleaning up + // This is to stop from swapping into pools that have been cleaned private List BlockedCategories = new List() { }; private List BlockedKeys = new List() { }; @@ -304,8 +300,8 @@ public Dictionary>> // Add some clean-up after the randomization this.CleanUpOptions(ref randomizedOptions, defaultOptions, randomizePools, random, canUseNone); - // Give Default Abilities To Sora (Pole Spin, Air Slide & Doubleflight) unless Exception is already ticked - if (!exceptions["Default Abilities"]) + // Give Default Base Abilities To Sora (Pole Spin, Air Slide & Doubleflight) unless Exception is already ticked + if (!exceptions["Default Base Abilities"]) { this.GiveDefaultAbilities(ref randomizedOptions); } @@ -818,7 +814,7 @@ public Dictionary ProcessPartyMembers(string seed, Dictionary>> randomizedOptions, Dictionary randomizePools, Dictionary exceptions, Random random, bool canUseNone = true) { - if (exceptions["Default Abilities"] && randomizedOptions.ContainsKey(DataTableEnum.ChrInit)) + if (exceptions["Default Base Abilities"] && randomizedOptions.ContainsKey(DataTableEnum.ChrInit)) { foreach (var (name, value) in randomizedOptions[DataTableEnum.ChrInit]["m_PlayerSora"]) { @@ -870,7 +866,7 @@ public void ProcessExceptions(ref Dictionary(); var superslidesSeen = new List(); diff --git a/KH3Randomizer/Pages/Index.razor b/KH3Randomizer/Pages/Index.razor index cbc2a93..aa28453 100644 --- a/KH3Randomizer/Pages/Index.razor +++ b/KH3Randomizer/Pages/Index.razor @@ -103,9 +103,9 @@ private Dictionary exceptions = new Dictionary { { "Can Be None", false }, - { "Default Abilities", false }, + { "Default Base Abilities", false }, { "Default Critical Abilities", true }, - { "Early Critical Abilities", false }, + { "Default Bonus Critical Abilities", false }, { "Extra Movement", true }, { "Safe Magic Locations", true }, diff --git a/KH3Randomizer/Pages/SpoilerLog.razor b/KH3Randomizer/Pages/SpoilerLog.razor index 6c4c01d..975d34c 100644 --- a/KH3Randomizer/Pages/SpoilerLog.razor +++ b/KH3Randomizer/Pages/SpoilerLog.razor @@ -113,9 +113,9 @@ private Dictionary exceptions = new Dictionary { { "Can Be None", false }, - { "Default Abilities", false }, + { "Default Base Abilities", false }, { "Default Critical Abilities", true }, - { "Early Critical Abilities", false }, + { "Default Bonus Critical Abilities", false }, { "Extra Movement", true }, { "Safe Magic Locations", true }, From 24222ced0eefa3d35d0c4d2486367f30f5982932 Mon Sep 17 00:00:00 2001 From: Kiernan Brown Date: Sat, 15 Jun 2024 17:38:44 -0400 Subject: [PATCH 11/11] Update RandomizerService.cs Fixed some issues with the previous implementation of blocking checks when swapping. --- KH3Randomizer/Data/RandomizerService.cs | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/KH3Randomizer/Data/RandomizerService.cs b/KH3Randomizer/Data/RandomizerService.cs index 1989a70..44197e2 100644 --- a/KH3Randomizer/Data/RandomizerService.cs +++ b/KH3Randomizer/Data/RandomizerService.cs @@ -822,6 +822,11 @@ public void ProcessExceptions(ref Dictionary x.Value.Any(y => !y.Key.Contains("GIVESORA") && y.Value.Any(z => z.Value == defaultAbility))).Key; var abilitySubCategory = randomizedOptions[abilityCategory].FirstOrDefault(y => !y.Key.Contains("GIVESORA") && y.Value.Any(z => z.Value == defaultAbility)).Key; @@ -835,8 +840,8 @@ public void ProcessExceptions(ref Dictionary x.Value.Any(y => !y.Key.Contains("GIVESORA") && y.Value.Any(z => z.Value == defaultAbility))).Key; var abilitySubCategory = randomizedOptions[abilityCategory].FirstOrDefault(y => !y.Key.Contains("GIVESORA") && y.Value.Any(z => z.Value == defaultAbility)).Key; @@ -862,7 +872,6 @@ public void ProcessExceptions(ref Dictionary