From 858727fa77e2e25cbb37d734c7635c2ee28f4879 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Tue, 25 Mar 2025 17:04:27 +0000 Subject: [PATCH 01/24] initial refactor --- .../Enhancements/randomizer/3drando/fill.cpp | 6 +- .../randomizer/3drando/hint_list.cpp | 9 +- .../3drando/hint_list/hint_list_item.cpp | 1556 +++++++++++++---- .../Enhancements/randomizer/3drando/hints.cpp | 12 +- .../Enhancements/randomizer/3drando/hints.hpp | 6 +- .../randomizer/3drando/item_pool.cpp | 82 +- .../Enhancements/randomizer/3drando/shops.cpp | 6 +- .../randomizer/3drando/spoiler_log.cpp | 28 +- .../randomizer/3drando/starting_inventory.cpp | 12 +- .../Enhancements/randomizer/Plandomizer.cpp | 67 +- soh/soh/Enhancements/randomizer/context.cpp | 3 +- soh/soh/Enhancements/randomizer/dungeon.cpp | 6 +- soh/soh/Enhancements/randomizer/hint.cpp | 10 +- .../Enhancements/randomizer/hook_handlers.cpp | 4 +- soh/soh/Enhancements/randomizer/item.cpp | 22 +- soh/soh/Enhancements/randomizer/item.h | 8 +- soh/soh/Enhancements/randomizer/item_list.cpp | 595 ++++--- .../Enhancements/randomizer/item_location.cpp | 2 +- .../Enhancements/randomizer/item_location.h | 2 +- .../location_access/overworld/kakariko.cpp | 2 +- .../location_access/overworld/market.cpp | 4 +- .../Enhancements/randomizer/location_list.cpp | 68 +- soh/soh/Enhancements/randomizer/logic.cpp | 50 +- .../Enhancements/randomizer/randomizer.cpp | 62 +- .../Enhancements/randomizer/randomizerTypes.h | 102 +- .../randomizer/randomizer_check_tracker.cpp | 24 +- .../randomizer/randomizer_item_tracker.cpp | 20 +- .../Enhancements/randomizer/static_data.cpp | 8 +- soh/soh/OTRGlobals.cpp | 3 +- 29 files changed, 1795 insertions(+), 984 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/fill.cpp b/soh/soh/Enhancements/randomizer/3drando/fill.cpp index b0548f5ee..b55b0f38f 100644 --- a/soh/soh/Enhancements/randomizer/3drando/fill.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/fill.cpp @@ -68,7 +68,7 @@ static void RemoveStartingItemsFromPool() { } else if (startingItem == ItemPool[i] || (Rando::StaticData::RetrieveItem(startingItem).IsBottleItem() && Rando::StaticData::RetrieveItem(ItemPool[i]).IsBottleItem())) { if (AdditionalHeartContainers > 0 && - (startingItem == RG_PIECE_OF_HEART || startingItem == RG_TREASURE_GAME_HEART)) { + (startingItem == RG_PIECE_OF_HEART || startingItem == RG_TCG_PIECE_OF_HEART)) { ItemPool[i] = RG_HEART_CONTAINER; AdditionalHeartContainers--; } else { @@ -1056,10 +1056,10 @@ static void RandomizeDungeonItems() { } if (ctx->GetOption(RSK_GERUDO_KEYS).Is(RO_GERUDO_KEYS_ANY_DUNGEON)) { - auto gerudoKeys = FilterAndEraseFromPool(ItemPool, [](const auto i) { return i == RG_GERUDO_FORTRESS_SMALL_KEY || i == RG_GERUDO_FORTRESS_KEY_RING; }); + auto gerudoKeys = FilterAndEraseFromPool(ItemPool, [](const auto i) { return i == RG_TH_SMALL_KEY || i == RG_TH_KEY_RING; }); AddElementsToPool(anyDungeonItems, gerudoKeys); } else if (ctx->GetOption(RSK_GERUDO_KEYS).Is(RO_GERUDO_KEYS_OVERWORLD)) { - auto gerudoKeys = FilterAndEraseFromPool(ItemPool, [](const auto i) { return i == RG_GERUDO_FORTRESS_SMALL_KEY || i == RG_GERUDO_FORTRESS_KEY_RING; }); + auto gerudoKeys = FilterAndEraseFromPool(ItemPool, [](const auto i) { return i == RG_TH_SMALL_KEY || i == RG_TH_KEY_RING; }); AddElementsToPool(overworldItems, gerudoKeys); } diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp index 3081d4863..e16f22d03 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp @@ -25,7 +25,7 @@ void StaticData::HintTable_Init() { /*-------------------------- | GENERAL TEXT | ---------------------------*/ - hintTextTable[RHT_NONE] = HintText(CustomMessage("No Hint", "Kein Hinweis", "Pas d'Indice" )); + hintTextTable[RHT_NONE] = HintText(CustomMessage("No Hint", "Kein Hinweis", "Pas d'Indice" ), {}, {}, CustomMessage("No Item", "Rien", "Kein Artikel")); hintTextTable[RHT_WAY_OF_THE_HERO] = HintText(CustomMessage( "They say that #[[1]]# is on #the way of the hero#.", "Man erzählt sich, daß #[[1]]# auf #dem Weg des Helden# sei.", @@ -999,7 +999,7 @@ void StaticData::HintTable_Init() { hintTextTable[RHT_CASTLE_GROUNDS] = HintText(CustomMessage("the Castle Grounds", /*german*/ "Anlage von Schloß Hyrule", - /*french*/ "le Château d'Hyrule")); + /*french*/ "le Château d'Hyrule")); //RANDOTODO name differently to RHT_HYRULE_CASTLE // /*spanish*/ hintTextTable[RHT_HYRULE_CASTLE] = HintText(CustomMessage("Hyrule Castle", @@ -1012,11 +1012,6 @@ void StaticData::HintTable_Init() { /*french*/ "les alentours du Château de Ganon")); // /*spanish*/el exterior del Castillo de Ganon - hintTextTable[RHT_CASTLE_GROUNDS] = HintText(CustomMessage("the Castle Grounds", - /*german*/ "Anlage von Schloß Hyrule", - /*french*/ "le Château d'Hyrule")); - // /*spanish*/ - hintTextTable[RHT_KAKARIKO_VILLAGE] = HintText(CustomMessage("Kakariko Village", /*german*/ "Kakariko", /*french*/ "le Village Cocorico")); diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index c786dd8de..ce7b87326 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -16,8 +16,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un ágil puñal CustomMessage("a starter slasher", /*german*/"ein Anfängerschwert", /*french*/"une arme de débutant"), // /*spanish*/una hoja de principiantes - CustomMessage("a switchblade", /*german*/"ein Stellmesser", /*french*/"un canif")}); - // /*spanish*/una navaja + CustomMessage("a switchblade", /*german*/"ein Stellmesser", /*french*/"un canif") + // /*spanish*/una navaja + }, + CustomMessage("the Kokiri Sword", /*german*/"das Kokiri-Schwert", /*french*/"l'Épée Kokiri")); hintTextTable[RHT_MASTER_SWORD] = HintText(CustomMessage("the Master Sword", /*german*/"das Master-Schwert", /*french*/"l'Épée de Légende"), // /*spanish*/la Espada Maestra @@ -27,8 +29,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("evil's bane", /*german*/"der böse Fluch", /*french*/"le fléau du mal"), // /*spanish*/la destructora del mal - CustomMessage("a seven year limbo", /*german*/"eine siebenjährige Erwartung", /*french*/"une stase de sept ans")}); - // /*spanish*/unos siete años de espera + CustomMessage("a seven year limbo", /*german*/"eine siebenjährige Erwartung", /*french*/"une stase de sept ans") + // /*spanish*/unos siete años de espera + }, + CustomMessage("Master Sword", "Master-Schwert", "Épée de Legende")); hintTextTable[RHT_GIANTS_KNIFE] = HintText(CustomMessage("the Giant's Knife", /*german*/"das Langschwert", /*french*/"la Lame des Géants"), // /*spanish*/la daga gigante @@ -38,8 +42,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a fragile blade", /*german*/"ein fragiles Schwert", /*french*/"une lame fragile"), // /*spanish*/una frágil hoja - CustomMessage("a breakable cleaver", /*german*/"ein brüchiger Spalter", /*french*/"un espadon de verre")}); - // /*spanish*/un rompible acero + CustomMessage("a breakable cleaver", /*german*/"ein brüchiger Spalter", /*french*/"un espadon de verre") + // /*spanish*/un rompible acero + }, + CustomMessage("Giant's Knife", "Langschwert", "Lame des Géants")); hintTextTable[RHT_BIGGORON_SWORD] = HintText(CustomMessage("the Biggoron Sword", /*german*/"das Biggoron-Schwert", /*french*/"l'Épée de Biggoron"), // /*spanish*/la Espada de Biggoron @@ -49,8 +55,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the biggest blade", /*german*/"das größte Schwert", /*french*/"une lame gigantesque"), // /*spanish*/el mayor mandoble - CustomMessage("a colossal cleaver", /*german*/"ein kolossaler Spalter", /*french*/"un espadon colossal")}); - // /*spanish*/un estoque colosal + CustomMessage("a colossal cleaver", /*german*/"ein kolossaler Spalter", /*french*/"un espadon colossal") + // /*spanish*/un estoque colosal + }, + CustomMessage("Biggoron's Sword", "Biggoron-Schwert", "Épée de Biggoron")); hintTextTable[RHT_DEKU_SHIELD] = HintText(CustomMessage("a Deku Shield", /*german*/"ein Deku-Schild", /*french*/"un Bouclier Mojo"), // /*spanish*/un escudo deku @@ -60,8 +68,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a wooden ward", /*german*/"eine hölzerne Abwehr", /*french*/"un écu d'écorce"), // /*spanish*/una protección del bosque - CustomMessage("a burnable barrier", /*german*/"eine brennbare Barriere", /*french*/"une protection inflammable")}); - // /*spanish*/una barrera quemable + CustomMessage("a burnable barrier", /*german*/"eine brennbare Barriere", /*french*/"une protection inflammable") + // /*spanish*/una barrera quemable + }, + CustomMessage("Deku Shield", "Deku-Schild", "Bouclier Mojo")); hintTextTable[RHT_HYLIAN_SHIELD] = HintText(CustomMessage("a Hylian Shield", /*german*/"ein Hylia-Schild", /*french*/"un Bouclier Hylien"), // /*spanish*/un escudo hyliano @@ -71,8 +81,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a steel safeguard", /*german*/"ein eiserner Schutz", /*french*/"une carapace d'acier"), // /*spanish*/una protección de acero - CustomMessage("Like Like's metal meal", /*german*/"Raubschleims Metallmahlzeit", /*french*/"un amuse-gueule de Pudding")}); - // /*spanish*/un alimento de Like Like + CustomMessage("Like Like's metal meal", /*german*/"Raubschleims Metallmahlzeit", /*french*/"un amuse-gueule de Pudding") + // /*spanish*/un alimento de Like Like + }, + CustomMessage("Hylian Shield", "Hylia-Schild", "Bouclier Hylien")); hintTextTable[RHT_MIRROR_SHIELD] = HintText(CustomMessage("the Mirror Shield", /*german*/"das Spiegelschild", /*french*/"le Bouclier Miroir"), // /*spanish*/el escudo espejo @@ -84,8 +96,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una muralla reflectora CustomMessage("Medusa's weakness", /*german*/"Medusas Schwäche", /*french*/"la faiblesse de Méduse"), // /*spanish*/la debilidad de Medusa - CustomMessage("a silvered surface", /*german*/"eine silberne Oberfläche", /*french*/"une surface argentée")}); - // /*spanish*/una superficie plateada + CustomMessage("a silvered surface", /*german*/"eine silberne Oberfläche", /*french*/"une surface argentée") + // /*spanish*/una superficie plateada + }, + CustomMessage("Mirror Shield", "Spiegelschild", "Bouclier Miroir")); hintTextTable[RHT_GORON_TUNIC] = HintText(CustomMessage("a Goron Tunic", /*german*/"eine Goronen-Tunika", /*french*/"une Tunique Goron"), // /*spanish*/un sayo goron @@ -97,8 +111,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una vestimenta rubí CustomMessage("fireproof fabric", /*german*/"feuerfestes Gewebe", /*french*/"un trésor anti-flamme"), // /*spanish*/una ignífuga prenda - CustomMessage("cooking clothes", /*german*/"Kochschürze", /*french*/"une tenue de cuisine")}); - // /*spanish*/unos abrasantes ropajes + CustomMessage("cooking clothes", /*german*/"Kochschürze", /*french*/"une tenue de cuisine") + // /*spanish*/unos abrasantes ropajes + }, + CustomMessage("Goron Tunic", "Goronen-Tunika", "Tunique Goron")); hintTextTable[RHT_ZORA_TUNIC] = HintText(CustomMessage("a Zora Tunic", /*german*/"eine Zora-Tunika", /*french*/"une Tunique Zora"), // /*spanish*/un sayo zora @@ -112,8 +128,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una vestidura zafiro CustomMessage("scuba gear", /*german*/"eine Taucherausrüstung", /*french*/"un habit de plongée"), // /*spanish*/un traje impermeable - CustomMessage("a swimsuit", /*german*/"ein Badeanzug", /*french*/"un costume de baignade")}); - // /*spanish*/unos ropajes sumergibles + CustomMessage("a swimsuit", /*german*/"ein Badeanzug", /*french*/"un costume de baignade") + // /*spanish*/unos ropajes sumergibles + }, + CustomMessage("Zora Tunic", "Zora-Tunika", "Tunique Zora")); hintTextTable[RHT_IRON_BOOTS] = HintText(CustomMessage("the Iron Boots", /*german*/"die Eisenstiefel", /*french*/"une paire de Bottes de plomb"), // /*spanish*/las botas de hierro @@ -127,8 +145,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("sink shoes", /*german*/"Sinkschuhe", /*french*/"un boulet de fer"), // /*spanish*/un calzado de las profundidades - CustomMessage("clank cleats", /*german*/"klirrende Knacken", /*french*/"une paire de talons bruyants")}); - // /*spanish*/unas suelas férreas + CustomMessage("clank cleats", /*german*/"klirrende Knacken", /*french*/"une paire de talons bruyants") + // /*spanish*/unas suelas férreas + }, + CustomMessage("Iron Boots", "Eisenstiefel", "Bottes de plomb")); hintTextTable[RHT_HOVER_BOOTS] = HintText(CustomMessage("the Hover Boots", /*german*/"die Gleitstiefel", /*french*/"une paire de Bottes des airs"), // /*spanish*/las botas voladoras @@ -140,8 +160,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/unas suelas resvaladizas CustomMessage("sacred slippers", /*german*/"heilige Pantoffeln", /*french*/"une paire de pantoufles sacrées"), // /*spanish*/unos escurridizos botines - CustomMessage("spacewalkers", /*german*/"Weltraumstiefel", /*french*/"une paire de bottes spatiales")}); - // /*spanish*/un calzado antigravitatorio + CustomMessage("spacewalkers", /*german*/"Weltraumstiefel", /*french*/"une paire de bottes spatiales") + // /*spanish*/un calzado antigravitatorio + }, + CustomMessage("Hover Boots", "Gleitstiefel", "Bottes de airs")); hintTextTable[RHT_ZELDAS_LETTER] = HintText(CustomMessage("Zelda's Letter", /*german*/"Zeldas Brief", /*french*/"la Lettre de Zelda"), // /*spanish*/la carta de Zelda @@ -150,8 +172,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un autógrafo CustomMessage("royal stationery", /*german*/"royales Briefpapier", /*french*/"du papier royal"), // /*spanish*/un escrito real - CustomMessage("royal snail mail", /*german*/"ein royaler Umschlag", /*french*/"une enveloppe royale")}); - // /*spanish*/correo de la realeza + CustomMessage("royal snail mail", /*german*/"ein royaler Umschlag", /*french*/"une enveloppe royale") + // /*spanish*/correo de la realeza + }, + CustomMessage("Zelda's Letter", "Zeldas Brief", "Lettre de Zelda")); hintTextTable[RHT_WEIRD_EGG] = HintText(CustomMessage("the Weird Egg", /*german*/"ein seltsames Ei", /*french*/"l'Oeuf Curieux"), // /*spanish*/el huevo extraño @@ -159,8 +183,10 @@ void StaticData::HintTable_Init_Item() { CustomMessage("an egg", /*german*/"ein Ei", /*french*/"un oeuf") // /*spanish*/un huevo }, { - CustomMessage("a chicken dilemma", /*german*/"ein Hühnerdilemma", /*french*/"un drôle d'ovale")}); - // /*spanish*/el dilema de la gallina + CustomMessage("a chicken dilemma", /*german*/"ein Hühnerdilemma", /*french*/"un drôle d'ovale") + // /*spanish*/el dilema de la gallina + }, + CustomMessage("Weird Egg", "Seltsames Ei", "Oeuf Curieux")); hintTextTable[RHT_BOOMERANG] = HintText(CustomMessage("the Boomerang", /*german*/"ein Bumerang", /*french*/"le Boomerang"), // /*spanish*/el bumerán @@ -174,8 +200,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un plátano CustomMessage("a stun stick", /*german*/"ein paralysierender Stab", /*french*/"un bâton étourdissant"), // /*spanish*/un palo aturdidor - CustomMessage("a yellow angle", /*german*/"ein gelber Winkel", /*french*/"un angle jaune")}); - // /*spanish*/un ángulo amarillo + CustomMessage("a yellow angle", /*german*/"ein gelber Winkel", /*french*/"un angle jaune") + // /*spanish*/un ángulo amarillo + }, + CustomMessage("Boomerang", "Bumerang", "Boomerang")); hintTextTable[RHT_LENS_OF_TRUTH] = HintText(CustomMessage("the Lens of Truth", /*german*/"das Auge der Wahrheit", /*french*/"le Monocle de Vérité"), // /*spanish*/la Lupa de la Verdad @@ -189,8 +217,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/el rastreador paranormal CustomMessage("true sight", /*german*/"wahre Sicht", /*french*/"le troisième œil"), // /*spanish*/el ojo que todo ve - CustomMessage("a detective's tool", /*german*/"ein Detektivwerkzeug", /*french*/"un trésor Sheikah")}); - // /*spanish*/la revelación verdadera + CustomMessage("a detective's tool", /*german*/"ein Detektivwerkzeug", /*french*/"un trésor Sheikah") + // /*spanish*/la revelación verdadera + }, + CustomMessage("Lens of Truth", "Auge der Wahrheit", "Monocle de Vérité")); hintTextTable[RHT_MEGATON_HAMMER] = HintText(CustomMessage("the Megaton Hammer", /*german*/"der Stahlhammer", /*french*/"la Masse des Titans"), // /*spanish*/el martillo Megatón @@ -202,8 +232,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un destructor de dragones CustomMessage("the metal mallet", /*german*/"ein stählerner Schlägel", /*french*/"un outil de construction"), // /*spanish*/un mazo de metal - CustomMessage("the heavy hitter", /*german*/"ein schwerer Schläger", /*french*/"un poids lourd")}); - // /*spanish*/un machacador + CustomMessage("the heavy hitter", /*german*/"ein schwerer Schläger", /*french*/"un poids lourd") + // /*spanish*/un machacador + }, + CustomMessage("Megaton Hammer", "Stahlhammer", "Masse des Titans")); hintTextTable[RHT_STONE_OF_AGONY] = HintText(CustomMessage("the Stone of Agony", /*german*/"der Stein des Wissens", /*french*/"la Pierre de Souffrance"), // /*spanish*/la Piedra de la Agonía @@ -215,8 +247,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the shake stone", /*german*/"der Schüttelstein", /*french*/"le fragment vibrant"), // /*spanish*/el fragmento tintineante - CustomMessage("a gray alarm", /*german*/"der graue Alarm", /*french*/"une alerte bleue")}); - // /*spanish*/una azul alarma + CustomMessage("a gray alarm", /*german*/"der graue Alarm", /*french*/"une alerte bleue") + // /*spanish*/una azul alarma + }, + CustomMessage("Stone of Agony", "Stein des Wissens", "Pierre de Souffrance")); hintTextTable[RHT_DINS_FIRE] = HintText(CustomMessage("Din's Fire", /*german*/"Dins Feuerinferno", /*french*/"le Feu de Din"), // /*spanish*/el Fuego de Din @@ -228,8 +262,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un incendio CustomMessage("a heat wave", /*german*/"eine Hitzewelle", /*french*/"une vague de chaleur"), // /*spanish*/una onda de calor - CustomMessage("a red ball", /*german*/"ein roter Ball", /*french*/"une explosion de flammes")}); - // /*spanish*/una roja esfera + CustomMessage("a red ball", /*german*/"ein roter Ball", /*french*/"une explosion de flammes") + // /*spanish*/una roja esfera + }, + CustomMessage("Din's Fire", "Dins Feuerinferno", "Feu de Din")); hintTextTable[RHT_FARORES_WIND] = HintText(CustomMessage("Farore's Wind", /*german*/"Farores Donnersturm", /*french*/"le Vent de Farore"), // /*spanish*/el Viento de Farore @@ -241,8 +277,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un teletransportador CustomMessage("a relocation rune", /*german*/"eine Umzugsrune", /*french*/"une rune de relocation"), // /*spanish*/una runa de transporte - CustomMessage("a green ball", /*german*/"ein grüner Ball", /*french*/"une boule verte")}); - // /*spanish*/una verde esfera + CustomMessage("a green ball", /*german*/"ein grüner Ball", /*french*/"une boule verte") + // /*spanish*/una verde esfera + }, + CustomMessage("Farore's Wind", "Farores Donnersturm", "Vent de Farore")); hintTextTable[RHT_NAYRUS_LOVE] = HintText(CustomMessage("Nayru's Love", /*german*/"Nayrus Umarmung", /*french*/"l'Amour de Nayru"), // /*spanish*/el Amor de Nayru @@ -254,8 +292,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una seguridad temporal CustomMessage("an impregnable aura", /*german*/"eine undurchdringliche Aura", /*french*/"un aura impénétrable"), // /*spanish*/un aura impenetrable - CustomMessage("a blue barrier", /*german*/"eine blaue Barriere", /*french*/"une toison bleu")}); - // /*spanish*/una barrera azul + CustomMessage("a blue barrier", /*german*/"eine blaue Barriere", /*french*/"une toison bleu") + // /*spanish*/una barrera azul + }, + CustomMessage("Nayru's Love", "Nayrus Umarmung", "Amour de Nayru")); hintTextTable[RHT_FIRE_ARROWS] = HintText(CustomMessage("the Fire Arrows", /*german*/"die Feuerpfeile", /*french*/"les Flèches de Feu"), // /*spanish*/la flecha de fuego @@ -267,8 +307,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/el ardiente aguijón CustomMessage("the burning bolts", /*german*/"die Brennstifte", /*french*/"un obus enflammé"), // /*spanish*/las puntas ígneas - CustomMessage("a magma missile", /*german*/"eine vulkanische Rakete", /*french*/"un missile volcanique")}); - // /*spanish*/el misil abrasador + CustomMessage("a magma missile", /*german*/"eine vulkanische Rakete", /*french*/"un missile volcanique") + // /*spanish*/el misil abrasador + }, + CustomMessage("Fire Arrow", "Feuerpfeil", "Flèche de Feu")); hintTextTable[RHT_ICE_ARROWS] = HintText(CustomMessage("the Ice Arrows", /*german*/"die Eispfeile", /*french*/"les Flèches de Glace"), // /*spanish*/la flecha de hielo @@ -282,8 +324,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/el misil congelador CustomMessage("the frostbite bolts", /*german*/"die Froststifte", /*french*/"un froid mordant"), // /*spanish*/las puntas gélidas - CustomMessage("an iceberg maker", /*german*/"ein Eisbergmacher", /*french*/"une aiguille glaciale")}); - // /*spanish*/el control de escarcha + CustomMessage("an iceberg maker", /*german*/"ein Eisbergmacher", /*french*/"une aiguille glaciale") + // /*spanish*/el control de escarcha + }, + CustomMessage("Ice Arrow", "Eispfeil", "Flèche de Glace")); hintTextTable[RHT_LIGHT_ARROWS] = HintText(CustomMessage("the Light Arrows", /*german*/"die Lichtpfeile", /*french*/"les Flèches de Lumière"), // /*spanish*/la flecha de luz @@ -297,8 +341,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/el disparo luminoso CustomMessage("Ganondorf's bane", /*german*/"Ganondorfs Verderben", /*french*/"le fléau de Ganondorf"), // /*spanish*/la perdición de Ganondorf - CustomMessage("the lighting bolts", /*german*/"die Lichtstifte", /*french*/"l'éclair sacré")}); - // /*spanish*/las puntas resplandecientes + CustomMessage("the lighting bolts", /*german*/"die Lichtstifte", /*french*/"l'éclair sacré") + // /*spanish*/las puntas resplandecientes + }, + CustomMessage("Light Arrow", "Lichtpfeil", "Flèche de Lumière")); hintTextTable[RHT_GERUDO_MEMBERSHIP_CARD] = HintText(CustomMessage("the Gerudo Membership Card", /*german*/"der Gerudo-Pass", /*french*/"la Carte Gerudo"), // /*spanish*/el pase de socio gerudo @@ -308,8 +354,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a girl club membership", /*german*/"eine Mitgliedskarte", /*french*/"une carte de membre"), // /*spanish*/una fémina membresía - CustomMessage("a desert tribe's pass", /*german*/"ein Pass eines Wüstenstammes", /*french*/"un laissez-passer")}); - // /*spanish*/el vale del desierto + CustomMessage("a desert tribe's pass", /*german*/"ein Pass eines Wüstenstammes", /*french*/"un laissez-passer") + // /*spanish*/el vale del desierto + }, + CustomMessage("Gerudo Membership Card", "Gerudo-Pass", "Carte Gerudo")); hintTextTable[RHT_MAGIC_BEAN] = HintText(CustomMessage("a Magic Bean", /*german*/"eine Wundererbse", /*french*/"un Haricot Magique"), // /*spanish*/una judía mágica @@ -317,8 +365,10 @@ void StaticData::HintTable_Init_Item() { CustomMessage("something sometimes buried", /*german*/"etwas, das manchmal begraben ist", /*french*/"une chose parfois enterrée") // /*spanish*/algo a veces enterrado }, { - CustomMessage("a wizardly legume", /*german*/"eine zauberhafte Hülse", /*french*/"un légume ensorcelé")}); - // /*spanish*/una legumbre hechizada + CustomMessage("a wizardly legume", /*german*/"eine zauberhafte Hülse", /*french*/"un légume ensorcelé") + // /*spanish*/una legumbre hechizada + }, + CustomMessage("Magic Bean", "Wundererbse", "Haricots Magiques")); hintTextTable[RHT_MAGIC_BEAN_PACK] = HintText(CustomMessage("Magic Beans", /*german*/"Wundererbsen", /*french*/"un Paquet de Haricots Magiques"), // /*spanish*/unas judías mágicas @@ -326,8 +376,10 @@ void StaticData::HintTable_Init_Item() { CustomMessage("something sometimes buried", /*german*/"etwas, das manchmal begraben ist", /*french*/"une chose parfois enterrée") // /*spanish*/algo a veces enterrado }, { - CustomMessage("wizardly legumes", /*german*/"zauberhafte Hülsen", /*french*/"un paquet de légumes ensorcelés")}); - // /*spanish*/unas legumbres hechizadas + CustomMessage("wizardly legumes", /*german*/"zauberhafte Hülsen", /*french*/"un paquet de légumes ensorcelés") + // /*spanish*/unas legumbres hechizadas + }, + CustomMessage("Magic Bean Pack", "Wundererbsen-Packung", "Paquet de Haricots Magiques")); hintTextTable[RHT_DOUBLE_DEFENSE] = HintText(CustomMessage("Double Defense", /*german*/"Doppelte Verteidigung", /*french*/"la Double Défence"), // /*spanish*/la doble defensa @@ -341,8 +393,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un contorno blanco CustomMessage("damage decrease", /*german*/"Schadensverringerung", /*french*/"une protection supplémentaire"), // /*spanish*/una reducción de daño - CustomMessage("strengthened love", /*german*/"gestärkte Liebe", /*french*/"un amour coriace")}); - // /*spanish*/un amor fortalecido + CustomMessage("strengthened love", /*german*/"gestärkte Liebe", /*french*/"un amour coriace") + // /*spanish*/un amor fortalecido + }, + CustomMessage("Double Defense", "Doppelte Verteidigung", "Double Défence")); hintTextTable[RHT_GOLD_SKULLTULA_TOKEN] = HintText(CustomMessage("a Gold Skulltula Token", /*german*/"ein goldenes Skulltula-Symbol", /*french*/"un Symbole de Skulltula d'or"), // /*spanish*/un símbolo de skulltula dorada @@ -358,8 +412,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una figura arácnida CustomMessage("spider remains", /*german*/"Spinnenüberreste", /*french*/"une dépouille dorée"), // /*spanish*/unos restos dorados - CustomMessage("one percent of a curse", /*german*/"ein Prozent eines Fluchs", /*french*/"un centième de malédiction")}); - // /*spanish*/una centésima de una maldición + CustomMessage("one percent of a curse", /*german*/"ein Prozent eines Fluchs", /*french*/"un centième de malédiction") + // /*spanish*/una centésima de una maldición + }, + CustomMessage("Gold Skulltula Token", "Goldenes Skulltula-Symbol", "Symbole de Skulltula d'Or")); hintTextTable[RHT_POCKET_EGG] = HintText(CustomMessage("the Pocket Egg", /*german*/"das Ei", /*french*/"l'Oeuf de Poche"), // /*spanish*/el huevo de bolsillo @@ -373,8 +429,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/cuco contenido CustomMessage("a Cucco, eventually", /*german*/"schlussendlich ein Huhn", /*french*/"un poussin éventuel"), // /*spanish*/un futuro cuco - CustomMessage("a fowl youth", /*german*/"ein junges Geflügel", /*french*/"une omelette crue")}); - // /*spanish*/una dulce juventud + CustomMessage("a fowl youth", /*german*/"ein junges Geflügel", /*french*/"une omelette crue") + // /*spanish*/una dulce juventud + }, + CustomMessage("Pocket Egg", "Ei", "Oeuf de poche")); hintTextTable[RHT_POCKET_CUCCO] = HintText(CustomMessage("the Pocket Cucco", /*german*/"Kiki", /*french*/"la Cocotte de Poche"), // /*spanish*/el cuco de bolsillo @@ -382,8 +440,10 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a trade quest item", /*german*/"ein Gegenstand einer Handelsmission", /*french*/"un objet de quête d'échanges") // /*spanish*/un objeto de una misión secundaria }, { - CustomMessage("a little clucker", /*german*/"ein kleiner Gackerer", /*french*/"un petit glousseur")}); - // /*spanish*/un pollito chiquito + CustomMessage("a little clucker", /*german*/"ein kleiner Gackerer", /*french*/"un petit glousseur") + // /*spanish*/un pollito chiquito + }, + CustomMessage("Pocket Cucco", "!!!", "!!!")); hintTextTable[RHT_COJIRO] = HintText(CustomMessage("Cojiro", /*german*/"Henni", /*french*/"le p'tit poulet"), // /*spanish*/a Cojiro @@ -391,8 +451,10 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a trade quest item", /*german*/"ein Gegenstand einer Handelsmission", /*french*/"un objet de quête d'échanges") // /*spanish*/un objeto de una misión secundaria }, { - CustomMessage("a cerulean capon", /*german*/"ein coelinblaues Kapaun", /*french*/"un paon azur")}); - // /*spanish*/un cerúleo capón + CustomMessage("a cerulean capon", /*german*/"ein coelinblaues Kapaun", /*french*/"un paon azur") + // /*spanish*/un cerúleo capón + }, + CustomMessage("Cojiro", "Henni", "P'tit Poulet")); hintTextTable[RHT_ODD_MUSHROOM] = HintText(CustomMessage("an Odd Mushroom", /*german*/"ein Schimmelpilz", /*french*/"un Champignon Suspect"), // /*spanish*/un champiñón extraño @@ -400,8 +462,10 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a trade quest item", /*german*/"ein Gegenstand einer Handelsmission", /*french*/"un objet de quête d'échanges") // /*spanish*/un objeto de una misión secundaria }, { - CustomMessage("a powder ingredient", /*german*/"eine Puderingredienz", /*french*/"un ingrédient à poudre")}); - // /*spanish*/un oloroso ingrediente + CustomMessage("a powder ingredient", /*german*/"eine Puderingredienz", /*french*/"un ingrédient à poudre") + // /*spanish*/un oloroso ingrediente + }, + CustomMessage("Odd Mushroom", "Schimmelpilz", "Champigon Suspect")); hintTextTable[RHT_ODD_POTION] = HintText(CustomMessage("an Odd Potion", /*german*/"ein Modertrank", /*french*/"une Mixture Suspecte"), // /*spanish*/una medicina rara @@ -413,8 +477,10 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a trade quest item", /*german*/"ein Gegenstand einer Handelsmission", /*french*/"un objet de quête d'échanges") // /*spanish*/un objeto de una misión secundaria }, { - CustomMessage("Granny's goodies", /*german*/"Omas Zuckerwerk", /*french*/"la confiserie de mamie")}); - // /*spanish*/la especialidad de la abuela + CustomMessage("Granny's goodies", /*german*/"Omas Zuckerwerk", /*french*/"la confiserie de mamie") + // /*spanish*/la especialidad de la abuela + }, + CustomMessage("Odd Potion", "Modertrank", "Mixture Suspecte")); hintTextTable[RHT_POACHERS_SAW] = HintText(CustomMessage("the Poacher's Saw", /*german*/"eine Säge", /*french*/"la Scie du Chasseur"), // /*spanish*/la sierra del furtivo @@ -422,8 +488,10 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a trade quest item", /*german*/"ein Gegenstand einer Handelsmission", /*french*/"un objet de quête d'échanges") // /*spanish*/un objeto de una misión secundaria }, { - CustomMessage("a tree killer", /*german*/"ein Baumtöter", /*french*/"un coupeur d'arbres")}); - // /*spanish*/un destructor de árboles + CustomMessage("a tree killer", /*german*/"ein Baumtöter", /*french*/"un coupeur d'arbres") + // /*spanish*/un destructor de árboles + }, + CustomMessage("Poacher's Saw", "Säge", "Scie du Chasseur")); hintTextTable[RHT_BROKEN_SWORD] = HintText(CustomMessage("the Broken Goron's Sword", /*german*/"das zerbrochene Goronen-Schwert", /*french*/"l'Épée Brisée de Goron"), // /*spanish*/la espada goron rota @@ -433,8 +501,10 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a sword", /*german*/"ein Schwert", /*french*/"une épée") // /*spanish*/una espada }, { - CustomMessage("a shattered slicer", /*german*/"ein zersplitterter Schneider", /*french*/"une arme cassée")}); - // /*spanish*/una rebanadora rota + CustomMessage("a shattered slicer", /*german*/"ein zersplitterter Schneider", /*french*/"une arme cassée") + // /*spanish*/una rebanadora rota + }, + CustomMessage("Broken Goron's Sword", "Zerbrochenes Goronen-Schwert", "Épée Brisée de Goron")); hintTextTable[RHT_PRESCRIPTION] = HintText(CustomMessage("the Prescription", /*german*/"ein Rezept", /*french*/"une Ordonnance"), // /*spanish*/la receta @@ -444,8 +514,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a pill pamphlet", /*german*/"ein Pillenpamphlet", /*french*/"un document urgent"), // /*spanish*/un instructivo medicinal - CustomMessage("a doctor's note", /*german*/"eine Notiz eines Doktors", /*french*/"un papier médical")}); - // /*spanish*/unas notas del doctor + CustomMessage("a doctor's note", /*german*/"eine Notiz eines Doktors", /*french*/"un papier médical") + // /*spanish*/unas notas del doctor + }, + CustomMessage("Prescription", "Rezept", "Ordonnance")); hintTextTable[RHT_EYEBALL_FROG] = HintText(CustomMessage("the Eyeball Frog", /*german*/"der Glotzfrosch", /*french*/"le Crapaud-qui-louche"), // /*spanish*/la rana de ojos saltones @@ -453,8 +525,10 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a trade quest item", /*german*/"ein Gegenstand einer Handelsmission", /*french*/"un objet de quête d'échanges") // /*spanish*/un objeto de una misión secundaria }, { - CustomMessage("a perceiving polliwog", /*german*/"eine wahrnehmende Kaulquappe", /*french*/"un amphibien")}); - // /*spanish*/un variopinto batracio + CustomMessage("a perceiving polliwog", /*german*/"eine wahrnehmende Kaulquappe", /*french*/"un amphibien") + // /*spanish*/un variopinto batracio + }, + CustomMessage("Eyeball Frog", "Glotzfrosch", "Crapaud-qui-louche")); hintTextTable[RHT_EYEDROPS] = HintText(CustomMessage("the Eyedrops", /*german*/"die Augentropfen", /*french*/"une phiole de Super-Gouttes"), // /*spanish*/las supergotas oculares @@ -462,8 +536,10 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a trade quest item", /*german*/"ein Gegenstand einer Handelsmission", /*french*/"un objet de quête d'échanges") // /*spanish*/un objeto de una misión secundaria }, { - CustomMessage("a vision vial", /*german*/"eine Sichtphiole", /*french*/"une solution oculaire")}); - // /*spanish*/un remedio para la vista + CustomMessage("a vision vial", /*german*/"eine Sichtphiole", /*french*/"une solution oculaire") + // /*spanish*/un remedio para la vista + }, + CustomMessage("World's Finest Eyedrops", "Augentropfen", "Super Gouttes")); hintTextTable[RHT_CLAIM_CHECK] = HintText(CustomMessage("the Claim Check", /*german*/"ein Zertifikat", /*french*/"un Certificat"), // /*spanish*/el recibo @@ -471,8 +547,10 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a trade quest item", /*german*/"ein Gegenstand einer Handelsmission", /*french*/"un objet de quête d'échanges") // /*spanish*/un objeto de una misión secundaria }, { - CustomMessage("a three day wait", /*german*/"eine dreitägige Erwartung", /*french*/"un rendez-vous dans trois jours")}); - // /*spanish*/unos tres días de espera + CustomMessage("a three day wait", /*german*/"eine dreitägige Erwartung", /*french*/"un rendez-vous dans trois jours") + }, + // /*spanish*/unos tres días de espera + CustomMessage("Claim Check", "Zertifikat", "Certificat")); hintTextTable[RHT_PROGRESSIVE_HOOKSHOT] = HintText(CustomMessage("a Hookshot", /*german*/"ein Enterhaken", /*french*/"un Grappin"), // /*spanish*/un gancho @@ -486,8 +564,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un recuerdo de Dampé CustomMessage("the Grapple Beam", /*german*/"der Greifstrahl", /*french*/"le rayon grippeur"), // /*spanish*/una garra metálica - CustomMessage("the RHT_BOING! chain", /*german*/"die Kette des RHT_BOING!", /*french*/"la chaîne de RHT_BOING!")}); - // /*spanish*/una cadena retráctil + CustomMessage("the RHT_BOING! chain", /*german*/"die Kette des RHT_BOING!", /*french*/"la chaîne de RHT_BOING!") + // /*spanish*/una cadena retráctil + }, + CustomMessage("Progressive Hookshot", "Progressiver Fanghaken", "Grappin (prog.)")); hintTextTable[RHT_PROGRESSIVE_STRENGTH] = HintText(CustomMessage("a Strength Upgrade", /*german*/"eine Stärkeverbesserung", /*french*/"une Amélioration de Force"), // /*spanish*/un aumento de fuerza @@ -499,8 +579,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/unos poderosos guanteletes CustomMessage("metal mittens", /*german*/"Metallfäustlinge", /*french*/"une paire de mitaines"), // /*spanish*/unas manoplas metálicas - CustomMessage("the heavy lifty", /*german*/"der Schwerlastheber", /*french*/"la puissance de dix hommes")}); - // /*spanish*/un levantamiento pesado + CustomMessage("the heavy lifty", /*german*/"der Schwerlastheber", /*french*/"la puissance de dix hommes") + // /*spanish*/un levantamiento pesado + }, + CustomMessage("Strength Upgrade", "Progressives Kraft-Upgrade", "Amélioration de Force (prog.)")); hintTextTable[RHT_PROGRESSIVE_BOMB_BAG] = HintText(CustomMessage("a Bomb Bag", /*german*/"ein Bombenbeutel", /*french*/"un Sac de Bombes"), // /*spanish*/un saco de bombas @@ -512,8 +594,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("an explosive container", /*german*/"ein Explosivbehälter", /*french*/"un porte-grenade"), // /*spanish*/un recipiente explosivo - CustomMessage("a blast bag", /*german*/"ein Dodongomagen", /*french*/"un estomac de Dodongo")}); - // /*spanish*/un zurrón de estallidos + CustomMessage("a blast bag", /*german*/"ein Dodongomagen", /*french*/"un estomac de Dodongo") + // /*spanish*/un zurrón de estallidos + }, + CustomMessage("Progressive Bomb Bag", "Progressive Bombentasche", "Sac de Bombes (prog.)")); hintTextTable[RHT_PROGRESSIVE_BOW] = HintText(CustomMessage("a Fairy Bow", /*german*/"ein Feen-Bogen", /*french*/"l'Arc des Fées"), // /*spanish*/un arco de las hadas @@ -523,8 +607,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("an archery enabler", /*german*/"ein Bogenschussermöglicher", /*french*/"un facilitateur de tir"), // /*spanish*/un tiro al blanco - CustomMessage("a danger dart launcher", /*german*/"ein Pfeilwerfer", /*french*/"un tire-fléchette")}); - // /*spanish*/un peligroso lanzadardos + CustomMessage("a danger dart launcher", /*german*/"ein Pfeilwerfer", /*french*/"un tire-fléchette") + // /*spanish*/un peligroso lanzadardos + }, + CustomMessage("Progressive Bow", "Progressiver Bogen", "Arc (prog.)")); hintTextTable[RHT_PROGRESSIVE_SLINGSHOT] = HintText(CustomMessage("a Slingshot", /*german*/"eine Schleuder", /*french*/"un Lance-Pierre"), // /*spanish*/una resortera de las hadas @@ -536,8 +622,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un lanzasemillas CustomMessage("a rubberband", /*german*/"ein Gummiband", /*french*/"un élastique"), // /*spanish*/un tirachinas - CustomMessage("a child's catapult", /*german*/"ein Kinderkatapult", /*french*/"un jouet d'enfant")}); + CustomMessage("a child's catapult", /*german*/"ein Kinderkatapult", /*french*/"un jouet d'enfant") // /*spanish*/una catapulta infantil + }, + CustomMessage("Progressive Slingshot", "Progressive Steinschleuder", "Lance-Pierre (prog.)")); hintTextTable[RHT_PROGRESSIVE_WALLET] = HintText(CustomMessage("a Wallet", /*german*/"eine Börse", /*french*/"une Bourse"), // /*spanish*/una bolsa de rupias @@ -549,8 +637,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una cartera de dinero CustomMessage("a gem purse", /*german*/"ein Edelsteinportemonnaie", /*french*/"une sacoche"), // /*spanish*/un zurrón de gemas - CustomMessage("a portable bank", /*german*/"eine tragbare Bank", /*french*/"une petite banque")}); - // /*spanish*/un banco portable + CustomMessage("a portable bank", /*german*/"eine tragbare Bank", /*french*/"une petite banque") + // /*spanish*/un banco portable + }, + CustomMessage("Progressive Wallet", "Progressive Geldbörse", "Bourse (prog.)")); hintTextTable[RHT_PROGRESSIVE_SCALE] = HintText(CustomMessage("a Zora Scale", /*german*/"eine Zora-Schuppe", /*french*/"une Écaille Zora"), // /*spanish*/una escama Zora @@ -560,8 +650,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a deeper dive", /*german*/"eine Tauchblase", /*french*/"une bulle de plongée"), // /*spanish*/un profundo buceo - CustomMessage("a piece of Zora", /*german*/"ein Zora-Fragment", /*french*/"un morceau de Zora")}); - // /*spanish*/un fragmento de Zora + CustomMessage("a piece of Zora", /*german*/"ein Zora-Fragment", /*french*/"un morceau de Zora") + // /*spanish*/un fragmento de Zora + }, + CustomMessage("Progressive Scale", "Progressive Schuppe", "Écaille (prog.)")); hintTextTable[RHT_PROGRESSIVE_NUT_UPGRADE] = HintText(CustomMessage("Deku Nut Capacity", /*german*/"Deku-Nuß-Kapazität", /*french*/"une Augmentation de Noix Mojo"), // /*spanish*/un aumento de nueces deku @@ -573,8 +665,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("more nuts", /*german*/"mehr Nüsse", /*french*/"encore plus de noix"), // /*spanish*/más semillas de nogal - CustomMessage("flashbang storage", /*german*/"Blendgranatenvorrat", /*french*/"un sac à noix")}); - // /*spanish*/más frutos aturdidores + CustomMessage("flashbang storage", /*german*/"Blendgranatenvorrat", /*french*/"un sac à noix") + // /*spanish*/más frutos aturdidores + }, + CustomMessage("Progressive Nut Capacity", "Progressive Nuß-Kapazität", "Capacité de Noix (prog.)")); hintTextTable[RHT_PROGRESSIVE_STICK_UPGRADE] = HintText(CustomMessage("Deku Stick Capacity", /*german*/"Deku-Stab-Kapazität", /*french*/"une augmentation de bâtons Mojo"), // /*spanish*/un aumento de palos deku @@ -584,8 +678,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("lumber racks", /*german*/"Holzgestelle", /*french*/"un paquet de bois"), // /*spanish*/más bastones - CustomMessage("more flammable twigs", /*german*/"mehr entflammbare Zweige", /*french*/"beaucoup de branches")}); - // /*spanish*/más varas + CustomMessage("more flammable twigs", /*german*/"mehr entflammbare Zweige", /*french*/"beaucoup de branches") + // /*spanish*/más varas + }, + CustomMessage("Progressive Stick Capacity", "Progressive Stab-Kapazität", "Capacité de Bâtons (prog.)")); hintTextTable[RHT_PROGRESSIVE_MAGIC_METER] = HintText(CustomMessage("a Magic Meter", /*german*/"ein Magieabmaß", /*french*/"une Jauge de Magie"), // /*spanish*/un aumento de poder mágico @@ -597,8 +693,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una maestría mística CustomMessage("pixie dust", /*german*/"Feenstaub", /*french*/"de la poudre de fée"), // /*spanish*/un polvo de hada - CustomMessage("a green rectangle", /*german*/"ein grünes Rechteck", /*french*/"un rectangle vert")}); - // /*spanish*/una verduzca barra + CustomMessage("a green rectangle", /*german*/"ein grünes Rechteck", /*french*/"un rectangle vert") + // /*spanish*/una verduzca barra + }, + CustomMessage("Progressive Magic Meter", "Progressives Magisches Maß", "Jauge de Magie (prog.)")); hintTextTable[RHT_PROGRESSIVE_OCARINA] = HintText(CustomMessage("an Ocarina", /*german*/"eine Okarina", /*french*/"un ocarina"), // /*spanish*/una ocarina @@ -610,8 +708,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a flute", /*german*/"eine Flöte", /*french*/"un bec musical"), // /*spanish*/un utensilio musical - CustomMessage("a music maker", /*german*/"ein Musikmacher", /*french*/"un porteur de chansons")}); - // /*spanish*/un instrumento + CustomMessage("a music maker", /*german*/"ein Musikmacher", /*french*/"un porteur de chansons") + // /*spanish*/un instrumento + }, + CustomMessage("Progressive Ocarina", "Progressive Okarina", "Ocarina (prog.)")); hintTextTable[RHT_PROGRESSIVE_BOMBCHUS] = HintText(CustomMessage("Bombchus", /*german*/"Krabbelminen", /*french*/"un paquet de Missiles"), // /*spanish*/unos bombchus @@ -627,8 +727,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/unos explosivos ratoncitos CustomMessage("wall crawlers", /*german*/"Wandkrabbler", /*french*/"un rapide grimpeur"), // /*spanish*/unos trepaparedes - CustomMessage("trail blazers", /*german*/"Vorreiter", /*french*/"un zigzag éclatant")}); - // /*spanish*/unas ratas propulsadas + CustomMessage("trail blazers", /*german*/"Vorreiter", /*french*/"un zigzag éclatant") + // /*spanish*/unas ratas propulsadas + }, + CustomMessage("Progressive Bombchu", "Progressive Krabbelminen", "Missiles (prog.)")); hintTextTable[RHT_PROGRESSIVE_GORONSWORD] = HintText(CustomMessage("a Goron Sword", /*german*/"ein Goronen-Schwert", /*french*/"une épée Goron"), // /*spanish*/una espada goron @@ -638,8 +740,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a long blade", /*german*/"eine lange Klinge", /*french*/"une longue lame"), // /*spanish*/una gran hoja - CustomMessage("a Goron weapon", /*german*/"eine Goronenwaffe", /*french*/"une arme Goron")}); - // /*spanish*/un arma goron + CustomMessage("a Goron weapon", /*german*/"eine Goronenwaffe", /*french*/"une arme Goron") + // /*spanish*/un arma goron + }, + CustomMessage("Progressive Goron Sword", "Progressives Goronen-Schwert", "Épée Goron (prog.)")); hintTextTable[RHT_EMPTY_BOTTLE] = HintText(CustomMessage("a bottle", /*german*/"eine Flasche", /*french*/"un flacon vide"), // /*spanish*/una botella @@ -651,8 +755,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un recipiente de cristal CustomMessage("an empty jar", /*german*/"ein leerer Krug", /*french*/"une jarre incassable"), // /*spanish*/un frasco vacío - CustomMessage("encased air", /*german*/"eingeschlossene Luft", /*french*/"un bocal d'air")}); - // /*spanish*/aire a presión + CustomMessage("encased air", /*german*/"eingeschlossene Luft", /*french*/"un bocal d'air") + // /*spanish*/aire a presión + }, + CustomMessage("Empty Bottle", "Leere Flasche", "Bouteille Vide")); hintTextTable[RHT_BOTTLE_WITH_MILK] = HintText(CustomMessage("a Milk Bottle", /*german*/"eine Milchflasche", /*french*/"un flacon de lait"), // /*spanish*/una botella de leche @@ -664,8 +770,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una fuente de calcio CustomMessage("a white liquid", /*german*/"eine weiße Flüssigkeit", /*french*/"un liquide blanc"), // /*spanish*/una bebida nutritiva - CustomMessage("a baby's breakfast", /*german*/"ein Babyfrühstück", /*french*/"du jus pour bébé")}); - // /*spanish*/un trago para bebés + CustomMessage("a baby's breakfast", /*german*/"ein Babyfrühstück", /*french*/"du jus pour bébé") + // /*spanish*/un trago para bebés + }, + CustomMessage("Bottle with Milk", "Flasche mit Milch", "Bouteille avec du Lait")); hintTextTable[RHT_BOTTLE_WITH_RED_POTION] = HintText(CustomMessage("a Red Potion Bottle", /*german*/"eine Flasche mit rotem Elixier", /*french*/"un flacon de potion rouge"), // /*spanish*/una botella de poción roja @@ -675,8 +783,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a vitality vial", /*german*/"eine Vitalitätsphiole", /*french*/"un mélange de vitalité"), // /*spanish*/una pócima vitalicia - CustomMessage("a red liquid", /*german*/"eine rote Flüssigkeit", /*french*/"un liquide rouge")}); - // /*spanish*/un remedio rojizo + CustomMessage("a red liquid", /*german*/"eine rote Flüssigkeit", /*french*/"un liquide rouge") + // /*spanish*/un remedio rojizo + }, + CustomMessage("Bottle with Red Potion", "Flasche mit rotem Elixier", "Bouteille avec une Potion Rouge")); hintTextTable[RHT_BOTTLE_WITH_GREEN_POTION] = HintText(CustomMessage("a Green Potion Bottle", /*german*/"eine Flasche mit grünem Elixier", /*french*/"un flacon de potion verte"), // /*spanish*/una botella de poción verde @@ -686,8 +796,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a magic mixture", /*german*/"eine magische Mixtur", /*french*/"une réserve magique"), // /*spanish*/un potingue mágico - CustomMessage("a green liquid", /*german*/"eine grüne Flüssigkeit", /*french*/"un liquide vert")}); - // /*spanish*/un remedio verduzco + CustomMessage("a green liquid", /*german*/"eine grüne Flüssigkeit", /*french*/"un liquide vert") + // /*spanish*/un remedio verduzco + }, + CustomMessage("Bottle with Green Potion", "Flasche mit grünem Elixier", "Bouteille avec une Potion Verte")); hintTextTable[RHT_BOTTLE_WITH_BLUE_POTION] = HintText(CustomMessage("a Blue Potion Bottle", /*german*/"eine Flasche mit blauem Elixier", /*french*/"un flacon de potion bleue"), // /*spanish*/una botella de poción azul @@ -697,8 +809,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("an ailment antidote", /*german*/"ein Krankheitsantidot", /*french*/"l'élixir ultime"), // /*spanish*/un antídoto para el dolor - CustomMessage("a blue liquid", /*german*/"eine blaue Flüssigkeit", /*french*/"un liquide bleu")}); - // /*spanish*/un remedio índigo + CustomMessage("a blue liquid", /*german*/"eine blaue Flüssigkeit", /*french*/"un liquide bleu") + // /*spanish*/un remedio índigo + }, + CustomMessage("Bottle with Blue Potion", "Flasche mit blauem Elixier", "Bouteille avec une Potion Bleue")); hintTextTable[RHT_BOTTLE_WITH_FAIRY] = HintText(CustomMessage("a Fairy Bottle", /*german*/"eine Feenflasche", /*french*/"une fée en flacon"), // /*spanish*/un hada en una botella @@ -710,8 +824,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un hada atrapada CustomMessage("an extra life", /*german*/"ein Extraleben", /*french*/"une vie de rechange"), // /*spanish*/una oportunidad más - CustomMessage("Navi's cousin", /*german*/"Navis Vetter", /*french*/"le cousin de Navi")}); - // /*spanish*/una prima de Navi + CustomMessage("Navi's cousin", /*german*/"Navis Vetter", /*french*/"le cousin de Navi") + // /*spanish*/una prima de Navi + }, + CustomMessage("Bottle with Fairy", "Flasche mit Fee", "Bouteille avec une Fée")); hintTextTable[RHT_BOTTLE_WITH_FISH] = HintText(CustomMessage("a Fish Bottle", /*german*/"eine Fischflasche", /*french*/"un poisson en flacon"), // /*spanish*/un pez en una botella @@ -721,8 +837,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("an aquarium", /*german*/"ein Aquarium", /*french*/"un aquarium"), // /*spanish*/un escamado ser - CustomMessage("a deity's snack", /*german*/"ein Gottheitssnack", /*french*/"le repas d'un dieu marin")}); - // /*spanish*/un tentempié de cierta deidad + CustomMessage("a deity's snack", /*german*/"ein Gottheitssnack", /*french*/"le repas d'un dieu marin") + // /*spanish*/un tentempié de cierta deidad + }, + CustomMessage("Bottle with Fish", "Flasche mit Fisch", "Bouteille avec un Poisson")); hintTextTable[RHT_BOTTLE_WITH_BLUE_FIRE] = HintText(CustomMessage("a Blue Fire Bottle", /*german*/"eine Flasche mit blauem Feuer", /*french*/"une flamme bleue en flacon"), // /*spanish*/una botella de fuego azul @@ -732,8 +850,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a conflagration canteen", /*german*/"eine Brandfeldflasche", /*french*/"une mystérieuse flamme"), // /*spanish*/un incendio retenido - CustomMessage("an icemelt jar", /*german*/"ein eisschmelzender Krug", /*french*/"un brasier glacial")}); - // /*spanish*/unas brasas enfrascadas + CustomMessage("an icemelt jar", /*german*/"ein eisschmelzender Krug", /*french*/"un brasier glacial") + // /*spanish*/unas brasas enfrascadas + }, + CustomMessage("Bottle with Blue Fire", "Flasche mit blauem Feuer", "Bouteille avec une Flamme Bleue")); hintTextTable[RHT_BOTTLE_WITH_BUGS] = HintText(CustomMessage("a Bug Bottle", /*german*/"eine Wanzenflasche", /*french*/"un insecte en flacon"), // /*spanish*/unos insectos en una botella @@ -743,8 +863,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("an insectarium", /*german*/"ein Insektarium", /*french*/"un insectarium"), // /*spanish*/unos invertebrados seres - CustomMessage("Skulltula finders", /*german*/"Skulltula-Finder", /*french*/"une poignée de trouve-Skulltula")}); - // /*spanish*/unos rastreadores de skulltulas + CustomMessage("Skulltula finders", /*german*/"Skulltula-Finder", /*french*/"une poignée de trouve-Skulltula") + // /*spanish*/unos rastreadores de skulltulas + }, + CustomMessage("Bottle with Bugs", "Flasche mit Wanzen", "Bouteille avec des Insectes")); hintTextTable[RHT_BOTTLE_WITH_POE] = HintText(CustomMessage("a Poe Bottle", /*german*/"eine Irrlichtflasche", /*french*/"un Esprit en flacon"), // /*spanish*/un Poe en una botella @@ -754,8 +876,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a spooky ghost", /*german*/"ein spukhafter Geist", /*french*/"un effroyable fantôme"), // /*spanish*/un espantoso espectro - CustomMessage("a face in the jar", /*german*/"ein Gesicht im Krug", /*french*/"un visage dans un bocal")}); - // /*spanish*/una expresión enfrascada + CustomMessage("a face in the jar", /*german*/"ein Gesicht im Krug", /*french*/"un visage dans un bocal") + // /*spanish*/una expresión enfrascada + }, + CustomMessage("Bottle with Poe", "Flasche mit einem Geist", "Bouteille avec un Esprit")); hintTextTable[RHT_BOTTLE_WITH_BIG_POE] = HintText(CustomMessage("a Big Poe Bottle", /*german*/"eine Nachtschwärmerflasche", /*french*/"une Ame en flacon"), // /*spanish*/un Gran Poe en una botella @@ -765,8 +889,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the spookiest ghost", /*german*/"der spukhafteste Geist", /*french*/"un épouvantable spectre"), // /*spanish*/el espectro más espeluznante - CustomMessage("a sidequest spirit", /*german*/"ein Nebenmissionsgeist", /*french*/"un précieux esprit")}); - // /*spanish*/un buen valorado espíritu + CustomMessage("a sidequest spirit", /*german*/"ein Nebenmissionsgeist", /*french*/"un précieux esprit") + // /*spanish*/un buen valorado espíritu + }, + CustomMessage("Bottle with Big Poe", "Flasche mit Seele", "Bouteille avec une Âme")); hintTextTable[RHT_RUTOS_LETTER] = HintText(CustomMessage("Ruto's Letter", /*german*/"Rutos Brief", /*french*/"la lettre de Ruto"), // /*spanish*/la carta de Ruto @@ -780,8 +906,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un escrito mweep CustomMessage("an RHT_SOS call", /*german*/"ein RHT_SOS Signal", /*french*/"un signal RHT_SOS"), // /*spanish*/una nota de socorro - CustomMessage("a fishy stationery", /*german*/"ein nasses Papier", /*french*/"un papier mouillé")}); - // /*spanish*/un mensaje de ayuda + CustomMessage("a fishy stationery", /*german*/"ein nasses Papier", /*french*/"un papier mouillé") + // /*spanish*/un mensaje de ayuda + }, + CustomMessage("Bottle with Ruto's Letter", "Flasche mit Rutos Brief", "Bouteille avec la Lettre de Ruto")); hintTextTable[RHT_ZELDAS_LULLABY] = HintText(CustomMessage("Zelda's Lullaby", /*german*/"Zeldas Wiegenlied", /*french*/"la berceuse de Zelda"), // /*spanish*/la Nana de Zelda @@ -793,8 +921,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a song of royal slumber", /*german*/"ein royales Lied", /*french*/"une chanson royale"), // /*spanish*/la canción real - CustomMessage("a triforce tune", /*german*/"eine heilige Musik", /*french*/"la musique sacrée")}); - // /*spanish*/la melodía de la trifuerza + CustomMessage("a triforce tune", /*german*/"eine heilige Musik", /*french*/"la musique sacrée") + // /*spanish*/la melodía de la trifuerza + }, + CustomMessage("Zelda's Lullaby", "Zeldas Wiegenlied", "Berceuse de Zelda")); hintTextTable[RHT_EPONAS_SONG] = HintText(CustomMessage("Epona's Song", /*german*/"Eponas Lied", /*french*/"le chant d'Epona"), // /*spanish*/la Canción de Epona @@ -806,8 +936,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una copla ecuestre CustomMessage("Malon's melody", /*german*/"Malons Melodie", /*french*/"la mélodie des vaches"), // /*spanish*/la sonata de Malon - CustomMessage("a ranch song", /*german*/"ein Lied des Ackers", /*french*/"le chant des champs")}); - // /*spanish*/un canto rupestre + CustomMessage("a ranch song", /*german*/"ein Lied des Ackers", /*french*/"le chant des champs") + // /*spanish*/un canto rupestre + }, + CustomMessage("Epona's Song", "Eponas Lied", "Chant d'Epona")); hintTextTable[RHT_SARIAS_SONG] = HintText(CustomMessage("Saria's Song", /*german*/"Salias Lied", /*french*/"le chant de Saria"), // /*spanish*/la Canción de Saria @@ -819,8 +951,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a song of dancing Gorons", /*german*/"ein Lied der tanzenden Goronen", /*french*/"une chanson danceuse"), // /*spanish*/un pegadizo tono goron - CustomMessage("Saria's phone number", /*german*/"Salias Telefonnummer", /*french*/"le téléphone d'une amie")}); - // /*spanish*/una consulta de asistencia + CustomMessage("Saria's phone number", /*german*/"Salias Telefonnummer", /*french*/"le téléphone d'une amie") + // /*spanish*/una consulta de asistencia + }, + CustomMessage("Saria's Song", "Salias Lied", "Chant de Saria")); hintTextTable[RHT_SUNS_SONG] = HintText(CustomMessage("the Sun's Song", /*german*/"Hymne der Sonne", /*french*/"le chant du soleil"), // /*spanish*/la Canción del Sol @@ -834,8 +968,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un día soleado CustomMessage("the ReDead's bane", /*german*/"das Verderben der Remorts", /*french*/"le fléau des Éffrois"), // /*spanish*/la destructora de Redeads - CustomMessage("the Gibdo's bane", /*german*/"das Verderben der Gibdos", /*french*/"le fléau des Gibdo")}); + CustomMessage("the Gibdo's bane", /*german*/"das Verderben der Gibdos", /*french*/"le fléau des Gibdo") // /*spanish*/la destructora de Gibdos + }, + CustomMessage("Sun's Song", "Hymne der Sonne", "Chant du Soleil")); hintTextTable[RHT_SONG_OF_TIME] = HintText(CustomMessage("the Song of Time", /*german*/"Hymne der Zeit", /*french*/"le chant du temps"), // /*spanish*/la Canción del tiempo @@ -845,8 +981,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a song 7 years long", /*german*/"ein sieben Jahre langes Lied", /*french*/"le flot du temps"), // /*spanish*/la setenada canción - CustomMessage("the tune of ages", /*german*/"Hymne des Äons", /*french*/"le Chant des Âges")}); - // /*spanish*/la melodía eónica + CustomMessage("the tune of ages", /*german*/"Hymne des Äons", /*french*/"le Chant des Âges") + // /*spanish*/la melodía eónica + }, + CustomMessage("Song of Time", "Hymne der Zeit", "Chant du Temps")); hintTextTable[RHT_SONG_OF_STORMS] = HintText(CustomMessage("the Song of Storms", /*german*/"Hymne des Sturms", /*french*/"le chant des tempêtes"), // /*spanish*/la Canción de la Tormenta @@ -858,8 +996,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/la danza de la lluvia CustomMessage("a thunderstorm tune", /*german*/"eine Gewitterhymne", /*french*/"une hymne foudroyante"), // /*spanish*/una sonata tormentosa - CustomMessage("windmill acceleration", /*german*/"Windmühlenbeschleunigung", /*french*/"l'accélérateur de moulins")}); + CustomMessage("windmill acceleration", /*german*/"Windmühlenbeschleunigung", /*french*/"l'accélérateur de moulins") + }, // /*spanish*/el arranque de molinos + CustomMessage("Song of Storms", "Hymne des Sturms", "Chant des Tempêtes")); hintTextTable[RHT_MINUET_OF_FOREST] = HintText(CustomMessage("the Minuet of Forest", /*german*/"Menuett des Waldes", /*french*/"le menuet de la forêt"), // /*spanish*/el Minueto del bosque @@ -871,8 +1011,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/la canción de las copas CustomMessage("an arboreal anthem", /*german*/"eine baumartige Hymne", /*french*/"l'hymne sylvestre"), // /*spanish*/el himno forestal - CustomMessage("a green spark trail", /*german*/"ein grüner Komet", /*french*/"une comète verte")}); + CustomMessage("a green spark trail", /*german*/"ein grüner Komet", /*french*/"une comète verte") + }, // /*spanish*/el sendero esmeralda + CustomMessage("Minuet of Forest", "Menuett des Waldes", "Menuet des Bois")); hintTextTable[RHT_BOLERO_OF_FIRE] = HintText(CustomMessage("the Bolero of Fire", /*german*/"Bolero des Feuers", /*french*/"le boléro du feu"), // /*spanish*/el Bolero del fuego @@ -884,8 +1026,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/la canción de la lava CustomMessage("a red spark trail", /*german*/"ein roter Komet", /*french*/"une comète rouge"), // /*spanish*/el sendero rubí - CustomMessage("a volcanic verse", /*german*/"ein vulkanischer Vers", /*french*/"le souffle du volcan")}); + CustomMessage("a volcanic verse", /*german*/"ein vulkanischer Vers", /*french*/"le souffle du volcan") // /*spanish*/el verso volcánico + }, + CustomMessage("Bolero of Fire", "Bolero des Feuers", "Boléro du Feu")); hintTextTable[RHT_SERENADE_OF_WATER] = HintText(CustomMessage("the Serenade of Water", /*german*/"Serenade des Wassers", /*french*/"la sérénade de l'eau"), // /*spanish*/la Serenata del agua @@ -897,8 +1041,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/la canción del estanque CustomMessage("a blue spark trail", /*german*/"ein blauer Komet", /*french*/"une comète bleue"), // /*spanish*/el sendero zafiro - CustomMessage("the lake's lyric", /*german*/"die Lyrik des Sees", /*french*/"la voix du lac")}); - // /*spanish*/la letra del lago + CustomMessage("the lake's lyric", /*german*/"die Lyrik des Sees", /*french*/"la voix du lac") + // /*spanish*/la letra del lago + }, + CustomMessage("Serenade of Water", "Serenade des Wassers", "Sérénade de l'Eau")); hintTextTable[RHT_REQUIEM_OF_SPIRIT] = HintText(CustomMessage("the Requiem of Spirit", /*german*/"Requiem der Geister", /*french*/"le requiem des esprits"), // /*spanish*/el Réquiem del espíritu @@ -910,8 +1056,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/la canción de la gran estatua CustomMessage("an orange spark trail", /*german*/"ein oranger Komet", /*french*/"une comète orange"), // /*spanish*/el sendero ámbar - CustomMessage("the desert ditty", /*german*/"der Wind der Wüste", /*french*/"le vent du désert")}); - // /*spanish*/la estrofa del desierto + CustomMessage("the desert ditty", /*german*/"der Wind der Wüste", /*french*/"le vent du désert") + // /*spanish*/la estrofa del desierto + }, + CustomMessage("Requiem of Spirit", "Requiem der Geister", "Requiem des Esprits")); hintTextTable[RHT_NOCTURNE_OF_SHADOW] = HintText(CustomMessage("the Nocturne of Shadow", /*german*/"Nocturne des Schattens", /*french*/"le nocturne de l'ombre"), // /*spanish*/el Nocturno de la sombra @@ -925,8 +1073,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una honra fúnebre CustomMessage("a haunted hymn", /*german*/"eine Spukhymne", /*french*/"une chanson lugubre"), // /*spanish*/una estrofa encantada - CustomMessage("a purple spark trail", /*german*/"ein violetter Komet", /*french*/"une comète mauve")}); + CustomMessage("a purple spark trail", /*german*/"ein violetter Komet", /*french*/"une comète mauve") // /*spanish*/el sendero malva + }, + CustomMessage("Nocturne of Shadow", "Nocturne des Schattens", "Nocturne de l'Ombre")); hintTextTable[RHT_PRELUDE_OF_LIGHT] = HintText(CustomMessage("the Prelude of Light", /*german*/"Kantate des Lichts", /*french*/"le prélude de la lumière"), // /*spanish*/el Preludio de la luz @@ -938,8 +1088,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/la melodía refulgente CustomMessage("a yellow spark trail", /*german*/"ein gelber Komet", /*french*/"une comète jaune"), // /*spanish*/el sendero resplandeciente - CustomMessage("the temple traveler", /*german*/"ein Tempelreisender", /*french*/"un chant de sanctuaire")}); + CustomMessage("the temple traveler", /*german*/"ein Tempelreisender", /*french*/"un chant de sanctuaire") // /*spanish*/la ruta del templo + }, + CustomMessage("Prelude of Light", "Kantate des Lichts", "Prélude de la Lumière")); hintTextTable[RHT_DEKU_TREE_MAP] = HintText(CustomMessage("the Deku Tree Map", /*german*/"die Karte des Deku-Baums", /*french*/"la carte de l'Arbre Mojo"), // /*spanish*/el mapa del Gran Árbol Deku @@ -949,8 +1101,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a mossy atlas", /*german*/"ein moosiger Atlas", /*french*/"un atlas boisé"), // /*spanish*/un atlas musgoso - CustomMessage("some mossy blueprints", /*german*/"einige moosige Blaupausen", /*french*/"un plan boisé")}); + CustomMessage("some mossy blueprints", /*german*/"einige moosige Blaupausen", /*french*/"un plan boisé") // /*spanish*/unos planos musgosos + }, + CustomMessage("Great Deku Tree Map", "Karte des Deku-Baums", "Carte de l'Arbre Mojo")); hintTextTable[RHT_DODONGOS_CAVERN_MAP] = HintText(CustomMessage("the Dodongo's Cavern Map", /*german*/"die Karte der Dodongo-Höhle", /*french*/"la carte de la Caverne Dodongo"), // /*spanish*/el mapa de la Cueva de los Dodongos @@ -960,8 +1114,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a rocky atlas", /*german*/"eine felsiger Atlas", /*french*/"un atlas rocheux"), // /*spanish*/un atlas rocoso - CustomMessage("some rocky blueprints", /*german*/"einige felsige Blaupausen", /*french*/"un plan rocheux")}); + CustomMessage("some rocky blueprints", /*german*/"einige felsige Blaupausen", /*french*/"un plan rocheux") // /*spanish*/unos planos rocosos + }, + CustomMessage("Dodongo's Cavern Map", "Karte der Dodongo-Höhle", "Carte de la Caverne Dodongo")); hintTextTable[RHT_JABU_JABUS_BELLY_MAP] = HintText(CustomMessage("the Jabu-Jabu's Belly Map", /*german*/"die Karte des Jabu-Jabu-Bauchs", /*french*/"la carte de Jabu-Jabu"), // /*spanish*/el mapa de la Tripa de Jabu-Jabu @@ -971,8 +1127,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a fishy atlas", /*german*/"ein fischiger Atlas", /*french*/"un atlas digéré"), // /*spanish*/un atlas digesto - CustomMessage("some fishy blueprints", /*german*/"einige fischige Blaupausen", /*french*/"un plan digéré")}); + CustomMessage("some fishy blueprints", /*german*/"einige fischige Blaupausen", /*french*/"un plan digéré") // /*spanish*/unos planos digestos + }, + CustomMessage("Jabu-Jabu's Belly Map", "Karte des Jabu-Jabu-Bauchs", "Carte du Ventre de Jabu-Jabu")); hintTextTable[RHT_FOREST_TEMPLE_MAP] = HintText(CustomMessage("the Forest Temple Map", /*german*/"die Karte des Waldtempels", /*french*/"la carte du Temple de la Forêt"), // /*spanish*/el mapa del Templo del Bosque @@ -982,8 +1140,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a sylvan atlas", /*german*/"ein waldiger Atlas", /*french*/"un atlas sylvestre"), // /*spanish*/un atlas enselvado - CustomMessage("some sylvan blueprints", /*german*/"einige waldige Blaupausen", /*french*/"un plan sylvestre")}); + CustomMessage("some sylvan blueprints", /*german*/"einige waldige Blaupausen", /*french*/"un plan sylvestre") // /*spanish*/unos planos enselvados + }, + CustomMessage("Forest Temple Map", "Karte des Waldtempels", "Carte du Temple de la Forêt")); hintTextTable[RHT_FIRE_TEMPLE_MAP] = HintText(CustomMessage("the Fire Temple Map", /*german*/"die Karte des Feuertempels", /*french*/"la carte du Temple du Feu"), // /*spanish*/el mapa del Templo del Fuego @@ -993,8 +1153,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a molten atlas", /*german*/"ein geschmolzener Atlas", /*french*/"un atlas fondu"), // /*spanish*/un atlas fundido - CustomMessage("some molten blueprints", /*german*/"einige geschmolzene Blaupausen", /*french*/"un plan fondu")}); + CustomMessage("some molten blueprints", /*german*/"einige geschmolzene Blaupausen", /*french*/"un plan fondu") // /*spanish*/unos planos fundidos + }, + CustomMessage("Fire Temple Map", "Karte des Feuertempels", "Carte due Temple de Feu")); hintTextTable[RHT_WATER_TEMPLE_MAP] = HintText(CustomMessage("the Water Temple Map", /*german*/"die Karte des Wassertempels", /*french*/"la carte du Temple de l'Eau"), // /*spanish*/el mapa del Templo del Agua @@ -1004,8 +1166,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a wet atlas", /*german*/"ein nasser Atlas", /*french*/"un atlas humide"), // /*spanish*/un atlas mojado - CustomMessage("some wet blueprints", /*german*/"einige nasse Blaupausen", /*french*/"un plan humide")}); + CustomMessage("some wet blueprints", /*german*/"einige nasse Blaupausen", /*french*/"un plan humide") // /*spanish*/unos planos mojados + }, + CustomMessage("Water Temple Map", "Karte des Wassertempels", "Carte du Temple de l'Eau")); hintTextTable[RHT_SPIRIT_TEMPLE_MAP] = HintText(CustomMessage("the Spirit Temple Map", /*german*/"die Karte des Geistertempels", /*french*/"la carte du Temple de l'Esprit"), // /*spanish*/el mapa del Templo del Espíritu @@ -1015,8 +1179,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a sandy atlas", /*german*/"ein sandiger Atlas", /*french*/"un atlas sableux"), // /*spanish*/un atlas arenoso - CustomMessage("some sandy blueprints", /*german*/"einige sandige Blaupausen", /*french*/"un plan sableux")}); + CustomMessage("some sandy blueprints", /*german*/"einige sandige Blaupausen", /*french*/"un plan sableux") // /*spanish*/unos planos arenosos + }, + CustomMessage("Spirit Temple Map", "Karte des Geistertempels", "Carte due Temple de l'Esprit")); hintTextTable[RHT_SHADOW_TEMPLE_MAP] = HintText(CustomMessage("the Shadow Temple Map", /*german*/"die Karte des Schattentempels", /*french*/"la carte du Temple de l'Ombre"), // /*spanish*/el mapa del Templo de las Sombras @@ -1026,10 +1192,12 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a creepy atlas", /*german*/"eine gruseliger Atlas", /*french*/"un atlas sinistre"), // /*spanish*/un atlas siniestra - CustomMessage("some creepy blueprints", /*german*/"einige gruselige Blaupausen", /*french*/"un plan sinistre")}); + CustomMessage("some creepy blueprints", /*german*/"einige gruselige Blaupausen", /*french*/"un plan sinistre") // /*spanish*/unos planos siniestras + }, + CustomMessage("Shadow Temple Map", "Karte des Schattentempels", "Carte du Temple de l'Ombre")); - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MAP] = HintText(CustomMessage("the Bottom of the Well Map", /*german*/"die Karte des Grund des Brunnens", /*french*/"la carte du fond du Puits"), + hintTextTable[RHT_BOTW_MAP] = HintText(CustomMessage("the Bottom of the Well Map", /*german*/"die Karte des Grund des Brunnens", /*french*/"la carte du fond du Puits"), // /*spanish*/el mapa del Fondo del pozo { CustomMessage("a dungeon map", /*german*/"eine Karte", /*french*/"une carte") @@ -1037,8 +1205,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a moldy atlas", /*german*/"ein schimmeliger Atlas", /*french*/"un atlas moisi"), // /*spanish*/un atlas mohoso - CustomMessage("some moldy blueprints", /*german*/"einige schimmelige Blaupausen", /*french*/"un plan moisi")}); - // /*spanish*/unos planos mohosos + CustomMessage("some moldy blueprints", /*german*/"einige schimmelige Blaupausen", /*french*/"un plan moisi") + // /*spanish*/unos planos mohosos + }, + CustomMessage("Bottom of the Well Map", "Karte des Grund des Brunnens", "Carte du Puits")); hintTextTable[RHT_ICE_CAVERN_MAP] = HintText(CustomMessage("the Ice Cavern Map", /*german*/"die Karte der Eishöhle", /*french*/"la carte de la Caverne Polaire"), // /*spanish*/el mapa de la Caverna de hielo @@ -1048,8 +1218,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a polar atlas", /*german*/"ein polarer Atlas", /*french*/"un atlas polaire"), // /*spanish*/un atlas polar - CustomMessage("some polar blueprints", /*german*/"einige polare Blaupausen", /*french*/"un plan polaire")}); + CustomMessage("some polar blueprints", /*german*/"einige polare Blaupausen", /*french*/"un plan polaire") // /*spanish*/unos planos polars + }, + CustomMessage("Ice Cavern Map", "Karte der Eishöhle", "Carte de la Caverne Polaire")); hintTextTable[RHT_DEKU_TREE_COMPASS] = HintText(CustomMessage("the Deku Tree Compass", /*german*/"der Kompaß des Deku-Baums", /*french*/"la boussole de l'Arbre Mojo"), // /*spanish*/la brújula del Gran Árbol Deku @@ -1059,8 +1231,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a mossy treasure tracker", /*german*/"ein moosiger Schatzfinder", /*french*/"un cherche-trésor boisé"), // /*spanish*/un zahorí musgoso - CustomMessage("a mossy magnetic needle", /*german*/"eine moosige Magnetnadel", /*french*/"une aimant boisée")}); + CustomMessage("a mossy magnetic needle", /*german*/"eine moosige Magnetnadel", /*french*/"une aimant boisée") // /*spanish*/un imán musgoso + }, + CustomMessage("Great Deku Tree Compass", "Kompaß des Deku-Baums", "Boussole de l'Arbre Mojo")); hintTextTable[RHT_DODONGOS_CAVERN_COMPASS] = HintText(CustomMessage("the Dodongo's Cavern Compass", /*german*/"der Kompaß der Dodongo-Höhle", /*french*/"la boussole de la Caverne Dodongo"), // /*spanish*/la brújula de la Cueva de los Dodongos @@ -1070,8 +1244,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a rocky treasure tracker", /*german*/"ein felsiger Schatzfinder", /*french*/"un cherche-trésor rocheux"), // /*spanish*/un zahorí rocoso - CustomMessage("a rocky magnetic needle", /*german*/"eine felsige Magnetnadel", /*french*/"une aimant rocheux")}); + CustomMessage("a rocky magnetic needle", /*german*/"eine felsige Magnetnadel", /*french*/"une aimant rocheux") // /*spanish*/un imán rocoso + }, + CustomMessage("Dodongo's Cavern Compass", "Kompaß der Dodongo-Höhle", "Boussole de la Caverne Dodongo")); hintTextTable[RHT_JABU_JABUS_BELLY_COMPASS] = HintText(CustomMessage("the Jabu-Jabu's Belly Compass", /*german*/"der Kompaß des Jabu-Jabu-Bauchs", /*french*/"la boussole de Jabu-Jabu"), // /*spanish*/la brújula de la Tripa de Jabu-Jabu @@ -1081,8 +1257,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a fishy treasure tracker", /*german*/"ein fischiger Schatzfinder", /*french*/"un cherche-trésor digéré"), // /*spanish*/un zahorí digesto - CustomMessage("a fishy magnetic needle", /*german*/"eine fischige Magnetnadel", /*french*/"une aimant digéré")}); - // /*spanish*/un imán digesto + CustomMessage("a fishy magnetic needle", /*german*/"eine fischige Magnetnadel", /*french*/"une aimant digéré") + // /*spanish*/un imán digesto + }, + CustomMessage("Jabu-Jabu's Belly Compass", "Kompaß des Jabu-Jabu-Bauchs", "Boussole du Ventre de Jabu-Jabu")); hintTextTable[RHT_FOREST_TEMPLE_COMPASS] = HintText(CustomMessage("the Forest Temple Compass", /*german*/"der Kompaß des Waldtempels", /*french*/"la boussole du Temple de la Forêt"), // /*spanish*/la brújula del Templo del Bosque @@ -1092,8 +1270,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a sylvan treasure tracker", /*german*/"ein waldiger Schatzfinder", /*french*/"un cherche-trésor sylvestre"), // /*spanish*/un zahorí enselvado - CustomMessage("a sylvan magnetic needle", /*german*/"eine waldige Magnetnadel", /*french*/"une aimant sylvestre")}); + CustomMessage("a sylvan magnetic needle", /*german*/"eine waldige Magnetnadel", /*french*/"une aimant sylvestre") // /*spanish*/un imán enselvado + }, + CustomMessage("Forest Temple Compass", "Kompaß des Waldtempels", "Boussole du Temple de la Forêt")); hintTextTable[RHT_FIRE_TEMPLE_COMPASS] = HintText(CustomMessage("the Fire Temple Compass", /*german*/"der Kompaß des Feuertempels", /*french*/"la boussole du Temple du Feu"), // /*spanish*/la brújula del Templo del Fuego @@ -1103,8 +1283,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a molten treasure tracker", /*german*/"ein geschmolzener Schatzfinder", /*french*/"un cherche-trésor fondu"), // /*spanish*/un zahorí fundido - CustomMessage("a molten magnetic needle", /*german*/"eine geschmolzene Magnetnadel", /*french*/"une aimant fondu")}); - // /*spanish*/un imán fundido + CustomMessage("a molten magnetic needle", /*german*/"eine geschmolzene Magnetnadel", /*french*/"une aimant fondu") + // /*spanish*/un imán fundido + }, + CustomMessage("Fire Temple Compass", "Kompaß des Feuertempels", "Boussole du Temple du Feu")); hintTextTable[RHT_WATER_TEMPLE_COMPASS] = HintText(CustomMessage("the Water Temple Compass", /*german*/"der Kompaß des Wassertempels", /*french*/"la boussole du Temple de l'Eau"), // /*spanish*/la brújula del Templo del Agua @@ -1114,8 +1296,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a wet treasure tracker", /*german*/"ein nasser Schatzfinder", /*french*/"un cherche-trésor humide"), // /*spanish*/un zahorí mojado - CustomMessage("a wet magnetic needle", /*german*/"eine nasse Magnetnadel", /*french*/"une aimant humide")}); + CustomMessage("a wet magnetic needle", /*german*/"eine nasse Magnetnadel", /*french*/"une aimant humide") // /*spanish*/un imán mojado + }, + CustomMessage("Water Temple Compass", "Kompaß des Wassertempels", "Boussole du Temple de l'Eau")); hintTextTable[RHT_SPIRIT_TEMPLE_COMPASS] = HintText(CustomMessage("the Spirit Temple Compass", /*german*/"der Kompaß des Geistertempels", /*french*/"la boussole du Temple de l'Esprit"), // /*spanish*/la brújula del Templo del Espíritu @@ -1125,8 +1309,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a sandy treasure tracker", /*german*/"ein sandiger Schatzfinder", /*french*/"un cherche-trésor sableux"), // /*spanish*/un zahorí arenoso - CustomMessage("a sandy magnetic needle", /*german*/"eine sandige Magnetnadel", /*french*/"une aimant sableux")}); + CustomMessage("a sandy magnetic needle", /*german*/"eine sandige Magnetnadel", /*french*/"une aimant sableux") // /*spanish*/un imán arenoso + }, + CustomMessage("Spirit Temple Compass", "Kompaß des Geistertempels", "Boussole due Temple de l'Esprit")); hintTextTable[RHT_SHADOW_TEMPLE_COMPASS] = HintText(CustomMessage("the Shadow Temple Compass", /*german*/"der Kompaß des Schattentempels", /*french*/"la boussole du Temple de l'Ombre"), // /*spanish*/la brújula del Templo de las Sombras @@ -1136,10 +1322,12 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a creepy treasure tracker", /*german*/"ein gruseliger Schatzfinder", /*french*/"un cherche-trésor sinistre"), // /*spanish*/un zahorí siniestra - CustomMessage("a creepy magnetic needle", /*german*/"eine gruselige Magnetnadel", /*french*/"une aimant sinistre")}); + CustomMessage("a creepy magnetic needle", /*german*/"eine gruselige Magnetnadel", /*french*/"une aimant sinistre") // /*spanish*/un imán siniestra + }, + CustomMessage("Shadow Temple Compass", "Kompaß des Schattentempels", "Boussole du Temple de l'Ombre")); - hintTextTable[RHT_BOTTOM_OF_THE_WELL_COMPASS] = HintText(CustomMessage("the Bottom of the Well Compass", /*german*/"der Kompaß des Grund des Brunnens", /*french*/"la boussole du fond du Puits"), + hintTextTable[RHT_BOTW_COMPASS] = HintText(CustomMessage("the Bottom of the Well Compass", /*german*/"der Kompaß des Grund des Brunnens", /*french*/"la boussole du fond du Puits"), // /*spanish*/la brújula del Fondo del pozo { CustomMessage("a compass", /*german*/"ein Kompaß", /*french*/"une boussole") @@ -1147,8 +1335,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a dank treasure tracker", /*german*/"ein feuchter Schatzfinder", /*french*/"un cherche-trésor moisi"), // /*spanish*/un zahorí mohoso - CustomMessage("a dank magnetic needle", /*german*/"eine feuchte Magnetnadel", /*french*/"une aimant moisi")}); + CustomMessage("a dank magnetic needle", /*german*/"eine feuchte Magnetnadel", /*french*/"une aimant moisi") // /*spanish*/un imán mohoso + }, + CustomMessage("Bottom of the Well Compass", "Kompaß des Grund des Brunnens", "Boussole du Puits")); hintTextTable[RHT_ICE_CAVERN_COMPASS] = HintText(CustomMessage("the Ice Cavern Compass", /*german*/"der Kompaß der Eishöhle", /*french*/"la Boussole de la Caverne Polaire"), // /*spanish*/la brújula de la Caverna de hielo @@ -1158,8 +1348,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a polar treasure tracker", /*german*/"ein polarer Schatzfinder", /*french*/"un cherche-trésor polaire"), // /*spanish*/un zahorí polar - CustomMessage("a polar magnetic needle", /*german*/"eine polare Magnetnadel", /*french*/"une aimant polaire")}); + CustomMessage("a polar magnetic needle", /*german*/"eine polare Magnetnadel", /*french*/"une aimant polaire") // /*spanish*/un imán polar + }, + CustomMessage("Ice Cavern Compass", "Kompaß der Eishöhle", "Boussole de la Caverne Polaire")); hintTextTable[RHT_FOREST_TEMPLE_BOSS_KEY] = HintText(CustomMessage("the Forest Temple Boss Key", /*german*/"der Waldtempel-Master-Schlüssel", /*french*/"la Clé d'Or du Temple de la Forêt"), // /*spanish*/la gran llave del Templo del Bosque @@ -1169,8 +1361,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a sylvan master of unlocking", /*german*/"ein waldiger Meister des Entschlüsselns", /*french*/"un anti-grosse porte sylvestre"), // /*spanish*/la clave enselvada de un jefe - CustomMessage("a sylvan dungeon's master pass", /*german*/"ein waldiger Dungeon-Meisterpass", /*french*/"une clé maléfique sylvestre")}); + CustomMessage("a sylvan dungeon's master pass", /*german*/"ein waldiger Dungeon-Meisterpass", /*french*/"une clé maléfique sylvestre") // /*spanish*/el pase maestro enselvado + }, + CustomMessage("Forest Temple Boss Key", "Master-Schlüssel des Waldtempels", "Clé d'Or du Temple de la Forêt")); hintTextTable[RHT_FIRE_TEMPLE_BOSS_KEY] = HintText(CustomMessage("the Fire Temple Boss Key", /*german*/"der Feuertempel-Master-Schlüssel", /*french*/"la Clé d'Or du Temple du Feu"), // /*spanish*/la gran llave del Templo del Fuego @@ -1180,8 +1374,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a molten master of unlocking", /*german*/"ein geschmolzener Meister des Entschlüsselns", /*french*/"un anti-grosse porte fondu"), // /*spanish*/la clave fundido de un jefe - CustomMessage("a molten dungeon's master pass", /*german*/"ein geschmolzener Dungeon-Meisterpass", /*french*/"une clé maléfique fondu")}); - // /*spanish*/el pase maestro fundido + CustomMessage("a molten dungeon's master pass", /*german*/"ein geschmolzener Dungeon-Meisterpass", /*french*/"une clé maléfique fondu") + // /*spanish*/el pase maestro fundido + }, + CustomMessage("Fire Temple Boss Key", "Master-Schlüssel des Feuertempels", "Clé d'Or du Temple du Feu")); hintTextTable[RHT_WATER_TEMPLE_BOSS_KEY] = HintText(CustomMessage("the Water Temple Boss Key", /*german*/"der Wassertempel-Master-Schlüssel", /*french*/"la Clé d'Or du Temple de l'Eau"), // /*spanish*/la gran llave del Templo del Agua @@ -1191,8 +1387,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a wet master of unlocking", /*german*/"ein nasser Meister des Entschlüsselns", /*french*/"un anti-grosse porte humide"), // /*spanish*/la clave mojado de un jefe - CustomMessage("a wet dungeon's master pass", /*german*/"ein nasser Dungeon-Meisterpass", /*french*/"une clé maléfique humide")}); + CustomMessage("a wet dungeon's master pass", /*german*/"ein nasser Dungeon-Meisterpass", /*french*/"une clé maléfique humide") // /*spanish*/el pase maestro mojado + }, + CustomMessage("Water Temple Boss Key", "Master-Schlüssel des Wassertempels", "Clé d'Or du Temple de l'Eau")); hintTextTable[RHT_SPIRIT_TEMPLE_BOSS_KEY] = HintText(CustomMessage("the Spirit Temple Boss Key", /*german*/"der Geistertempel-Master-Schlüssel", /*french*/"la Clé d'Or du Temple de l'Esprit"), // /*spanish*/la gran llave del Templo del Espíritu @@ -1202,8 +1400,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a sandy master of unlocking", /*german*/"ein sandiger Meister des Entschlüsselns", /*french*/"un anti-grosse porte sableux"), // /*spanish*/la clave arenoso de un jefe - CustomMessage("a sandy dungeon's master pass", /*german*/"ein sandiger Dungeon-Meisterpass", /*french*/"une clé maléfique sableux")}); + CustomMessage("a sandy dungeon's master pass", /*german*/"ein sandiger Dungeon-Meisterpass", /*french*/"une clé maléfique sableux") // /*spanish*/el pase maestro arenoso + }, + CustomMessage("Spirit Temple Boss Key", "Master-Schlüssel des Geistertempels", "Clé d'Or du Temple de l'Esprit")); hintTextTable[RHT_SHADOW_TEMPLE_BOSS_KEY] = HintText(CustomMessage("the Shadow Temple Boss Key", /*german*/"der Schattentempel-Master-Schlüssel", /*french*/"la Clé d'Or du Temple de l'Ombre"), // /*spanish*/la gran llave del Templo de las Sombras @@ -1213,8 +1413,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a creepy master of unlocking", /*german*/"ein gruseliger Meister des Entschlüsselns", /*french*/"un anti-grosse porte sinistre"), // /*spanish*/la clave siniestra de un jefe - CustomMessage("a creepy dungeon's master pass", /*german*/"ein gruseliger Dungeon-Meisterpass", /*french*/"une clé maléfique sinistre")}); + CustomMessage("a creepy dungeon's master pass", /*german*/"ein gruseliger Dungeon-Meisterpass", /*french*/"une clé maléfique sinistre") // /*spanish*/el pase maestro siniestra + }, + CustomMessage("Shadow Temple Boss Key", "Master-Schlüssel des Schattentempels", "Clé d'Or du Temple de l'Ombre")); hintTextTable[RHT_GANONS_CASTLE_BOSS_KEY] = HintText(CustomMessage("the Ganon's Castle Boss Key", /*german*/"der Master-Schlüssel für Ganons Schloß", /*french*/"la Clé d'Or du Château de Ganon"), // /*spanish*/la gran llave del Castillo de Ganon @@ -1224,8 +1426,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a final master of unlocking", /*german*/"ein finaler Meister des Entschlüsselns", /*french*/"un anti-grosse porte final"), // /*spanish*/la clave final de un jefe - CustomMessage("a final dungeon's master pass", /*german*/"ein finaler Dungeon-Meisterpass", /*french*/"une clé maléfique final")}); + CustomMessage("a final dungeon's master pass", /*german*/"ein finaler Dungeon-Meisterpass", /*french*/"une clé maléfique final") // /*spanish*/el pase maestro final + }, + CustomMessage("Ganon's Castle Boss Key", "Master-Schlüssel von Ganons Schloß", "Clé d'Or du Château de Ganon")); hintTextTable[RHT_FOREST_TEMPLE_SMALL_KEY] = HintText(CustomMessage("a Forest Temple Small Key", /*german*/"ein kleiner Waldtempel-Schlüssel", /*french*/"une petite clé du Temple de la Forêt"), // /*spanish*/una llave pequeña del Templo del Bosque @@ -1239,8 +1443,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase de una mazmorra enselvada CustomMessage("a sylvan lock remover", /*german*/"ein waldiger Schlossentferner", /*french*/"un efface-serrure sylvestre"), // /*spanish*/un destructor de cerraduras enselvada - CustomMessage("a sylvan lockpick", /*german*/"ein waldiger Dietrich", /*french*/"un crochet à porte sylvestre")}); + CustomMessage("a sylvan lockpick", /*german*/"ein waldiger Dietrich", /*french*/"un crochet à porte sylvestre") // /*spanish*/una apertura portentosa enselvada + }, + CustomMessage("Forest Temple Small Key", "Kleiner Schlüssel für den Waldtempel", "Petite Clé du Temple de la Forêt")); hintTextTable[RHT_FIRE_TEMPLE_SMALL_KEY] = HintText(CustomMessage("a Fire Temple Small Key", /*german*/"ein kleiner Feuertempel-Schlüssel", /*french*/"une petite clé du Temple du Feu"), // /*spanish*/una llave pequeña del Templo del Fuego @@ -1254,8 +1460,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase de una mazmorra fundida CustomMessage("a molten lock remover", /*german*/"ein geschmolzener Schlossentferner", /*french*/"un efface-serrure fondu"), // /*spanish*/un destructor de cerraduras fundida - CustomMessage("a molten lockpick", /*german*/"ein geschmolzener Dietrich", /*french*/"un crochet à porte fondu")}); - // /*spanish*/una apertura portentosa fundida + CustomMessage("a molten lockpick", /*german*/"ein geschmolzener Dietrich", /*french*/"un crochet à porte fondu") + // /*spanish*/una apertura portentosa fundida + }, + CustomMessage("Fire Temple Small Key", "Kleiner Schlüssel für den Feuertempel", "Petite Clé du Temple du Feu")); hintTextTable[RHT_WATER_TEMPLE_SMALL_KEY] = HintText(CustomMessage("a Water Temple Small Key", /*german*/"ein kleiner Wassertempel-Schlüssel", /*french*/"une petite clé du Temple de l'Eau"), // /*spanish*/una llave pequeña del Templo del Agua @@ -1269,8 +1477,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase de una mazmorra mojada CustomMessage("a wet lock remover", /*german*/"ein nasser Schlossentferner", /*french*/"un efface-serrure humide"), // /*spanish*/un destructor de cerraduras mojada - CustomMessage("a wet lockpick", /*german*/"ein nasser Dietrich", /*french*/"un crochet à porte humide")}); + CustomMessage("a wet lockpick", /*german*/"ein nasser Dietrich", /*french*/"un crochet à porte humide") // /*spanish*/una apertura portentosa mojada + }, + CustomMessage("Water Temple Small Key", "Kleiner Schlüssel für den Wassertempel", "Petite Clé du Temple de l'Eau")); hintTextTable[RHT_SPIRIT_TEMPLE_SMALL_KEY] = HintText(CustomMessage("a Spirit Temple Small Key", /*german*/"ein kleiner Geistertempel-Schlüssel", /*french*/"une petite clé du Temple de l'Esprit"), // /*spanish*/una llave pequeña del Templo del Espíritu @@ -1284,8 +1494,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase de una mazmorra arenosa CustomMessage("a sandy lock remover", /*german*/"ein sandiger Schlossentferner", /*french*/"un efface-serrure sableux"), // /*spanish*/un destructor de cerraduras arenosa - CustomMessage("a sandy lockpick", /*german*/"ein sandiger Dietrich", /*french*/"un crochet à porte sableux")}); + CustomMessage("a sandy lockpick", /*german*/"ein sandiger Dietrich", /*french*/"un crochet à porte sableux") // /*spanish*/una apertura portentosa arenosa + }, + CustomMessage("Spirit Temple Small Key", "Kleiner Schlüssel für den Geistertempel", "Petite Clé du Temple de l'Esprit")); hintTextTable[RHT_SHADOW_TEMPLE_SMALL_KEY] = HintText(CustomMessage("a Shadow Temple Small Key", /*german*/"ein kleiner Schattentempel-Schlüssel", /*french*/"une petite clé du Temple de l'Ombre"), // /*spanish*/una llave pequeña del Templo de las Sombras @@ -1299,10 +1511,12 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase de una mazmorra siniestra:a CustomMessage("a creepy lock remover", /*german*/"ein gruseliger Schlossentferner", /*french*/"un efface-serrure sinistre"), // /*spanish*/un destructor de cerraduras siniestra:a - CustomMessage("a creepy lockpick", /*german*/"ein gruseliger Dietrich", /*french*/"un crochet à porte sinistre")}); + CustomMessage("a creepy lockpick", /*german*/"ein gruseliger Dietrich", /*french*/"un crochet à porte sinistre") // /*spanish*/una apertura portentosa siniestra:a + }, + CustomMessage("Shadow Temple Small Key", "Petite Clé du Temple de l'Ombre", "Kleiner Schlüssel für den Schattentempel")); - hintTextTable[RHT_GERUDO_TRAINING_GROUND_SMALL_KEY] = HintText(CustomMessage("a Gerudo Training Ground Small Key", /*german*/"ein kleiner Schlüssel des Gerudo-Trainingsgeländes", /*french*/"une petite clé du Gymnase Gerudo"), + hintTextTable[RHT_GTG_SMALL_KEY] = HintText(CustomMessage("a Gerudo Training Ground Small Key", /*german*/"ein kleiner Schlüssel des Gerudo-Trainingsgeländes", /*french*/"une petite clé du Gymnase Gerudo"), // /*spanish*/una llave pequeña del Centro de Instrucción Gerudo { CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") @@ -1314,8 +1528,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase de una mazmorra laberíntica CustomMessage("a labyrinthian lock remover", /*german*/"ein labyrinthischer Schlossentferner", /*french*/"un efface-serrure labyrinthique"), // /*spanish*/un destructor de cerraduras laberíntica - CustomMessage("a labyrinthian lockpick", /*german*/"ein labyrinthischer Dietrich", /*french*/"un crochet à porte labyrinthique")}); + CustomMessage("a labyrinthian lockpick", /*german*/"ein labyrinthischer Dietrich", /*french*/"un crochet à porte labyrinthique") // /*spanish*/una apertura portentosa laberíntica + }, + CustomMessage("Training Ground Small Key", "Kleiner Schlüssel für das Gerudo-Trainingsgelände", "Petite Clé du Gymnase Gerudo")); hintTextTable[RHT_GERUDO_FORTRESS_SMALL_KEY] = HintText(CustomMessage("a Gerudo Fortress Small Key", /*german*/"ein kleiner Schlüssel für die Gerudo-Festung", /*french*/"une petite clé de la Repaire des Voleurs"), // /*spanish*/una llave pequeña de la Fortaleza Gerudo @@ -1329,10 +1545,12 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase de una mazmorra encarcelada CustomMessage("an imprisoned lock remover", /*german*/"ein gefangener Schlossentferner", /*french*/"un efface-serrure emprisonné"), // /*spanish*/un destructor de cerraduras encarcelada - CustomMessage("an imprisoned lockpick", /*german*/"ein gefangener Dietrich", /*french*/"un crochet à porte emprisonné")}); - // /*spanish*/una apertura portentosa encarcelada + CustomMessage("an imprisoned lockpick", /*german*/"ein gefangener Dietrich", /*french*/"un crochet à porte emprisonné") + // /*spanish*/una apertura portentosa encarcelada + }, + CustomMessage("Gerudo Fortress Small Key", "Kleiner Schlüssel für die Gerudo-Festung", "Petite Clé du Repaire des Voleurs")); - hintTextTable[RHT_BOTTOM_OF_THE_WELL_SMALL_KEY] = HintText(CustomMessage("a Bottom of the Well Small Key", /*german*/"ein kleiner Schlüssel des Grund des Brunnens", /*french*/"une petite clé du fond du Puits"), + hintTextTable[RHT_BOTW_SMALL_KEY] = HintText(CustomMessage("a Bottom of the Well Small Key", /*german*/"ein kleiner Schlüssel des Grund des Brunnens", /*french*/"une petite clé du fond du Puits"), // /*spanish*/una llave pequeña del Fondo del pozo { CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") @@ -1344,35 +1562,262 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase de una mazmorra mohosa CustomMessage("a moldy lock remover", /*german*/"ein schimmeliger Schlossentferner", /*french*/"un efface-serrure moisi"), // /*spanish*/un destructor de cerraduras mohosa - CustomMessage("a moldy lockpick", /*german*/"ein schimmeliger Dietrich", /*french*/"un crochet à porte moisi")}); - // /*spanish*/una apertura portentosa mohosa + CustomMessage("a moldy lockpick", /*german*/"ein schimmeliger Dietrich", /*french*/"un crochet à porte moisi") + // /*spanish*/una apertura portentosa mohosa + }, + CustomMessage("Bottom of the Well Small Key", "Kleiner Schlüssel für den Grund des Brunnens", "Petite Clé du Puits")); - hintTextTable[RHT_GANONS_CASTLE_SMALL_KEY] = HintText(CustomMessage("a Ganon's Castle Small Key", /*german*/"ein kleiner Schlüssel für Ganons Schloß", /*french*/"une petite clé du Château de Ganon"), - // /*spanish*/una llave pequeña del Castillo de Ganon - { - CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") - // /*spanish*/una llave pequeña - }, { - CustomMessage("a final tool for unlocking", /*german*/"ein finales Werkzeug zur Entschlüsselung", /*french*/"un anti-porte final"), - // /*spanish*/una clave de una entrada final - CustomMessage("a final dungeon pass", /*german*/"ein finaler Dungeon-Pass", /*french*/"le rêve final d'un prisonnier"), - // /*spanish*/un pase de una mazmorra final - CustomMessage("a final lock remover", /*german*/"ein finaler Schlossentferner", /*french*/"un efface-serrure final"), - // /*spanish*/un destructor de cerraduras final - CustomMessage("a final lockpick", /*german*/"ein finaler Dietrich", /*french*/"un crochet à porte final")}); - // /*spanish*/una apertura portentosa final - hintTextTable[RHT_OVERWORLD_KEY] = HintText(CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld"), - // /*spanish*/una llave del mundo exterior + hintTextTable[RHT_GANONS_CASTLE_SMALL_KEY] = HintText(CustomMessage("a Ganon's Castle Small Key", /*german*/"ein kleiner Schlüssel für Ganons Schloß", /*french*/"une petite clé du Château de Ganon"), + // /*spanish*/una llave pequeña del Castillo de Ganon + { + CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") + // /*spanish*/una llave pequeña + }, { + CustomMessage("a final tool for unlocking", /*german*/"ein finales Werkzeug zur Entschlüsselung", /*french*/"un anti-porte final"), + // /*spanish*/una clave de una entrada final + CustomMessage("a final dungeon pass", /*german*/"ein finaler Dungeon-Pass", /*french*/"le rêve final d'un prisonnier"), + // /*spanish*/un pase de una mazmorra final + CustomMessage("a final lock remover", /*german*/"ein finaler Schlossentferner", /*french*/"un efface-serrure final"), + // /*spanish*/un destructor de cerraduras final + CustomMessage("a final lockpick", /*german*/"ein finaler Dietrich", /*french*/"un crochet à porte final") + // /*spanish*/una apertura portentosa final + }, + CustomMessage("Ganon's Castle Small Key", "Kleiner Schlüssel für Ganons Schloß", "Petite Clé du Château de Ganon")); + + + hintTextTable[RHT_TCG_SMALL_KEY] = HintText(CustomMessage("a Treasure Chest Shop Small Key", /*german*/"ein kleiner Schlüssel des Schatztruhenladens", /*french*/"une petite clé de la chasse aux trésors"), + // /*spanish*/una llave pequeña del Cofre del Tesoro + { + CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") + // /*spanish*/una llave pequeña + }, { + CustomMessage("a gambler's tool for unlocking", /*german*/"ein Spieler-Werkzeug zur Entschlüsselung", /*french*/"un anti-porte de parieur"), + // /*spanish*/una clave de un juego de azar + CustomMessage("a gambler's dungeon pass", /*german*/"ein Spieler-Dungeon-Pass", /*french*/"le rêve d'un prisonnier parieur"), + // /*spanish*/un pase de un juego de azar + CustomMessage("a gambler's lock remover", /*german*/"ein Spieler-Schlossentferner", /*french*/"un efface-serrure de parieur"), + // /*spanish*/un destructor de cerraduras del juego de azar + CustomMessage("a gambler's lockpick", /*german*/"ein Spieler-Dietrich", /*french*/"un crochet à serrure de parieur") + // /*spanish*/una apertura portentosa del juego de azar + }, + CustomMessage("Chest Game Small Key", "Kleiner Schlüssel für das Truhenspiel", "Petite Clé du jeu la Chasse-aux-Trésors")); + + hintTextTable[RHT_GUARD_HOUSE_KEY] = HintText(CustomMessage("the Guard House's key"), { - CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") - // /*spanish*/una llave + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior }, { - CustomMessage("a key to the world", /*german*/"ein Schlüssel zur Welt", /*french*/"une clé du monde"), - // /*spanish*/una llave al mundo - CustomMessage("a key to the kingdom", /*german*/"ein Schlüssel zum Königreich", /*french*/"une clé du royaume"), - // /*spanish*/una llave al reino - CustomMessage("a key to the universe", /*german*/"ein Schlüssel zum Universum", /*french*/"une clé de l'univers")}); - // /*spanish*/una llave al universo + CustomMessage("a key to pots", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Guard House Key", "Schlüssel für das Haus der Wachen", "!!!")); + + hintTextTable[RHT_MARKET_BAZAAR_KEY] = HintText(CustomMessage("Market Bazaar's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("a child's shopping key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Market Bazaar Key", "Schlüssel für den Basar des Marktes", "")); + + hintTextTable[RHT_MARKET_POTION_SHOP_KEY] = HintText(CustomMessage("the Market Potion Shop's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("past potion's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Market Potion Shop Key", "Schlüssel für den Magie-Laden des Marktes", "")); + + hintTextTable[RHT_MASK_SHOP_KEY] = HintText(CustomMessage("the Mask Shop's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the masqurade's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Mask Shop Key", "Schlüssel für den Maskenladen", "")); + + hintTextTable[RHT_MARKET_SHOOTING_KEY] = HintText(CustomMessage("Market Shooting Gallery's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the slingshot range's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Market Shooting Gallery Key", "Schlüssel für die Schießbude des Marktes", "")); + + hintTextTable[RHT_BOMBCHU_BOWLING_KEY] = HintText(CustomMessage("Bombchu Bowling's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("mouse golf's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Bombchu Bowling Alley Key", "Schlüssel für die Minenbowlingbahn", "")); + + hintTextTable[RHT_TCG_BUILDING_KEY] = HintText(CustomMessage("Treasure Chest Game Building's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the gambling game's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Treasure Chest Game Building Key", "Schlüssel für das Haus des Schatzkisten-Pokers", "")); + + hintTextTable[RHT_BOMBCHU_SHOP_KEY] = HintText(CustomMessage("the Bombchu Shop's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("a mouse merchant's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Bombchu Shop Key", "Schlüssel für den Krabbelminenladen", "")); + + hintTextTable[RHT_RICHARDS_HOUSE_KEY] = HintText(CustomMessage("Richard's House Key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("a lost puppy's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Richard's House Key", "Schlüssel für das Haus von Richard", "")); + + hintTextTable[RHT_ALLEY_HOUSE_KEY] = HintText(CustomMessage("the Alley House's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("a townhouse's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Alley House Key", "Schlüssel für das Gäßchenhaus", "")); + + hintTextTable[RHT_KAK_BAZAAR_KEY] = HintText(CustomMessage("Kakariko Bazaar's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("adult's shopping key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Kakariko Bazaar Key", "Schlüssel für den Basar von Kakariko", "")); + + hintTextTable[RHT_KAK_POTION_SHOP_KEY] = HintText(CustomMessage("the Kakariko Potion Shop's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("future's potion key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Kakariko Potion Shop Key", "Schlüssel für den Magie-Laden von Kakariko", "")); + + hintTextTable[RHT_BOSS_HOUSE_KEY] = HintText(CustomMessage("the Boss's House's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the carpenter's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Boss's House Key", "Schlüssel für das Haus des Chefs", "")); + + hintTextTable[RHT_GRANNYS_POTION_SHOP_KEY] = HintText(CustomMessage("Granny's Potion Shop's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the old woman's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Granny's Potion Shop Key", "Schlüssel für Asas Hexenladen", "")); + + hintTextTable[RHT_SKULLTULA_HOUSE_KEY] = HintText(CustomMessage("the Skulltula House's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the cursed place's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Skulltula House Key", "Schlüssel für das Skulltula-Haus", "")); + + hintTextTable[RHT_IMPAS_HOUSE_KEY] = HintText(CustomMessage("Impa's House's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the Shadow Sage's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Impa's House Key", "Schlüssel für das Haus von Impa", "")); + + hintTextTable[RHT_WINDMILL_KEY] = HintText(CustomMessage("the Windmill's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the pinwheel's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Windmill Key", "Schlüssel für die Windmühle", "")); + + hintTextTable[RHT_KAK_SHOOTING_KEY] = HintText(CustomMessage("Kakariko Shooting Gallery's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the archery range's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Kakariko Shooting Gallery Key", "Schlüssel für die Schießbude von Kakariko", "")); + + hintTextTable[RHT_DAMPES_HUT_KEY] = HintText(CustomMessage("Dampe's Hut's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the small hut's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Dampe's Hut Key", "Schlüssel für die Hütte von Boris", "")); + + hintTextTable[RHT_TALONS_HOUSE_KEY] = HintText(CustomMessage("Talon's House's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the layabout's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Talon's House Key", "Schlüssel für das Haus von Talon", "")); + + hintTextTable[RHT_STABLES_KEY] = HintText(CustomMessage("the Stables' key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the key to the farm", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Stables Key", "Schlüssel für die Ställe", "")); + + hintTextTable[RHT_BACK_TOWER_KEY] = HintText(CustomMessage("the Back Tower's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the cowshed's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Back Tower Key", "Schlüssel für den hinteren Turm", "")); + + hintTextTable[RHT_HYLIA_LAB_KEY] = HintText(CustomMessage("the Hylia Laboratory's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the key to science", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Hylia Laboratory Key", "Schlüssel für das Hylia-Labor", "")); + + hintTextTable[RHT_FISHING_HOLE_KEY] = HintText(CustomMessage("the Fishing Hole's key"), + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the fisherman's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Fishing Hole Key", "Schlüssel für den Fischweiher", "")); + hintTextTable[RHT_FOREST_TEMPLE_KEY_RING] = HintText(CustomMessage("a Forest Temple Key Ring", /*german*/"ein Schlüsselbund des Waldtempels", /*french*/"un trousseau de clés du Temple de la Forêt"), // /*spanish*/un llavero del Templo del Bosque { @@ -1385,8 +1830,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase vip de mazmorras silvestre CustomMessage("a sylvan jingling ring", /*german*/"ein waldiger Multifunktionsschlüssel", /*french*/"des efface-serrures sylvestres"), // /*spanish*/una cadena multiusos silvestre - CustomMessage("a sylvan skeleton key", /*german*/"ein waldiger Skelettschlüssel", /*french*/"des crochets à porte sylvestres")}); + CustomMessage("a sylvan skeleton key", /*german*/"ein waldiger Skelettschlüssel", /*french*/"des crochets à porte sylvestres") // /*spanish*/un anillo silvestre contra cerrojos + }, + CustomMessage("Forest Temple Key Ring", "Schlüsselbund für den Waldtempel", "Trousseau du Temple de la Forêt")); hintTextTable[RHT_FIRE_TEMPLE_KEY_RING] = HintText(CustomMessage("a Fire Temple Key Ring", /*german*/"ein Schlüsselbund des Feuertempels", /*french*/"un trousseau de clés du Temple du Feu"), // /*spanish*/un llavero del Templo del Fuego @@ -1400,8 +1847,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase vip de mazmorras fundido CustomMessage("a molten jingling ring", /*german*/"ein geschmolzener Multifunktionsschlüssel", /*french*/"des efface-serrures fondus"), // /*spanish*/una cadena multiusos fundida - CustomMessage("a molten skeleton key", /*german*/"ein geschmolzener Skelettschlüssel", /*french*/"des crochets à porte fondus")}); - // /*spanish*/un anillo fundido contra cerrojos + CustomMessage("a molten skeleton key", /*german*/"ein geschmolzener Skelettschlüssel", /*french*/"des crochets à porte fondus") + // /*spanish*/un anillo fundido contra cerrojos + }, + CustomMessage("Fire Temple Key Ring", "Schlüsselbund für den Feuertempel", "Trousseau du Temple du Feu")); hintTextTable[RHT_WATER_TEMPLE_KEY_RING] = HintText(CustomMessage("a Water Temple Key Ring", /*german*/"ein Schlüsselbund des Wassertempels", /*french*/"un trousseau de clés du Temple de l'Eau"), // /*spanish*/un llavero del Templo del Agua @@ -1415,8 +1864,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase vip de mazmorras abisal CustomMessage("a wet jingling ring", /*german*/"ein nasser Multifunktionsschlüssel", /*french*/"des efface-serrures humides"), // /*spanish*/una cadena multiusos abisal - CustomMessage("a wet skeleton key", /*german*/"ein nasser Skelettschlüssel", /*french*/"des crochets à porte humides")}); + CustomMessage("a wet skeleton key", /*german*/"ein nasser Skelettschlüssel", /*french*/"des crochets à porte humides") // /*spanish*/un anillo abisal contra cerrojos + }, + CustomMessage("Water Temple Key Ring", "Schlüsselbund für den Wassertempel", "Trousseau du Temple de l'Eau")); hintTextTable[RHT_SPIRIT_TEMPLE_KEY_RING] = HintText(CustomMessage("a Spirit Temple Key Ring", /*german*/"ein Schlüsselbund des Geistertempels", /*french*/"un trousseau de clés du Temple de l'Esprit"), // /*spanish*/un llavero del Templo del Espíritu @@ -1430,8 +1881,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase vip de mazmorras arenoso CustomMessage("a sandy jingling ring", /*german*/"ein sandiger Multifunktionsschlüssel", /*french*/"des efface-serrures sableux"), // /*spanish*/una cadena multiusos arenosa - CustomMessage("a sandy skeleton key", /*german*/"ein sandiger Skelettschlüssel", /*french*/"des crochets à porte sableux")}); + CustomMessage("a sandy skeleton key", /*german*/"ein sandiger Skelettschlüssel", /*french*/"des crochets à porte sableux") // /*spanish*/un anillo arenoso contra cerrojos + }, + CustomMessage("Spirit Temple Key Ring", "Schlüsselbund für den Geistertempel", "Trousseau du Temple de l'Esprit")); hintTextTable[RHT_SHADOW_TEMPLE_KEY_RING] = HintText(CustomMessage("a Shadow Temple Key Ring", /*german*/"ein Schlüsselbund des Schattentempels", /*french*/"un trousseau de clés du Temple de l'Ombre"), // /*spanish*/un llavero del Templo de las Sombras @@ -1445,10 +1898,12 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase vip de mazmorras tenebroso CustomMessage("a creepy jingling ring", /*german*/"ein gruseliger Multifunktionsschlüssel", /*french*/"des efface-serrures sinistres"), // /*spanish*/una cadena multiusos tenebrosa - CustomMessage("a creepy skeleton key", /*german*/"ein gruseliger Skelettschlüssel", /*french*/"des crochets à porte sinistres")}); + CustomMessage("a creepy skeleton key", /*german*/"ein gruseliger Skelettschlüssel", /*french*/"des crochets à porte sinistres") // /*spanish*/un anillo tenebroso contra cerrojos + }, + CustomMessage("Shadow Temple Key Ring", "Schlüsselbund für den Schattentempel", "Trousseau du Temple de l'Ombre")); - hintTextTable[RHT_GERUDO_TRAINING_GROUND_KEY_RING] = HintText(CustomMessage("a Gerudo Training Ground Key Ring", /*german*/"ein Schlüsselbund des Gerudo-Trainingsgeländes", /*french*/"un trousseau de clés du Gymnase Gerudo"), + hintTextTable[RHT_GTG_KEY_RING] = HintText(CustomMessage("a Gerudo Training Ground Key Ring", /*german*/"ein Schlüsselbund des Gerudo-Trainingsgeländes", /*french*/"un trousseau de clés du Gymnase Gerudo"), // /*spanish*/un llavero del Centro de Instrucción Gerudo { CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") @@ -1460,8 +1915,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase vip de mazmorras laberíntico CustomMessage("a labyrinthian jingling ring", /*german*/"ein labyrinthischer Multifunktionsschlüssel", /*french*/"des efface-serrures labyrinthiques"), // /*spanish*/una cadena multiusos laberíntica - CustomMessage("a labyrinthian skeleton key", /*german*/"ein labyrinthischer Skelettschlüssel", /*french*/"des crochets à porte labyrinthiques")}); + CustomMessage("a labyrinthian skeleton key", /*german*/"ein labyrinthischer Skelettschlüssel", /*french*/"des crochets à porte labyrinthiques") // /*spanish*/un anillo laberíntico contra cerrojos + }, + CustomMessage("Training Ground Key Ring", "Schlüsselbund für das Gerudo-Trainingsgelände", "Trousseau du Gymnase Gerudo")); hintTextTable[RHT_GERUDO_FORTRESS_KEY_RING] = HintText(CustomMessage("a Gerudo Fortress Key Ring", /*german*/"ein Schlüsselbund der Gerudo-Festung", /*french*/"un trousseau de clés de la Repaire des Voleurs"), // /*spanish*/un llavero de la Fortaleza Gerudo @@ -1475,10 +1932,12 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase vip de una mazmorra enjaulado CustomMessage("an imprisoned jingling ring", /*german*/"ein gefangener Multifunktionsschlüssel", /*french*/"des efface-serrures emprisonnés"), // /*spanish*/una cadena multiusos enjaulada - CustomMessage("an imprisoned skeleton key", /*german*/"ein gefangener Skelettschlüssel", /*french*/"des crochets à porte emprisonnés")}); + CustomMessage("an imprisoned skeleton key", /*german*/"ein gefangener Skelettschlüssel", /*french*/"des crochets à porte emprisonnés") // /*spanish*/un anillo enjaulado contra cerrojos + }, + CustomMessage("Gerudo Fortress Key Ring", "Schlüsselbund für die Gerudo-Festung", "Trousseau du Repaire des Voleurs")); - hintTextTable[RHT_BOTTOM_OF_THE_WELL_KEY_RING] = HintText(CustomMessage("a Bottom of the Well Key Ring", /*german*/"ein Schlüsselbund des Grund des Brunnens", /*french*/"un trousseau de clés du fond du Puits"), + hintTextTable[RHT_BOTW_KEY_RING] = HintText(CustomMessage("a Bottom of the Well Key Ring", /*german*/"ein Schlüsselbund des Grund des Brunnens", /*french*/"un trousseau de clés du fond du Puits"), // /*spanish*/un llavero del Fondo del pozo { CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") @@ -1490,8 +1949,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase vip de una mazmorra subterráneo CustomMessage("a moldy jingling ring", /*german*/"ein schimmeliger Multifunktionsschlüssel", /*french*/"des efface-serrures moisis"), // /*spanish*/una cadena multiusos subterránea - CustomMessage("a moldy skeleton key", /*german*/"ein schimmeliger Skelettschlüssel", /*french*/"des crochets à porte moisis")}); + CustomMessage("a moldy skeleton key", /*german*/"ein schimmeliger Skelettschlüssel", /*french*/"des crochets à porte moisis") // /*spanish*/un anillo subterráneo contra cerrojos + }, + CustomMessage("Bottom of the Well Key Ring", "Schlüsselbund für den Grund des Brunnens", "Trousseau du Puits")); hintTextTable[RHT_GANONS_CASTLE_KEY_RING] = HintText(CustomMessage("a Ganon's Castle Key Ring", /*german*/"ein Schlüsselbund von Ganons Schloß", /*french*/"un trousseau de clés du Château de Ganon"), // /*spanish*/un llavero del Castillo de Ganon @@ -1505,25 +1966,12 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un pase vip de una mazmorra decisivo CustomMessage("a final jingling ring", /*german*/"ein finaler Multifunktionsschlüssel", /*french*/"des efface-serrures finaux"), // /*spanish*/una cadena multiusos decisiva - CustomMessage("a final skeleton key", /*german*/"ein finaler Skelettschlüssel", /*french*/"des crochets à porte finaux")}); + CustomMessage("a final skeleton key", /*german*/"ein finaler Skelettschlüssel", /*french*/"des crochets à porte finaux") // /*spanish*/un anillo decisivo multiusos + }, + CustomMessage("Ganon's Castle Key Ring", "Schlüsselbund für Ganons Schloß", "Trousseau du Château de Ganon")); - hintTextTable[RHT_TREASURE_GAME_SMALL_KEY] = HintText(CustomMessage("a Treasure Chest Shop Small Key", /*german*/"ein kleiner Schlüssel des Schatztruhenladens", /*french*/"une petite clé de la chasse aux trésors"), - // /*spanish*/una llave pequeña del Cofre del Tesoro - { - CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") - // /*spanish*/una llave pequeña - }, { - CustomMessage("a gambler's tool for unlocking", /*german*/"ein Spieler-Werkzeug zur Entschlüsselung", /*french*/"un anti-porte de parieur"), - // /*spanish*/una clave de un juego de azar - CustomMessage("a gambler's dungeon pass", /*german*/"ein Spieler-Dungeon-Pass", /*french*/"le rêve d'un prisonnier parieur"), - // /*spanish*/un pase de un juego de azar - CustomMessage("a gambler's lock remover", /*german*/"ein Spieler-Schlossentferner", /*french*/"un efface-serrure de parieur"), - // /*spanish*/un destructor de cerraduras del juego de azar - CustomMessage("a gambler's lockpick", /*german*/"ein Spieler-Dietrich", /*french*/"un crochet à serrure de parieur")}); - // /*spanish*/una apertura portentosa del juego de azar - - hintTextTable[RHT_TREASURE_GAME_KEY_RING] = HintText(CustomMessage("a Chest Game Key Ring"), + hintTextTable[RHT_TCG_KEY_RING] = HintText(CustomMessage("a Chest Game Key Ring"), { CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") // /*spanish*/un llavero @@ -1531,7 +1979,9 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a gambler's toolbox for unlocking"), CustomMessage("a gambler's season pass"), CustomMessage("a gambler's jingling ring"), - CustomMessage("a gambler's skeleton key")}); + CustomMessage("a gambler's skeleton key") + }, + CustomMessage("Chest Game Key Ring", "Trousseau du jeu la Chasse-aux-Trésors", "Schlüsselbund für das Truhenspiel")); hintTextTable[RHT_KOKIRI_EMERALD] = HintText(CustomMessage("the Kokiri Emerald", /*german*/"der Kokiri-Smaragd", /*french*/"l'Émeraude Kokiri"), // /*spanish*/la Esmeralda de los Kokiri @@ -1541,8 +1991,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a green stone", /*german*/"ein grüner Stein", /*french*/"une pierre verte"), // /*spanish*/una piedra verde - CustomMessage("a gift before death", /*german*/"ein Geschenk vor dem Tod", /*french*/"le dernier souffle d'un arbre")}); + CustomMessage("a gift before death", /*german*/"ein Geschenk vor dem Tod", /*french*/"le dernier souffle d'un arbre") // /*spanish*/un obsequio testamentario + }, + CustomMessage("Kokiri's Emerald", "Kokiri-Smaragd", "Émeraude Kokiri")); hintTextTable[RHT_GORON_RUBY] = HintText(CustomMessage("the Goron Ruby", /*german*/"der Goronen-Rubin", /*french*/"le Rubis Goron"), // /*spanish*/el Rubí de los Goron @@ -1552,8 +2004,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a red stone", /*german*/"ein roter Stein", /*french*/"une pierre rouge"), // /*spanish*/una piedra carmín - CustomMessage("sworn brotherhood", /*german*/"verschworene Bruderschaft", /*french*/"un serment de fraternité")}); + CustomMessage("sworn brotherhood", /*german*/"verschworene Bruderschaft", /*french*/"un serment de fraternité") // /*spanish*/el juramento de hermanos de sangre + }, + CustomMessage("Goron's Ruby", "Goronen-Rubin", "Rubis Goron")); hintTextTable[RHT_ZORA_SAPPHIRE] = HintText(CustomMessage("the Zora Sapphire", /*german*/"der Zora-Saphir", /*french*/"le Saphir Zora"), // /*spanish*/el Zafiro de los Zora @@ -1563,8 +2017,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a blue stone", /*german*/"ein blauer Stein", /*french*/"une pierre bleue"), // /*spanish*/una piedra celeste - CustomMessage("an engagement gift", /*german*/"ein Verlobungsgeschenk", /*french*/"un cadeau de mariage")}); + CustomMessage("an engagement gift", /*german*/"ein Verlobungsgeschenk", /*french*/"un cadeau de mariage") + }, // /*spanish*/un regalo de compromiso + CustomMessage("Zora's Sapphire", "Zora-Saphir", "Saphir Zora")); hintTextTable[RHT_FOREST_MEDALLION] = HintText(CustomMessage("the Forest Medallion", /*german*/"Amulett des Waldes", /*french*/"le Médaillon de la Forêt"), // /*spanish*/el Medallón del Bosque @@ -1574,8 +2030,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a green coin", /*german*/"eine grüne Münze", /*french*/"une pièce verte"), // /*spanish*/una moneda esmeralda - CustomMessage("Saria's friendship", /*german*/"Salias Freundschaft", /*french*/"l'amitié de Saria")}); + CustomMessage("Saria's friendship", /*german*/"Salias Freundschaft", /*french*/"l'amitié de Saria") // /*spanish*/la amistad de Saria + }, + CustomMessage("Forest Medallion", "Amulett des Waldes", "Médaillon de la Forêt")); hintTextTable[RHT_FIRE_MEDALLION] = HintText(CustomMessage("the Fire Medallion", /*german*/"Amulett des Feuers", /*french*/"le Médaillon du Feu"), // /*spanish*/el Medallón del Fuego @@ -1585,8 +2043,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a red coin", /*german*/"eine rote Münze", /*french*/"une pièce rouge"), // /*spanish*/una moneda rubí - CustomMessage("Darunia's power", /*german*/"Darunias Kraft", /*french*/"la fraternité de Darunia")}); + CustomMessage("Darunia's power", /*german*/"Darunias Kraft", /*french*/"la fraternité de Darunia") // /*spanish*/la fraternidad de Darunia + }, + CustomMessage("Fire Medallion", "Amulett des Feuers", "Médaillon du Feu")); hintTextTable[RHT_WATER_MEDALLION] = HintText(CustomMessage("the Water Medallion", /*german*/"Amulett des Wassers", /*french*/"le Médaillon de l'Eau"), // /*spanish*/el Medallón del Agua @@ -1596,8 +2056,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a blue coin", /*german*/"eine blaue Münze", /*french*/"une pièce bleue"), // /*spanish*/una moneda zafiro - CustomMessage("Ruto's power", /*german*/"Rutos Macht", /*french*/"l'amour de Ruto")}); + CustomMessage("Ruto's power", /*german*/"Rutos Macht", /*french*/"l'amour de Ruto") // /*spanish*/el amor de Ruto + }, + CustomMessage("Water Medallion", "Amulett des Wassers", "Médaillon de l'Eau")); hintTextTable[RHT_SPIRIT_MEDALLION] = HintText(CustomMessage("the Spirit Medallion", /*german*/"Amulett der Geister", /*french*/"le Médaillon de l'Esprit"), // /*spanish*/el Medallón del Espíritu @@ -1607,8 +2069,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("an orange coin", /*german*/"eine orange Münze", /*french*/"une pièce orange"), // /*spanish*/una moneda ámbar - CustomMessage("Nabooru's power", /*german*/"Naborus Macht", /*french*/"le respect de Nabooru")}); + CustomMessage("Nabooru's power", /*german*/"Naborus Macht", /*french*/"le respect de Nabooru") // /*spanish*/el respeto de Nabooru + }, + CustomMessage("Spirit Medallion", "Amulett der Geister", "Médaillon de l'Esprit")); hintTextTable[RHT_SHADOW_MEDALLION] = HintText(CustomMessage("the Shadow Medallion", /*german*/"Amulett des Schattens", /*french*/"le Médaillon de l'Ombre"), // /*spanish*/el Medallón de la Sombra @@ -1618,8 +2082,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a purple coin", /*german*/"eine violette Münze", /*french*/"une pièce pourpre"), // /*spanish*/una moneda malva - CustomMessage("Impa's power", /*german*/"Impas Macht", /*french*/"la confiance d'Impa")}); + CustomMessage("Impa's power", /*german*/"Impas Macht", /*french*/"la confiance d'Impa") // /*spanish*/la confianza de Impa + }, + CustomMessage("Shadow Medallion", "Amulett des Schattens", "Médaillon de l'Ombre")); hintTextTable[RHT_LIGHT_MEDALLION] = HintText(CustomMessage("the Light Medallion", /*german*/"Amulett des Lichts", /*french*/"le Médaillon de la Lumière"), // /*spanish*/el Medallón de la Luz @@ -1629,8 +2095,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a yellow coin", /*german*/"eine gelbe Münze", /*french*/"une pièce jaune"), // /*spanish*/una moneda resplandeciente - CustomMessage("Rauru's power", /*german*/"Raurus Macht", /*french*/"la foi de Rauru")}); + CustomMessage("Rauru's power", /*german*/"Raurus Macht", /*french*/"la foi de Rauru") // /*spanish*/la fe de Rauru + }, + CustomMessage("Light Medallion", "Amulett des Lichts", "Médaillon de la Lumière")); hintTextTable[RHT_RECOVERY_HEART] = HintText(CustomMessage("a Recovery Heart", /*german*/"ein Herz", /*french*/"un coeur de vie"), // /*spanish*/un corazón @@ -1642,8 +2110,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una cura de regalo CustomMessage("a hearty meal", /*german*/"ein herzhaftes Mahl", /*french*/"un petit amour"), // /*spanish*/una sanación romántica - CustomMessage("a Band-Aid", /*german*/"ein Wundpflaster", /*french*/"un diachylon")}); + CustomMessage("a Band-Aid", /*german*/"ein Wundpflaster", /*french*/"un diachylon") // /*spanish*/un corazoncito sanador + }, + CustomMessage("Recovery Heart", "Herz", "Coeur de Vie")); hintTextTable[RHT_GREEN_RUPEE] = HintText(CustomMessage("a Green Rupee", /*german*/"ein grüner Rubin", /*french*/"un rubis vert"), // /*spanish*/una rupia verde @@ -1655,8 +2125,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una singular moneda CustomMessage("a penny", /*german*/"ein Pfennig", /*french*/"un sou"), // /*spanish*/un peso hyliano - CustomMessage("a green gem", /*german*/"ein grüner Edelstein", /*french*/"un joyau vert")}); + CustomMessage("a green gem", /*german*/"ein grüner Edelstein", /*french*/"un joyau vert") // /*spanish*/una gema verde + }, + CustomMessage("Green Rupee", "Grüner Rubin", "Rubis Vert")); hintTextTable[RHT_GREG_RUPEE] = HintText(CustomMessage("Greg", /*german*/"Greg", /*french*/"Greg"), // /*spanish*/Greg @@ -1666,8 +2138,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("an old friend", /*german*/"ein alter Freund", /*french*/"Greg"), // /*spanish*/Greg - CustomMessage("a glorious gem", /*german*/"ein glorioser Edelstein", /*french*/"Greg")}); + CustomMessage("a glorious gem", /*german*/"ein glorioser Edelstein", /*french*/"Greg") // /*spanish*/Greg + }, + CustomMessage("Greg the Green Rupee", "Greg Rubin", "Rubis Greg")); hintTextTable[RHT_BLUE_RUPEE] = HintText(CustomMessage("a Blue Rupee", /*german*/"ein blauer Rubin", /*french*/"un rubis bleu"), // /*spanish*/una rupia azul @@ -1677,8 +2151,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a common coin", /*german*/"eine gewöhnliche Münze", /*french*/"quelques sous"), // /*spanish*/una moneda usual - CustomMessage("a blue gem", /*german*/"ein blauer Edelstein", /*french*/"un joyau bleu")}); + CustomMessage("a blue gem", /*german*/"ein blauer Edelstein", /*french*/"un joyau bleu") // /*spanish*/una gema azul + }, + CustomMessage("Blue Rupee", "Blauer Rubin", "Rubis Bleu")); hintTextTable[RHT_RED_RUPEE] = HintText(CustomMessage("a Red Rupee", /*german*/"ein roter Rubin", /*french*/"un rubis rouge"), // /*spanish*/una rupia roja @@ -1688,8 +2164,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("couch cash", /*german*/"ein wenig Zaster", /*french*/"un peu de fric"), // /*spanish*/una buena moneda - CustomMessage("a red gem", /*german*/"ein roter Edelstein", /*french*/"un joyau rouge")}); + CustomMessage("a red gem", /*german*/"ein roter Edelstein", /*french*/"un joyau rouge") // /*spanish*/una gema roja + }, + CustomMessage("Red Rupee", "Roter Rubin", "Rubis Rouge")); hintTextTable[RHT_PURPLE_RUPEE] = HintText(CustomMessage("a Purple Rupee", /*german*/"ein violetter Rubin", /*french*/"un rubis pourpre"), // /*spanish*/una rupia morada @@ -1701,8 +2179,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/plata de calidad CustomMessage("a purple gem", /*german*/"ein violetter Edelstein", /*french*/"un joyau mauve"), // /*spanish*/una gema morada - CustomMessage("wealth", /*german*/"Wohlstand", /*french*/"la richesse")}); + CustomMessage("wealth", /*german*/"Wohlstand", /*french*/"la richesse") // /*spanish*/una buena riqueza + }, + CustomMessage("Purple Rupee", "Violetter Rubin", "Rubis Pourpre")); hintTextTable[RHT_HUGE_RUPEE] = HintText(CustomMessage("a Huge Rupee", /*german*/"ein riesiger Rubin", /*french*/"un énorme rubis"), // /*spanish*/una rupia gigante @@ -1716,8 +2196,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/una gema amarilla CustomMessage("a giant gem", /*german*/"ein riesiger Edelstein", /*french*/"un gros joyau"), // /*spanish*/una gema descomunal - CustomMessage("great wealth", /*german*/"großer Wohlstand", /*french*/"l'aisance financière")}); + CustomMessage("great wealth", /*german*/"großer Wohlstand", /*french*/"l'aisance financière") // /*spanish*/dinero a caudales + }, + CustomMessage("Huge Rupee", "Riesiger Rubin", "Énorme Rubis")); hintTextTable[RHT_PIECE_OF_HEART] = HintText(CustomMessage("a Piece of Heart", /*german*/"ein Herzteil", /*french*/"un Quart de Coeur"), // /*spanish*/una pieza de corazón @@ -1727,8 +2209,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a little love", /*german*/"ein wenig Liebe", /*french*/"un peu plus d'amour"), // /*spanish*/un cuarto de amor - CustomMessage("a broken heart", /*german*/"ein gebrochenes Herz", /*french*/"un coeur brisé")}); + CustomMessage("a broken heart", /*german*/"ein gebrochenes Herz", /*french*/"un coeur brisé") // /*spanish*/un corazón roto + }, + CustomMessage("Piece of Heart", "Herzstück", "Quart de Coeur")); hintTextTable[RHT_HEART_CONTAINER] = HintText(CustomMessage("a Heart Container", /*german*/"ein Herzcontainer", /*french*/"un Réceptacle de Coeur"), // /*spanish*/un contenedor de corazón @@ -1740,8 +2224,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/amor por doquier CustomMessage("a Valentine's gift", /*german*/"ein Valentinsgeschenk", /*french*/"un cadeau de Saint-Valentin"), // /*spanish*/un contenedor de afección - CustomMessage("a boss's organ", /*german*/"ein monströses Organ", /*french*/"un organe de monstre")}); + CustomMessage("a boss's organ", /*german*/"ein monströses Organ", /*french*/"un organe de monstre") // /*spanish*/los órganos de un jefe + }, + CustomMessage("Heart Container", "Herzcontainer", "Réceptacle de Coeur")); hintTextTable[RHT_ICE_TRAP] = HintText(CustomMessage("an Ice Trap", /*german*/"eine Eisfalle", /*french*/"un Piège de Glace"), // /*spanish*/una trampa de hielo @@ -1761,8 +2247,19 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un regalo de Ganon CustomMessage("a chilling discovery", /*german*/"eine fröstelnde Entdeckung", /*french*/"une frissonante découverte"), // /*spanish*/un escalofriante hallazgo - CustomMessage("frosty fun", /*german*/"frostiger Spaß", /*french*/"une engelure")}); + CustomMessage("frosty fun", /*german*/"frostiger Spaß", /*french*/"une engelure") // /*spanish*/una gélida diversión + }, + CustomMessage("Ice Trap", "Eisfalle", "Piège de Glace")); + + + hintTextTable[RHT_MILK] = HintText(CustomMessage("some Milk", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Milk", "Milch", "Lait")); + + hintTextTable[RHT_FISH] = HintText(CustomMessage("a Fish", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Fish", "Fisch", "Poisson")); hintTextTable[RHT_BOMBS_5] = HintText(CustomMessage("Bombs (5 pieces)", /*german*/"Bomben (5 Stück)", /*french*/"une demi-dizaine de bombes"), // /*spanish*/unas (5) bombas @@ -1772,8 +2269,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a few explosives", /*german*/"ein paar Explosivbehälter", /*french*/"une poignée de pétards"), // /*spanish*/un par de explosivos - CustomMessage("a few blast balls", /*german*/"ein paar Explosionsbälle", /*french*/"une poignée de boules bleues")}); + CustomMessage("a few blast balls", /*german*/"ein paar Explosionsbälle", /*french*/"une poignée de boules bleues") // /*spanish*/un par de estallidos + }, + CustomMessage("Bombs (5)", "Bomben (5)", "Bombes (5)")); hintTextTable[RHT_BOMBS_10] = HintText(CustomMessage("Bombs (10 pieces)", /*german*/"Bomben (10 Stück)", /*french*/"une dizaine de bombes"), // /*spanish*/unas (10) bombas @@ -1783,8 +2282,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("some explosives", /*german*/"einige Explosivbehälter", /*french*/"un paquet de pétards"), // /*spanish*/unos cuantos explosivos - CustomMessage("some blast balls", /*german*/"einige Explosionsbälle", /*french*/"un paquet de boules bleues")}); + CustomMessage("some blast balls", /*german*/"einige Explosionsbälle", /*french*/"un paquet de boules bleues") // /*spanish*/unos cuantos estallidos + }, + CustomMessage("Bombs (10)", "Bomben (10)", "Bombes (10)")); hintTextTable[RHT_BOMBS_20] = HintText(CustomMessage("Bombs (20 pieces)", /*german*/"Bomben (20 Stück)", /*french*/"une vingtaine de bombes"), // /*spanish*/unas (20) bombas @@ -1794,8 +2295,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("lots-o-explosives", /*german*/"viele Explosivbehälter", /*french*/"une abondance de pétards"), // /*spanish*/un puñado de explosivos - CustomMessage("plenty of blast balls", /*german*/"viele Explosionsbälle", /*french*/"une abondance de boules bleues")}); + CustomMessage("plenty of blast balls", /*german*/"viele Explosionsbälle", /*french*/"une abondance de boules bleues") // /*spanish*/bastantes estallidos + }, + CustomMessage("Bombs (20)", "Bomben (20)", "Bombes (20)")); hintTextTable[RHT_BOMBCHUS_5] = HintText(CustomMessage("Bombchus (5 pieces)", /*german*/"Krabbelminen (5 Stück)", /*french*/"une demi-dizaine de Missiles"), // /*spanish*/unos (5) bombchus @@ -1811,8 +2314,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un par de explosivos ratoncitos CustomMessage("a few wall crawlers", /*german*/"ein paar Wandkrabbler", /*french*/"une poignée de rapides grimpeurs"), // /*spanish*/un par de trepaparedes - CustomMessage("a few trail blazers", /*german*/"ein paar Vorreiter", /*french*/"une poignée de zigzags éclatants")}); + CustomMessage("a few trail blazers", /*german*/"ein paar Vorreiter", /*french*/"une poignée de zigzags éclatants") // /*spanish*/un par de ratas propulsadas + }, + CustomMessage("Bombchus (5)", "Krabbelminen (5)", "Missiles (5)")); hintTextTable[RHT_BOMBCHUS_10] = HintText(CustomMessage("Bombchus (10 pieces)", /*german*/"Krabbelminen (10 Stück)", /*french*/"une dizaine de Missiles"), // /*spanish*/unos (10) bombchus @@ -1828,8 +2333,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/unos cuantos explosivos ratoncitos CustomMessage("some wall crawlers", /*german*/"einige Wandkrabbler", /*french*/"un paquet de rapides grimpeurs"), // /*spanish*/unos cuantos trepaparedes - CustomMessage("some trail blazers", /*german*/"einige Vorreiter", /*french*/"un paquet de zigzags éclatants")}); + CustomMessage("some trail blazers", /*german*/"einige Vorreiter", /*french*/"un paquet de zigzags éclatants") // /*spanish*/unas cuantas ratas propulsadas + }, + CustomMessage("Bombchus (10)", "Krabbelminen (10)", "Missiles (10)")); hintTextTable[RHT_BOMBCHUS_20] = HintText(CustomMessage("Bombchus (20 pieces)", /*german*/"Krabbelminen (20 Stück)", /*french*/"une vingtaine de Missiles"), // /*spanish*/unos (20) bombchus @@ -1845,8 +2352,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/bastantes explosivos ratoncitos CustomMessage("plenty of wall crawlers", /*german*/"viele Wandkrabbler", /*french*/"une abondance de rapides grimpeurs"), // /*spanish*/bastantes trepaparedes - CustomMessage("plenty of trail blazers", /*german*/"viele Vorreiter", /*french*/"une abondance de zigzags éclatants")}); + CustomMessage("plenty of trail blazers", /*german*/"viele Vorreiter", /*french*/"une abondance de zigzags éclatants") // /*spanish*/bastantes ratas propulsadas + }, + CustomMessage("Bombchus (20)", "Krabbelminen (20)", "Missiles (20)")); hintTextTable[RHT_ARROWS_5] = HintText(CustomMessage("Arrows (5 pieces)", /*german*/"Pfeile (5 Stück)", /*french*/"une demi-dizaine de flèches"), // /*spanish*/unas (5) flechas @@ -1856,8 +2365,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a few danger darts", /*german*/"ein paar gefährliche Spitzen", /*french*/"une poignée d'obus"), // /*spanish*/un par de peligrosos dardos - CustomMessage("a few sharp shafts", /*german*/"ein paar scharfe Stifte", /*french*/"une poignée de piquets")}); + CustomMessage("a few sharp shafts", /*german*/"ein paar scharfe Stifte", /*french*/"une poignée de piquets") // /*spanish*/un par de puntas afiladas + }, + CustomMessage("Arrows (5)", "Pfeile (5)", "Flèches (5)")); hintTextTable[RHT_ARROWS_10] = HintText(CustomMessage("Arrows (10 pieces)", /*german*/"Pfeile (10 Stück)", /*french*/"une dizaine de flèches"), // /*spanish*/unas (10) flechas @@ -1867,8 +2378,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("some danger darts", /*german*/"einige gefährliche Spitzen", /*french*/"un paquet d'obus"), // /*spanish*/unos cuantos peligrosos dardos - CustomMessage("some sharp shafts", /*german*/"einige scharfe Stifte", /*french*/"un paquet de piquets")}); + CustomMessage("some sharp shafts", /*german*/"einige scharfe Stifte", /*french*/"un paquet de piquets") // /*spanish*/unas cuantas puntas afiladas + }, + CustomMessage("Arrows (10)", "Pfeile (10)", "Flèches (10)")); hintTextTable[RHT_ARROWS_30] = HintText(CustomMessage("Arrows (30 pieces)", /*german*/"Pfeile (30 Stück)", /*french*/"une trentaine de flèches"), // /*spanish*/unas (30) flechas @@ -1878,8 +2391,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("plenty of danger darts", /*german*/"viele gefährliche Spitzen", /*french*/"une abondance d'obus"), // /*spanish*/bastantes peligrosos dardos - CustomMessage("plenty of sharp shafts", /*german*/"viele scharfe Stifte", /*french*/"une abondance de piquets")}); + CustomMessage("plenty of sharp shafts", /*german*/"viele scharfe Stifte", /*french*/"une abondance de piquets") // /*spanish*/bastantes puntas afiladas + }, + CustomMessage("Arrows (30)", "Pfeile (30)", "Flèches (30)")); hintTextTable[RHT_DEKU_NUTS_5] = HintText(CustomMessage("Deku Nuts (5 pieces)", /*german*/"Deku-Nüsse (5 Stück)", /*french*/"une demi-dizaine de noix Mojo"), // /*spanish*/unas (5) nueces deku @@ -1893,8 +2408,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un par de nueces CustomMessage("some flashbangs", /*german*/"ein paar Blendgranaten", /*french*/"une poignée d'éclats"), // /*spanish*/un par de semillas aturdidoras - CustomMessage("some scrub spit", /*german*/"ein wenig Buschspucke", /*french*/"une poignée de crachats Mojo")}); + CustomMessage("some scrub spit", /*german*/"ein wenig Buschspucke", /*french*/"une poignée de crachats Mojo") // /*spanish*/un par de escupitajos deku + }, + CustomMessage("Deku Nuts (5)", "Deku-Nüsse (5)", "Noix Mojo (5)")); hintTextTable[RHT_DEKU_NUTS_10] = HintText(CustomMessage("Deku Nuts (10 pieces)", /*german*/"Deku-Nüsse (10 Stück)", /*french*/"une dizaine de noix Mojo"), // /*spanish*/unas (10) nueces deku @@ -1908,8 +2425,10 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un puñado de nueces CustomMessage("plenty of flashbangs", /*german*/"einige Blendgranaten", /*french*/"un paquet d'éclats"), // /*spanish*/unas cuantas semillas aturdidoras - CustomMessage("plenty of scrub spit", /*german*/"einige Buschspucke", /*french*/"un paquet de crachats Mojo")}); + CustomMessage("plenty of scrub spit", /*german*/"einige Buschspucke", /*french*/"un paquet de crachats Mojo") // /*spanish*/unos cuantos escupitajos deku + }, + CustomMessage("Deku Nuts (10)", "Deku-Nüsse (10)", "Noix Mojo (10)")); hintTextTable[RHT_DEKU_SEEDS_30] = HintText(CustomMessage("Deku Seeds (30 pieces)", /*german*/"Deku-Samen (30 Stück)", /*french*/"une trentaine de graines Mojo"), // /*spanish*/unas (30) semillas deku @@ -1921,8 +2440,10 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("catapult ammo", /*german*/"Katapultmunition", /*french*/"un paquet de délicieuses munitions"), // /*spanish*/un par de munición infantil - CustomMessage("lots-o-seeds", /*german*/"viele Samen", /*french*/"un paquet de germes séchés")}); + CustomMessage("lots-o-seeds", /*german*/"viele Samen", /*french*/"un paquet de germes séchés") // /*spanish*/un puñado de semillas + }, + CustomMessage("Deku Seeds (30)", "Deku-Samen (30)", "Graines Mojo (30)")); hintTextTable[RHT_DEKU_STICK_1] = HintText(CustomMessage("a Deku Stick", /*german*/"ein Deku-Stab", /*french*/"un bâton Mojo"), // /*spanish*/un palo deku @@ -1930,26 +2451,164 @@ void StaticData::HintTable_Init_Item() { CustomMessage("some Deku munitions", /*german*/"ein wenig Deku-Munition", /*french*/"un paquet de munitions Mojo") // /*spanish*/un montón de municiones Deku }, { - CustomMessage("a breakable branch", /*german*/"ein brüchiger Zweig", /*french*/"un bout de bois")}); + CustomMessage("a breakable branch", /*german*/"ein brüchiger Zweig", /*french*/"un bout de bois") // /*spanish*/un pequeño báculo + }, + CustomMessage("Deku Stick (1)", "Deku-Stab (1)", "Bâton Mojo (1)")); - hintTextTable[RHT_TREASURE_GAME_HEART] = HintText(CustomMessage("a Piece of Heart", /*german*/"ein Herzteil", /*french*/"un Quart de Coeur"), + hintTextTable[RHT_RED_POTION_REFILL] = HintText(CustomMessage("some Red Potion", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Red Potion Refill", "Nachfüllpackung des roten Elixiers", "Recharge de Potion Rouge")); + + hintTextTable[RHT_GREEN_POTION_REFILL] = HintText(CustomMessage("some Green Potion", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Green Potion Refill", "Nachfüllpackung des grünen Elixiers", "Recharge de Potion Verte")); + + hintTextTable[RHT_BLUE_POTION_REFILL] = HintText(CustomMessage("some Blue Potion", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Blue Potion Refill", "Nachfüllpackung des blauen Elixiers", "Recharge de Potion Bleue")); + + hintTextTable[RHT_TCG_PIECE_OF_HEART] = HintText(CustomMessage("a Piece of Heart", /*german*/"ein Herzteil", /*french*/"un Quart de Coeur"), // /*spanish*/el amor de la victoria { CustomMessage("something heart-shaped", /*german*/"etwas Herzförmiges", /*french*/"une chose en forme de coeur") // /*spanish*/algo con forma de corazón }, { - CustomMessage("a victory valentine", /*german*/"ein siegreicher Valentin", /*french*/"un amour gagnant")}); + CustomMessage("a victory valentine", /*german*/"ein siegreicher Valentin", /*french*/"un amour gagnant") // /*spanish*/el amor victorioso + }, + CustomMessage("Piece of Heart (WINNER)", "Herzstück (Schatztruhenminispiel)", "Quart de Coeur (Chasse-aux-Trésors)")); - hintTextTable[RHT_TREASURE_GAME_GREEN_RUPEE] = HintText(CustomMessage("a Green Rupee", /*german*/"ein grüner Rubin", /*french*/"un rubis vert"), + hintTextTable[RHT_LOSER_GREEN_RUPEE] = HintText(CustomMessage("a Green Rupee", /*german*/"ein grüner Rubin", /*french*/"un rubis vert"), // /*spanish*/una rupia verde { CustomMessage("some rupees", /*german*/"einige Rubine", /*french*/"une quantité de rubis") // /*spanish*/una cantidad de rupias }, { - CustomMessage("the dollar of defeat", /*german*/"der Rubin der Niederlage", /*french*/"le rubis de la défaite")}); + CustomMessage("the dollar of defeat", /*german*/"der Rubin der Niederlage", /*french*/"le rubis de la défaite") // /*spanish*/el peso de la derrota + }, + CustomMessage("Green Rupee (LOSER)", "Grüner Rubin (Schatztruhenminispiel)", "Rubis Vert (Chasse-aux-Trésors)")); + + hintTextTable[RHT_BUY_DEKU_NUTS_5] = HintText(CustomMessage("Deku Nuts", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Deku Nut (5)", "Deku-Nuß kaufen (5)", "Acheter: Noix Mojo (5)")); + + hintTextTable[RHT_BUY_ARROWS_30] = HintText(CustomMessage("Arrows", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Arrows (30)", "Pfeile kaufen (30)", "Acheter: Flèches (30)")); + + hintTextTable[RHT_BUY_ARROWS_50] = HintText(CustomMessage("Arrows", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Arrows (50)", "Pfeile kaufen (50)", "Acheter: Flèches (50)")); + + hintTextTable[RHT_BUY_BOMBS_525] = HintText(CustomMessage("cheap Bombs", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Bombs (5) [25]", "Bomben kaufen (5) [25]", "Acheter: Bombes (5) [25]")); + + hintTextTable[RHT_BUY_DEKU_NUTS_10] = HintText(CustomMessage("Deku Nuts", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Deku Nut (10)", "Deku-Nuß kaufen (10)", "Acheter: Noix Mojo (10)")); + + hintTextTable[RHT_BUY_DEKU_STICK_1] = HintText(CustomMessage("Deku Sticks", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Deku Stick (1)", "Acheter: Bâton Mojo (1)", "Deku-Stab kaufen (1)")); + + hintTextTable[RHT_BUY_BOMBS_10] = HintText(CustomMessage("Bombs", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Bombs (10)", "Bomben kaufen (10)", "Acheter: Bombes (10)")); + + hintTextTable[RHT_BUY_FISH] = HintText(CustomMessage("Fish", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Fish", "Fisch kaufen", "Acheter: Poisson")); + + hintTextTable[RHT_BUY_RED_POTION_30] = HintText(CustomMessage("cheap Red Potion", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Red Potion [30]", "Rotes Elixier kaufen [30]", "Acheter: Potion Rouge [30]")); + + hintTextTable[RHT_BUY_GREEN_POTION] = HintText(CustomMessage("Green Potion", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Green Potion", "Grünes Elixier kaufen", "Acheter: Potion Verte")); + + hintTextTable[RHT_BUY_BLUE_POTION] = HintText(CustomMessage("Blue Potion", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Blue Potion", "Blaues Elixier kaufen", "Acheter: Potion Bleue")); + + hintTextTable[RHT_BUY_HYLIAN_SHIELD] = HintText(CustomMessage("Hylian Shields", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Hylian Shield", "Hylia-Schild kaufen", "Acheter: Bouclier Hylien")); + + hintTextTable[RHT_BUY_DEKU_SHIELD] = HintText(CustomMessage("Deku Shields", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Deku Shield", "Deku-Schild kaufen", "Acheter: Bouclier Mojo")); + + hintTextTable[RHT_BUY_GORON_TUNIC] = HintText(CustomMessage("Goron Tunics", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Goron Tunic", "Goronen-Tunika kaufen", "Acheter: Tunique Goron")); + + hintTextTable[RHT_BUY_ZORA_TUNIC] = HintText(CustomMessage("Zora Tunics", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Zora Tunic", "Zora-Tunika kaufen", "Acheter: Tunique Zora")); + + hintTextTable[RHT_BUY_HEART] = HintText(CustomMessage("Recovery Hearts", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Heart", "Herz kaufen", "Acheter: Coeur de Vie")); + + hintTextTable[RHT_BUY_BOMBCHUS_10] = HintText(CustomMessage("Bombchus", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Bombchu (10)", "Krabbelminen kaufen (10)", "Acheter: Missiles (10)")); + + hintTextTable[RHT_BUY_BOMBCHUS_20] = HintText(CustomMessage("Bulk Bombchus", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Bombchu (20)", "Krabbelminen kaufen (20)", "Acheter: Missiles (20)")); + + hintTextTable[RHT_BUY_DEKU_SEEDS_30] = HintText(CustomMessage("Deku Seeds", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Deku Seeds (30)", "Deku-Samen kaufen (30)", "Acheter: Graines Mojo (30)")); + + hintTextTable[RHT_SOLD_OUT] = HintText(CustomMessage("Nothing", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Sold Out", "Ausverkauft", "Rupture de stock")); + + hintTextTable[RHT_BUY_BLUE_FIRE] = HintText(CustomMessage("Blue Fire", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Blue Fire", "Blaues Feuer kaufen", "Acheter: Flamme Bleue")); + + hintTextTable[RHT_BUY_BOTTLE_BUG] = HintText(CustomMessage("Bugs", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Bottle Bug", "Flaschenkäfer kaufen", "Acheter: Insecte en bouteille")); + + hintTextTable[RHT_BUY_POE] = HintText(CustomMessage("Poes", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Poe", "Geist kaufen", "Acheter: Esprit")); + + hintTextTable[RHT_BUY_FAIRYS_SPIRIT] = HintText(CustomMessage("Fairies", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Fairy's Spirit", "Feengeist kaufen", "Acheter: Esprit de Fée")); + + hintTextTable[RHT_BUY_ARROWS_10] = HintText(CustomMessage("Arrows", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Arrows (10)", "Pfeile kaufen (10)", "Acheter: Flèches (10)")); + + hintTextTable[RHT_BUY_BOMBS_20] = HintText(CustomMessage("Bombs", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Bombs (20)", "Bomben kaufen (20)", "Acheter: Bombes (20)")); + + hintTextTable[RHT_BUY_BOMBS_30] = HintText(CustomMessage("bulk Bombs", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Bombs (30)", "Bomben kaufen (30)", "Acheter: Bombes (30)")); + + hintTextTable[RHT_BUY_BOMBS_535] = HintText(CustomMessage("pricy Bombs", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Bombs (5) [35]", "Bomben kaufen (5) [35]", "Acheter: Bombes (5) [35]")); + + hintTextTable[RHT_BUY_RED_POTION_40] = HintText(CustomMessage("Red Potion", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Red Potion [40]", "Rotes Elixier kaufen [40]", "Acheter: Potion Rouge [40]")); + + hintTextTable[RHT_BUY_RED_POTION_50] = HintText(CustomMessage("pricy Red Potion", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Buy Red Potion [50]", "Rotes Elixier kaufen [50]", "Acheter: Potion Rouge [50]")); hintTextTable[RHT_TRIFORCE_PIECE] = HintText(CustomMessage("a Piece of the Triforce", /*german*/"ein Triforce-Fragment", /*french*/"un fragment de la Triforce"), // /*spanish*/un fragmento de la Trifuerza @@ -1958,29 +2617,37 @@ void StaticData::HintTable_Init_Item() { // /*spanish*/un trígono del triunfo CustomMessage("cheese", /*german*/"Käse", /*french*/"du fromage"), // /*spanish*/un porción de queso - CustomMessage("a gold fragment", /*german*/"ein goldenes Fragment", /*french*/"un fragment d'or")}); + CustomMessage("a gold fragment", /*german*/"ein goldenes Fragment", /*french*/"un fragment d'or") // /*spanish*/un fragmento dorado + }, + CustomMessage("Triforce Piece", "Triforce-Fragment", "Triforce Piece")); hintTextTable[RHT_GOHMA_SOUL] = HintText(CustomMessage("the soul of Gohma", /*german*/"die Seele Gohmas", /*french*/""), { CustomMessage("something webbed", /*german*/"etwas Verwobenes", /*french*/"") }, { CustomMessage("an invasive soul", /*german*/"eine invasive Seele", /*french*/""), - CustomMessage("some spider essence", /*german*/"etwas spinnenartige Essenz", /*french*/"")}); + CustomMessage("some spider essence", /*german*/"etwas spinnenartige Essenz", /*french*/"") + }, + CustomMessage("Gohma's Soul", "Gohmas Seele", "Âme de Gohma")); hintTextTable[RHT_KING_DODONGO_SOUL] = HintText(CustomMessage("the soul of King Dodongo", /*german*/"die Seele König Dodongos", /*french*/""), { CustomMessage("something explosive", /*german*/"etwas Explosives", /*french*/"") }, { CustomMessage("a royal soul", /*german*/"eine royale Seele", /*french*/""), - CustomMessage("some reptile essence", /*german*/"etwas reptilienartige Essenz", /*french*/"")}); + CustomMessage("some reptile essence", /*german*/"etwas reptilienartige Essenz", /*french*/"") + }, + CustomMessage("King Dodongo's Soul", "König Dodongos Seele", "Âme du Roi Dodongo")); hintTextTable[RHT_BARINADE_SOUL] = HintText(CustomMessage("the soul of Barinade", /*german*/"die Seele Barinades", /*french*/""), { CustomMessage("something fishy", /*german*/"etwas Fischiges", /*french*/"") }, { CustomMessage("an infectuous soul", /*german*/"eine infektiöse Seele", /*french*/""), - CustomMessage("some parasitic essence", /*german*/"etwas parasitäre Essenz", /*french*/"")}); + CustomMessage("some parasitic essence", /*german*/"etwas parasitäre Essenz", /*french*/"") + }, + CustomMessage("Barinade's Soul", "Barinades Seele", "Âme de Barinade")); hintTextTable[RHT_PHANTOM_GANON_SOUL] = HintText(CustomMessage("the soul of Phantom Ganon", /*german*/"die Seele Phantom-Ganons", /*french*/""), { @@ -1988,87 +2655,54 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a duplicate soul", /*german*/"eine duplizierte Seele", /*french*/""), - CustomMessage("some illusionary essence", /*german*/"etwas illusionäre Essenz", /*french*/"")}); + CustomMessage("some illusionary essence", /*german*/"etwas illusionäre Essenz", /*french*/"") + }, + CustomMessage("Phantom Ganon's Soul", "Phantom-Ganons Seele", "Âme de Ganon Spectral")); hintTextTable[RHT_VOLVAGIA_SOUL] = HintText(CustomMessage("the soul of Volvagia", /*german*/"die Seele Volvagias", /*french*/""), { CustomMessage("something hot", /*german*/"etwas Heißes", /*french*/"") }, { CustomMessage("a draconic soul", /*german*/"eine drakonische Seele", /*french*/""), - CustomMessage("some magmatic essence", /*german*/"etwas magmatische Essenz", /*french*/"")}); + CustomMessage("some magmatic essence", /*german*/"etwas magmatische Essenz", /*french*/"") + }, + CustomMessage("Volvagia's Soul", "Volvagias Seele", "Âme de Vulcania")); hintTextTable[RHT_MORPHA_SOUL] = HintText(CustomMessage("the soul of Morpha", /*german*/"die Seele Morphas", /*french*/""), { CustomMessage("something wet", /*german*/"etwas Nasses", /*french*/"") }, { CustomMessage("an aquatic soul", /*german*/"eine aquatische Seele", /*french*/""), - CustomMessage("some liquid essence", /*german*/"etwas flüssige Essenz", /*french*/"")}); + CustomMessage("some liquid essence", /*german*/"etwas flüssige Essenz", /*french*/"") + }, + CustomMessage("Morpha's Soul", "Morphas Seele", "Âme de Morpha")); hintTextTable[RHT_BONGO_BONGO_SOUL] = HintText(CustomMessage("the soul of Bongo Bongo", /*german*/"die Seele Bongo Bongos", /*french*/""), { CustomMessage("something dark", /*german*/"etwas Dunkles", /*french*/"") }, { CustomMessage("a shadowy soul", /*german*/"eine schattige Seele", /*french*/""), - CustomMessage("some handy essence", /*german*/"etwas praktische Essenz", /*french*/"")}); + CustomMessage("some handy essence", /*german*/"etwas praktische Essenz", /*french*/"") + }, + CustomMessage("Bongo Bongo's Soul", "Bongo Bongos Seele", "Âme de Bongo Bongo")); hintTextTable[RHT_TWINROVA_SOUL] = HintText(CustomMessage("the soul of Twinrova", /*german*/"die Seele Twinrovas", /*french*/""), { CustomMessage("something spiritual", /*german*/"etwas Spirituelles", /*french*/"") }, { CustomMessage("old souls", /*german*/"alte Seelen", /*french*/""), - CustomMessage("twin essences", /*german*/"Zwillingsessenzen", /*french*/"")}); + CustomMessage("twin essences", /*german*/"Zwillingsessenzen", /*french*/"") + }, + CustomMessage("Twinrova's Soul", "Twinrovas Seele", "Âme du Duo Maléfique")); hintTextTable[RHT_GANON_SOUL] = HintText(CustomMessage("the soul of Ganon", /*german*/"die Seele Ganons", /*french*/""), { CustomMessage("something strong", /*german*/"etwas Starkes", /*french*/"") }, { CustomMessage("an evil soul", /*german*/"eine böse Seele", /*french*/""), - CustomMessage("some powerful essence", /*german*/"etwas mächtige Essenz", /*french*/"")}); - - hintTextTable[RHT_OCARINA_A_BUTTON] = HintText(CustomMessage("an Ocarina A Button", /*german*/"eine Okarina A Taste", /*french*/"la Touche A de l'Ocarina"), - // /*spanish*/un botón A de Ocarina - { - CustomMessage("something melodic", /*german*/"etwas Melodisches", /*french*/"quelque chose de mélodieux") - // /*spanish*/algo melódico - }, { - CustomMessage("a musical letter", /*german*/"ein musikalischer Brief", /*french*/"une lettre musicale")}); - // /*spanish*/una letra musical - - hintTextTable[RHT_OCARINA_C_UP_BUTTON] = HintText(CustomMessage("an Ocarina C Up Button", /*german*/"eine Okarina C-Oben Taste", /*french*/"la Touche C-Haut de l'Ocarina"), - // /*spanish*/un botón C superior de Ocarina - { - CustomMessage("something melodic", /*german*/"etwas Melodisches", /*french*/"quelque chose de mélodieux") - // /*spanish*/algo melódico - }, { - CustomMessage("a high tone", /*german*/"ein hoher Ton", /*french*/"une tonalité élevée")}); - // /*spanish*/un tono alto - - hintTextTable[RHT_OCARINA_C_DOWN_BUTTON] = HintText(CustomMessage("an Ocarina C Down Button", /*german*/"eine Okarina C-Unten Taste", /*french*/"la Touche C-Bas de l'Ocarina"), - // /*spanish*/un botón C inferior de Ocarina - { - CustomMessage("something melodic", /*german*/"etwas Melodisches", /*french*/"quelque chose de mélodieux") - // /*spanish*/algo melódico - }, { - CustomMessage("a low tone", /*german*/"ein tiefer Ton", /*french*/"une tonalité basse")}); - // /*spanish*/un tono bajo - - hintTextTable[RHT_OCARINA_C_LEFT_BUTTON] = HintText(CustomMessage("an Ocarina C Left Button", /*german*/"eine Okarina C-Links Taste", /*french*/"la Touche C-Gauche de l'Ocarina"), - // /*spanish*/un botón C izquierdo de Ocarina - { - CustomMessage("something melodic", /*german*/"etwas Melodisches", /*french*/"quelque chose de mélodieux") - // /*spanish*/algo melódico - }, { - CustomMessage("a leftward tone", /*german*/"ein linksseitiger Ton", /*french*/"une tonalité vers la gauche")}); - // /*spanish*/un tono hacia la izquierda - - hintTextTable[RHT_OCARINA_C_RIGHT_BUTTON] = HintText(CustomMessage("an Ocarina C Right Button", /*german*/"eine Okarina C-Rechts Taste", /*french*/"la Touche C-Droit de l'Ocarina"), - // /*spanish*/un botón C derecho de Ocarina - { - CustomMessage("something melodic", /*german*/"etwas Melodisches", /*french*/"quelque chose de mélodieux") - // /*spanish*/algo melódico - }, { - CustomMessage("a rightward tone", /*german*/"ein rechtsseitiger Ton", /*french*/"une tonalité vers la droite")}); - // /*spanish*/un tono hacia la derecha + CustomMessage("some powerful essence", /*german*/"etwas mächtige Essenz", /*french*/"") + }, + CustomMessage("Ganon's Soul", "Ganons Seele", "Âme de Ganon")); hintTextTable[RHT_FISHING_POLE] = HintText(CustomMessage("a fishing pole", /*german*/"eine Angelrute", /*french*/"une canne à pêche"), // /*spanish*/caña de pescar @@ -2076,8 +2710,65 @@ void StaticData::HintTable_Init_Item() { CustomMessage("the pond owner's property", /*german*/"der Besitz des Teicheigners", /*french*/"(un truc qui appartient au propriétaire de l'étang)") // /*spanish*/(caña de pescar) }, { - CustomMessage("a fish-puller", /*german*/"ein Fischzieher", /*french*/"(un aimant à poisson)")}); + CustomMessage("a fish-puller", /*german*/"ein Fischzieher", /*french*/"(un aimant à poisson)") // /*spanish*/(caña de pescar) + }, + CustomMessage("Fishing Pole", "Angelrute", "Canne à Pêche")); + + hintTextTable[RHT_OCARINA_A_BUTTON] = HintText(CustomMessage("an Ocarina A Button", /*german*/"eine Okarina A Taste", /*french*/"la Touche A de l'Ocarina"), + // /*spanish*/un botón A de Ocarina + { + CustomMessage("something melodic", /*german*/"etwas Melodisches", /*french*/"quelque chose de mélodieux") + // /*spanish*/algo melódico + }, { + CustomMessage("a musical letter", /*german*/"ein musikalischer Brief", /*french*/"une lettre musicale") + // /*spanish*/una letra musical + }, + CustomMessage("Ocarina A Button", "Taste A der Okarina", "Touche A de l'Ocarina")); + + hintTextTable[RHT_OCARINA_C_UP_BUTTON] = HintText(CustomMessage("an Ocarina C Up Button", /*german*/"eine Okarina C-Oben Taste", /*french*/"la Touche C-Haut de l'Ocarina"), + // /*spanish*/un botón C superior de Ocarina + { + CustomMessage("something melodic", /*german*/"etwas Melodisches", /*french*/"quelque chose de mélodieux") + // /*spanish*/algo melódico + }, { + CustomMessage("a high tone", /*german*/"ein hoher Ton", /*french*/"une tonalité élevée") + // /*spanish*/un tono alto + }, + CustomMessage("Ocarina C Up Button", "Taste C-Oben der Okarina", "Touche C-Haut de l'Ocarina")); + + hintTextTable[RHT_OCARINA_C_DOWN_BUTTON] = HintText(CustomMessage("an Ocarina C Down Button", /*german*/"eine Okarina C-Unten Taste", /*french*/"la Touche C-Bas de l'Ocarina"), + // /*spanish*/un botón C inferior de Ocarina + { + CustomMessage("something melodic", /*german*/"etwas Melodisches", /*french*/"quelque chose de mélodieux") + // /*spanish*/algo melódico + }, { + CustomMessage("a low tone", /*german*/"ein tiefer Ton", /*french*/"une tonalité basse") + // /*spanish*/un tono bajo + }, + CustomMessage("Ocarina C Down Button", "Taste C-Unten der Okarina", "Touche C-Bas de l'Ocarina")); + + hintTextTable[RHT_OCARINA_C_LEFT_BUTTON] = HintText(CustomMessage("an Ocarina C Left Button", /*german*/"eine Okarina C-Links Taste", /*french*/"la Touche C-Gauche de l'Ocarina"), + // /*spanish*/un botón C izquierdo de Ocarina + { + CustomMessage("something melodic", /*german*/"etwas Melodisches", /*french*/"quelque chose de mélodieux") + // /*spanish*/algo melódico + }, { + CustomMessage("a leftward tone", /*german*/"ein linksseitiger Ton", /*french*/"une tonalité vers la gauche") + // /*spanish*/un tono hacia la izquierda + }, + CustomMessage("Ocarina C Left Button", "Taste C-Links der Okarina", "Touche C-Gauche de l'Ocarina")); + + hintTextTable[RHT_OCARINA_C_RIGHT_BUTTON] = HintText(CustomMessage("an Ocarina C Right Button", /*german*/"eine Okarina C-Rechts Taste", /*french*/"la Touche C-Droit de l'Ocarina"), + // /*spanish*/un botón C derecho de Ocarina + { + CustomMessage("something melodic", /*german*/"etwas Melodisches", /*french*/"quelque chose de mélodieux") + // /*spanish*/algo melódico + }, { + CustomMessage("a rightward tone", /*german*/"ein rechtsseitiger Ton", /*french*/"une tonalité vers la droite") + // /*spanish*/un tono hacia la derecha + }, + CustomMessage("Ocarina C Right Button", "Taste C-Rechts der Okarina", "Touche C-Droit de l'Ocarina")); hintTextTable[RHT_BOMBCHU_BAG] = HintText(CustomMessage("Bombchu Bag", /*german*/"!!!", /*french*/"un Sac de Missiles Teigneux"), { @@ -2086,63 +2777,52 @@ void StaticData::HintTable_Init_Item() { CustomMessage("something that can remove boulders", /*german*/"etwas, das Geröll entfernen kann", /*french*/"une chose qui enlève les rochers") // /*spanish*/algo que pueda quitar rocas }, { - CustomMessage("sack of mice", /*german*/"!!!", /*french*/"un Sac rempli de souris")}); + CustomMessage("sack of mice", /*german*/"!!!", /*french*/"un Sac rempli de souris") + }, + CustomMessage("Bombchu Bag", "Sac de Missiles Teigneux", "!!!")); hintTextTable[RHT_SKELETON_KEY] = HintText(CustomMessage("a Skeleton Key", /*german*/ "ein Universalschlüssel", /*french*/ "une Clé Squelette"), // /*spanish*/una Llave Maestra { CustomMessage("a key", /*german*/ "ein Schlüssel", /*french*/ "une clé") // /*spanish*/una llave - }, - { CustomMessage("a master unlocker", /*german*/ "ein Meisterentsperrer", /*french*/ "un Kit de Déverrouillage") }); + }, { + CustomMessage("a master unlocker", /*german*/ "ein Meisterentsperrer", /*french*/ "un Kit de Déverrouillage") // /*spanish*/un desbloqueador maestro + }, + CustomMessage("Skeleton Key", "Skelettschlüssel", "Clé Squelette")); + hintTextTable[RHT_QUIVER_INF] = HintText(CustomMessage("an infinite Quiver", /*german*/"!!!", /*french*/"un Carquois Infini"), - { - CustomMessage("", /*german*/"!!!", /*french*/"!!!"), - }, { - CustomMessage("", /*german*/"!!!", /*french*/"!!!")}); + {}, {}, + CustomMessage("Infinite Quiver", "Unendlicher Köcher", "Carquois Infini")); hintTextTable[RHT_BOMB_BAG_INF] = HintText(CustomMessage("an infinite Bomb Bag", /*german*/"!!!", /*french*/"un Sac de Bombe sans fond"), - { - CustomMessage("", /*german*/"!!!", /*french*/"!!!"), - }, { - CustomMessage("", /*german*/"!!!", /*french*/"!!!")}); + {}, {}, + CustomMessage("Infinite Bomb Bag", "Unendliche Bombentasche", "Sac de Bombes Infini")); hintTextTable[RHT_BULLET_BAG_INF] = HintText(CustomMessage("an infinite Bullet Bag", /*german*/"!!!", /*french*/"un Sac de Graine sans fond"), - { - CustomMessage("", /*german*/"!!!", /*french*/"!!!"), - }, { - CustomMessage("", /*german*/"!!!", /*french*/"!!!")}); + {}, {}, + CustomMessage("Infinite Bullet Bag", "Unendliche Samentasche", "Sac de Graines Infinis")); hintTextTable[RHT_STICK_UPGRADE_INF] = HintText(CustomMessage("infinite Deku Sticks", /*german*/"!!!", /*french*/" des Bâtons Mojo illimités"), - { - CustomMessage("", /*german*/"!!!", /*french*/"!!!"), - }, { - CustomMessage("", /*german*/"!!!", /*french*/"!!!")}); + {}, {}, + CustomMessage("Infinite Stick Capacity", "Unendliche Stab-Kapazität", "Bâtons Mojo Infinis")); - hintTextTable[RHT_NUT_UPGRADE_INF] = HintText(CustomMessage("infinite Deku Nut", /*german*/"!!!", /*french*/"des Noix Mojo illimitées"), - { - CustomMessage("", /*german*/"!!!", /*french*/"!!!"), - }, { - CustomMessage("", /*german*/"!!!", /*french*/"!!!")}); + hintTextTable[RHT_NUT_UPGRADE_INF] = HintText(CustomMessage("infinite Deku Nuts", /*german*/"!!!", /*french*/"des Noix Mojo illimitées"), + {}, {}, + CustomMessage("Infinite Nut Capacity", "Unendliche Nuß-Kapazität", "Noix Mojo Infinies")); hintTextTable[RHT_MAGIC_INF] = HintText(CustomMessage("unlimited Magic", /*german*/"!!!", /*french*/"de la Magie infinie"), - { - CustomMessage("", /*german*/"!!!", /*french*/"!!!"), - }, { - CustomMessage("", /*german*/"!!!", /*french*/"!!!")}); + {}, {}, + CustomMessage("Infinite Magic Meter", "Unendliches Magisches Maß", "Magie Infinie")); hintTextTable[RHT_BOMBCHU_INF] = HintText(CustomMessage("infinite Bombchus", /*german*/"!!!", /*french*/"des Missiles Teigneux illimités"), - { - CustomMessage("", /*german*/"!!!", /*french*/"!!!"), - }, { - CustomMessage("", /*german*/"!!!", /*french*/"!!!")}); + {}, {}, + CustomMessage("Infinite Bombchus", "Unendliche Krabbelminen", "Missiles Teigneux Infinis")); hintTextTable[RHT_WALLET_INF] = HintText(CustomMessage("an infinite Wallet", /*german*/"!!!", /*french*/"une Bourse sans fond"), - { - CustomMessage("", /*german*/"!!!", /*french*/"!!!"), - }, { - CustomMessage("", /*german*/"!!!", /*french*/"!!!")}); + {}, {}, + CustomMessage("Infinite Wallet", "Unendliche Geldbörse", "Bourse Infinie")); hintTextTable[RHT_EPONA] = HintText(CustomMessage("Epona", /*german*/"Epona", /*french*/"Epona"), // /*spanish*/a Epona @@ -2159,7 +2839,141 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a four legged friend", /*german*/"ein vierbeiniger Freund", /*french*/"un puissant animal")}); // /*spanish*/una amiga cuadrúpeda + hintTextTable[RG_TRIFORCE] = HintText(CustomMessage("the Triforce", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Triforce", "Triforce", "Triforce")); + + hintTextTable[RHT_HINT] = HintText(CustomMessage("a Hint", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Hint", "Hinweis", "Indice")); + + hintTextTable[RHT_HOOKSHOT] = HintText(CustomMessage("the Hookshot", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Hookshot", "Fanghaken", "Grappin")); + + hintTextTable[RHT_LONGSHOT] = HintText(CustomMessage("the Longshot", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Longshot", "Enterhaken", "Super-Grappin")); + + hintTextTable[RHT_FAIRY_OCARINA] = HintText(CustomMessage("the Fairy Ocarina", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Fairy Ocarina", "Feen-Okarina", "Ocarina des fées")); + + hintTextTable[RHT_OCARINA_OF_TIME] = HintText(CustomMessage("the Ocarina of Time", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Ocarina of Time", "Okarina der Zeit", "Ocarina du Temps")); + + hintTextTable[RHT_BOMB_BAG] = HintText(CustomMessage("the Bomb Bag", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Bomb Bag", "Bombentasche", "Sac de Bombes")); + + hintTextTable[RHT_BIG_BOMB_BAG] = HintText(CustomMessage("the Big Bomb Bag", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Big Bomb Bag", "Große Bombentasche", "Grand Sac de Bombes")); + + hintTextTable[RHT_BIGGEST_BOMB_BAG] = HintText(CustomMessage("the Biggest Bomb Bag", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Biggest Bomb Bag", "Größte Bombentasche", "Énorme Sac de Bombes")); + + hintTextTable[RHT_FAIRY_BOW] = HintText(CustomMessage("the Fairy Bow", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Fairy Bow", "Feen-Bogen", "Arc des Fées")); + + hintTextTable[RHT_BIG_QUIVER] = HintText(CustomMessage("a Big Quiver", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Big Quiver", "Großer Köcher", "Grand carquois")); + + hintTextTable[RHT_BIGGEST_QUIVER] = HintText(CustomMessage("the Biggest Quiver", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Biggest Quiver", "Größter Köcher", "Énorme carquois")); + + hintTextTable[RHT_FAIRY_SLINGSHOT] = HintText(CustomMessage("the Fairy Slingshot", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Fairy Slingshot", "Feen-Schleuder", "Lance-Pierre des Fées")); + + hintTextTable[RHT_BIG_BULLET_BAG] = HintText(CustomMessage("a Big Bullet Bag", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Big Deku Seed Bullet Bag", "Große Deku-Samentasche", "Grand sac de graines mojo")); + + hintTextTable[RHT_BIGGEST_BULLET_BAG] = HintText(CustomMessage("the Biggest Bullet Bag", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Biggest Deku Seed Bullet Bag", "Größte Deku-Samentasche", "Énorme sac de graines mojo")); + + hintTextTable[RHT_GORONS_BRACELET] = HintText(CustomMessage("the Goron's Bracelet", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Goron's Bracelet", "Goronen-Armband", "Bracelet Goron")); + + hintTextTable[RHT_SILVER_GAUNTLETS] = HintText(CustomMessage("the Silver Gauntlets", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Silver Gauntlets", "Silberhandschuhe", "Gantelets d'argent")); + + hintTextTable[RHT_GOLDEN_GAUNTLETS] = HintText(CustomMessage("the Golden Gauntlets", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Golden Gauntlets", "Goldhandschuhe", "Gantelets d'or")); + + hintTextTable[RHT_BRONZE_SCALE] = HintText(CustomMessage("a Bronze Scale", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Bronze Scale", "Bronzene Schuppe", "Écaille de Bronze")); + + hintTextTable[RHT_SILVER_SCALE] = HintText(CustomMessage("a Silver Scale", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Silver Scale", "Silberne Schuppe", "Écaille d'argent")); + + hintTextTable[RHT_GOLDEN_SCALE] = HintText(CustomMessage("a Golden Scale", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Golden Scale", "Goldene Schuppe", "Écaille d'or")); + + hintTextTable[RHT_CHILD_WALLET] = HintText(CustomMessage("a Child's Wallet", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Child Wallet", "Kindergeldbörse", "Petite Bourse")); + + hintTextTable[RHT_ADULT_WALLET] = HintText(CustomMessage("an Adult's Wallet", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Adult Wallet", "Erwachsenengeldbörse", "Grande Bourse")); + + hintTextTable[RHT_GIANT_WALLET] = HintText(CustomMessage("a Giant Wallet", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Giant Wallet", "Riesige Geldbörse", "Bourse de Géant")); + + hintTextTable[RHT_TYCOON_WALLET] = HintText(CustomMessage("the Tycoon Wallet", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Tycoon Wallet", "Goldene Geldbörse", "Bourse de Magnat")); + + hintTextTable[RHT_DEKU_NUT_BAG] = HintText(CustomMessage("a Deku Nut Bag", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Deku Nut Bag", "Deku-Nuß-Tasche", "Sac de Noix Mojo")); + + hintTextTable[RHT_DEKU_NUT_CAPACITY_30] = HintText(CustomMessage("Deku Nut Capacity (30)", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Deku Nut Capacity (30)", "Deku-Nuß-Kapazität (30)", "Capacité de noix Mojo (30)")); + + hintTextTable[RHT_DEKU_NUT_CAPACITY_40] = HintText(CustomMessage("", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Deku Nut Capacity (40)", "Deku-Nuß-Kapazität (40)", "Capacité de noix Mojo (40)")); + + hintTextTable[RHT_DEKU_STICK_BAG] = HintText(CustomMessage("a Deku Stick Bag", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Deku Stick Bag", "Deku-Stab-Tasche", "Sac de Bâton Mojo")); + + hintTextTable[RHT_DEKU_STICK_CAPACITY_20] = HintText(CustomMessage("", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Deku Stick Capacity (20)", "Deku-Stab-Kapazität (20)", "Capacité de Bâtons Mojo (20)")); + + hintTextTable[RHT_DEKU_STICK_CAPACITY_30] = HintText(CustomMessage("", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Deku Stick Capacity (30)", "Deku-Stab-Kapazität (30)", "Capacité de Bâtons Mojo (30)")); + + hintTextTable[RHT_MAGIC_SINGLE] = HintText(CustomMessage("a Small Magic Meter", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Magic Meter", "Magisches Maß", "Jauge de Magie")); + + hintTextTable[RHT_MAGIC_DOUBLE] = HintText(CustomMessage("a Large Magic Meter", /*german*/"!!!", /*french*/"!!!"), + {}, {}, + CustomMessage("Enhanced Magic Meter", "Verbessertes Magisches Maß", "Jauge de Magie améliorée")); + + //What is this used for? + //This was meant for the mysterious items mode IIRC, but that stopped applying to hints hintTextTable[RHT_HINT_MYSTERIOUS] = HintText(CustomMessage("something mysterious", /*german*/"etwas Mysteriöses", /*french*/"un sacré mystère")); // /*spanish*/algo misterioso diff --git a/soh/soh/Enhancements/randomizer/3drando/hints.cpp b/soh/soh/Enhancements/randomizer/3drando/hints.cpp index 932b97316..f5ce4e4c0 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hints.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hints.cpp @@ -13,7 +13,6 @@ #include "../hint.h" #include "../static_data.h" - using namespace Rando; HintDistributionSetting::HintDistributionSetting(std::string _name, @@ -32,13 +31,18 @@ HintDistributionSetting::HintDistributionSetting(std::string _name, dungeonLimit = _dungeonLimit; } -HintText::HintText(CustomMessage clearText_, std::vector ambiguousText_, std::vector obscureText_) -: clearText(std::move(clearText_)), ambiguousText(std::move(ambiguousText_)), obscureText(std::move(obscureText_)){} +//RANDOTODO rearrange once all HintText's have names +HintText::HintText(CustomMessage clearText_, std::vector ambiguousText_, std::vector obscureText_, CustomMessage name_) +: clearText(std::move(clearText_)), ambiguousText(std::move(ambiguousText_)), obscureText(std::move(obscureText_)), name(std::move(name_)){} const CustomMessage& HintText::GetClear() const { return clearText; } +const CustomMessage& HintText::GetName() const { + return name.GetEnglish() == "" ? name : clearText; +} + const CustomMessage& HintText::GetObscure() const { return obscureText.size() > 0 ? RandomElement(obscureText) : clearText; } @@ -450,7 +454,7 @@ static RandomizerCheck CreateRandomHint(std::vector& possibleHi SPDLOG_DEBUG("\n"); SPDLOG_DEBUG("\tItem: "); - SPDLOG_DEBUG(ctx->GetItemLocation(hintedLocation)->GetPlacedItemName().GetEnglish()); + SPDLOG_DEBUG(ctx->GetItemLocation(hintedLocation)->GetPlacedItemName().GetForCurrentLanguage()); SPDLOG_DEBUG("\n"); placed = CreateHint(hintedLocation, copies, type, distributionName); diff --git a/soh/soh/Enhancements/randomizer/3drando/hints.hpp b/soh/soh/Enhancements/randomizer/3drando/hints.hpp index 9199c6c81..905abfcdb 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hints.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/hints.hpp @@ -33,7 +33,8 @@ struct HintSetting { class HintText { public: HintText() = default; - HintText(CustomMessage clearText_, std::vector ambiguousText_ = {}, std::vector obscureText_ = {}); + explicit HintText(CustomMessage clearText_, std::vector ambiguousText_ = {}, std::vector obscureText_ = {}, CustomMessage name_ = {""}); + const CustomMessage& GetName() const; const CustomMessage& GetClear() const; const CustomMessage& GetObscure() const; const CustomMessage& GetObscure(uint8_t selection) const; @@ -47,9 +48,10 @@ public: bool operator!=(const HintText& right) const; private: - CustomMessage clearText; + CustomMessage clearText; //RANDOTODO proper system to define use of articles instead of having the name and name with articles repeated std::vector ambiguousText = {}; std::vector obscureText = {}; + CustomMessage name; }; struct StaticHintInfo{ diff --git a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp index 5cbfb9a9e..1456c1041 100644 --- a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp @@ -79,13 +79,13 @@ const std::array alwaysItems = { RG_PROGRESSIVE_BOMB_BAG, RG_PROGRESSIVE_WALLET, //2 progressive wallets RG_PROGRESSIVE_WALLET, - RG_PROGRESSIVE_MAGIC_METER, //2 progressive magic meters - RG_PROGRESSIVE_MAGIC_METER, + RG_PROGRESSIVE_MAGIC, //2 progressive magic meters + RG_PROGRESSIVE_MAGIC, RG_DOUBLE_DEFENSE, - RG_PROGRESSIVE_STICK_UPGRADE, //2 stick upgrades - RG_PROGRESSIVE_STICK_UPGRADE, - RG_PROGRESSIVE_NUT_UPGRADE, //2 nut upgrades - RG_PROGRESSIVE_NUT_UPGRADE, + RG_PROGRESSIVE_STICK_BAG, //2 stick upgrades + RG_PROGRESSIVE_STICK_BAG, + RG_PROGRESSIVE_NUT_BAG, //2 nut upgrades + RG_PROGRESSIVE_NUT_BAG, RG_RECOVERY_HEART, //6 recovery hearts RG_RECOVERY_HEART, RG_RECOVERY_HEART, @@ -100,7 +100,7 @@ const std::array alwaysItems = { RG_ARROWS_10, //5 RG_ARROWS_10, RG_ARROWS_10, - RG_TREASURE_GAME_HEART, + RG_TCG_PIECE_OF_HEART, }; const std::array easyItems = { RG_BIGGORON_SWORD, @@ -121,9 +121,9 @@ const std::array easyItems = { RG_PROGRESSIVE_STRENGTH, RG_PROGRESSIVE_SCALE, RG_PROGRESSIVE_WALLET, - RG_PROGRESSIVE_MAGIC_METER, - RG_PROGRESSIVE_STICK_UPGRADE, - RG_PROGRESSIVE_NUT_UPGRADE, + RG_PROGRESSIVE_MAGIC, + RG_PROGRESSIVE_STICK_BAG, + RG_PROGRESSIVE_NUT_BAG, RG_PROGRESSIVE_BOW, RG_PROGRESSIVE_SLINGSHOT, RG_PROGRESSIVE_BOMB_BAG, @@ -268,8 +268,8 @@ const std::array GTG_Vanilla = { RG_HUGE_RUPEE, }; const std::array GTG_MQ = { - RG_TREASURE_GAME_GREEN_RUPEE, - RG_TREASURE_GAME_GREEN_RUPEE, + RG_LOSER_GREEN_RUPEE, + RG_LOSER_GREEN_RUPEE, RG_ARROWS_10, RG_GREEN_RUPEE, RG_PURPLE_RUPEE, @@ -533,10 +533,10 @@ static void SetScarceItemPool() { ReplaceMaxItem(RG_BOMBCHU_5, 1); ReplaceMaxItem(RG_BOMBCHU_10, 2); ReplaceMaxItem(RG_BOMBCHU_20, 0); - ReplaceMaxItem(RG_PROGRESSIVE_MAGIC_METER, 1); + ReplaceMaxItem(RG_PROGRESSIVE_MAGIC, 1); ReplaceMaxItem(RG_DOUBLE_DEFENSE, 0); - ReplaceMaxItem(RG_PROGRESSIVE_STICK_UPGRADE, ctx->GetOption(RSK_SHUFFLE_DEKU_STICK_BAG) ? 2 : 1); - ReplaceMaxItem(RG_PROGRESSIVE_NUT_UPGRADE, ctx->GetOption(RSK_SHUFFLE_DEKU_NUT_BAG) ? 2 : 1); + ReplaceMaxItem(RG_PROGRESSIVE_STICK_BAG, ctx->GetOption(RSK_SHUFFLE_DEKU_STICK_BAG) ? 2 : 1); + ReplaceMaxItem(RG_PROGRESSIVE_NUT_BAG, ctx->GetOption(RSK_SHUFFLE_DEKU_NUT_BAG) ? 2 : 1); ReplaceMaxItem(RG_PROGRESSIVE_BOW, 2); ReplaceMaxItem(RG_PROGRESSIVE_SLINGSHOT, 2); ReplaceMaxItem(RG_PROGRESSIVE_BOMB_BAG, 2); @@ -550,10 +550,10 @@ static void SetMinimalItemPool() { ReplaceMaxItem(RG_BOMBCHU_10, 0); ReplaceMaxItem(RG_BOMBCHU_20, 0); ReplaceMaxItem(RG_NAYRUS_LOVE, 0); - ReplaceMaxItem(RG_PROGRESSIVE_MAGIC_METER, 1); + ReplaceMaxItem(RG_PROGRESSIVE_MAGIC, 1); ReplaceMaxItem(RG_DOUBLE_DEFENSE, 0); - ReplaceMaxItem(RG_PROGRESSIVE_STICK_UPGRADE, ctx->GetOption(RSK_SHUFFLE_DEKU_STICK_BAG) ? 1 : 0); - ReplaceMaxItem(RG_PROGRESSIVE_NUT_UPGRADE, ctx->GetOption(RSK_SHUFFLE_DEKU_NUT_BAG) ? 1 : 0); + ReplaceMaxItem(RG_PROGRESSIVE_STICK_BAG, ctx->GetOption(RSK_SHUFFLE_DEKU_STICK_BAG) ? 1 : 0); + ReplaceMaxItem(RG_PROGRESSIVE_NUT_BAG, ctx->GetOption(RSK_SHUFFLE_DEKU_NUT_BAG) ? 1 : 0); ReplaceMaxItem(RG_PROGRESSIVE_BOW, 1); ReplaceMaxItem(RG_PROGRESSIVE_SLINGSHOT, 1); ReplaceMaxItem(RG_PROGRESSIVE_BOMB_BAG, 1); @@ -592,7 +592,7 @@ void GenerateItemPool() { RG_PROGRESSIVE_SLINGSHOT, RG_PROGRESSIVE_WALLET, RG_PROGRESSIVE_SCALE, - RG_PROGRESSIVE_MAGIC_METER, + RG_PROGRESSIVE_MAGIC, }; //Check song shuffle and dungeon reward shuffle just for ice traps if (ctx->GetOption(RSK_SHUFFLE_SONGS).Is(RO_SONG_SHUFFLE_ANYWHERE)) { @@ -762,10 +762,10 @@ void GenerateItemPool() { if (ctx->GetOption(RSK_INFINITE_UPGRADES).Is(RO_INF_UPGRADES_PROGRESSIVE)) { AddItemToMainPool(RG_PROGRESSIVE_BOMB_BAG); AddItemToMainPool(RG_PROGRESSIVE_BOW); - AddItemToMainPool(RG_PROGRESSIVE_NUT_UPGRADE); + AddItemToMainPool(RG_PROGRESSIVE_NUT_BAG); AddItemToMainPool(RG_PROGRESSIVE_SLINGSHOT); - AddItemToMainPool(RG_PROGRESSIVE_STICK_UPGRADE); - AddItemToMainPool(RG_PROGRESSIVE_MAGIC_METER); + AddItemToMainPool(RG_PROGRESSIVE_STICK_BAG); + AddItemToMainPool(RG_PROGRESSIVE_MAGIC); AddItemToMainPool(RG_PROGRESSIVE_WALLET); } @@ -902,11 +902,11 @@ void GenerateItemPool() { } if (ctx->GetOption(RSK_SHUFFLE_DEKU_STICK_BAG)) { - AddItemToMainPool(RG_PROGRESSIVE_STICK_UPGRADE); + AddItemToMainPool(RG_PROGRESSIVE_STICK_BAG); } if (ctx->GetOption(RSK_SHUFFLE_DEKU_NUT_BAG)) { - AddItemToMainPool(RG_PROGRESSIVE_NUT_UPGRADE); + AddItemToMainPool(RG_PROGRESSIVE_NUT_BAG); } if (ctx->GetOption(RSK_BOMBCHU_BAG)) { @@ -934,40 +934,40 @@ void GenerateItemPool() { ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true); } else if (ctx->GetOption(RSK_GERUDO_KEYS).IsNot(RO_GERUDO_KEYS_VANILLA)) { if (ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST)) { - AddItemToMainPool(RG_GERUDO_FORTRESS_SMALL_KEY); + AddItemToMainPool(RG_TH_SMALL_KEY); ctx->PlaceItemInLocation(RC_GF_NORTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true); ctx->PlaceItemInLocation(RC_GF_SOUTH_F1_CARPENTER, RG_RECOVERY_HEART, false, true); ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true); } else { //Only add key ring if 4 Fortress keys necessary if (ctx->GetOption(RSK_KEYRINGS_GERUDO_FORTRESS) && ctx->GetOption(RSK_KEYRINGS)) { - AddItemToMainPool(RG_GERUDO_FORTRESS_KEY_RING); + AddItemToMainPool(RG_TH_KEY_RING); //Add junk to make up for missing keys for (uint8_t i = 0; i < 3; i++) { AddItemToMainPool(GetJunkItem()); } } else { - AddItemToMainPool(RG_GERUDO_FORTRESS_SMALL_KEY, 4); + AddItemToMainPool(RG_TH_SMALL_KEY, 4); } } if (ctx->GetOption(RSK_ITEM_POOL).Is(RO_ITEM_POOL_PLENTIFUL)) { if (ctx->GetOption(RSK_KEYRINGS_GERUDO_FORTRESS) && ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) && ctx->GetOption(RSK_KEYRINGS) ) { - AddItemToPool(PendingJunkPool, RG_GERUDO_FORTRESS_KEY_RING); + AddItemToPool(PendingJunkPool, RG_TH_KEY_RING); } else { - AddItemToPool(PendingJunkPool, RG_GERUDO_FORTRESS_SMALL_KEY); + AddItemToPool(PendingJunkPool, RG_TH_SMALL_KEY); } } } else { if (ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST)) { - ctx->PlaceItemInLocation(RC_GF_NORTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_GF_NORTH_F1_CARPENTER, RG_TH_SMALL_KEY, false, true); ctx->PlaceItemInLocation(RC_GF_NORTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true); ctx->PlaceItemInLocation(RC_GF_SOUTH_F1_CARPENTER, RG_RECOVERY_HEART, false, true); ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true); } else { - ctx->PlaceItemInLocation(RC_GF_NORTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true); - ctx->PlaceItemInLocation(RC_GF_NORTH_F2_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true); - ctx->PlaceItemInLocation(RC_GF_SOUTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true); - ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_GF_NORTH_F1_CARPENTER, RG_TH_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_GF_NORTH_F2_CARPENTER, RG_TH_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_GF_SOUTH_F1_CARPENTER, RG_TH_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_TH_SMALL_KEY, false, true); } } @@ -1009,9 +1009,9 @@ void GenerateItemPool() { //Plentiful small keys if (ctx->GetOption(RSK_KEYSANITY).Is(RO_DUNGEON_ITEM_LOC_ANYWHERE) || ctx->GetOption(RSK_KEYSANITY).Is(RO_DUNGEON_ITEM_LOC_ANY_DUNGEON) || ctx->GetOption(RSK_KEYSANITY).Is(RO_DUNGEON_ITEM_LOC_OVERWORLD)) { if (ctx->GetDungeon(Rando::BOTTOM_OF_THE_WELL)->HasKeyRing()) { - AddItemToPool(PendingJunkPool, RG_BOTTOM_OF_THE_WELL_KEY_RING); + AddItemToPool(PendingJunkPool, RG_BOTW_KEY_RING); } else { - AddItemToPool(PendingJunkPool, RG_BOTTOM_OF_THE_WELL_SMALL_KEY); + AddItemToPool(PendingJunkPool, RG_BOTW_SMALL_KEY); } if (ctx->GetDungeon(Rando::FOREST_TEMPLE)->HasKeyRing()) { AddItemToPool(PendingJunkPool, RG_FOREST_TEMPLE_KEY_RING); @@ -1039,9 +1039,9 @@ void GenerateItemPool() { AddItemToPool(PendingJunkPool, RG_SHADOW_TEMPLE_SMALL_KEY); } if (ctx->GetDungeon(Rando::GERUDO_TRAINING_GROUND)->HasKeyRing()) { - AddItemToPool(PendingJunkPool, RG_GERUDO_TRAINING_GROUND_KEY_RING); + AddItemToPool(PendingJunkPool, RG_GTG_KEY_RING); } else { - AddItemToPool(PendingJunkPool, RG_GERUDO_TRAINING_GROUND_SMALL_KEY); + AddItemToPool(PendingJunkPool, RG_GTG_SMALL_KEY); } if (ctx->GetDungeon(Rando::GANONS_CASTLE)->HasKeyRing()) { AddItemToPool(PendingJunkPool, RG_GANONS_CASTLE_KEY_RING); @@ -1068,9 +1068,9 @@ void GenerateItemPool() { AddItemToPool(ItemPool, RG_MARKET_BAZAAR_KEY); AddItemToPool(ItemPool, RG_MARKET_POTION_SHOP_KEY); AddItemToPool(ItemPool, RG_MASK_SHOP_KEY); - AddItemToPool(ItemPool, RG_MARKET_SHOOTING_GALLERY_KEY); + AddItemToPool(ItemPool, RG_MARKET_SHOOTING_KEY); AddItemToPool(ItemPool, RG_BOMBCHU_BOWLING_KEY); - AddItemToPool(ItemPool, RG_TREASURE_CHEST_GAME_BUILDING_KEY); + AddItemToPool(ItemPool, RG_TCG_BUILDING_KEY); AddItemToPool(ItemPool, RG_BOMBCHU_SHOP_KEY); AddItemToPool(ItemPool, RG_RICHARDS_HOUSE_KEY); AddItemToPool(ItemPool, RG_ALLEY_HOUSE_KEY); @@ -1081,7 +1081,7 @@ void GenerateItemPool() { AddItemToPool(ItemPool, RG_SKULLTULA_HOUSE_KEY); AddItemToPool(ItemPool, RG_IMPAS_HOUSE_KEY); AddItemToPool(ItemPool, RG_WINDMILL_KEY); - AddItemToPool(ItemPool, RG_KAK_SHOOTING_GALLERY_KEY); + AddItemToPool(ItemPool, RG_KAK_SHOOTING_KEY); AddItemToPool(ItemPool, RG_DAMPES_HUT_KEY); AddItemToPool(ItemPool, RG_TALONS_HOUSE_KEY); AddItemToPool(ItemPool, RG_STABLES_KEY); diff --git a/soh/soh/Enhancements/randomizer/3drando/shops.cpp b/soh/soh/Enhancements/randomizer/3drando/shops.cpp index 75120fa41..e9bc2fc44 100644 --- a/soh/soh/Enhancements/randomizer/3drando/shops.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/shops.cpp @@ -569,14 +569,14 @@ void InitTrickNames() { Text{"Progressive Pearl", "Perle (prog.)", "Perla progresiva"}, Text{"Progressive Scute", "Bulle (prog.)", "Fragmento Zora progresivo"} }; - trickNameTable[RG_PROGRESSIVE_NUT_UPGRADE] = { + trickNameTable[RG_PROGRESSIVE_NUT_BAG] = { Text{"Progressive Nut Pack", "Paquet de noix (prog.)", "Mayor capacidad de semillas"}, Text{"Progressive Bait Bag", "Sac à Appâts (prog.)", "Bolsa de cebo progresiva"}, Text{"Progressive Pear Capacity", "Capacité de poire (prog.)", "Capacidad progresiva de pera"}, Text{"Progressive Nut Bag", "Sac de noix (prog.)", "Bolsa de nueces progresiva"}, Text{"Progressive Husk Capacity", "Capacité de noisettes (prog.)", "Mayor capacidad de castañas"} }; - trickNameTable[RG_PROGRESSIVE_STICK_UPGRADE] = { + trickNameTable[RG_PROGRESSIVE_STICK_BAG] = { Text{"Progressive Stick Bag", "Sac de bâtons (prog.)", "Mayor capacidad de ramas deku"}, Text{"Progressive Stick Pack", "Paquet de bâtons Mojo (prog.)", "Mayor capacidad de bastones"}, Text{"Progressive Branch Capacity", "Capacité de la succursale (prog.)", "Capacidad progresiva de la sucursal"}, @@ -589,7 +589,7 @@ void InitTrickNames() { Text{"Progressive Missiles", "Missiles (prog.)", "Misiles progresivos"}, Text{"Progressive Bombchu Bag", "Sac à Bombchu (prog.)", "Bombachus progresivos"} }; - trickNameTable[RG_PROGRESSIVE_MAGIC_METER] = { + trickNameTable[RG_PROGRESSIVE_MAGIC] = { Text{"Progressive Stamina Meter", "Jauge d'endurance (prog.)", "Medidor de vigor progresivo"}, Text{"Progressive Energy Gauge", "Jauge d'énergie (prog.)", "Medidor de energía progresivo"}, Text{"Progressive Magic Powder", "Poudre magique (prog.)", "Medidor de carga progresivo"} diff --git a/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp b/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp index da4c3eb43..1f41a46af 100644 --- a/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp @@ -75,15 +75,7 @@ static void WriteLocation( Rando::Location* location = Rando::StaticData::GetLocation(locationKey); Rando::ItemLocation* itemLocation = Rando::Context::GetInstance()->GetItemLocation(locationKey); - switch (gSaveContext.language) { - case LANGUAGE_ENG: - default: - jsonData["playthrough"][sphere][location->GetName()] = itemLocation->GetPlacedItemName().GetEnglish(); - break; - case LANGUAGE_FRA: - jsonData["playthrough"][sphere][location->GetName()] = itemLocation->GetPlacedItemName().GetFrench(); - break; - } + jsonData["playthrough"][sphere][location->GetName()] = itemLocation->GetPlacedItemName().GetForCurrentLanguage(); } //Writes a shuffled entrance to the specified node @@ -262,17 +254,7 @@ static void WriteAllLocations() { auto ctx = Rando::Context::GetInstance(); for (const RandomizerCheck key : ctx->allLocations) { Rando::ItemLocation* location = ctx->GetItemLocation(key); - std::string placedItemName; - - switch (gSaveContext.language) { - case 0: - default: - placedItemName = location->GetPlacedItemName().english; - break; - case 2: - placedItemName = location->GetPlacedItemName().french; - break; - } + std::string placedItemName = location->GetPlacedItemName().GetForCurrentLanguage(); // If it's a simple item (not an ice trap, doesn't have a price) // just add the name of the item and move on @@ -295,17 +277,15 @@ static void WriteAllLocations() { } if (location->GetPlacedRandomizerGet() == RG_ICE_TRAP) { + jsonData["locations"][Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName()]["model"] = + Rando::StaticData::RetrieveItem(ctx->overrides[location->GetRandomizerCheck()].LooksLike()).GetName().GetForCurrentLanguage(); switch (gSaveContext.language) { case 0: default: - jsonData["locations"][Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName()]["model"] = - Rando::StaticData::RetrieveItem(ctx->overrides[location->GetRandomizerCheck()].LooksLike()).GetName().english; jsonData["locations"][Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName()]["trickName"] = ctx->overrides[location->GetRandomizerCheck()].GetTrickName().english; break; case 2: - jsonData["locations"][Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName()]["model"] = - Rando::StaticData::RetrieveItem(ctx->overrides[location->GetRandomizerCheck()].LooksLike()).GetName().french; jsonData["locations"][Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName()]["trickName"] = ctx->overrides[location->GetRandomizerCheck()].GetTrickName().french; break; diff --git a/soh/soh/Enhancements/randomizer/3drando/starting_inventory.cpp b/soh/soh/Enhancements/randomizer/3drando/starting_inventory.cpp index 04a7e3040..b94f79185 100644 --- a/soh/soh/Enhancements/randomizer/3drando/starting_inventory.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/starting_inventory.cpp @@ -70,8 +70,8 @@ void GenerateStartingInventory() { //the option selected. If None is selected, the value will be zero and //zero of the item will be added to the starting inventory. // TODO: Uncomment when these options are implemented. - // AddItemToInventory(RG_PROGRESSIVE_STICK_UPGRADE, StartingStickCapacity.Value()); - // AddItemToInventory(RG_PROGRESSIVE_NUT_UPGRADE, StartingNutCapacity.Value()); + // AddItemToInventory(RG_PROGRESSIVE_STICK_BAG, StartingStickCapacity.Value()); + // AddItemToInventory(RG_PROGRESSIVE_NUT_BAG, StartingNutCapacity.Value()); // AddItemToInventory(RG_PROGRESSIVE_BOMB_BAG, StartingBombBag.Value()); // AddItemToInventory((BombchuBag ? RG_PROGRESSIVE_BOMBCHUS : RG_BOMBCHU_20), StartingBombchus.Value()); // AddItemToInventory(RG_PROGRESSIVE_BOW, StartingBow.Value()); @@ -138,7 +138,7 @@ void GenerateStartingInventory() { // AddItemToInventory(RG_MIRROR_SHIELD, StartingMirrorShield.Value()); // AddItemToInventory(RG_GORON_TUNIC, StartingGoronTunic.Value()); // AddItemToInventory(RG_ZORA_TUNIC, StartingZoraTunic.Value()); - // AddItemToInventory(RG_PROGRESSIVE_MAGIC_METER, StartingMagicMeter.Value()); + // AddItemToInventory(RG_PROGRESSIVE_MAGIC, StartingMagicMeter.Value()); // AddItemToInventory(RG_PROGRESSIVE_STRENGTH, StartingStrength.Value()); // AddItemToInventory(RG_PROGRESSIVE_SCALE, StartingScale.Value()); // AddItemToInventory(RG_PROGRESSIVE_WALLET, StartingWallet.Value()); @@ -161,7 +161,7 @@ void GenerateStartingInventory() { AddItemToInventory(RG_PIECE_OF_HEART, 4); // Plentiful and minimal have less than 4 standard pieces of heart so also replace the winner heart if (ctx->GetOption(RSK_ITEM_POOL).Get() == 0 || ctx->GetOption(RSK_ITEM_POOL).Get() == 3) { - AddItemToInventory(RG_TREASURE_GAME_HEART); + AddItemToInventory(RG_TCG_PIECE_OF_HEART); } AdditionalHeartContainers = 1 - hearts; @@ -177,7 +177,7 @@ void GenerateStartingInventory() { } if (hearts == 17) { - AddItemToInventory(RG_TREASURE_GAME_HEART); + AddItemToInventory(RG_TCG_PIECE_OF_HEART); } } } @@ -189,7 +189,7 @@ bool StartingInventoryHasBottle() { void ApplyStartingInventory() { for (RandomizerGet item : StartingInventory) { - if (item == RG_PIECE_OF_HEART || item == RG_HEART_CONTAINER || item == RG_TREASURE_GAME_HEART) + if (item == RG_PIECE_OF_HEART || item == RG_HEART_CONTAINER || item == RG_TCG_PIECE_OF_HEART) continue; Rando::StaticData::RetrieveItem(item).ApplyEffect(); diff --git a/soh/soh/Enhancements/randomizer/Plandomizer.cpp b/soh/soh/Enhancements/randomizer/Plandomizer.cpp index 39b20d876..6be7bf1a2 100644 --- a/soh/soh/Enhancements/randomizer/Plandomizer.cpp +++ b/soh/soh/Enhancements/randomizer/Plandomizer.cpp @@ -145,10 +145,10 @@ std::unordered_map itemImageMap = { { RG_PROGRESSIVE_SLINGSHOT, "ITEM_SLINGSHOT" }, { RG_PROGRESSIVE_WALLET, "ITEM_WALLET_ADULT" }, { RG_PROGRESSIVE_SCALE, "ITEM_SCALE_SILVER" }, - { RG_PROGRESSIVE_NUT_UPGRADE, "ITEM_NUT" }, - { RG_PROGRESSIVE_STICK_UPGRADE, "ITEM_STICK" }, + { RG_PROGRESSIVE_NUT_BAG, "ITEM_NUT" }, + { RG_PROGRESSIVE_STICK_BAG, "ITEM_STICK" }, { RG_PROGRESSIVE_BOMBCHUS, "ITEM_BOMBCHU" }, - { RG_PROGRESSIVE_MAGIC_METER, "ITEM_MAGIC_SMALL" }, + { RG_PROGRESSIVE_MAGIC, "ITEM_MAGIC_SMALL" }, { RG_MAGIC_SINGLE, "ITEM_MAGIC_SMALL" }, { RG_MAGIC_DOUBLE, "ITEM_MAGIC_LARGE" }, { RG_PROGRESSIVE_OCARINA, "ITEM_OCARINA_FAIRY" }, @@ -185,7 +185,7 @@ std::unordered_map itemImageMap = { { RG_WATER_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, { RG_SPIRIT_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, { RG_SHADOW_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_BOTTOM_OF_THE_WELL_MAP, "ITEM_DUNGEON_MAP" }, + { RG_BOTW_MAP, "ITEM_DUNGEON_MAP" }, { RG_ICE_CAVERN_MAP, "ITEM_DUNGEON_MAP" }, { RG_DEKU_TREE_COMPASS, "ITEM_COMPASS" }, { RG_DODONGOS_CAVERN_COMPASS, "ITEM_COMPASS" }, @@ -195,7 +195,7 @@ std::unordered_map itemImageMap = { { RG_WATER_TEMPLE_COMPASS, "ITEM_COMPASS" }, { RG_SPIRIT_TEMPLE_COMPASS, "ITEM_COMPASS" }, { RG_SHADOW_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_BOTTOM_OF_THE_WELL_COMPASS, "ITEM_COMPASS" }, + { RG_BOTW_COMPASS, "ITEM_COMPASS" }, { RG_ICE_CAVERN_COMPASS, "ITEM_COMPASS" }, { RG_FOREST_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, { RG_FIRE_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, @@ -208,9 +208,9 @@ std::unordered_map itemImageMap = { { RG_WATER_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_SPIRIT_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_SHADOW_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_BOTTOM_OF_THE_WELL_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_GERUDO_TRAINING_GROUND_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_GERUDO_FORTRESS_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_BOTW_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_GTG_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_TH_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_GANONS_CASTLE_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_TREASURE_GAME_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_KOKIRI_EMERALD, "ITEM_KOKIRI_EMERALD" }, @@ -229,7 +229,7 @@ std::unordered_map itemImageMap = { { RG_RED_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, { RG_PURPLE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, { RG_HUGE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_TREASURE_GAME_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_LOSER_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, { RG_PIECE_OF_HEART, "ITEM_HEART_PIECE" }, { RG_HEART_CONTAINER, "ITEM_HEART_CONTAINER" }, { RG_ICE_TRAP, "ITEM_ICE_TRAP" }, @@ -256,7 +256,7 @@ std::unordered_map itemImageMap = { { RG_BUY_ARROWS_30, "ITEM_ARROWS_MEDIUM" }, { RG_ARROWS_30, "ITEM_ARROWS_LARGE" }, { RG_BUY_ARROWS_50, "ITEM_ARROWS_LARGE" }, - { RG_TREASURE_GAME_HEART, "ITEM_HEART_PIECE" }, + { RG_TCG_PIECE_OF_HEART, "ITEM_HEART_PIECE" }, { RG_DEKU_SEEDS_30, "ITEM_SEEDS" }, { RG_BUY_DEKU_SEEDS_30, "ITEM_SEEDS" }, { RG_BUY_HEART, "ITEM_HEART_GRAYSCALE" }, @@ -283,7 +283,7 @@ void PlandoPopImageButtonStyle(){ ImVec4 plandomizerGetItemColor(Rando::Item randoItem) { itemColor = ImVec4( 1.0f, 1.0f, 1.0f, 1.0f ); - if (randoItem.GetItemType() == ITEMTYPE_SMALLKEY || randoItem.GetItemType() == ITEMTYPE_FORTRESS_SMALLKEY + if (randoItem.GetItemType() == ITEMTYPE_SMALLKEY || randoItem.GetItemType() == ITEMTYPE_TH_SMALLKEY || randoItem.GetItemType() == ITEMTYPE_BOSSKEY) { if (randoItem.GetRandomizerGet() == RG_FOREST_TEMPLE_SMALL_KEY || randoItem.GetRandomizerGet() == RG_FOREST_TEMPLE_KEY_RING) { @@ -300,14 +300,14 @@ ImVec4 plandomizerGetItemColor(Rando::Item randoItem) { } else if (randoItem.GetRandomizerGet() == RG_SHADOW_TEMPLE_SMALL_KEY || randoItem.GetRandomizerGet() == RG_SHADOW_TEMPLE_KEY_RING) { itemColor = ImVec4( 0.49f, 0.06f, 0.69f, 1.0f ); - } else if (randoItem.GetRandomizerGet() == RG_BOTTOM_OF_THE_WELL_SMALL_KEY || - randoItem.GetRandomizerGet() == RG_BOTTOM_OF_THE_WELL_KEY_RING) { + } else if (randoItem.GetRandomizerGet() == RG_BOTW_SMALL_KEY || + randoItem.GetRandomizerGet() == RG_BOTW_KEY_RING) { itemColor = ImVec4( 0.89f, 0.43f, 1.0f, 1.0f ); - } else if (randoItem.GetRandomizerGet() == RG_GERUDO_TRAINING_GROUND_SMALL_KEY || - randoItem.GetRandomizerGet() == RG_GERUDO_TRAINING_GROUND_KEY_RING) { + } else if (randoItem.GetRandomizerGet() == RG_GTG_SMALL_KEY || + randoItem.GetRandomizerGet() == RG_GTG_KEY_RING) { itemColor = ImVec4( 1.0f, 1.0f, 0, 1.0f ); - } else if (randoItem.GetRandomizerGet() == RG_GERUDO_FORTRESS_SMALL_KEY || - randoItem.GetRandomizerGet() == RG_GERUDO_FORTRESS_KEY_RING) { + } else if (randoItem.GetRandomizerGet() == RG_TH_SMALL_KEY || + randoItem.GetRandomizerGet() == RG_TH_KEY_RING) { itemColor = ImVec4( 1.0f, 1.0f, 1.0f, 1.0f ); } else if (randoItem.GetRandomizerGet() == RG_GANONS_CASTLE_SMALL_KEY || randoItem.GetRandomizerGet() == RG_GANONS_CASTLE_KEY_RING) { @@ -325,7 +325,7 @@ ImVec4 plandomizerGetItemColor(Rando::Item randoItem) { } if (randoItem.GetRandomizerGet() >= RG_GREEN_RUPEE && randoItem.GetRandomizerGet() <= RG_HUGE_RUPEE) { if (randoItem.GetRandomizerGet() == RG_GREG_RUPEE || randoItem.GetRandomizerGet() == RG_GREEN_RUPEE - || randoItem.GetRandomizerGet() == RG_TREASURE_GAME_GREEN_RUPEE) { + || randoItem.GetRandomizerGet() == RG_LOSER_GREEN_RUPEE) { itemColor = ImVec4( 0.02f, 0.76f, 0.18f, 1.0f ); } else if (randoItem.GetRandomizerGet() == RG_BLUE_RUPEE) { itemColor = ImVec4( 0.33f, 0.71f, 0.87f, 1.0f ); @@ -391,7 +391,7 @@ void PlandomizerItemImageCorrection(Rando::Item randoItem) { itemColor = plandomizerGetItemColor(randoItem); - if (randoItem.GetItemType() == ITEMTYPE_SMALLKEY || randoItem.GetItemType() == ITEMTYPE_FORTRESS_SMALLKEY) { + if (randoItem.GetItemType() == ITEMTYPE_SMALLKEY || randoItem.GetItemType() == ITEMTYPE_TH_SMALLKEY) { textureID = Ship::Context::GetInstance()->GetWindow()->GetGui()->GetTextureByName("ITEM_KEY_SMALL"); return; } @@ -542,8 +542,8 @@ void PlandomizerSaveSpoilerLog() { for (auto& import : plandoLogData) { if (import.checkRewardItem.GetRandomizerGet() == RG_ICE_TRAP) { spoilerSave["locations"][import.checkName] = { - { "item", import.checkRewardItem.GetName().english }, - { "model", import.iceTrapModel.GetName().english }, + { "item", import.checkRewardItem.GetName().GetForCurrentLanguage() }, + { "model", import.iceTrapModel.GetName().GetForCurrentLanguage() }, { "trickName", import.iceTrapName.c_str() } }; if (import.shopPrice > -1) { @@ -551,11 +551,11 @@ void PlandomizerSaveSpoilerLog() { } } else if (import.shopPrice > -1) { spoilerSave["locations"][import.checkName] = { - { "item", import.checkRewardItem.GetName().english }, + { "item", import.checkRewardItem.GetName().GetForCurrentLanguage() }, { "price", import.shopPrice } }; } else { - spoilerSave["locations"][import.checkName] = import.checkRewardItem.GetName().english; + spoilerSave["locations"][import.checkName] = import.checkRewardItem.GetName().GetForCurrentLanguage(); } } @@ -635,7 +635,7 @@ void PlandomizerLoadSpoilerLog(std::string logFile) { checkObject.checkRewardItem = plandomizerRandoRetrieveItem(Rando::StaticData::itemNameToEnum[value.get()]); checkObject.shopPrice = -1; if (checkObject.shopPrice == -1 - && checkObject.checkRewardItem.GetName().english.find("Buy") != std::string::npos) { + && checkObject.checkRewardItem.GetItemType() == ITEMTYPE_SHOP) { checkObject.shopPrice = checkObject.checkRewardItem.GetPrice(); } } @@ -669,14 +669,13 @@ void PlandomizerOverlayText(std::pair drawObject ) { ImGui::SetCursorScreenPos(textPos); ImGui::Text("+"); } - if (extractNumberInParentheses(drawObject.first.GetName().english.c_str()) != "" && - extractNumberInParentheses(drawObject.first.GetName().english.c_str()) != "WINNER" && - extractNumberInParentheses(drawObject.first.GetName().english.c_str()) != "LOSER") { + std::string parenthesesNum = extractNumberInParentheses(drawObject.first.GetName().GetEnglish().c_str()); + if (parenthesesNum != "" && parenthesesNum != "WINNER" && parenthesesNum != "LOSER") { textPos = ImVec2(imageMin.x + 2, imageMin.y + 2); ImGui::SetCursorScreenPos(textPos); std::string overlayText = "+"; - overlayText += extractNumberInParentheses(drawObject.first.GetName().english.c_str()); + overlayText += parenthesesNum; ImGui::Text(overlayText.c_str()); } if (drawObject.first.GetRandomizerGet() >= RG_FOREST_TEMPLE_BOSS_KEY && @@ -716,7 +715,7 @@ void PlandomizerDrawItemPopup(uint32_t index) { ImGui::PushID(item); ImGui::TableNextColumn(); PlandomizerItemImageCorrection(plandomizerRandoRetrieveItem(item)); - auto name = plandomizerRandoRetrieveItem(item).GetName().english; + auto name = plandomizerRandoRetrieveItem(item).GetName().GetForCurrentLanguage(); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(imagePadding, imagePadding)); auto ret = ImGui::ImageButton(name.c_str(), textureID, imageSize, textureUV0, textureUV1, ImVec4(0, 0, 0, 0), itemColor); ImGui::PopStyleVar(); @@ -745,7 +744,7 @@ void PlandomizerDrawItemPopup(uint32_t index) { ImGui::PushID(itemIndex); auto itemToDraw = drawSlots.first; PlandomizerItemImageCorrection(drawSlots.first); - auto name = drawSlots.first.GetName().english; + auto name = drawSlots.first.GetName().GetForCurrentLanguage(); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(imagePadding, imagePadding)); auto ret = ImGui::ImageButton(name.c_str(), textureID, imageSize, textureUV0, textureUV1, ImVec4(0, 0, 0, 0), itemColor); ImGui::PopStyleVar(); @@ -793,7 +792,7 @@ void PlandomizerDrawIceTrapPopUp(uint32_t index) { } ImGui::TableNextColumn(); ImGui::PushID(items.first); - auto name = Rando::StaticData::RetrieveItem(items.first).GetName().english; + auto name = Rando::StaticData::RetrieveItem(items.first).GetName().GetForCurrentLanguage(); PlandomizerItemImageCorrection(Rando::StaticData::RetrieveItem(items.first)); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(imagePadding, imagePadding)); auto ret = ImGui::ImageButton(name.c_str(), textureID, imageSize, textureUV0, textureUV1, ImVec4(0, 0, 0, 0), itemColor); @@ -819,7 +818,7 @@ void PlandomizerDrawItemSlots(uint32_t index) { ImGui::PushID(index); PlandoPushImageButtonStyle(); PlandomizerItemImageCorrection(plandoLogData[index].checkRewardItem); - auto name = plandoLogData[index].checkRewardItem.GetName().english; + auto name = plandoLogData[index].checkRewardItem.GetName().GetForCurrentLanguage(); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(imagePadding, imagePadding)); auto ret = ImGui::ImageButton(name.c_str(), textureID, imageSize, textureUV0, textureUV1, ImVec4(0, 0, 0, 0), itemColor); ImGui::PopStyleVar(); @@ -855,7 +854,7 @@ void PlandomizerDrawIceTrapSetup(uint32_t index) { ImGui::TableNextColumn(); PlandomizerItemImageCorrection(plandoLogData[index].iceTrapModel); PlandoPushImageButtonStyle(); - auto name = plandoLogData[index].iceTrapModel.GetName().english; + auto name = plandoLogData[index].iceTrapModel.GetName().GetForCurrentLanguage(); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(imagePadding, imagePadding)); auto ret = ImGui::ImageButton(name.c_str(), textureID, imageSize, textureUV0, textureUV1, ImVec4(0, 0, 0, 0), itemColor); ImGui::PopStyleVar(); @@ -1091,7 +1090,7 @@ void PlandomizerDrawLocationsWindow(RandomizerCheckArea rcArea) { ImGui::TableNextColumn(); ImGui::TextWrapped(spoilerData.checkName.c_str()); ImGui::TableNextColumn(); - ImGui::TextWrapped(spoilerData.checkRewardItem.GetName().english.c_str()); + ImGui::TextWrapped(spoilerData.checkRewardItem.GetName().GetForCurrentLanguage().c_str()); ImGui::TableNextColumn(); PlandomizerDrawItemSlots(index); if (plandoLogData[index].checkRewardItem.GetRandomizerGet() == RG_ICE_TRAP) { diff --git a/soh/soh/Enhancements/randomizer/context.cpp b/soh/soh/Enhancements/randomizer/context.cpp index 221e2176c..4d70d0a12 100644 --- a/soh/soh/Enhancements/randomizer/context.cpp +++ b/soh/soh/Enhancements/randomizer/context.cpp @@ -61,6 +61,7 @@ RandomizerArea Context::GetAreaFromString(std::string str) { void Context::InitStaticData() { StaticData::HintTable_Init(); + StaticData::InitItemTable(); StaticData::trialNameToEnum = StaticData::PopulateTranslationMap(StaticData::trialData); StaticData::hintNameToEnum = StaticData::PopulateTranslationMap(StaticData::hintNames); StaticData::hintTypeNameToEnum = StaticData::PopulateTranslationMap(StaticData::hintTypeNames); @@ -293,7 +294,7 @@ void Context::CreateItemOverrides() { } SPDLOG_DEBUG(loc->GetName()); SPDLOG_DEBUG(": "); - SPDLOG_DEBUG(itemLoc->GetPlacedItemName().GetEnglish()); + SPDLOG_DEBUG(itemLoc->GetPlacedItemName().GetForCurrentLanguage()); SPDLOG_DEBUG("\n"); } SPDLOG_DEBUG("Overrides Created: "); diff --git a/soh/soh/Enhancements/randomizer/dungeon.cpp b/soh/soh/Enhancements/randomizer/dungeon.cpp index 8b749faf8..8b074bc16 100644 --- a/soh/soh/Enhancements/randomizer/dungeon.cpp +++ b/soh/soh/Enhancements/randomizer/dungeon.cpp @@ -167,13 +167,13 @@ Dungeons::Dungeons() { DungeonInfo("Shadow Temple", RHT_SHADOW_TEMPLE, RG_SHADOW_TEMPLE_MAP, RG_SHADOW_TEMPLE_COMPASS, RG_SHADOW_TEMPLE_SMALL_KEY, RG_SHADOW_TEMPLE_KEY_RING, RG_SHADOW_TEMPLE_BOSS_KEY, RA_SHADOW_TEMPLE, 5, 6, RSK_MQ_SHADOW_TEMPLE); dungeonList[BOTTOM_OF_THE_WELL] = DungeonInfo( - "Bottom of the Well", RHT_BOTTOM_OF_THE_WELL, RG_BOTTOM_OF_THE_WELL_MAP, RG_BOTTOM_OF_THE_WELL_COMPASS, - RG_BOTTOM_OF_THE_WELL_SMALL_KEY, RG_BOTTOM_OF_THE_WELL_KEY_RING, RG_NONE, RA_BOTTOM_OF_THE_WELL, 3, 2, RSK_MQ_BOTTOM_OF_THE_WELL); + "Bottom of the Well", RHT_BOTTOM_OF_THE_WELL, RG_BOTW_MAP, RG_BOTW_COMPASS, + RG_BOTW_SMALL_KEY, RG_BOTW_KEY_RING, RG_NONE, RA_BOTTOM_OF_THE_WELL, 3, 2, RSK_MQ_BOTTOM_OF_THE_WELL); dungeonList[ICE_CAVERN] = DungeonInfo("Ice Cavern", RHT_ICE_CAVERN, RG_ICE_CAVERN_MAP, RG_ICE_CAVERN_COMPASS, RG_NONE, RG_NONE, RG_NONE, RA_ICE_CAVERN, 0, 0, RSK_MQ_ICE_CAVERN); dungeonList[GERUDO_TRAINING_GROUND] = DungeonInfo("Gerudo Training Ground", RHT_GERUDO_TRAINING_GROUND, RG_NONE, RG_NONE, - RG_GERUDO_TRAINING_GROUND_SMALL_KEY, RG_GERUDO_TRAINING_GROUND_KEY_RING, RG_NONE, RA_GERUDO_TRAINING_GROUND, 9, 3, RSK_MQ_GTG); + RG_GTG_SMALL_KEY, RG_GTG_KEY_RING, RG_NONE, RA_GERUDO_TRAINING_GROUND, 9, 3, RSK_MQ_GTG); dungeonList[GANONS_CASTLE] = DungeonInfo("Ganon's Castle", RHT_GANONS_CASTLE, RG_NONE, RG_NONE, RG_GANONS_CASTLE_SMALL_KEY, RG_GANONS_CASTLE_KEY_RING, RG_GANONS_CASTLE_BOSS_KEY, RA_GANONS_CASTLE, 2, 3, RSK_MQ_GANONS_CASTLE); diff --git a/soh/soh/Enhancements/randomizer/hint.cpp b/soh/soh/Enhancements/randomizer/hint.cpp index 2648c4623..fbe7c7645 100644 --- a/soh/soh/Enhancements/randomizer/hint.cpp +++ b/soh/soh/Enhancements/randomizer/hint.cpp @@ -273,7 +273,7 @@ const HintText Hint::GetHintText(uint8_t id) const { if (locations.size() > 0) { return *StaticData::GetLocation(locations[0])->GetHint(); } else { - return CustomMessage("ERROR: ITEM HINT WITH NO LOCATIONS OR HINT KEY"); + return HintText(CustomMessage("ERROR: ITEM HINT WITH NO LOCATIONS OR HINT KEY")); } case HINT_TYPE_ITEM_AREA: if (locations.size() > 0) { @@ -283,10 +283,10 @@ const HintText Hint::GetHintText(uint8_t id) const { return StaticData::hintTextTable[RHT_CAN_BE_FOUND_AT]; } } else { - return CustomMessage("ERROR: ITEM AREA HINT WITH NO LOCATION"); //RANDOTODO get isDungeon from area? + return HintText(CustomMessage("ERROR: ITEM AREA HINT WITH NO LOCATION")); //RANDOTODO get isDungeon from area? } default: - return CustomMessage("ERROR: NO HINTKEY PROVIDED AND HINT TYPE HAS NO DEFAULT"); + return HintText(CustomMessage("ERROR: NO HINTKEY PROVIDED AND HINT TYPE HAS NO DEFAULT")); } } @@ -411,11 +411,11 @@ oJson Hint::toJSON() { if (!(StaticData::staticHintInfoMap.contains(ownKey) && StaticData::staticHintInfoMap[ownKey].targetItems.size() > 0)){ if (items.size() == 1){ - log["item"] = StaticData::GetItemTable()[items[0]].GetName().GetEnglish();//RANDOTODO change to CustomMessage; + log["item"] = StaticData::GetItemTable()[items[0]].GetName().GetForCurrentLanguage(); } else if (items.size() > 1){ std::vector itemStrings = {}; for (size_t c = 0; c < items.size(); c++){ - itemStrings.push_back(StaticData::GetItemTable()[items[c]].GetName().GetEnglish());//RANDOTODO change to CustomMessage + itemStrings.push_back(StaticData::GetItemTable()[items[c]].GetName().GetForCurrentLanguage()); } log["items"] = itemStrings; } diff --git a/soh/soh/Enhancements/randomizer/hook_handlers.cpp b/soh/soh/Enhancements/randomizer/hook_handlers.cpp index 9467cb10e..71ba78d60 100644 --- a/soh/soh/Enhancements/randomizer/hook_handlers.cpp +++ b/soh/soh/Enhancements/randomizer/hook_handlers.cpp @@ -998,8 +998,8 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l }); } else if (item00->itemEntry.modIndex == MOD_RANDOMIZER) { Notification::Emit({ - .message = "You found ", - .suffix = Rando::StaticData::RetrieveItem((RandomizerGet)item00->itemEntry.getItemId).GetName().english, + .message = "You found ",//RANDOTODO change based on language + .suffix = Rando::StaticData::RetrieveItem((RandomizerGet)item00->itemEntry.getItemId).GetName().GetForCurrentLanguage(), }); } diff --git a/soh/soh/Enhancements/randomizer/item.cpp b/soh/soh/Enhancements/randomizer/item.cpp index 1c315b47f..1dba468de 100644 --- a/soh/soh/Enhancements/randomizer/item.cpp +++ b/soh/soh/Enhancements/randomizer/item.cpp @@ -13,12 +13,12 @@ namespace Rando { Item::Item() : randomizerGet(RG_NONE), type(ITEMTYPE_ITEM), getItemId(GI_NONE), advancement(false), hintKey(RHT_NONE), progressive(false), price(0) {} -Item::Item(const RandomizerGet randomizerGet_, Text name_, const ItemType type_, const int16_t getItemId_, +Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t itemId_, const uint16_t objectId_, const uint16_t gid_, const uint16_t textId_, const uint16_t field_, const int16_t chestAnimation_, const GetItemCategory category_, const uint16_t modIndex_, const bool progressive_, const uint16_t price_) - : randomizerGet(randomizerGet_), name(std::move(name_)), type(type_), getItemId(getItemId_), + : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), advancement(advancement_), logicVal(logicVal_), hintKey(hintKey_), progressive(progressive_), price(price_) { if (modIndex_ == MOD_RANDOMIZER || getItemId > 0x7D) { giEntry = std::make_shared(GetItemEntry{ itemId_, field_, static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, objectId_, modIndex_, TABLE_RANDOMIZER, static_cast(randomizerGet_), gid_, true, ITEM_FROM_NPC, category_, static_cast(randomizerGet_), MOD_RANDOMIZER, NULL }); @@ -28,10 +28,10 @@ Item::Item(const RandomizerGet randomizerGet_, Text name_, const ItemType type_, } } -Item::Item(const RandomizerGet randomizerGet_, Text name_, const ItemType type_, const int16_t getItemId_, +Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const bool progressive_, const uint16_t price_) - : randomizerGet(randomizerGet_), name(std::move(name_)), type(type_), getItemId(getItemId_), + : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), advancement(advancement_), logicVal(logicVal_), hintKey(hintKey_), progressive(progressive_), price(price_) { } @@ -49,8 +49,8 @@ void Item::UndoEffect() const { ctx->GetLogic()->SetInLogic(logicVal, false); } -const Text& Item::GetName() const { - return name; +const CustomMessage& Item::GetName() const { + return StaticData::hintTextTable[hintKey].GetName(); } bool Item::IsAdvancement() const { @@ -87,7 +87,7 @@ std::shared_ptr Item::GetGIEntry() const { // NOLINT(*-no-recursio const bool tycoonWallet = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_INCLUDE_TYCOON_WALLET); const u8 infiniteUpgrades = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_INFINITE_UPGRADES); switch (randomizerGet) { - case RG_PROGRESSIVE_STICK_UPGRADE: + case RG_PROGRESSIVE_STICK_BAG: switch (logic->CurrentUpgrade(UPG_STICKS)) { case 0: if (ctx->GetOption(RSK_SHUFFLE_DEKU_STICK_BAG)) { @@ -117,7 +117,7 @@ std::shared_ptr Item::GetGIEntry() const { // NOLINT(*-no-recursio break; } break; - case RG_PROGRESSIVE_NUT_UPGRADE: + case RG_PROGRESSIVE_NUT_BAG: switch (logic->CurrentUpgrade(UPG_NUTS)) { case 0: if (ctx->GetOption(RSK_SHUFFLE_DEKU_NUT_BAG)) { @@ -317,7 +317,7 @@ std::shared_ptr Item::GetGIEntry() const { // NOLINT(*-no-recursio break; } break; - case RG_PROGRESSIVE_MAGIC_METER: + case RG_PROGRESSIVE_MAGIC: switch (logic->GetSaveContext()->magicLevel) { case 0: actual = RG_MAGIC_SINGLE; @@ -403,7 +403,7 @@ bool Item::IsMajorItem() const { } if (randomizerGet == RG_HEART_CONTAINER || randomizerGet == RG_PIECE_OF_HEART || - randomizerGet == RG_TREASURE_GAME_HEART) { + randomizerGet == RG_TCG_PIECE_OF_HEART) { return false; } @@ -411,7 +411,7 @@ bool Item::IsMajorItem() const { return false; } - if (type == ITEMTYPE_FORTRESS_SMALLKEY && ctx->GetOption(RSK_GERUDO_KEYS).Is(RO_GERUDO_KEYS_VANILLA)) { + if (type == ITEMTYPE_TH_SMALLKEY && ctx->GetOption(RSK_GERUDO_KEYS).Is(RO_GERUDO_KEYS_VANILLA)) { return false; } diff --git a/soh/soh/Enhancements/randomizer/item.h b/soh/soh/Enhancements/randomizer/item.h index f0df0f1bf..b3bb46f6f 100644 --- a/soh/soh/Enhancements/randomizer/item.h +++ b/soh/soh/Enhancements/randomizer/item.h @@ -17,7 +17,7 @@ enum ItemType { ITEMTYPE_BOSSKEY, ITEMTYPE_SMALLKEY, ITEMTYPE_TOKEN, - ITEMTYPE_FORTRESS_SMALLKEY, + ITEMTYPE_TH_SMALLKEY, ITEMTYPE_EVENT, ITEMTYPE_DROP, ITEMTYPE_REFILL, @@ -30,11 +30,11 @@ namespace Rando { class Item { public: Item(); - Item(RandomizerGet randomizerGet_, Text name_, ItemType type_, int16_t getItemId_, bool advancement_, + Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t itemId_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, bool progressive_ = false, uint16_t price_ = 0); - Item(RandomizerGet randomizerGet_, Text name_, ItemType type_, int16_t getItemId_, bool advancement_, + Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, bool progressive_ = false, uint16_t price_ = 0); ~Item(); @@ -42,7 +42,7 @@ class Item { void UndoEffect() const; - const Text& GetName() const; + const CustomMessage& GetName() const; bool IsAdvancement() const; int GetItemID() const; ItemType GetItemType() const; diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index 45516ef18..2f48ddb69 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -1,6 +1,5 @@ #include "static_data.h" #include "context.h" -#include "logic.h" #include "z64object.h" #include "soh/Enhancements/custom-message/CustomMessageTypes.h" #include "draw.h" @@ -11,406 +10,406 @@ std::array Rando::StaticData::itemTable; std::unordered_map Rando::StaticData::itemNameToEnum; void Rando::StaticData::InitItemTable() { - auto logic = Context::GetInstance()->GetLogic(); - itemTable[RG_NONE] = Item(RG_NONE, Text{ "No Item", "Rien", "Kein Artikel" }, ITEMTYPE_EVENT, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_NONE, ITEM_NONE, 0, 0, 0, 0, 0, ITEM_CATEGORY_JUNK, MOD_NONE); - // Randomizer Get Randomizer Get Name Text Type Get Item ID Adv. Logic Value Hint Text Key Item ID Object ID Draw ID Text ID field Chest Animation Item Category Mod Index - itemTable[RG_KOKIRI_SWORD] = Item(RG_KOKIRI_SWORD, Text{ "Kokiri Sword", "Épée Kokiri", "Kokiri-Schwert" }, ITEMTYPE_EQUIP, GI_SWORD_KOKIRI, true, LOGIC_KOKIRI_SWORD, RHT_KOKIRI_SWORD, ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MASTER_SWORD] = Item(RG_MASTER_SWORD, Text{ "Master Sword", "Épée de Legende", "Master-Schwert"}, ITEMTYPE_EQUIP, 0xE0, true, LOGIC_MASTER_SWORD, RHT_MASTER_SWORD, ITEM_SWORD_MASTER, OBJECT_TOKI_OBJECTS, GID_SWORD_BGS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_NONE] = Item(RG_NONE, ITEMTYPE_EVENT, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_NONE, ITEM_NONE, 0, 0, 0, 0, 0, ITEM_CATEGORY_JUNK, MOD_NONE); + // Randomizer Get Randomizer Get Type Get Item ID Adv. Logic Value Hint Text Key Item ID Object ID Draw ID Text ID field Chest Animation Item Category Mod Index + itemTable[RG_KOKIRI_SWORD] = Item(RG_KOKIRI_SWORD, ITEMTYPE_EQUIP, GI_SWORD_KOKIRI, true, LOGIC_KOKIRI_SWORD, RHT_KOKIRI_SWORD, ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MASTER_SWORD] = Item(RG_MASTER_SWORD, ITEMTYPE_EQUIP, 0xE0, true, LOGIC_MASTER_SWORD, RHT_MASTER_SWORD, ITEM_SWORD_MASTER, OBJECT_TOKI_OBJECTS, GID_SWORD_BGS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MASTER_SWORD].SetCustomDrawFunc(Randomizer_DrawMasterSword); - itemTable[RG_GIANTS_KNIFE] = Item(RG_GIANTS_KNIFE, Text{ "Giant's Knife", "Lame des Géants", "Langschwert" }, ITEMTYPE_EQUIP, GI_SWORD_KNIFE, true, LOGIC_NONE, RHT_GIANTS_KNIFE, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x4B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIGGORON_SWORD] = Item(RG_BIGGORON_SWORD, Text{ "Biggoron's Sword", "Épée de Biggoron", "Biggoron-Schwert" }, ITEMTYPE_EQUIP, GI_SWORD_BGS, true, LOGIC_BIGGORON_SWORD, RHT_BIGGORON_SWORD, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x0C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_DEKU_SHIELD] = Item(RG_DEKU_SHIELD, Text{ "Deku Shield", "Bouclier Mojo", "Deku-Schild" }, ITEMTYPE_EQUIP, GI_SHIELD_DEKU, false, LOGIC_DEKU_SHIELD, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_HYLIAN_SHIELD] = Item(RG_HYLIAN_SHIELD, Text{ "Hylian Shield", "Bouclier Hylien", "Hylia-Schild" }, ITEMTYPE_EQUIP, GI_SHIELD_HYLIAN, false, LOGIC_HYLIAN_SHIELD, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_MIRROR_SHIELD] = Item(RG_MIRROR_SHIELD, Text{ "Mirror Shield", "Bouclier Miroir", "Spiegelschild" }, ITEMTYPE_EQUIP, GI_SHIELD_MIRROR, true, LOGIC_MIRROR_SHIELD, RHT_MIRROR_SHIELD, ITEM_SHIELD_MIRROR, OBJECT_GI_SHIELD_3, GID_SHIELD_MIRROR, 0x4E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GORON_TUNIC] = Item(RG_GORON_TUNIC, Text{ "Goron Tunic", "Tunique Goron", "Goronen-Tunika" }, ITEMTYPE_EQUIP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_ZORA_TUNIC] = Item(RG_ZORA_TUNIC, Text{ "Zora Tunic", "Tunique Zora", "Zora-Tunika" }, ITEMTYPE_EQUIP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_IRON_BOOTS] = Item(RG_IRON_BOOTS, Text{ "Iron Boots", "Bottes de plomb", "Eisenstiefel" }, ITEMTYPE_EQUIP, GI_BOOTS_IRON, true, LOGIC_IRON_BOOTS, RHT_IRON_BOOTS, ITEM_BOOTS_IRON, OBJECT_GI_BOOTS_2, GID_BOOTS_IRON, 0x53, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_HOVER_BOOTS] = Item(RG_HOVER_BOOTS, Text{ "Hover Boots", "Bottes de airs", "Gleitstiefel" }, ITEMTYPE_EQUIP, GI_BOOTS_HOVER, true, LOGIC_HOVER_BOOTS, RHT_HOVER_BOOTS, ITEM_BOOTS_HOVER, OBJECT_GI_HOVERBOOTS, GID_BOOTS_HOVER, 0x54, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOOMERANG] = Item(RG_BOOMERANG, Text{ "Boomerang", "Boomerang", "Bumerang" }, ITEMTYPE_ITEM, GI_BOOMERANG, true, LOGIC_BOOMERANG, RHT_BOOMERANG, ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LENS_OF_TRUTH] = Item(RG_LENS_OF_TRUTH, Text{ "Lens of Truth", "Monocle de Vérité", "Auge der Wahrheit" }, ITEMTYPE_ITEM, GI_LENS, true, LOGIC_LENS_OF_TRUTH, RHT_LENS_OF_TRUTH, ITEM_LENS, OBJECT_GI_GLASSES, GID_LENS, 0x39, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MEGATON_HAMMER] = Item(RG_MEGATON_HAMMER, Text{ "Megaton Hammer", "Masse des Titans", "Stahlhammer" }, ITEMTYPE_ITEM, GI_HAMMER, true, LOGIC_HAMMER, RHT_MEGATON_HAMMER, ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_STONE_OF_AGONY] = Item(RG_STONE_OF_AGONY, Text{ "Stone of Agony", "Pierre de Souffrance", "Stein des Wissens" }, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_STONE_OF_AGONY, RHT_STONE_OF_AGONY, ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_DINS_FIRE] = Item(RG_DINS_FIRE, Text{ "Din's Fire", "Feu de Din", "Dins Feuerinferno" }, ITEMTYPE_ITEM, GI_DINS_FIRE, true, LOGIC_DINS_FIRE, RHT_DINS_FIRE, ITEM_DINS_FIRE, OBJECT_GI_GODDESS, GID_DINS_FIRE, 0xAD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FARORES_WIND] = Item(RG_FARORES_WIND, Text{ "Farore's Wind", "Vent de Farore", "Farores Donnersturm" }, ITEMTYPE_ITEM, GI_FARORES_WIND, true, LOGIC_FARORES_WIND, RHT_FARORES_WIND, ITEM_FARORES_WIND, OBJECT_GI_GODDESS, GID_FARORES_WIND, 0xAE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_NAYRUS_LOVE] = Item(RG_NAYRUS_LOVE, Text{ "Nayru's Love", "Amour de Nayru", "Nayrus Umarmung" }, ITEMTYPE_ITEM, GI_NAYRUS_LOVE, true, LOGIC_NAYRUS_LOVE, RHT_NAYRUS_LOVE, ITEM_NAYRUS_LOVE, OBJECT_GI_GODDESS, GID_NAYRUS_LOVE, 0xAF, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FIRE_ARROWS] = Item(RG_FIRE_ARROWS, Text{ "Fire Arrow", "Flèche de Feu", "Feuerpfeil" }, ITEMTYPE_ITEM, GI_ARROW_FIRE, true, LOGIC_FIRE_ARROWS, RHT_FIRE_ARROWS, ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ICE_ARROWS] = Item(RG_ICE_ARROWS, Text{ "Ice Arrow", "Flèche de Glace", "Eispfeil" }, ITEMTYPE_ITEM, GI_ARROW_ICE, true, LOGIC_ICE_ARROWS, RHT_ICE_ARROWS, ITEM_ARROW_ICE, OBJECT_GI_M_ARROW, GID_ARROW_ICE, 0x71, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LIGHT_ARROWS] = Item(RG_LIGHT_ARROWS, Text{ "Light Arrow", "Flèche de Lumière", "Lichtpfeil" }, ITEMTYPE_ITEM, GI_ARROW_LIGHT, true, LOGIC_LIGHT_ARROWS, RHT_LIGHT_ARROWS, ITEM_ARROW_LIGHT, OBJECT_GI_M_ARROW, GID_ARROW_LIGHT, 0x72, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GERUDO_MEMBERSHIP_CARD] = Item(RG_GERUDO_MEMBERSHIP_CARD, Text{ "Gerudo Membership Card", "Carte Gerudo", "Gerudo-Pass" }, ITEMTYPE_ITEM, GI_GERUDO_CARD, true, LOGIC_GERUDO_CARD, RHT_GERUDO_MEMBERSHIP_CARD, ITEM_GERUDO_CARD, OBJECT_GI_GERUDO, GID_GERUDO_CARD, 0x7B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MAGIC_BEAN] = Item(RG_MAGIC_BEAN, Text{ "Magic Bean", "Haricots Magiques", "Wundererbse" }, ITEMTYPE_ITEM, GI_BEAN, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN, ITEM_BEAN, OBJECT_GI_BEAN, GID_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MAGIC_BEAN_PACK] = Item(RG_MAGIC_BEAN_PACK, Text{ "Magic Bean Pack", "Paquet de Haricots Magiques", "Wundererbsen-Packung" }, ITEMTYPE_ITEM, RG_MAGIC_BEAN_PACK, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN_PACK, RG_MAGIC_BEAN_PACK, OBJECT_GI_BEAN, GID_BEAN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_DOUBLE_DEFENSE] = Item(RG_DOUBLE_DEFENSE, Text{ "Double Defense", "Double Défence", "Doppelte Verteidigung" }, ITEMTYPE_ITEM, RG_DOUBLE_DEFENSE, true, LOGIC_DOUBLE_DEFENSE, RHT_DOUBLE_DEFENSE, RG_DOUBLE_DEFENSE, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xE9, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_GIANTS_KNIFE] = Item(RG_GIANTS_KNIFE, ITEMTYPE_EQUIP, GI_SWORD_KNIFE, true, LOGIC_NONE, RHT_GIANTS_KNIFE, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x4B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BIGGORON_SWORD] = Item(RG_BIGGORON_SWORD, ITEMTYPE_EQUIP, GI_SWORD_BGS, true, LOGIC_BIGGORON_SWORD, RHT_BIGGORON_SWORD, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x0C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_DEKU_SHIELD] = Item(RG_DEKU_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_DEKU, false, LOGIC_DEKU_SHIELD, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_HYLIAN_SHIELD] = Item(RG_HYLIAN_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_HYLIAN, false, LOGIC_HYLIAN_SHIELD, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_MIRROR_SHIELD] = Item(RG_MIRROR_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_MIRROR, true, LOGIC_MIRROR_SHIELD, RHT_MIRROR_SHIELD, ITEM_SHIELD_MIRROR, OBJECT_GI_SHIELD_3, GID_SHIELD_MIRROR, 0x4E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GORON_TUNIC] = Item(RG_GORON_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_ZORA_TUNIC] = Item(RG_ZORA_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_IRON_BOOTS] = Item(RG_IRON_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_IRON, true, LOGIC_IRON_BOOTS, RHT_IRON_BOOTS, ITEM_BOOTS_IRON, OBJECT_GI_BOOTS_2, GID_BOOTS_IRON, 0x53, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_HOVER_BOOTS] = Item(RG_HOVER_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_HOVER, true, LOGIC_HOVER_BOOTS, RHT_HOVER_BOOTS, ITEM_BOOTS_HOVER, OBJECT_GI_HOVERBOOTS, GID_BOOTS_HOVER, 0x54, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOOMERANG] = Item(RG_BOOMERANG, ITEMTYPE_ITEM, GI_BOOMERANG, true, LOGIC_BOOMERANG, RHT_BOOMERANG, ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_LENS_OF_TRUTH] = Item(RG_LENS_OF_TRUTH, ITEMTYPE_ITEM, GI_LENS, true, LOGIC_LENS_OF_TRUTH, RHT_LENS_OF_TRUTH, ITEM_LENS, OBJECT_GI_GLASSES, GID_LENS, 0x39, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MEGATON_HAMMER] = Item(RG_MEGATON_HAMMER, ITEMTYPE_ITEM, GI_HAMMER, true, LOGIC_HAMMER, RHT_MEGATON_HAMMER, ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_STONE_OF_AGONY] = Item(RG_STONE_OF_AGONY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_STONE_OF_AGONY, RHT_STONE_OF_AGONY, ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_DINS_FIRE] = Item(RG_DINS_FIRE, ITEMTYPE_ITEM, GI_DINS_FIRE, true, LOGIC_DINS_FIRE, RHT_DINS_FIRE, ITEM_DINS_FIRE, OBJECT_GI_GODDESS, GID_DINS_FIRE, 0xAD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FARORES_WIND] = Item(RG_FARORES_WIND, ITEMTYPE_ITEM, GI_FARORES_WIND, true, LOGIC_FARORES_WIND, RHT_FARORES_WIND, ITEM_FARORES_WIND, OBJECT_GI_GODDESS, GID_FARORES_WIND, 0xAE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_NAYRUS_LOVE] = Item(RG_NAYRUS_LOVE, ITEMTYPE_ITEM, GI_NAYRUS_LOVE, true, LOGIC_NAYRUS_LOVE, RHT_NAYRUS_LOVE, ITEM_NAYRUS_LOVE, OBJECT_GI_GODDESS, GID_NAYRUS_LOVE, 0xAF, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FIRE_ARROWS] = Item(RG_FIRE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_FIRE, true, LOGIC_FIRE_ARROWS, RHT_FIRE_ARROWS, ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ICE_ARROWS] = Item(RG_ICE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_ICE, true, LOGIC_ICE_ARROWS, RHT_ICE_ARROWS, ITEM_ARROW_ICE, OBJECT_GI_M_ARROW, GID_ARROW_ICE, 0x71, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_LIGHT_ARROWS] = Item(RG_LIGHT_ARROWS, ITEMTYPE_ITEM, GI_ARROW_LIGHT, true, LOGIC_LIGHT_ARROWS, RHT_LIGHT_ARROWS, ITEM_ARROW_LIGHT, OBJECT_GI_M_ARROW, GID_ARROW_LIGHT, 0x72, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GERUDO_MEMBERSHIP_CARD] = Item(RG_GERUDO_MEMBERSHIP_CARD, ITEMTYPE_ITEM, GI_GERUDO_CARD, true, LOGIC_GERUDO_CARD, RHT_GERUDO_MEMBERSHIP_CARD, ITEM_GERUDO_CARD, OBJECT_GI_GERUDO, GID_GERUDO_CARD, 0x7B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MAGIC_BEAN] = Item(RG_MAGIC_BEAN, ITEMTYPE_ITEM, GI_BEAN, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN, ITEM_BEAN, OBJECT_GI_BEAN, GID_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MAGIC_BEAN_PACK] = Item(RG_MAGIC_BEAN_PACK, ITEMTYPE_ITEM, RG_MAGIC_BEAN_PACK, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN_PACK, RG_MAGIC_BEAN_PACK, OBJECT_GI_BEAN, GID_BEAN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DOUBLE_DEFENSE] = Item(RG_DOUBLE_DEFENSE, ITEMTYPE_ITEM, RG_DOUBLE_DEFENSE, true, LOGIC_DOUBLE_DEFENSE, RHT_DOUBLE_DEFENSE, RG_DOUBLE_DEFENSE, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xE9, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DOUBLE_DEFENSE].SetCustomDrawFunc(Randomizer_DrawDoubleDefense); // Trade Quest Items - itemTable[RG_WEIRD_EGG] = Item(RG_WEIRD_EGG, Text{ "Weird Egg", "Oeuf Curieux", "Seltsames Ei" }, ITEMTYPE_ITEM, GI_WEIRD_EGG, true, LOGIC_WEIRD_EGG, RHT_WEIRD_EGG, ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ZELDAS_LETTER] = Item(RG_ZELDAS_LETTER, Text{ "Zelda's Letter", "Lettre de Zelda", "Zeldas Brief" }, ITEMTYPE_ITEM, GI_LETTER_ZELDA, true, LOGIC_ZELDAS_LETTER, RHT_ZELDAS_LETTER, ITEM_LETTER_ZELDA, OBJECT_GI_LETTER, GID_LETTER_ZELDA, 0x69, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_POCKET_EGG] = Item(RG_POCKET_EGG, Text{ "Pocket Egg", "Oeuf de poche", "Ei" }, ITEMTYPE_ITEM, GI_POCKET_EGG, true, LOGIC_POCKET_EGG, RHT_POCKET_EGG, ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_COJIRO] = Item(RG_COJIRO, Text{ "Cojiro", "P'tit Poulet", "Henni" }, ITEMTYPE_ITEM, GI_COJIRO, true, LOGIC_COJIRO, RHT_COJIRO, ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ODD_MUSHROOM] = Item(RG_ODD_MUSHROOM, Text{ "Odd Mushroom", "Champigon Suspect", "Schimmelpilz" }, ITEMTYPE_ITEM, GI_ODD_MUSHROOM, true, LOGIC_ODD_MUSHROOM, RHT_ODD_MUSHROOM, ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ODD_POTION] = Item(RG_ODD_POTION, Text{ "Odd Potion", "Mixture Suspecte", "Modertrank" }, ITEMTYPE_ITEM, GI_ODD_POTION, true, LOGIC_ODD_POULTICE, RHT_ODD_POTION, ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_POACHERS_SAW] = Item(RG_POACHERS_SAW, Text{ "Poacher's Saw", "Scie du Chasseur", "Säge" }, ITEMTYPE_ITEM, GI_SAW, true, LOGIC_POACHERS_SAW, RHT_POACHERS_SAW, ITEM_SAW, OBJECT_GI_SAW, GID_SAW, 0x05, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BROKEN_SWORD] = Item(RG_BROKEN_SWORD, Text{ "Broken Goron's Sword", "Épée Brisée de Goron", "Zerbrochenes Goronen-Schwert" }, ITEMTYPE_ITEM, GI_SWORD_BROKEN, true, LOGIC_BROKEN_SWORD, RHT_BROKEN_SWORD, ITEM_SWORD_BROKEN, OBJECT_GI_BROKENSWORD, GID_SWORD_BROKEN, 0x08, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_PRESCRIPTION] = Item(RG_PRESCRIPTION, Text{ "Prescription", "Ordonnance", "Rezept" }, ITEMTYPE_ITEM, GI_PRESCRIPTION, true, LOGIC_PRESCRIPTION, RHT_PRESCRIPTION, ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_EYEBALL_FROG] = Item(RG_EYEBALL_FROG, Text{ "Eyeball Frog", "Crapaud-qui-louche", "Glotzfrosch" }, ITEMTYPE_ITEM, GI_FROG, true, LOGIC_EYEBALL_FROG, RHT_EYEBALL_FROG, ITEM_FROG, OBJECT_GI_FROG, GID_FROG, 0x0D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_EYEDROPS] = Item(RG_EYEDROPS, Text{ "World's Finest Eyedrops", "Super Gouttes", "Augentropfen" }, ITEMTYPE_ITEM, GI_EYEDROPS, true, LOGIC_EYEDROPS, RHT_EYEDROPS, ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_CLAIM_CHECK] = Item(RG_CLAIM_CHECK, Text{ "Claim Check", "Certificat", "Zertifikat" }, ITEMTYPE_ITEM, GI_CLAIM_CHECK, true, LOGIC_CLAIM_CHECK, RHT_CLAIM_CHECK, ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_WEIRD_EGG] = Item(RG_WEIRD_EGG, ITEMTYPE_ITEM, GI_WEIRD_EGG, true, LOGIC_WEIRD_EGG, RHT_WEIRD_EGG, ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ZELDAS_LETTER] = Item(RG_ZELDAS_LETTER, ITEMTYPE_ITEM, GI_LETTER_ZELDA, true, LOGIC_ZELDAS_LETTER, RHT_ZELDAS_LETTER, ITEM_LETTER_ZELDA, OBJECT_GI_LETTER, GID_LETTER_ZELDA, 0x69, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_POCKET_EGG] = Item(RG_POCKET_EGG, ITEMTYPE_ITEM, GI_POCKET_EGG, true, LOGIC_POCKET_EGG, RHT_POCKET_EGG, ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_COJIRO] = Item(RG_COJIRO, ITEMTYPE_ITEM, GI_COJIRO, true, LOGIC_COJIRO, RHT_COJIRO, ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ODD_MUSHROOM] = Item(RG_ODD_MUSHROOM, ITEMTYPE_ITEM, GI_ODD_MUSHROOM, true, LOGIC_ODD_MUSHROOM, RHT_ODD_MUSHROOM, ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ODD_POTION] = Item(RG_ODD_POTION, ITEMTYPE_ITEM, GI_ODD_POTION, true, LOGIC_ODD_POULTICE, RHT_ODD_POTION, ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_POACHERS_SAW] = Item(RG_POACHERS_SAW, ITEMTYPE_ITEM, GI_SAW, true, LOGIC_POACHERS_SAW, RHT_POACHERS_SAW, ITEM_SAW, OBJECT_GI_SAW, GID_SAW, 0x05, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BROKEN_SWORD] = Item(RG_BROKEN_SWORD, ITEMTYPE_ITEM, GI_SWORD_BROKEN, true, LOGIC_BROKEN_SWORD, RHT_BROKEN_SWORD, ITEM_SWORD_BROKEN, OBJECT_GI_BROKENSWORD, GID_SWORD_BROKEN, 0x08, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_PRESCRIPTION] = Item(RG_PRESCRIPTION, ITEMTYPE_ITEM, GI_PRESCRIPTION, true, LOGIC_PRESCRIPTION, RHT_PRESCRIPTION, ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_EYEBALL_FROG] = Item(RG_EYEBALL_FROG, ITEMTYPE_ITEM, GI_FROG, true, LOGIC_EYEBALL_FROG, RHT_EYEBALL_FROG, ITEM_FROG, OBJECT_GI_FROG, GID_FROG, 0x0D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_EYEDROPS] = Item(RG_EYEDROPS, ITEMTYPE_ITEM, GI_EYEDROPS, true, LOGIC_EYEDROPS, RHT_EYEDROPS, ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_CLAIM_CHECK] = Item(RG_CLAIM_CHECK, ITEMTYPE_ITEM, GI_CLAIM_CHECK, true, LOGIC_CLAIM_CHECK, RHT_CLAIM_CHECK, ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Skulltula Token - itemTable[RG_GOLD_SKULLTULA_TOKEN] = Item(RG_GOLD_SKULLTULA_TOKEN, Text{ "Gold Skulltula Token", "Symbole de Skulltula d'Or", "Goldenes Skulltula-Symbol" }, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, true, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULLTULA_TOKEN, MOD_NONE); + itemTable[RG_GOLD_SKULLTULA_TOKEN] = Item(RG_GOLD_SKULLTULA_TOKEN, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, true, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULLTULA_TOKEN, MOD_NONE); // Progressive Items - itemTable[RG_PROGRESSIVE_HOOKSHOT] = Item(RG_PROGRESSIVE_HOOKSHOT, Text{ "Progressive Hookshot", "Grappin (prog.)", "Progressiver Fanghaken" }, ITEMTYPE_ITEM, 0x80, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_PROGRESSIVE_HOOKSHOT, true); - itemTable[RG_PROGRESSIVE_STRENGTH] = Item(RG_PROGRESSIVE_STRENGTH, Text{ "Strength Upgrade", "Amélioration de Force (prog.)", "Progressives Kraft-Upgrade" }, ITEMTYPE_ITEM, 0x81, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_PROGRESSIVE_STRENGTH, true); - itemTable[RG_PROGRESSIVE_BOMB_BAG] = Item(RG_PROGRESSIVE_BOMB_BAG, Text{ "Progressive Bomb Bag", "Sac de Bombes (prog.)", "Progressive Bombentasche" }, ITEMTYPE_ITEM, 0x82, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_PROGRESSIVE_BOMB_BAG, true); - itemTable[RG_PROGRESSIVE_BOW] = Item(RG_PROGRESSIVE_BOW, Text{ "Progressive Bow", "Arc (prog.)", "Progressiver Bogen" }, ITEMTYPE_ITEM, 0x83, true, LOGIC_PROGRESSIVE_BOW, RHT_PROGRESSIVE_BOW, true); - itemTable[RG_PROGRESSIVE_SLINGSHOT] = Item(RG_PROGRESSIVE_SLINGSHOT, Text{ "Progressive Slingshot", "Lance-Pierre (prog.)", "Progressive Steinschleuder" }, ITEMTYPE_ITEM, 0x84, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_PROGRESSIVE_SLINGSHOT, true); - itemTable[RG_PROGRESSIVE_WALLET] = Item(RG_PROGRESSIVE_WALLET, Text{ "Progressive Wallet", "Bourse (prog.)", "Progressive Geldbörse" }, ITEMTYPE_ITEM, 0x85, true, LOGIC_PROGRESSIVE_WALLET, RHT_PROGRESSIVE_WALLET, true); - itemTable[RG_PROGRESSIVE_SCALE] = Item(RG_PROGRESSIVE_SCALE, Text{ "Progressive Scale", "Écaille (prog.)", "Progressive Schuppe" }, ITEMTYPE_ITEM, 0x86, true, LOGIC_PROGRESSIVE_SCALE, RHT_PROGRESSIVE_SCALE, true); - itemTable[RG_PROGRESSIVE_NUT_UPGRADE] = Item(RG_PROGRESSIVE_NUT_UPGRADE, Text{ "Progressive Nut Capacity", "Capacité de Noix (prog.)", "Progressive Nuß-Kapazität" }, ITEMTYPE_ITEM, 0x87, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_PROGRESSIVE_NUT_UPGRADE, true); - itemTable[RG_PROGRESSIVE_STICK_UPGRADE] = Item(RG_PROGRESSIVE_STICK_UPGRADE, Text{ "Progressive Stick Capacity", "Capacité de Bâtons (prog.)", "Progressive Stab-Kapazität" }, ITEMTYPE_ITEM, 0x88, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_PROGRESSIVE_STICK_UPGRADE, true); - itemTable[RG_PROGRESSIVE_BOMBCHUS] = Item(RG_PROGRESSIVE_BOMBCHUS, Text{ "Progressive Bombchu", "Missiles (prog.)", "Progressive Krabbelminen" }, ITEMTYPE_ITEM, 0x89, true, LOGIC_BOMBCHUS, RHT_PROGRESSIVE_BOMBCHUS, true); - itemTable[RG_PROGRESSIVE_MAGIC_METER] = Item(RG_PROGRESSIVE_MAGIC_METER, Text{ "Progressive Magic Meter", "Jauge de Magie (prog.)", "Progressives Magisches Maß" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_PROGRESSIVE_MAGIC_METER, true); - itemTable[RG_PROGRESSIVE_OCARINA] = Item(RG_PROGRESSIVE_OCARINA, Text{ "Progressive Ocarina", "Ocarina (prog.)", "Progressive Okarina" }, ITEMTYPE_ITEM, 0x8B, true, LOGIC_PROGRESSIVE_OCARINA, RHT_PROGRESSIVE_OCARINA, true); - itemTable[RG_PROGRESSIVE_GORONSWORD] = Item(RG_PROGRESSIVE_GORONSWORD, Text{ "Progressive Goron Sword", "Épée Goron (prog.)", "Progressives Goronen-Schwert" }, ITEMTYPE_ITEM, 0xD4, true, LOGIC_PROGRESSIVE_GIANT_KNIFE, RHT_PROGRESSIVE_GORONSWORD, true); + itemTable[RG_PROGRESSIVE_HOOKSHOT] = Item(RG_PROGRESSIVE_HOOKSHOT, ITEMTYPE_ITEM, 0x80, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_PROGRESSIVE_HOOKSHOT, true); + itemTable[RG_PROGRESSIVE_STRENGTH] = Item(RG_PROGRESSIVE_STRENGTH, ITEMTYPE_ITEM, 0x81, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_PROGRESSIVE_STRENGTH, true); + itemTable[RG_PROGRESSIVE_BOMB_BAG] = Item(RG_PROGRESSIVE_BOMB_BAG, ITEMTYPE_ITEM, 0x82, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_PROGRESSIVE_BOMB_BAG, true); + itemTable[RG_PROGRESSIVE_BOW] = Item(RG_PROGRESSIVE_BOW, ITEMTYPE_ITEM, 0x83, true, LOGIC_PROGRESSIVE_BOW, RHT_PROGRESSIVE_BOW, true); + itemTable[RG_PROGRESSIVE_SLINGSHOT] = Item(RG_PROGRESSIVE_SLINGSHOT, ITEMTYPE_ITEM, 0x84, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_PROGRESSIVE_SLINGSHOT, true); + itemTable[RG_PROGRESSIVE_WALLET] = Item(RG_PROGRESSIVE_WALLET, ITEMTYPE_ITEM, 0x85, true, LOGIC_PROGRESSIVE_WALLET, RHT_PROGRESSIVE_WALLET, true); + itemTable[RG_PROGRESSIVE_SCALE] = Item(RG_PROGRESSIVE_SCALE, ITEMTYPE_ITEM, 0x86, true, LOGIC_PROGRESSIVE_SCALE, RHT_PROGRESSIVE_SCALE, true); + itemTable[RG_PROGRESSIVE_NUT_BAG] = Item(RG_PROGRESSIVE_NUT_BAG, ITEMTYPE_ITEM, 0x87, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_PROGRESSIVE_NUT_UPGRADE, true); + itemTable[RG_PROGRESSIVE_STICK_BAG] = Item(RG_PROGRESSIVE_STICK_BAG, ITEMTYPE_ITEM, 0x88, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_PROGRESSIVE_STICK_UPGRADE, true); + itemTable[RG_PROGRESSIVE_BOMBCHUS] = Item(RG_PROGRESSIVE_BOMBCHUS, ITEMTYPE_ITEM, 0x89, true, LOGIC_BOMBCHUS, RHT_PROGRESSIVE_BOMBCHUS, true); + itemTable[RG_PROGRESSIVE_MAGIC] = Item(RG_PROGRESSIVE_MAGIC, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_PROGRESSIVE_MAGIC_METER, true); + itemTable[RG_PROGRESSIVE_OCARINA] = Item(RG_PROGRESSIVE_OCARINA, ITEMTYPE_ITEM, 0x8B, true, LOGIC_PROGRESSIVE_OCARINA, RHT_PROGRESSIVE_OCARINA, true); + itemTable[RG_PROGRESSIVE_GORONSWORD] = Item(RG_PROGRESSIVE_GORONSWORD, ITEMTYPE_ITEM, 0xD4, true, LOGIC_PROGRESSIVE_GORONSWORD, RHT_PROGRESSIVE_GORONSWORD, true); // Bottles - itemTable[RG_EMPTY_BOTTLE] = Item(RG_EMPTY_BOTTLE, Text{ "Empty Bottle", "Bouteille Vide", "Leere Flasche" }, ITEMTYPE_ITEM, GI_BOTTLE, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOTTLE_WITH_MILK] = Item(RG_BOTTLE_WITH_MILK, Text{ "Bottle with Milk", "Bouteille avec du Lait", "Flasche mit Milch" }, ITEMTYPE_ITEM, GI_MILK_BOTTLE, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOTTLE_WITH_RED_POTION] = Item(RG_BOTTLE_WITH_RED_POTION, Text{ "Bottle with Red Potion", "Bouteille avec une Potion Rouge", "Flasche mit rotem Elixier" }, ITEMTYPE_ITEM, 0x8C, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_RED_POTION, RG_BOTTLE_WITH_RED_POTION, OBJECT_GI_LIQUID, GID_POTION_RED, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_GREEN_POTION] = Item(RG_BOTTLE_WITH_GREEN_POTION, Text{ "Bottle with Green Potion", "Bouteille avec une Potion Verte", "Flasche mit grünem Elixier" }, ITEMTYPE_ITEM, 0x8D, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_GREEN_POTION, RG_BOTTLE_WITH_GREEN_POTION, OBJECT_GI_LIQUID, GID_POTION_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_BLUE_POTION] = Item(RG_BOTTLE_WITH_BLUE_POTION, Text{ "Bottle with Blue Potion", "Bouteille avec une Potion Bleue", "Flasche mit blauem Elixier" }, ITEMTYPE_ITEM, 0x8E, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_POTION, RG_BOTTLE_WITH_BLUE_POTION, OBJECT_GI_LIQUID, GID_POTION_BLUE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_FAIRY] = Item(RG_BOTTLE_WITH_FAIRY, Text{ "Bottle with Fairy", "Bouteille avec une Fée", "Flasche mit Fee" }, ITEMTYPE_ITEM, 0x8F, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FAIRY, RG_BOTTLE_WITH_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_FISH] = Item(RG_BOTTLE_WITH_FISH, Text{ "Bottle with Fish", "Bouteille avec un Poisson", "Flasche mit Fisch" }, ITEMTYPE_ITEM, 0x90, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FISH, RG_BOTTLE_WITH_FISH, OBJECT_GI_FISH, GID_FISH, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_BLUE_FIRE] = Item(RG_BOTTLE_WITH_BLUE_FIRE, Text{ "Bottle with Blue Fire", "Bouteille avec une Flamme Bleue", "Flasche mit blauem Feuer" }, ITEMTYPE_ITEM, 0x91, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_FIRE, RG_BOTTLE_WITH_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_BUGS] = Item(RG_BOTTLE_WITH_BUGS, Text{ "Bottle with Bugs", "Bouteille avec des Insectes", "Flasche mit Wanzen" }, ITEMTYPE_ITEM, 0x92, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BUGS, RG_BOTTLE_WITH_BUGS, OBJECT_GI_INSECT, GID_BUG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_POE] = Item(RG_BOTTLE_WITH_POE, Text{ "Bottle with Poe", "Bouteille avec un Esprit", "Flasche mit einem Geist" }, ITEMTYPE_ITEM, 0x94, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_POE, RG_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_RUTOS_LETTER] = Item(RG_RUTOS_LETTER, Text{ "Bottle with Ruto's Letter", "Bouteille avec la Lettre de Ruto", "Flasche mit Rutos Brief" }, ITEMTYPE_ITEM, GI_LETTER_RUTO, true, LOGIC_RUTOS_LETTER, RHT_RUTOS_LETTER, ITEM_LETTER_RUTO, OBJECT_GI_BOTTLE_LETTER, GID_LETTER_RUTO, 0x99, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOTTLE_WITH_BIG_POE] = Item(RG_BOTTLE_WITH_BIG_POE, Text{ "Bottle with Big Poe", "Bouteille avec une Âme", "Flasche mit Seele" }, ITEMTYPE_ITEM, 0x93, true, LOGIC_BOTTLE_WITH_BIG_POE, RHT_BOTTLE_WITH_BIG_POE, RG_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_EMPTY_BOTTLE] = Item(RG_EMPTY_BOTTLE, ITEMTYPE_ITEM, GI_BOTTLE, true, LOGIC_BOTTLES, RHT_EMPTY_BOTTLE, ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOTTLE_WITH_MILK] = Item(RG_BOTTLE_WITH_MILK, ITEMTYPE_ITEM, GI_MILK_BOTTLE, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOTTLE_WITH_RED_POTION] = Item(RG_BOTTLE_WITH_RED_POTION, ITEMTYPE_ITEM, 0x8C, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_RED_POTION, RG_BOTTLE_WITH_RED_POTION, OBJECT_GI_LIQUID, GID_POTION_RED, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_GREEN_POTION] = Item(RG_BOTTLE_WITH_GREEN_POTION,ITEMTYPE_ITEM, 0x8D, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_GREEN_POTION, RG_BOTTLE_WITH_GREEN_POTION, OBJECT_GI_LIQUID, GID_POTION_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_BLUE_POTION] = Item(RG_BOTTLE_WITH_BLUE_POTION, ITEMTYPE_ITEM, 0x8E, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_POTION, RG_BOTTLE_WITH_BLUE_POTION, OBJECT_GI_LIQUID, GID_POTION_BLUE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_FAIRY] = Item(RG_BOTTLE_WITH_FAIRY, ITEMTYPE_ITEM, 0x8F, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FAIRY, RG_BOTTLE_WITH_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_FISH] = Item(RG_BOTTLE_WITH_FISH, ITEMTYPE_ITEM, 0x90, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FISH, RG_BOTTLE_WITH_FISH, OBJECT_GI_FISH, GID_FISH, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_BLUE_FIRE] = Item(RG_BOTTLE_WITH_BLUE_FIRE, ITEMTYPE_ITEM, 0x91, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_FIRE, RG_BOTTLE_WITH_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_BUGS] = Item(RG_BOTTLE_WITH_BUGS, ITEMTYPE_ITEM, 0x92, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BUGS, RG_BOTTLE_WITH_BUGS, OBJECT_GI_INSECT, GID_BUG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_POE] = Item(RG_BOTTLE_WITH_POE, ITEMTYPE_ITEM, 0x94, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_POE, RG_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_RUTOS_LETTER] = Item(RG_RUTOS_LETTER, ITEMTYPE_ITEM, GI_LETTER_RUTO, true, LOGIC_RUTOS_LETTER, RHT_RUTOS_LETTER, ITEM_LETTER_RUTO, OBJECT_GI_BOTTLE_LETTER, GID_LETTER_RUTO, 0x99, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOTTLE_WITH_BIG_POE] = Item(RG_BOTTLE_WITH_BIG_POE, ITEMTYPE_ITEM, 0x93, true, LOGIC_BOTTLE_WITH_BIG_POE, RHT_BOTTLE_WITH_BIG_POE, RG_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); // Songs - itemTable[RG_ZELDAS_LULLABY] = Item(RG_ZELDAS_LULLABY, Text{ "Zelda's Lullaby", "Berceuse de Zelda", "Zeldas Wiegenlied" }, ITEMTYPE_SONG, 0xC1, true, LOGIC_ZELDAS_LULLABY, RHT_ZELDAS_LULLABY, ITEM_SONG_LULLABY, OBJECT_GI_MELODY, GID_SONG_ZELDA, 0xD4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_EPONAS_SONG] = Item(RG_EPONAS_SONG, Text{ "Epona's Song", "Chant d'Epona", "Eponas Lied" }, ITEMTYPE_SONG, 0xC2, true, LOGIC_EPONAS_SONG, RHT_EPONAS_SONG, ITEM_SONG_EPONA, OBJECT_GI_MELODY, GID_SONG_EPONA, 0xD2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SARIAS_SONG] = Item(RG_SARIAS_SONG, Text{ "Saria's Song", "Chant de Saria", "Salias Lied" }, ITEMTYPE_SONG, 0xC3, true, LOGIC_SARIAS_SONG, RHT_SARIAS_SONG, ITEM_SONG_SARIA, OBJECT_GI_MELODY, GID_SONG_SARIA, 0xD1, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SUNS_SONG] = Item(RG_SUNS_SONG, Text{ "Sun's Song", "Chant du Soleil", "Hymne der Sonne" }, ITEMTYPE_SONG, 0xC4, true, LOGIC_SUNS_SONG, RHT_SUNS_SONG, ITEM_SONG_SUN, OBJECT_GI_MELODY, GID_SONG_SUN, 0xD3, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SONG_OF_TIME] = Item(RG_SONG_OF_TIME, Text{ "Song of Time", "Chant du Temps", "Hymne der Zeit" }, ITEMTYPE_SONG, 0xC5, true, LOGIC_SONG_OF_TIME, RHT_SONG_OF_TIME, ITEM_SONG_TIME, OBJECT_GI_MELODY, GID_SONG_TIME, 0xD5, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SONG_OF_STORMS] = Item(RG_SONG_OF_STORMS, Text{ "Song of Storms", "Chant des Tempêtes", "Hymne des Sturms" }, ITEMTYPE_SONG, 0xC6, true, LOGIC_SONG_OF_STORMS, RHT_SONG_OF_STORMS, ITEM_SONG_STORMS, OBJECT_GI_MELODY, GID_SONG_STORM, 0xD6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MINUET_OF_FOREST] = Item(RG_MINUET_OF_FOREST, Text{ "Minuet of Forest", "Menuet des Bois", "Menuett des Waldes" }, ITEMTYPE_SONG, 0xBB, true, LOGIC_MINUET_OF_FOREST, RHT_MINUET_OF_FOREST, ITEM_SONG_MINUET, OBJECT_GI_MELODY, GID_SONG_MINUET, 0x73, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOLERO_OF_FIRE] = Item(RG_BOLERO_OF_FIRE, Text{ "Bolero of Fire", "Boléro du Feu", "Bolero des Feuers" }, ITEMTYPE_SONG, 0xBC, true, LOGIC_BOLERO_OF_FIRE, RHT_BOLERO_OF_FIRE, ITEM_SONG_BOLERO, OBJECT_GI_MELODY, GID_SONG_BOLERO, 0x74, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SERENADE_OF_WATER] = Item(RG_SERENADE_OF_WATER, Text{ "Serenade of Water", "Sérénade de l'Eau", "Serenade des Wassers" }, ITEMTYPE_SONG, 0xBD, true, LOGIC_SERENADE_OF_WATER, RHT_SERENADE_OF_WATER, ITEM_SONG_SERENADE, OBJECT_GI_MELODY, GID_SONG_SERENADE, 0x75, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_NOCTURNE_OF_SHADOW] = Item(RG_NOCTURNE_OF_SHADOW, Text{ "Nocturne of Shadow", "Nocturne de l'Ombre", "Nocturne des Schattens" }, ITEMTYPE_SONG, 0xBF, true, LOGIC_NOCTURNE_OF_SHADOW, RHT_NOCTURNE_OF_SHADOW, ITEM_SONG_NOCTURNE, OBJECT_GI_MELODY, GID_SONG_NOCTURNE, 0x77, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_REQUIEM_OF_SPIRIT] = Item(RG_REQUIEM_OF_SPIRIT, Text{ "Requiem of Spirit", "Requiem des Esprits", "Requiem der Geister" }, ITEMTYPE_SONG, 0xBE, true, LOGIC_REQUIEM_OF_SPIRIT, RHT_REQUIEM_OF_SPIRIT, ITEM_SONG_REQUIEM, OBJECT_GI_MELODY, GID_SONG_REQUIEM, 0x76, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_PRELUDE_OF_LIGHT] = Item(RG_PRELUDE_OF_LIGHT, Text{ "Prelude of Light", "Prélude de la Lumière", "Kantate des Lichts" }, ITEMTYPE_SONG, 0xC0, true, LOGIC_PRELUDE_OF_LIGHT, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ZELDAS_LULLABY] = Item(RG_ZELDAS_LULLABY, ITEMTYPE_SONG, 0xC1, true, LOGIC_ZELDAS_LULLABY, RHT_ZELDAS_LULLABY, ITEM_SONG_LULLABY, OBJECT_GI_MELODY, GID_SONG_ZELDA, 0xD4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_EPONAS_SONG] = Item(RG_EPONAS_SONG, ITEMTYPE_SONG, 0xC2, true, LOGIC_EPONAS_SONG, RHT_EPONAS_SONG, ITEM_SONG_EPONA, OBJECT_GI_MELODY, GID_SONG_EPONA, 0xD2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SARIAS_SONG] = Item(RG_SARIAS_SONG, ITEMTYPE_SONG, 0xC3, true, LOGIC_SARIAS_SONG, RHT_SARIAS_SONG, ITEM_SONG_SARIA, OBJECT_GI_MELODY, GID_SONG_SARIA, 0xD1, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SUNS_SONG] = Item(RG_SUNS_SONG, ITEMTYPE_SONG, 0xC4, true, LOGIC_SUNS_SONG, RHT_SUNS_SONG, ITEM_SONG_SUN, OBJECT_GI_MELODY, GID_SONG_SUN, 0xD3, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SONG_OF_TIME] = Item(RG_SONG_OF_TIME, ITEMTYPE_SONG, 0xC5, true, LOGIC_SONG_OF_TIME, RHT_SONG_OF_TIME, ITEM_SONG_TIME, OBJECT_GI_MELODY, GID_SONG_TIME, 0xD5, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SONG_OF_STORMS] = Item(RG_SONG_OF_STORMS, ITEMTYPE_SONG, 0xC6, true, LOGIC_SONG_OF_STORMS, RHT_SONG_OF_STORMS, ITEM_SONG_STORMS, OBJECT_GI_MELODY, GID_SONG_STORM, 0xD6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MINUET_OF_FOREST] = Item(RG_MINUET_OF_FOREST, ITEMTYPE_SONG, 0xBB, true, LOGIC_MINUET_OF_FOREST, RHT_MINUET_OF_FOREST, ITEM_SONG_MINUET, OBJECT_GI_MELODY, GID_SONG_MINUET, 0x73, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOLERO_OF_FIRE] = Item(RG_BOLERO_OF_FIRE, ITEMTYPE_SONG, 0xBC, true, LOGIC_BOLERO_OF_FIRE, RHT_BOLERO_OF_FIRE, ITEM_SONG_BOLERO, OBJECT_GI_MELODY, GID_SONG_BOLERO, 0x74, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SERENADE_OF_WATER] = Item(RG_SERENADE_OF_WATER, ITEMTYPE_SONG, 0xBD, true, LOGIC_SERENADE_OF_WATER, RHT_SERENADE_OF_WATER, ITEM_SONG_SERENADE, OBJECT_GI_MELODY, GID_SONG_SERENADE, 0x75, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_NOCTURNE_OF_SHADOW] = Item(RG_NOCTURNE_OF_SHADOW, ITEMTYPE_SONG, 0xBF, true, LOGIC_NOCTURNE_OF_SHADOW, RHT_NOCTURNE_OF_SHADOW, ITEM_SONG_NOCTURNE, OBJECT_GI_MELODY, GID_SONG_NOCTURNE, 0x77, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_REQUIEM_OF_SPIRIT] = Item(RG_REQUIEM_OF_SPIRIT, ITEMTYPE_SONG, 0xBE, true, LOGIC_REQUIEM_OF_SPIRIT, RHT_REQUIEM_OF_SPIRIT, ITEM_SONG_REQUIEM, OBJECT_GI_MELODY, GID_SONG_REQUIEM, 0x76, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_PRELUDE_OF_LIGHT] = Item(RG_PRELUDE_OF_LIGHT, ITEMTYPE_SONG, 0xC0, true, LOGIC_PRELUDE_OF_LIGHT, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Maps and Compasses - itemTable[RG_DEKU_TREE_MAP] = Item(RG_DEKU_TREE_MAP, Text{ "Great Deku Tree Map", "Carte de l'Arbre Mojo", "Karte des Deku-Baums" }, ITEMTYPE_MAP, 0xA5, false, LOGIC_MAP_DEKU_TREE, RHT_DEKU_TREE_MAP, RG_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DEKU_TREE_MAP] = Item(RG_DEKU_TREE_MAP, ITEMTYPE_MAP, 0xA5, false, LOGIC_MAP_DEKU_TREE, RHT_DEKU_TREE_MAP, RG_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DEKU_TREE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_DODONGOS_CAVERN_MAP] = Item(RG_DODONGOS_CAVERN_MAP, Text{ "Dodongo's Cavern Map", "Carte de la Caverne Dodongo", "Karte der Dodongo-Höhle" }, ITEMTYPE_MAP, 0xA6, false, LOGIC_MAP_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_MAP, RG_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DODONGOS_CAVERN_MAP] = Item(RG_DODONGOS_CAVERN_MAP, ITEMTYPE_MAP, 0xA6, false, LOGIC_MAP_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_MAP, RG_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DODONGOS_CAVERN_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_JABU_JABUS_BELLY_MAP] = Item(RG_JABU_JABUS_BELLY_MAP, Text{ "Jabu-Jabu's Belly Map", "Carte du Ventre de Jabu-Jabu", "Karte des Jabu-Jabu-Bauchs" }, ITEMTYPE_MAP, 0xA7, false, LOGIC_MAP_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_MAP, RG_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_JABU_JABUS_BELLY_MAP] = Item(RG_JABU_JABUS_BELLY_MAP, ITEMTYPE_MAP, 0xA7, false, LOGIC_MAP_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_MAP, RG_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_JABU_JABUS_BELLY_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_FOREST_TEMPLE_MAP] = Item(RG_FOREST_TEMPLE_MAP, Text{ "Forest Temple Map", "Carte du Temple de la Forêt", "Karte des Waldtempels" }, ITEMTYPE_MAP, 0xA8, false, LOGIC_MAP_FOREST_TEMPLE, RHT_FOREST_TEMPLE_MAP, RG_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_MAP] = Item(RG_FOREST_TEMPLE_MAP, ITEMTYPE_MAP, 0xA8, false, LOGIC_MAP_FOREST_TEMPLE, RHT_FOREST_TEMPLE_MAP, RG_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_FIRE_TEMPLE_MAP] = Item(RG_FIRE_TEMPLE_MAP, Text{ "Fire Temple Map", "Carte due Temple de Feu", "Karte des Feuertempels" }, ITEMTYPE_MAP, 0xA9, false, LOGIC_MAP_FIRE_TEMPLE, RHT_FIRE_TEMPLE_MAP, RG_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_MAP] = Item(RG_FIRE_TEMPLE_MAP, ITEMTYPE_MAP, 0xA9, false, LOGIC_MAP_FIRE_TEMPLE, RHT_FIRE_TEMPLE_MAP, RG_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_WATER_TEMPLE_MAP] = Item(RG_WATER_TEMPLE_MAP, Text{ "Water Temple Map", "Carte du Temple de l'Eau", "Karte des Wassertempels" }, ITEMTYPE_MAP, 0xAA, false, LOGIC_MAP_WATER_TEMPLE, RHT_WATER_TEMPLE_MAP, RG_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_MAP] = Item(RG_WATER_TEMPLE_MAP, ITEMTYPE_MAP, 0xAA, false, LOGIC_MAP_WATER_TEMPLE, RHT_WATER_TEMPLE_MAP, RG_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_SPIRIT_TEMPLE_MAP] = Item(RG_SPIRIT_TEMPLE_MAP, Text{ "Spirit Temple Map", "Carte due Temple de l'Esprit", "Karte des Geistertempels" }, ITEMTYPE_MAP, 0xAB, false, LOGIC_MAP_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_MAP, RG_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_MAP] = Item(RG_SPIRIT_TEMPLE_MAP, ITEMTYPE_MAP, 0xAB, false, LOGIC_MAP_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_MAP, RG_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_SHADOW_TEMPLE_MAP] = Item(RG_SHADOW_TEMPLE_MAP, Text{ "Shadow Temple Map", "Carte du Temple de l'Ombre", "Karte des Schattentempels" }, ITEMTYPE_MAP, 0xAC, false, LOGIC_MAP_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_MAP, RG_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_MAP] = Item(RG_SHADOW_TEMPLE_MAP, ITEMTYPE_MAP, 0xAC, false, LOGIC_MAP_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_MAP, RG_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_BOTTOM_OF_THE_WELL_MAP] = Item(RG_BOTTOM_OF_THE_WELL_MAP, Text{ "Bottom of the Well Map", "Carte du Puits", "Karte des Grund des Brunnens" }, ITEMTYPE_MAP, 0xAD, false, LOGIC_MAP_BOTTOM_OF_THE_WELL, RHT_BOTTOM_OF_THE_WELL_MAP, RG_BOTTOM_OF_THE_WELL_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOTTOM_OF_THE_WELL_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_ICE_CAVERN_MAP] = Item(RG_ICE_CAVERN_MAP, Text{ "Ice Cavern Map", "Carte de la Caverne Polaire", "Karte der Eishöhle" }, ITEMTYPE_MAP, 0xAE, false, LOGIC_MAP_ICE_CAVERN, RHT_ICE_CAVERN_MAP, RG_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOTW_MAP] = Item(RG_BOTW_MAP, ITEMTYPE_MAP, 0xAD, false, LOGIC_MAP_BOTW, RHT_BOTW_MAP, RG_BOTW_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOTW_MAP].SetCustomDrawFunc(Randomizer_DrawMap); + itemTable[RG_ICE_CAVERN_MAP] = Item(RG_ICE_CAVERN_MAP, ITEMTYPE_MAP, 0xAE, false, LOGIC_MAP_ICE_CAVERN, RHT_ICE_CAVERN_MAP, RG_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_ICE_CAVERN_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_DEKU_TREE_COMPASS] = Item(RG_DEKU_TREE_COMPASS, Text{ "Great Deku Tree Compass", "Boussole de l'Arbre Mojo", "Kompaß des Deku-Baums" }, ITEMTYPE_COMPASS, 0x9B, false, LOGIC_COMPASS_DEKU_TREE, RHT_DEKU_TREE_COMPASS, RG_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DEKU_TREE_COMPASS] = Item(RG_DEKU_TREE_COMPASS, ITEMTYPE_COMPASS, 0x9B, false, LOGIC_COMPASS_DEKU_TREE, RHT_DEKU_TREE_COMPASS, RG_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DEKU_TREE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_DODONGOS_CAVERN_COMPASS] = Item(RG_DODONGOS_CAVERN_COMPASS, Text{ "Dodongo's Cavern Compass", "Boussole de la Caverne Dodongo", "Kompaß der Dodongo-Höhle" }, ITEMTYPE_COMPASS, 0x9C, false, LOGIC_COMPASS_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_COMPASS, RG_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DODONGOS_CAVERN_COMPASS] = Item(RG_DODONGOS_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0x9C, false, LOGIC_COMPASS_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_COMPASS, RG_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DODONGOS_CAVERN_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_JABU_JABUS_BELLY_COMPASS] = Item(RG_JABU_JABUS_BELLY_COMPASS, Text{ "Jabu-Jabu's Belly Compass", "Boussole du Ventre de Jabu-Jabu", "Kompaß des Jabu-Jabu-Bauchs" }, ITEMTYPE_COMPASS, 0x9D, false, LOGIC_COMPASS_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_COMPASS, RG_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_JABU_JABUS_BELLY_COMPASS] = Item(RG_JABU_JABUS_BELLY_COMPASS,ITEMTYPE_COMPASS, 0x9D, false, LOGIC_COMPASS_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_COMPASS, RG_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_JABU_JABUS_BELLY_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_FOREST_TEMPLE_COMPASS] = Item(RG_FOREST_TEMPLE_COMPASS, Text{ "Forest Temple Compass", "Boussole du Temple de la Forêt", "Kompaß des Waldtempels" }, ITEMTYPE_COMPASS, 0x9E, false, LOGIC_COMPASS_FOREST_TEMPLE, RHT_FOREST_TEMPLE_COMPASS, RG_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_COMPASS] = Item(RG_FOREST_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9E, false, LOGIC_COMPASS_FOREST_TEMPLE, RHT_FOREST_TEMPLE_COMPASS, RG_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_FIRE_TEMPLE_COMPASS] = Item(RG_FIRE_TEMPLE_COMPASS, Text{ "Fire Temple Compass", "Boussole du Temple du Feu", "Kompaß des Feuertempels" }, ITEMTYPE_COMPASS, 0x9F, false, LOGIC_COMPASS_FIRE_TEMPLE, RHT_FIRE_TEMPLE_COMPASS, RG_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_COMPASS] = Item(RG_FIRE_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9F, false, LOGIC_COMPASS_FIRE_TEMPLE, RHT_FIRE_TEMPLE_COMPASS, RG_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_WATER_TEMPLE_COMPASS] = Item(RG_WATER_TEMPLE_COMPASS, Text{ "Water Temple Compass", "Boussole du Temple de l'Eau", "Kompaß des Wassertempels" }, ITEMTYPE_COMPASS, 0xA0, false, LOGIC_COMPASS_WATER_TEMPLE, RHT_WATER_TEMPLE_COMPASS, RG_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_COMPASS] = Item(RG_WATER_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA0, false, LOGIC_COMPASS_WATER_TEMPLE, RHT_WATER_TEMPLE_COMPASS, RG_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_SPIRIT_TEMPLE_COMPASS] = Item(RG_SPIRIT_TEMPLE_COMPASS, Text{ "Spirit Temple Compass", "Boussole due Temple de l'Esprit", "Kompaß des Geistertempels" }, ITEMTYPE_COMPASS, 0xA1, false, LOGIC_COMPASS_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_COMPASS, RG_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_COMPASS] = Item(RG_SPIRIT_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA1, false, LOGIC_COMPASS_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_COMPASS, RG_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_SHADOW_TEMPLE_COMPASS] = Item(RG_SHADOW_TEMPLE_COMPASS, Text{ "Shadow Temple Compass", "Boussole du Temple de l'Ombre", "Kompaß des Schattentempels" }, ITEMTYPE_COMPASS, 0xA2, false, LOGIC_COMPASS_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_COMPASS, RG_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_COMPASS] = Item(RG_SHADOW_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA2, false, LOGIC_COMPASS_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_COMPASS, RG_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_BOTTOM_OF_THE_WELL_COMPASS] = Item(RG_BOTTOM_OF_THE_WELL_COMPASS, Text{ "Bottom of the Well Compass", "Boussole du Puits", "Kompaß des Grund des Brunnens" }, ITEMTYPE_COMPASS, 0xA3, false, LOGIC_COMPASS_BOTTOM_OF_THE_WELL, RHT_BOTTOM_OF_THE_WELL_COMPASS, RG_BOTTOM_OF_THE_WELL_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOTTOM_OF_THE_WELL_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_ICE_CAVERN_COMPASS] = Item(RG_ICE_CAVERN_COMPASS, Text{ "Ice Cavern Compass", "Boussole de la Caverne Polaire", "Kompaß der Eishöhle" }, ITEMTYPE_COMPASS, 0xA4, false, LOGIC_COMPASS_ICE_CAVERN, RHT_ICE_CAVERN_COMPASS, RG_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOTW_COMPASS] = Item(RG_BOTW_COMPASS, ITEMTYPE_COMPASS, 0xA3, false, LOGIC_COMPASS_BOTW, RHT_BOTW_COMPASS, RG_BOTW_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOTW_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); + itemTable[RG_ICE_CAVERN_COMPASS] = Item(RG_ICE_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0xA4, false, LOGIC_COMPASS_ICE_CAVERN, RHT_ICE_CAVERN_COMPASS, RG_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_ICE_CAVERN_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); // Boss Keys - itemTable[RG_FOREST_TEMPLE_BOSS_KEY] = Item(RG_FOREST_TEMPLE_BOSS_KEY, Text{ "Forest Temple Boss Key", "Clé d'Or du Temple de la Forêt", "Master-Schlüssel des Waldtempels" }, ITEMTYPE_BOSSKEY, 0x95, true, LOGIC_BOSS_KEY_FOREST_TEMPLE, RHT_FOREST_TEMPLE_BOSS_KEY, RG_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_BOSS_KEY] = Item(RG_FOREST_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x95, true, LOGIC_BOSS_KEY_FOREST_TEMPLE, RHT_FOREST_TEMPLE_BOSS_KEY, RG_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_FIRE_TEMPLE_BOSS_KEY] = Item(RG_FIRE_TEMPLE_BOSS_KEY, Text{ "Fire Temple Boss Key", "Clé d'Or du Temple du Feu", "Master-Schlüssel des Feuertempels" }, ITEMTYPE_BOSSKEY, 0x96, true, LOGIC_BOSS_KEY_FIRE_TEMPLE, RHT_FIRE_TEMPLE_BOSS_KEY, RG_FIRE_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_BOSS_KEY] = Item(RG_FIRE_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x96, true, LOGIC_BOSS_KEY_FIRE_TEMPLE, RHT_FIRE_TEMPLE_BOSS_KEY, RG_FIRE_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_WATER_TEMPLE_BOSS_KEY] = Item(RG_WATER_TEMPLE_BOSS_KEY, Text{ "Water Temple Boss Key", "Clé d'Or du Temple de l'Eau", "Master-Schlüssel des Wassertempels" }, ITEMTYPE_BOSSKEY, 0x97, true, LOGIC_BOSS_KEY_WATER_TEMPLE, RHT_WATER_TEMPLE_BOSS_KEY, RG_WATER_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_BOSS_KEY] = Item(RG_WATER_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x97, true, LOGIC_BOSS_KEY_WATER_TEMPLE, RHT_WATER_TEMPLE_BOSS_KEY, RG_WATER_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY] = Item(RG_SPIRIT_TEMPLE_BOSS_KEY, Text{ "Spirit Temple Boss Key", "Clé d'Or du Temple de l'Esprit", "Master-Schlüssel des Geistertempels" }, ITEMTYPE_BOSSKEY, 0x98, true, LOGIC_BOSS_KEY_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_BOSS_KEY, RG_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY] = Item(RG_SPIRIT_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x98, true, LOGIC_BOSS_KEY_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_BOSS_KEY, RG_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_SHADOW_TEMPLE_BOSS_KEY] = Item( RG_SHADOW_TEMPLE_BOSS_KEY, Text{ "Shadow Temple Boss Key", "Clé d'Or du Temple de l'Ombre", "Master-Schlüssel des Schattentempels" }, ITEMTYPE_BOSSKEY, 0x99, true, LOGIC_BOSS_KEY_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_BOSS_KEY, RG_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_BOSS_KEY] = Item( RG_SHADOW_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x99, true, LOGIC_BOSS_KEY_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_BOSS_KEY, RG_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_GANONS_CASTLE_BOSS_KEY] = Item(RG_GANONS_CASTLE_BOSS_KEY, Text{ "Ganon's Castle Boss Key", "Clé d'Or du Château de Ganon", "Master-Schlüssel von Ganons Schloß" }, ITEMTYPE_BOSSKEY, 0x9A, true, LOGIC_BOSS_KEY_GANONS_CASTLE, RHT_GANONS_CASTLE_BOSS_KEY, RG_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_GANONS_CASTLE_BOSS_KEY] = Item(RG_GANONS_CASTLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x9A, true, LOGIC_BOSS_KEY_GANONS_CASTLE, RHT_GANONS_CASTLE_BOSS_KEY, RG_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_FOREST_TEMPLE_SMALL_KEY] = Item(RG_FOREST_TEMPLE_SMALL_KEY, Text{ "Forest Temple Small Key", "Petite Clé du Temple de la Forêt", "Kleiner Schlüssel für den Waldtempel" }, ITEMTYPE_SMALLKEY, 0xAF, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_SMALL_KEY, RG_FOREST_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_SMALL_KEY] = Item(RG_FOREST_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xAF, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_SMALL_KEY, RG_FOREST_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_FIRE_TEMPLE_SMALL_KEY] = Item(RG_FIRE_TEMPLE_SMALL_KEY, Text{ "Fire Temple Small Key", "Petite Clé du Temple du Feu", "Kleiner Schlüssel für den Feuertempel" }, ITEMTYPE_SMALLKEY, 0xB0, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_SMALL_KEY, RG_FIRE_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_SMALL_KEY] = Item(RG_FIRE_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB0, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_SMALL_KEY, RG_FIRE_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_WATER_TEMPLE_SMALL_KEY] = Item(RG_WATER_TEMPLE_SMALL_KEY, Text{ "Water Temple Small Key", "Petite Clé du Temple de l'Eau", "Kleiner Schlüssel für den Wassertempel" }, ITEMTYPE_SMALLKEY, 0xB1, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_SMALL_KEY, RG_WATER_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_SMALL_KEY] = Item(RG_WATER_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB1, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_SMALL_KEY, RG_WATER_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_SPIRIT_TEMPLE_SMALL_KEY] = Item(RG_SPIRIT_TEMPLE_SMALL_KEY, Text{ "Spirit Temple Small Key", "Petite Clé du Temple de l'Esprit", "Kleiner Schlüssel für den Geistertempel" }, ITEMTYPE_SMALLKEY, 0xB2, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_SMALL_KEY, RG_SPIRIT_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_SMALL_KEY] = Item(RG_SPIRIT_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB2, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_SMALL_KEY, RG_SPIRIT_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_SHADOW_TEMPLE_SMALL_KEY] = Item(RG_SHADOW_TEMPLE_SMALL_KEY, Text{ "Shadow Temple Small Key", "Petite Clé du Temple de l'Ombre", "Kleiner Schlüssel für den Schattentempel" }, ITEMTYPE_SMALLKEY, 0xB3, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_SMALL_KEY, RG_SHADOW_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_SMALL_KEY] = Item(RG_SHADOW_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB3, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_SMALL_KEY, RG_SHADOW_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_BOTTOM_OF_THE_WELL_SMALL_KEY] = Item(RG_BOTTOM_OF_THE_WELL_SMALL_KEY, Text{ "Bottom of the Well Small Key", "Petite Clé du Puits", "Kleiner Schlüssel für den Grund des Brunnens" }, ITEMTYPE_SMALLKEY, 0xB4, true, LOGIC_BOTTOM_OF_THE_WELL_KEYS, RHT_BOTTOM_OF_THE_WELL_SMALL_KEY, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_BOTTOM_OF_THE_WELL_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_GERUDO_TRAINING_GROUND_SMALL_KEY] = Item(RG_GERUDO_TRAINING_GROUND_SMALL_KEY, Text{ "Training Ground Small Key", "Petite Clé du Gymnase Gerudo", "Kleiner Schlüssel für das Gerudo-Trainingsgelände" }, ITEMTYPE_SMALLKEY, 0xB5, true, LOGIC_GERUDO_TRAINING_GROUND_KEYS, RHT_GERUDO_TRAINING_GROUND_SMALL_KEY, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GERUDO_TRAINING_GROUND_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_GERUDO_FORTRESS_SMALL_KEY] = Item(RG_GERUDO_FORTRESS_SMALL_KEY, Text{ "Gerudo Fortress Small Key", "Petite Clé du Repaire des Voleurs", "Kleiner Schlüssel für die Gerudo-Festung" }, ITEMTYPE_FORTRESS_SMALLKEY, 0xB6, true, LOGIC_GERUDO_FORTRESS_KEYS, RHT_GERUDO_FORTRESS_SMALL_KEY, RG_GERUDO_FORTRESS_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GERUDO_FORTRESS_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_GANONS_CASTLE_SMALL_KEY] = Item(RG_GANONS_CASTLE_SMALL_KEY, Text{ "Ganon's Castle Small Key", "Petite Clé du Château de Ganon", "Kleiner Schlüssel für Ganons Schloß" }, ITEMTYPE_SMALLKEY, 0xB7, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_SMALL_KEY, RG_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOTW_SMALL_KEY] = Item(RG_BOTW_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB4, true, LOGIC_BOTW_KEYS, RHT_BOTW_SMALL_KEY, RG_BOTW_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOTW_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); + itemTable[RG_GTG_SMALL_KEY] = Item(RG_GTG_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB5, true, LOGIC_GTG_KEYS, RHT_GTG_SMALL_KEY, RG_GTG_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_GTG_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); + itemTable[RG_TH_SMALL_KEY] = Item(RG_TH_SMALL_KEY, ITEMTYPE_TH_SMALLKEY, 0xB6, true, LOGIC_GERUDO_FORTRESS_KEYS, RHT_GERUDO_FORTRESS_SMALL_KEY, RG_TH_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_TH_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); + itemTable[RG_GANONS_CASTLE_SMALL_KEY] = Item(RG_GANONS_CASTLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB7, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_SMALL_KEY, RG_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_TREASURE_GAME_SMALL_KEY] = Item(RG_TREASURE_GAME_SMALL_KEY, Text{ "Chest Game Small Key", "Petite Clé du jeu la Chasse-aux-Trésors", "Kleiner Schlüssel für das Truhenspiel" }, ITEMTYPE_SMALLKEY, GI_DOOR_KEY, true, LOGIC_TREASURE_GAME_KEYS, RHT_TREASURE_GAME_SMALL_KEY, ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0xF3, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_NONE); - itemTable[RG_GUARD_HOUSE_KEY] = Item(RG_GUARD_HOUSE_KEY, Text{ "Guard House Key", "", "Schlüssel für das Haus der Wachen" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_GUARD_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_GUARD_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_TREASURE_GAME_SMALL_KEY] = Item(RG_TREASURE_GAME_SMALL_KEY, ITEMTYPE_SMALLKEY, GI_DOOR_KEY, true, LOGIC_TCG_KEYS, RHT_TCG_SMALL_KEY, ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0xF3, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_NONE); + itemTable[RG_GUARD_HOUSE_KEY] = Item(RG_GUARD_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_GUARD_HOUSE_KEY, RHT_GUARD_HOUSE_KEY, RG_GUARD_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GUARD_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_MARKET_BAZAAR_KEY] = Item(RG_MARKET_BAZAAR_KEY, Text{ "Market Bazaar Key", "", "Schlüssel für den Basar des Marktes" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_BAZAAR_KEY, RHT_OVERWORLD_KEY, RG_MARKET_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_MARKET_BAZAAR_KEY] = Item(RG_MARKET_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_BAZAAR_KEY, RHT_MARKET_BAZAAR_KEY, RG_MARKET_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_MARKET_BAZAAR_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_MARKET_POTION_SHOP_KEY] = Item(RG_MARKET_POTION_SHOP_KEY, Text{ "Market Potion Shop Key", "", "Schlüssel für den Magie-Laden des Marktes" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_POTION_SHOP_KEY, RHT_OVERWORLD_KEY, RG_MARKET_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_MARKET_POTION_SHOP_KEY] = Item(RG_MARKET_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_POTION_SHOP_KEY, RHT_MARKET_POTION_SHOP_KEY, RG_MARKET_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_MARKET_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_MASK_SHOP_KEY] = Item(RG_MASK_SHOP_KEY, Text{ "Mask Shop Key", "", "Schlüssel für den Maskenladen" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MASK_SHOP_KEY, RHT_OVERWORLD_KEY, RG_MASK_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_MASK_SHOP_KEY] = Item(RG_MASK_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MASK_SHOP_KEY, RHT_MASK_SHOP_KEY, RG_MASK_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_MASK_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_MARKET_SHOOTING_GALLERY_KEY] = Item(RG_MARKET_SHOOTING_GALLERY_KEY, Text{ "Market Shooting Gallery Key", "", "Schlüssel für die Schießbude des Marktes" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_SHOOTING_GALLERY_KEY, RHT_OVERWORLD_KEY, RG_MARKET_SHOOTING_GALLERY_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_MARKET_SHOOTING_GALLERY_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_BOMBCHU_BOWLING_KEY] = Item(RG_BOMBCHU_BOWLING_KEY, Text{ "Bombchu Bowling Alley Key", "", "Schlüssel für die Minenbowlingbahn" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOMBCHU_BOWLING_KEY, RHT_OVERWORLD_KEY, RG_BOMBCHU_BOWLING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_MARKET_SHOOTING_KEY] = Item(RG_MARKET_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_SHOOTING_GALLERY_KEY, RHT_MARKET_SHOOTING_KEY, RG_MARKET_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_MARKET_SHOOTING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); + itemTable[RG_BOMBCHU_BOWLING_KEY] = Item(RG_BOMBCHU_BOWLING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOMBCHU_BOWLING_KEY, RHT_BOMBCHU_BOWLING_KEY, RG_BOMBCHU_BOWLING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOMBCHU_BOWLING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_TREASURE_CHEST_GAME_BUILDING_KEY] = Item(RG_TREASURE_CHEST_GAME_BUILDING_KEY, Text{ "Treasure Chest Game Building Key", "", "Schlüssel für das Haus des Schatzkisten-Pokers" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_TREASURE_CHEST_GAME_BUILDING_KEY,RHT_OVERWORLD_KEY, RG_TREASURE_CHEST_GAME_BUILDING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_TREASURE_CHEST_GAME_BUILDING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_BOMBCHU_SHOP_KEY] = Item(RG_BOMBCHU_SHOP_KEY, Text{ "Bombchu Shop Key", "", "Schlüssel für den Krabbelminenladen" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOMBCHU_SHOP_KEY, RHT_OVERWORLD_KEY, RG_BOMBCHU_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_TCG_BUILDING_KEY] = Item(RG_TCG_BUILDING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_TCG_BUILDING_KEY, RHT_TCG_BUILDING_KEY, RG_TCG_BUILDING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_TCG_BUILDING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); + itemTable[RG_BOMBCHU_SHOP_KEY] = Item(RG_BOMBCHU_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOMBCHU_SHOP_KEY, RHT_BOMBCHU_SHOP_KEY, RG_BOMBCHU_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOMBCHU_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_RICHARDS_HOUSE_KEY] = Item(RG_RICHARDS_HOUSE_KEY, Text{ "Richard's House Key", "", "Schlüssel für das Haus von Richard" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_RICHARDS_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_RICHARDS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_RICHARDS_HOUSE_KEY] = Item(RG_RICHARDS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_RICHARDS_HOUSE_KEY, RHT_RICHARDS_HOUSE_KEY, RG_RICHARDS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_RICHARDS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_ALLEY_HOUSE_KEY] = Item(RG_ALLEY_HOUSE_KEY, Text{ "Alley House Key", "", "Schlüssel für das Gäßchenhaus" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_ALLEY_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_ALLEY_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_ALLEY_HOUSE_KEY] = Item(RG_ALLEY_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_ALLEY_HOUSE_KEY, RHT_ALLEY_HOUSE_KEY, RG_ALLEY_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_ALLEY_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_KAK_BAZAAR_KEY] = Item(RG_KAK_BAZAAR_KEY, Text{ "Kakariko Bazaar Key", "", "Schlüssel für den Basar von Kakariko" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_BAZAAR_KEY, RHT_OVERWORLD_KEY, RG_KAK_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_KAK_BAZAAR_KEY] = Item(RG_KAK_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_BAZAAR_KEY, RHT_KAK_BAZAAR_KEY, RG_KAK_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_KAK_BAZAAR_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_KAK_POTION_SHOP_KEY] = Item(RG_KAK_POTION_SHOP_KEY, Text{ "Kakariko Potion Shop Key", "", "Schlüssel für den Magie-Laden von Kakariko" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_POTION_SHOP_KEY, RHT_OVERWORLD_KEY, RG_KAK_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_KAK_POTION_SHOP_KEY] = Item(RG_KAK_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_POTION_SHOP_KEY, RHT_KAK_POTION_SHOP_KEY, RG_KAK_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_KAK_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_BOSS_HOUSE_KEY] = Item(RG_BOSS_HOUSE_KEY, Text{ "Boss's House Key", "", "Schlüssel für das Haus des Chefs" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOSS_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_BOSS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOSS_HOUSE_KEY] = Item(RG_BOSS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOSS_HOUSE_KEY, RHT_BOSS_HOUSE_KEY, RG_BOSS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOSS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_GRANNYS_POTION_SHOP_KEY] = Item(RG_GRANNYS_POTION_SHOP_KEY, Text{ "Granny's Potion Shop Key", "", "Schlüssel für Asas Hexenladen" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_GRANNYS_POTION_SHOP_KEY, RHT_OVERWORLD_KEY, RG_GRANNYS_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_GRANNYS_POTION_SHOP_KEY] = Item(RG_GRANNYS_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_GRANNYS_POTION_SHOP_KEY, RHT_GRANNYS_POTION_SHOP_KEY, RG_GRANNYS_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GRANNYS_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_SKULLTULA_HOUSE_KEY] = Item(RG_SKULLTULA_HOUSE_KEY, Text{ "Skulltula House Key", "", "Schlüssel für das Skulltula-Haus" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_SKULLTULA_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_SKULLTULA_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SKULLTULA_HOUSE_KEY] = Item(RG_SKULLTULA_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_SKULLTULA_HOUSE_KEY, RHT_SKULLTULA_HOUSE_KEY, RG_SKULLTULA_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SKULLTULA_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_IMPAS_HOUSE_KEY] = Item(RG_IMPAS_HOUSE_KEY, Text{ "Impa's House Key", "", "Schlüssel für das Haus von Impa" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_IMPAS_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_IMPAS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_IMPAS_HOUSE_KEY] = Item(RG_IMPAS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_IMPAS_HOUSE_KEY, RHT_IMPAS_HOUSE_KEY, RG_IMPAS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_IMPAS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_WINDMILL_KEY] = Item(RG_WINDMILL_KEY, Text{ "Windmill Key", "", "Schlüssel für die Windmühle" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_WINDMILL_KEY, RHT_OVERWORLD_KEY, RG_WINDMILL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_WINDMILL_KEY] = Item(RG_WINDMILL_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_WINDMILL_KEY, RHT_WINDMILL_KEY, RG_WINDMILL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_WINDMILL_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_KAK_SHOOTING_GALLERY_KEY] = Item(RG_KAK_SHOOTING_GALLERY_KEY, Text{ "Kakariko Shooting Gallery Key", "", "Schlüssel für die Schießbude von Kakariko" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_SHOOTING_GALLERY_KEY, RHT_OVERWORLD_KEY, RG_KAK_SHOOTING_GALLERY_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_KAK_SHOOTING_GALLERY_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_DAMPES_HUT_KEY] = Item(RG_DAMPES_HUT_KEY, Text{ "Dampe's Hut Key", "", "Schlüssel für die Hütte von Boris" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_DAMPES_HUT_KEY, RHT_OVERWORLD_KEY, RG_DAMPES_HUT_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_KAK_SHOOTING_KEY] = Item(RG_KAK_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_SHOOTING_GALLERY_KEY, RHT_KAK_SHOOTING_KEY, RG_KAK_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_KAK_SHOOTING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); + itemTable[RG_DAMPES_HUT_KEY] = Item(RG_DAMPES_HUT_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_DAMPES_HUT_KEY, RHT_DAMPES_HUT_KEY, RG_DAMPES_HUT_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_DAMPES_HUT_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_TALONS_HOUSE_KEY] = Item(RG_TALONS_HOUSE_KEY, Text{ "Talon's House Key", "", "Schlüssel für das Haus von Talon" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_TALONS_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_TALONS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_TALONS_HOUSE_KEY] = Item(RG_TALONS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_TALONS_HOUSE_KEY, RHT_TALONS_HOUSE_KEY, RG_TALONS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_TALONS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_STABLES_KEY] = Item(RG_STABLES_KEY, Text{ "Stables Key", "", "Schlüssel für die Ställe" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_STABLES_KEY, RHT_OVERWORLD_KEY, RG_STABLES_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_STABLES_KEY] = Item(RG_STABLES_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_STABLES_KEY, RHT_STABLES_KEY, RG_STABLES_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_STABLES_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_BACK_TOWER_KEY] = Item(RG_BACK_TOWER_KEY, Text{ "Back Tower Key", "", "Schlüssel für den hinteren Turm" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BACK_TOWER_KEY, RHT_OVERWORLD_KEY, RG_BACK_TOWER_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BACK_TOWER_KEY] = Item(RG_BACK_TOWER_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BACK_TOWER_KEY, RHT_BACK_TOWER_KEY, RG_BACK_TOWER_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BACK_TOWER_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_HYLIA_LAB_KEY] = Item(RG_HYLIA_LAB_KEY, Text{ "Hylia Laboratory Key", "", "Schlüssel für das Hylia-Labor" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_HYLIA_LAB_KEY, RHT_OVERWORLD_KEY, RG_HYLIA_LAB_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_HYLIA_LAB_KEY] = Item(RG_HYLIA_LAB_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_HYLIA_LAB_KEY, RHT_HYLIA_LAB_KEY, RG_HYLIA_LAB_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_HYLIA_LAB_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_FISHING_HOLE_KEY] = Item(RG_FISHING_HOLE_KEY, Text{ "Fishing Hole Key", "", "Schlüssel für den Fischweiher" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_FISHING_HOLE_KEY, RHT_OVERWORLD_KEY, RG_FISHING_HOLE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FISHING_HOLE_KEY] = Item(RG_FISHING_HOLE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_FISHING_HOLE_KEY, RHT_FISHING_HOLE_KEY, RG_FISHING_HOLE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FISHING_HOLE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); // Key Rings - itemTable[RG_FOREST_TEMPLE_KEY_RING] = Item(RG_FOREST_TEMPLE_KEY_RING, Text{ "Forest Temple Key Ring", "Trousseau du Temple de la Forêt", "Schlüsselbund für den Waldtempel" }, ITEMTYPE_SMALLKEY, 0xD5, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_KEY_RING, RG_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_KEY_RING] = Item(RG_FOREST_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD5, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_KEY_RING, RG_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_FIRE_TEMPLE_KEY_RING] = Item(RG_FIRE_TEMPLE_KEY_RING, Text{ "Fire Temple Key Ring", "Trousseau du Temple du Feu", "Schlüsselbund für den Feuertempel" }, ITEMTYPE_SMALLKEY, 0xD6, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_KEY_RING, RG_FIRE_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_KEY_RING] = Item(RG_FIRE_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD6, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_KEY_RING, RG_FIRE_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_WATER_TEMPLE_KEY_RING] = Item(RG_WATER_TEMPLE_KEY_RING, Text{ "Water Temple Key Ring", "Trousseau du Temple de l'Eau", "Schlüsselbund für den Wassertempel" }, ITEMTYPE_SMALLKEY, 0xD7, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_KEY_RING, RG_WATER_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_KEY_RING] = Item(RG_WATER_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD7, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_KEY_RING, RG_WATER_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_SPIRIT_TEMPLE_KEY_RING] = Item(RG_SPIRIT_TEMPLE_KEY_RING, Text{ "Spirit Temple Key Ring", "Trousseau du Temple de l'Esprit", "Schlüsselbund für den Geistertempel" }, ITEMTYPE_SMALLKEY, 0xD8, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_KEY_RING, RG_SPIRIT_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_KEY_RING] = Item(RG_SPIRIT_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD8, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_KEY_RING, RG_SPIRIT_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_SHADOW_TEMPLE_KEY_RING] = Item(RG_SHADOW_TEMPLE_KEY_RING, Text{ "Shadow Temple Key Ring", "Trousseau du Temple de l'Ombre", "Schlüsselbund für den Schattentempel" }, ITEMTYPE_SMALLKEY, 0xD9, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_KEY_RING, RG_SHADOW_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_KEY_RING] = Item(RG_SHADOW_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD9, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_KEY_RING, RG_SHADOW_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_BOTTOM_OF_THE_WELL_KEY_RING] = Item(RG_BOTTOM_OF_THE_WELL_KEY_RING, Text{ "Bottom of the Well Key Ring", "Trousseau du Puits", "Schlüsselbund für den Grund des Brunnens" }, ITEMTYPE_SMALLKEY, 0xDA, true, LOGIC_BOTTOM_OF_THE_WELL_KEYS, RHT_BOTTOM_OF_THE_WELL_KEY_RING, RG_BOTTOM_OF_THE_WELL_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_BOTTOM_OF_THE_WELL_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_GERUDO_TRAINING_GROUND_KEY_RING] = Item(RG_GERUDO_TRAINING_GROUND_KEY_RING, Text{ "Training Ground Key Ring", "Trousseau du Gymnase Gerudo", "Schlüsselbund für das Gerudo-Trainingsgelände" }, ITEMTYPE_SMALLKEY, 0xDB, true, LOGIC_GERUDO_TRAINING_GROUND_KEYS, RHT_GERUDO_TRAINING_GROUND_KEY_RING, RG_GERUDO_TRAINING_GROUND_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GERUDO_TRAINING_GROUND_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_GERUDO_FORTRESS_KEY_RING] = Item(RG_GERUDO_FORTRESS_KEY_RING, Text{ "Gerudo Fortress Key Ring", "Trousseau du Repaire des Voleurs", "Schlüsselbund für die Gerudo-Festung" }, ITEMTYPE_FORTRESS_SMALLKEY, 0xDC, true, LOGIC_GERUDO_FORTRESS_KEYS, RHT_GERUDO_FORTRESS_KEY_RING, RG_GERUDO_FORTRESS_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GERUDO_FORTRESS_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_GANONS_CASTLE_KEY_RING] = Item(RG_GANONS_CASTLE_KEY_RING, Text{ "Ganon's Castle Key Ring", "Trousseau du Château de Ganon", "Schlüsselbund für Ganons Schloß" }, ITEMTYPE_SMALLKEY, 0xDD, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_KEY_RING, RG_GANONS_CASTLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOTW_KEY_RING] = Item(RG_BOTW_KEY_RING, ITEMTYPE_SMALLKEY, 0xDA, true, LOGIC_BOTW_KEYS, RHT_BOTW_KEY_RING, RG_BOTW_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOTW_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); + itemTable[RG_GTG_KEY_RING] = Item(RG_GTG_KEY_RING, ITEMTYPE_SMALLKEY, 0xDB, true, LOGIC_GTG_KEYS, RHT_GTG_KEY_RING, RG_GTG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_GTG_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); + itemTable[RG_TH_KEY_RING] = Item(RG_TH_KEY_RING, ITEMTYPE_TH_SMALLKEY, 0xDC, true, LOGIC_GERUDO_FORTRESS_KEYS, RHT_GERUDO_FORTRESS_KEY_RING, RG_TH_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_TH_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); + itemTable[RG_GANONS_CASTLE_KEY_RING] = Item(RG_GANONS_CASTLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xDD, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_KEY_RING, RG_GANONS_CASTLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_TREASURE_GAME_KEY_RING] = Item(RG_TREASURE_GAME_KEY_RING, Text{ "Chest Game Key Ring", "Trousseau du jeu la Chasse-aux-Trésors", "Schlüsselbund für das Truhenspiel" }, ITEMTYPE_SMALLKEY, 0xDE, true, LOGIC_TREASURE_GAME_KEYS, RHT_TREASURE_GAME_KEY_RING, RG_TREASURE_GAME_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_TREASURE_GAME_KEY_RING] = Item(RG_TREASURE_GAME_KEY_RING, ITEMTYPE_SMALLKEY, 0xDE, true, LOGIC_TCG_KEYS, RHT_TCG_KEY_RING, RG_TREASURE_GAME_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_TREASURE_GAME_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); // Dungeon Rewards - itemTable[RG_KOKIRI_EMERALD] = Item(RG_KOKIRI_EMERALD, Text{ "Kokiri's Emerald", "Émeraude Kokiri", "Kokiri-Smaragd" }, ITEMTYPE_DUNGEONREWARD, 0xCB, true, LOGIC_KOKIRI_EMERALD, RHT_KOKIRI_EMERALD, ITEM_KOKIRI_EMERALD, OBJECT_GI_JEWEL, GID_KOKIRI_EMERALD, 0x80, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GORON_RUBY] = Item(RG_GORON_RUBY, Text{ "Goron's Ruby", "Rubis Goron", "Goronen-Rubin" }, ITEMTYPE_DUNGEONREWARD, 0xCC, true, LOGIC_GORON_RUBY, RHT_GORON_RUBY, ITEM_GORON_RUBY, OBJECT_GI_JEWEL, GID_GORON_RUBY, 0x81, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ZORA_SAPPHIRE] = Item(RG_ZORA_SAPPHIRE, Text{ "Zora's Sapphire", "Saphir Zora", "Zora-Saphir" }, ITEMTYPE_DUNGEONREWARD, 0xCD, true, LOGIC_ZORA_SAPPHIRE, RHT_ZORA_SAPPHIRE, ITEM_ZORA_SAPPHIRE, OBJECT_GI_JEWEL, GID_ZORA_SAPPHIRE, 0x82, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FOREST_MEDALLION] = Item(RG_FOREST_MEDALLION, Text{ "Forest Medallion", "Médaillon de la Forêt", "Amulett des Waldes" }, ITEMTYPE_DUNGEONREWARD, 0xCE, true, LOGIC_FOREST_MEDALLION, RHT_FOREST_MEDALLION, ITEM_MEDALLION_FOREST, OBJECT_GI_MEDAL, GID_MEDALLION_FOREST, 0x3E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FIRE_MEDALLION] = Item(RG_FIRE_MEDALLION, Text{ "Fire Medallion", "Médaillon du Feu", "Amulett des Feuers" }, ITEMTYPE_DUNGEONREWARD, 0xCF, true, LOGIC_FIRE_MEDALLION, RHT_FIRE_MEDALLION, ITEM_MEDALLION_FIRE, OBJECT_GI_MEDAL, GID_MEDALLION_FIRE, 0x3C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_WATER_MEDALLION] = Item(RG_WATER_MEDALLION, Text{ "Water Medallion", "Médaillon de l'Eau", "Amulett des Wassers" }, ITEMTYPE_DUNGEONREWARD, 0xD0, true, LOGIC_WATER_MEDALLION, RHT_WATER_MEDALLION, ITEM_MEDALLION_WATER, OBJECT_GI_MEDAL, GID_MEDALLION_WATER, 0x3D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SPIRIT_MEDALLION] = Item(RG_SPIRIT_MEDALLION, Text{ "Spirit Medallion", "Médaillon de l'Esprit", "Amulett der Geister" }, ITEMTYPE_DUNGEONREWARD, 0xD1, true, LOGIC_SPIRIT_MEDALLION, RHT_SPIRIT_MEDALLION, ITEM_MEDALLION_SPIRIT, OBJECT_GI_MEDAL, GID_MEDALLION_SPIRIT, 0x3F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SHADOW_MEDALLION] = Item(RG_SHADOW_MEDALLION, Text{ "Shadow Medallion", "Médaillon de l'Ombre", "Amulett des Schattens" }, ITEMTYPE_DUNGEONREWARD, 0xD2, true, LOGIC_SHADOW_MEDALLION, RHT_SHADOW_MEDALLION, ITEM_MEDALLION_SHADOW, OBJECT_GI_MEDAL, GID_MEDALLION_SHADOW, 0x41, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LIGHT_MEDALLION] = Item(RG_LIGHT_MEDALLION, Text{ "Light Medallion", "Médaillon de la Lumière", "Amulett des Lichts" }, ITEMTYPE_DUNGEONREWARD, 0xD3, true, LOGIC_LIGHT_MEDALLION, RHT_LIGHT_MEDALLION, ITEM_MEDALLION_LIGHT, OBJECT_GI_MEDAL, GID_MEDALLION_LIGHT, 0x40, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_KOKIRI_EMERALD] = Item(RG_KOKIRI_EMERALD, ITEMTYPE_DUNGEONREWARD, 0xCB, true, LOGIC_KOKIRI_EMERALD, RHT_KOKIRI_EMERALD, ITEM_KOKIRI_EMERALD, OBJECT_GI_JEWEL, GID_KOKIRI_EMERALD, 0x80, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GORON_RUBY] = Item(RG_GORON_RUBY, ITEMTYPE_DUNGEONREWARD, 0xCC, true, LOGIC_GORON_RUBY, RHT_GORON_RUBY, ITEM_GORON_RUBY, OBJECT_GI_JEWEL, GID_GORON_RUBY, 0x81, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ZORA_SAPPHIRE] = Item(RG_ZORA_SAPPHIRE, ITEMTYPE_DUNGEONREWARD, 0xCD, true, LOGIC_ZORA_SAPPHIRE, RHT_ZORA_SAPPHIRE, ITEM_ZORA_SAPPHIRE, OBJECT_GI_JEWEL, GID_ZORA_SAPPHIRE, 0x82, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FOREST_MEDALLION] = Item(RG_FOREST_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCE, true, LOGIC_FOREST_MEDALLION, RHT_FOREST_MEDALLION, ITEM_MEDALLION_FOREST, OBJECT_GI_MEDAL, GID_MEDALLION_FOREST, 0x3E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FIRE_MEDALLION] = Item(RG_FIRE_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCF, true, LOGIC_FIRE_MEDALLION, RHT_FIRE_MEDALLION, ITEM_MEDALLION_FIRE, OBJECT_GI_MEDAL, GID_MEDALLION_FIRE, 0x3C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_WATER_MEDALLION] = Item(RG_WATER_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD0, true, LOGIC_WATER_MEDALLION, RHT_WATER_MEDALLION, ITEM_MEDALLION_WATER, OBJECT_GI_MEDAL, GID_MEDALLION_WATER, 0x3D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SPIRIT_MEDALLION] = Item(RG_SPIRIT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD1, true, LOGIC_SPIRIT_MEDALLION, RHT_SPIRIT_MEDALLION, ITEM_MEDALLION_SPIRIT, OBJECT_GI_MEDAL, GID_MEDALLION_SPIRIT, 0x3F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SHADOW_MEDALLION] = Item(RG_SHADOW_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD2, true, LOGIC_SHADOW_MEDALLION, RHT_SHADOW_MEDALLION, ITEM_MEDALLION_SHADOW, OBJECT_GI_MEDAL, GID_MEDALLION_SHADOW, 0x41, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_LIGHT_MEDALLION] = Item(RG_LIGHT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD3, true, LOGIC_LIGHT_MEDALLION, RHT_LIGHT_MEDALLION, ITEM_MEDALLION_LIGHT, OBJECT_GI_MEDAL, GID_MEDALLION_LIGHT, 0x40, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Generic Items - itemTable[RG_RECOVERY_HEART] = Item(RG_RECOVERY_HEART, Text{ "Recovery Heart", "Coeur de Vie", "Herz" }, ITEMTYPE_ITEM, GI_HEART, false, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_GREEN_RUPEE] = Item(RG_GREEN_RUPEE, Text{ "Green Rupee", "Rubis Vert", "Grüner Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_GREG_RUPEE] = Item(RG_GREG_RUPEE, Text{ "Greg the Green Rupee", "Rubis Greg", "Greg Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_GREEN, true, LOGIC_GREG, RHT_GREG_RUPEE, RG_GREG_RUPEE, OBJECT_GI_RUPY, GID_RUPEE_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BLUE_RUPEE] = Item(RG_BLUE_RUPEE, Text{ "Blue Rupee", "Rubis Bleu", "Blauer Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_BLUE, false, LOGIC_NONE, RHT_BLUE_RUPEE, ITEM_RUPEE_BLUE, OBJECT_GI_RUPY, GID_RUPEE_BLUE, 0xCC, 0x01, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_RED_RUPEE] = Item(RG_RED_RUPEE, Text{ "Red Rupee", "Rubis Rouge", "Roter Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_RED, false, LOGIC_NONE, RHT_RED_RUPEE, ITEM_RUPEE_RED, OBJECT_GI_RUPY, GID_RUPEE_RED, 0xF0, 0x02, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_PURPLE_RUPEE] = Item(RG_PURPLE_RUPEE, Text{ "Purple Rupee", "Rubis Pourpre", "Violetter Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_PURPLE, false, LOGIC_NONE, RHT_PURPLE_RUPEE, ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_HUGE_RUPEE] = Item(RG_HUGE_RUPEE, Text{ "Huge Rupee", "Énorme Rubis", "Riesiger Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, false, LOGIC_NONE, RHT_HUGE_RUPEE, ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_PIECE_OF_HEART] = Item(RG_PIECE_OF_HEART, Text{ "Piece of Heart", "Quart de Coeur", "Herzstück" }, ITEMTYPE_ITEM, GI_HEART_PIECE, true, LOGIC_PIECE_OF_HEART, RHT_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_HEART_CONTAINER] = Item(RG_HEART_CONTAINER, Text{ "Heart Container", "Réceptacle de Coeur", "Herzcontainer" }, ITEMTYPE_ITEM, GI_HEART_CONTAINER_2, true, LOGIC_HEART_CONTAINER, RHT_HEART_CONTAINER, ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_ICE_TRAP] = Item(RG_ICE_TRAP, Text{ "Ice Trap", "Piège de Glace", "Eisfalle" }, ITEMTYPE_ITEM, RG_ICE_TRAP, false, LOGIC_NONE, RHT_ICE_TRAP, RG_ICE_TRAP, OBJECT_GI_RUPY, GID_RUPEE_GOLD, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_MILK] = Item(RG_MILK, Text{ "Milk", "Lait", "Milch" }, ITEMTYPE_ITEM, GI_MILK, false, LOGIC_NONE, RHT_NONE, ITEM_MILK, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_FISH] = Item(RG_FISH, Text{ "Fish", "Poisson", "Fisch" }, ITEMTYPE_ITEM, GI_FISH, false, LOGIC_NONE, RHT_NONE, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_RECOVERY_HEART] = Item(RG_RECOVERY_HEART, ITEMTYPE_ITEM, GI_HEART, false, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_GREEN_RUPEE] = Item(RG_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_GREG_RUPEE] = Item(RG_GREG_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, true, LOGIC_GREG, RHT_GREG_RUPEE, RG_GREG_RUPEE, OBJECT_GI_RUPY, GID_RUPEE_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BLUE_RUPEE] = Item(RG_BLUE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_BLUE, false, LOGIC_NONE, RHT_BLUE_RUPEE, ITEM_RUPEE_BLUE, OBJECT_GI_RUPY, GID_RUPEE_BLUE, 0xCC, 0x01, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_RED_RUPEE] = Item(RG_RED_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_RED, false, LOGIC_NONE, RHT_RED_RUPEE, ITEM_RUPEE_RED, OBJECT_GI_RUPY, GID_RUPEE_RED, 0xF0, 0x02, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_PURPLE_RUPEE] = Item(RG_PURPLE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_PURPLE, false, LOGIC_NONE, RHT_PURPLE_RUPEE, ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_HUGE_RUPEE] = Item(RG_HUGE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GOLD, false, LOGIC_NONE, RHT_HUGE_RUPEE, ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_PIECE_OF_HEART] = Item(RG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE, true, LOGIC_PIECE_OF_HEART, RHT_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_HEART_CONTAINER] = Item(RG_HEART_CONTAINER, ITEMTYPE_ITEM, GI_HEART_CONTAINER_2, true, LOGIC_HEART_CONTAINER, RHT_HEART_CONTAINER, ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_ICE_TRAP] = Item(RG_ICE_TRAP, ITEMTYPE_ITEM, RG_ICE_TRAP, false, LOGIC_NONE, RHT_ICE_TRAP, RG_ICE_TRAP, OBJECT_GI_RUPY, GID_RUPEE_GOLD, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MILK] = Item(RG_MILK, ITEMTYPE_ITEM, GI_MILK, false, LOGIC_NONE, RHT_MILK, ITEM_MILK, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_FISH] = Item(RG_FISH, ITEMTYPE_ITEM, GI_FISH, false, LOGIC_NONE, RHT_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); // Refills - itemTable[RG_BOMBS_5] = Item(RG_BOMBS_5, Text{ "Bombs (5)", "Bombes (5)", "Bomben (5)" }, ITEMTYPE_REFILL, GI_BOMBS_5, false, LOGIC_NONE, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBS_10] = Item(RG_BOMBS_10, Text{ "Bombs (10)", "Bombes (10)", "Bomben (10)" }, ITEMTYPE_REFILL, GI_BOMBS_10, false, LOGIC_NONE, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBS_20] = Item(RG_BOMBS_20, Text{ "Bombs (20)", "Bombes (20)", "Bomben (20)" }, ITEMTYPE_REFILL, GI_BOMBS_20, false, LOGIC_NONE, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_5] = Item(RG_BOMBCHU_5, Text{ "Bombchus (5)", "Missiles (5)", "Krabbelminen (5)" }, ITEMTYPE_REFILL, GI_BOMBCHUS_5, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_5, ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_10] = Item(RG_BOMBCHU_10, Text{ "Bombchus (10)", "Missiles (10)", "Krabbelminen (10)" }, ITEMTYPE_REFILL, GI_BOMBCHUS_10, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_20] = Item(RG_BOMBCHU_20, Text{ "Bombchus (20)", "Missiles (20)", "Krabbelminen (20)" }, ITEMTYPE_REFILL, GI_BOMBCHUS_20, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBS_5] = Item(RG_BOMBS_5, ITEMTYPE_REFILL, GI_BOMBS_5, false, LOGIC_NONE, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBS_10] = Item(RG_BOMBS_10, ITEMTYPE_REFILL, GI_BOMBS_10, false, LOGIC_NONE, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBS_20] = Item(RG_BOMBS_20, ITEMTYPE_REFILL, GI_BOMBS_20, false, LOGIC_NONE, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBCHU_5] = Item(RG_BOMBCHU_5, ITEMTYPE_REFILL, GI_BOMBCHUS_5, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_5, ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBCHU_10] = Item(RG_BOMBCHU_10, ITEMTYPE_REFILL, GI_BOMBCHUS_10, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBCHU_20] = Item(RG_BOMBCHU_20, ITEMTYPE_REFILL, GI_BOMBCHUS_20, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); itemTable[RG_BOMBCHU_20].SetCustomDrawFunc(Randomizer_DrawBombchuBagInLogic); - itemTable[RG_ARROWS_5] = Item(RG_ARROWS_5, Text{ "Arrows (5)", "Flèches (5)", "Pfeile (5)" }, ITEMTYPE_REFILL, GI_ARROWS_SMALL, false, LOGIC_NONE, RHT_ARROWS_5, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_ARROWS_10] = Item(RG_ARROWS_10, Text{ "Arrows (10)", "Flèches (10)", "Pfeile (10)" }, ITEMTYPE_REFILL, GI_ARROWS_MEDIUM, false, LOGIC_NONE, RHT_ARROWS_10, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_ARROWS_30] = Item(RG_ARROWS_30, Text{ "Arrows (30)", "Flèches (30)", "Pfeile (30)" }, ITEMTYPE_REFILL, GI_ARROWS_LARGE, false, LOGIC_NONE, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_NUTS_5] = Item(RG_DEKU_NUTS_5, Text{ "Deku Nuts (5)", "Noix Mojo (5)", "Deku-Nüsse (5)" }, ITEMTYPE_REFILL, GI_NUTS_5, false, LOGIC_NONE, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_NUTS_10] = Item(RG_DEKU_NUTS_10, Text{ "Deku Nuts (10)", "Noix Mojo (10)", "Deku-Nüsse (10)" }, ITEMTYPE_REFILL, GI_NUTS_10, false, LOGIC_NONE, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_SEEDS_30] = Item(RG_DEKU_SEEDS_30, Text{ "Deku Seeds (30)", "Graines Mojo (30)", "Deku-Samen (30)" }, ITEMTYPE_REFILL, GI_SEEDS_30, false, LOGIC_NONE, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_STICK_1] = Item(RG_DEKU_STICK_1, Text{ "Deku Stick (1)", "Bâton Mojo (1)", "Deku-Stab (1)" }, ITEMTYPE_REFILL, GI_STICKS_1, false, LOGIC_NONE, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_RED_POTION_REFILL] = Item(RG_RED_POTION_REFILL, Text{ "Red Potion Refill", "Recharge de Potion Rouge", "Nachfüllpackung des roten Elixiers" }, ITEMTYPE_REFILL, GI_POTION_RED, false, LOGIC_NONE, RHT_NONE, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_GREEN_POTION_REFILL] = Item(RG_GREEN_POTION_REFILL, Text{ "Green Potion Refill", "Recharge de Potion Verte", "Nachfüllpackung des grünen Elixiers" }, ITEMTYPE_REFILL, GI_POTION_GREEN, false, LOGIC_NONE, RHT_NONE, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BLUE_POTION_REFILL] = Item(RG_BLUE_POTION_REFILL, Text{ "Blue Potion Refill", "Recharge de Potion Bleue", "Nachfüllpackung des blauen Elixiers" }, ITEMTYPE_REFILL, GI_POTION_BLUE, false, LOGIC_NONE, RHT_NONE, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_ARROWS_5] = Item(RG_ARROWS_5, ITEMTYPE_REFILL, GI_ARROWS_SMALL, false, LOGIC_NONE, RHT_ARROWS_5, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_ARROWS_10] = Item(RG_ARROWS_10, ITEMTYPE_REFILL, GI_ARROWS_MEDIUM, false, LOGIC_NONE, RHT_ARROWS_10, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_ARROWS_30] = Item(RG_ARROWS_30, ITEMTYPE_REFILL, GI_ARROWS_LARGE, false, LOGIC_NONE, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_DEKU_NUTS_5] = Item(RG_DEKU_NUTS_5, ITEMTYPE_REFILL, GI_NUTS_5, false, LOGIC_NONE, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_DEKU_NUTS_10] = Item(RG_DEKU_NUTS_10, ITEMTYPE_REFILL, GI_NUTS_10, false, LOGIC_NONE, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_DEKU_SEEDS_30] = Item(RG_DEKU_SEEDS_30, ITEMTYPE_REFILL, GI_SEEDS_30, false, LOGIC_NONE, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_DEKU_STICK_1] = Item(RG_DEKU_STICK_1, ITEMTYPE_REFILL, GI_STICKS_1, false, LOGIC_NONE, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_RED_POTION_REFILL] = Item(RG_RED_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_RED, false, LOGIC_NONE, RHT_RED_POTION_REFILL, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_GREEN_POTION_REFILL] = Item(RG_GREEN_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_GREEN, false, LOGIC_NONE, RHT_GREEN_POTION_REFILL, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BLUE_POTION_REFILL] = Item(RG_BLUE_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_BLUE, false, LOGIC_NONE, RHT_BLUE_POTION_REFILL, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); // Treasure Game - itemTable[RG_TREASURE_GAME_HEART] = Item(RG_TREASURE_GAME_HEART, Text{ "Piece of Heart (WINNER)", "Quart de Coeur (Chasse-aux-Trésors)", "Herzstück (Schatztruhenminispiel)" }, ITEMTYPE_ITEM, GI_HEART_PIECE_WIN, true, LOGIC_PIECE_OF_HEART, RHT_TREASURE_GAME_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_TREASURE_GAME_GREEN_RUPEE] = Item(RG_TREASURE_GAME_GREEN_RUPEE, Text{ "Green Rupee (LOSER)", "Rubis Vert (Chasse-aux-Trésors)", "Grüner Rubin (Schatztruhenminispiel)" }, ITEMTYPE_ITEM, GI_RUPEE_GREEN_LOSE, false, LOGIC_NONE, RHT_TREASURE_GAME_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_TCG_PIECE_OF_HEART] = Item(RG_TCG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE_WIN, true, LOGIC_PIECE_OF_HEART, RHT_TCG_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_LOSER_GREEN_RUPEE] = Item(RG_LOSER_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN_LOSE, false, LOGIC_NONE, RHT_LOSER_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); // Shop - itemTable[RG_BUY_DEKU_NUTS_5] = Item(RG_BUY_DEKU_NUTS_5, Text{ "Buy Deku Nut (5)", "Acheter: Noix Mojo (5)", "Deku-Nuß kaufen (5)" }, ITEMTYPE_SHOP, GI_NUTS_5_2, true, LOGIC_NUTS, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 15); - itemTable[RG_BUY_ARROWS_30] = Item(RG_BUY_ARROWS_30, Text{ "Buy Arrows (30)", "Acheter: Flèches (30)", "Pfeile kaufen (30)" }, ITEMTYPE_SHOP, GI_ARROWS_MEDIUM, true, LOGIC_BUY_ARROW, RHT_ARROWS_30, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 60); - itemTable[RG_BUY_ARROWS_50] = Item(RG_BUY_ARROWS_50, Text{ "Buy Arrows (50)", "Acheter: Flèches (50)", "Pfeile kaufen (50)" }, ITEMTYPE_SHOP, GI_ARROWS_LARGE, true, LOGIC_BUY_ARROW, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 90); - itemTable[RG_BUY_BOMBS_525] = Item(RG_BUY_BOMBS_525, Text{ "Buy Bombs (5) [25]", "Acheter: Bombes (5) [25]", "Bomben kaufen (5) [25]" }, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 25); - itemTable[RG_BUY_DEKU_NUTS_10] = Item(RG_BUY_DEKU_NUTS_10, Text{ "Buy Deku Nut (10)", "Acheter: Noix Mojo (10)", "Deku-Nuß kaufen (10)" }, ITEMTYPE_SHOP, GI_NUTS_10, true, LOGIC_NUTS, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_DEKU_STICK_1] = Item(RG_BUY_DEKU_STICK_1, Text{ "Buy Deku Stick (1)", "Acheter: Bâton Mojo (1)", "Deku-Stab kaufen (1)" }, ITEMTYPE_SHOP, GI_STICKS_1, true, LOGIC_STICKS, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); - itemTable[RG_BUY_BOMBS_10] = Item(RG_BUY_BOMBS_10, Text{ "Buy Bombs (10)", "Acheter: Bombes (10)", "Bomben kaufen (10)" }, ITEMTYPE_SHOP, GI_BOMBS_10, true, LOGIC_BUY_BOMB, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); - itemTable[RG_BUY_FISH] = Item(RG_BUY_FISH, Text{ "Buy Fish", "Acheter: Poisson", "Fisch kaufen" }, ITEMTYPE_SHOP, GI_FISH, true, LOGIC_FISH_ACCESS, RHT_BOTTLE_WITH_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 200); - itemTable[RG_BUY_RED_POTION_30] = Item(RG_BUY_RED_POTION_30, Text{ "Buy Red Potion [30]", "Acheter: Potion Rouge [30]", "Rotes Elixier kaufen [30]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_GREEN_POTION] = Item(RG_BUY_GREEN_POTION, Text{ "Buy Green Potion", "Acheter: Potion Verte", "Grünes Elixier kaufen" }, ITEMTYPE_SHOP, GI_POTION_GREEN, true, LOGIC_BUY_MAGIC_POTION, RHT_BOTTLE_WITH_GREEN_POTION, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_BLUE_POTION] = Item(RG_BUY_BLUE_POTION, Text{ "Buy Blue Potion", "Acheter: Potion Bleue", "Blaues Elixier kaufen" }, ITEMTYPE_SHOP, GI_POTION_BLUE, true, LOGIC_BUY_MAGIC_POTION, RHT_BOTTLE_WITH_BLUE_POTION, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 100); - itemTable[RG_BUY_HYLIAN_SHIELD] = Item(RG_BUY_HYLIAN_SHIELD, Text{ "Buy Hylian Shield", "Acheter: Bouclier Hylien", "Hylia-Schild kaufen" }, ITEMTYPE_SHOP, GI_SHIELD_HYLIAN, true, LOGIC_HYLIAN_SHIELD, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 80); - itemTable[RG_BUY_DEKU_SHIELD] = Item(RG_BUY_DEKU_SHIELD, Text{ "Buy Deku Shield", "Acheter: Bouclier Mojo", "Deku-Schild kaufen" }, ITEMTYPE_SHOP, GI_SHIELD_DEKU, true, LOGIC_DEKU_SHIELD, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 40); - itemTable[RG_BUY_GORON_TUNIC] = Item(RG_BUY_GORON_TUNIC, Text{ "Buy Goron Tunic", "Acheter: Tunique Goron", "Goronen-Tunika kaufen" }, ITEMTYPE_SHOP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 200); - itemTable[RG_BUY_ZORA_TUNIC] = Item(RG_BUY_ZORA_TUNIC, Text{ "Buy Zora Tunic", "Acheter: Tunique Zora", "Zora-Tunika kaufen" }, ITEMTYPE_SHOP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 300); - itemTable[RG_BUY_HEART] = Item(RG_BUY_HEART, Text{ "Buy Heart", "Acheter: Coeur de Vie", "Herz kaufen" }, ITEMTYPE_SHOP, GI_HEART, false, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); - itemTable[RG_BUY_BOMBCHUS_10] = Item(RG_BUY_BOMBCHUS_10, Text{ "Buy Bombchu (10)", "Acheter: Missiles (10)", "Krabbelminen kaufen (10)" }, ITEMTYPE_SHOP, GI_BOMBCHUS_10, true, LOGIC_BUY_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 99); - itemTable[RG_BUY_BOMBCHUS_20] = Item(RG_BUY_BOMBCHUS_20, Text{ "Buy Bombchu (20)", "Acheter: Missiles (20)", "Krabbelminen kaufen (20)" }, ITEMTYPE_SHOP, GI_BOMBCHUS_20, true, LOGIC_BUY_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 180); - itemTable[RG_BUY_DEKU_SEEDS_30] = Item(RG_BUY_DEKU_SEEDS_30, Text{ "Buy Deku Seeds (30)", "Acheter: Graines Mojo (30)", "Deku-Samen kaufen (30)" }, ITEMTYPE_SHOP, GI_SEEDS_30, true, LOGIC_BUY_SEED, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_SOLD_OUT] = Item(RG_SOLD_OUT, Text{ "Sold Out", "Rupture de stock", "Ausverkauft" }, ITEMTYPE_SHOP, RG_SOLD_OUT, false, LOGIC_NONE, RHT_NONE, false, 0); - itemTable[RG_BUY_BLUE_FIRE] = Item(RG_BUY_BLUE_FIRE, Text{ "Buy Blue Fire", "Acheter: Flamme Bleue", "Blaues Feuer kaufen" }, ITEMTYPE_SHOP, GI_BLUE_FIRE, true, LOGIC_BLUE_FIRE_ACCESS, RHT_BOTTLE_WITH_BLUE_FIRE, ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 300); - itemTable[RG_BUY_BOTTLE_BUG] = Item(RG_BUY_BOTTLE_BUG, Text{ "Buy Bottle Bug", "Acheter: Insecte en bouteille", "Flaschenkäfer kaufen" }, ITEMTYPE_SHOP, GI_BUGS, true, LOGIC_BUGS_ACCESS, RHT_BOTTLE_WITH_BUGS, ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); - itemTable[RG_BUY_POE] = Item(RG_BUY_POE, Text{ "Buy Poe", "Acheter: Esprit", "Geist kaufen" }, ITEMTYPE_SHOP, RG_BUY_POE, false, LOGIC_NONE, RHT_BOTTLE_WITH_BIG_POE, ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_FAIRYS_SPIRIT] = Item(RG_BUY_FAIRYS_SPIRIT, Text{ "Buy Fairy's Spirit", "Acheter: Esprit de Fée", "Feengeist kaufen" }, ITEMTYPE_SHOP, GI_FAIRY, true, LOGIC_FAIRY_ACCESS, RHT_BOTTLE_WITH_FAIRY, ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); - itemTable[RG_BUY_ARROWS_10] = Item(RG_BUY_ARROWS_10, Text{ "Buy Arrows (10)", "Acheter: Flèches (10)", "Pfeile kaufen (10)" }, ITEMTYPE_SHOP, GI_ARROWS_SMALL, true, LOGIC_BUY_ARROW, RHT_ARROWS_10, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 20); - itemTable[RG_BUY_BOMBS_20] = Item(RG_BUY_BOMBS_20, Text{ "Buy Bombs (20)", "Acheter: Bombes (20)", "Bomben kaufen (20)" }, ITEMTYPE_SHOP, GI_BOMBS_20, true, LOGIC_BUY_BOMB, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 80); - itemTable[RG_BUY_BOMBS_30] = Item(RG_BUY_BOMBS_30, Text{ "Buy Bombs (30)", "Acheter: Bombes (30)", "Bomben kaufen (30)" }, ITEMTYPE_SHOP, GI_BOMBS_30, true, LOGIC_BUY_BOMB, RHT_BOMBS_20, ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 120); - itemTable[RG_BUY_BOMBS_535] = Item(RG_BUY_BOMBS_535, Text{ "Buy Bombs (5) [35]", "Acheter: Bombes (5) [35]", "Bomben kaufen (5) [35]" }, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 35); - itemTable[RG_BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, Text{ "Buy Red Potion [40]", "Acheter: Potion Rouge [40]", "Rotes Elixier kaufen [40]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 40); - itemTable[RG_BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, Text{ "Buy Red Potion [50]", "Acheter: Potion Rouge [50]", "Rotes Elixier kaufen [50]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_DEKU_NUTS_5] = Item(RG_BUY_DEKU_NUTS_5, ITEMTYPE_SHOP, GI_NUTS_5_2, true, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 15); + itemTable[RG_BUY_ARROWS_30] = Item(RG_BUY_ARROWS_30, ITEMTYPE_SHOP, GI_ARROWS_MEDIUM, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_30, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 60); + itemTable[RG_BUY_ARROWS_50] = Item(RG_BUY_ARROWS_50, ITEMTYPE_SHOP, GI_ARROWS_LARGE, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 90); + itemTable[RG_BUY_BOMBS_525] = Item(RG_BUY_BOMBS_525, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_525, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 25); + itemTable[RG_BUY_DEKU_NUTS_10] = Item(RG_BUY_DEKU_NUTS_10, ITEMTYPE_SHOP, GI_NUTS_10, true, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_BUY_DEKU_STICK_1] = Item(RG_BUY_DEKU_STICK_1, ITEMTYPE_SHOP, GI_STICKS_1, true, LOGIC_STICKS, RHT_BUY_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); + itemTable[RG_BUY_BOMBS_10] = Item(RG_BUY_BOMBS_10, ITEMTYPE_SHOP, GI_BOMBS_10, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_FISH] = Item(RG_BUY_FISH, ITEMTYPE_SHOP, GI_FISH, true, LOGIC_FISH_ACCESS, RHT_BUY_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 200); + itemTable[RG_BUY_RED_POTION_30] = Item(RG_BUY_RED_POTION_30, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_30, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_BUY_GREEN_POTION] = Item(RG_BUY_GREEN_POTION, ITEMTYPE_SHOP, GI_POTION_GREEN, true, LOGIC_BUY_MAGIC_POTION, RHT_BUY_GREEN_POTION, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_BUY_BLUE_POTION] = Item(RG_BUY_BLUE_POTION, ITEMTYPE_SHOP, GI_POTION_BLUE, true, LOGIC_BUY_MAGIC_POTION, RHT_BUY_BLUE_POTION, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 100); + itemTable[RG_BUY_HYLIAN_SHIELD] = Item(RG_BUY_HYLIAN_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_HYLIAN, true, LOGIC_HYLIAN_SHIELD, RHT_BUY_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 80); + itemTable[RG_BUY_DEKU_SHIELD] = Item(RG_BUY_DEKU_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_DEKU, true, LOGIC_DEKU_SHIELD, RHT_BUY_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 40); + itemTable[RG_BUY_GORON_TUNIC] = Item(RG_BUY_GORON_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_BUY_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 200); + itemTable[RG_BUY_ZORA_TUNIC] = Item(RG_BUY_ZORA_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_BUY_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 300); + itemTable[RG_BUY_HEART] = Item(RG_BUY_HEART, ITEMTYPE_SHOP, GI_HEART, false, LOGIC_NONE, RHT_BUY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); + itemTable[RG_BUY_BOMBCHUS_10] = Item(RG_BUY_BOMBCHUS_10, ITEMTYPE_SHOP, GI_BOMBCHUS_10, true, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 99); + itemTable[RG_BUY_BOMBCHUS_20] = Item(RG_BUY_BOMBCHUS_20, ITEMTYPE_SHOP, GI_BOMBCHUS_20, true, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 180); + itemTable[RG_BUY_DEKU_SEEDS_30] = Item(RG_BUY_DEKU_SEEDS_30, ITEMTYPE_SHOP, GI_SEEDS_30, true, LOGIC_BUY_SEED, RHT_BUY_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_SOLD_OUT] = Item(RG_SOLD_OUT, ITEMTYPE_SHOP, RG_SOLD_OUT, false, LOGIC_NONE, RHT_SOLD_OUT, false, 0); + itemTable[RG_BUY_BLUE_FIRE] = Item(RG_BUY_BLUE_FIRE, ITEMTYPE_SHOP, GI_BLUE_FIRE, true, LOGIC_BLUE_FIRE_ACCESS, RHT_BUY_FAIRYS_SPIRIT, ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 300); + itemTable[RG_BUY_BOTTLE_BUG] = Item(RG_BUY_BOTTLE_BUG, ITEMTYPE_SHOP, GI_BUGS, true, LOGIC_BUGS_ACCESS, RHT_BUY_BOTTLE_BUG, ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_POE] = Item(RG_BUY_POE, ITEMTYPE_SHOP, RG_BUY_POE, false, LOGIC_NONE, RHT_BUY_POE, ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_BUY_FAIRYS_SPIRIT] = Item(RG_BUY_FAIRYS_SPIRIT, ITEMTYPE_SHOP, GI_FAIRY, true, LOGIC_FAIRY_ACCESS, RHT_BUY_FAIRYS_SPIRIT, ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_ARROWS_10] = Item(RG_BUY_ARROWS_10, ITEMTYPE_SHOP, GI_ARROWS_SMALL, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_10, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 20); + itemTable[RG_BUY_BOMBS_20] = Item(RG_BUY_BOMBS_20, ITEMTYPE_SHOP, GI_BOMBS_20, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 80); + itemTable[RG_BUY_BOMBS_30] = Item(RG_BUY_BOMBS_30, ITEMTYPE_SHOP, GI_BOMBS_30, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_20, ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 120); + itemTable[RG_BUY_BOMBS_535] = Item(RG_BUY_BOMBS_535, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_535, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 35); + itemTable[RG_BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_40, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 40); + itemTable[RG_BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_50, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); // Misc. - itemTable[RG_GOHMA_SOUL] = Item(RG_GOHMA_SOUL, Text{ "Gohma's Soul", "Âme de Gohma", "Gohmas Seele" }, ITEMTYPE_ITEM, 0xE0, true, LOGIC_CAN_SUMMON_GOHMA, RHT_GOHMA_SOUL, RG_GOHMA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_GOHMA_SOUL] = Item(RG_GOHMA_SOUL, ITEMTYPE_ITEM, 0xE0, true, LOGIC_CAN_SUMMON_GOHMA, RHT_GOHMA_SOUL, RG_GOHMA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GOHMA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_KING_DODONGO_SOUL] = Item(RG_KING_DODONGO_SOUL, Text{ "King Dodongo's Soul", "Âme du Roi Dodongo", "König Dodongos Seele" }, ITEMTYPE_ITEM, 0xE1, true, LOGIC_CAN_SUMMON_KINGDODONGO, RHT_KING_DODONGO_SOUL, RG_KING_DODONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_KING_DODONGO_SOUL] = Item(RG_KING_DODONGO_SOUL, ITEMTYPE_ITEM, 0xE1, true, LOGIC_CAN_SUMMON_KINGDODONGO, RHT_KING_DODONGO_SOUL, RG_KING_DODONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_KING_DODONGO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BARINADE_SOUL] = Item(RG_BARINADE_SOUL, Text{ "Barinade's Soul", "Âme de Barinade", "Barinades Seele" }, ITEMTYPE_ITEM, 0xE2, true, LOGIC_CAN_SUMMON_BARINADE, RHT_BARINADE_SOUL, RG_BARINADE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BARINADE_SOUL] = Item(RG_BARINADE_SOUL, ITEMTYPE_ITEM, 0xE2, true, LOGIC_CAN_SUMMON_BARINADE, RHT_BARINADE_SOUL, RG_BARINADE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BARINADE_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_PHANTOM_GANON_SOUL] = Item(RG_PHANTOM_GANON_SOUL, Text{ "Phantom Ganon's Soul", "Âme de Ganon Spectral", "Phantom-Ganons Seele" }, ITEMTYPE_ITEM, 0xE3, true, LOGIC_CAN_SUMMON_PHANTOMGANON, RHT_PHANTOM_GANON_SOUL, RG_PHANTOM_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_PHANTOM_GANON_SOUL] = Item(RG_PHANTOM_GANON_SOUL, ITEMTYPE_ITEM, 0xE3, true, LOGIC_CAN_SUMMON_PHANTOMGANON, RHT_PHANTOM_GANON_SOUL, RG_PHANTOM_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_PHANTOM_GANON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_VOLVAGIA_SOUL] = Item(RG_VOLVAGIA_SOUL, Text{ "Volvagia's Soul", "Âme de Vulcania", "Volvagias Seele" }, ITEMTYPE_ITEM, 0xE4, true, LOGIC_CAN_SUMMON_VOLVAGIA, RHT_VOLVAGIA_SOUL, RG_VOLVAGIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_VOLVAGIA_SOUL] = Item(RG_VOLVAGIA_SOUL, ITEMTYPE_ITEM, 0xE4, true, LOGIC_CAN_SUMMON_VOLVAGIA, RHT_VOLVAGIA_SOUL, RG_VOLVAGIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_VOLVAGIA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_MORPHA_SOUL] = Item(RG_MORPHA_SOUL, Text{ "Morpha's Soul", "Âme de Morpha", "Morphas Seele" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_MORPHA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MORPHA_SOUL] = Item(RG_MORPHA_SOUL, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_MORPHA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MORPHA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BONGO_BONGO_SOUL] = Item(RG_BONGO_BONGO_SOUL, Text{ "Bongo Bongo's Soul", "Âme de Bongo Bongo", "Bongo Bongos Seele" }, ITEMTYPE_ITEM, 0xE6, true, LOGIC_CAN_SUMMON_BONGOBONGO, RHT_BONGO_BONGO_SOUL, RG_BONGO_BONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BONGO_BONGO_SOUL] = Item(RG_BONGO_BONGO_SOUL, ITEMTYPE_ITEM, 0xE6, true, LOGIC_CAN_SUMMON_BONGOBONGO, RHT_BONGO_BONGO_SOUL, RG_BONGO_BONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BONGO_BONGO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_TWINROVA_SOUL] = Item(RG_TWINROVA_SOUL, Text{ "Twinrova's Soul", "Âme du Duo Maléfique", "Twinrovas Seele" }, ITEMTYPE_ITEM, 0xE7, true, LOGIC_CAN_SUMMON_TWINROVA, RHT_TWINROVA_SOUL, RG_TWINROVA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_TWINROVA_SOUL] = Item(RG_TWINROVA_SOUL, ITEMTYPE_ITEM, 0xE7, true, LOGIC_CAN_SUMMON_TWINROVA, RHT_TWINROVA_SOUL, RG_TWINROVA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_TWINROVA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_GANON_SOUL] = Item(RG_GANON_SOUL, Text{ "Ganon's Soul", "Âme de Ganon", "Ganons Seele" }, ITEMTYPE_ITEM, 0xE8, true, LOGIC_CAN_SUMMON_GANON, RHT_GANON_SOUL, RG_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_GANON_SOUL] = Item(RG_GANON_SOUL, ITEMTYPE_ITEM, 0xE8, true, LOGIC_CAN_SUMMON_GANON, RHT_GANON_SOUL, RG_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GANON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_FISHING_POLE] = Item(RG_FISHING_POLE, Text{ "Fishing Pole", "Canne à Pêche", "Angelrute" }, ITEMTYPE_ITEM, RG_FISHING_POLE, true, LOGIC_FISHING_POLE, RHT_FISHING_POLE, RG_FISHING_POLE, OBJECT_GI_FISH, GID_FISHING_POLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_FISHING_POLE] = Item(RG_FISHING_POLE, ITEMTYPE_ITEM, RG_FISHING_POLE, true, LOGIC_FISHING_POLE, RHT_FISHING_POLE, RG_FISHING_POLE, OBJECT_GI_FISH, GID_FISHING_POLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_FISHING_POLE].SetCustomDrawFunc(Randomizer_DrawFishingPoleGI); - itemTable[RG_OCARINA_A_BUTTON] = Item(RG_OCARINA_A_BUTTON, Text{ "Ocarina A Button", "Touche A de l'Ocarina", "Taste A der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_A_BUTTON, RHT_OCARINA_A_BUTTON, RG_OCARINA_A_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_A_BUTTON] = Item(RG_OCARINA_A_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_A_BUTTON, RHT_OCARINA_A_BUTTON, RG_OCARINA_A_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_A_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_UP_BUTTON] = Item(RG_OCARINA_C_UP_BUTTON, Text{ "Ocarina C Up Button", "Touche C-Haut de l'Ocarina", "Taste C-Oben der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_UP_BUTTON, RHT_OCARINA_C_UP_BUTTON, RG_OCARINA_C_UP_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_C_UP_BUTTON] = Item(RG_OCARINA_C_UP_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_UP_BUTTON, RHT_OCARINA_C_UP_BUTTON, RG_OCARINA_C_UP_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_UP_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_DOWN_BUTTON] = Item(RG_OCARINA_C_DOWN_BUTTON, Text{ "Ocarina C Down Button", "Touche C-Bas de l'Ocarina", "Taste C-Unten der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_DOWN_BUTTON, RHT_OCARINA_C_DOWN_BUTTON, RG_OCARINA_C_DOWN_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_C_DOWN_BUTTON] = Item(RG_OCARINA_C_DOWN_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_DOWN_BUTTON, RHT_OCARINA_C_DOWN_BUTTON, RG_OCARINA_C_DOWN_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_DOWN_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_LEFT_BUTTON] = Item(RG_OCARINA_C_LEFT_BUTTON, Text{ "Ocarina C Left Button", "Touche C-Gauche de l'Ocarina", "Taste C-Links der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_LEFT_BUTTON, RHT_OCARINA_C_LEFT_BUTTON, RG_OCARINA_C_LEFT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_C_LEFT_BUTTON] = Item(RG_OCARINA_C_LEFT_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_LEFT_BUTTON, RHT_OCARINA_C_LEFT_BUTTON, RG_OCARINA_C_LEFT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_LEFT_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_RIGHT_BUTTON] = Item(RG_OCARINA_C_RIGHT_BUTTON, Text{ "Ocarina C Right Button", "Touche C-Droit de l'Ocarina", "Taste C-Rechts der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_RIGHT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, RG_OCARINA_C_RIGHT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_C_RIGHT_BUTTON] = Item(RG_OCARINA_C_RIGHT_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_RIGHT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, RG_OCARINA_C_RIGHT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_RIGHT_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_BRONZE_SCALE] = Item(RG_BRONZE_SCALE, Text{ "Bronze Scale", "Écaille de Bronze", "Bronzene Schuppe" }, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_WALLET, RHT_BRONZE_SCALE, RG_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BRONZE_SCALE].SetCustomDrawFunc(Randomizer_DrawBronzeScale); - - itemTable[RG_BOMBCHU_BAG] = Item(RG_BOMBCHU_BAG, Text{ "Bombchu Bag", "!!!", "Sac de Missiles Teigneux" }, ITEMTYPE_ITEM, RG_BOMBCHU_BAG, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_BAG, RG_BOMBCHU_BAG, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOMBCHU_BAG] = Item(RG_BOMBCHU_BAG, ITEMTYPE_ITEM, RG_BOMBCHU_BAG, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_BAG, RG_BOMBCHU_BAG, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BOMBCHU_BAG].SetCustomDrawFunc(Randomizer_DrawBombchuBag); - itemTable[RG_QUIVER_INF] = Item(RG_QUIVER_INF, Text{ "Infinite Quiver", "Carquois Infini", "Unendlicher Köcher" }, ITEMTYPE_ITEM, RG_QUIVER_INF, true, LOGIC_PROGRESSIVE_BOW, RHT_QUIVER_INF, RG_QUIVER_INF, OBJECT_GI_ARROWCASE, GID_QUIVER_50, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOMB_BAG_INF] = Item(RG_BOMB_BAG_INF, Text{ "Infinite Bomb Bag", "Sac de Bombes Infini", "Unendliche Bombentasche" }, ITEMTYPE_ITEM, RG_BOMB_BAG_INF, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG_INF, RG_BOMB_BAG_INF, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BULLET_BAG_INF] = Item(RG_BULLET_BAG_INF, Text{ "Infinite Bullet Bag", "Sac de Graines Infinis", "Unendliche Samentasche" }, ITEMTYPE_ITEM, RG_BULLET_BAG_INF, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BULLET_BAG_INF, RG_BULLET_BAG_INF, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_STICK_UPGRADE_INF] = Item(RG_STICK_UPGRADE_INF, Text{ "Infinite Stick Capacity", "Bâtons Mojo Infinis", "Unendliche Stab-Kapazität" }, ITEMTYPE_ITEM, RG_STICK_UPGRADE_INF, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_STICK_UPGRADE_INF, RG_STICK_UPGRADE_INF, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_NUT_UPGRADE_INF] = Item(RG_NUT_UPGRADE_INF, Text{ "Infinite Nut Capacity", "Noix Mojo Infinies", "Unendliche Nuß-Kapazität" }, ITEMTYPE_ITEM, RG_NUT_UPGRADE_INF, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NUT_UPGRADE_INF, RG_NUT_UPGRADE_INF, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_MAGIC_INF] = Item(RG_MAGIC_INF, Text{ "Infinite Magic Meter", "Magie Infinie", "Unendliches Magisches Maß" }, ITEMTYPE_ITEM, RG_MAGIC_INF, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_INF, RG_MAGIC_INF, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOMBCHU_INF] = Item(RG_BOMBCHU_INF, Text{ "Infinite Bombchus", "Missiles Teigneux Infinis", "Unendliche Krabbelminen" }, ITEMTYPE_ITEM, RG_BOMBCHU_INF, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_INF, RG_BOMBCHU_INF, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_QUIVER_INF] = Item(RG_QUIVER_INF, ITEMTYPE_ITEM, RG_QUIVER_INF, true, LOGIC_PROGRESSIVE_BOW, RHT_QUIVER_INF, RG_QUIVER_INF, OBJECT_GI_ARROWCASE, GID_QUIVER_50, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOMB_BAG_INF] = Item(RG_BOMB_BAG_INF, ITEMTYPE_ITEM, RG_BOMB_BAG_INF, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG_INF, RG_BOMB_BAG_INF, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BULLET_BAG_INF] = Item(RG_BULLET_BAG_INF, ITEMTYPE_ITEM, RG_BULLET_BAG_INF, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BULLET_BAG_INF, RG_BULLET_BAG_INF, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_STICK_UPGRADE_INF] = Item(RG_STICK_UPGRADE_INF, ITEMTYPE_ITEM, RG_STICK_UPGRADE_INF, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_STICK_UPGRADE_INF, RG_STICK_UPGRADE_INF, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_NUT_UPGRADE_INF] = Item(RG_NUT_UPGRADE_INF, ITEMTYPE_ITEM, RG_NUT_UPGRADE_INF, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NUT_UPGRADE_INF, RG_NUT_UPGRADE_INF, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_MAGIC_INF] = Item(RG_MAGIC_INF, ITEMTYPE_ITEM, RG_MAGIC_INF, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_INF, RG_MAGIC_INF, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOMBCHU_INF] = Item(RG_BOMBCHU_INF, ITEMTYPE_ITEM, RG_BOMBCHU_INF, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_INF, RG_BOMBCHU_INF, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_BOMBCHU_INF].SetCustomDrawFunc(Randomizer_DrawBombchuBag); - itemTable[RG_WALLET_INF] = Item(RG_WALLET_INF, Text{ "Infinite Wallet", "Bourse Infinie", "Unendliche Geldbörse" }, ITEMTYPE_ITEM, RG_WALLET_INF, true, LOGIC_PROGRESSIVE_WALLET, RHT_WALLET_INF, RG_WALLET_INF, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_WALLET_INF] = Item(RG_WALLET_INF, ITEMTYPE_ITEM, RG_WALLET_INF, true, LOGIC_PROGRESSIVE_WALLET, RHT_WALLET_INF, RG_WALLET_INF, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_SKELETON_KEY] = Item(RG_SKELETON_KEY, Text{ "Skeleton Key", "Clé Squelette", "Skelettschlüssel" }, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_SKELETON_KEY, RHT_SKELETON_KEY, RG_SKELETON_KEY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_SKELETON_KEY] = Item(RG_SKELETON_KEY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_SKELETON_KEY, RHT_SKELETON_KEY, RG_SKELETON_KEY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_SKELETON_KEY].SetCustomDrawFunc(Randomizer_DrawSkeletonKey); - itemTable[RG_DEKU_STICK_BAG] = Item(RG_DEKU_STICK_BAG, Text{ "Deku Stick Bag", "Sac de Bâton Mojo", "Deku-Stab-Tasche" }, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_NONE, RG_DEKU_STICK_BAG, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - - itemTable[RG_DEKU_NUT_BAG] = Item(RG_DEKU_NUT_BAG, Text{ "Deku Nut Bag", "Sac de Noix Mojo", "Deku-Nuß-Tasche" }, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NONE, RG_DEKU_NUT_BAG, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - - itemTable[RG_TRIFORCE] = Item(RG_TRIFORCE, Text{ "Triforce", "Triforce", "Triforce" }, ITEMTYPE_EVENT, RG_TRIFORCE, false, LOGIC_NONE, RHT_NONE); - itemTable[RG_HINT] = Item(RG_HINT, Text{ "Hint", "Indice", "Hinweis" }, ITEMTYPE_EVENT, RG_HINT, false, LOGIC_NONE, RHT_NONE); + + itemTable[RG_TRIFORCE] = Item(RG_TRIFORCE, ITEMTYPE_EVENT, RG_TRIFORCE, false, LOGIC_NONE, RHT_TRIFORCE); + itemTable[RG_HINT] = Item(RG_HINT, ITEMTYPE_EVENT, RG_HINT, false, LOGIC_NONE, RHT_HINT); // Individual stages of progressive items (only here for GetItemEntry purposes, not for use in seed gen) - itemTable[RG_HOOKSHOT] = Item(RG_HOOKSHOT, Text{ "Hookshot", "Grappin", "Fanghaken" }, ITEMTYPE_ITEM, GI_HOOKSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_HOOKSHOT, ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LONGSHOT] = Item(RG_LONGSHOT, Text{ "Longshot", "Super-Grappin", "Enterhaken" }, ITEMTYPE_ITEM, GI_LONGSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_LONGSHOT, ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FAIRY_OCARINA] = Item(RG_FAIRY_OCARINA, Text{ "Fairy Ocarina", "Ocarina des fées", "Feen-Okarina" }, ITEMTYPE_ITEM, GI_OCARINA_FAIRY, true, LOGIC_PROGRESSIVE_OCARINA, RHT_FAIRY_OCARINA, ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x4A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_OCARINA_OF_TIME] = Item(RG_OCARINA_OF_TIME, Text{ "Ocarina of Time", "Ocarina du Temps", "Okarina der Zeit" }, ITEMTYPE_ITEM, GI_OCARINA_OOT, true, LOGIC_PROGRESSIVE_OCARINA, RHT_OCARINA_OF_TIME, ITEM_OCARINA_TIME, OBJECT_GI_OCARINA, GID_OCARINA_TIME, 0x3A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOMB_BAG] = Item(RG_BOMB_BAG, Text{ "Bomb Bag", "Sac de Bombes", "Bombentasche" }, ITEMTYPE_ITEM, GI_BOMB_BAG_20, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG, ITEM_BOMB_BAG_20, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_20, 0x58, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIG_BOMB_BAG] = Item(RG_BIG_BOMB_BAG, Text{ "Big Bomb Bag", "Grand Sac de Bombes", "Große Bombentasche" }, ITEMTYPE_ITEM, GI_BOMB_BAG_30, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIG_BOMB_BAG, ITEM_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, 0x59, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_BIGGEST_BOMB_BAG] = Item(RG_BIGGEST_BOMB_BAG, Text{ "Biggest Bomb Bag", "Énorme Sac de Bombes", "Größte Bombentasche" }, ITEMTYPE_ITEM, GI_BOMB_BAG_40, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIGGEST_BOMB_BAG, ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_FAIRY_BOW] = Item(RG_FAIRY_BOW, Text{ "Fairy Bow", "Arc des Fées", "Feen-Bogen" }, ITEMTYPE_ITEM, GI_BOW, true, LOGIC_PROGRESSIVE_BOW, RHT_FAIRY_BOW, ITEM_BOW, OBJECT_GI_BOW, GID_BOW, 0x31, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIG_QUIVER] = Item(RG_BIG_QUIVER, Text{ "Big Quiver", "Grand carquois", "Großer Köcher" }, ITEMTYPE_ITEM, GI_QUIVER_40, true, LOGIC_PROGRESSIVE_BOW, RHT_BIG_QUIVER, ITEM_QUIVER_40, OBJECT_GI_ARROWCASE, GID_QUIVER_40, 0x56, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_BIGGEST_QUIVER] = Item(RG_BIGGEST_QUIVER, Text{ "Biggest Quiver", "Énorme carquois", "Größter Köcher" }, ITEMTYPE_ITEM, GI_QUIVER_50, true, LOGIC_PROGRESSIVE_BOW, RHT_BIGGEST_QUIVER, ITEM_QUIVER_50, OBJECT_GI_ARROWCASE, GID_QUIVER_50, 0x57, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_FAIRY_SLINGSHOT] = Item(RG_FAIRY_SLINGSHOT, Text{ "Fairy Slingshot", "Lance-Pierre des Fées", "Feen-Schleuder" }, ITEMTYPE_ITEM, GI_SLINGSHOT, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_FAIRY_SLINGSHOT, ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIG_BULLET_BAG] = Item(RG_BIG_BULLET_BAG, Text{ "Big Deku Seed Bullet Bag", "Grand sac de graines mojo", "Große Deku-Samentasche" }, ITEMTYPE_ITEM, GI_BULLET_BAG_40, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIG_BULLET_BAG, ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_BIGGEST_BULLET_BAG] = Item(RG_BIGGEST_BULLET_BAG, Text{ "Biggest Deku Seed Bullet Bag", "Énorme sac de graines mojo", "Größte Deku-Samentasche" }, ITEMTYPE_ITEM, GI_BULLET_BAG_50, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIGGEST_BULLET_BAG, ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_GORONS_BRACELET] = Item(RG_GORONS_BRACELET, Text{ "Goron's Bracelet", "Bracelet Goron", "Goronen-Armband" }, ITEMTYPE_ITEM, GI_BRACELET, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GORONS_BRACELET, ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SILVER_GAUNTLETS] = Item(RG_SILVER_GAUNTLETS, Text{ "Silver Gauntlets", "Gantelets d'argent", "Silberhandschuhe" }, ITEMTYPE_ITEM, GI_GAUNTLETS_SILVER, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_SILVER_GAUNTLETS, ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GOLDEN_GAUNTLETS] = Item(RG_GOLDEN_GAUNTLETS, Text{ "Golden Gauntlets", "Gantelets d'or", "Goldhandschuhe" }, ITEMTYPE_ITEM, GI_GAUNTLETS_GOLD, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GOLDEN_GAUNTLETS, ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SILVER_SCALE] = Item(RG_SILVER_SCALE, Text{ "Silver Scale", "Écaille d'argent", "Silberne Schuppe" }, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_SCALE, RHT_SILVER_SCALE, ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GOLDEN_SCALE] = Item(RG_GOLDEN_SCALE, Text{ "Golden Scale", "Écaille d'or", "Goldene Schuppe" }, ITEMTYPE_ITEM, GI_SCALE_GOLDEN, true, LOGIC_PROGRESSIVE_SCALE, RHT_GOLDEN_SCALE, ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ADULT_WALLET] = Item(RG_ADULT_WALLET, Text{ "Adult Wallet", "Grande Bourse", "Erwachsenengeldbörse" }, ITEMTYPE_ITEM, GI_WALLET_ADULT, true, LOGIC_PROGRESSIVE_WALLET, RHT_ADULT_WALLET, ITEM_WALLET_ADULT, OBJECT_GI_PURSE, GID_WALLET_ADULT, 0x5E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GIANT_WALLET] = Item(RG_GIANT_WALLET, Text{ "Giant Wallet", "Bourse de Géant", "Riesige Geldbörse" }, ITEMTYPE_ITEM, GI_WALLET_GIANT, true, LOGIC_PROGRESSIVE_WALLET, RHT_GIANT_WALLET, ITEM_WALLET_GIANT, OBJECT_GI_PURSE, GID_WALLET_GIANT, 0x5F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_TYCOON_WALLET] = Item(RG_TYCOON_WALLET, Text{ "Tycoon Wallet", "Bourse de Magnat", "Goldene Geldbörse" }, ITEMTYPE_ITEM, RG_TYCOON_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_TYCOON_WALLET, RG_TYCOON_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_CHILD_WALLET] = Item(RG_CHILD_WALLET, Text{ "Child Wallet", "Petite Bourse", "Kindergeldbörse" }, ITEMTYPE_ITEM, RG_CHILD_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_CHILD_WALLET, RG_CHILD_WALLET, OBJECT_GI_PURSE, GID_WALLET_ADULT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_DEKU_NUT_CAPACITY_30] = Item(RG_DEKU_NUT_CAPACITY_30, Text{ "Deku Nut Capacity (30)", "Capacité de noix Mojo (30)", "Deku-Nuß-Kapazität (30)" }, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_30, ITEM_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_DEKU_NUT_CAPACITY_40] = Item(RG_DEKU_NUT_CAPACITY_40, Text{ "Deku Nut Capacity (40)", "Capacité de noix Mojo (40)", "Deku-Nuß-Kapazität (40)" }, ITEMTYPE_ITEM, GI_NUT_UPGRADE_40, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_40, ITEM_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_DEKU_STICK_CAPACITY_20] = Item(RG_DEKU_STICK_CAPACITY_20, Text{ "Deku Stick Capacity (20)", "Capacité de Bâtons Mojo (20)", "Deku-Stab-Kapazität (20)" }, ITEMTYPE_ITEM, GI_STICK_UPGRADE_20, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_20, ITEM_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_STICK, 0x90, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_DEKU_STICK_CAPACITY_30] = Item(RG_DEKU_STICK_CAPACITY_30, Text{ "Deku Stick Capacity (30)", "Capacité de Bâtons Mojo (30)", "Deku-Stab-Kapazität (30)" }, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_30, ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_MAGIC_SINGLE] = Item(RG_MAGIC_SINGLE, Text{ "Magic Meter", "Jauge de Magie", "Magisches Maß" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_SINGLE, RG_MAGIC_SINGLE, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0xE4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_MAGIC_DOUBLE] = Item(RG_MAGIC_DOUBLE, Text{ "Enhanced Magic Meter", "Jauge de Magie améliorée", "Verbessertes Magisches Maß" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, RG_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, Text{ "Triforce Piece", "Triforce Piece", "Triforce-Fragment" }, ITEMTYPE_ITEM, 0xDF, true, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, RG_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_HOOKSHOT] = Item(RG_HOOKSHOT, ITEMTYPE_ITEM, GI_HOOKSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_HOOKSHOT, ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_LONGSHOT] = Item(RG_LONGSHOT, ITEMTYPE_ITEM, GI_LONGSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_LONGSHOT, ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FAIRY_OCARINA] = Item(RG_FAIRY_OCARINA, ITEMTYPE_ITEM, GI_OCARINA_FAIRY, true, LOGIC_PROGRESSIVE_OCARINA, RHT_FAIRY_OCARINA, ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x4A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_OCARINA_OF_TIME] = Item(RG_OCARINA_OF_TIME, ITEMTYPE_ITEM, GI_OCARINA_OOT, true, LOGIC_PROGRESSIVE_OCARINA, RHT_OCARINA_OF_TIME, ITEM_OCARINA_TIME, OBJECT_GI_OCARINA, GID_OCARINA_TIME, 0x3A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOMB_BAG] = Item(RG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_20, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG, ITEM_BOMB_BAG_20, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_20, 0x58, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BIG_BOMB_BAG] = Item(RG_BIG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_30, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIG_BOMB_BAG, ITEM_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, 0x59, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_BIGGEST_BOMB_BAG] = Item(RG_BIGGEST_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_40, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIGGEST_BOMB_BAG, ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_FAIRY_BOW] = Item(RG_FAIRY_BOW, ITEMTYPE_ITEM, GI_BOW, true, LOGIC_PROGRESSIVE_BOW, RHT_FAIRY_BOW, ITEM_BOW, OBJECT_GI_BOW, GID_BOW, 0x31, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BIG_QUIVER] = Item(RG_BIG_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_40, true, LOGIC_PROGRESSIVE_BOW, RHT_BIG_QUIVER, ITEM_QUIVER_40, OBJECT_GI_ARROWCASE, GID_QUIVER_40, 0x56, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_BIGGEST_QUIVER] = Item(RG_BIGGEST_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_50, true, LOGIC_PROGRESSIVE_BOW, RHT_BIGGEST_QUIVER, ITEM_QUIVER_50, OBJECT_GI_ARROWCASE, GID_QUIVER_50, 0x57, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_FAIRY_SLINGSHOT] = Item(RG_FAIRY_SLINGSHOT, ITEMTYPE_ITEM, GI_SLINGSHOT, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_FAIRY_SLINGSHOT, ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BIG_BULLET_BAG] = Item(RG_BIG_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_40, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIG_BULLET_BAG, ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_BIGGEST_BULLET_BAG] = Item(RG_BIGGEST_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_50, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIGGEST_BULLET_BAG, ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_GORONS_BRACELET] = Item(RG_GORONS_BRACELET, ITEMTYPE_ITEM, GI_BRACELET, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GORONS_BRACELET, ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SILVER_GAUNTLETS] = Item(RG_SILVER_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_SILVER, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_SILVER_GAUNTLETS, ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GOLDEN_GAUNTLETS] = Item(RG_GOLDEN_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_GOLD, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GOLDEN_GAUNTLETS, ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BRONZE_SCALE] = Item(RG_BRONZE_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_WALLET, RHT_BRONZE_SCALE, RG_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BRONZE_SCALE].SetCustomDrawFunc(Randomizer_DrawBronzeScale); + itemTable[RG_SILVER_SCALE] = Item(RG_SILVER_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_SCALE, RHT_SILVER_SCALE, ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GOLDEN_SCALE] = Item(RG_GOLDEN_SCALE, ITEMTYPE_ITEM, GI_SCALE_GOLDEN, true, LOGIC_PROGRESSIVE_SCALE, RHT_GOLDEN_SCALE, ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_CHILD_WALLET] = Item(RG_CHILD_WALLET, ITEMTYPE_ITEM, RG_CHILD_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_CHILD_WALLET, RG_CHILD_WALLET, OBJECT_GI_PURSE, GID_WALLET_ADULT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_ADULT_WALLET] = Item(RG_ADULT_WALLET, ITEMTYPE_ITEM, GI_WALLET_ADULT, true, LOGIC_PROGRESSIVE_WALLET, RHT_ADULT_WALLET, ITEM_WALLET_ADULT, OBJECT_GI_PURSE, GID_WALLET_ADULT, 0x5E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GIANT_WALLET] = Item(RG_GIANT_WALLET, ITEMTYPE_ITEM, GI_WALLET_GIANT, true, LOGIC_PROGRESSIVE_WALLET, RHT_GIANT_WALLET, ITEM_WALLET_GIANT, OBJECT_GI_PURSE, GID_WALLET_GIANT, 0x5F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_TYCOON_WALLET] = Item(RG_TYCOON_WALLET, ITEMTYPE_ITEM, RG_TYCOON_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_TYCOON_WALLET, RG_TYCOON_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DEKU_NUT_BAG] = Item(RG_DEKU_NUT_BAG, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_BAG, RG_DEKU_NUT_BAG, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DEKU_NUT_CAPACITY_30] = Item(RG_DEKU_NUT_CAPACITY_30, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_30, ITEM_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_DEKU_NUT_CAPACITY_40] = Item(RG_DEKU_NUT_CAPACITY_40, ITEMTYPE_ITEM, GI_NUT_UPGRADE_40, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_40, ITEM_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_DEKU_STICK_BAG] = Item(RG_DEKU_STICK_BAG, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_BAG, RG_DEKU_STICK_BAG, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DEKU_STICK_CAPACITY_20] = Item(RG_DEKU_STICK_CAPACITY_20, ITEMTYPE_ITEM, GI_STICK_UPGRADE_20, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_20, ITEM_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_STICK, 0x90, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_DEKU_STICK_CAPACITY_30] = Item(RG_DEKU_STICK_CAPACITY_30, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_30, ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_MAGIC_SINGLE] = Item(RG_MAGIC_SINGLE, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_SINGLE, RG_MAGIC_SINGLE, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0xE4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MAGIC_DOUBLE] = Item(RG_MAGIC_DOUBLE, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, RG_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, ITEMTYPE_ITEM, 0xDF, true, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, RG_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); // Init itemNameToEnum for (auto& item : itemTable) { - // Easiest way to filter out all the empty values from the array, since we still technically want the 0/RG_NONE - // entry - if (item.GetName().english.empty()) { - continue; + std::vector strings = item.GetName().GetAllMessages(); + for (std::string string: strings){ + if (itemNameToEnum.contains(string) && string != ""){ + if (itemNameToEnum[string] != item.GetRandomizerGet()){ + SPDLOG_DEBUG("\tREPEATED STRING WITH " + string + "\n\n"); + } else { + itemNameToEnum[string] = item.GetRandomizerGet(); + } + } } - itemNameToEnum[item.GetName().english] = item.GetRandomizerGet(); - itemNameToEnum[item.GetName().french] = item.GetRandomizerGet(); } } diff --git a/soh/soh/Enhancements/randomizer/item_location.cpp b/soh/soh/Enhancements/randomizer/item_location.cpp index 00e0366ab..9ee4f06a5 100644 --- a/soh/soh/Enhancements/randomizer/item_location.cpp +++ b/soh/soh/Enhancements/randomizer/item_location.cpp @@ -30,7 +30,7 @@ RandomizerGet& ItemLocation::RefPlacedItem() { return placedItem; } -const Text& ItemLocation::GetPlacedItemName() const { +const CustomMessage& ItemLocation::GetPlacedItemName() const { return StaticData::RetrieveItem(placedItem).GetName(); } diff --git a/soh/soh/Enhancements/randomizer/item_location.h b/soh/soh/Enhancements/randomizer/item_location.h index 142ac1c0b..998ced40b 100644 --- a/soh/soh/Enhancements/randomizer/item_location.h +++ b/soh/soh/Enhancements/randomizer/item_location.h @@ -15,7 +15,7 @@ class ItemLocation { void AddToPool(); void RemoveFromPool(); const Item& GetPlacedItem() const; - const Text& GetPlacedItemName() const; + const CustomMessage& GetPlacedItemName() const; RandomizerGet GetPlacedRandomizerGet() const; void SetPlacedItem(RandomizerGet item); RandomizerGet& RefPlacedItem(); diff --git a/soh/soh/Enhancements/randomizer/location_access/overworld/kakariko.cpp b/soh/soh/Enhancements/randomizer/location_access/overworld/kakariko.cpp index aff90914e..139d867de 100644 --- a/soh/soh/Enhancements/randomizer/location_access/overworld/kakariko.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/overworld/kakariko.cpp @@ -38,7 +38,7 @@ void RegionTable_Init_Kakariko() { Entrance(RR_KAK_IMPAS_HOUSE, []{return logic->CanOpenOverworldDoor(RG_IMPAS_HOUSE_KEY);}), Entrance(RR_KAK_WINDMILL, []{return logic->CanOpenOverworldDoor(RG_WINDMILL_KEY);}), Entrance(RR_KAK_BAZAAR, []{return logic->IsAdult && logic->AtDay && logic->CanOpenOverworldDoor(RG_KAK_BAZAAR_KEY);}), - Entrance(RR_KAK_SHOOTING_GALLERY, []{return logic->IsAdult && logic->AtDay && logic->CanOpenOverworldDoor(RG_KAK_SHOOTING_GALLERY_KEY);}), + Entrance(RR_KAK_SHOOTING_GALLERY, []{return logic->IsAdult && logic->AtDay && logic->CanOpenOverworldDoor(RG_KAK_SHOOTING_KEY);}), Entrance(RR_KAK_WELL, []{return logic->IsAdult || logic->DrainWell || logic->CanUse(RG_IRON_BOOTS);}), Entrance(RR_KAK_POTION_SHOP_FRONT, []{return (logic->AtDay || logic->IsChild) && logic->CanOpenOverworldDoor(RG_KAK_POTION_SHOP_KEY);}), Entrance(RR_KAK_REDEAD_GROTTO, []{return logic->CanOpenBombGrotto();}), diff --git a/soh/soh/Enhancements/randomizer/location_access/overworld/market.cpp b/soh/soh/Enhancements/randomizer/location_access/overworld/market.cpp index af406f8bf..fd066b760 100644 --- a/soh/soh/Enhancements/randomizer/location_access/overworld/market.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/overworld/market.cpp @@ -18,9 +18,9 @@ void RegionTable_Init_Market() { Entrance(RR_CASTLE_GROUNDS, []{return true;}), Entrance(RR_MARKET_BAZAAR, []{return logic->IsChild && logic->AtDay && logic->CanOpenOverworldDoor(RG_MARKET_BAZAAR_KEY);}), Entrance(RR_MARKET_MASK_SHOP, []{return logic->IsChild && logic->AtDay && logic->CanOpenOverworldDoor(RG_MASK_SHOP_KEY);}), - Entrance(RR_MARKET_SHOOTING_GALLERY, []{return logic->IsChild && logic->AtDay && logic->CanOpenOverworldDoor(RG_MARKET_SHOOTING_GALLERY_KEY);}), + Entrance(RR_MARKET_SHOOTING_GALLERY, []{return logic->IsChild && logic->AtDay && logic->CanOpenOverworldDoor(RG_MARKET_SHOOTING_KEY);}), Entrance(RR_MARKET_BOMBCHU_BOWLING, []{return logic->IsChild && logic->CanOpenOverworldDoor(RG_BOMBCHU_BOWLING_KEY);}), - Entrance(RR_MARKET_TREASURE_CHEST_GAME, []{return logic->IsChild && logic->AtNight && logic->CanOpenOverworldDoor(RG_TREASURE_CHEST_GAME_BUILDING_KEY);}), + Entrance(RR_MARKET_TREASURE_CHEST_GAME, []{return logic->IsChild && logic->AtNight && logic->CanOpenOverworldDoor(RG_TCG_BUILDING_KEY);}), Entrance(RR_MARKET_POTION_SHOP, []{return logic->IsChild && logic->AtDay && logic->CanOpenOverworldDoor(RG_MARKET_POTION_SHOP_KEY);}), Entrance(RR_MARKET_BACK_ALLEY, []{return logic->IsChild;}), }); diff --git a/soh/soh/Enhancements/randomizer/location_list.cpp b/soh/soh/Enhancements/randomizer/location_list.cpp index 116b7d709..b06c61871 100644 --- a/soh/soh/Enhancements/randomizer/location_list.cpp +++ b/soh/soh/Enhancements/randomizer/location_list.cpp @@ -132,11 +132,11 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_LW_TARGET_IN_WOODS] = Location::Base(RC_LW_TARGET_IN_WOODS, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_LOST_WOODS, 0x00, "Target in Woods", RHT_LW_TARGET_IN_WOODS, RG_PROGRESSIVE_SLINGSHOT, SpoilerCollectionCheck::ItemGetInf(29), true); locationTable[RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT] = Location::Base(RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT, RCQUEST_BOTH, RCTYPE_SCRUB, ACTOR_EN_DNS, SCENE_LOST_WOODS, 0x00, "Deku Scrub Near Deku Theater Right", RHT_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT, RG_BUY_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT), false, 20); locationTable[RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT] = Location::Base(RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT, RCQUEST_BOTH, RCTYPE_SCRUB, ACTOR_EN_DNS, SCENE_LOST_WOODS, 0x01, "Deku Scrub Near Deku Theater Left", RHT_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT, RG_BUY_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT), false, 15); - locationTable[RC_LW_DEKU_SCRUB_NEAR_BRIDGE] = Location::Base(RC_LW_DEKU_SCRUB_NEAR_BRIDGE, RCQUEST_BOTH, RCTYPE_SCRUB, ACTOR_EN_DNS, SCENE_LOST_WOODS, 0x09, "Deku Scrub Near Bridge", RHT_LW_DEKU_SCRUB_NEAR_BRIDGE, RG_PROGRESSIVE_STICK_UPGRADE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_LW_DEKU_SCRUB_NEAR_BRIDGE), true, 40); + locationTable[RC_LW_DEKU_SCRUB_NEAR_BRIDGE] = Location::Base(RC_LW_DEKU_SCRUB_NEAR_BRIDGE, RCQUEST_BOTH, RCTYPE_SCRUB, ACTOR_EN_DNS, SCENE_LOST_WOODS, 0x09, "Deku Scrub Near Bridge", RHT_LW_DEKU_SCRUB_NEAR_BRIDGE, RG_PROGRESSIVE_STICK_BAG, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_LW_DEKU_SCRUB_NEAR_BRIDGE), true, 40); locationTable[RC_LW_DEKU_SCRUB_GROTTO_REAR] = Location::Base(RC_LW_DEKU_SCRUB_GROTTO_REAR, RCQUEST_BOTH, RCTYPE_SCRUB, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_GROTTOS, TWO_ACTOR_PARAMS(0x03, 0xF5), "Deku Scrub Grotto Rear", RHT_LW_DEKU_SCRUB_GROTTO_REAR, RG_BUY_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_LW_DEKU_SCRUB_GROTTO_REAR), false, 40); - locationTable[RC_LW_DEKU_SCRUB_GROTTO_FRONT] = Location::Base(RC_LW_DEKU_SCRUB_GROTTO_FRONT, RCQUEST_BOTH, RCTYPE_SCRUB, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_GROTTOS, TWO_ACTOR_PARAMS(0x0A, 0xF5), "Deku Scrub Grotto Front", RHT_LW_DEKU_SCRUB_GROTTO_FRONT, RG_PROGRESSIVE_NUT_UPGRADE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_LW_DEKU_SCRUB_GROTTO_FRONT), false, 40); - locationTable[RC_DEKU_THEATER_SKULL_MASK] = Location::Base(RC_DEKU_THEATER_SKULL_MASK, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_GROTTOS, 0x00, "Deku Theater Skull Mask", RHT_DEKU_THEATER_SKULL_MASK, RG_PROGRESSIVE_STICK_UPGRADE, SpoilerCollectionCheck::ItemGetInf(ITEMGETINF_OBTAINED_STICK_UPGRADE_FROM_STAGE), true); - locationTable[RC_DEKU_THEATER_MASK_OF_TRUTH] = Location::Base(RC_DEKU_THEATER_MASK_OF_TRUTH, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_GROTTOS, 0x00, "Deku Theater Mask of Truth", RHT_DEKU_THEATER_MASK_OF_TRUTH, RG_PROGRESSIVE_NUT_UPGRADE, SpoilerCollectionCheck::ItemGetInf(ITEMGETINF_OBTAINED_NUT_UPGRADE_FROM_STAGE), true); + locationTable[RC_LW_DEKU_SCRUB_GROTTO_FRONT] = Location::Base(RC_LW_DEKU_SCRUB_GROTTO_FRONT, RCQUEST_BOTH, RCTYPE_SCRUB, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_GROTTOS, TWO_ACTOR_PARAMS(0x0A, 0xF5), "Deku Scrub Grotto Front", RHT_LW_DEKU_SCRUB_GROTTO_FRONT, RG_PROGRESSIVE_NUT_BAG, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_LW_DEKU_SCRUB_GROTTO_FRONT), false, 40); + locationTable[RC_DEKU_THEATER_SKULL_MASK] = Location::Base(RC_DEKU_THEATER_SKULL_MASK, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_GROTTOS, 0x00, "Deku Theater Skull Mask", RHT_DEKU_THEATER_SKULL_MASK, RG_PROGRESSIVE_STICK_BAG, SpoilerCollectionCheck::ItemGetInf(ITEMGETINF_OBTAINED_STICK_UPGRADE_FROM_STAGE), true); + locationTable[RC_DEKU_THEATER_MASK_OF_TRUTH] = Location::Base(RC_DEKU_THEATER_MASK_OF_TRUTH, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_GROTTOS, 0x00, "Deku Theater Mask of Truth", RHT_DEKU_THEATER_MASK_OF_TRUTH, RG_PROGRESSIVE_NUT_BAG, SpoilerCollectionCheck::ItemGetInf(ITEMGETINF_OBTAINED_NUT_UPGRADE_FROM_STAGE), true); // Sacred Forest Meadow locationTable[RC_SFM_WOLFOS_GROTTO_CHEST] = Location::Chest(RC_SFM_WOLFOS_GROTTO_CHEST, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_SACRED_FOREST_MEADOW, ACTOR_EN_BOX, SCENE_GROTTOS, 31409, 0x11, "Wolfos Grotto Chest", RHT_SFM_WOLFOS_GROTTO_CHEST, RG_PURPLE_RUPEE); locationTable[RC_SFM_DEKU_SCRUB_GROTTO_REAR] = Location::Base(RC_SFM_DEKU_SCRUB_GROTTO_REAR, RCQUEST_BOTH, RCTYPE_SCRUB, RCAREA_SACRED_FOREST_MEADOW, ACTOR_EN_DNS, SCENE_GROTTOS, TWO_ACTOR_PARAMS(0x07, 0xEE), "Deku Scrub Grotto Rear", RHT_SFM_DEKU_SCRUB_GROTTO_REAR, RG_BUY_RED_POTION_40, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_SFM_DEKU_SCRUB_GROTTO_REAR), false, 40); @@ -173,10 +173,10 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_GF_HBA_1500_POINTS] = Location::Base(RC_GF_HBA_1500_POINTS, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_GERUDOS_FORTRESS, 0x00, "HBA 1500 Points", RHT_GF_HBA_1500_POINTS, RG_PROGRESSIVE_BOW, SpoilerCollectionCheck::ItemGetInf(15), true); // RandoTodo: Do we replace these with the RC_HIDEOUT keys or keep these? locationTable[RC_GF_GERUDO_MEMBERSHIP_CARD] = Location::Base(RC_GF_GERUDO_MEMBERSHIP_CARD, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_THIEVES_HIDEOUT, 0x00, "Gerudo Membership Card", RHT_GF_GERUDO_MEMBERSHIP_CARD, RG_GERUDO_MEMBERSHIP_CARD, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ITEM_FROM_LEADER_OF_FORTRESS), true); - locationTable[RC_GF_NORTH_F1_CARPENTER] = Location::Collectable(RC_GF_NORTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3089, 0x0C, "North F1 Carpenter", RHT_GF_NORTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true); - locationTable[RC_GF_NORTH_F2_CARPENTER] = Location::Collectable(RC_GF_NORTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 2577, 0x0A, "North F2 Carpenter", RHT_GF_NORTH_F2_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true); - locationTable[RC_GF_SOUTH_F1_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3601, 0x0E, "South F1 Carpenter", RHT_GF_SOUTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true); - locationTable[RC_GF_SOUTH_F2_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3857, 0x0F, "South F2 Carpenter", RHT_GF_SOUTH_F2_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true); + locationTable[RC_GF_NORTH_F1_CARPENTER] = Location::Collectable(RC_GF_NORTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3089, 0x0C, "North F1 Carpenter", RHT_GF_NORTH_F1_CARPENTER, RG_TH_SMALL_KEY, true); + locationTable[RC_GF_NORTH_F2_CARPENTER] = Location::Collectable(RC_GF_NORTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 2577, 0x0A, "North F2 Carpenter", RHT_GF_NORTH_F2_CARPENTER, RG_TH_SMALL_KEY, true); + locationTable[RC_GF_SOUTH_F1_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3601, 0x0E, "South F1 Carpenter", RHT_GF_SOUTH_F1_CARPENTER, RG_TH_SMALL_KEY, true); + locationTable[RC_GF_SOUTH_F2_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3857, 0x0F, "South F2 Carpenter", RHT_GF_SOUTH_F2_CARPENTER, RG_TH_SMALL_KEY, true); // Haunted Wasteland locationTable[RC_WASTELAND_CHEST] = Location::Chest(RC_WASTELAND_CHEST, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_WASTELAND, ACTOR_EN_BOX, SCENE_HAUNTED_WASTELAND, -30048, 0x00, "Chest", RHT_WASTELAND_CHEST, RG_PURPLE_RUPEE); locationTable[RC_WASTELAND_BOMBCHU_SALESMAN] = Location::Base(RC_WASTELAND_BOMBCHU_SALESMAN, RCQUEST_BOTH, RCTYPE_MERCHANT, RCAREA_WASTELAND, ACTOR_ID_MAX, SCENE_HAUNTED_WASTELAND, 0x00, "Carpet Salesman", RHT_WASTELAND_BOMBCHU_SALESMAN, RG_BUY_BOMBCHUS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN), false, 200); @@ -185,7 +185,7 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR] = Location::Base(RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, RCQUEST_BOTH, RCTYPE_SCRUB, RCAREA_DESERT_COLOSSUS, ACTOR_EN_DNS, SCENE_GROTTOS, TWO_ACTOR_PARAMS(0x07, 0xFD), "Deku Scrub Grotto Rear", RHT_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, RG_BUY_RED_POTION_40, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_COLOSSUS_DEKU_SCRUB_GROTTO_REAR), false, 40); locationTable[RC_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT] = Location::Base(RC_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, RCQUEST_BOTH, RCTYPE_SCRUB, RCAREA_DESERT_COLOSSUS, ACTOR_EN_DNS, SCENE_GROTTOS, TWO_ACTOR_PARAMS(0x08, 0xFD), "Deku Scrub Grotto Front", RHT_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, RG_BUY_GREEN_POTION, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT), false, 40); // Market - locationTable[RC_MARKET_TREASURE_CHEST_GAME_REWARD] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Treasure Chest Game Reward", RHT_MARKET_TREASURE_CHEST_GAME_REWARD, RG_TREASURE_GAME_HEART, SpoilerCollectionCheck::ItemGetInf(27), true); + locationTable[RC_MARKET_TREASURE_CHEST_GAME_REWARD] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Treasure Chest Game Reward", RHT_MARKET_TREASURE_CHEST_GAME_REWARD, RG_TCG_PIECE_OF_HEART, SpoilerCollectionCheck::ItemGetInf(27), true); locationTable[RC_MARKET_BOMBCHU_BOWLING_FIRST_PRIZE] = Location::Base(RC_MARKET_BOMBCHU_BOWLING_FIRST_PRIZE, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_BOMBCHU_BOWLING_ALLEY, 0x00, "Bombchu Bowling First Prize", RHT_MARKET_BOMBCHU_BOWLING_FIRST_PRIZE, RG_PROGRESSIVE_BOMB_BAG, SpoilerCollectionCheck::ItemGetInf(17), true); locationTable[RC_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE] = Location::Base(RC_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_BOMBCHU_BOWLING_ALLEY, 0x00, "Bombchu Bowling Second Prize", RHT_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE, RG_PIECE_OF_HEART, SpoilerCollectionCheck::ItemGetInf(18), true); locationTable[RC_MARKET_LOST_DOG] = Location::Base(RC_MARKET_LOST_DOG, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_DOG_LADY_HOUSE, 0x00, "Lost Dog", RHT_MARKET_LOST_DOG, RG_PIECE_OF_HEART, SpoilerCollectionCheck::InfTable(INFTABLE_191), true); @@ -506,26 +506,26 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY] = Location::Collectable(RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_SHADOW_TEMPLE, 1553, 0x06, "MQ Freestanding Key", RHT_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, RG_SHADOW_TEMPLE_SMALL_KEY, true); // Bottom of the Well Vanilla - locationTable[RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22600, 0x08, "Front Left Fake Wall Chest", RHT_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); + locationTable[RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22600, 0x08, "Front Left Fake Wall Chest", RHT_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, RG_BOTW_SMALL_KEY, true); locationTable[RC_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 20578, 0x02, "Front Center Bombable Chest", RHT_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST, RG_BOMBCHU_10); - locationTable[RC_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22597, 0x05, "Right Bottom Fake Wall Chest", RHT_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); - locationTable[RC_BOTTOM_OF_THE_WELL_COMPASS_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_COMPASS_CHEST, RCQUEST_VANILLA, RCTYPE_COMPASS, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2049, 0x01, "Compass Chest", RHT_BOTTOM_OF_THE_WELL_COMPASS_CHEST, RG_BOTTOM_OF_THE_WELL_COMPASS, true); + locationTable[RC_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22597, 0x05, "Right Bottom Fake Wall Chest", RHT_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTTOM_OF_THE_WELL_COMPASS_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_COMPASS_CHEST, RCQUEST_VANILLA, RCTYPE_COMPASS, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2049, 0x01, "Compass Chest", RHT_BOTTOM_OF_THE_WELL_COMPASS_CHEST, RG_BOTW_COMPASS, true); locationTable[RC_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 20558, 0x0E, "Center Skulltula Chest", RHT_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST, RG_DEKU_NUTS_5); locationTable[RC_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 23684, 0x04, "Back Left Bombable Chest", RHT_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST, RG_DEKU_NUTS_10); locationTable[RC_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, RCQUEST_VANILLA, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 4419, 0x03, "Lens of Truth Chest", RHT_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, RG_LENS_OF_TRUTH, true); locationTable[RC_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 27348, 0x14, "Invisible Chest", RHT_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, RG_HUGE_RUPEE); locationTable[RC_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 23760, 0x10, "Underwater Front Chest", RHT_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, RG_BOMBS_10); locationTable[RC_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22793, 0x09, "Underwater Left Chest", RHT_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, RG_RECOVERY_HEART); - locationTable[RC_BOTTOM_OF_THE_WELL_MAP_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MAP_CHEST, RCQUEST_VANILLA, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2087, 0x07, "Map Chest", RHT_BOTTOM_OF_THE_WELL_MAP_CHEST, RG_BOTTOM_OF_THE_WELL_MAP, true); + locationTable[RC_BOTTOM_OF_THE_WELL_MAP_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MAP_CHEST, RCQUEST_VANILLA, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2087, 0x07, "Map Chest", RHT_BOTTOM_OF_THE_WELL_MAP_CHEST, RG_BOTW_MAP, true); locationTable[RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 21802, 0x0A, "Fire Keese Chest", RHT_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, RG_DEKU_SHIELD); locationTable[RC_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 21836, 0x0C, "Like Like Chest", RHT_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, RG_HYLIAN_SHIELD); - locationTable[RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273, 0x01, "Freestanding Key", RHT_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); + locationTable[RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273, 0x01, "Freestanding Key", RHT_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, RG_BOTW_SMALL_KEY, true); // Bottom of the Well Master Quest - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, RCQUEST_MQ, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2083, 0x03, "MQ Map Chest", RHT_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, RG_BOTTOM_OF_THE_WELL_MAP, true); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, RCQUEST_MQ, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2083, 0x03, "MQ Map Chest", RHT_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, RG_BOTW_MAP, true); locationTable[RC_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, RCQUEST_MQ, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, -20159, 0x01, "MQ Lens of Truth Chest", RHT_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, RG_LENS_OF_TRUTH, true); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, RCQUEST_MQ, RCTYPE_COMPASS, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 6146, 0x02, "MQ Compass Chest", RHT_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, RG_BOTTOM_OF_THE_WELL_COMPASS, true); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 529, 0x02, "MQ Dead Hand Freestanding Key", RHT_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273, 0x01, "MQ East Inner Room Freestanding Key", RHT_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, RCQUEST_MQ, RCTYPE_COMPASS, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 6146, 0x02, "MQ Compass Chest", RHT_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, RG_BOTW_COMPASS, true); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 529, 0x02, "MQ Dead Hand Freestanding Key", RHT_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273, 0x01, "MQ East Inner Room Freestanding Key", RHT_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, RG_BOTW_SMALL_KEY, true); // Ice Cavern Vanilla locationTable[RC_ICE_CAVERN_MAP_CHEST] = Location::Chest(RC_ICE_CAVERN_MAP_CHEST, RCQUEST_VANILLA, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_ICE_CAVERN, 2080, 0x00, "Map Chest", RHT_ICE_CAVERN_MAP_CHEST, RG_ICE_CAVERN_MAP, true); @@ -541,43 +541,43 @@ void Rando::StaticData::InitLocationTable() { // // Gerudo Training Ground Vanilla locationTable[RC_GERUDO_TRAINING_GROUND_LOBBY_LEFT_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_LOBBY_LEFT_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30573, 0x13, "Lobby Left Chest", RHT_GERUDO_TRAINING_GROUND_LOBBY_LEFT_CHEST, RG_BLUE_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_LOBBY_RIGHT_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_LOBBY_RIGHT_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30393, 0x07, "Lobby Right Chest", RHT_GERUDO_TRAINING_GROUND_LOBBY_RIGHT_CHEST, RG_ARROWS_10); - locationTable[RC_GERUDO_TRAINING_GROUND_STALFOS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_STALFOS_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30656, 0x00, "Stalfos Chest", RHT_GERUDO_TRAINING_GROUND_STALFOS_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); - locationTable[RC_GERUDO_TRAINING_GROUND_BEAMOS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_BEAMOS_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30655, 0x01, "Beamos Chest", RHT_GERUDO_TRAINING_GROUND_BEAMOS_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); - locationTable[RC_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22603, 0x0B, "Hidden Ceiling Chest", RHT_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_STALFOS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_STALFOS_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30656, 0x00, "Stalfos Chest", RHT_GERUDO_TRAINING_GROUND_STALFOS_CHEST, RG_GTG_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_BEAMOS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_BEAMOS_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30655, 0x01, "Beamos Chest", RHT_GERUDO_TRAINING_GROUND_BEAMOS_CHEST, RG_GTG_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22603, 0x0B, "Hidden Ceiling Chest", RHT_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST, RG_GTG_SMALL_KEY, true); locationTable[RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FIRST_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FIRST_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 23206, 0x06, "Maze Path First Chest", RHT_GERUDO_TRAINING_GROUND_MAZE_PATH_FIRST_CHEST, RG_PURPLE_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_MAZE_PATH_SECOND_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MAZE_PATH_SECOND_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22986, 0x0A, "Maze Path Second Chest", RHT_GERUDO_TRAINING_GROUND_MAZE_PATH_SECOND_CHEST, RG_RED_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_MAZE_PATH_THIRD_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MAZE_PATH_THIRD_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22889, 0x09, "Maze Path Third Chest", RHT_GERUDO_TRAINING_GROUND_MAZE_PATH_THIRD_CHEST, RG_ARROWS_30); locationTable[RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FINAL_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FINAL_CHEST, RCQUEST_VANILLA, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 2860, 0x0C, "Maze Path Final Chest", RHT_GERUDO_TRAINING_GROUND_MAZE_PATH_FINAL_CHEST, RG_ICE_ARROWS, true); locationTable[RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_CENTRAL_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_CENTRAL_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 23877, 0x05, "Maze Right Central Chest", RHT_GERUDO_TRAINING_GROUND_MAZE_RIGHT_CENTRAL_CHEST, RG_BOMBCHU_5); locationTable[RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_SIDE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_SIDE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22888, 0x08, "Maze Right Side Chest", RHT_GERUDO_TRAINING_GROUND_MAZE_RIGHT_SIDE_CHEST, RG_ARROWS_30); - locationTable[RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30643, 0x0D, "Underwater Silver Rupee Chest", RHT_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30643, 0x0D, "Underwater Silver Rupee Chest", RHT_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, RG_GTG_SMALL_KEY, true); locationTable[RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_CLEAR_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_CLEAR_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 31058, 0x12, "Hammer Room Clear Chest", RHT_GERUDO_TRAINING_GROUND_HAMMER_ROOM_CLEAR_CHEST, RG_ARROWS_10); - locationTable[RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22608, 0x10, "Hammer Room Switch Chest", RHT_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); - locationTable[RC_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30653, 0x03, "Eye Statue Chest", RHT_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); - locationTable[RC_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22596, 0x04, "Near Scarecrow Chest", RHT_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22608, 0x10, "Hammer Room Switch Chest", RHT_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST, RG_GTG_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30653, 0x03, "Eye Statue Chest", RHT_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST, RG_GTG_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22596, 0x04, "Near Scarecrow Chest", RHT_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST, RG_GTG_SMALL_KEY, true); locationTable[RC_GERUDO_TRAINING_GROUND_BEFORE_HEAVY_BLOCK_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_BEFORE_HEAVY_BLOCK_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 31089, 0x11, "Before Heavy Block Chest", RHT_GERUDO_TRAINING_GROUND_BEFORE_HEAVY_BLOCK_CHEST, RG_ARROWS_30); locationTable[RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FIRST_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FIRST_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 31439, 0x0F, "Heavy Block First Chest", RHT_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FIRST_CHEST, RG_HUGE_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_SECOND_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_SECOND_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 30862, 0x0E, "Heavy Block Second Chest", RHT_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_SECOND_CHEST, RG_BLUE_RUPEE); - locationTable[RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 26708, 0x14, "Heavy Block Third Chest", RHT_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 26708, 0x14, "Heavy Block Third Chest", RHT_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST, RG_GTG_SMALL_KEY, true); locationTable[RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FOURTH_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FOURTH_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 24450, 0x02, "Heavy Block Fourth Chest", RHT_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FOURTH_CHEST, RG_ICE_TRAP); - locationTable[RC_GERUDO_TRAINING_GROUND_FREESTANDING_KEY] = Location::Collectable(RC_GERUDO_TRAINING_GROUND_FREESTANDING_KEY, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_GERUDO_TRAINING_GROUND, 273, 0x01, "Freestanding Key", RHT_GERUDO_TRAINING_GROUND_FREESTANDING_KEY, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_FREESTANDING_KEY] = Location::Collectable(RC_GERUDO_TRAINING_GROUND_FREESTANDING_KEY, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_GERUDO_TRAINING_GROUND, 273, 0x01, "Freestanding Key", RHT_GERUDO_TRAINING_GROUND_FREESTANDING_KEY, RG_GTG_SMALL_KEY, true); // Gerudo Training Ground Master Quest locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 23879, 0x07, "MQ Lobby Right Chest", RHT_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_CHEST, RG_BOMBCHU_5); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22867, 0x13, "MQ Lobby Left Chest", RHT_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_CHEST, RG_ARROWS_10); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_FIRST_IRON_KNUCKLE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_FIRST_IRON_KNUCKLE_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30304, 0x00, "MQ First Iron Knuckle Chest", RHT_GERUDO_TRAINING_GROUND_MQ_FIRST_IRON_KNUCKLE_CHEST, RG_BLUE_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BEFORE_HEAVY_BLOCK_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_BEFORE_HEAVY_BLOCK_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 31057, 0x11, "MQ Before Heavy Block Chest", RHT_GERUDO_TRAINING_GROUND_MQ_BEFORE_HEAVY_BLOCK_CHEST, RG_ARROWS_10); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_EYE_STATUE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_EYE_STATUE_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -32669, 0x03, "MQ Eye Statue Chest", RHT_GERUDO_TRAINING_GROUND_MQ_EYE_STATUE_CHEST, RG_BOMBCHU_10); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30642, 0x0E, "MQ Flame Circle Chest", RHT_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30642, 0x0E, "MQ Flame Circle Chest", RHT_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST, RG_GTG_SMALL_KEY, true); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_SECOND_IRON_KNUCKLE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_SECOND_IRON_KNUCKLE_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 31058, 0x12, "MQ Second Iron Knuckle Chest", RHT_GERUDO_TRAINING_GROUND_MQ_SECOND_IRON_KNUCKLE_CHEST, RG_ARROWS_10); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30655, 0x01, "MQ Dinolfos Chest", RHT_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30655, 0x01, "MQ Dinolfos Chest", RHT_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST, RG_GTG_SMALL_KEY, true); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_ICE_ARROWS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_ICE_ARROWS_CHEST, RCQUEST_MQ, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -17628, 0x04, "MQ Ice Arrows Chest", RHT_GERUDO_TRAINING_GROUND_MQ_ICE_ARROWS_CHEST, RG_ICE_ARROWS, true); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_CENTRAL_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_CENTRAL_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22661, 0x05, "MQ Maze Right Central Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_CENTRAL_CHEST, RG_BLUE_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_FIRST_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_FIRST_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22918, 0x06, "MQ Maze Path First Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_FIRST_CHEST, RG_GREEN_RUPEE); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 24136, 0x08, "MQ Maze Right Side Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST, RG_TREASURE_GAME_GREEN_RUPEE); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 24137, 0x09, "MQ Maze Path Third Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST, RG_TREASURE_GAME_GREEN_RUPEE); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 24136, 0x08, "MQ Maze Right Side Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST, RG_LOSER_GREEN_RUPEE); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 24137, 0x09, "MQ Maze Path Third Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST, RG_LOSER_GREEN_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_SECOND_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_SECOND_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22986, 0x0A, "MQ Maze Path Second Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_SECOND_CHEST, RG_RED_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_HIDDEN_CEILING_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_HIDDEN_CEILING_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 23211, 0x0B, "MQ Hidden Ceiling Chest", RHT_GERUDO_TRAINING_GROUND_MQ_HIDDEN_CEILING_CHEST, RG_PURPLE_RUPEE); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30643, 0x0D, "MQ Underwater Silver Rupee Chest", RHT_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, RG_TREASURE_GAME_GREEN_RUPEE, true); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30643, 0x0D, "MQ Underwater Silver Rupee Chest", RHT_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, RG_LOSER_GREEN_RUPEE, true); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 31394, 0x02, "MQ Heavy Block Chest", RHT_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST, RG_PURPLE_RUPEE); // Ganon's Castle Shared @@ -822,8 +822,8 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_ZF_GREAT_FAIRY_REWARD] = Location::Base(RC_ZF_GREAT_FAIRY_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_FOUNTAIN, ACTOR_BG_DY_YOSEIZO, SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS, 1, "Great Fairy Reward", RHT_ZF_GREAT_FAIRY_REWARD, RG_FARORES_WIND, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_GREAT_FAIRY_REWARD), true); locationTable[RC_HC_GREAT_FAIRY_REWARD] = Location::Base(RC_HC_GREAT_FAIRY_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_HYRULE_CASTLE, ACTOR_BG_DY_YOSEIZO, SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS, 2, "Great Fairy Reward", RHT_HC_GREAT_FAIRY_REWARD, RG_DINS_FIRE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_GREAT_FAIRY_REWARD), true); locationTable[RC_COLOSSUS_GREAT_FAIRY_REWARD] = Location::Base(RC_COLOSSUS_GREAT_FAIRY_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_DESERT_COLOSSUS, ACTOR_BG_DY_YOSEIZO, SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS, 3, "Great Fairy Reward", RHT_COLOSSUS_GREAT_FAIRY_REWARD, RG_NAYRUS_LOVE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_GREAT_FAIRY_REWARD), true); - locationTable[RC_DMT_GREAT_FAIRY_REWARD] = Location::Base(RC_DMT_GREAT_FAIRY_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_BG_DY_YOSEIZO, SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC, 1, "Great Fairy Reward", RHT_DMT_GREAT_FAIRY_REWARD, RG_PROGRESSIVE_MAGIC_METER, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_GREAT_FAIRY_REWARD), true); - locationTable[RC_DMC_GREAT_FAIRY_REWARD] = Location::Base(RC_DMC_GREAT_FAIRY_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_BG_DY_YOSEIZO, SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC, 2, "Great Fairy Reward", RHT_DMC_GREAT_FAIRY_REWARD, RG_PROGRESSIVE_MAGIC_METER, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_GREAT_FAIRY_REWARD), true); + locationTable[RC_DMT_GREAT_FAIRY_REWARD] = Location::Base(RC_DMT_GREAT_FAIRY_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_BG_DY_YOSEIZO, SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC, 1, "Great Fairy Reward", RHT_DMT_GREAT_FAIRY_REWARD, RG_PROGRESSIVE_MAGIC, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_GREAT_FAIRY_REWARD), true); + locationTable[RC_DMC_GREAT_FAIRY_REWARD] = Location::Base(RC_DMC_GREAT_FAIRY_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_BG_DY_YOSEIZO, SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC, 2, "Great Fairy Reward", RHT_DMC_GREAT_FAIRY_REWARD, RG_PROGRESSIVE_MAGIC, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_GREAT_FAIRY_REWARD), true); locationTable[RC_OGC_GREAT_FAIRY_REWARD] = Location::Base(RC_OGC_GREAT_FAIRY_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_HYRULE_CASTLE, ACTOR_BG_DY_YOSEIZO, SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC, 3, "OGC Great Fairy Reward", "OGC Great Fairy Reward", RHT_OGC_GREAT_FAIRY_REWARD, RG_DOUBLE_DEFENSE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_OGC_GREAT_FAIRY_REWARD), true); // Songs diff --git a/soh/soh/Enhancements/randomizer/logic.cpp b/soh/soh/Enhancements/randomizer/logic.cpp index 62c14e6ff..6ad6d6c1a 100644 --- a/soh/soh/Enhancements/randomizer/logic.cpp +++ b/soh/soh/Enhancements/randomizer/logic.cpp @@ -38,7 +38,7 @@ namespace Rando { return CheckInventory(ITEM_HOOKSHOT, false); case RG_LONGSHOT: return CheckInventory(ITEM_LONGSHOT, true); - case RG_PROGRESSIVE_STICK_UPGRADE: + case RG_PROGRESSIVE_STICK_BAG: case RG_STICKS: return CurrentUpgrade(UPG_STICKS); case RG_FIRE_ARROWS: @@ -56,7 +56,7 @@ namespace Rando { return CheckInventory(ITEM_SLINGSHOT, true); case RG_BOOMERANG: return CheckInventory(ITEM_BOOMERANG, true); - case RG_PROGRESSIVE_NUT_UPGRADE: + case RG_PROGRESSIVE_NUT_BAG: case RG_NUTS: return CurrentUpgrade(UPG_NUTS); //RANDOTODO handle cases where the scarecrow is persistent between age better when OI is added @@ -145,9 +145,9 @@ namespace Rando { case RG_MARKET_BAZAAR_KEY: case RG_MARKET_POTION_SHOP_KEY: case RG_MASK_SHOP_KEY: - case RG_MARKET_SHOOTING_GALLERY_KEY: + case RG_MARKET_SHOOTING_KEY: case RG_BOMBCHU_BOWLING_KEY: - case RG_TREASURE_CHEST_GAME_BUILDING_KEY: + case RG_TCG_BUILDING_KEY: case RG_BOMBCHU_SHOP_KEY: case RG_RICHARDS_HOUSE_KEY: case RG_ALLEY_HOUSE_KEY: @@ -158,7 +158,7 @@ namespace Rando { case RG_SKULLTULA_HOUSE_KEY: case RG_IMPAS_HOUSE_KEY: case RG_WINDMILL_KEY: - case RG_KAK_SHOOTING_GALLERY_KEY: + case RG_KAK_SHOOTING_KEY: case RG_DAMPES_HUT_KEY: case RG_TALONS_HOUSE_KEY: case RG_STABLES_KEY: @@ -185,7 +185,7 @@ namespace Rando { case RG_WATER_TEMPLE_MAP: case RG_SPIRIT_TEMPLE_MAP: case RG_SHADOW_TEMPLE_MAP: - case RG_BOTTOM_OF_THE_WELL_MAP: + case RG_BOTW_MAP: case RG_ICE_CAVERN_MAP: return CheckDungeonItem(DUNGEON_MAP, RandoGetToDungeonScene.at(itemName)); // Compasses @@ -197,7 +197,7 @@ namespace Rando { case RG_WATER_TEMPLE_COMPASS: case RG_SPIRIT_TEMPLE_COMPASS: case RG_SHADOW_TEMPLE_COMPASS: - case RG_BOTTOM_OF_THE_WELL_COMPASS: + case RG_BOTW_COMPASS: case RG_ICE_CAVERN_COMPASS: return CheckDungeonItem(DUNGEON_COMPASS, RandoGetToDungeonScene.at(itemName)); // Wallets @@ -1363,9 +1363,9 @@ namespace Rando { { RG_MARKET_BAZAAR_KEY, RAND_INF_MARKET_BAZAAR_KEY_OBTAINED }, { RG_MARKET_POTION_SHOP_KEY, RAND_INF_MARKET_POTION_SHOP_KEY_OBTAINED }, { RG_MASK_SHOP_KEY, RAND_INF_MASK_SHOP_KEY_OBTAINED }, - { RG_MARKET_SHOOTING_GALLERY_KEY, RAND_INF_MARKET_SHOOTING_GALLERY_KEY_OBTAINED }, + { RG_MARKET_SHOOTING_KEY, RAND_INF_MARKET_SHOOTING_GALLERY_KEY_OBTAINED }, { RG_BOMBCHU_BOWLING_KEY, RAND_INF_BOMBCHU_BOWLING_KEY_OBTAINED }, - { RG_TREASURE_CHEST_GAME_BUILDING_KEY, RAND_INF_TREASURE_CHEST_GAME_BUILDING_KEY_OBTAINED }, + { RG_TCG_BUILDING_KEY, RAND_INF_TREASURE_CHEST_GAME_BUILDING_KEY_OBTAINED }, { RG_BOMBCHU_SHOP_KEY, RAND_INF_BOMBCHU_SHOP_KEY_OBTAINED }, { RG_RICHARDS_HOUSE_KEY, RAND_INF_RICHARDS_HOUSE_KEY_OBTAINED }, { RG_ALLEY_HOUSE_KEY, RAND_INF_ALLEY_HOUSE_KEY_OBTAINED }, @@ -1376,7 +1376,7 @@ namespace Rando { { RG_SKULLTULA_HOUSE_KEY, RAND_INF_SKULLTULA_HOUSE_KEY_OBTAINED }, { RG_IMPAS_HOUSE_KEY, RAND_INF_IMPAS_HOUSE_KEY_OBTAINED }, { RG_WINDMILL_KEY, RAND_INF_WINDMILL_KEY_OBTAINED }, - { RG_KAK_SHOOTING_GALLERY_KEY, RAND_INF_KAK_SHOOTING_GALLERY_KEY_OBTAINED }, + { RG_KAK_SHOOTING_KEY, RAND_INF_KAK_SHOOTING_GALLERY_KEY_OBTAINED }, { RG_DAMPES_HUT_KEY, RAND_INF_DAMPES_HUT_KEY_OBTAINED }, { RG_TALONS_HOUSE_KEY, RAND_INF_TALONS_HOUSE_KEY_OBTAINED }, { RG_STABLES_KEY, RAND_INF_STABLES_KEY_OBTAINED }, @@ -1391,18 +1391,18 @@ namespace Rando { { RG_WATER_TEMPLE_SMALL_KEY, SCENE_WATER_TEMPLE }, { RG_SPIRIT_TEMPLE_SMALL_KEY, SCENE_SPIRIT_TEMPLE }, { RG_SHADOW_TEMPLE_SMALL_KEY, SCENE_SHADOW_TEMPLE }, - { RG_BOTTOM_OF_THE_WELL_SMALL_KEY, SCENE_BOTTOM_OF_THE_WELL }, - { RG_GERUDO_TRAINING_GROUND_SMALL_KEY, SCENE_GERUDO_TRAINING_GROUND }, - { RG_GERUDO_FORTRESS_SMALL_KEY, SCENE_THIEVES_HIDEOUT }, + { RG_BOTW_SMALL_KEY, SCENE_BOTTOM_OF_THE_WELL }, + { RG_GTG_SMALL_KEY, SCENE_GERUDO_TRAINING_GROUND }, + { RG_TH_SMALL_KEY, SCENE_THIEVES_HIDEOUT }, { RG_GANONS_CASTLE_SMALL_KEY, SCENE_INSIDE_GANONS_CASTLE }, { RG_FOREST_TEMPLE_KEY_RING, SCENE_FOREST_TEMPLE }, { RG_FIRE_TEMPLE_KEY_RING, SCENE_FIRE_TEMPLE }, { RG_WATER_TEMPLE_KEY_RING, SCENE_WATER_TEMPLE }, { RG_SPIRIT_TEMPLE_KEY_RING, SCENE_SPIRIT_TEMPLE }, { RG_SHADOW_TEMPLE_KEY_RING, SCENE_SHADOW_TEMPLE }, - { RG_BOTTOM_OF_THE_WELL_KEY_RING, SCENE_BOTTOM_OF_THE_WELL }, - { RG_GERUDO_TRAINING_GROUND_KEY_RING, SCENE_GERUDO_TRAINING_GROUND }, - { RG_GERUDO_FORTRESS_KEY_RING, SCENE_THIEVES_HIDEOUT }, + { RG_BOTW_KEY_RING, SCENE_BOTTOM_OF_THE_WELL }, + { RG_GTG_KEY_RING, SCENE_GERUDO_TRAINING_GROUND }, + { RG_TH_KEY_RING, SCENE_THIEVES_HIDEOUT }, { RG_GANONS_CASTLE_KEY_RING, SCENE_INSIDE_GANONS_CASTLE }, { RG_FOREST_TEMPLE_BOSS_KEY, SCENE_FOREST_TEMPLE }, { RG_FIRE_TEMPLE_BOSS_KEY, SCENE_FIRE_TEMPLE }, @@ -1418,7 +1418,7 @@ namespace Rando { { RG_WATER_TEMPLE_MAP, SCENE_WATER_TEMPLE }, { RG_SPIRIT_TEMPLE_MAP, SCENE_SPIRIT_TEMPLE }, { RG_SHADOW_TEMPLE_MAP, SCENE_SHADOW_TEMPLE }, - { RG_BOTTOM_OF_THE_WELL_MAP, SCENE_BOTTOM_OF_THE_WELL }, + { RG_BOTW_MAP, SCENE_BOTTOM_OF_THE_WELL }, { RG_ICE_CAVERN_MAP, SCENE_ICE_CAVERN }, { RG_DEKU_TREE_COMPASS, SCENE_DEKU_TREE }, { RG_DODONGOS_CAVERN_COMPASS, SCENE_DODONGOS_CAVERN }, @@ -1428,7 +1428,7 @@ namespace Rando { { RG_WATER_TEMPLE_COMPASS, SCENE_WATER_TEMPLE }, { RG_SPIRIT_TEMPLE_COMPASS, SCENE_SPIRIT_TEMPLE }, { RG_SHADOW_TEMPLE_COMPASS, SCENE_SHADOW_TEMPLE }, - { RG_BOTTOM_OF_THE_WELL_COMPASS, SCENE_BOTTOM_OF_THE_WELL }, + { RG_BOTW_COMPASS, SCENE_BOTTOM_OF_THE_WELL }, { RG_ICE_CAVERN_COMPASS, SCENE_ICE_CAVERN }, { RG_TREASURE_GAME_SMALL_KEY, SCENE_TREASURE_BOX_SHOP } }; @@ -1609,7 +1609,7 @@ namespace Rando { SetUpgrade(UPG_SCALE, newLevel); } } break; - case RG_PROGRESSIVE_NUT_UPGRADE: + case RG_PROGRESSIVE_NUT_BAG: { auto realGI = item.GetGIEntry(); if (realGI->itemId == RG_NUT_UPGRADE_INF && realGI->modIndex == MOD_RANDOMIZER) { @@ -1623,7 +1623,7 @@ namespace Rando { } SetUpgrade(UPG_NUTS, newLevel); } break; - case RG_PROGRESSIVE_STICK_UPGRADE: + case RG_PROGRESSIVE_STICK_BAG: { auto realGI = item.GetGIEntry(); if (realGI->itemId == RG_STICK_UPGRADE_INF && realGI->modIndex == MOD_RANDOMIZER) { @@ -1646,7 +1646,7 @@ namespace Rando { } SetInventory(ITEM_BOMBCHU, (!state ? ITEM_NONE : ITEM_BOMBCHU)); } break; - case RG_PROGRESSIVE_MAGIC_METER: + case RG_PROGRESSIVE_MAGIC: { auto realGI = item.GetGIEntry(); if (realGI->itemId == RG_MAGIC_INF && realGI->modIndex == MOD_RANDOMIZER) { @@ -1747,9 +1747,9 @@ namespace Rando { case RG_MARKET_BAZAAR_KEY: case RG_MARKET_POTION_SHOP_KEY: case RG_MASK_SHOP_KEY: - case RG_MARKET_SHOOTING_GALLERY_KEY: + case RG_MARKET_SHOOTING_KEY: case RG_BOMBCHU_BOWLING_KEY: - case RG_TREASURE_CHEST_GAME_BUILDING_KEY: + case RG_TCG_BUILDING_KEY: case RG_BOMBCHU_SHOP_KEY: case RG_RICHARDS_HOUSE_KEY: case RG_ALLEY_HOUSE_KEY: @@ -1760,7 +1760,7 @@ namespace Rando { case RG_SKULLTULA_HOUSE_KEY: case RG_IMPAS_HOUSE_KEY: case RG_WINDMILL_KEY: - case RG_KAK_SHOOTING_GALLERY_KEY: + case RG_KAK_SHOOTING_KEY: case RG_DAMPES_HUT_KEY: case RG_TALONS_HOUSE_KEY: case RG_STABLES_KEY: @@ -1816,7 +1816,7 @@ namespace Rando { case ITEMTYPE_BOSSKEY: SetDungeonItem(DUNGEON_KEY_BOSS, RandoGetToDungeonScene.find(item.GetRandomizerGet())->second, state); break; - case ITEMTYPE_FORTRESS_SMALLKEY: + case ITEMTYPE_TH_SMALLKEY: case ITEMTYPE_SMALLKEY: { auto randoGet = item.GetRandomizerGet(); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 244afb9c4..0b6a56159 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -470,7 +470,7 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe return !CHECK_OWNED_EQUIP(EQUIP_TYPE_BOOTS, EQUIP_INV_BOOTS_HOVER) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; // Inventory Items - case RG_PROGRESSIVE_STICK_UPGRADE: + case RG_PROGRESSIVE_STICK_BAG: return infiniteUpgrades != RO_INF_UPGRADES_OFF ? (Flags_GetRandomizerInf(RAND_INF_HAS_INFINITE_STICK_UPGRADE) ? CANT_OBTAIN_ALREADY_HAVE : CAN_OBTAIN) : (CUR_UPG_VALUE(UPG_STICKS) < 3 ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE); @@ -478,7 +478,7 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe case RG_BUY_DEKU_STICK_1: return CUR_UPG_VALUE(UPG_STICKS) || !OTRGlobals::Instance->gRandoContext->GetOption(RSK_SHUFFLE_DEKU_STICK_BAG).Get() ? CAN_OBTAIN : CANT_OBTAIN_NEED_UPGRADE; - case RG_PROGRESSIVE_NUT_UPGRADE: + case RG_PROGRESSIVE_NUT_BAG: return infiniteUpgrades != RO_INF_UPGRADES_OFF ? (Flags_GetRandomizerInf(RAND_INF_HAS_INFINITE_NUT_UPGRADE) ? CANT_OBTAIN_ALREADY_HAVE : CAN_OBTAIN) : (CUR_UPG_VALUE(UPG_NUTS) < 3 ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE); @@ -631,7 +631,7 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe return CUR_UPG_VALUE(UPG_WALLET) < numWallets ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_PROGRESSIVE_SCALE: return CUR_UPG_VALUE(UPG_SCALE) < 2 ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; - case RG_PROGRESSIVE_MAGIC_METER: + case RG_PROGRESSIVE_MAGIC: case RG_MAGIC_SINGLE: case RG_MAGIC_DOUBLE: return infiniteUpgrades != RO_INF_UPGRADES_OFF ? @@ -683,7 +683,7 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_SPIRIT_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_SHADOW_TEMPLE_MAP: return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_SHADOW_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; - case RG_BOTTOM_OF_THE_WELL_MAP: + case RG_BOTW_MAP: return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_BOTTOM_OF_THE_WELL) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_ICE_CAVERN_MAP: return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_ICE_CAVERN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; @@ -703,7 +703,7 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_SPIRIT_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_SHADOW_TEMPLE_COMPASS: return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_SHADOW_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; - case RG_BOTTOM_OF_THE_WELL_COMPASS: + case RG_BOTW_COMPASS: return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_BOTTOM_OF_THE_WELL) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_ICE_CAVERN_COMPASS: return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_ICE_CAVERN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; @@ -729,11 +729,11 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe return gSaveContext.inventory.dungeonKeys[SCENE_SPIRIT_TEMPLE] < SPIRIT_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_SHADOW_TEMPLE_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_SHADOW_TEMPLE] < SHADOW_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; - case RG_BOTTOM_OF_THE_WELL_SMALL_KEY: + case RG_BOTW_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_BOTTOM_OF_THE_WELL] < BOTTOM_OF_THE_WELL_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; - case RG_GERUDO_TRAINING_GROUND_SMALL_KEY: + case RG_GTG_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_GERUDO_TRAINING_GROUND] < GERUDO_TRAINING_GROUND_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; - case RG_GERUDO_FORTRESS_SMALL_KEY: + case RG_TH_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_THIEVES_HIDEOUT] < GERUDO_FORTRESS_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_GANONS_CASTLE_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_INSIDE_GANONS_CASTLE] < GANONS_CASTLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; @@ -782,8 +782,8 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe case RG_PIECE_OF_HEART: case RG_HEART_CONTAINER: case RG_ICE_TRAP: - case RG_TREASURE_GAME_HEART: - case RG_TREASURE_GAME_GREEN_RUPEE: + case RG_TCG_PIECE_OF_HEART: + case RG_LOSER_GREEN_RUPEE: case RG_BUY_HEART: case RG_TRIFORCE_PIECE: default: @@ -2683,7 +2683,7 @@ CustomMessage Randomizer::GetMerchantMessage(RandomizerCheck rc, TextIDs textId, shopItemName = CustomMessage(ctx->overrides[rc].GetTrickName()); } else { auto shopItem = Rando::StaticData::RetrieveItem(shopItemGet); - shopItemName = {shopItem.GetName()}; + shopItemName = shopItem.GetName(); } if (freeTextId != TEXT_NONE && shopItemPrice == 0) { @@ -2725,7 +2725,7 @@ CustomMessage Randomizer::GetMapGetItemMessageWithHint(GetItemEntry itemEntry) { case RG_SHADOW_TEMPLE_MAP: sceneNum = SCENE_SHADOW_TEMPLE; break; - case RG_BOTTOM_OF_THE_WELL_MAP: + case RG_BOTW_MAP: sceneNum = SCENE_BOTTOM_OF_THE_WELL; break; case RG_ICE_CAVERN_MAP: @@ -3429,7 +3429,7 @@ void Randomizer::CreateCustomMessages() { "Du hast jetzt ein %rIrrlicht in einer&Flasche%w! Der %rGespenstermarkt%w&interessiert sich für vielleicht&dafür...", "Vous obtenez une %rBouteille avec&un Esprit%w! Ça intéresserait&peut-être le vendeur d'Âme "), - GIMESSAGE(RG_GERUDO_FORTRESS_SMALL_KEY, ITEM_KEY_SMALL, + GIMESSAGE(RG_TH_SMALL_KEY, ITEM_KEY_SMALL, "You found a %yThieves Hideout &%wSmall Key!", "Du erhältst einen %rkleinen&Schlüssel%w für das %yDiebesversteck%w!", "Vous obtenez une %rPetite Clé %w&du %yRepaire des Voleurs%w!"), @@ -3453,11 +3453,11 @@ void Randomizer::CreateCustomMessages() { "You found a %pShadow Temple &%wSmall Key!", "Du erhältst einen %rkleinen&Schlüssel%w für den %pSchattentempel%w!", "Vous obtenez une %rPetite Clé %w&du %pTemple de l'Ombre%w!"), - GIMESSAGE(RG_BOTTOM_OF_THE_WELL_SMALL_KEY, ITEM_KEY_SMALL, + GIMESSAGE(RG_BOTW_SMALL_KEY, ITEM_KEY_SMALL, "You found a %pBottom of the &Well %wSmall Key!", "Du erhältst einen %rkleinen&Schlüssel%w für den %pGrund des Brunnens%w!", "Vous obtenez une %rPetite Clé %w&du %pPuits%w!"), - GIMESSAGE(RG_GERUDO_TRAINING_GROUND_SMALL_KEY, ITEM_KEY_SMALL, + GIMESSAGE(RG_GTG_SMALL_KEY, ITEM_KEY_SMALL, "You found a %yGerudo Training &Grounds %wSmall Key!", "Du erhältst einen %rkleinen&Schlüssel%w für die %yGerudo-Trainingsarena%w!", "Vous obtenez une %rPetite Clé %w&du %yGymnase Gerudo%w!"), @@ -3481,7 +3481,7 @@ void Randomizer::CreateCustomMessages() { "You found the key to the&%gMask Shop%w!", "Du erhältst einen %rkleinen&Schlüssel%w für den %gMaskenladen%w!", "Vous obtenez la %rClé %wde la&%gFoire aux Masques%w!"), - GIMESSAGE(RG_MARKET_SHOOTING_GALLERY_KEY, ITEM_KEY_SMALL, + GIMESSAGE(RG_MARKET_SHOOTING_KEY, ITEM_KEY_SMALL, "You found the key to the&%gMarket Shooting Gallery%w!", "Du erhältst einen %rkleinen&Schlüssel%w für die %gSchießbude des Marktes%w!", "Vous obtenez la %rClé %wdu %gStand de&Tir de la Place du Marché%w!"), @@ -3489,7 +3489,7 @@ void Randomizer::CreateCustomMessages() { "You found the key to the&%gBombchu Bowling Alley%w!", "Du erhältst einen %rkleinen&Schlüssel%w für die %gMinenbowlingbahn%w!", "Vous obtenez la %rClé %wdu %gBowling&Teigneux%w!"), - GIMESSAGE(RG_TREASURE_CHEST_GAME_BUILDING_KEY, ITEM_KEY_SMALL, + GIMESSAGE(RG_TCG_BUILDING_KEY, ITEM_KEY_SMALL, "You found the key to the&%gTreasure Chest Game Building%w!", "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus des Schatzkisten-Pokers%w!", "Vous obtenez la %rClé %wdu %gJeu de la&Chasse au Trésor%w!"), @@ -3533,7 +3533,7 @@ void Randomizer::CreateCustomMessages() { "You found the key to the&%gWindmill%w!", "Du erhältst einen %rkleinen&Schlüssel%w für die %gWindmühle%w!", "Vous obtenez la %rClé %w du %gMoulin%w!"), - GIMESSAGE(RG_KAK_SHOOTING_GALLERY_KEY, ITEM_KEY_SMALL, + GIMESSAGE(RG_KAK_SHOOTING_KEY, ITEM_KEY_SMALL, "You found the key to the&%gKakariko Shooting Gallery%w!", "Du erhältst einen %rkleinen&Schlüssel%w für die %gSchießbude von Kakariko%w!", "Vous obtenez la %rClé %w du %gStand de&Tir de Cocorico%w!"), @@ -3562,7 +3562,7 @@ void Randomizer::CreateCustomMessages() { "Du erhältst einen %rkleinen&Schlüssel%w für den %gFischweiher%w!", "Vous obtenez la %rClé %wde l'%gÉtang%w!"), - GIMESSAGE(RG_GERUDO_FORTRESS_KEY_RING, ITEM_KEY_SMALL, + GIMESSAGE(RG_TH_KEY_RING, ITEM_KEY_SMALL, "You found a %yThieves Hideout&%wKeyring!", "Du erhältst ein %rSchlüsselbund%w&für das %yDiebesversteck%w!", "Vous obtenez le trousseau de&clés du %yRepaire des Voleurs%w!"), @@ -3586,11 +3586,11 @@ void Randomizer::CreateCustomMessages() { "You found a %pShadow Temple&%wKeyring!", "Du erhältst ein %rSchlüsselbund%w&für den %pSchattentempel%w!", "Vous obtenez le trousseau de&clés du %pTemple de l'Ombre%w!"), - GIMESSAGE(RG_BOTTOM_OF_THE_WELL_KEY_RING, ITEM_KEY_SMALL, + GIMESSAGE(RG_BOTW_KEY_RING, ITEM_KEY_SMALL, "You found a %pBottom of the&Well %wKeyring!", "Du erhältst ein %rSchlüsselbund%w&für den %pGrund des Brunnens%w!", "Vous obtenez le trousseau de&clés du %pPuits%w!"), - GIMESSAGE(RG_GERUDO_TRAINING_GROUND_KEY_RING, ITEM_KEY_SMALL, + GIMESSAGE(RG_GTG_KEY_RING, ITEM_KEY_SMALL, "You found a %yGerudo Training&Grounds %wKeyring!", "Du erhältst ein %rSchlüsselbund%w&für die %yGerudo-Trainingsarena%w!", "Vous obtenez le trousseau de&clés du %yGymnase Gerudo%w!"), @@ -3660,7 +3660,7 @@ void Randomizer::CreateCustomMessages() { "You found the %pShadow Temple&%wMap![[typeHint]]", "Du erhältst die %rKarte%w für den&%pSchattentempel%w![[typeHint]]", "Vous obtenez la %rCarte %wdu&%pTemple de l'Ombre%w![[typeHint]]"), - GIMESSAGE(RG_BOTTOM_OF_THE_WELL_MAP, ITEM_DUNGEON_MAP, + GIMESSAGE(RG_BOTW_MAP, ITEM_DUNGEON_MAP, "You found the %pBottom of the&Well %wMap![[typeHint]]", "Du erhältst die %rKarte%w für den&%pGrund des Brunnens%w![[typeHint]]", "Vous obtenez la %rCarte %wdu&%pPuits%w![[typeHint]]"), @@ -3701,7 +3701,7 @@ void Randomizer::CreateCustomMessages() { "You found the %pShadow Temple&%wCompass!", "Du erhältst den %rKompaß%w für den&%pSchattentempel%w!", "Vous obtenez la %rBoussole %wdu&%pTemple de l'Ombre%w!"), - GIMESSAGE(RG_BOTTOM_OF_THE_WELL_COMPASS, ITEM_COMPASS, + GIMESSAGE(RG_BOTW_COMPASS, ITEM_COMPASS, "You found the %pBottom of the&Well %wCompass!", "Du erhältst den %rKompaß%w für den&%pGrund des Brunnens%w!", "Vous obtenez la %rBoussole %wdu&%pPuits%w!"), @@ -4034,10 +4034,10 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { mapIndex = SCENE_SHADOW_TEMPLE; numOfKeysOnKeyring = SHADOW_TEMPLE_SMALL_KEY_MAX; break; - case RG_BOTTOM_OF_THE_WELL_MAP: - case RG_BOTTOM_OF_THE_WELL_COMPASS: - case RG_BOTTOM_OF_THE_WELL_SMALL_KEY: - case RG_BOTTOM_OF_THE_WELL_KEY_RING: + case RG_BOTW_MAP: + case RG_BOTW_COMPASS: + case RG_BOTW_SMALL_KEY: + case RG_BOTW_KEY_RING: mapIndex = SCENE_BOTTOM_OF_THE_WELL; numOfKeysOnKeyring = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX; break; @@ -4048,13 +4048,13 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { case RG_GANONS_CASTLE_BOSS_KEY: mapIndex = SCENE_GANONS_TOWER; break; - case RG_GERUDO_TRAINING_GROUND_SMALL_KEY: - case RG_GERUDO_TRAINING_GROUND_KEY_RING: + case RG_GTG_SMALL_KEY: + case RG_GTG_KEY_RING: mapIndex = SCENE_GERUDO_TRAINING_GROUND; numOfKeysOnKeyring = GERUDO_TRAINING_GROUND_SMALL_KEY_MAX; break; - case RG_GERUDO_FORTRESS_SMALL_KEY: - case RG_GERUDO_FORTRESS_KEY_RING: + case RG_TH_SMALL_KEY: + case RG_TH_KEY_RING: mapIndex = SCENE_THIEVES_HIDEOUT; numOfKeysOnKeyring = GERUDO_FORTRESS_SMALL_KEY_MAX; break; diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index 23cbb290f..d3e619cdd 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -95,7 +95,7 @@ typedef enum { LOGIC_BOMBCHUS, LOGIC_PROGRESSIVE_MAGIC, LOGIC_PROGRESSIVE_OCARINA, - LOGIC_PROGRESSIVE_GIANT_KNIFE, + LOGIC_PROGRESSIVE_GORONSWORD, LOGIC_BOTTLES, LOGIC_RUTOS_LETTER, LOGIC_BOTTLE_WITH_BIG_POE, @@ -119,7 +119,7 @@ typedef enum { LOGIC_MAP_WATER_TEMPLE, LOGIC_MAP_SPIRIT_TEMPLE, LOGIC_MAP_SHADOW_TEMPLE, - LOGIC_MAP_BOTTOM_OF_THE_WELL, + LOGIC_MAP_BOTW, LOGIC_MAP_ICE_CAVERN, LOGIC_COMPASS_DEKU_TREE, LOGIC_COMPASS_DODONGOS_CAVERN, @@ -129,7 +129,7 @@ typedef enum { LOGIC_COMPASS_WATER_TEMPLE, LOGIC_COMPASS_SPIRIT_TEMPLE, LOGIC_COMPASS_SHADOW_TEMPLE, - LOGIC_COMPASS_BOTTOM_OF_THE_WELL, + LOGIC_COMPASS_BOTW, LOGIC_COMPASS_ICE_CAVERN, LOGIC_BOSS_KEY_FOREST_TEMPLE, LOGIC_BOSS_KEY_FIRE_TEMPLE, @@ -142,11 +142,11 @@ typedef enum { LOGIC_WATER_TEMPLE_KEYS, LOGIC_SPIRIT_TEMPLE_KEYS, LOGIC_SHADOW_TEMPLE_KEYS, - LOGIC_BOTTOM_OF_THE_WELL_KEYS, - LOGIC_GERUDO_TRAINING_GROUND_KEYS, + LOGIC_BOTW_KEYS, + LOGIC_GTG_KEYS, LOGIC_GERUDO_FORTRESS_KEYS, LOGIC_GANONS_CASTLE_KEYS, - LOGIC_TREASURE_GAME_KEYS, + LOGIC_TCG_KEYS, LOGIC_SKELETON_KEY, LOGIC_GUARD_HOUSE_KEY, LOGIC_MARKET_BAZAAR_KEY, @@ -154,7 +154,7 @@ typedef enum { LOGIC_MASK_SHOP_KEY, LOGIC_MARKET_SHOOTING_GALLERY_KEY, LOGIC_BOMBCHU_BOWLING_KEY, - LOGIC_TREASURE_CHEST_GAME_BUILDING_KEY, + LOGIC_TCG_BUILDING_KEY, LOGIC_BOMBCHU_SHOP_KEY, LOGIC_RICHARDS_HOUSE_KEY, LOGIC_ALLEY_HOUSE_KEY, @@ -3163,10 +3163,10 @@ typedef enum { RG_PROGRESSIVE_SLINGSHOT, RG_PROGRESSIVE_WALLET, RG_PROGRESSIVE_SCALE, - RG_PROGRESSIVE_NUT_UPGRADE, - RG_PROGRESSIVE_STICK_UPGRADE, + RG_PROGRESSIVE_NUT_BAG, + RG_PROGRESSIVE_STICK_BAG, RG_PROGRESSIVE_BOMBCHUS, - RG_PROGRESSIVE_MAGIC_METER, + RG_PROGRESSIVE_MAGIC, RG_MAGIC_SINGLE, // Added for refactor of GetItemEntries RG_MAGIC_DOUBLE, // Added for refactor of GetItemEntries RG_PROGRESSIVE_OCARINA, @@ -3203,7 +3203,7 @@ typedef enum { RG_WATER_TEMPLE_MAP, RG_SPIRIT_TEMPLE_MAP, RG_SHADOW_TEMPLE_MAP, - RG_BOTTOM_OF_THE_WELL_MAP, + RG_BOTW_MAP, RG_ICE_CAVERN_MAP, RG_DEKU_TREE_COMPASS, RG_DODONGOS_CAVERN_COMPASS, @@ -3213,7 +3213,7 @@ typedef enum { RG_WATER_TEMPLE_COMPASS, RG_SPIRIT_TEMPLE_COMPASS, RG_SHADOW_TEMPLE_COMPASS, - RG_BOTTOM_OF_THE_WELL_COMPASS, + RG_BOTW_COMPASS, RG_ICE_CAVERN_COMPASS, RG_FOREST_TEMPLE_BOSS_KEY, RG_FIRE_TEMPLE_BOSS_KEY, @@ -3226,9 +3226,9 @@ typedef enum { RG_WATER_TEMPLE_SMALL_KEY, RG_SPIRIT_TEMPLE_SMALL_KEY, RG_SHADOW_TEMPLE_SMALL_KEY, - RG_BOTTOM_OF_THE_WELL_SMALL_KEY, - RG_GERUDO_TRAINING_GROUND_SMALL_KEY, - RG_GERUDO_FORTRESS_SMALL_KEY, + RG_BOTW_SMALL_KEY, + RG_GTG_SMALL_KEY, + RG_TH_SMALL_KEY, RG_GANONS_CASTLE_SMALL_KEY, RG_TREASURE_GAME_SMALL_KEY, RG_FOREST_TEMPLE_KEY_RING, @@ -3236,9 +3236,9 @@ typedef enum { RG_WATER_TEMPLE_KEY_RING, RG_SPIRIT_TEMPLE_KEY_RING, RG_SHADOW_TEMPLE_KEY_RING, - RG_BOTTOM_OF_THE_WELL_KEY_RING, - RG_GERUDO_TRAINING_GROUND_KEY_RING, - RG_GERUDO_FORTRESS_KEY_RING, + RG_BOTW_KEY_RING, + RG_GTG_KEY_RING, + RG_TH_KEY_RING, RG_GANONS_CASTLE_KEY_RING, RG_TREASURE_GAME_KEY_RING, RG_KOKIRI_EMERALD, @@ -3278,8 +3278,8 @@ typedef enum { RG_RED_POTION_REFILL, RG_GREEN_POTION_REFILL, RG_BLUE_POTION_REFILL, - RG_TREASURE_GAME_HEART, - RG_TREASURE_GAME_GREEN_RUPEE, + RG_TCG_PIECE_OF_HEART, + RG_LOSER_GREEN_RUPEE, RG_BUY_DEKU_NUTS_5, RG_BUY_ARROWS_30, RG_BUY_ARROWS_50, @@ -3374,9 +3374,9 @@ typedef enum { RG_MARKET_BAZAAR_KEY, RG_MARKET_POTION_SHOP_KEY, RG_MASK_SHOP_KEY, - RG_MARKET_SHOOTING_GALLERY_KEY, + RG_MARKET_SHOOTING_KEY, RG_BOMBCHU_BOWLING_KEY, - RG_TREASURE_CHEST_GAME_BUILDING_KEY, + RG_TCG_BUILDING_KEY, RG_BOMBCHU_SHOP_KEY, RG_RICHARDS_HOUSE_KEY, RG_ALLEY_HOUSE_KEY, @@ -3387,7 +3387,7 @@ typedef enum { RG_SKULLTULA_HOUSE_KEY, RG_IMPAS_HOUSE_KEY, RG_WINDMILL_KEY, - RG_KAK_SHOOTING_GALLERY_KEY, + RG_KAK_SHOOTING_KEY, RG_DAMPES_HUT_KEY, RG_TALONS_HOUSE_KEY, RG_STABLES_KEY, @@ -4371,7 +4371,7 @@ typedef enum { RHT_WATER_TEMPLE_MAP, RHT_SPIRIT_TEMPLE_MAP, RHT_SHADOW_TEMPLE_MAP, - RHT_BOTTOM_OF_THE_WELL_MAP, + RHT_BOTW_MAP, RHT_ICE_CAVERN_MAP, RHT_DEKU_TREE_COMPASS, RHT_DODONGOS_CAVERN_COMPASS, @@ -4381,7 +4381,7 @@ typedef enum { RHT_WATER_TEMPLE_COMPASS, RHT_SPIRIT_TEMPLE_COMPASS, RHT_SHADOW_TEMPLE_COMPASS, - RHT_BOTTOM_OF_THE_WELL_COMPASS, + RHT_BOTW_COMPASS, RHT_ICE_CAVERN_COMPASS, RHT_FOREST_TEMPLE_BOSS_KEY, RHT_FIRE_TEMPLE_BOSS_KEY, @@ -4394,21 +4394,21 @@ typedef enum { RHT_WATER_TEMPLE_SMALL_KEY, RHT_SPIRIT_TEMPLE_SMALL_KEY, RHT_SHADOW_TEMPLE_SMALL_KEY, - RHT_BOTTOM_OF_THE_WELL_SMALL_KEY, - RHT_GERUDO_TRAINING_GROUND_SMALL_KEY, + RHT_BOTW_SMALL_KEY, + RHT_GTG_SMALL_KEY, RHT_GERUDO_FORTRESS_SMALL_KEY, RHT_GANONS_CASTLE_SMALL_KEY, - RHT_TREASURE_GAME_SMALL_KEY, + RHT_TCG_SMALL_KEY, RHT_FOREST_TEMPLE_KEY_RING, RHT_FIRE_TEMPLE_KEY_RING, RHT_WATER_TEMPLE_KEY_RING, RHT_SPIRIT_TEMPLE_KEY_RING, RHT_SHADOW_TEMPLE_KEY_RING, - RHT_BOTTOM_OF_THE_WELL_KEY_RING, - RHT_GERUDO_TRAINING_GROUND_KEY_RING, + RHT_BOTW_KEY_RING, + RHT_GTG_KEY_RING, RHT_GERUDO_FORTRESS_KEY_RING, RHT_GANONS_CASTLE_KEY_RING, - RHT_TREASURE_GAME_KEY_RING, + RHT_TCG_KEY_RING, RHT_KOKIRI_EMERALD, RHT_GORON_RUBY, RHT_ZORA_SAPPHIRE, @@ -4429,6 +4429,7 @@ typedef enum { RHT_HEART_CONTAINER, RHT_ICE_TRAP, RHT_MILK, + RHT_FISH, RHT_BOMBS_5, RHT_BOMBS_10, RHT_BOMBS_20, @@ -4445,8 +4446,8 @@ typedef enum { RHT_RED_POTION_REFILL, RHT_GREEN_POTION_REFILL, RHT_BLUE_POTION_REFILL, - RHT_TREASURE_GAME_HEART, - RHT_TREASURE_GAME_GREEN_RUPEE, + RHT_TCG_PIECE_OF_HEART, + RHT_LOSER_GREEN_RUPEE, RHT_BUY_DEKU_NUTS_5, RHT_BUY_ARROWS_30, RHT_BUY_ARROWS_50, @@ -4477,7 +4478,6 @@ typedef enum { RHT_BUY_BOMBS_535, RHT_BUY_RED_POTION_40, RHT_BUY_RED_POTION_50, - RHT_TRIFORCE, RHT_BOMBCHU_BAG, RHT_QUIVER_INF, RHT_BOMB_BAG_INF, @@ -4487,9 +4487,8 @@ typedef enum { RHT_MAGIC_INF, RHT_BOMBCHU_INF, RHT_WALLET_INF, + RHT_TRIFORCE, RHT_HINT, - RHT_TYCOON_WALLET, - RHT_CHILD_WALLET, RHT_HOOKSHOT, RHT_LONGSHOT, RHT_FAIRY_OCARINA, @@ -4506,12 +4505,17 @@ typedef enum { RHT_GORONS_BRACELET, RHT_SILVER_GAUNTLETS, RHT_GOLDEN_GAUNTLETS, + RHT_BRONZE_SCALE, RHT_SILVER_SCALE, RHT_GOLDEN_SCALE, + RHT_CHILD_WALLET, RHT_ADULT_WALLET, RHT_GIANT_WALLET, + RHT_TYCOON_WALLET, + RHT_DEKU_NUT_BAG, RHT_DEKU_NUT_CAPACITY_30, RHT_DEKU_NUT_CAPACITY_40, + RHT_DEKU_STICK_BAG, RHT_DEKU_STICK_CAPACITY_20, RHT_DEKU_STICK_CAPACITY_30, RHT_TRIFORCE_PIECE, @@ -4529,11 +4533,33 @@ typedef enum { RHT_OCARINA_C_DOWN_BUTTON, RHT_OCARINA_C_LEFT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, - RHT_BRONZE_SCALE, RHT_FISHING_POLE, RHT_SKELETON_KEY, RHT_EPONA, - RHT_OVERWORLD_KEY, + RHT_GUARD_HOUSE_KEY, + RHT_MARKET_BAZAAR_KEY, + RHT_MARKET_POTION_SHOP_KEY, + RHT_MASK_SHOP_KEY, + RHT_MARKET_SHOOTING_KEY, + RHT_BOMBCHU_BOWLING_KEY, + RHT_TCG_BUILDING_KEY, + RHT_BOMBCHU_SHOP_KEY, + RHT_RICHARDS_HOUSE_KEY, + RHT_ALLEY_HOUSE_KEY, + RHT_KAK_BAZAAR_KEY, + RHT_KAK_POTION_SHOP_KEY, + RHT_BOSS_HOUSE_KEY, + RHT_GRANNYS_POTION_SHOP_KEY, + RHT_SKULLTULA_HOUSE_KEY, + RHT_IMPAS_HOUSE_KEY, + RHT_WINDMILL_KEY, + RHT_KAK_SHOOTING_KEY, + RHT_DAMPES_HUT_KEY, + RHT_TALONS_HOUSE_KEY, + RHT_STABLES_KEY, + RHT_BACK_TOWER_KEY, + RHT_HYLIA_LAB_KEY, + RHT_FISHING_HOLE_KEY, RHT_HINT_MYSTERIOUS, RHT_MYSTERIOUS_ITEM, RHT_MYSTERIOUS_ITEM_CAPITAL, diff --git a/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp index 62a4793e2..54dde24a7 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp @@ -271,7 +271,7 @@ std::map MapRGtoRandomizerCheckArea = { { RG_WATER_TEMPLE_MAP, RCAREA_WATER_TEMPLE }, { RG_SPIRIT_TEMPLE_MAP, RCAREA_SPIRIT_TEMPLE }, { RG_SHADOW_TEMPLE_MAP, RCAREA_SHADOW_TEMPLE }, - { RG_BOTTOM_OF_THE_WELL_MAP, RCAREA_BOTTOM_OF_THE_WELL }, + { RG_BOTW_MAP, RCAREA_BOTTOM_OF_THE_WELL }, { RG_ICE_CAVERN_MAP, RCAREA_ICE_CAVERN } }; @@ -1111,11 +1111,11 @@ bool ShouldShowCheck(RandomizerCheck check) { RandomizerCheckObjects::GetRCAreaName(Rando::StaticData::GetLocation(check)->GetArea())); if (itemLoc->HasObtained() || itemLoc->GetCheckStatus() == RCSHOW_SCUMMED || (!mystery && (itemLoc->GetCheckStatus() == RCSHOW_IDENTIFIED || itemLoc->GetCheckStatus() == RCSHOW_SEEN) && itemLoc->GetPlacedRandomizerGet() != RG_ICE_TRAP)) { - search += " " + itemLoc->GetPlacedItemName().GetForLanguage(gSaveContext.language); + search += " " + itemLoc->GetPlacedItemName().GetForCurrentLanguage(); } else if (itemLoc->GetCheckStatus() == RCSHOW_IDENTIFIED && !mystery) { search += OTRGlobals::Instance->gRandoContext->overrides[check].GetTrickName().GetForLanguage(gSaveContext.language); } else if (itemLoc->GetCheckStatus() == RCSHOW_SEEN && !mystery) { - search += Rando::StaticData::RetrieveItem(OTRGlobals::Instance->gRandoContext->overrides[check].LooksLike()).GetName().GetForLanguage(gSaveContext.language); + search += Rando::StaticData::RetrieveItem(OTRGlobals::Instance->gRandoContext->overrides[check].LooksLike()).GetName().GetForCurrentLanguage(); } return ( IsVisibleInCheckTracker(check) && @@ -1607,14 +1607,10 @@ void DrawLocation(RandomizerCheck rc) { case RCSHOW_COLLECTED: case RCSHOW_SCUMMED: if (IS_RANDO) { - txt = itemLoc->GetPlacedItem().GetName().GetForLanguage(gSaveContext.language); + txt = itemLoc->GetPlacedItem().GetName().GetForCurrentLanguage(); } else { if (IsHeartPiece((GetItemID)Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetItemID())) { - if (gSaveContext.language == LANGUAGE_ENG || gSaveContext.language == LANGUAGE_GER) { - txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetName().english; - } else if (gSaveContext.language == LANGUAGE_FRA) { - txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetName().french; - } + txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetName().GetForCurrentLanguage(); } } break; @@ -1625,10 +1621,10 @@ void DrawLocation(RandomizerCheck rc) { if (status == RCSHOW_IDENTIFIED) { txt = OTRGlobals::Instance->gRandoContext->overrides[rc].GetTrickName().GetForLanguage(gSaveContext.language); } else { - txt = Rando::StaticData::RetrieveItem(OTRGlobals::Instance->gRandoContext->overrides[rc].LooksLike()).GetName().GetForLanguage(gSaveContext.language); + txt = Rando::StaticData::RetrieveItem(OTRGlobals::Instance->gRandoContext->overrides[rc].LooksLike()).GetName().GetForCurrentLanguage(); } } else if (!mystery && !itemLoc->IsAddedToPool()) { - txt = itemLoc->GetPlacedItem().GetName().GetForLanguage(gSaveContext.language); + txt = itemLoc->GetPlacedItem().GetName().GetForCurrentLanguage(); } if (IsVisibleInCheckTracker(rc) && status == RCSHOW_IDENTIFIED && !mystery && !itemLoc->IsAddedToPool()) { auto price = OTRGlobals::Instance->gRandoContext->GetItemLocation(rc)->GetPrice(); @@ -1638,11 +1634,7 @@ void DrawLocation(RandomizerCheck rc) { } } else { if (IsHeartPiece((GetItemID)Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetItemID())) { - if (gSaveContext.language == LANGUAGE_ENG || gSaveContext.language == LANGUAGE_GER) { - txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetName().english; - } else if (gSaveContext.language == LANGUAGE_FRA) { - txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetName().french; - } + txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetName().GetForCurrentLanguage(); } } break; diff --git a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp index 13046874f..26e69dfc1 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp @@ -121,9 +121,9 @@ std::vector overworldKeyItems = { ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_BAZAAR_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_MASK_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_SHOOTING_GALLERY_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_SHOOTING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_BOMBCHU_BOWLING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_TREASURE_CHEST_GAME_BUILDING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_TCG_BUILDING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_BOMBCHU_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_RICHARDS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_ALLEY_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), @@ -134,7 +134,7 @@ std::vector overworldKeyItems = { ITEM_TRACKER_ITEM_CUSTOM(RG_SKULLTULA_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_IMPAS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_WINDMILL_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_SHOOTING_GALLERY_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_SHOOTING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_DAMPES_HUT_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_TALONS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_STABLES_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), @@ -242,9 +242,9 @@ std::map itemTrackerOverworldKeyShortNames = { { RG_MARKET_BAZAAR_KEY, "MKBAZ" }, { RG_MARKET_POTION_SHOP_KEY, "MKPOT" }, { RG_MASK_SHOP_KEY, "MASK" }, - { RG_MARKET_SHOOTING_GALLERY_KEY, "MKSHO" }, + { RG_MARKET_SHOOTING_KEY, "MKSHO" }, { RG_BOMBCHU_BOWLING_KEY, "BOWL" }, - { RG_TREASURE_CHEST_GAME_BUILDING_KEY, "TREASU" }, + { RG_TCG_BUILDING_KEY, "TREASU" }, { RG_BOMBCHU_SHOP_KEY, "CHUSHO" }, { RG_RICHARDS_HOUSE_KEY, "RICH" }, { RG_ALLEY_HOUSE_KEY, "ALLEY" }, @@ -255,7 +255,7 @@ std::map itemTrackerOverworldKeyShortNames = { { RG_SKULLTULA_HOUSE_KEY, "SKULL" }, { RG_IMPAS_HOUSE_KEY, "IMPAS" }, { RG_WINDMILL_KEY, "WIND" }, - { RG_KAK_SHOOTING_GALLERY_KEY, "KAKSHO" }, + { RG_KAK_SHOOTING_KEY, "KAKSHO" }, { RG_DAMPES_HUT_KEY, "DAMPES" }, { RG_TALONS_HOUSE_KEY, "TALONS" }, { RG_STABLES_KEY, "STABLE" }, @@ -701,7 +701,7 @@ void DrawItem(ItemTrackerItem item) { bool hasItem = actualItemId != ITEM_NONE; std::string itemName = ""; - // Hack fix as RG_MARKET_SHOOTING_GALLERY_KEY is RandomizerGet #255 which collides + // Hack fix as RG_MARKET_SHOOTING_KEY is RandomizerGet #255 which collides // with ITEM_NONE (ItemId #255) due to the lack of a modid to separate them if (item.name != "ITEM_KEY_SMALL" && item.id == ITEM_NONE) { return; @@ -844,7 +844,7 @@ void DrawItem(ItemTrackerItem item) { hasItem = Flags_GetRandomizerInf(RAND_INF_MASK_SHOP_KEY_OBTAINED); itemName = "Mask Shop Key"; break; - case RG_MARKET_SHOOTING_GALLERY_KEY: + case RG_MARKET_SHOOTING_KEY: actualItemId = item.id; hasItem = Flags_GetRandomizerInf(RAND_INF_MARKET_SHOOTING_GALLERY_KEY_OBTAINED); itemName = "Market Shooting Gallery Key"; @@ -854,7 +854,7 @@ void DrawItem(ItemTrackerItem item) { hasItem = Flags_GetRandomizerInf(RAND_INF_BOMBCHU_BOWLING_KEY_OBTAINED); itemName = "Bombchu Bowling Key"; break; - case RG_TREASURE_CHEST_GAME_BUILDING_KEY: + case RG_TCG_BUILDING_KEY: actualItemId = item.id; hasItem = Flags_GetRandomizerInf(RAND_INF_TREASURE_CHEST_GAME_BUILDING_KEY_OBTAINED); itemName = "Treasure Chest Game Building Key"; @@ -909,7 +909,7 @@ void DrawItem(ItemTrackerItem item) { hasItem = Flags_GetRandomizerInf(RAND_INF_WINDMILL_KEY_OBTAINED); itemName = "Windmill Key"; break; - case RG_KAK_SHOOTING_GALLERY_KEY: + case RG_KAK_SHOOTING_KEY: actualItemId = item.id; hasItem = Flags_GetRandomizerInf(RAND_INF_KAK_SHOOTING_GALLERY_KEY_OBTAINED); itemName = "Kak Shooting Gallery Key"; diff --git a/soh/soh/Enhancements/randomizer/static_data.cpp b/soh/soh/Enhancements/randomizer/static_data.cpp index 84da0d3c1..077fb489f 100644 --- a/soh/soh/Enhancements/randomizer/static_data.cpp +++ b/soh/soh/Enhancements/randomizer/static_data.cpp @@ -194,7 +194,7 @@ std::unordered_map StaticData::staticHintInfoMap {RH_SHEIK_HINT, StaticHintInfo(HINT_TYPE_AREA, {RHT_SHEIK_HINT_LA_ONLY}, RSK_SHEIK_LA_HINT, true, {}, {RG_LIGHT_ARROWS}, {RC_SHEIK_HINT_GC, RC_SHEIK_HINT_MQ_GC}, true)}, {RH_DAMPES_DIARY, StaticHintInfo(HINT_TYPE_AREA, {RHT_DAMPE_DIARY}, RSK_DAMPES_DIARY_HINT, true, {}, {RG_PROGRESSIVE_HOOKSHOT}, {RC_DAMPE_HINT})}, {RH_GREG_RUPEE, StaticHintInfo(HINT_TYPE_AREA, {RHT_GREG_HINT}, RSK_GREG_HINT, true, {}, {RG_GREG_RUPEE}, {RC_GREG_HINT})}, - {RH_SARIA_HINT, StaticHintInfo(HINT_TYPE_AREA, {RHT_SARIA_TALK_HINT, RHT_SARIA_SONG_HINT}, RSK_SARIA_HINT, true, {}, {RG_PROGRESSIVE_MAGIC_METER}, {RC_SARIA_SONG_HINT, RC_SONG_FROM_SARIA}, true)}, + {RH_SARIA_HINT, StaticHintInfo(HINT_TYPE_AREA, {RHT_SARIA_TALK_HINT, RHT_SARIA_SONG_HINT}, RSK_SARIA_HINT, true, {}, {RG_PROGRESSIVE_MAGIC}, {RC_SARIA_SONG_HINT, RC_SONG_FROM_SARIA}, true)}, {RH_LOACH_HINT, StaticHintInfo(HINT_TYPE_ITEM, {RHT_LOACH_HINT}, RSK_LOACH_HINT, true, {RC_LH_HYRULE_LOACH})}, {RH_FISHING_POLE, StaticHintInfo(HINT_TYPE_AREA, {RHT_FISHING_POLE_HINT}, RSK_FISHING_POLE_HINT, true, {}, {RG_FISHING_POLE}, {RC_FISHING_POLE_HINT}, true)}, {RH_HBA_HINT, StaticHintInfo(HINT_TYPE_ITEM, {RHT_HBA_HINT_SIGN, RHT_HBA_HINT_NOT_ON_HORSE, RHT_HBA_HINT_INITIAL, RHT_HBA_HINT_HAVE_1000}, RSK_HBA_HINT, true, {RC_GF_HBA_1000_POINTS, RC_GF_HBA_1500_POINTS})}, @@ -219,7 +219,7 @@ std::unordered_map StaticData::PopulateTranslationMap(std std::vector strings = message.GetAllMessages(); for (std::string string: strings){ if (output.contains(string)){ - if (output[string] != key){ + if (output[string] != key && string != ""){ SPDLOG_DEBUG("\tREPEATED STRING IN " + message.GetEnglish(MF_CLEAN) + "\n\n"); //RANDOTODO should this cause an error of some kind? } } else { @@ -236,8 +236,8 @@ std::unordered_map StaticData::PopulateTranslationMap(std std::vector strings = hintTextTable[text].GetClear().GetAllMessages(); for (std::string string: strings){ if (output.contains(string)){ - if (output[string] != key){ - SPDLOG_DEBUG("\tREPEATED STRING WITH " + string + "\n\n"); //RANDOTODO should this cause an error of some kind? + if (output[string] != key && string != ""){ + SPDLOG_DEBUG("\tREPEATED STRING WITH " + string + "\n\n"); } } else { output[string] = key; diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 3690e8648..f0c41c3cf 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -393,7 +393,6 @@ OTRGlobals::OTRGlobals() { gRandoContext->InitStaticData(); gRandoContext = Rando::Context::CreateInstance(); Rando::Settings::GetInstance()->AssignContext(gRandoContext); - Rando::StaticData::InitItemTable();//RANDOTODO make this not rely on context's logic so it can be initialised in InitStaticData Rando::Settings::GetInstance()->CreateOptions(); gRandomizer = std::make_shared(); @@ -2148,7 +2147,7 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) { } } } else if (textId == TEXT_ITEM_KEY_SMALL) { - if (player->getItemEntry.getItemId == RG_GERUDO_FORTRESS_SMALL_KEY) { + if (player->getItemEntry.getItemId == RG_TH_SMALL_KEY) { if (Randomizer_GetSettingValue(RSK_GERUDO_KEYS) != RO_GERUDO_KEYS_VANILLA) { messageEntry = Randomizer_GetCustomGetItemMessage(player); } From 58269584048587a44b48ea487b0745e42837e685 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Tue, 25 Mar 2025 19:40:33 +0000 Subject: [PATCH 02/24] more poking --- soh/soh/Enhancements/randomizer/item_list.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index 5e5ccc67b..11dcf910d 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -404,7 +404,7 @@ void Rando::StaticData::InitItemTable() { // Init itemNameToEnum for (auto& item : itemTable) { - std::vector strings = item.GetName().GetAllMessages(); + std::vector strings = item.GetName().GetAllMessages(MF_RAW); for (std::string string: strings){ if (itemNameToEnum.contains(string) && string != ""){ if (itemNameToEnum[string] != item.GetRandomizerGet()){ From 4240f7d8ab0a8c55226fd50d069303b1a729af69 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Tue, 25 Mar 2025 22:53:43 +0000 Subject: [PATCH 03/24] fix plandomiser --- .../Enhancements/randomizer/3drando/fill.cpp | 4 ++-- .../Enhancements/randomizer/3drando/hints.cpp | 4 ++-- .../randomizer/3drando/spoiler_log.cpp | 6 ++--- .../Enhancements/randomizer/Plandomizer.cpp | 22 +++++++++---------- soh/soh/Enhancements/randomizer/context.cpp | 4 ++-- soh/soh/Enhancements/randomizer/hint.cpp | 4 ++-- .../Enhancements/randomizer/hook_handlers.cpp | 2 +- soh/soh/Enhancements/randomizer/item_list.cpp | 6 ++--- .../randomizer/randomizer_check_tracker.cpp | 14 ++++++------ soh/soh/SaveManager.cpp | 2 +- 10 files changed, 34 insertions(+), 34 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/fill.cpp b/soh/soh/Enhancements/randomizer/3drando/fill.cpp index b55b0f38f..3d3de186a 100644 --- a/soh/soh/Enhancements/randomizer/3drando/fill.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/fill.cpp @@ -792,7 +792,7 @@ static void AssumedFill(const std::vector& items, const std::vect // NOLINTNEXTLINE(clang-diagnostic-unused-variable) for (const RandomizerGet item : items) { SPDLOG_DEBUG("\t"); - SPDLOG_DEBUG(Rando::StaticData::RetrieveItem(item).GetName().GetEnglish()); + SPDLOG_DEBUG(Rando::StaticData::RetrieveItem(item).GetName().GetForCurrentLanguage(MF_RAW)); SPDLOG_DEBUG("\n"); } SPDLOG_DEBUG("\nAllowed Locations:\n"); @@ -851,7 +851,7 @@ static void AssumedFill(const std::vector& items, const std::vect if (accessibleLocations.empty()) { SPDLOG_DEBUG("\nCANNOT PLACE "); - SPDLOG_DEBUG(Rando::StaticData::RetrieveItem(item).GetName().GetEnglish()); + SPDLOG_DEBUG(Rando::StaticData::RetrieveItem(item).GetName().GetForCurrentLanguage(MF_RAW)); SPDLOG_DEBUG(". TRYING AGAIN...\n"); // reset any locations that got an item diff --git a/soh/soh/Enhancements/randomizer/3drando/hints.cpp b/soh/soh/Enhancements/randomizer/3drando/hints.cpp index f5ce4e4c0..81c9c7654 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hints.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hints.cpp @@ -40,7 +40,7 @@ const CustomMessage& HintText::GetClear() const { } const CustomMessage& HintText::GetName() const { - return name.GetEnglish() == "" ? name : clearText; + return name.GetEnglish() == "" ? clearText : name; } const CustomMessage& HintText::GetObscure() const { @@ -454,7 +454,7 @@ static RandomizerCheck CreateRandomHint(std::vector& possibleHi SPDLOG_DEBUG("\n"); SPDLOG_DEBUG("\tItem: "); - SPDLOG_DEBUG(ctx->GetItemLocation(hintedLocation)->GetPlacedItemName().GetForCurrentLanguage()); + SPDLOG_DEBUG(ctx->GetItemLocation(hintedLocation)->GetPlacedItemName().GetForCurrentLanguage(MF_RAW)); SPDLOG_DEBUG("\n"); placed = CreateHint(hintedLocation, copies, type, distributionName); diff --git a/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp b/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp index 1f41a46af..b63f41841 100644 --- a/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp @@ -75,7 +75,7 @@ static void WriteLocation( Rando::Location* location = Rando::StaticData::GetLocation(locationKey); Rando::ItemLocation* itemLocation = Rando::Context::GetInstance()->GetItemLocation(locationKey); - jsonData["playthrough"][sphere][location->GetName()] = itemLocation->GetPlacedItemName().GetForCurrentLanguage(); + jsonData["playthrough"][sphere][location->GetName()] = itemLocation->GetPlacedItemName().GetForCurrentLanguage(MF_RAW); } //Writes a shuffled entrance to the specified node @@ -254,7 +254,7 @@ static void WriteAllLocations() { auto ctx = Rando::Context::GetInstance(); for (const RandomizerCheck key : ctx->allLocations) { Rando::ItemLocation* location = ctx->GetItemLocation(key); - std::string placedItemName = location->GetPlacedItemName().GetForCurrentLanguage(); + std::string placedItemName = location->GetPlacedItemName().GetForCurrentLanguage(MF_RAW); // If it's a simple item (not an ice trap, doesn't have a price) // just add the name of the item and move on @@ -278,7 +278,7 @@ static void WriteAllLocations() { if (location->GetPlacedRandomizerGet() == RG_ICE_TRAP) { jsonData["locations"][Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName()]["model"] = - Rando::StaticData::RetrieveItem(ctx->overrides[location->GetRandomizerCheck()].LooksLike()).GetName().GetForCurrentLanguage(); + Rando::StaticData::RetrieveItem(ctx->overrides[location->GetRandomizerCheck()].LooksLike()).GetName().GetForCurrentLanguage(MF_RAW); switch (gSaveContext.language) { case 0: default: diff --git a/soh/soh/Enhancements/randomizer/Plandomizer.cpp b/soh/soh/Enhancements/randomizer/Plandomizer.cpp index 6be7bf1a2..b5977ba3a 100644 --- a/soh/soh/Enhancements/randomizer/Plandomizer.cpp +++ b/soh/soh/Enhancements/randomizer/Plandomizer.cpp @@ -542,8 +542,8 @@ void PlandomizerSaveSpoilerLog() { for (auto& import : plandoLogData) { if (import.checkRewardItem.GetRandomizerGet() == RG_ICE_TRAP) { spoilerSave["locations"][import.checkName] = { - { "item", import.checkRewardItem.GetName().GetForCurrentLanguage() }, - { "model", import.iceTrapModel.GetName().GetForCurrentLanguage() }, + { "item", import.checkRewardItem.GetName().GetForCurrentLanguage(MF_RAW) }, + { "model", import.iceTrapModel.GetName().GetForCurrentLanguage(MF_RAW) }, { "trickName", import.iceTrapName.c_str() } }; if (import.shopPrice > -1) { @@ -551,11 +551,11 @@ void PlandomizerSaveSpoilerLog() { } } else if (import.shopPrice > -1) { spoilerSave["locations"][import.checkName] = { - { "item", import.checkRewardItem.GetName().GetForCurrentLanguage() }, + { "item", import.checkRewardItem.GetName().GetForCurrentLanguage(MF_RAW) }, { "price", import.shopPrice } }; } else { - spoilerSave["locations"][import.checkName] = import.checkRewardItem.GetName().GetForCurrentLanguage(); + spoilerSave["locations"][import.checkName] = import.checkRewardItem.GetName().GetForCurrentLanguage(MF_RAW); } } @@ -669,7 +669,7 @@ void PlandomizerOverlayText(std::pair drawObject ) { ImGui::SetCursorScreenPos(textPos); ImGui::Text("+"); } - std::string parenthesesNum = extractNumberInParentheses(drawObject.first.GetName().GetEnglish().c_str()); + std::string parenthesesNum = extractNumberInParentheses(drawObject.first.GetName().GetEnglish(MF_RAW).c_str()); if (parenthesesNum != "" && parenthesesNum != "WINNER" && parenthesesNum != "LOSER") { textPos = ImVec2(imageMin.x + 2, imageMin.y + 2); @@ -715,7 +715,7 @@ void PlandomizerDrawItemPopup(uint32_t index) { ImGui::PushID(item); ImGui::TableNextColumn(); PlandomizerItemImageCorrection(plandomizerRandoRetrieveItem(item)); - auto name = plandomizerRandoRetrieveItem(item).GetName().GetForCurrentLanguage(); + auto name = plandomizerRandoRetrieveItem(item).GetName().GetForCurrentLanguage(MF_RAW); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(imagePadding, imagePadding)); auto ret = ImGui::ImageButton(name.c_str(), textureID, imageSize, textureUV0, textureUV1, ImVec4(0, 0, 0, 0), itemColor); ImGui::PopStyleVar(); @@ -744,7 +744,7 @@ void PlandomizerDrawItemPopup(uint32_t index) { ImGui::PushID(itemIndex); auto itemToDraw = drawSlots.first; PlandomizerItemImageCorrection(drawSlots.first); - auto name = drawSlots.first.GetName().GetForCurrentLanguage(); + auto name = drawSlots.first.GetName().GetForCurrentLanguage(MF_RAW); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(imagePadding, imagePadding)); auto ret = ImGui::ImageButton(name.c_str(), textureID, imageSize, textureUV0, textureUV1, ImVec4(0, 0, 0, 0), itemColor); ImGui::PopStyleVar(); @@ -792,7 +792,7 @@ void PlandomizerDrawIceTrapPopUp(uint32_t index) { } ImGui::TableNextColumn(); ImGui::PushID(items.first); - auto name = Rando::StaticData::RetrieveItem(items.first).GetName().GetForCurrentLanguage(); + auto name = Rando::StaticData::RetrieveItem(items.first).GetName().GetForCurrentLanguage(MF_RAW); PlandomizerItemImageCorrection(Rando::StaticData::RetrieveItem(items.first)); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(imagePadding, imagePadding)); auto ret = ImGui::ImageButton(name.c_str(), textureID, imageSize, textureUV0, textureUV1, ImVec4(0, 0, 0, 0), itemColor); @@ -818,7 +818,7 @@ void PlandomizerDrawItemSlots(uint32_t index) { ImGui::PushID(index); PlandoPushImageButtonStyle(); PlandomizerItemImageCorrection(plandoLogData[index].checkRewardItem); - auto name = plandoLogData[index].checkRewardItem.GetName().GetForCurrentLanguage(); + auto name = plandoLogData[index].checkRewardItem.GetName().GetForCurrentLanguage(MF_RAW); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(imagePadding, imagePadding)); auto ret = ImGui::ImageButton(name.c_str(), textureID, imageSize, textureUV0, textureUV1, ImVec4(0, 0, 0, 0), itemColor); ImGui::PopStyleVar(); @@ -854,7 +854,7 @@ void PlandomizerDrawIceTrapSetup(uint32_t index) { ImGui::TableNextColumn(); PlandomizerItemImageCorrection(plandoLogData[index].iceTrapModel); PlandoPushImageButtonStyle(); - auto name = plandoLogData[index].iceTrapModel.GetName().GetForCurrentLanguage(); + auto name = plandoLogData[index].iceTrapModel.GetName().GetForCurrentLanguage(MF_RAW); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(imagePadding, imagePadding)); auto ret = ImGui::ImageButton(name.c_str(), textureID, imageSize, textureUV0, textureUV1, ImVec4(0, 0, 0, 0), itemColor); ImGui::PopStyleVar(); @@ -1090,7 +1090,7 @@ void PlandomizerDrawLocationsWindow(RandomizerCheckArea rcArea) { ImGui::TableNextColumn(); ImGui::TextWrapped(spoilerData.checkName.c_str()); ImGui::TableNextColumn(); - ImGui::TextWrapped(spoilerData.checkRewardItem.GetName().GetForCurrentLanguage().c_str()); + ImGui::TextWrapped(spoilerData.checkRewardItem.GetName().GetForCurrentLanguage(MF_RAW).c_str()); ImGui::TableNextColumn(); PlandomizerDrawItemSlots(index); if (plandoLogData[index].checkRewardItem.GetRandomizerGet() == RG_ICE_TRAP) { diff --git a/soh/soh/Enhancements/randomizer/context.cpp b/soh/soh/Enhancements/randomizer/context.cpp index 4d70d0a12..f104773c3 100644 --- a/soh/soh/Enhancements/randomizer/context.cpp +++ b/soh/soh/Enhancements/randomizer/context.cpp @@ -120,7 +120,7 @@ ItemOverride& Context::GetItemOverride(size_t locKey) { void Context::PlaceItemInLocation(const RandomizerCheck locKey, const RandomizerGet item, const bool applyEffectImmediately, const bool setHidden) { const auto loc = GetItemLocation(locKey); - SPDLOG_DEBUG(StaticData::RetrieveItem(item).GetName().GetEnglish() + " placed at " + StaticData::GetLocation(locKey)->GetName() + "\n"); + SPDLOG_DEBUG(StaticData::RetrieveItem(item).GetName().GetForCurrentLanguage(MF_RAW) + " placed at " + StaticData::GetLocation(locKey)->GetName() + "\n"); if (applyEffectImmediately || mOptions[RSK_LOGIC_RULES].Is(RO_LOGIC_GLITCHLESS) || mOptions[RSK_LOGIC_RULES].Is(RO_LOGIC_VANILLA)) { StaticData::RetrieveItem(item).ApplyEffect(); @@ -294,7 +294,7 @@ void Context::CreateItemOverrides() { } SPDLOG_DEBUG(loc->GetName()); SPDLOG_DEBUG(": "); - SPDLOG_DEBUG(itemLoc->GetPlacedItemName().GetForCurrentLanguage()); + SPDLOG_DEBUG(itemLoc->GetPlacedItemName().GetForCurrentLanguage(MF_RAW)); SPDLOG_DEBUG("\n"); } SPDLOG_DEBUG("Overrides Created: "); diff --git a/soh/soh/Enhancements/randomizer/hint.cpp b/soh/soh/Enhancements/randomizer/hint.cpp index fbe7c7645..9ee29ffed 100644 --- a/soh/soh/Enhancements/randomizer/hint.cpp +++ b/soh/soh/Enhancements/randomizer/hint.cpp @@ -411,11 +411,11 @@ oJson Hint::toJSON() { if (!(StaticData::staticHintInfoMap.contains(ownKey) && StaticData::staticHintInfoMap[ownKey].targetItems.size() > 0)){ if (items.size() == 1){ - log["item"] = StaticData::GetItemTable()[items[0]].GetName().GetForCurrentLanguage(); + log["item"] = StaticData::GetItemTable()[items[0]].GetName().GetForCurrentLanguage(MF_RAW); } else if (items.size() > 1){ std::vector itemStrings = {}; for (size_t c = 0; c < items.size(); c++){ - itemStrings.push_back(StaticData::GetItemTable()[items[c]].GetName().GetForCurrentLanguage()); + itemStrings.push_back(StaticData::GetItemTable()[items[c]].GetName().GetForCurrentLanguage(MF_RAW)); } log["items"] = itemStrings; } diff --git a/soh/soh/Enhancements/randomizer/hook_handlers.cpp b/soh/soh/Enhancements/randomizer/hook_handlers.cpp index 3b7e9c81a..63150a1e2 100644 --- a/soh/soh/Enhancements/randomizer/hook_handlers.cpp +++ b/soh/soh/Enhancements/randomizer/hook_handlers.cpp @@ -1000,7 +1000,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l } else if (item00->itemEntry.modIndex == MOD_RANDOMIZER) { Notification::Emit({ .message = "You found ",//RANDOTODO change based on language - .suffix = Rando::StaticData::RetrieveItem((RandomizerGet)item00->itemEntry.getItemId).GetName().GetForCurrentLanguage(), + .suffix = Rando::StaticData::RetrieveItem((RandomizerGet)item00->itemEntry.getItemId).GetName().GetForCurrentLanguage(MF_RAW), }); } diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index 11dcf910d..29ba00b3e 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -409,9 +409,9 @@ void Rando::StaticData::InitItemTable() { if (itemNameToEnum.contains(string) && string != ""){ if (itemNameToEnum[string] != item.GetRandomizerGet()){ SPDLOG_DEBUG("\tREPEATED STRING WITH " + string + "\n\n"); - } else { - itemNameToEnum[string] = item.GetRandomizerGet(); - } + } + } else { + itemNameToEnum[string] = item.GetRandomizerGet(); } } } diff --git a/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp index 54dde24a7..176ad9c1b 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp @@ -1111,11 +1111,11 @@ bool ShouldShowCheck(RandomizerCheck check) { RandomizerCheckObjects::GetRCAreaName(Rando::StaticData::GetLocation(check)->GetArea())); if (itemLoc->HasObtained() || itemLoc->GetCheckStatus() == RCSHOW_SCUMMED || (!mystery && (itemLoc->GetCheckStatus() == RCSHOW_IDENTIFIED || itemLoc->GetCheckStatus() == RCSHOW_SEEN) && itemLoc->GetPlacedRandomizerGet() != RG_ICE_TRAP)) { - search += " " + itemLoc->GetPlacedItemName().GetForCurrentLanguage(); + search += " " + itemLoc->GetPlacedItemName().GetForCurrentLanguage(MF_RAW); } else if (itemLoc->GetCheckStatus() == RCSHOW_IDENTIFIED && !mystery) { search += OTRGlobals::Instance->gRandoContext->overrides[check].GetTrickName().GetForLanguage(gSaveContext.language); } else if (itemLoc->GetCheckStatus() == RCSHOW_SEEN && !mystery) { - search += Rando::StaticData::RetrieveItem(OTRGlobals::Instance->gRandoContext->overrides[check].LooksLike()).GetName().GetForCurrentLanguage(); + search += Rando::StaticData::RetrieveItem(OTRGlobals::Instance->gRandoContext->overrides[check].LooksLike()).GetName().GetForCurrentLanguage(MF_RAW); } return ( IsVisibleInCheckTracker(check) && @@ -1607,10 +1607,10 @@ void DrawLocation(RandomizerCheck rc) { case RCSHOW_COLLECTED: case RCSHOW_SCUMMED: if (IS_RANDO) { - txt = itemLoc->GetPlacedItem().GetName().GetForCurrentLanguage(); + txt = itemLoc->GetPlacedItem().GetName().GetForCurrentLanguage(MF_RAW); } else { if (IsHeartPiece((GetItemID)Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetItemID())) { - txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetName().GetForCurrentLanguage(); + txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetName().GetForCurrentLanguage(MF_RAW); } } break; @@ -1621,10 +1621,10 @@ void DrawLocation(RandomizerCheck rc) { if (status == RCSHOW_IDENTIFIED) { txt = OTRGlobals::Instance->gRandoContext->overrides[rc].GetTrickName().GetForLanguage(gSaveContext.language); } else { - txt = Rando::StaticData::RetrieveItem(OTRGlobals::Instance->gRandoContext->overrides[rc].LooksLike()).GetName().GetForCurrentLanguage(); + txt = Rando::StaticData::RetrieveItem(OTRGlobals::Instance->gRandoContext->overrides[rc].LooksLike()).GetName().GetForCurrentLanguage(MF_RAW); } } else if (!mystery && !itemLoc->IsAddedToPool()) { - txt = itemLoc->GetPlacedItem().GetName().GetForCurrentLanguage(); + txt = itemLoc->GetPlacedItem().GetName().GetForCurrentLanguage(MF_RAW); } if (IsVisibleInCheckTracker(rc) && status == RCSHOW_IDENTIFIED && !mystery && !itemLoc->IsAddedToPool()) { auto price = OTRGlobals::Instance->gRandoContext->GetItemLocation(rc)->GetPrice(); @@ -1634,7 +1634,7 @@ void DrawLocation(RandomizerCheck rc) { } } else { if (IsHeartPiece((GetItemID)Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetItemID())) { - txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetName().GetForCurrentLanguage(); + txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetName().GetForCurrentLanguage(MF_RAW); } } break; diff --git a/soh/soh/SaveManager.cpp b/soh/soh/SaveManager.cpp index 55c7d204e..a5c651c97 100644 --- a/soh/soh/SaveManager.cpp +++ b/soh/soh/SaveManager.cpp @@ -541,7 +541,7 @@ void SaveManager::SaveRandomizer(SaveContext* saveContext, int sectionID, bool f std::vector items = hint->GetHintedItems(); SaveManager::Instance->SaveArray("items", items.size(), [&](size_t i) { - SaveManager::Instance->SaveData("", Rando::StaticData::GetItemTable()[items[i]].GetName().GetEnglish()); + SaveManager::Instance->SaveData("", Rando::StaticData::GetItemTable()[items[i]].GetName().GetEnglish(MF_RAW)); }); std::vector itemNamesChosen = hint->GetItemNamesChosen(); From 549c1232a6f2d75f05a4a26bed0c4ad523077a53 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Wed, 26 Mar 2025 00:21:40 +0000 Subject: [PATCH 04/24] tidy up the table and other small things --- .../Enhancements/randomizer/3drando/fill.cpp | 4 +- .../3drando/hint_list/hint_list_item.cpp | 4 +- .../randomizer/3drando/item_pool.cpp | 34 +- .../Enhancements/randomizer/Plandomizer.cpp | 12 +- soh/soh/Enhancements/randomizer/item.cpp | 18 +- soh/soh/Enhancements/randomizer/item.h | 6 +- soh/soh/Enhancements/randomizer/item_list.cpp | 557 +++++++++--------- .../Enhancements/randomizer/location_list.cpp | 18 +- soh/soh/Enhancements/randomizer/logic.cpp | 8 +- .../Enhancements/randomizer/randomizer.cpp | 14 +- .../Enhancements/randomizer/randomizerTypes.h | 18 +- soh/soh/OTRGlobals.cpp | 2 +- 12 files changed, 358 insertions(+), 337 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/fill.cpp b/soh/soh/Enhancements/randomizer/3drando/fill.cpp index 3d3de186a..5ba97de7f 100644 --- a/soh/soh/Enhancements/randomizer/3drando/fill.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/fill.cpp @@ -1056,10 +1056,10 @@ static void RandomizeDungeonItems() { } if (ctx->GetOption(RSK_GERUDO_KEYS).Is(RO_GERUDO_KEYS_ANY_DUNGEON)) { - auto gerudoKeys = FilterAndEraseFromPool(ItemPool, [](const auto i) { return i == RG_TH_SMALL_KEY || i == RG_TH_KEY_RING; }); + auto gerudoKeys = FilterAndEraseFromPool(ItemPool, [](const auto i) { return i == RG_HIDEOUT_SMALL_KEY || i == RG_HIDEOUT_KEY_RING; }); AddElementsToPool(anyDungeonItems, gerudoKeys); } else if (ctx->GetOption(RSK_GERUDO_KEYS).Is(RO_GERUDO_KEYS_OVERWORLD)) { - auto gerudoKeys = FilterAndEraseFromPool(ItemPool, [](const auto i) { return i == RG_TH_SMALL_KEY || i == RG_TH_KEY_RING; }); + auto gerudoKeys = FilterAndEraseFromPool(ItemPool, [](const auto i) { return i == RG_HIDEOUT_SMALL_KEY || i == RG_HIDEOUT_KEY_RING; }); AddElementsToPool(overworldItems, gerudoKeys); } diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index 738977b24..ea8154bc0 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -1534,7 +1534,7 @@ void StaticData::HintTable_Init_Item() { }, CustomMessage("Training Ground Small Key", "Kleiner Schlüssel für das Gerudo-Trainingsgelände", "Petite Clé du Gymnase Gerudo")); - hintTextTable[RHT_GERUDO_FORTRESS_SMALL_KEY] = HintText(CustomMessage("a Gerudo Fortress Small Key", /*german*/"ein kleiner Schlüssel für die Gerudo-Festung", /*french*/"une petite clé de la Repaire des Voleurs"), + hintTextTable[RHT_HIDEOUT_SMALL_KEY] = HintText(CustomMessage("a Gerudo Fortress Small Key", /*german*/"ein kleiner Schlüssel für die Gerudo-Festung", /*french*/"une petite clé de la Repaire des Voleurs"), // /*spanish*/una llave pequeña de la Fortaleza Gerudo { CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") @@ -1921,7 +1921,7 @@ void StaticData::HintTable_Init_Item() { }, CustomMessage("Training Ground Key Ring", "Schlüsselbund für das Gerudo-Trainingsgelände", "Trousseau du Gymnase Gerudo")); - hintTextTable[RHT_GERUDO_FORTRESS_KEY_RING] = HintText(CustomMessage("a Gerudo Fortress Key Ring", /*german*/"ein Schlüsselbund der Gerudo-Festung", /*french*/"un trousseau de clés de la Repaire des Voleurs"), + hintTextTable[RHT_HIDEOUT_KEY_RING] = HintText(CustomMessage("a Gerudo Fortress Key Ring", /*german*/"ein Schlüsselbund der Gerudo-Festung", /*french*/"un trousseau de clés de la Repaire des Voleurs"), // /*spanish*/un llavero de la Fortaleza Gerudo { CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") diff --git a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp index cd777015d..217766c4c 100644 --- a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp @@ -822,20 +822,20 @@ void GenerateItemPool() { AddItemToMainPool(RG_CLAIM_CHECK); if (ctx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS)) { - AddItemToMainPool(RG_TREASURE_GAME_SMALL_KEY, 6); // 6 individual keys + AddItemToMainPool(RG_TCG_SMALL_KEY, 6); // 6 individual keys } else if (ctx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK)) { - AddItemToMainPool(RG_TREASURE_GAME_SMALL_KEY); // 1 key which will behave as a pack of 6 + AddItemToMainPool(RG_TCG_SMALL_KEY); // 1 key which will behave as a pack of 6 } else { ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_1, RG_GREEN_RUPEE, false, true); ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_2, RG_GREEN_RUPEE, false, true); ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_3, RG_BLUE_RUPEE, false, true); ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_4, RG_BLUE_RUPEE, false, true); ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_5, RG_RED_RUPEE, false, true); - ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_1, RG_TREASURE_GAME_SMALL_KEY, false, true); - ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_2, RG_TREASURE_GAME_SMALL_KEY, false, true); - ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_3, RG_TREASURE_GAME_SMALL_KEY, false, true); - ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_4, RG_TREASURE_GAME_SMALL_KEY, false, true); - ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_5, RG_TREASURE_GAME_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_1, RG_TCG_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_2, RG_TCG_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_3, RG_TCG_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_4, RG_TCG_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_5, RG_TCG_SMALL_KEY, false, true); }; if (ctx->GetOption(RSK_SHUFFLE_TOKENS).Is(RO_TOKENSANITY_OFF)) { @@ -936,40 +936,40 @@ void GenerateItemPool() { ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true); } else if (ctx->GetOption(RSK_GERUDO_KEYS).IsNot(RO_GERUDO_KEYS_VANILLA)) { if (ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST)) { - AddItemToMainPool(RG_TH_SMALL_KEY); + AddItemToMainPool(RG_HIDEOUT_SMALL_KEY); ctx->PlaceItemInLocation(RC_GF_NORTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true); ctx->PlaceItemInLocation(RC_GF_SOUTH_F1_CARPENTER, RG_RECOVERY_HEART, false, true); ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true); } else { //Only add key ring if 4 Fortress keys necessary if (ctx->GetOption(RSK_KEYRINGS_GERUDO_FORTRESS) && ctx->GetOption(RSK_KEYRINGS)) { - AddItemToMainPool(RG_TH_KEY_RING); + AddItemToMainPool(RG_HIDEOUT_KEY_RING); //Add junk to make up for missing keys for (uint8_t i = 0; i < 3; i++) { AddItemToMainPool(GetJunkItem()); } } else { - AddItemToMainPool(RG_TH_SMALL_KEY, 4); + AddItemToMainPool(RG_HIDEOUT_SMALL_KEY, 4); } } if (ctx->GetOption(RSK_ITEM_POOL).Is(RO_ITEM_POOL_PLENTIFUL)) { if (ctx->GetOption(RSK_KEYRINGS_GERUDO_FORTRESS) && ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) && ctx->GetOption(RSK_KEYRINGS) ) { - AddItemToPool(PendingJunkPool, RG_TH_KEY_RING); + AddItemToPool(PendingJunkPool, RG_HIDEOUT_KEY_RING); } else { - AddItemToPool(PendingJunkPool, RG_TH_SMALL_KEY); + AddItemToPool(PendingJunkPool, RG_HIDEOUT_SMALL_KEY); } } } else { if (ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST)) { - ctx->PlaceItemInLocation(RC_GF_NORTH_F1_CARPENTER, RG_TH_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_GF_NORTH_F1_CARPENTER, RG_HIDEOUT_SMALL_KEY, false, true); ctx->PlaceItemInLocation(RC_GF_NORTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true); ctx->PlaceItemInLocation(RC_GF_SOUTH_F1_CARPENTER, RG_RECOVERY_HEART, false, true); ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_RECOVERY_HEART, false, true); } else { - ctx->PlaceItemInLocation(RC_GF_NORTH_F1_CARPENTER, RG_TH_SMALL_KEY, false, true); - ctx->PlaceItemInLocation(RC_GF_NORTH_F2_CARPENTER, RG_TH_SMALL_KEY, false, true); - ctx->PlaceItemInLocation(RC_GF_SOUTH_F1_CARPENTER, RG_TH_SMALL_KEY, false, true); - ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_TH_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_GF_NORTH_F1_CARPENTER, RG_HIDEOUT_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_GF_NORTH_F2_CARPENTER, RG_HIDEOUT_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_GF_SOUTH_F1_CARPENTER, RG_HIDEOUT_SMALL_KEY, false, true); + ctx->PlaceItemInLocation(RC_GF_SOUTH_F2_CARPENTER, RG_HIDEOUT_SMALL_KEY, false, true); } } diff --git a/soh/soh/Enhancements/randomizer/Plandomizer.cpp b/soh/soh/Enhancements/randomizer/Plandomizer.cpp index b5977ba3a..6f724f89d 100644 --- a/soh/soh/Enhancements/randomizer/Plandomizer.cpp +++ b/soh/soh/Enhancements/randomizer/Plandomizer.cpp @@ -210,9 +210,9 @@ std::unordered_map itemImageMap = { { RG_SHADOW_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_BOTW_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_GTG_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_TH_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_HIDEOUT_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_GANONS_CASTLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_TREASURE_GAME_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_TCG_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_KOKIRI_EMERALD, "ITEM_KOKIRI_EMERALD" }, { RG_GORON_RUBY, "ITEM_GORON_RUBY" }, { RG_ZORA_SAPPHIRE, "ITEM_ZORA_SAPPHIRE" }, @@ -283,7 +283,7 @@ void PlandoPopImageButtonStyle(){ ImVec4 plandomizerGetItemColor(Rando::Item randoItem) { itemColor = ImVec4( 1.0f, 1.0f, 1.0f, 1.0f ); - if (randoItem.GetItemType() == ITEMTYPE_SMALLKEY || randoItem.GetItemType() == ITEMTYPE_TH_SMALLKEY + if (randoItem.GetItemType() == ITEMTYPE_SMALLKEY || randoItem.GetItemType() == ITEMTYPE_HIDEOUT_KEY || randoItem.GetItemType() == ITEMTYPE_BOSSKEY) { if (randoItem.GetRandomizerGet() == RG_FOREST_TEMPLE_SMALL_KEY || randoItem.GetRandomizerGet() == RG_FOREST_TEMPLE_KEY_RING) { @@ -306,8 +306,8 @@ ImVec4 plandomizerGetItemColor(Rando::Item randoItem) { } else if (randoItem.GetRandomizerGet() == RG_GTG_SMALL_KEY || randoItem.GetRandomizerGet() == RG_GTG_KEY_RING) { itemColor = ImVec4( 1.0f, 1.0f, 0, 1.0f ); - } else if (randoItem.GetRandomizerGet() == RG_TH_SMALL_KEY || - randoItem.GetRandomizerGet() == RG_TH_KEY_RING) { + } else if (randoItem.GetRandomizerGet() == RG_HIDEOUT_SMALL_KEY || + randoItem.GetRandomizerGet() == RG_HIDEOUT_KEY_RING) { itemColor = ImVec4( 1.0f, 1.0f, 1.0f, 1.0f ); } else if (randoItem.GetRandomizerGet() == RG_GANONS_CASTLE_SMALL_KEY || randoItem.GetRandomizerGet() == RG_GANONS_CASTLE_KEY_RING) { @@ -391,7 +391,7 @@ void PlandomizerItemImageCorrection(Rando::Item randoItem) { itemColor = plandomizerGetItemColor(randoItem); - if (randoItem.GetItemType() == ITEMTYPE_SMALLKEY || randoItem.GetItemType() == ITEMTYPE_TH_SMALLKEY) { + if (randoItem.GetItemType() == ITEMTYPE_SMALLKEY || randoItem.GetItemType() == ITEMTYPE_HIDEOUT_KEY) { textureID = Ship::Context::GetInstance()->GetWindow()->GetGui()->GetTextureByName("ITEM_KEY_SMALL"); return; } diff --git a/soh/soh/Enhancements/randomizer/item.cpp b/soh/soh/Enhancements/randomizer/item.cpp index 1dba468de..df9caa004 100644 --- a/soh/soh/Enhancements/randomizer/item.cpp +++ b/soh/soh/Enhancements/randomizer/item.cpp @@ -28,6 +28,22 @@ Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16 } } + +Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, + const bool advancement_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, + const uint16_t objectId_, const uint16_t gid_, const uint16_t textId_, const uint16_t field_, + const int16_t chestAnimation_, const GetItemCategory category_, const uint16_t modIndex_, + const bool progressive_, const uint16_t price_) + : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), + advancement(advancement_), logicVal(logicVal_), hintKey(hintKey_), progressive(progressive_), price(price_) { + if (modIndex_ == MOD_RANDOMIZER || getItemId > 0x7D) { + giEntry = std::make_shared(GetItemEntry{ static_cast(randomizerGet_), field_, static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, objectId_, modIndex_, TABLE_RANDOMIZER, static_cast(randomizerGet_), gid_, true, ITEM_FROM_NPC, category_, static_cast(randomizerGet_), MOD_RANDOMIZER, NULL }); + } + else { + giEntry = std::make_shared(GetItemEntry{ static_cast(randomizerGet_), field_, static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, objectId_, modIndex_, TABLE_VANILLA, getItemId_, gid_, true, ITEM_FROM_NPC, category_, static_cast(randomizerGet_), modIndex_, NULL }); + } +} + Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const bool progressive_, const uint16_t price_) @@ -411,7 +427,7 @@ bool Item::IsMajorItem() const { return false; } - if (type == ITEMTYPE_TH_SMALLKEY && ctx->GetOption(RSK_GERUDO_KEYS).Is(RO_GERUDO_KEYS_VANILLA)) { + if (type == ITEMTYPE_HIDEOUT_KEY && ctx->GetOption(RSK_GERUDO_KEYS).Is(RO_GERUDO_KEYS_VANILLA)) { return false; } diff --git a/soh/soh/Enhancements/randomizer/item.h b/soh/soh/Enhancements/randomizer/item.h index b3bb46f6f..81b35799c 100644 --- a/soh/soh/Enhancements/randomizer/item.h +++ b/soh/soh/Enhancements/randomizer/item.h @@ -17,7 +17,7 @@ enum ItemType { ITEMTYPE_BOSSKEY, ITEMTYPE_SMALLKEY, ITEMTYPE_TOKEN, - ITEMTYPE_TH_SMALLKEY, + ITEMTYPE_HIDEOUT_KEY, ITEMTYPE_EVENT, ITEMTYPE_DROP, ITEMTYPE_REFILL, @@ -34,6 +34,10 @@ class Item { LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t itemId_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, bool progressive_ = false, uint16_t price_ = 0); + Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, + LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t objectId_, uint16_t gid_, + uint16_t textId_, uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, + bool progressive_ = false, uint16_t price_ = 0); Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, bool progressive_ = false, uint16_t price_ = 0); ~Item(); diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index 29ba00b3e..66e46ae9e 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -12,393 +12,394 @@ std::unordered_map Rando::StaticData::itemNameToEnum void Rando::StaticData::InitItemTable() { // clang-format off - itemTable[RG_NONE] = Item(RG_NONE, ITEMTYPE_EVENT, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_NONE, ITEM_NONE, 0, 0, 0, 0, 0, ITEM_CATEGORY_JUNK, MOD_NONE); - // Randomizer Get Randomizer Get Type Get Item ID Adv. Logic Value Hint Text Key Item ID Object ID Draw ID Text ID field Chest Animation Item Category Mod Index - itemTable[RG_KOKIRI_SWORD] = Item(RG_KOKIRI_SWORD, ITEMTYPE_EQUIP, GI_SWORD_KOKIRI, true, LOGIC_KOKIRI_SWORD, RHT_KOKIRI_SWORD, ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MASTER_SWORD] = Item(RG_MASTER_SWORD, ITEMTYPE_EQUIP, 0xE0, true, LOGIC_MASTER_SWORD, RHT_MASTER_SWORD, ITEM_SWORD_MASTER, OBJECT_TOKI_OBJECTS, GID_SWORD_BGS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_NONE] = Item(RG_NONE, ITEMTYPE_EVENT, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_NONE, ITEM_NONE, 0, 0, 0, 0, 0, ITEM_CATEGORY_JUNK, MOD_NONE); + // Randomizer Get Randomizer Get Type Get Item ID Adv. Logic Value Hint Text Key Item ID Object ID Draw ID Text ID field Chest Animation Item Category Mod Index + itemTable[RG_KOKIRI_SWORD] = Item(RG_KOKIRI_SWORD, ITEMTYPE_EQUIP, GI_SWORD_KOKIRI, true, LOGIC_KOKIRI_SWORD, RHT_KOKIRI_SWORD, ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MASTER_SWORD] = Item(RG_MASTER_SWORD, ITEMTYPE_EQUIP, 0xE0, true, LOGIC_MASTER_SWORD, RHT_MASTER_SWORD, ITEM_SWORD_MASTER, OBJECT_TOKI_OBJECTS, GID_SWORD_BGS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MASTER_SWORD].SetCustomDrawFunc(Randomizer_DrawMasterSword); - itemTable[RG_GIANTS_KNIFE] = Item(RG_GIANTS_KNIFE, ITEMTYPE_EQUIP, GI_SWORD_KNIFE, true, LOGIC_NONE, RHT_GIANTS_KNIFE, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x4B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIGGORON_SWORD] = Item(RG_BIGGORON_SWORD, ITEMTYPE_EQUIP, GI_SWORD_BGS, true, LOGIC_BIGGORON_SWORD, RHT_BIGGORON_SWORD, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x0C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_DEKU_SHIELD] = Item(RG_DEKU_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_DEKU, false, LOGIC_DEKU_SHIELD, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_HYLIAN_SHIELD] = Item(RG_HYLIAN_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_HYLIAN, false, LOGIC_HYLIAN_SHIELD, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_MIRROR_SHIELD] = Item(RG_MIRROR_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_MIRROR, true, LOGIC_MIRROR_SHIELD, RHT_MIRROR_SHIELD, ITEM_SHIELD_MIRROR, OBJECT_GI_SHIELD_3, GID_SHIELD_MIRROR, 0x4E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GORON_TUNIC] = Item(RG_GORON_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_ZORA_TUNIC] = Item(RG_ZORA_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_IRON_BOOTS] = Item(RG_IRON_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_IRON, true, LOGIC_IRON_BOOTS, RHT_IRON_BOOTS, ITEM_BOOTS_IRON, OBJECT_GI_BOOTS_2, GID_BOOTS_IRON, 0x53, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_HOVER_BOOTS] = Item(RG_HOVER_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_HOVER, true, LOGIC_HOVER_BOOTS, RHT_HOVER_BOOTS, ITEM_BOOTS_HOVER, OBJECT_GI_HOVERBOOTS, GID_BOOTS_HOVER, 0x54, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOOMERANG] = Item(RG_BOOMERANG, ITEMTYPE_ITEM, GI_BOOMERANG, true, LOGIC_BOOMERANG, RHT_BOOMERANG, ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LENS_OF_TRUTH] = Item(RG_LENS_OF_TRUTH, ITEMTYPE_ITEM, GI_LENS, true, LOGIC_LENS_OF_TRUTH, RHT_LENS_OF_TRUTH, ITEM_LENS, OBJECT_GI_GLASSES, GID_LENS, 0x39, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MEGATON_HAMMER] = Item(RG_MEGATON_HAMMER, ITEMTYPE_ITEM, GI_HAMMER, true, LOGIC_HAMMER, RHT_MEGATON_HAMMER, ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_STONE_OF_AGONY] = Item(RG_STONE_OF_AGONY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_STONE_OF_AGONY, RHT_STONE_OF_AGONY, ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_DINS_FIRE] = Item(RG_DINS_FIRE, ITEMTYPE_ITEM, GI_DINS_FIRE, true, LOGIC_DINS_FIRE, RHT_DINS_FIRE, ITEM_DINS_FIRE, OBJECT_GI_GODDESS, GID_DINS_FIRE, 0xAD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FARORES_WIND] = Item(RG_FARORES_WIND, ITEMTYPE_ITEM, GI_FARORES_WIND, true, LOGIC_FARORES_WIND, RHT_FARORES_WIND, ITEM_FARORES_WIND, OBJECT_GI_GODDESS, GID_FARORES_WIND, 0xAE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_NAYRUS_LOVE] = Item(RG_NAYRUS_LOVE, ITEMTYPE_ITEM, GI_NAYRUS_LOVE, true, LOGIC_NAYRUS_LOVE, RHT_NAYRUS_LOVE, ITEM_NAYRUS_LOVE, OBJECT_GI_GODDESS, GID_NAYRUS_LOVE, 0xAF, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FIRE_ARROWS] = Item(RG_FIRE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_FIRE, true, LOGIC_FIRE_ARROWS, RHT_FIRE_ARROWS, ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ICE_ARROWS] = Item(RG_ICE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_ICE, true, LOGIC_ICE_ARROWS, RHT_ICE_ARROWS, ITEM_ARROW_ICE, OBJECT_GI_M_ARROW, GID_ARROW_ICE, 0x71, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LIGHT_ARROWS] = Item(RG_LIGHT_ARROWS, ITEMTYPE_ITEM, GI_ARROW_LIGHT, true, LOGIC_LIGHT_ARROWS, RHT_LIGHT_ARROWS, ITEM_ARROW_LIGHT, OBJECT_GI_M_ARROW, GID_ARROW_LIGHT, 0x72, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GERUDO_MEMBERSHIP_CARD] = Item(RG_GERUDO_MEMBERSHIP_CARD, ITEMTYPE_ITEM, GI_GERUDO_CARD, true, LOGIC_GERUDO_CARD, RHT_GERUDO_MEMBERSHIP_CARD, ITEM_GERUDO_CARD, OBJECT_GI_GERUDO, GID_GERUDO_CARD, 0x7B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MAGIC_BEAN] = Item(RG_MAGIC_BEAN, ITEMTYPE_ITEM, GI_BEAN, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN, ITEM_BEAN, OBJECT_GI_BEAN, GID_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MAGIC_BEAN_PACK] = Item(RG_MAGIC_BEAN_PACK, ITEMTYPE_ITEM, RG_MAGIC_BEAN_PACK, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN_PACK, RG_MAGIC_BEAN_PACK, OBJECT_GI_BEAN, GID_BEAN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_DOUBLE_DEFENSE] = Item(RG_DOUBLE_DEFENSE, ITEMTYPE_ITEM, RG_DOUBLE_DEFENSE, true, LOGIC_DOUBLE_DEFENSE, RHT_DOUBLE_DEFENSE, RG_DOUBLE_DEFENSE, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xE9, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_GIANTS_KNIFE] = Item(RG_GIANTS_KNIFE, ITEMTYPE_EQUIP, GI_SWORD_KNIFE, true, LOGIC_NONE, RHT_GIANTS_KNIFE, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x4B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BIGGORON_SWORD] = Item(RG_BIGGORON_SWORD, ITEMTYPE_EQUIP, GI_SWORD_BGS, true, LOGIC_BIGGORON_SWORD, RHT_BIGGORON_SWORD, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x0C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_DEKU_SHIELD] = Item(RG_DEKU_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_DEKU, false, LOGIC_DEKU_SHIELD, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_HYLIAN_SHIELD] = Item(RG_HYLIAN_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_HYLIAN, false, LOGIC_HYLIAN_SHIELD, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_MIRROR_SHIELD] = Item(RG_MIRROR_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_MIRROR, true, LOGIC_MIRROR_SHIELD, RHT_MIRROR_SHIELD, ITEM_SHIELD_MIRROR, OBJECT_GI_SHIELD_3, GID_SHIELD_MIRROR, 0x4E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GORON_TUNIC] = Item(RG_GORON_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_ZORA_TUNIC] = Item(RG_ZORA_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_IRON_BOOTS] = Item(RG_IRON_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_IRON, true, LOGIC_IRON_BOOTS, RHT_IRON_BOOTS, ITEM_BOOTS_IRON, OBJECT_GI_BOOTS_2, GID_BOOTS_IRON, 0x53, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_HOVER_BOOTS] = Item(RG_HOVER_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_HOVER, true, LOGIC_HOVER_BOOTS, RHT_HOVER_BOOTS, ITEM_BOOTS_HOVER, OBJECT_GI_HOVERBOOTS, GID_BOOTS_HOVER, 0x54, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOOMERANG] = Item(RG_BOOMERANG, ITEMTYPE_ITEM, GI_BOOMERANG, true, LOGIC_BOOMERANG, RHT_BOOMERANG, ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_LENS_OF_TRUTH] = Item(RG_LENS_OF_TRUTH, ITEMTYPE_ITEM, GI_LENS, true, LOGIC_LENS_OF_TRUTH, RHT_LENS_OF_TRUTH, ITEM_LENS, OBJECT_GI_GLASSES, GID_LENS, 0x39, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MEGATON_HAMMER] = Item(RG_MEGATON_HAMMER, ITEMTYPE_ITEM, GI_HAMMER, true, LOGIC_HAMMER, RHT_MEGATON_HAMMER, ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_STONE_OF_AGONY] = Item(RG_STONE_OF_AGONY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_STONE_OF_AGONY, RHT_STONE_OF_AGONY, ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_DINS_FIRE] = Item(RG_DINS_FIRE, ITEMTYPE_ITEM, GI_DINS_FIRE, true, LOGIC_DINS_FIRE, RHT_DINS_FIRE, ITEM_DINS_FIRE, OBJECT_GI_GODDESS, GID_DINS_FIRE, 0xAD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FARORES_WIND] = Item(RG_FARORES_WIND, ITEMTYPE_ITEM, GI_FARORES_WIND, true, LOGIC_FARORES_WIND, RHT_FARORES_WIND, ITEM_FARORES_WIND, OBJECT_GI_GODDESS, GID_FARORES_WIND, 0xAE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_NAYRUS_LOVE] = Item(RG_NAYRUS_LOVE, ITEMTYPE_ITEM, GI_NAYRUS_LOVE, true, LOGIC_NAYRUS_LOVE, RHT_NAYRUS_LOVE, ITEM_NAYRUS_LOVE, OBJECT_GI_GODDESS, GID_NAYRUS_LOVE, 0xAF, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FIRE_ARROWS] = Item(RG_FIRE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_FIRE, true, LOGIC_FIRE_ARROWS, RHT_FIRE_ARROWS, ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ICE_ARROWS] = Item(RG_ICE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_ICE, true, LOGIC_ICE_ARROWS, RHT_ICE_ARROWS, ITEM_ARROW_ICE, OBJECT_GI_M_ARROW, GID_ARROW_ICE, 0x71, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_LIGHT_ARROWS] = Item(RG_LIGHT_ARROWS, ITEMTYPE_ITEM, GI_ARROW_LIGHT, true, LOGIC_LIGHT_ARROWS, RHT_LIGHT_ARROWS, ITEM_ARROW_LIGHT, OBJECT_GI_M_ARROW, GID_ARROW_LIGHT, 0x72, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GERUDO_MEMBERSHIP_CARD] = Item(RG_GERUDO_MEMBERSHIP_CARD, ITEMTYPE_ITEM, GI_GERUDO_CARD, true, LOGIC_GERUDO_CARD, RHT_GERUDO_MEMBERSHIP_CARD, ITEM_GERUDO_CARD, OBJECT_GI_GERUDO, GID_GERUDO_CARD, 0x7B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MAGIC_BEAN] = Item(RG_MAGIC_BEAN, ITEMTYPE_ITEM, GI_BEAN, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN, ITEM_BEAN, OBJECT_GI_BEAN, GID_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MAGIC_BEAN_PACK] = Item(RG_MAGIC_BEAN_PACK, ITEMTYPE_ITEM, RG_MAGIC_BEAN_PACK, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN_PACK, OBJECT_GI_BEAN, GID_BEAN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DOUBLE_DEFENSE] = Item(RG_DOUBLE_DEFENSE, ITEMTYPE_ITEM, RG_DOUBLE_DEFENSE, true, LOGIC_DOUBLE_DEFENSE, RHT_DOUBLE_DEFENSE, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xE9, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DOUBLE_DEFENSE].SetCustomDrawFunc(Randomizer_DrawDoubleDefense); // Trade Quest Items - itemTable[RG_WEIRD_EGG] = Item(RG_WEIRD_EGG, ITEMTYPE_ITEM, GI_WEIRD_EGG, true, LOGIC_WEIRD_EGG, RHT_WEIRD_EGG, ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ZELDAS_LETTER] = Item(RG_ZELDAS_LETTER, ITEMTYPE_ITEM, GI_LETTER_ZELDA, true, LOGIC_ZELDAS_LETTER, RHT_ZELDAS_LETTER, ITEM_LETTER_ZELDA, OBJECT_GI_LETTER, GID_LETTER_ZELDA, 0x69, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_POCKET_EGG] = Item(RG_POCKET_EGG, ITEMTYPE_ITEM, GI_POCKET_EGG, true, LOGIC_POCKET_EGG, RHT_POCKET_EGG, ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_COJIRO] = Item(RG_COJIRO, ITEMTYPE_ITEM, GI_COJIRO, true, LOGIC_COJIRO, RHT_COJIRO, ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ODD_MUSHROOM] = Item(RG_ODD_MUSHROOM, ITEMTYPE_ITEM, GI_ODD_MUSHROOM, true, LOGIC_ODD_MUSHROOM, RHT_ODD_MUSHROOM, ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ODD_POTION] = Item(RG_ODD_POTION, ITEMTYPE_ITEM, GI_ODD_POTION, true, LOGIC_ODD_POULTICE, RHT_ODD_POTION, ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_POACHERS_SAW] = Item(RG_POACHERS_SAW, ITEMTYPE_ITEM, GI_SAW, true, LOGIC_POACHERS_SAW, RHT_POACHERS_SAW, ITEM_SAW, OBJECT_GI_SAW, GID_SAW, 0x05, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BROKEN_SWORD] = Item(RG_BROKEN_SWORD, ITEMTYPE_ITEM, GI_SWORD_BROKEN, true, LOGIC_BROKEN_SWORD, RHT_BROKEN_SWORD, ITEM_SWORD_BROKEN, OBJECT_GI_BROKENSWORD, GID_SWORD_BROKEN, 0x08, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_PRESCRIPTION] = Item(RG_PRESCRIPTION, ITEMTYPE_ITEM, GI_PRESCRIPTION, true, LOGIC_PRESCRIPTION, RHT_PRESCRIPTION, ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_EYEBALL_FROG] = Item(RG_EYEBALL_FROG, ITEMTYPE_ITEM, GI_FROG, true, LOGIC_EYEBALL_FROG, RHT_EYEBALL_FROG, ITEM_FROG, OBJECT_GI_FROG, GID_FROG, 0x0D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_EYEDROPS] = Item(RG_EYEDROPS, ITEMTYPE_ITEM, GI_EYEDROPS, true, LOGIC_EYEDROPS, RHT_EYEDROPS, ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_CLAIM_CHECK] = Item(RG_CLAIM_CHECK, ITEMTYPE_ITEM, GI_CLAIM_CHECK, true, LOGIC_CLAIM_CHECK, RHT_CLAIM_CHECK, ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_WEIRD_EGG] = Item(RG_WEIRD_EGG, ITEMTYPE_ITEM, GI_WEIRD_EGG, true, LOGIC_WEIRD_EGG, RHT_WEIRD_EGG, ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ZELDAS_LETTER] = Item(RG_ZELDAS_LETTER, ITEMTYPE_ITEM, GI_LETTER_ZELDA, true, LOGIC_ZELDAS_LETTER, RHT_ZELDAS_LETTER, ITEM_LETTER_ZELDA, OBJECT_GI_LETTER, GID_LETTER_ZELDA, 0x69, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_POCKET_EGG] = Item(RG_POCKET_EGG, ITEMTYPE_ITEM, GI_POCKET_EGG, true, LOGIC_POCKET_EGG, RHT_POCKET_EGG, ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_COJIRO] = Item(RG_COJIRO, ITEMTYPE_ITEM, GI_COJIRO, true, LOGIC_COJIRO, RHT_COJIRO, ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ODD_MUSHROOM] = Item(RG_ODD_MUSHROOM, ITEMTYPE_ITEM, GI_ODD_MUSHROOM, true, LOGIC_ODD_MUSHROOM, RHT_ODD_MUSHROOM, ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ODD_POTION] = Item(RG_ODD_POTION, ITEMTYPE_ITEM, GI_ODD_POTION, true, LOGIC_ODD_POULTICE, RHT_ODD_POTION, ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_POACHERS_SAW] = Item(RG_POACHERS_SAW, ITEMTYPE_ITEM, GI_SAW, true, LOGIC_POACHERS_SAW, RHT_POACHERS_SAW, ITEM_SAW, OBJECT_GI_SAW, GID_SAW, 0x05, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BROKEN_SWORD] = Item(RG_BROKEN_SWORD, ITEMTYPE_ITEM, GI_SWORD_BROKEN, true, LOGIC_BROKEN_SWORD, RHT_BROKEN_SWORD, ITEM_SWORD_BROKEN, OBJECT_GI_BROKENSWORD, GID_SWORD_BROKEN, 0x08, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_PRESCRIPTION] = Item(RG_PRESCRIPTION, ITEMTYPE_ITEM, GI_PRESCRIPTION, true, LOGIC_PRESCRIPTION, RHT_PRESCRIPTION, ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_EYEBALL_FROG] = Item(RG_EYEBALL_FROG, ITEMTYPE_ITEM, GI_FROG, true, LOGIC_EYEBALL_FROG, RHT_EYEBALL_FROG, ITEM_FROG, OBJECT_GI_FROG, GID_FROG, 0x0D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_EYEDROPS] = Item(RG_EYEDROPS, ITEMTYPE_ITEM, GI_EYEDROPS, true, LOGIC_EYEDROPS, RHT_EYEDROPS, ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_CLAIM_CHECK] = Item(RG_CLAIM_CHECK, ITEMTYPE_ITEM, GI_CLAIM_CHECK, true, LOGIC_CLAIM_CHECK, RHT_CLAIM_CHECK, ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Skulltula Token - itemTable[RG_GOLD_SKULLTULA_TOKEN] = Item(RG_GOLD_SKULLTULA_TOKEN, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, true, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULLTULA_TOKEN, MOD_NONE); + itemTable[RG_GOLD_SKULLTULA_TOKEN] = Item(RG_GOLD_SKULLTULA_TOKEN, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, true, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULLTULA_TOKEN, MOD_NONE); // Progressive Items - itemTable[RG_PROGRESSIVE_HOOKSHOT] = Item(RG_PROGRESSIVE_HOOKSHOT, ITEMTYPE_ITEM, 0x80, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_PROGRESSIVE_HOOKSHOT, true); - itemTable[RG_PROGRESSIVE_STRENGTH] = Item(RG_PROGRESSIVE_STRENGTH, ITEMTYPE_ITEM, 0x81, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_PROGRESSIVE_STRENGTH, true); - itemTable[RG_PROGRESSIVE_BOMB_BAG] = Item(RG_PROGRESSIVE_BOMB_BAG, ITEMTYPE_ITEM, 0x82, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_PROGRESSIVE_BOMB_BAG, true); - itemTable[RG_PROGRESSIVE_BOW] = Item(RG_PROGRESSIVE_BOW, ITEMTYPE_ITEM, 0x83, true, LOGIC_PROGRESSIVE_BOW, RHT_PROGRESSIVE_BOW, true); - itemTable[RG_PROGRESSIVE_SLINGSHOT] = Item(RG_PROGRESSIVE_SLINGSHOT, ITEMTYPE_ITEM, 0x84, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_PROGRESSIVE_SLINGSHOT, true); - itemTable[RG_PROGRESSIVE_WALLET] = Item(RG_PROGRESSIVE_WALLET, ITEMTYPE_ITEM, 0x85, true, LOGIC_PROGRESSIVE_WALLET, RHT_PROGRESSIVE_WALLET, true); - itemTable[RG_PROGRESSIVE_SCALE] = Item(RG_PROGRESSIVE_SCALE, ITEMTYPE_ITEM, 0x86, true, LOGIC_PROGRESSIVE_SCALE, RHT_PROGRESSIVE_SCALE, true); - itemTable[RG_PROGRESSIVE_NUT_BAG] = Item(RG_PROGRESSIVE_NUT_BAG, ITEMTYPE_ITEM, 0x87, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_PROGRESSIVE_NUT_UPGRADE, true); - itemTable[RG_PROGRESSIVE_STICK_BAG] = Item(RG_PROGRESSIVE_STICK_BAG, ITEMTYPE_ITEM, 0x88, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_PROGRESSIVE_STICK_UPGRADE, true); - itemTable[RG_PROGRESSIVE_BOMBCHUS] = Item(RG_PROGRESSIVE_BOMBCHUS, ITEMTYPE_ITEM, 0x89, true, LOGIC_BOMBCHUS, RHT_PROGRESSIVE_BOMBCHUS, true); - itemTable[RG_PROGRESSIVE_MAGIC] = Item(RG_PROGRESSIVE_MAGIC, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_PROGRESSIVE_MAGIC_METER, true); - itemTable[RG_PROGRESSIVE_OCARINA] = Item(RG_PROGRESSIVE_OCARINA, ITEMTYPE_ITEM, 0x8B, true, LOGIC_PROGRESSIVE_OCARINA, RHT_PROGRESSIVE_OCARINA, true); - itemTable[RG_PROGRESSIVE_GORONSWORD] = Item(RG_PROGRESSIVE_GORONSWORD, ITEMTYPE_ITEM, 0xD4, true, LOGIC_PROGRESSIVE_GORONSWORD, RHT_PROGRESSIVE_GORONSWORD, true); + itemTable[RG_PROGRESSIVE_HOOKSHOT] = Item(RG_PROGRESSIVE_HOOKSHOT, ITEMTYPE_ITEM, 0x80, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_PROGRESSIVE_HOOKSHOT, true); + itemTable[RG_PROGRESSIVE_STRENGTH] = Item(RG_PROGRESSIVE_STRENGTH, ITEMTYPE_ITEM, 0x81, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_PROGRESSIVE_STRENGTH, true); + itemTable[RG_PROGRESSIVE_BOMB_BAG] = Item(RG_PROGRESSIVE_BOMB_BAG, ITEMTYPE_ITEM, 0x82, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_PROGRESSIVE_BOMB_BAG, true); + itemTable[RG_PROGRESSIVE_BOW] = Item(RG_PROGRESSIVE_BOW, ITEMTYPE_ITEM, 0x83, true, LOGIC_PROGRESSIVE_BOW, RHT_PROGRESSIVE_BOW, true); + itemTable[RG_PROGRESSIVE_SLINGSHOT] = Item(RG_PROGRESSIVE_SLINGSHOT, ITEMTYPE_ITEM, 0x84, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_PROGRESSIVE_SLINGSHOT, true); + itemTable[RG_PROGRESSIVE_WALLET] = Item(RG_PROGRESSIVE_WALLET, ITEMTYPE_ITEM, 0x85, true, LOGIC_PROGRESSIVE_WALLET, RHT_PROGRESSIVE_WALLET, true); + itemTable[RG_PROGRESSIVE_SCALE] = Item(RG_PROGRESSIVE_SCALE, ITEMTYPE_ITEM, 0x86, true, LOGIC_PROGRESSIVE_SCALE, RHT_PROGRESSIVE_SCALE, true); + itemTable[RG_PROGRESSIVE_NUT_BAG] = Item(RG_PROGRESSIVE_NUT_BAG, ITEMTYPE_ITEM, 0x87, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_PROGRESSIVE_NUT_UPGRADE, true); + itemTable[RG_PROGRESSIVE_STICK_BAG] = Item(RG_PROGRESSIVE_STICK_BAG, ITEMTYPE_ITEM, 0x88, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_PROGRESSIVE_STICK_UPGRADE, true); + itemTable[RG_PROGRESSIVE_BOMBCHUS] = Item(RG_PROGRESSIVE_BOMBCHUS, ITEMTYPE_ITEM, 0x89, true, LOGIC_BOMBCHUS, RHT_PROGRESSIVE_BOMBCHUS, true); + itemTable[RG_PROGRESSIVE_MAGIC] = Item(RG_PROGRESSIVE_MAGIC, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_PROGRESSIVE_MAGIC_METER, true); + itemTable[RG_PROGRESSIVE_OCARINA] = Item(RG_PROGRESSIVE_OCARINA, ITEMTYPE_ITEM, 0x8B, true, LOGIC_PROGRESSIVE_OCARINA, RHT_PROGRESSIVE_OCARINA, true); + itemTable[RG_PROGRESSIVE_GORONSWORD] = Item(RG_PROGRESSIVE_GORONSWORD, ITEMTYPE_ITEM, 0xD4, true, LOGIC_PROGRESSIVE_GORONSWORD, RHT_PROGRESSIVE_GORONSWORD, true); // Bottles - itemTable[RG_EMPTY_BOTTLE] = Item(RG_EMPTY_BOTTLE, ITEMTYPE_ITEM, GI_BOTTLE, true, LOGIC_BOTTLES, RHT_EMPTY_BOTTLE, ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOTTLE_WITH_MILK] = Item(RG_BOTTLE_WITH_MILK, ITEMTYPE_ITEM, GI_MILK_BOTTLE, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOTTLE_WITH_RED_POTION] = Item(RG_BOTTLE_WITH_RED_POTION, ITEMTYPE_ITEM, 0x8C, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_RED_POTION, RG_BOTTLE_WITH_RED_POTION, OBJECT_GI_LIQUID, GID_POTION_RED, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_GREEN_POTION] = Item(RG_BOTTLE_WITH_GREEN_POTION,ITEMTYPE_ITEM, 0x8D, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_GREEN_POTION, RG_BOTTLE_WITH_GREEN_POTION, OBJECT_GI_LIQUID, GID_POTION_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_BLUE_POTION] = Item(RG_BOTTLE_WITH_BLUE_POTION, ITEMTYPE_ITEM, 0x8E, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_POTION, RG_BOTTLE_WITH_BLUE_POTION, OBJECT_GI_LIQUID, GID_POTION_BLUE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_FAIRY] = Item(RG_BOTTLE_WITH_FAIRY, ITEMTYPE_ITEM, 0x8F, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FAIRY, RG_BOTTLE_WITH_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_FISH] = Item(RG_BOTTLE_WITH_FISH, ITEMTYPE_ITEM, 0x90, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FISH, RG_BOTTLE_WITH_FISH, OBJECT_GI_FISH, GID_FISH, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_BLUE_FIRE] = Item(RG_BOTTLE_WITH_BLUE_FIRE, ITEMTYPE_ITEM, 0x91, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_FIRE, RG_BOTTLE_WITH_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_BUGS] = Item(RG_BOTTLE_WITH_BUGS, ITEMTYPE_ITEM, 0x92, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BUGS, RG_BOTTLE_WITH_BUGS, OBJECT_GI_INSECT, GID_BUG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_POE] = Item(RG_BOTTLE_WITH_POE, ITEMTYPE_ITEM, 0x94, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_POE, RG_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_RUTOS_LETTER] = Item(RG_RUTOS_LETTER, ITEMTYPE_ITEM, GI_LETTER_RUTO, true, LOGIC_RUTOS_LETTER, RHT_RUTOS_LETTER, ITEM_LETTER_RUTO, OBJECT_GI_BOTTLE_LETTER, GID_LETTER_RUTO, 0x99, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOTTLE_WITH_BIG_POE] = Item(RG_BOTTLE_WITH_BIG_POE, ITEMTYPE_ITEM, 0x93, true, LOGIC_BOTTLE_WITH_BIG_POE, RHT_BOTTLE_WITH_BIG_POE, RG_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_EMPTY_BOTTLE] = Item(RG_EMPTY_BOTTLE, ITEMTYPE_ITEM, GI_BOTTLE, true, LOGIC_BOTTLES, RHT_EMPTY_BOTTLE, ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOTTLE_WITH_MILK] = Item(RG_BOTTLE_WITH_MILK, ITEMTYPE_ITEM, GI_MILK_BOTTLE, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOTTLE_WITH_RED_POTION] = Item(RG_BOTTLE_WITH_RED_POTION, ITEMTYPE_ITEM, 0x8C, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_RED_POTION, OBJECT_GI_LIQUID, GID_POTION_RED, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_GREEN_POTION] = Item(RG_BOTTLE_WITH_GREEN_POTION, ITEMTYPE_ITEM, 0x8D, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_GREEN_POTION, OBJECT_GI_LIQUID, GID_POTION_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_BLUE_POTION] = Item(RG_BOTTLE_WITH_BLUE_POTION, ITEMTYPE_ITEM, 0x8E, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_POTION, OBJECT_GI_LIQUID, GID_POTION_BLUE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_FAIRY] = Item(RG_BOTTLE_WITH_FAIRY, ITEMTYPE_ITEM, 0x8F, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_FISH] = Item(RG_BOTTLE_WITH_FISH, ITEMTYPE_ITEM, 0x90, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FISH, OBJECT_GI_FISH, GID_FISH, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_BLUE_FIRE] = Item(RG_BOTTLE_WITH_BLUE_FIRE, ITEMTYPE_ITEM, 0x91, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_BUGS] = Item(RG_BOTTLE_WITH_BUGS, ITEMTYPE_ITEM, 0x92, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BUGS, OBJECT_GI_INSECT, GID_BUG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_POE] = Item(RG_BOTTLE_WITH_POE, ITEMTYPE_ITEM, 0x94, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_RUTOS_LETTER] = Item(RG_RUTOS_LETTER, ITEMTYPE_ITEM, GI_LETTER_RUTO, true, LOGIC_RUTOS_LETTER, RHT_RUTOS_LETTER, ITEM_LETTER_RUTO, OBJECT_GI_BOTTLE_LETTER, GID_LETTER_RUTO, 0x99, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOTTLE_WITH_BIG_POE] = Item(RG_BOTTLE_WITH_BIG_POE, ITEMTYPE_ITEM, 0x93, true, LOGIC_BOTTLE_WITH_BIG_POE, RHT_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); // Songs - itemTable[RG_ZELDAS_LULLABY] = Item(RG_ZELDAS_LULLABY, ITEMTYPE_SONG, 0xC1, true, LOGIC_ZELDAS_LULLABY, RHT_ZELDAS_LULLABY, ITEM_SONG_LULLABY, OBJECT_GI_MELODY, GID_SONG_ZELDA, 0xD4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_EPONAS_SONG] = Item(RG_EPONAS_SONG, ITEMTYPE_SONG, 0xC2, true, LOGIC_EPONAS_SONG, RHT_EPONAS_SONG, ITEM_SONG_EPONA, OBJECT_GI_MELODY, GID_SONG_EPONA, 0xD2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SARIAS_SONG] = Item(RG_SARIAS_SONG, ITEMTYPE_SONG, 0xC3, true, LOGIC_SARIAS_SONG, RHT_SARIAS_SONG, ITEM_SONG_SARIA, OBJECT_GI_MELODY, GID_SONG_SARIA, 0xD1, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SUNS_SONG] = Item(RG_SUNS_SONG, ITEMTYPE_SONG, 0xC4, true, LOGIC_SUNS_SONG, RHT_SUNS_SONG, ITEM_SONG_SUN, OBJECT_GI_MELODY, GID_SONG_SUN, 0xD3, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SONG_OF_TIME] = Item(RG_SONG_OF_TIME, ITEMTYPE_SONG, 0xC5, true, LOGIC_SONG_OF_TIME, RHT_SONG_OF_TIME, ITEM_SONG_TIME, OBJECT_GI_MELODY, GID_SONG_TIME, 0xD5, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SONG_OF_STORMS] = Item(RG_SONG_OF_STORMS, ITEMTYPE_SONG, 0xC6, true, LOGIC_SONG_OF_STORMS, RHT_SONG_OF_STORMS, ITEM_SONG_STORMS, OBJECT_GI_MELODY, GID_SONG_STORM, 0xD6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MINUET_OF_FOREST] = Item(RG_MINUET_OF_FOREST, ITEMTYPE_SONG, 0xBB, true, LOGIC_MINUET_OF_FOREST, RHT_MINUET_OF_FOREST, ITEM_SONG_MINUET, OBJECT_GI_MELODY, GID_SONG_MINUET, 0x73, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOLERO_OF_FIRE] = Item(RG_BOLERO_OF_FIRE, ITEMTYPE_SONG, 0xBC, true, LOGIC_BOLERO_OF_FIRE, RHT_BOLERO_OF_FIRE, ITEM_SONG_BOLERO, OBJECT_GI_MELODY, GID_SONG_BOLERO, 0x74, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SERENADE_OF_WATER] = Item(RG_SERENADE_OF_WATER, ITEMTYPE_SONG, 0xBD, true, LOGIC_SERENADE_OF_WATER, RHT_SERENADE_OF_WATER, ITEM_SONG_SERENADE, OBJECT_GI_MELODY, GID_SONG_SERENADE, 0x75, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_NOCTURNE_OF_SHADOW] = Item(RG_NOCTURNE_OF_SHADOW, ITEMTYPE_SONG, 0xBF, true, LOGIC_NOCTURNE_OF_SHADOW, RHT_NOCTURNE_OF_SHADOW, ITEM_SONG_NOCTURNE, OBJECT_GI_MELODY, GID_SONG_NOCTURNE, 0x77, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_REQUIEM_OF_SPIRIT] = Item(RG_REQUIEM_OF_SPIRIT, ITEMTYPE_SONG, 0xBE, true, LOGIC_REQUIEM_OF_SPIRIT, RHT_REQUIEM_OF_SPIRIT, ITEM_SONG_REQUIEM, OBJECT_GI_MELODY, GID_SONG_REQUIEM, 0x76, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_PRELUDE_OF_LIGHT] = Item(RG_PRELUDE_OF_LIGHT, ITEMTYPE_SONG, 0xC0, true, LOGIC_PRELUDE_OF_LIGHT, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ZELDAS_LULLABY] = Item(RG_ZELDAS_LULLABY, ITEMTYPE_SONG, 0xC1, true, LOGIC_ZELDAS_LULLABY, RHT_ZELDAS_LULLABY, ITEM_SONG_LULLABY, OBJECT_GI_MELODY, GID_SONG_ZELDA, 0xD4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_EPONAS_SONG] = Item(RG_EPONAS_SONG, ITEMTYPE_SONG, 0xC2, true, LOGIC_EPONAS_SONG, RHT_EPONAS_SONG, ITEM_SONG_EPONA, OBJECT_GI_MELODY, GID_SONG_EPONA, 0xD2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SARIAS_SONG] = Item(RG_SARIAS_SONG, ITEMTYPE_SONG, 0xC3, true, LOGIC_SARIAS_SONG, RHT_SARIAS_SONG, ITEM_SONG_SARIA, OBJECT_GI_MELODY, GID_SONG_SARIA, 0xD1, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SUNS_SONG] = Item(RG_SUNS_SONG, ITEMTYPE_SONG, 0xC4, true, LOGIC_SUNS_SONG, RHT_SUNS_SONG, ITEM_SONG_SUN, OBJECT_GI_MELODY, GID_SONG_SUN, 0xD3, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SONG_OF_TIME] = Item(RG_SONG_OF_TIME, ITEMTYPE_SONG, 0xC5, true, LOGIC_SONG_OF_TIME, RHT_SONG_OF_TIME, ITEM_SONG_TIME, OBJECT_GI_MELODY, GID_SONG_TIME, 0xD5, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SONG_OF_STORMS] = Item(RG_SONG_OF_STORMS, ITEMTYPE_SONG, 0xC6, true, LOGIC_SONG_OF_STORMS, RHT_SONG_OF_STORMS, ITEM_SONG_STORMS, OBJECT_GI_MELODY, GID_SONG_STORM, 0xD6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MINUET_OF_FOREST] = Item(RG_MINUET_OF_FOREST, ITEMTYPE_SONG, 0xBB, true, LOGIC_MINUET_OF_FOREST, RHT_MINUET_OF_FOREST, ITEM_SONG_MINUET, OBJECT_GI_MELODY, GID_SONG_MINUET, 0x73, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOLERO_OF_FIRE] = Item(RG_BOLERO_OF_FIRE, ITEMTYPE_SONG, 0xBC, true, LOGIC_BOLERO_OF_FIRE, RHT_BOLERO_OF_FIRE, ITEM_SONG_BOLERO, OBJECT_GI_MELODY, GID_SONG_BOLERO, 0x74, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SERENADE_OF_WATER] = Item(RG_SERENADE_OF_WATER, ITEMTYPE_SONG, 0xBD, true, LOGIC_SERENADE_OF_WATER, RHT_SERENADE_OF_WATER, ITEM_SONG_SERENADE, OBJECT_GI_MELODY, GID_SONG_SERENADE, 0x75, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_NOCTURNE_OF_SHADOW] = Item(RG_NOCTURNE_OF_SHADOW, ITEMTYPE_SONG, 0xBF, true, LOGIC_NOCTURNE_OF_SHADOW, RHT_NOCTURNE_OF_SHADOW, ITEM_SONG_NOCTURNE, OBJECT_GI_MELODY, GID_SONG_NOCTURNE, 0x77, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_REQUIEM_OF_SPIRIT] = Item(RG_REQUIEM_OF_SPIRIT, ITEMTYPE_SONG, 0xBE, true, LOGIC_REQUIEM_OF_SPIRIT, RHT_REQUIEM_OF_SPIRIT, ITEM_SONG_REQUIEM, OBJECT_GI_MELODY, GID_SONG_REQUIEM, 0x76, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_PRELUDE_OF_LIGHT] = Item(RG_PRELUDE_OF_LIGHT, ITEMTYPE_SONG, 0xC0, true, LOGIC_PRELUDE_OF_LIGHT, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Maps and Compasses - itemTable[RG_DEKU_TREE_MAP] = Item(RG_DEKU_TREE_MAP, ITEMTYPE_MAP, 0xA5, false, LOGIC_MAP_DEKU_TREE, RHT_DEKU_TREE_MAP, RG_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DEKU_TREE_MAP] = Item(RG_DEKU_TREE_MAP, ITEMTYPE_MAP, 0xA5, false, LOGIC_MAP_DEKU_TREE, RHT_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DEKU_TREE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_DODONGOS_CAVERN_MAP] = Item(RG_DODONGOS_CAVERN_MAP, ITEMTYPE_MAP, 0xA6, false, LOGIC_MAP_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_MAP, RG_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DODONGOS_CAVERN_MAP] = Item(RG_DODONGOS_CAVERN_MAP, ITEMTYPE_MAP, 0xA6, false, LOGIC_MAP_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DODONGOS_CAVERN_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_JABU_JABUS_BELLY_MAP] = Item(RG_JABU_JABUS_BELLY_MAP, ITEMTYPE_MAP, 0xA7, false, LOGIC_MAP_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_MAP, RG_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_JABU_JABUS_BELLY_MAP] = Item(RG_JABU_JABUS_BELLY_MAP, ITEMTYPE_MAP, 0xA7, false, LOGIC_MAP_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_JABU_JABUS_BELLY_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_FOREST_TEMPLE_MAP] = Item(RG_FOREST_TEMPLE_MAP, ITEMTYPE_MAP, 0xA8, false, LOGIC_MAP_FOREST_TEMPLE, RHT_FOREST_TEMPLE_MAP, RG_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_MAP] = Item(RG_FOREST_TEMPLE_MAP, ITEMTYPE_MAP, 0xA8, false, LOGIC_MAP_FOREST_TEMPLE, RHT_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_FIRE_TEMPLE_MAP] = Item(RG_FIRE_TEMPLE_MAP, ITEMTYPE_MAP, 0xA9, false, LOGIC_MAP_FIRE_TEMPLE, RHT_FIRE_TEMPLE_MAP, RG_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_MAP] = Item(RG_FIRE_TEMPLE_MAP, ITEMTYPE_MAP, 0xA9, false, LOGIC_MAP_FIRE_TEMPLE, RHT_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_WATER_TEMPLE_MAP] = Item(RG_WATER_TEMPLE_MAP, ITEMTYPE_MAP, 0xAA, false, LOGIC_MAP_WATER_TEMPLE, RHT_WATER_TEMPLE_MAP, RG_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_MAP] = Item(RG_WATER_TEMPLE_MAP, ITEMTYPE_MAP, 0xAA, false, LOGIC_MAP_WATER_TEMPLE, RHT_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_SPIRIT_TEMPLE_MAP] = Item(RG_SPIRIT_TEMPLE_MAP, ITEMTYPE_MAP, 0xAB, false, LOGIC_MAP_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_MAP, RG_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_MAP] = Item(RG_SPIRIT_TEMPLE_MAP, ITEMTYPE_MAP, 0xAB, false, LOGIC_MAP_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_SHADOW_TEMPLE_MAP] = Item(RG_SHADOW_TEMPLE_MAP, ITEMTYPE_MAP, 0xAC, false, LOGIC_MAP_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_MAP, RG_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_MAP] = Item(RG_SHADOW_TEMPLE_MAP, ITEMTYPE_MAP, 0xAC, false, LOGIC_MAP_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_BOTW_MAP] = Item(RG_BOTW_MAP, ITEMTYPE_MAP, 0xAD, false, LOGIC_MAP_BOTW, RHT_BOTW_MAP, RG_BOTW_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOTW_MAP] = Item(RG_BOTW_MAP, ITEMTYPE_MAP, 0xAD, false, LOGIC_MAP_BOTW, RHT_BOTW_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_BOTW_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_ICE_CAVERN_MAP] = Item(RG_ICE_CAVERN_MAP, ITEMTYPE_MAP, 0xAE, false, LOGIC_MAP_ICE_CAVERN, RHT_ICE_CAVERN_MAP, RG_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_ICE_CAVERN_MAP] = Item(RG_ICE_CAVERN_MAP, ITEMTYPE_MAP, 0xAE, false, LOGIC_MAP_ICE_CAVERN, RHT_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_ICE_CAVERN_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_DEKU_TREE_COMPASS] = Item(RG_DEKU_TREE_COMPASS, ITEMTYPE_COMPASS, 0x9B, false, LOGIC_COMPASS_DEKU_TREE, RHT_DEKU_TREE_COMPASS, RG_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DEKU_TREE_COMPASS] = Item(RG_DEKU_TREE_COMPASS, ITEMTYPE_COMPASS, 0x9B, false, LOGIC_COMPASS_DEKU_TREE, RHT_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DEKU_TREE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_DODONGOS_CAVERN_COMPASS] = Item(RG_DODONGOS_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0x9C, false, LOGIC_COMPASS_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_COMPASS, RG_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DODONGOS_CAVERN_COMPASS] = Item(RG_DODONGOS_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0x9C, false, LOGIC_COMPASS_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DODONGOS_CAVERN_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_JABU_JABUS_BELLY_COMPASS] = Item(RG_JABU_JABUS_BELLY_COMPASS,ITEMTYPE_COMPASS, 0x9D, false, LOGIC_COMPASS_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_COMPASS, RG_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_JABU_JABUS_BELLY_COMPASS] = Item(RG_JABU_JABUS_BELLY_COMPASS, ITEMTYPE_COMPASS, 0x9D, false, LOGIC_COMPASS_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_JABU_JABUS_BELLY_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_FOREST_TEMPLE_COMPASS] = Item(RG_FOREST_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9E, false, LOGIC_COMPASS_FOREST_TEMPLE, RHT_FOREST_TEMPLE_COMPASS, RG_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_COMPASS] = Item(RG_FOREST_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9E, false, LOGIC_COMPASS_FOREST_TEMPLE, RHT_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_FIRE_TEMPLE_COMPASS] = Item(RG_FIRE_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9F, false, LOGIC_COMPASS_FIRE_TEMPLE, RHT_FIRE_TEMPLE_COMPASS, RG_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_COMPASS] = Item(RG_FIRE_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9F, false, LOGIC_COMPASS_FIRE_TEMPLE, RHT_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_WATER_TEMPLE_COMPASS] = Item(RG_WATER_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA0, false, LOGIC_COMPASS_WATER_TEMPLE, RHT_WATER_TEMPLE_COMPASS, RG_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_COMPASS] = Item(RG_WATER_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA0, false, LOGIC_COMPASS_WATER_TEMPLE, RHT_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_SPIRIT_TEMPLE_COMPASS] = Item(RG_SPIRIT_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA1, false, LOGIC_COMPASS_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_COMPASS, RG_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_COMPASS] = Item(RG_SPIRIT_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA1, false, LOGIC_COMPASS_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_SHADOW_TEMPLE_COMPASS] = Item(RG_SHADOW_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA2, false, LOGIC_COMPASS_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_COMPASS, RG_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_COMPASS] = Item(RG_SHADOW_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA2, false, LOGIC_COMPASS_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_BOTW_COMPASS] = Item(RG_BOTW_COMPASS, ITEMTYPE_COMPASS, 0xA3, false, LOGIC_COMPASS_BOTW, RHT_BOTW_COMPASS, RG_BOTW_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOTW_COMPASS] = Item(RG_BOTW_COMPASS, ITEMTYPE_COMPASS, 0xA3, false, LOGIC_COMPASS_BOTW, RHT_BOTW_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_BOTW_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_ICE_CAVERN_COMPASS] = Item(RG_ICE_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0xA4, false, LOGIC_COMPASS_ICE_CAVERN, RHT_ICE_CAVERN_COMPASS, RG_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_ICE_CAVERN_COMPASS] = Item(RG_ICE_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0xA4, false, LOGIC_COMPASS_ICE_CAVERN, RHT_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_ICE_CAVERN_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); // Boss Keys - itemTable[RG_FOREST_TEMPLE_BOSS_KEY] = Item(RG_FOREST_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x95, true, LOGIC_BOSS_KEY_FOREST_TEMPLE, RHT_FOREST_TEMPLE_BOSS_KEY, RG_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_BOSS_KEY] = Item(RG_FOREST_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x95, true, LOGIC_BOSS_KEY_FOREST_TEMPLE, RHT_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_FIRE_TEMPLE_BOSS_KEY] = Item(RG_FIRE_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x96, true, LOGIC_BOSS_KEY_FIRE_TEMPLE, RHT_FIRE_TEMPLE_BOSS_KEY, RG_FIRE_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_BOSS_KEY] = Item(RG_FIRE_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x96, true, LOGIC_BOSS_KEY_FIRE_TEMPLE, RHT_FIRE_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_WATER_TEMPLE_BOSS_KEY] = Item(RG_WATER_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x97, true, LOGIC_BOSS_KEY_WATER_TEMPLE, RHT_WATER_TEMPLE_BOSS_KEY, RG_WATER_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_BOSS_KEY] = Item(RG_WATER_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x97, true, LOGIC_BOSS_KEY_WATER_TEMPLE, RHT_WATER_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY] = Item(RG_SPIRIT_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x98, true, LOGIC_BOSS_KEY_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_BOSS_KEY, RG_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY] = Item(RG_SPIRIT_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x98, true, LOGIC_BOSS_KEY_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_SHADOW_TEMPLE_BOSS_KEY] = Item( RG_SHADOW_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x99, true, LOGIC_BOSS_KEY_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_BOSS_KEY, RG_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_BOSS_KEY] = Item( RG_SHADOW_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x99, true, LOGIC_BOSS_KEY_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_GANONS_CASTLE_BOSS_KEY] = Item(RG_GANONS_CASTLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x9A, true, LOGIC_BOSS_KEY_GANONS_CASTLE, RHT_GANONS_CASTLE_BOSS_KEY, RG_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_GANONS_CASTLE_BOSS_KEY] = Item(RG_GANONS_CASTLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x9A, true, LOGIC_BOSS_KEY_GANONS_CASTLE, RHT_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_FOREST_TEMPLE_SMALL_KEY] = Item(RG_FOREST_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xAF, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_SMALL_KEY, RG_FOREST_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_SMALL_KEY] = Item(RG_FOREST_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xAF, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_FIRE_TEMPLE_SMALL_KEY] = Item(RG_FIRE_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB0, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_SMALL_KEY, RG_FIRE_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_SMALL_KEY] = Item(RG_FIRE_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB0, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_WATER_TEMPLE_SMALL_KEY] = Item(RG_WATER_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB1, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_SMALL_KEY, RG_WATER_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_SMALL_KEY] = Item(RG_WATER_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB1, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_SPIRIT_TEMPLE_SMALL_KEY] = Item(RG_SPIRIT_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB2, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_SMALL_KEY, RG_SPIRIT_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_SMALL_KEY] = Item(RG_SPIRIT_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB2, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_SHADOW_TEMPLE_SMALL_KEY] = Item(RG_SHADOW_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB3, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_SMALL_KEY, RG_SHADOW_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_SMALL_KEY] = Item(RG_SHADOW_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB3, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_BOTW_SMALL_KEY] = Item(RG_BOTW_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB4, true, LOGIC_BOTW_KEYS, RHT_BOTW_SMALL_KEY, RG_BOTW_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOTW_SMALL_KEY] = Item(RG_BOTW_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB4, true, LOGIC_BOTW_KEYS, RHT_BOTW_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOTW_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_GTG_SMALL_KEY] = Item(RG_GTG_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB5, true, LOGIC_GTG_KEYS, RHT_GTG_SMALL_KEY, RG_GTG_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_GTG_SMALL_KEY] = Item(RG_GTG_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB5, true, LOGIC_GTG_KEYS, RHT_GTG_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GTG_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_TH_SMALL_KEY] = Item(RG_TH_SMALL_KEY, ITEMTYPE_TH_SMALLKEY, 0xB6, true, LOGIC_GERUDO_FORTRESS_KEYS, RHT_GERUDO_FORTRESS_SMALL_KEY, RG_TH_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_TH_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_GANONS_CASTLE_SMALL_KEY] = Item(RG_GANONS_CASTLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB7, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_SMALL_KEY, RG_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_HIDEOUT_SMALL_KEY] = Item(RG_HIDEOUT_SMALL_KEY, ITEMTYPE_HIDEOUT_KEY, 0xB6, true, LOGIC_HIDEOUT_KEYS, RHT_HIDEOUT_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_HIDEOUT_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); + itemTable[RG_GANONS_CASTLE_SMALL_KEY] = Item(RG_GANONS_CASTLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB7, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_TREASURE_GAME_SMALL_KEY] = Item(RG_TREASURE_GAME_SMALL_KEY, ITEMTYPE_SMALLKEY, GI_DOOR_KEY, true, LOGIC_TCG_KEYS, RHT_TCG_SMALL_KEY, ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0xF3, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_NONE); - itemTable[RG_GUARD_HOUSE_KEY] = Item(RG_GUARD_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_GUARD_HOUSE_KEY, RHT_GUARD_HOUSE_KEY, RG_GUARD_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_TCG_SMALL_KEY] = Item(RG_TCG_SMALL_KEY, ITEMTYPE_SMALLKEY, GI_DOOR_KEY, true, LOGIC_TCG_KEYS, RHT_TCG_SMALL_KEY, ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0xF3, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_NONE); + itemTable[RG_TCG_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); + itemTable[RG_GUARD_HOUSE_KEY] = Item(RG_GUARD_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_GUARD_HOUSE_KEY, RHT_GUARD_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GUARD_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_MARKET_BAZAAR_KEY] = Item(RG_MARKET_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_BAZAAR_KEY, RHT_MARKET_BAZAAR_KEY, RG_MARKET_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_MARKET_BAZAAR_KEY] = Item(RG_MARKET_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_BAZAAR_KEY, RHT_MARKET_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_MARKET_BAZAAR_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_MARKET_POTION_SHOP_KEY] = Item(RG_MARKET_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_POTION_SHOP_KEY, RHT_MARKET_POTION_SHOP_KEY, RG_MARKET_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_MARKET_POTION_SHOP_KEY] = Item(RG_MARKET_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_POTION_SHOP_KEY, RHT_MARKET_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_MARKET_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_MASK_SHOP_KEY] = Item(RG_MASK_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MASK_SHOP_KEY, RHT_MASK_SHOP_KEY, RG_MASK_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_MASK_SHOP_KEY] = Item(RG_MASK_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MASK_SHOP_KEY, RHT_MASK_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_MASK_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_MARKET_SHOOTING_KEY] = Item(RG_MARKET_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_SHOOTING_GALLERY_KEY, RHT_MARKET_SHOOTING_KEY, RG_MARKET_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_MARKET_SHOOTING_KEY] = Item(RG_MARKET_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_SHOOTING_KEY, RHT_MARKET_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_MARKET_SHOOTING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_BOMBCHU_BOWLING_KEY] = Item(RG_BOMBCHU_BOWLING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOMBCHU_BOWLING_KEY, RHT_BOMBCHU_BOWLING_KEY, RG_BOMBCHU_BOWLING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOMBCHU_BOWLING_KEY] = Item(RG_BOMBCHU_BOWLING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOMBCHU_BOWLING_KEY, RHT_BOMBCHU_BOWLING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOMBCHU_BOWLING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_TCG_BUILDING_KEY] = Item(RG_TCG_BUILDING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_TCG_BUILDING_KEY, RHT_TCG_BUILDING_KEY, RG_TCG_BUILDING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_TCG_BUILDING_KEY] = Item(RG_TCG_BUILDING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_TCG_BUILDING_KEY, RHT_TCG_BUILDING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_TCG_BUILDING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_BOMBCHU_SHOP_KEY] = Item(RG_BOMBCHU_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOMBCHU_SHOP_KEY, RHT_BOMBCHU_SHOP_KEY, RG_BOMBCHU_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOMBCHU_SHOP_KEY] = Item(RG_BOMBCHU_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOMBCHU_SHOP_KEY, RHT_BOMBCHU_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOMBCHU_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_RICHARDS_HOUSE_KEY] = Item(RG_RICHARDS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_RICHARDS_HOUSE_KEY, RHT_RICHARDS_HOUSE_KEY, RG_RICHARDS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_RICHARDS_HOUSE_KEY] = Item(RG_RICHARDS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_RICHARDS_HOUSE_KEY, RHT_RICHARDS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_RICHARDS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_ALLEY_HOUSE_KEY] = Item(RG_ALLEY_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_ALLEY_HOUSE_KEY, RHT_ALLEY_HOUSE_KEY, RG_ALLEY_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_ALLEY_HOUSE_KEY] = Item(RG_ALLEY_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_ALLEY_HOUSE_KEY, RHT_ALLEY_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_ALLEY_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_KAK_BAZAAR_KEY] = Item(RG_KAK_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_BAZAAR_KEY, RHT_KAK_BAZAAR_KEY, RG_KAK_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_KAK_BAZAAR_KEY] = Item(RG_KAK_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_BAZAAR_KEY, RHT_KAK_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_KAK_BAZAAR_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_KAK_POTION_SHOP_KEY] = Item(RG_KAK_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_POTION_SHOP_KEY, RHT_KAK_POTION_SHOP_KEY, RG_KAK_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_KAK_POTION_SHOP_KEY] = Item(RG_KAK_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_POTION_SHOP_KEY, RHT_KAK_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_KAK_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_BOSS_HOUSE_KEY] = Item(RG_BOSS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOSS_HOUSE_KEY, RHT_BOSS_HOUSE_KEY, RG_BOSS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOSS_HOUSE_KEY] = Item(RG_BOSS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOSS_HOUSE_KEY, RHT_BOSS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOSS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_GRANNYS_POTION_SHOP_KEY] = Item(RG_GRANNYS_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_GRANNYS_POTION_SHOP_KEY, RHT_GRANNYS_POTION_SHOP_KEY, RG_GRANNYS_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_GRANNYS_POTION_SHOP_KEY] = Item(RG_GRANNYS_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_GRANNYS_POTION_SHOP_KEY, RHT_GRANNYS_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GRANNYS_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_SKULLTULA_HOUSE_KEY] = Item(RG_SKULLTULA_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_SKULLTULA_HOUSE_KEY, RHT_SKULLTULA_HOUSE_KEY, RG_SKULLTULA_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SKULLTULA_HOUSE_KEY] = Item(RG_SKULLTULA_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_SKULLTULA_HOUSE_KEY, RHT_SKULLTULA_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SKULLTULA_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_IMPAS_HOUSE_KEY] = Item(RG_IMPAS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_IMPAS_HOUSE_KEY, RHT_IMPAS_HOUSE_KEY, RG_IMPAS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_IMPAS_HOUSE_KEY] = Item(RG_IMPAS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_IMPAS_HOUSE_KEY, RHT_IMPAS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_IMPAS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_WINDMILL_KEY] = Item(RG_WINDMILL_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_WINDMILL_KEY, RHT_WINDMILL_KEY, RG_WINDMILL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_WINDMILL_KEY] = Item(RG_WINDMILL_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_WINDMILL_KEY, RHT_WINDMILL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_WINDMILL_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_KAK_SHOOTING_KEY] = Item(RG_KAK_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_SHOOTING_GALLERY_KEY, RHT_KAK_SHOOTING_KEY, RG_KAK_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_KAK_SHOOTING_KEY] = Item(RG_KAK_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_SHOOTING_KEY, RHT_KAK_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_KAK_SHOOTING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_DAMPES_HUT_KEY] = Item(RG_DAMPES_HUT_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_DAMPES_HUT_KEY, RHT_DAMPES_HUT_KEY, RG_DAMPES_HUT_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_DAMPES_HUT_KEY] = Item(RG_DAMPES_HUT_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_DAMPES_HUT_KEY, RHT_DAMPES_HUT_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_DAMPES_HUT_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_TALONS_HOUSE_KEY] = Item(RG_TALONS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_TALONS_HOUSE_KEY, RHT_TALONS_HOUSE_KEY, RG_TALONS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_TALONS_HOUSE_KEY] = Item(RG_TALONS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_TALONS_HOUSE_KEY, RHT_TALONS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_TALONS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_STABLES_KEY] = Item(RG_STABLES_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_STABLES_KEY, RHT_STABLES_KEY, RG_STABLES_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_STABLES_KEY] = Item(RG_STABLES_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_STABLES_KEY, RHT_STABLES_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_STABLES_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_BACK_TOWER_KEY] = Item(RG_BACK_TOWER_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BACK_TOWER_KEY, RHT_BACK_TOWER_KEY, RG_BACK_TOWER_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BACK_TOWER_KEY] = Item(RG_BACK_TOWER_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BACK_TOWER_KEY, RHT_BACK_TOWER_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BACK_TOWER_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_HYLIA_LAB_KEY] = Item(RG_HYLIA_LAB_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_HYLIA_LAB_KEY, RHT_HYLIA_LAB_KEY, RG_HYLIA_LAB_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_HYLIA_LAB_KEY] = Item(RG_HYLIA_LAB_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_HYLIA_LAB_KEY, RHT_HYLIA_LAB_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_HYLIA_LAB_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_FISHING_HOLE_KEY] = Item(RG_FISHING_HOLE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_FISHING_HOLE_KEY, RHT_FISHING_HOLE_KEY, RG_FISHING_HOLE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FISHING_HOLE_KEY] = Item(RG_FISHING_HOLE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_FISHING_HOLE_KEY, RHT_FISHING_HOLE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FISHING_HOLE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); // Key Rings - itemTable[RG_FOREST_TEMPLE_KEY_RING] = Item(RG_FOREST_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD5, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_KEY_RING, RG_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_KEY_RING] = Item(RG_FOREST_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD5, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_FIRE_TEMPLE_KEY_RING] = Item(RG_FIRE_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD6, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_KEY_RING, RG_FIRE_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_KEY_RING] = Item(RG_FIRE_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD6, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_WATER_TEMPLE_KEY_RING] = Item(RG_WATER_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD7, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_KEY_RING, RG_WATER_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_KEY_RING] = Item(RG_WATER_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD7, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_SPIRIT_TEMPLE_KEY_RING] = Item(RG_SPIRIT_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD8, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_KEY_RING, RG_SPIRIT_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_KEY_RING] = Item(RG_SPIRIT_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD8, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_SHADOW_TEMPLE_KEY_RING] = Item(RG_SHADOW_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD9, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_KEY_RING, RG_SHADOW_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_KEY_RING] = Item(RG_SHADOW_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD9, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_BOTW_KEY_RING] = Item(RG_BOTW_KEY_RING, ITEMTYPE_SMALLKEY, 0xDA, true, LOGIC_BOTW_KEYS, RHT_BOTW_KEY_RING, RG_BOTW_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOTW_KEY_RING] = Item(RG_BOTW_KEY_RING, ITEMTYPE_SMALLKEY, 0xDA, true, LOGIC_BOTW_KEYS, RHT_BOTW_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOTW_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_GTG_KEY_RING] = Item(RG_GTG_KEY_RING, ITEMTYPE_SMALLKEY, 0xDB, true, LOGIC_GTG_KEYS, RHT_GTG_KEY_RING, RG_GTG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_GTG_KEY_RING] = Item(RG_GTG_KEY_RING, ITEMTYPE_SMALLKEY, 0xDB, true, LOGIC_GTG_KEYS, RHT_GTG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GTG_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_TH_KEY_RING] = Item(RG_TH_KEY_RING, ITEMTYPE_TH_SMALLKEY, 0xDC, true, LOGIC_GERUDO_FORTRESS_KEYS, RHT_GERUDO_FORTRESS_KEY_RING, RG_TH_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_TH_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_GANONS_CASTLE_KEY_RING] = Item(RG_GANONS_CASTLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xDD, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_KEY_RING, RG_GANONS_CASTLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_HIDEOUT_KEY_RING] = Item(RG_HIDEOUT_KEY_RING, ITEMTYPE_HIDEOUT_KEY, 0xDC, true, LOGIC_HIDEOUT_KEYS, RHT_HIDEOUT_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_HIDEOUT_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); + itemTable[RG_GANONS_CASTLE_KEY_RING] = Item(RG_GANONS_CASTLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xDD, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_TREASURE_GAME_KEY_RING] = Item(RG_TREASURE_GAME_KEY_RING, ITEMTYPE_SMALLKEY, 0xDE, true, LOGIC_TCG_KEYS, RHT_TCG_KEY_RING, RG_TREASURE_GAME_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_TREASURE_GAME_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); + itemTable[RG_TCG_KEY_RING] = Item(RG_TCG_KEY_RING, ITEMTYPE_SMALLKEY, 0xDE, true, LOGIC_TCG_KEYS, RHT_TCG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_TCG_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); // Dungeon Rewards - itemTable[RG_KOKIRI_EMERALD] = Item(RG_KOKIRI_EMERALD, ITEMTYPE_DUNGEONREWARD, 0xCB, true, LOGIC_KOKIRI_EMERALD, RHT_KOKIRI_EMERALD, ITEM_KOKIRI_EMERALD, OBJECT_GI_JEWEL, GID_KOKIRI_EMERALD, 0x80, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GORON_RUBY] = Item(RG_GORON_RUBY, ITEMTYPE_DUNGEONREWARD, 0xCC, true, LOGIC_GORON_RUBY, RHT_GORON_RUBY, ITEM_GORON_RUBY, OBJECT_GI_JEWEL, GID_GORON_RUBY, 0x81, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ZORA_SAPPHIRE] = Item(RG_ZORA_SAPPHIRE, ITEMTYPE_DUNGEONREWARD, 0xCD, true, LOGIC_ZORA_SAPPHIRE, RHT_ZORA_SAPPHIRE, ITEM_ZORA_SAPPHIRE, OBJECT_GI_JEWEL, GID_ZORA_SAPPHIRE, 0x82, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FOREST_MEDALLION] = Item(RG_FOREST_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCE, true, LOGIC_FOREST_MEDALLION, RHT_FOREST_MEDALLION, ITEM_MEDALLION_FOREST, OBJECT_GI_MEDAL, GID_MEDALLION_FOREST, 0x3E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FIRE_MEDALLION] = Item(RG_FIRE_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCF, true, LOGIC_FIRE_MEDALLION, RHT_FIRE_MEDALLION, ITEM_MEDALLION_FIRE, OBJECT_GI_MEDAL, GID_MEDALLION_FIRE, 0x3C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_WATER_MEDALLION] = Item(RG_WATER_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD0, true, LOGIC_WATER_MEDALLION, RHT_WATER_MEDALLION, ITEM_MEDALLION_WATER, OBJECT_GI_MEDAL, GID_MEDALLION_WATER, 0x3D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SPIRIT_MEDALLION] = Item(RG_SPIRIT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD1, true, LOGIC_SPIRIT_MEDALLION, RHT_SPIRIT_MEDALLION, ITEM_MEDALLION_SPIRIT, OBJECT_GI_MEDAL, GID_MEDALLION_SPIRIT, 0x3F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SHADOW_MEDALLION] = Item(RG_SHADOW_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD2, true, LOGIC_SHADOW_MEDALLION, RHT_SHADOW_MEDALLION, ITEM_MEDALLION_SHADOW, OBJECT_GI_MEDAL, GID_MEDALLION_SHADOW, 0x41, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LIGHT_MEDALLION] = Item(RG_LIGHT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD3, true, LOGIC_LIGHT_MEDALLION, RHT_LIGHT_MEDALLION, ITEM_MEDALLION_LIGHT, OBJECT_GI_MEDAL, GID_MEDALLION_LIGHT, 0x40, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_KOKIRI_EMERALD] = Item(RG_KOKIRI_EMERALD, ITEMTYPE_DUNGEONREWARD, 0xCB, true, LOGIC_KOKIRI_EMERALD, RHT_KOKIRI_EMERALD, ITEM_KOKIRI_EMERALD, OBJECT_GI_JEWEL, GID_KOKIRI_EMERALD, 0x80, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GORON_RUBY] = Item(RG_GORON_RUBY, ITEMTYPE_DUNGEONREWARD, 0xCC, true, LOGIC_GORON_RUBY, RHT_GORON_RUBY, ITEM_GORON_RUBY, OBJECT_GI_JEWEL, GID_GORON_RUBY, 0x81, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ZORA_SAPPHIRE] = Item(RG_ZORA_SAPPHIRE, ITEMTYPE_DUNGEONREWARD, 0xCD, true, LOGIC_ZORA_SAPPHIRE, RHT_ZORA_SAPPHIRE, ITEM_ZORA_SAPPHIRE, OBJECT_GI_JEWEL, GID_ZORA_SAPPHIRE, 0x82, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FOREST_MEDALLION] = Item(RG_FOREST_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCE, true, LOGIC_FOREST_MEDALLION, RHT_FOREST_MEDALLION, ITEM_MEDALLION_FOREST, OBJECT_GI_MEDAL, GID_MEDALLION_FOREST, 0x3E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FIRE_MEDALLION] = Item(RG_FIRE_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCF, true, LOGIC_FIRE_MEDALLION, RHT_FIRE_MEDALLION, ITEM_MEDALLION_FIRE, OBJECT_GI_MEDAL, GID_MEDALLION_FIRE, 0x3C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_WATER_MEDALLION] = Item(RG_WATER_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD0, true, LOGIC_WATER_MEDALLION, RHT_WATER_MEDALLION, ITEM_MEDALLION_WATER, OBJECT_GI_MEDAL, GID_MEDALLION_WATER, 0x3D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SPIRIT_MEDALLION] = Item(RG_SPIRIT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD1, true, LOGIC_SPIRIT_MEDALLION, RHT_SPIRIT_MEDALLION, ITEM_MEDALLION_SPIRIT, OBJECT_GI_MEDAL, GID_MEDALLION_SPIRIT, 0x3F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SHADOW_MEDALLION] = Item(RG_SHADOW_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD2, true, LOGIC_SHADOW_MEDALLION, RHT_SHADOW_MEDALLION, ITEM_MEDALLION_SHADOW, OBJECT_GI_MEDAL, GID_MEDALLION_SHADOW, 0x41, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_LIGHT_MEDALLION] = Item(RG_LIGHT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD3, true, LOGIC_LIGHT_MEDALLION, RHT_LIGHT_MEDALLION, ITEM_MEDALLION_LIGHT, OBJECT_GI_MEDAL, GID_MEDALLION_LIGHT, 0x40, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Generic Items - itemTable[RG_RECOVERY_HEART] = Item(RG_RECOVERY_HEART, ITEMTYPE_ITEM, GI_HEART, false, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_GREEN_RUPEE] = Item(RG_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_GREG_RUPEE] = Item(RG_GREG_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, true, LOGIC_GREG, RHT_GREG_RUPEE, RG_GREG_RUPEE, OBJECT_GI_RUPY, GID_RUPEE_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BLUE_RUPEE] = Item(RG_BLUE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_BLUE, false, LOGIC_NONE, RHT_BLUE_RUPEE, ITEM_RUPEE_BLUE, OBJECT_GI_RUPY, GID_RUPEE_BLUE, 0xCC, 0x01, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_RED_RUPEE] = Item(RG_RED_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_RED, false, LOGIC_NONE, RHT_RED_RUPEE, ITEM_RUPEE_RED, OBJECT_GI_RUPY, GID_RUPEE_RED, 0xF0, 0x02, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_PURPLE_RUPEE] = Item(RG_PURPLE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_PURPLE, false, LOGIC_NONE, RHT_PURPLE_RUPEE, ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_HUGE_RUPEE] = Item(RG_HUGE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GOLD, false, LOGIC_NONE, RHT_HUGE_RUPEE, ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_PIECE_OF_HEART] = Item(RG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE, true, LOGIC_PIECE_OF_HEART, RHT_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_HEART_CONTAINER] = Item(RG_HEART_CONTAINER, ITEMTYPE_ITEM, GI_HEART_CONTAINER_2, true, LOGIC_HEART_CONTAINER, RHT_HEART_CONTAINER, ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_ICE_TRAP] = Item(RG_ICE_TRAP, ITEMTYPE_ITEM, RG_ICE_TRAP, false, LOGIC_NONE, RHT_ICE_TRAP, RG_ICE_TRAP, OBJECT_GI_RUPY, GID_RUPEE_GOLD, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_MILK] = Item(RG_MILK, ITEMTYPE_ITEM, GI_MILK, false, LOGIC_NONE, RHT_MILK, ITEM_MILK, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_FISH] = Item(RG_FISH, ITEMTYPE_ITEM, GI_FISH, false, LOGIC_NONE, RHT_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_RECOVERY_HEART] = Item(RG_RECOVERY_HEART, ITEMTYPE_ITEM, GI_HEART, false, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_GREEN_RUPEE] = Item(RG_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_GREG_RUPEE] = Item(RG_GREG_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, true, LOGIC_GREG, RHT_GREG_RUPEE, OBJECT_GI_RUPY, GID_RUPEE_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BLUE_RUPEE] = Item(RG_BLUE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_BLUE, false, LOGIC_NONE, RHT_BLUE_RUPEE, ITEM_RUPEE_BLUE, OBJECT_GI_RUPY, GID_RUPEE_BLUE, 0xCC, 0x01, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_RED_RUPEE] = Item(RG_RED_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_RED, false, LOGIC_NONE, RHT_RED_RUPEE, ITEM_RUPEE_RED, OBJECT_GI_RUPY, GID_RUPEE_RED, 0xF0, 0x02, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_PURPLE_RUPEE] = Item(RG_PURPLE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_PURPLE, false, LOGIC_NONE, RHT_PURPLE_RUPEE, ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_HUGE_RUPEE] = Item(RG_HUGE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GOLD, false, LOGIC_NONE, RHT_HUGE_RUPEE, ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_PIECE_OF_HEART] = Item(RG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE, true, LOGIC_PIECE_OF_HEART, RHT_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_HEART_CONTAINER] = Item(RG_HEART_CONTAINER, ITEMTYPE_ITEM, GI_HEART_CONTAINER_2, true, LOGIC_HEART_CONTAINER, RHT_HEART_CONTAINER, ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_ICE_TRAP] = Item(RG_ICE_TRAP, ITEMTYPE_ITEM, RG_ICE_TRAP, false, LOGIC_NONE, RHT_ICE_TRAP, OBJECT_GI_RUPY, GID_RUPEE_GOLD, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MILK] = Item(RG_MILK, ITEMTYPE_ITEM, GI_MILK, false, LOGIC_NONE, RHT_MILK, ITEM_MILK, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_FISH] = Item(RG_FISH, ITEMTYPE_ITEM, GI_FISH, false, LOGIC_NONE, RHT_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); // Refills - itemTable[RG_BOMBS_5] = Item(RG_BOMBS_5, ITEMTYPE_REFILL, GI_BOMBS_5, false, LOGIC_NONE, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBS_10] = Item(RG_BOMBS_10, ITEMTYPE_REFILL, GI_BOMBS_10, false, LOGIC_NONE, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBS_20] = Item(RG_BOMBS_20, ITEMTYPE_REFILL, GI_BOMBS_20, false, LOGIC_NONE, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_5] = Item(RG_BOMBCHU_5, ITEMTYPE_REFILL, GI_BOMBCHUS_5, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_5, ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_10] = Item(RG_BOMBCHU_10, ITEMTYPE_REFILL, GI_BOMBCHUS_10, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_20] = Item(RG_BOMBCHU_20, ITEMTYPE_REFILL, GI_BOMBCHUS_20, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBS_5] = Item(RG_BOMBS_5, ITEMTYPE_REFILL, GI_BOMBS_5, false, LOGIC_NONE, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBS_10] = Item(RG_BOMBS_10, ITEMTYPE_REFILL, GI_BOMBS_10, false, LOGIC_NONE, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBS_20] = Item(RG_BOMBS_20, ITEMTYPE_REFILL, GI_BOMBS_20, false, LOGIC_NONE, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBCHU_5] = Item(RG_BOMBCHU_5, ITEMTYPE_REFILL, GI_BOMBCHUS_5, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_5, ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBCHU_10] = Item(RG_BOMBCHU_10, ITEMTYPE_REFILL, GI_BOMBCHUS_10, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBCHU_20] = Item(RG_BOMBCHU_20, ITEMTYPE_REFILL, GI_BOMBCHUS_20, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); itemTable[RG_BOMBCHU_20].SetCustomDrawFunc(Randomizer_DrawBombchuBagInLogic); - itemTable[RG_ARROWS_5] = Item(RG_ARROWS_5, ITEMTYPE_REFILL, GI_ARROWS_SMALL, false, LOGIC_NONE, RHT_ARROWS_5, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_ARROWS_10] = Item(RG_ARROWS_10, ITEMTYPE_REFILL, GI_ARROWS_MEDIUM, false, LOGIC_NONE, RHT_ARROWS_10, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_ARROWS_30] = Item(RG_ARROWS_30, ITEMTYPE_REFILL, GI_ARROWS_LARGE, false, LOGIC_NONE, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_NUTS_5] = Item(RG_DEKU_NUTS_5, ITEMTYPE_REFILL, GI_NUTS_5, false, LOGIC_NONE, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_NUTS_10] = Item(RG_DEKU_NUTS_10, ITEMTYPE_REFILL, GI_NUTS_10, false, LOGIC_NONE, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_SEEDS_30] = Item(RG_DEKU_SEEDS_30, ITEMTYPE_REFILL, GI_SEEDS_30, false, LOGIC_NONE, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_STICK_1] = Item(RG_DEKU_STICK_1, ITEMTYPE_REFILL, GI_STICKS_1, false, LOGIC_NONE, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_RED_POTION_REFILL] = Item(RG_RED_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_RED, false, LOGIC_NONE, RHT_RED_POTION_REFILL, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_GREEN_POTION_REFILL] = Item(RG_GREEN_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_GREEN, false, LOGIC_NONE, RHT_GREEN_POTION_REFILL, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BLUE_POTION_REFILL] = Item(RG_BLUE_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_BLUE, false, LOGIC_NONE, RHT_BLUE_POTION_REFILL, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_ARROWS_5] = Item(RG_ARROWS_5, ITEMTYPE_REFILL, GI_ARROWS_SMALL, false, LOGIC_NONE, RHT_ARROWS_5, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_ARROWS_10] = Item(RG_ARROWS_10, ITEMTYPE_REFILL, GI_ARROWS_MEDIUM, false, LOGIC_NONE, RHT_ARROWS_10, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_ARROWS_30] = Item(RG_ARROWS_30, ITEMTYPE_REFILL, GI_ARROWS_LARGE, false, LOGIC_NONE, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_DEKU_NUTS_5] = Item(RG_DEKU_NUTS_5, ITEMTYPE_REFILL, GI_NUTS_5, false, LOGIC_NONE, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_DEKU_NUTS_10] = Item(RG_DEKU_NUTS_10, ITEMTYPE_REFILL, GI_NUTS_10, false, LOGIC_NONE, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_DEKU_SEEDS_30] = Item(RG_DEKU_SEEDS_30, ITEMTYPE_REFILL, GI_SEEDS_30, false, LOGIC_NONE, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_DEKU_STICK_1] = Item(RG_DEKU_STICK_1, ITEMTYPE_REFILL, GI_STICKS_1, false, LOGIC_NONE, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_RED_POTION_REFILL] = Item(RG_RED_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_RED, false, LOGIC_NONE, RHT_RED_POTION_REFILL, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_GREEN_POTION_REFILL] = Item(RG_GREEN_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_GREEN, false, LOGIC_NONE, RHT_GREEN_POTION_REFILL, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BLUE_POTION_REFILL] = Item(RG_BLUE_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_BLUE, false, LOGIC_NONE, RHT_BLUE_POTION_REFILL, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); // Treasure Game - itemTable[RG_TCG_PIECE_OF_HEART] = Item(RG_TCG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE_WIN, true, LOGIC_PIECE_OF_HEART, RHT_TCG_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_LOSER_GREEN_RUPEE] = Item(RG_LOSER_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN_LOSE, false, LOGIC_NONE, RHT_LOSER_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_TCG_PIECE_OF_HEART] = Item(RG_TCG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE_WIN, true, LOGIC_PIECE_OF_HEART, RHT_TCG_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_LOSER_GREEN_RUPEE] = Item(RG_LOSER_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN_LOSE, false, LOGIC_NONE, RHT_LOSER_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); // Shop - itemTable[RG_BUY_DEKU_NUTS_5] = Item(RG_BUY_DEKU_NUTS_5, ITEMTYPE_SHOP, GI_NUTS_5_2, true, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 15); - itemTable[RG_BUY_ARROWS_30] = Item(RG_BUY_ARROWS_30, ITEMTYPE_SHOP, GI_ARROWS_MEDIUM, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_30, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 60); - itemTable[RG_BUY_ARROWS_50] = Item(RG_BUY_ARROWS_50, ITEMTYPE_SHOP, GI_ARROWS_LARGE, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 90); - itemTable[RG_BUY_BOMBS_525] = Item(RG_BUY_BOMBS_525, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_525, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 25); - itemTable[RG_BUY_DEKU_NUTS_10] = Item(RG_BUY_DEKU_NUTS_10, ITEMTYPE_SHOP, GI_NUTS_10, true, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_DEKU_STICK_1] = Item(RG_BUY_DEKU_STICK_1, ITEMTYPE_SHOP, GI_STICKS_1, true, LOGIC_STICKS, RHT_BUY_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); - itemTable[RG_BUY_BOMBS_10] = Item(RG_BUY_BOMBS_10, ITEMTYPE_SHOP, GI_BOMBS_10, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); - itemTable[RG_BUY_FISH] = Item(RG_BUY_FISH, ITEMTYPE_SHOP, GI_FISH, true, LOGIC_FISH_ACCESS, RHT_BUY_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 200); - itemTable[RG_BUY_RED_POTION_30] = Item(RG_BUY_RED_POTION_30, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_30, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_GREEN_POTION] = Item(RG_BUY_GREEN_POTION, ITEMTYPE_SHOP, GI_POTION_GREEN, true, LOGIC_BUY_MAGIC_POTION, RHT_BUY_GREEN_POTION, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_BLUE_POTION] = Item(RG_BUY_BLUE_POTION, ITEMTYPE_SHOP, GI_POTION_BLUE, true, LOGIC_BUY_MAGIC_POTION, RHT_BUY_BLUE_POTION, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 100); - itemTable[RG_BUY_HYLIAN_SHIELD] = Item(RG_BUY_HYLIAN_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_HYLIAN, true, LOGIC_HYLIAN_SHIELD, RHT_BUY_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 80); - itemTable[RG_BUY_DEKU_SHIELD] = Item(RG_BUY_DEKU_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_DEKU, true, LOGIC_DEKU_SHIELD, RHT_BUY_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 40); - itemTable[RG_BUY_GORON_TUNIC] = Item(RG_BUY_GORON_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_BUY_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 200); - itemTable[RG_BUY_ZORA_TUNIC] = Item(RG_BUY_ZORA_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_BUY_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 300); - itemTable[RG_BUY_HEART] = Item(RG_BUY_HEART, ITEMTYPE_SHOP, GI_HEART, false, LOGIC_NONE, RHT_BUY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); - itemTable[RG_BUY_BOMBCHUS_10] = Item(RG_BUY_BOMBCHUS_10, ITEMTYPE_SHOP, GI_BOMBCHUS_10, true, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 99); - itemTable[RG_BUY_BOMBCHUS_20] = Item(RG_BUY_BOMBCHUS_20, ITEMTYPE_SHOP, GI_BOMBCHUS_20, true, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 180); - itemTable[RG_BUY_DEKU_SEEDS_30] = Item(RG_BUY_DEKU_SEEDS_30, ITEMTYPE_SHOP, GI_SEEDS_30, true, LOGIC_BUY_SEED, RHT_BUY_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_SOLD_OUT] = Item(RG_SOLD_OUT, ITEMTYPE_SHOP, RG_SOLD_OUT, false, LOGIC_NONE, RHT_SOLD_OUT, false, 0); - itemTable[RG_BUY_BLUE_FIRE] = Item(RG_BUY_BLUE_FIRE, ITEMTYPE_SHOP, GI_BLUE_FIRE, true, LOGIC_BLUE_FIRE_ACCESS, RHT_BUY_FAIRYS_SPIRIT, ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 300); - itemTable[RG_BUY_BOTTLE_BUG] = Item(RG_BUY_BOTTLE_BUG, ITEMTYPE_SHOP, GI_BUGS, true, LOGIC_BUGS_ACCESS, RHT_BUY_BOTTLE_BUG, ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); - itemTable[RG_BUY_POE] = Item(RG_BUY_POE, ITEMTYPE_SHOP, RG_BUY_POE, false, LOGIC_NONE, RHT_BUY_POE, ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_FAIRYS_SPIRIT] = Item(RG_BUY_FAIRYS_SPIRIT, ITEMTYPE_SHOP, GI_FAIRY, true, LOGIC_FAIRY_ACCESS, RHT_BUY_FAIRYS_SPIRIT, ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); - itemTable[RG_BUY_ARROWS_10] = Item(RG_BUY_ARROWS_10, ITEMTYPE_SHOP, GI_ARROWS_SMALL, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_10, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 20); - itemTable[RG_BUY_BOMBS_20] = Item(RG_BUY_BOMBS_20, ITEMTYPE_SHOP, GI_BOMBS_20, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 80); - itemTable[RG_BUY_BOMBS_30] = Item(RG_BUY_BOMBS_30, ITEMTYPE_SHOP, GI_BOMBS_30, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_20, ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 120); - itemTable[RG_BUY_BOMBS_535] = Item(RG_BUY_BOMBS_535, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_535, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 35); - itemTable[RG_BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_40, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 40); - itemTable[RG_BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_50, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_DEKU_NUTS_5] = Item(RG_BUY_DEKU_NUTS_5, ITEMTYPE_SHOP, GI_NUTS_5_2, true, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 15); + itemTable[RG_BUY_ARROWS_30] = Item(RG_BUY_ARROWS_30, ITEMTYPE_SHOP, GI_ARROWS_MEDIUM, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_30, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 60); + itemTable[RG_BUY_ARROWS_50] = Item(RG_BUY_ARROWS_50, ITEMTYPE_SHOP, GI_ARROWS_LARGE, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_50, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 90); + itemTable[RG_BUY_BOMBS_525] = Item(RG_BUY_BOMBS_525, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_525, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 25); + itemTable[RG_BUY_DEKU_NUTS_10] = Item(RG_BUY_DEKU_NUTS_10, ITEMTYPE_SHOP, GI_NUTS_10, true, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_BUY_DEKU_STICK_1] = Item(RG_BUY_DEKU_STICK_1, ITEMTYPE_SHOP, GI_STICKS_1, true, LOGIC_STICKS, RHT_BUY_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); + itemTable[RG_BUY_BOMBS_10] = Item(RG_BUY_BOMBS_10, ITEMTYPE_SHOP, GI_BOMBS_10, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_FISH] = Item(RG_BUY_FISH, ITEMTYPE_SHOP, GI_FISH, true, LOGIC_FISH_ACCESS, RHT_BUY_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 200); + itemTable[RG_BUY_RED_POTION_30] = Item(RG_BUY_RED_POTION_30, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_30, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_BUY_GREEN_POTION] = Item(RG_BUY_GREEN_POTION, ITEMTYPE_SHOP, GI_POTION_GREEN, true, LOGIC_BUY_MAGIC_POTION, RHT_BUY_GREEN_POTION, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_BUY_BLUE_POTION] = Item(RG_BUY_BLUE_POTION, ITEMTYPE_SHOP, GI_POTION_BLUE, true, LOGIC_BUY_MAGIC_POTION, RHT_BUY_BLUE_POTION, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 100); + itemTable[RG_BUY_HYLIAN_SHIELD] = Item(RG_BUY_HYLIAN_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_HYLIAN, true, LOGIC_HYLIAN_SHIELD, RHT_BUY_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 80); + itemTable[RG_BUY_DEKU_SHIELD] = Item(RG_BUY_DEKU_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_DEKU, true, LOGIC_DEKU_SHIELD, RHT_BUY_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 40); + itemTable[RG_BUY_GORON_TUNIC] = Item(RG_BUY_GORON_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_BUY_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 200); + itemTable[RG_BUY_ZORA_TUNIC] = Item(RG_BUY_ZORA_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_BUY_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 300); + itemTable[RG_BUY_HEART] = Item(RG_BUY_HEART, ITEMTYPE_SHOP, GI_HEART, false, LOGIC_NONE, RHT_BUY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); + itemTable[RG_BUY_BOMBCHUS_10] = Item(RG_BUY_BOMBCHUS_10, ITEMTYPE_SHOP, GI_BOMBCHUS_10, true, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 99); + itemTable[RG_BUY_BOMBCHUS_20] = Item(RG_BUY_BOMBCHUS_20, ITEMTYPE_SHOP, GI_BOMBCHUS_20, true, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 180); + itemTable[RG_BUY_DEKU_SEEDS_30] = Item(RG_BUY_DEKU_SEEDS_30, ITEMTYPE_SHOP, GI_SEEDS_30, true, LOGIC_BUY_SEED, RHT_BUY_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_SOLD_OUT] = Item(RG_SOLD_OUT, ITEMTYPE_SHOP, RG_SOLD_OUT, false, LOGIC_NONE, RHT_SOLD_OUT, false, 0); + itemTable[RG_BUY_BLUE_FIRE] = Item(RG_BUY_BLUE_FIRE, ITEMTYPE_SHOP, GI_BLUE_FIRE, true, LOGIC_BLUE_FIRE_ACCESS, RHT_BUY_BLUE_FIRE, ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 300); + itemTable[RG_BUY_BOTTLE_BUG] = Item(RG_BUY_BOTTLE_BUG, ITEMTYPE_SHOP, GI_BUGS, true, LOGIC_BUGS_ACCESS, RHT_BUY_BOTTLE_BUG, ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_POE] = Item(RG_BUY_POE, ITEMTYPE_SHOP, RG_BUY_POE, false, LOGIC_NONE, RHT_BUY_POE, ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_BUY_FAIRYS_SPIRIT] = Item(RG_BUY_FAIRYS_SPIRIT, ITEMTYPE_SHOP, GI_FAIRY, true, LOGIC_FAIRY_ACCESS, RHT_BUY_FAIRYS_SPIRIT, ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_ARROWS_10] = Item(RG_BUY_ARROWS_10, ITEMTYPE_SHOP, GI_ARROWS_SMALL, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_10, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 20); + itemTable[RG_BUY_BOMBS_20] = Item(RG_BUY_BOMBS_20, ITEMTYPE_SHOP, GI_BOMBS_20, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 80); + itemTable[RG_BUY_BOMBS_30] = Item(RG_BUY_BOMBS_30, ITEMTYPE_SHOP, GI_BOMBS_30, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_30, ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 120); + itemTable[RG_BUY_BOMBS_535] = Item(RG_BUY_BOMBS_535, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_535, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 35); + itemTable[RG_BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_40, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 40); + itemTable[RG_BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_50, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); // Misc. - itemTable[RG_GOHMA_SOUL] = Item(RG_GOHMA_SOUL, ITEMTYPE_ITEM, 0xE0, true, LOGIC_CAN_SUMMON_GOHMA, RHT_GOHMA_SOUL, RG_GOHMA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_GOHMA_SOUL] = Item(RG_GOHMA_SOUL, ITEMTYPE_ITEM, 0xE0, true, LOGIC_CAN_SUMMON_GOHMA, RHT_GOHMA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GOHMA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_KING_DODONGO_SOUL] = Item(RG_KING_DODONGO_SOUL, ITEMTYPE_ITEM, 0xE1, true, LOGIC_CAN_SUMMON_KINGDODONGO, RHT_KING_DODONGO_SOUL, RG_KING_DODONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_KING_DODONGO_SOUL] = Item(RG_KING_DODONGO_SOUL, ITEMTYPE_ITEM, 0xE1, true, LOGIC_CAN_SUMMON_KINGDODONGO, RHT_KING_DODONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_KING_DODONGO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BARINADE_SOUL] = Item(RG_BARINADE_SOUL, ITEMTYPE_ITEM, 0xE2, true, LOGIC_CAN_SUMMON_BARINADE, RHT_BARINADE_SOUL, RG_BARINADE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BARINADE_SOUL] = Item(RG_BARINADE_SOUL, ITEMTYPE_ITEM, 0xE2, true, LOGIC_CAN_SUMMON_BARINADE, RHT_BARINADE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BARINADE_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_PHANTOM_GANON_SOUL] = Item(RG_PHANTOM_GANON_SOUL, ITEMTYPE_ITEM, 0xE3, true, LOGIC_CAN_SUMMON_PHANTOMGANON, RHT_PHANTOM_GANON_SOUL, RG_PHANTOM_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_PHANTOM_GANON_SOUL] = Item(RG_PHANTOM_GANON_SOUL, ITEMTYPE_ITEM, 0xE3, true, LOGIC_CAN_SUMMON_PHANTOMGANON, RHT_PHANTOM_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_PHANTOM_GANON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_VOLVAGIA_SOUL] = Item(RG_VOLVAGIA_SOUL, ITEMTYPE_ITEM, 0xE4, true, LOGIC_CAN_SUMMON_VOLVAGIA, RHT_VOLVAGIA_SOUL, RG_VOLVAGIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_VOLVAGIA_SOUL] = Item(RG_VOLVAGIA_SOUL, ITEMTYPE_ITEM, 0xE4, true, LOGIC_CAN_SUMMON_VOLVAGIA, RHT_VOLVAGIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_VOLVAGIA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_MORPHA_SOUL] = Item(RG_MORPHA_SOUL, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_MORPHA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MORPHA_SOUL] = Item(RG_MORPHA_SOUL, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MORPHA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BONGO_BONGO_SOUL] = Item(RG_BONGO_BONGO_SOUL, ITEMTYPE_ITEM, 0xE6, true, LOGIC_CAN_SUMMON_BONGOBONGO, RHT_BONGO_BONGO_SOUL, RG_BONGO_BONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BONGO_BONGO_SOUL] = Item(RG_BONGO_BONGO_SOUL, ITEMTYPE_ITEM, 0xE6, true, LOGIC_CAN_SUMMON_BONGOBONGO, RHT_BONGO_BONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BONGO_BONGO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_TWINROVA_SOUL] = Item(RG_TWINROVA_SOUL, ITEMTYPE_ITEM, 0xE7, true, LOGIC_CAN_SUMMON_TWINROVA, RHT_TWINROVA_SOUL, RG_TWINROVA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_TWINROVA_SOUL] = Item(RG_TWINROVA_SOUL, ITEMTYPE_ITEM, 0xE7, true, LOGIC_CAN_SUMMON_TWINROVA, RHT_TWINROVA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_TWINROVA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_GANON_SOUL] = Item(RG_GANON_SOUL, ITEMTYPE_ITEM, 0xE8, true, LOGIC_CAN_SUMMON_GANON, RHT_GANON_SOUL, RG_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_GANON_SOUL] = Item(RG_GANON_SOUL, ITEMTYPE_ITEM, 0xE8, true, LOGIC_CAN_SUMMON_GANON, RHT_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GANON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_FISHING_POLE] = Item(RG_FISHING_POLE, ITEMTYPE_ITEM, RG_FISHING_POLE, true, LOGIC_FISHING_POLE, RHT_FISHING_POLE, RG_FISHING_POLE, OBJECT_GI_FISH, GID_FISHING_POLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_FISHING_POLE] = Item(RG_FISHING_POLE, ITEMTYPE_ITEM, RG_FISHING_POLE, true, LOGIC_FISHING_POLE, RHT_FISHING_POLE, OBJECT_GI_FISH, GID_FISHING_POLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_FISHING_POLE].SetCustomDrawFunc(Randomizer_DrawFishingPoleGI); - itemTable[RG_OCARINA_A_BUTTON] = Item(RG_OCARINA_A_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_A_BUTTON, RHT_OCARINA_A_BUTTON, RG_OCARINA_A_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_A_BUTTON] = Item(RG_OCARINA_A_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_A_BUTTON, RHT_OCARINA_A_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_A_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_UP_BUTTON] = Item(RG_OCARINA_C_UP_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_UP_BUTTON, RHT_OCARINA_C_UP_BUTTON, RG_OCARINA_C_UP_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_C_UP_BUTTON] = Item(RG_OCARINA_C_UP_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_UP_BUTTON, RHT_OCARINA_C_UP_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_UP_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_DOWN_BUTTON] = Item(RG_OCARINA_C_DOWN_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_DOWN_BUTTON, RHT_OCARINA_C_DOWN_BUTTON, RG_OCARINA_C_DOWN_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_C_DOWN_BUTTON] = Item(RG_OCARINA_C_DOWN_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_DOWN_BUTTON, RHT_OCARINA_C_DOWN_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_DOWN_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_LEFT_BUTTON] = Item(RG_OCARINA_C_LEFT_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_LEFT_BUTTON, RHT_OCARINA_C_LEFT_BUTTON, RG_OCARINA_C_LEFT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_C_LEFT_BUTTON] = Item(RG_OCARINA_C_LEFT_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_LEFT_BUTTON, RHT_OCARINA_C_LEFT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_LEFT_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_RIGHT_BUTTON] = Item(RG_OCARINA_C_RIGHT_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_RIGHT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, RG_OCARINA_C_RIGHT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_C_RIGHT_BUTTON] = Item(RG_OCARINA_C_RIGHT_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_RIGHT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_RIGHT_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_BOMBCHU_BAG] = Item(RG_BOMBCHU_BAG, ITEMTYPE_ITEM, RG_BOMBCHU_BAG, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_BAG, RG_BOMBCHU_BAG, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOMBCHU_BAG] = Item(RG_BOMBCHU_BAG, ITEMTYPE_ITEM, RG_BOMBCHU_BAG, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_BAG, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BOMBCHU_BAG].SetCustomDrawFunc(Randomizer_DrawBombchuBag); - itemTable[RG_QUIVER_INF] = Item(RG_QUIVER_INF, ITEMTYPE_ITEM, RG_QUIVER_INF, true, LOGIC_PROGRESSIVE_BOW, RHT_QUIVER_INF, RG_QUIVER_INF, OBJECT_GI_ARROWCASE, GID_QUIVER_50, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOMB_BAG_INF] = Item(RG_BOMB_BAG_INF, ITEMTYPE_ITEM, RG_BOMB_BAG_INF, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG_INF, RG_BOMB_BAG_INF, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BULLET_BAG_INF] = Item(RG_BULLET_BAG_INF, ITEMTYPE_ITEM, RG_BULLET_BAG_INF, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BULLET_BAG_INF, RG_BULLET_BAG_INF, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_STICK_UPGRADE_INF] = Item(RG_STICK_UPGRADE_INF, ITEMTYPE_ITEM, RG_STICK_UPGRADE_INF, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_STICK_UPGRADE_INF, RG_STICK_UPGRADE_INF, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_NUT_UPGRADE_INF] = Item(RG_NUT_UPGRADE_INF, ITEMTYPE_ITEM, RG_NUT_UPGRADE_INF, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NUT_UPGRADE_INF, RG_NUT_UPGRADE_INF, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_MAGIC_INF] = Item(RG_MAGIC_INF, ITEMTYPE_ITEM, RG_MAGIC_INF, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_INF, RG_MAGIC_INF, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOMBCHU_INF] = Item(RG_BOMBCHU_INF, ITEMTYPE_ITEM, RG_BOMBCHU_INF, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_INF, RG_BOMBCHU_INF, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_QUIVER_INF] = Item(RG_QUIVER_INF, ITEMTYPE_ITEM, RG_QUIVER_INF, true, LOGIC_PROGRESSIVE_BOW, RHT_QUIVER_INF, OBJECT_GI_ARROWCASE, GID_QUIVER_50, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOMB_BAG_INF] = Item(RG_BOMB_BAG_INF, ITEMTYPE_ITEM, RG_BOMB_BAG_INF, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG_INF, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BULLET_BAG_INF] = Item(RG_BULLET_BAG_INF, ITEMTYPE_ITEM, RG_BULLET_BAG_INF, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BULLET_BAG_INF, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_STICK_UPGRADE_INF] = Item(RG_STICK_UPGRADE_INF, ITEMTYPE_ITEM, RG_STICK_UPGRADE_INF, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_STICK_UPGRADE_INF, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_NUT_UPGRADE_INF] = Item(RG_NUT_UPGRADE_INF, ITEMTYPE_ITEM, RG_NUT_UPGRADE_INF, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NUT_UPGRADE_INF, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_MAGIC_INF] = Item(RG_MAGIC_INF, ITEMTYPE_ITEM, RG_MAGIC_INF, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_INF, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOMBCHU_INF] = Item(RG_BOMBCHU_INF, ITEMTYPE_ITEM, RG_BOMBCHU_INF, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_INF, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_BOMBCHU_INF].SetCustomDrawFunc(Randomizer_DrawBombchuBag); - itemTable[RG_WALLET_INF] = Item(RG_WALLET_INF, ITEMTYPE_ITEM, RG_WALLET_INF, true, LOGIC_PROGRESSIVE_WALLET, RHT_WALLET_INF, RG_WALLET_INF, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_WALLET_INF] = Item(RG_WALLET_INF, ITEMTYPE_ITEM, RG_WALLET_INF, true, LOGIC_PROGRESSIVE_WALLET, RHT_WALLET_INF, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_SKELETON_KEY] = Item(RG_SKELETON_KEY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_SKELETON_KEY, RHT_SKELETON_KEY, RG_SKELETON_KEY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_SKELETON_KEY] = Item(RG_SKELETON_KEY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_SKELETON_KEY, RHT_SKELETON_KEY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_SKELETON_KEY].SetCustomDrawFunc(Randomizer_DrawSkeletonKey); - itemTable[RG_TRIFORCE] = Item(RG_TRIFORCE, ITEMTYPE_EVENT, RG_TRIFORCE, false, LOGIC_NONE, RHT_TRIFORCE); - itemTable[RG_HINT] = Item(RG_HINT, ITEMTYPE_EVENT, RG_HINT, false, LOGIC_NONE, RHT_HINT); + itemTable[RG_TRIFORCE] = Item(RG_TRIFORCE, ITEMTYPE_EVENT, RG_TRIFORCE, false, LOGIC_NONE, RHT_TRIFORCE); + itemTable[RG_HINT] = Item(RG_HINT, ITEMTYPE_EVENT, RG_HINT, false, LOGIC_NONE, RHT_HINT); // Individual stages of progressive items (only here for GetItemEntry purposes, not for use in seed gen) - itemTable[RG_HOOKSHOT] = Item(RG_HOOKSHOT, ITEMTYPE_ITEM, GI_HOOKSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_HOOKSHOT, ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LONGSHOT] = Item(RG_LONGSHOT, ITEMTYPE_ITEM, GI_LONGSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_LONGSHOT, ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FAIRY_OCARINA] = Item(RG_FAIRY_OCARINA, ITEMTYPE_ITEM, GI_OCARINA_FAIRY, true, LOGIC_PROGRESSIVE_OCARINA, RHT_FAIRY_OCARINA, ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x4A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_OCARINA_OF_TIME] = Item(RG_OCARINA_OF_TIME, ITEMTYPE_ITEM, GI_OCARINA_OOT, true, LOGIC_PROGRESSIVE_OCARINA, RHT_OCARINA_OF_TIME, ITEM_OCARINA_TIME, OBJECT_GI_OCARINA, GID_OCARINA_TIME, 0x3A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOMB_BAG] = Item(RG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_20, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG, ITEM_BOMB_BAG_20, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_20, 0x58, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIG_BOMB_BAG] = Item(RG_BIG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_30, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIG_BOMB_BAG, ITEM_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, 0x59, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_BIGGEST_BOMB_BAG] = Item(RG_BIGGEST_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_40, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIGGEST_BOMB_BAG, ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_FAIRY_BOW] = Item(RG_FAIRY_BOW, ITEMTYPE_ITEM, GI_BOW, true, LOGIC_PROGRESSIVE_BOW, RHT_FAIRY_BOW, ITEM_BOW, OBJECT_GI_BOW, GID_BOW, 0x31, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIG_QUIVER] = Item(RG_BIG_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_40, true, LOGIC_PROGRESSIVE_BOW, RHT_BIG_QUIVER, ITEM_QUIVER_40, OBJECT_GI_ARROWCASE, GID_QUIVER_40, 0x56, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_BIGGEST_QUIVER] = Item(RG_BIGGEST_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_50, true, LOGIC_PROGRESSIVE_BOW, RHT_BIGGEST_QUIVER, ITEM_QUIVER_50, OBJECT_GI_ARROWCASE, GID_QUIVER_50, 0x57, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_FAIRY_SLINGSHOT] = Item(RG_FAIRY_SLINGSHOT, ITEMTYPE_ITEM, GI_SLINGSHOT, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_FAIRY_SLINGSHOT, ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIG_BULLET_BAG] = Item(RG_BIG_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_40, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIG_BULLET_BAG, ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_BIGGEST_BULLET_BAG] = Item(RG_BIGGEST_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_50, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIGGEST_BULLET_BAG, ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_GORONS_BRACELET] = Item(RG_GORONS_BRACELET, ITEMTYPE_ITEM, GI_BRACELET, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GORONS_BRACELET, ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SILVER_GAUNTLETS] = Item(RG_SILVER_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_SILVER, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_SILVER_GAUNTLETS, ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GOLDEN_GAUNTLETS] = Item(RG_GOLDEN_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_GOLD, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GOLDEN_GAUNTLETS, ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BRONZE_SCALE] = Item(RG_BRONZE_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_WALLET, RHT_BRONZE_SCALE, RG_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_HOOKSHOT] = Item(RG_HOOKSHOT, ITEMTYPE_ITEM, GI_HOOKSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_HOOKSHOT, ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_LONGSHOT] = Item(RG_LONGSHOT, ITEMTYPE_ITEM, GI_LONGSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_LONGSHOT, ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FAIRY_OCARINA] = Item(RG_FAIRY_OCARINA, ITEMTYPE_ITEM, GI_OCARINA_FAIRY, true, LOGIC_PROGRESSIVE_OCARINA, RHT_FAIRY_OCARINA, ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x4A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_OCARINA_OF_TIME] = Item(RG_OCARINA_OF_TIME, ITEMTYPE_ITEM, GI_OCARINA_OOT, true, LOGIC_PROGRESSIVE_OCARINA, RHT_OCARINA_OF_TIME, ITEM_OCARINA_TIME, OBJECT_GI_OCARINA, GID_OCARINA_TIME, 0x3A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOMB_BAG] = Item(RG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_20, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG, ITEM_BOMB_BAG_20, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_20, 0x58, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BIG_BOMB_BAG] = Item(RG_BIG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_30, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIG_BOMB_BAG, ITEM_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, 0x59, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_BIGGEST_BOMB_BAG] = Item(RG_BIGGEST_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_40, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIGGEST_BOMB_BAG, ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_FAIRY_BOW] = Item(RG_FAIRY_BOW, ITEMTYPE_ITEM, GI_BOW, true, LOGIC_PROGRESSIVE_BOW, RHT_FAIRY_BOW, ITEM_BOW, OBJECT_GI_BOW, GID_BOW, 0x31, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BIG_QUIVER] = Item(RG_BIG_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_40, true, LOGIC_PROGRESSIVE_BOW, RHT_BIG_QUIVER, ITEM_QUIVER_40, OBJECT_GI_ARROWCASE, GID_QUIVER_40, 0x56, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_BIGGEST_QUIVER] = Item(RG_BIGGEST_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_50, true, LOGIC_PROGRESSIVE_BOW, RHT_BIGGEST_QUIVER, ITEM_QUIVER_50, OBJECT_GI_ARROWCASE, GID_QUIVER_50, 0x57, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_FAIRY_SLINGSHOT] = Item(RG_FAIRY_SLINGSHOT, ITEMTYPE_ITEM, GI_SLINGSHOT, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_FAIRY_SLINGSHOT, ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BIG_BULLET_BAG] = Item(RG_BIG_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_40, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIG_BULLET_BAG, ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_BIGGEST_BULLET_BAG] = Item(RG_BIGGEST_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_50, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIGGEST_BULLET_BAG, ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_GORONS_BRACELET] = Item(RG_GORONS_BRACELET, ITEMTYPE_ITEM, GI_BRACELET, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GORONS_BRACELET, ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SILVER_GAUNTLETS] = Item(RG_SILVER_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_SILVER, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_SILVER_GAUNTLETS, ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GOLDEN_GAUNTLETS] = Item(RG_GOLDEN_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_GOLD, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GOLDEN_GAUNTLETS, ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BRONZE_SCALE] = Item(RG_BRONZE_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_WALLET, RHT_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BRONZE_SCALE].SetCustomDrawFunc(Randomizer_DrawBronzeScale); - itemTable[RG_SILVER_SCALE] = Item(RG_SILVER_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_SCALE, RHT_SILVER_SCALE, ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GOLDEN_SCALE] = Item(RG_GOLDEN_SCALE, ITEMTYPE_ITEM, GI_SCALE_GOLDEN, true, LOGIC_PROGRESSIVE_SCALE, RHT_GOLDEN_SCALE, ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_CHILD_WALLET] = Item(RG_CHILD_WALLET, ITEMTYPE_ITEM, RG_CHILD_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_CHILD_WALLET, RG_CHILD_WALLET, OBJECT_GI_PURSE, GID_WALLET_ADULT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_ADULT_WALLET] = Item(RG_ADULT_WALLET, ITEMTYPE_ITEM, GI_WALLET_ADULT, true, LOGIC_PROGRESSIVE_WALLET, RHT_ADULT_WALLET, ITEM_WALLET_ADULT, OBJECT_GI_PURSE, GID_WALLET_ADULT, 0x5E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GIANT_WALLET] = Item(RG_GIANT_WALLET, ITEMTYPE_ITEM, GI_WALLET_GIANT, true, LOGIC_PROGRESSIVE_WALLET, RHT_GIANT_WALLET, ITEM_WALLET_GIANT, OBJECT_GI_PURSE, GID_WALLET_GIANT, 0x5F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_TYCOON_WALLET] = Item(RG_TYCOON_WALLET, ITEMTYPE_ITEM, RG_TYCOON_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_TYCOON_WALLET, RG_TYCOON_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_DEKU_NUT_BAG] = Item(RG_DEKU_NUT_BAG, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_BAG, RG_DEKU_NUT_BAG, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_DEKU_NUT_CAPACITY_30] = Item(RG_DEKU_NUT_CAPACITY_30, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_30, ITEM_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_DEKU_NUT_CAPACITY_40] = Item(RG_DEKU_NUT_CAPACITY_40, ITEMTYPE_ITEM, GI_NUT_UPGRADE_40, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_40, ITEM_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_DEKU_STICK_BAG] = Item(RG_DEKU_STICK_BAG, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_BAG, RG_DEKU_STICK_BAG, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_DEKU_STICK_CAPACITY_20] = Item(RG_DEKU_STICK_CAPACITY_20, ITEMTYPE_ITEM, GI_STICK_UPGRADE_20, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_20, ITEM_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_STICK, 0x90, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_DEKU_STICK_CAPACITY_30] = Item(RG_DEKU_STICK_CAPACITY_30, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_30, ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_MAGIC_SINGLE] = Item(RG_MAGIC_SINGLE, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_SINGLE, RG_MAGIC_SINGLE, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0xE4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_MAGIC_DOUBLE] = Item(RG_MAGIC_DOUBLE, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, RG_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, ITEMTYPE_ITEM, 0xDF, true, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, RG_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_SILVER_SCALE] = Item(RG_SILVER_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_SCALE, RHT_SILVER_SCALE, ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GOLDEN_SCALE] = Item(RG_GOLDEN_SCALE, ITEMTYPE_ITEM, GI_SCALE_GOLDEN, true, LOGIC_PROGRESSIVE_SCALE, RHT_GOLDEN_SCALE, ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_CHILD_WALLET] = Item(RG_CHILD_WALLET, ITEMTYPE_ITEM, RG_CHILD_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_CHILD_WALLET, OBJECT_GI_PURSE, GID_WALLET_ADULT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_ADULT_WALLET] = Item(RG_ADULT_WALLET, ITEMTYPE_ITEM, GI_WALLET_ADULT, true, LOGIC_PROGRESSIVE_WALLET, RHT_ADULT_WALLET, ITEM_WALLET_ADULT, OBJECT_GI_PURSE, GID_WALLET_ADULT, 0x5E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GIANT_WALLET] = Item(RG_GIANT_WALLET, ITEMTYPE_ITEM, GI_WALLET_GIANT, true, LOGIC_PROGRESSIVE_WALLET, RHT_GIANT_WALLET, ITEM_WALLET_GIANT, OBJECT_GI_PURSE, GID_WALLET_GIANT, 0x5F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_TYCOON_WALLET] = Item(RG_TYCOON_WALLET, ITEMTYPE_ITEM, RG_TYCOON_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_TYCOON_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DEKU_NUT_BAG] = Item(RG_DEKU_NUT_BAG, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_BAG, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DEKU_NUT_CAPACITY_30] = Item(RG_DEKU_NUT_CAPACITY_30, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_30, ITEM_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_DEKU_NUT_CAPACITY_40] = Item(RG_DEKU_NUT_CAPACITY_40, ITEMTYPE_ITEM, GI_NUT_UPGRADE_40, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_40, ITEM_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_DEKU_STICK_BAG] = Item(RG_DEKU_STICK_BAG, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_BAG, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DEKU_STICK_CAPACITY_20] = Item(RG_DEKU_STICK_CAPACITY_20, ITEMTYPE_ITEM, GI_STICK_UPGRADE_20, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_20, ITEM_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_STICK, 0x90, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_DEKU_STICK_CAPACITY_30] = Item(RG_DEKU_STICK_CAPACITY_30, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_30, ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_MAGIC_SINGLE] = Item(RG_MAGIC_SINGLE, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_SINGLE, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0xE4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MAGIC_DOUBLE] = Item(RG_MAGIC_DOUBLE, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, ITEMTYPE_ITEM, 0xDF, true, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); // clang-format on diff --git a/soh/soh/Enhancements/randomizer/location_list.cpp b/soh/soh/Enhancements/randomizer/location_list.cpp index b06c61871..a2d41fdb2 100644 --- a/soh/soh/Enhancements/randomizer/location_list.cpp +++ b/soh/soh/Enhancements/randomizer/location_list.cpp @@ -173,10 +173,10 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_GF_HBA_1500_POINTS] = Location::Base(RC_GF_HBA_1500_POINTS, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_GERUDOS_FORTRESS, 0x00, "HBA 1500 Points", RHT_GF_HBA_1500_POINTS, RG_PROGRESSIVE_BOW, SpoilerCollectionCheck::ItemGetInf(15), true); // RandoTodo: Do we replace these with the RC_HIDEOUT keys or keep these? locationTable[RC_GF_GERUDO_MEMBERSHIP_CARD] = Location::Base(RC_GF_GERUDO_MEMBERSHIP_CARD, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_THIEVES_HIDEOUT, 0x00, "Gerudo Membership Card", RHT_GF_GERUDO_MEMBERSHIP_CARD, RG_GERUDO_MEMBERSHIP_CARD, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ITEM_FROM_LEADER_OF_FORTRESS), true); - locationTable[RC_GF_NORTH_F1_CARPENTER] = Location::Collectable(RC_GF_NORTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3089, 0x0C, "North F1 Carpenter", RHT_GF_NORTH_F1_CARPENTER, RG_TH_SMALL_KEY, true); - locationTable[RC_GF_NORTH_F2_CARPENTER] = Location::Collectable(RC_GF_NORTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 2577, 0x0A, "North F2 Carpenter", RHT_GF_NORTH_F2_CARPENTER, RG_TH_SMALL_KEY, true); - locationTable[RC_GF_SOUTH_F1_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3601, 0x0E, "South F1 Carpenter", RHT_GF_SOUTH_F1_CARPENTER, RG_TH_SMALL_KEY, true); - locationTable[RC_GF_SOUTH_F2_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3857, 0x0F, "South F2 Carpenter", RHT_GF_SOUTH_F2_CARPENTER, RG_TH_SMALL_KEY, true); + locationTable[RC_GF_NORTH_F1_CARPENTER] = Location::Collectable(RC_GF_NORTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3089, 0x0C, "North F1 Carpenter", RHT_GF_NORTH_F1_CARPENTER, RG_HIDEOUT_SMALL_KEY, true); + locationTable[RC_GF_NORTH_F2_CARPENTER] = Location::Collectable(RC_GF_NORTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 2577, 0x0A, "North F2 Carpenter", RHT_GF_NORTH_F2_CARPENTER, RG_HIDEOUT_SMALL_KEY, true); + locationTable[RC_GF_SOUTH_F1_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3601, 0x0E, "South F1 Carpenter", RHT_GF_SOUTH_F1_CARPENTER, RG_HIDEOUT_SMALL_KEY, true); + locationTable[RC_GF_SOUTH_F2_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3857, 0x0F, "South F2 Carpenter", RHT_GF_SOUTH_F2_CARPENTER, RG_HIDEOUT_SMALL_KEY, true); // Haunted Wasteland locationTable[RC_WASTELAND_CHEST] = Location::Chest(RC_WASTELAND_CHEST, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_WASTELAND, ACTOR_EN_BOX, SCENE_HAUNTED_WASTELAND, -30048, 0x00, "Chest", RHT_WASTELAND_CHEST, RG_PURPLE_RUPEE); locationTable[RC_WASTELAND_BOMBCHU_SALESMAN] = Location::Base(RC_WASTELAND_BOMBCHU_SALESMAN, RCQUEST_BOTH, RCTYPE_MERCHANT, RCAREA_WASTELAND, ACTOR_ID_MAX, SCENE_HAUNTED_WASTELAND, 0x00, "Carpet Salesman", RHT_WASTELAND_BOMBCHU_SALESMAN, RG_BUY_BOMBCHUS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN), false, 200); @@ -196,11 +196,11 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_3] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_3, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Third Room Item", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_3, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_3)); locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_4] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_4, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Fourth Room Item", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_4, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_4)); locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_5] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_5, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Fifth Room Item", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_5, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_5)); - locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_1] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_1, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game First Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_1, RG_TREASURE_GAME_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_1)); - locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_2] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_2, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Second Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_2, RG_TREASURE_GAME_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_2)); - locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_3] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_3, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Third Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_3, RG_TREASURE_GAME_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_3)); - locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_4] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_4, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Fourth Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_4, RG_TREASURE_GAME_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_4)); - locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_5] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_5, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Fifth Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_5, RG_TREASURE_GAME_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_5)); + locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_1] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_1, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game First Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_1, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_1)); + locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_2] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_2, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Second Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_2, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_2)); + locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_3] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_3, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Third Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_3, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_3)); + locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_4] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_4, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Fourth Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_4, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_4)); + locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_5] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_5, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Fifth Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_5, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_5)); // Hyrule Castle locationTable[RC_HC_MALON_EGG] = Location::Base(RC_HC_MALON_EGG, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_HYRULE_CASTLE, 0x00, "Malon Egg", RHT_HC_MALON_EGG, RG_WEIRD_EGG, SpoilerCollectionCheck::EventChkInf(EVENTCHKINF_OBTAINED_POCKET_EGG), true); locationTable[RC_HC_ZELDAS_LETTER] = Location::Base(RC_HC_ZELDAS_LETTER, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_CASTLE_COURTYARD_ZELDA, 0x00, "Zeldas Letter", RHT_HC_ZELDAS_LETTER, RG_ZELDAS_LETTER, SpoilerCollectionCheck::EventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER), true); diff --git a/soh/soh/Enhancements/randomizer/logic.cpp b/soh/soh/Enhancements/randomizer/logic.cpp index 6ad6d6c1a..43bc16511 100644 --- a/soh/soh/Enhancements/randomizer/logic.cpp +++ b/soh/soh/Enhancements/randomizer/logic.cpp @@ -1393,7 +1393,7 @@ namespace Rando { { RG_SHADOW_TEMPLE_SMALL_KEY, SCENE_SHADOW_TEMPLE }, { RG_BOTW_SMALL_KEY, SCENE_BOTTOM_OF_THE_WELL }, { RG_GTG_SMALL_KEY, SCENE_GERUDO_TRAINING_GROUND }, - { RG_TH_SMALL_KEY, SCENE_THIEVES_HIDEOUT }, + { RG_HIDEOUT_SMALL_KEY, SCENE_THIEVES_HIDEOUT }, { RG_GANONS_CASTLE_SMALL_KEY, SCENE_INSIDE_GANONS_CASTLE }, { RG_FOREST_TEMPLE_KEY_RING, SCENE_FOREST_TEMPLE }, { RG_FIRE_TEMPLE_KEY_RING, SCENE_FIRE_TEMPLE }, @@ -1402,7 +1402,7 @@ namespace Rando { { RG_SHADOW_TEMPLE_KEY_RING, SCENE_SHADOW_TEMPLE }, { RG_BOTW_KEY_RING, SCENE_BOTTOM_OF_THE_WELL }, { RG_GTG_KEY_RING, SCENE_GERUDO_TRAINING_GROUND }, - { RG_TH_KEY_RING, SCENE_THIEVES_HIDEOUT }, + { RG_HIDEOUT_KEY_RING, SCENE_THIEVES_HIDEOUT }, { RG_GANONS_CASTLE_KEY_RING, SCENE_INSIDE_GANONS_CASTLE }, { RG_FOREST_TEMPLE_BOSS_KEY, SCENE_FOREST_TEMPLE }, { RG_FIRE_TEMPLE_BOSS_KEY, SCENE_FIRE_TEMPLE }, @@ -1430,7 +1430,7 @@ namespace Rando { { RG_SHADOW_TEMPLE_COMPASS, SCENE_SHADOW_TEMPLE }, { RG_BOTW_COMPASS, SCENE_BOTTOM_OF_THE_WELL }, { RG_ICE_CAVERN_COMPASS, SCENE_ICE_CAVERN }, - { RG_TREASURE_GAME_SMALL_KEY, SCENE_TREASURE_BOX_SHOP } + { RG_TCG_SMALL_KEY, SCENE_TREASURE_BOX_SHOP } }; std::map Logic::RandoGetToQuestItem = { @@ -1816,7 +1816,7 @@ namespace Rando { case ITEMTYPE_BOSSKEY: SetDungeonItem(DUNGEON_KEY_BOSS, RandoGetToDungeonScene.find(item.GetRandomizerGet())->second, state); break; - case ITEMTYPE_TH_SMALLKEY: + case ITEMTYPE_HIDEOUT_KEY: case ITEMTYPE_SMALLKEY: { auto randoGet = item.GetRandomizerGet(); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 97bcf563b..108ee30e2 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -733,11 +733,11 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe return gSaveContext.inventory.dungeonKeys[SCENE_BOTTOM_OF_THE_WELL] < BOTTOM_OF_THE_WELL_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_GTG_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_GERUDO_TRAINING_GROUND] < GERUDO_TRAINING_GROUND_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; - case RG_TH_SMALL_KEY: + case RG_HIDEOUT_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_THIEVES_HIDEOUT] < GERUDO_FORTRESS_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_GANONS_CASTLE_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_INSIDE_GANONS_CASTLE] < GANONS_CASTLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; - case RG_TREASURE_GAME_SMALL_KEY: + case RG_TCG_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_TREASURE_BOX_SHOP] < TREASURE_GAME_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; // Dungeon Rewards @@ -3431,7 +3431,7 @@ void Randomizer::CreateCustomMessages() { "Du hast jetzt ein %rIrrlicht in einer&Flasche%w! Der %rGespenstermarkt%w&interessiert sich für vielleicht&dafür...", "Vous obtenez une %rBouteille avec&un Esprit%w! Ça intéresserait&peut-être le vendeur d'Âme "), - GIMESSAGE(RG_TH_SMALL_KEY, ITEM_KEY_SMALL, + GIMESSAGE(RG_HIDEOUT_SMALL_KEY, ITEM_KEY_SMALL, "You found a %yThieves Hideout &%wSmall Key!", "Du erhältst einen %rkleinen&Schlüssel%w für das %yDiebesversteck%w!", "Vous obtenez une %rPetite Clé %w&du %yRepaire des Voleurs%w!"), @@ -3564,7 +3564,7 @@ void Randomizer::CreateCustomMessages() { "Du erhältst einen %rkleinen&Schlüssel%w für den %gFischweiher%w!", "Vous obtenez la %rClé %wde l'%gÉtang%w!"), - GIMESSAGE(RG_TH_KEY_RING, ITEM_KEY_SMALL, + GIMESSAGE(RG_HIDEOUT_KEY_RING, ITEM_KEY_SMALL, "You found a %yThieves Hideout&%wKeyring!", "Du erhältst ein %rSchlüsselbund%w&für das %yDiebesversteck%w!", "Vous obtenez le trousseau de&clés du %yRepaire des Voleurs%w!"), @@ -3600,7 +3600,7 @@ void Randomizer::CreateCustomMessages() { "You found a %rGanon's Castle&%wKeyring!", "Du erhältst ein %rSchlüsselbund%w&für %rGanons Schloß%w!", "Vous obtenez le trousseau de&clés du %rChâteau de Ganon%w!"), - GIMESSAGE(RG_TREASURE_GAME_KEY_RING, ITEM_KEY_SMALL, + GIMESSAGE(RG_TCG_KEY_RING, ITEM_KEY_SMALL, "You found a %rTreasure Chest Game&%wKeyring!", "!!!", "Vous obtenez le trousseau de&clés du %rJeu de la Chasse au Trésor%w!"), @@ -4055,8 +4055,8 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { mapIndex = SCENE_GERUDO_TRAINING_GROUND; numOfKeysOnKeyring = GERUDO_TRAINING_GROUND_SMALL_KEY_MAX; break; - case RG_TH_SMALL_KEY: - case RG_TH_KEY_RING: + case RG_HIDEOUT_SMALL_KEY: + case RG_HIDEOUT_KEY_RING: mapIndex = SCENE_THIEVES_HIDEOUT; numOfKeysOnKeyring = GERUDO_FORTRESS_SMALL_KEY_MAX; break; diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index 6df24f7b8..7a499126d 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -144,7 +144,7 @@ typedef enum { LOGIC_SHADOW_TEMPLE_KEYS, LOGIC_BOTW_KEYS, LOGIC_GTG_KEYS, - LOGIC_GERUDO_FORTRESS_KEYS, + LOGIC_HIDEOUT_KEYS, LOGIC_GANONS_CASTLE_KEYS, LOGIC_TCG_KEYS, LOGIC_SKELETON_KEY, @@ -152,7 +152,7 @@ typedef enum { LOGIC_MARKET_BAZAAR_KEY, LOGIC_MARKET_POTION_SHOP_KEY, LOGIC_MASK_SHOP_KEY, - LOGIC_MARKET_SHOOTING_GALLERY_KEY, + LOGIC_MARKET_SHOOTING_KEY, LOGIC_BOMBCHU_BOWLING_KEY, LOGIC_TCG_BUILDING_KEY, LOGIC_BOMBCHU_SHOP_KEY, @@ -165,7 +165,7 @@ typedef enum { LOGIC_SKULLTULA_HOUSE_KEY, LOGIC_IMPAS_HOUSE_KEY, LOGIC_WINDMILL_KEY, - LOGIC_KAK_SHOOTING_GALLERY_KEY, + LOGIC_KAK_SHOOTING_KEY, LOGIC_DAMPES_HUT_KEY, LOGIC_TALONS_HOUSE_KEY, LOGIC_STABLES_KEY, @@ -3228,9 +3228,9 @@ typedef enum { RG_SHADOW_TEMPLE_SMALL_KEY, RG_BOTW_SMALL_KEY, RG_GTG_SMALL_KEY, - RG_TH_SMALL_KEY, + RG_HIDEOUT_SMALL_KEY, RG_GANONS_CASTLE_SMALL_KEY, - RG_TREASURE_GAME_SMALL_KEY, + RG_TCG_SMALL_KEY, RG_FOREST_TEMPLE_KEY_RING, RG_FIRE_TEMPLE_KEY_RING, RG_WATER_TEMPLE_KEY_RING, @@ -3238,9 +3238,9 @@ typedef enum { RG_SHADOW_TEMPLE_KEY_RING, RG_BOTW_KEY_RING, RG_GTG_KEY_RING, - RG_TH_KEY_RING, + RG_HIDEOUT_KEY_RING, RG_GANONS_CASTLE_KEY_RING, - RG_TREASURE_GAME_KEY_RING, + RG_TCG_KEY_RING, RG_KOKIRI_EMERALD, RG_GORON_RUBY, RG_ZORA_SAPPHIRE, @@ -4396,7 +4396,7 @@ typedef enum { RHT_SHADOW_TEMPLE_SMALL_KEY, RHT_BOTW_SMALL_KEY, RHT_GTG_SMALL_KEY, - RHT_GERUDO_FORTRESS_SMALL_KEY, + RHT_HIDEOUT_SMALL_KEY, RHT_GANONS_CASTLE_SMALL_KEY, RHT_TCG_SMALL_KEY, RHT_FOREST_TEMPLE_KEY_RING, @@ -4406,7 +4406,7 @@ typedef enum { RHT_SHADOW_TEMPLE_KEY_RING, RHT_BOTW_KEY_RING, RHT_GTG_KEY_RING, - RHT_GERUDO_FORTRESS_KEY_RING, + RHT_HIDEOUT_KEY_RING, RHT_GANONS_CASTLE_KEY_RING, RHT_TCG_KEY_RING, RHT_KOKIRI_EMERALD, diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 9b605a599..6a7f228e5 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -2149,7 +2149,7 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) { } } } else if (textId == TEXT_ITEM_KEY_SMALL) { - if (player->getItemEntry.getItemId == RG_TH_SMALL_KEY) { + if (player->getItemEntry.getItemId == RG_HIDEOUT_SMALL_KEY) { if (Randomizer_GetSettingValue(RSK_GERUDO_KEYS) != RO_GERUDO_KEYS_VANILLA) { messageEntry = Randomizer_GetCustomGetItemMessage(player); } From 98abe0879fd5f5fa186264f01c08567ad09e0aa0 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Wed, 26 Mar 2025 22:55:36 +0000 Subject: [PATCH 05/24] fix double item name --- .../randomizer/3drando/hint_list/hint_list_item.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index ea8154bc0..acdd6704d 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -1610,7 +1610,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a key to pots", /*german*/"!!!", /*french*/"!!!") }, - CustomMessage("Guard House Key", "Schlüssel für das Haus der Wachen", "!!!")); + CustomMessage("Guard House Key", "Schlüssel für das Haus der Wachen", ""/*!!!*/)); hintTextTable[RHT_MARKET_BAZAAR_KEY] = HintText(CustomMessage("Market Bazaar's key"), { From ef22b5ee8196ddbde9459ada38c307c4271e5ffd Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Wed, 26 Mar 2025 23:05:03 +0000 Subject: [PATCH 06/24] post-merge fixes --- .../randomizer/3drando/hint_list/hint_list_item.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index c4bf080b5..f94b3eea1 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -1691,7 +1691,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a townhouse's key", /*german*/"!!!", /*french*/"!!!") }, - CustomMessage("Alley House Key", "Schlüssel für das Gäßchenhaus", "")); + CustomMessage("Alley House Key", "Schlüssel für das Gassenhaus", "")); hintTextTable[RHT_KAK_BAZAAR_KEY] = HintText(CustomMessage("Kakariko Bazaar's key"), { @@ -2667,7 +2667,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a draconic soul", /*german*/"eine drakonische Seele", /*french*/""), CustomMessage("some magmatic essence", /*german*/"etwas magmatische Essenz", /*french*/"") }, - CustomMessage("Volvagia's Soul", "Volvagias Seele", "Âme de Vulcania")); + CustomMessage("Volvagia's Soul", "Volvagias Seele", "Âme de Volcania")); hintTextTable[RHT_MORPHA_SOUL] = HintText(CustomMessage("the soul of Morpha", /*german*/"die Seele Morphas", /*french*/""), { @@ -2780,7 +2780,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("sack of mice", /*german*/"ein Sack Mäuse", /*french*/"un Sac rempli de souris") }, - CustomMessage("Bombchu Bag", "Sac de Missiles Teigneux", "!!!")); + CustomMessage("Bombchu Bag", "Krabbelminentasche", "!!!")); hintTextTable[RHT_SKELETON_KEY] = HintText(CustomMessage("a Skeleton Key", /*german*/ "ein Universalschlüssel", /*french*/ "une Clé Squelette"), // /*spanish*/una Llave Maestra From 6dadbd20322bfcfe367e944b355e04829fe0ea8a Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Fri, 28 Mar 2025 17:37:27 +0000 Subject: [PATCH 07/24] cleanup some tables --- .../3drando/hint_list/hint_list_item.cpp | 436 +++++++++--------- .../Enhancements/randomizer/Plandomizer.cpp | 328 ++++++------- 2 files changed, 382 insertions(+), 382 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index f94b3eea1..eda9162cb 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -419,21 +419,21 @@ void StaticData::HintTable_Init_Item() { CustomMessage("Gold Skulltula Token", "Goldenes Skulltula-Symbol", "Symbole de Skulltula d'Or")); hintTextTable[RHT_POCKET_EGG] = HintText(CustomMessage("the Pocket Egg", /*german*/"das Ei", /*french*/"l'Oeuf de Poche"), - // /*spanish*/el huevo de bolsillo - { - CustomMessage("a trade quest item", /*german*/"ein Gegenstand einer Handelsmission", /*french*/"un objet de quête d'échanges"), - // /*spanish*/un objeto de una misión secundaria - CustomMessage("an egg", /*german*/"ein Ei", /*french*/"un oeuf") - // /*spanish*/un huevo - }, { - CustomMessage("a Cucco container", /*german*/"ein Hühnerbehälter", /*french*/"un réservoir à Cocotte"), - // /*spanish*/cuco contenido - CustomMessage("a Cucco, eventually", /*german*/"schlussendlich ein Huhn", /*french*/"un poussin éventuel"), - // /*spanish*/un futuro cuco - CustomMessage("a fowl youth", /*german*/"ein junges Geflügel", /*french*/"une omelette crue") - // /*spanish*/una dulce juventud - }, - CustomMessage("Pocket Egg", "Ei", "Oeuf de poche")); + // /*spanish*/el huevo de bolsillo + { + CustomMessage("a trade quest item", /*german*/"ein Gegenstand einer Handelsmission", /*french*/"un objet de quête d'échanges"), + // /*spanish*/un objeto de una misión secundaria + CustomMessage("an egg", /*german*/"ein Ei", /*french*/"un oeuf") + // /*spanish*/un huevo + }, { + CustomMessage("a Cucco container", /*german*/"ein Hühnerbehälter", /*french*/"un réservoir à Cocotte"), + // /*spanish*/cuco contenido + CustomMessage("a Cucco, eventually", /*german*/"schlussendlich ein Huhn", /*french*/"un poussin éventuel"), + // /*spanish*/un futuro cuco + CustomMessage("a fowl youth", /*german*/"ein junges Geflügel", /*french*/"une omelette crue") + // /*spanish*/una dulce juventud + }, + CustomMessage("Pocket Egg", "Ei", "Oeuf de poche")); hintTextTable[RHT_POCKET_CUCCO] = HintText(CustomMessage("the Pocket Cucco", /*german*/"Kiki", /*french*/"la Cocotte de Poche"), // /*spanish*/el cuco de bolsillo @@ -1199,17 +1199,17 @@ void StaticData::HintTable_Init_Item() { CustomMessage("Shadow Temple Map", "Karte des Schattentempels", "Carte du Temple de l'Ombre")); hintTextTable[RHT_BOTW_MAP] = HintText(CustomMessage("the Bottom of the Well Map", /*german*/"die Karte des Grund des Brunnens", /*french*/"la carte du fond du Puits"), - // /*spanish*/el mapa del Fondo del pozo - { - CustomMessage("a dungeon map", /*german*/"eine Karte", /*french*/"une carte") - // /*spanish*/un mapa - }, { - CustomMessage("a moldy atlas", /*german*/"ein schimmeliger Atlas", /*french*/"un atlas moisi"), - // /*spanish*/un atlas mohoso - CustomMessage("some moldy blueprints", /*german*/"einige schimmelige Blaupausen", /*french*/"un plan moisi") - // /*spanish*/unos planos mohosos - }, - CustomMessage("Bottom of the Well Map", "Karte des Grund des Brunnens", "Carte du Puits")); + // /*spanish*/el mapa del Fondo del pozo + { + CustomMessage("a dungeon map", /*german*/"eine Karte", /*french*/"une carte") + // /*spanish*/un mapa + }, { + CustomMessage("a moldy atlas", /*german*/"ein schimmeliger Atlas", /*french*/"un atlas moisi"), + // /*spanish*/un atlas mohoso + CustomMessage("some moldy blueprints", /*german*/"einige schimmelige Blaupausen", /*french*/"un plan moisi") + // /*spanish*/unos planos mohosos + }, + CustomMessage("Bottom of the Well Map", "Karte des Grund des Brunnens", "Carte du Puits")); hintTextTable[RHT_ICE_CAVERN_MAP] = HintText(CustomMessage("the Ice Cavern Map", /*german*/"die Karte der Eishöhle", /*french*/"la carte de la Caverne Polaire"), // /*spanish*/el mapa de la Caverna de hielo @@ -1329,17 +1329,17 @@ void StaticData::HintTable_Init_Item() { CustomMessage("Shadow Temple Compass", "Kompaß des Schattentempels", "Boussole du Temple de l'Ombre")); hintTextTable[RHT_BOTW_COMPASS] = HintText(CustomMessage("the Bottom of the Well Compass", /*german*/"der Kompaß des Grund des Brunnens", /*french*/"la boussole du fond du Puits"), - // /*spanish*/la brújula del Fondo del pozo - { - CustomMessage("a compass", /*german*/"ein Kompaß", /*french*/"une boussole") - // /*spanish*/una brújula - }, { - CustomMessage("a dank treasure tracker", /*german*/"ein feuchter Schatzfinder", /*french*/"un cherche-trésor moisi"), - // /*spanish*/un zahorí mohoso - CustomMessage("a dank magnetic needle", /*german*/"eine feuchte Magnetnadel", /*french*/"une aimant moisi") - // /*spanish*/un imán mohoso - }, - CustomMessage("Bottom of the Well Compass", "Kompaß des Grund des Brunnens", "Boussole du Puits")); + // /*spanish*/la brújula del Fondo del pozo + { + CustomMessage("a compass", /*german*/"ein Kompaß", /*french*/"une boussole") + // /*spanish*/una brújula + }, { + CustomMessage("a dank treasure tracker", /*german*/"ein feuchter Schatzfinder", /*french*/"un cherche-trésor moisi"), + // /*spanish*/un zahorí mohoso + CustomMessage("a dank magnetic needle", /*german*/"eine feuchte Magnetnadel", /*french*/"une aimant moisi") + // /*spanish*/un imán mohoso + }, + CustomMessage("Bottom of the Well Compass", "Kompaß des Grund des Brunnens", "Boussole du Puits")); hintTextTable[RHT_ICE_CAVERN_COMPASS] = HintText(CustomMessage("the Ice Cavern Compass", /*german*/"der Kompaß der Eishöhle", /*french*/"la Boussole de la Caverne Polaire"), // /*spanish*/la brújula de la Caverna de hielo @@ -1518,144 +1518,144 @@ void StaticData::HintTable_Init_Item() { CustomMessage("Shadow Temple Small Key", "Petite Clé du Temple de l'Ombre", "Kleiner Schlüssel für den Schattentempel")); hintTextTable[RHT_GTG_SMALL_KEY] = HintText(CustomMessage("a Gerudo Training Ground Small Key", /*german*/"ein kleiner Schlüssel des Gerudo-Trainingsgeländes", /*french*/"une petite clé du Gymnase Gerudo"), - // /*spanish*/una llave pequeña del Centro de Instrucción Gerudo - { - CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") - // /*spanish*/una llave pequeña - }, { - CustomMessage("a labyrinthian tool for unlocking", /*german*/"ein labyrinthisches Werkzeug zur Entschlüsselung", /*french*/"un anti-porte labyrinthique"), - // /*spanish*/una clave de una entrada laberíntica - CustomMessage("a labyrinthian dungeon pass", /*german*/"ein labyrinthischer Dungeon-Pass", /*french*/"le rêve labyrinthique d'un prisonnier"), - // /*spanish*/un pase de una mazmorra laberíntica - CustomMessage("a labyrinthian lock remover", /*german*/"ein labyrinthischer Schlossentferner", /*french*/"un efface-serrure labyrinthique"), - // /*spanish*/un destructor de cerraduras laberíntica - CustomMessage("a labyrinthian lockpick", /*german*/"ein labyrinthischer Dietrich", /*french*/"un crochet à porte labyrinthique") - // /*spanish*/una apertura portentosa laberíntica - }, - CustomMessage("Training Ground Small Key", "Kleiner Schlüssel für das Gerudo-Trainingsgelände", "Petite Clé du Gymnase Gerudo")); + // /*spanish*/una llave pequeña del Centro de Instrucción Gerudo + { + CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") + // /*spanish*/una llave pequeña + }, { + CustomMessage("a labyrinthian tool for unlocking", /*german*/"ein labyrinthisches Werkzeug zur Entschlüsselung", /*french*/"un anti-porte labyrinthique"), + // /*spanish*/una clave de una entrada laberíntica + CustomMessage("a labyrinthian dungeon pass", /*german*/"ein labyrinthischer Dungeon-Pass", /*french*/"le rêve labyrinthique d'un prisonnier"), + // /*spanish*/un pase de una mazmorra laberíntica + CustomMessage("a labyrinthian lock remover", /*german*/"ein labyrinthischer Schlossentferner", /*french*/"un efface-serrure labyrinthique"), + // /*spanish*/un destructor de cerraduras laberíntica + CustomMessage("a labyrinthian lockpick", /*german*/"ein labyrinthischer Dietrich", /*french*/"un crochet à porte labyrinthique") + // /*spanish*/una apertura portentosa laberíntica + }, + CustomMessage("Training Ground Small Key", "Kleiner Schlüssel für das Gerudo-Trainingsgelände", "Petite Clé du Gymnase Gerudo")); hintTextTable[RHT_HIDEOUT_SMALL_KEY] = HintText(CustomMessage("a Gerudo Fortress Small Key", /*german*/"ein kleiner Schlüssel für die Gerudo-Festung", /*french*/"une petite clé de la Repaire des Voleurs"), - // /*spanish*/una llave pequeña de la Fortaleza Gerudo - { - CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") - // /*spanish*/una llave pequeña - }, { - CustomMessage("an imprisoned tool for unlocking", /*german*/"ein gefangenes Werkzeug zur Entschlüsselung", /*french*/"un anti-porte emprisonné"), - // /*spanish*/una clave de una entrada encarcelada - CustomMessage("an imprisoned dungeon pass", /*german*/"ein gefangener Dungeon-Pass", /*french*/"le rêve emprisonné d'un prisonnier"), - // /*spanish*/un pase de una mazmorra encarcelada - CustomMessage("an imprisoned lock remover", /*german*/"ein gefangener Schlossentferner", /*french*/"un efface-serrure emprisonné"), - // /*spanish*/un destructor de cerraduras encarcelada - CustomMessage("an imprisoned lockpick", /*german*/"ein gefangener Dietrich", /*french*/"un crochet à porte emprisonné") - // /*spanish*/una apertura portentosa encarcelada - }, - CustomMessage("Gerudo Fortress Small Key", "Kleiner Schlüssel für die Gerudo-Festung", "Petite Clé du Repaire des Voleurs")); + // /*spanish*/una llave pequeña de la Fortaleza Gerudo + { + CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") + // /*spanish*/una llave pequeña + }, { + CustomMessage("an imprisoned tool for unlocking", /*german*/"ein gefangenes Werkzeug zur Entschlüsselung", /*french*/"un anti-porte emprisonné"), + // /*spanish*/una clave de una entrada encarcelada + CustomMessage("an imprisoned dungeon pass", /*german*/"ein gefangener Dungeon-Pass", /*french*/"le rêve emprisonné d'un prisonnier"), + // /*spanish*/un pase de una mazmorra encarcelada + CustomMessage("an imprisoned lock remover", /*german*/"ein gefangener Schlossentferner", /*french*/"un efface-serrure emprisonné"), + // /*spanish*/un destructor de cerraduras encarcelada + CustomMessage("an imprisoned lockpick", /*german*/"ein gefangener Dietrich", /*french*/"un crochet à porte emprisonné") + // /*spanish*/una apertura portentosa encarcelada + }, + CustomMessage("Gerudo Fortress Small Key", "Kleiner Schlüssel für die Gerudo-Festung", "Petite Clé du Repaire des Voleurs")); hintTextTable[RHT_BOTW_SMALL_KEY] = HintText(CustomMessage("a Bottom of the Well Small Key", /*german*/"ein kleiner Schlüssel des Grund des Brunnens", /*french*/"une petite clé du fond du Puits"), - // /*spanish*/una llave pequeña del Fondo del pozo - { - CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") - // /*spanish*/una llave pequeña - }, { - CustomMessage("a moldy tool for unlocking", /*german*/"ein schimmeliges Werkzeug zur Entschlüsselung", /*french*/"un anti-porte moisi"), - // /*spanish*/una clave de una entrada mohosa - CustomMessage("a moldy dungeon pass", /*german*/"ein schimmeliger Dungeon-Pass", /*french*/"le rêve moisi d'un prisonnier"), - // /*spanish*/un pase de una mazmorra mohosa - CustomMessage("a moldy lock remover", /*german*/"ein schimmeliger Schlossentferner", /*french*/"un efface-serrure moisi"), - // /*spanish*/un destructor de cerraduras mohosa - CustomMessage("a moldy lockpick", /*german*/"ein schimmeliger Dietrich", /*french*/"un crochet à porte moisi") - // /*spanish*/una apertura portentosa mohosa - }, - CustomMessage("Bottom of the Well Small Key", "Kleiner Schlüssel für den Grund des Brunnens", "Petite Clé du Puits")); - - hintTextTable[RHT_GANONS_CASTLE_SMALL_KEY] = HintText(CustomMessage("a Ganon's Castle Small Key", /*german*/"ein kleiner Schlüssel für Ganons Schloß", /*french*/"une petite clé du Château de Ganon"), - // /*spanish*/una llave pequeña del Castillo de Ganon - { - CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") - // /*spanish*/una llave pequeña - }, { - CustomMessage("a final tool for unlocking", /*german*/"ein finales Werkzeug zur Entschlüsselung", /*french*/"un anti-porte final"), - // /*spanish*/una clave de una entrada final - CustomMessage("a final dungeon pass", /*german*/"ein finaler Dungeon-Pass", /*french*/"le rêve final d'un prisonnier"), - // /*spanish*/un pase de una mazmorra final - CustomMessage("a final lock remover", /*german*/"ein finaler Schlossentferner", /*french*/"un efface-serrure final"), - // /*spanish*/un destructor de cerraduras final - CustomMessage("a final lockpick", /*german*/"ein finaler Dietrich", /*french*/"un crochet à porte final") - // /*spanish*/una apertura portentosa final - }, - CustomMessage("Ganon's Castle Small Key", "Kleiner Schlüssel für Ganons Schloß", "Petite Clé du Château de Ganon")); + // /*spanish*/una llave pequeña del Fondo del pozo + { + CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") + // /*spanish*/una llave pequeña + }, { + CustomMessage("a moldy tool for unlocking", /*german*/"ein schimmeliges Werkzeug zur Entschlüsselung", /*french*/"un anti-porte moisi"), + // /*spanish*/una clave de una entrada mohosa + CustomMessage("a moldy dungeon pass", /*german*/"ein schimmeliger Dungeon-Pass", /*french*/"le rêve moisi d'un prisonnier"), + // /*spanish*/un pase de una mazmorra mohosa + CustomMessage("a moldy lock remover", /*german*/"ein schimmeliger Schlossentferner", /*french*/"un efface-serrure moisi"), + // /*spanish*/un destructor de cerraduras mohosa + CustomMessage("a moldy lockpick", /*german*/"ein schimmeliger Dietrich", /*french*/"un crochet à porte moisi") + // /*spanish*/una apertura portentosa mohosa + }, + CustomMessage("Bottom of the Well Small Key", "Kleiner Schlüssel für den Grund des Brunnens", "Petite Clé du Puits")); + + hintTextTable[RHT_GANONS_CASTLE_SMALL_KEY] = HintText(CustomMessage("a Ganon's Castle Small Key", /*german*/"ein kleiner Schlüssel für Ganons Schloß", /*french*/"une petite clé du Château de Ganon"), + // /*spanish*/una llave pequeña del Castillo de Ganon + { + CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") + // /*spanish*/una llave pequeña + }, { + CustomMessage("a final tool for unlocking", /*german*/"ein finales Werkzeug zur Entschlüsselung", /*french*/"un anti-porte final"), + // /*spanish*/una clave de una entrada final + CustomMessage("a final dungeon pass", /*german*/"ein finaler Dungeon-Pass", /*french*/"le rêve final d'un prisonnier"), + // /*spanish*/un pase de una mazmorra final + CustomMessage("a final lock remover", /*german*/"ein finaler Schlossentferner", /*french*/"un efface-serrure final"), + // /*spanish*/un destructor de cerraduras final + CustomMessage("a final lockpick", /*german*/"ein finaler Dietrich", /*french*/"un crochet à porte final") + // /*spanish*/una apertura portentosa final + }, + CustomMessage("Ganon's Castle Small Key", "Kleiner Schlüssel für Ganons Schloß", "Petite Clé du Château de Ganon")); hintTextTable[RHT_TCG_SMALL_KEY] = HintText(CustomMessage("a Treasure Chest Shop Small Key", /*german*/"ein kleiner Schlüssel des Schatztruhenladens", /*french*/"une petite clé de la chasse aux trésors"), - // /*spanish*/una llave pequeña del Cofre del Tesoro - { - CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") - // /*spanish*/una llave pequeña - }, { - CustomMessage("a gambler's tool for unlocking", /*german*/"ein Spieler-Werkzeug zur Entschlüsselung", /*french*/"un anti-porte de parieur"), - // /*spanish*/una clave de un juego de azar - CustomMessage("a gambler's dungeon pass", /*german*/"ein Spieler-Dungeon-Pass", /*french*/"le rêve d'un prisonnier parieur"), - // /*spanish*/un pase de un juego de azar - CustomMessage("a gambler's lock remover", /*german*/"ein Spieler-Schlossentferner", /*french*/"un efface-serrure de parieur"), - // /*spanish*/un destructor de cerraduras del juego de azar - CustomMessage("a gambler's lockpick", /*german*/"ein Spieler-Dietrich", /*french*/"un crochet à serrure de parieur") - // /*spanish*/una apertura portentosa del juego de azar - }, - CustomMessage("Chest Game Small Key", "Kleiner Schlüssel für das Truhenspiel", "Petite Clé du jeu la Chasse-aux-Trésors")); + // /*spanish*/una llave pequeña del Cofre del Tesoro + { + CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") + // /*spanish*/una llave pequeña + }, { + CustomMessage("a gambler's tool for unlocking", /*german*/"ein Spieler-Werkzeug zur Entschlüsselung", /*french*/"un anti-porte de parieur"), + // /*spanish*/una clave de un juego de azar + CustomMessage("a gambler's dungeon pass", /*german*/"ein Spieler-Dungeon-Pass", /*french*/"le rêve d'un prisonnier parieur"), + // /*spanish*/un pase de un juego de azar + CustomMessage("a gambler's lock remover", /*german*/"ein Spieler-Schlossentferner", /*french*/"un efface-serrure de parieur"), + // /*spanish*/un destructor de cerraduras del juego de azar + CustomMessage("a gambler's lockpick", /*german*/"ein Spieler-Dietrich", /*french*/"un crochet à serrure de parieur") + // /*spanish*/una apertura portentosa del juego de azar + }, + CustomMessage("Chest Game Small Key", "Kleiner Schlüssel für das Truhenspiel", "Petite Clé du jeu la Chasse-aux-Trésors")); hintTextTable[RHT_GUARD_HOUSE_KEY] = HintText(CustomMessage("the Guard House's key"), - { - CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") - // /*spanish*/una llave del mundo exterior - }, { - CustomMessage("a key to pots", /*german*/"!!!", /*french*/"!!!") - }, - CustomMessage("Guard House Key", "Schlüssel für das Haus der Wachen", ""/*!!!*/)); + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("a key to pots", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Guard House Key", "Schlüssel für das Haus der Wachen", ""/*!!!*/)); hintTextTable[RHT_MARKET_BAZAAR_KEY] = HintText(CustomMessage("Market Bazaar's key"), - { - CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") - // /*spanish*/una llave del mundo exterior - }, { - CustomMessage("a child's shopping key", /*german*/"!!!", /*french*/"!!!") - }, - CustomMessage("Market Bazaar Key", "Schlüssel für den Basar des Marktes", "")); + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("a child's shopping key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Market Bazaar Key", "Schlüssel für den Basar des Marktes", "")); hintTextTable[RHT_MARKET_POTION_SHOP_KEY] = HintText(CustomMessage("the Market Potion Shop's key"), - { - CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") - // /*spanish*/una llave del mundo exterior - }, { - CustomMessage("past potion's key", /*german*/"!!!", /*french*/"!!!") - }, - CustomMessage("Market Potion Shop Key", "Schlüssel für den Magie-Laden des Marktes", "")); + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("past potion's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Market Potion Shop Key", "Schlüssel für den Magie-Laden des Marktes", "")); hintTextTable[RHT_MASK_SHOP_KEY] = HintText(CustomMessage("the Mask Shop's key"), - { - CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") - // /*spanish*/una llave del mundo exterior - }, { - CustomMessage("the masqurade's key", /*german*/"!!!", /*french*/"!!!") - }, - CustomMessage("Mask Shop Key", "Schlüssel für den Maskenladen", "")); + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("the masqurade's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Mask Shop Key", "Schlüssel für den Maskenladen", "")); hintTextTable[RHT_MARKET_SHOOTING_KEY] = HintText(CustomMessage("Market Shooting Gallery's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the slingshot range's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("slingshot shooting's key", /*german*/"!!!", /*french*/"!!!") }, CustomMessage("Market Shooting Gallery Key", "Schlüssel für die Schießbude des Marktes", "")); hintTextTable[RHT_BOMBCHU_BOWLING_KEY] = HintText(CustomMessage("Bombchu Bowling's key"), - { - CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") - // /*spanish*/una llave del mundo exterior - }, { - CustomMessage("mouse golf's key", /*german*/"!!!", /*french*/"!!!") - }, - CustomMessage("Bombchu Bowling Alley Key", "Schlüssel für die Minenbowlingbahn", "")); + { + CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") + // /*spanish*/una llave del mundo exterior + }, { + CustomMessage("mouse golf's key", /*german*/"!!!", /*french*/"!!!") + }, + CustomMessage("Bombchu Bowling Alley Key", "Schlüssel für die Minenbowlingbahn", "")); hintTextTable[RHT_TCG_BUILDING_KEY] = HintText(CustomMessage("Treasure Chest Game Building's key"), { @@ -1752,7 +1752,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the pinwheel's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the grain grinder's key", /*german*/"!!!", /*french*/"!!!") }, CustomMessage("Windmill Key", "Schlüssel für die Windmühle", "")); @@ -1761,7 +1761,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the archery range's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("bow shooting's key", /*german*/"!!!", /*french*/"!!!") }, CustomMessage("Kakariko Shooting Gallery Key", "Schlüssel für die Schießbude von Kakariko", "")); @@ -1905,55 +1905,55 @@ void StaticData::HintTable_Init_Item() { CustomMessage("Shadow Temple Key Ring", "Schlüsselbund für den Schattentempel", "Trousseau du Temple de l'Ombre")); hintTextTable[RHT_GTG_KEY_RING] = HintText(CustomMessage("a Gerudo Training Ground Key Ring", /*german*/"ein Schlüsselbund des Gerudo-Trainingsgeländes", /*french*/"un trousseau de clés du Gymnase Gerudo"), - // /*spanish*/un llavero del Centro de Instrucción Gerudo - { - CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") - // /*spanish*/un llavero - }, { - CustomMessage("a labyrinthian toolbox for unlocking", /*german*/"eine labyrinthische Werkzeugkiste zur Entschlüsselung", /*french*/"des anti-portes labyrinthiques"), - // /*spanish*/un conjunto laberíntico de cerrajero - CustomMessage("a labyrinthian dungeon season pass", /*german*/"ein labyrinthischer Dungeon-Season-Pass", /*french*/"les rêves labyrinthiques d'un prisonnier"), - // /*spanish*/un pase vip de mazmorras laberíntico - CustomMessage("a labyrinthian jingling ring", /*german*/"ein labyrinthischer Multifunktionsschlüssel", /*french*/"des efface-serrures labyrinthiques"), - // /*spanish*/una cadena multiusos laberíntica - CustomMessage("a labyrinthian skeleton key", /*german*/"ein labyrinthischer Skelettschlüssel", /*french*/"des crochets à porte labyrinthiques") - // /*spanish*/un anillo laberíntico contra cerrojos - }, - CustomMessage("Training Ground Key Ring", "Schlüsselbund für das Gerudo-Trainingsgelände", "Trousseau du Gymnase Gerudo")); + // /*spanish*/un llavero del Centro de Instrucción Gerudo + { + CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") + // /*spanish*/un llavero + }, { + CustomMessage("a labyrinthian toolbox for unlocking", /*german*/"eine labyrinthische Werkzeugkiste zur Entschlüsselung", /*french*/"des anti-portes labyrinthiques"), + // /*spanish*/un conjunto laberíntico de cerrajero + CustomMessage("a labyrinthian dungeon season pass", /*german*/"ein labyrinthischer Dungeon-Season-Pass", /*french*/"les rêves labyrinthiques d'un prisonnier"), + // /*spanish*/un pase vip de mazmorras laberíntico + CustomMessage("a labyrinthian jingling ring", /*german*/"ein labyrinthischer Multifunktionsschlüssel", /*french*/"des efface-serrures labyrinthiques"), + // /*spanish*/una cadena multiusos laberíntica + CustomMessage("a labyrinthian skeleton key", /*german*/"ein labyrinthischer Skelettschlüssel", /*french*/"des crochets à porte labyrinthiques") + // /*spanish*/un anillo laberíntico contra cerrojos + }, + CustomMessage("Training Ground Key Ring", "Schlüsselbund für das Gerudo-Trainingsgelände", "Trousseau du Gymnase Gerudo")); hintTextTable[RHT_HIDEOUT_KEY_RING] = HintText(CustomMessage("a Gerudo Fortress Key Ring", /*german*/"ein Schlüsselbund der Gerudo-Festung", /*french*/"un trousseau de clés de la Repaire des Voleurs"), - // /*spanish*/un llavero de la Fortaleza Gerudo - { - CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") - // /*spanish*/un llavero - }, { - CustomMessage("an imprisoned toolbox for unlocking", /*german*/"eine gefangene Werkzeugkiste zur Entschlüsselung", /*french*/"des anti-portes emprisonnés"), - // /*spanish*/un conjunto enjaulado de cerrajero - CustomMessage("an imprisoned dungeon season pass", /*german*/"ein gefangener Dungeon-Season-Pass", /*french*/"les rêves emprisonnés d'un prisonnier"), - // /*spanish*/un pase vip de una mazmorra enjaulado - CustomMessage("an imprisoned jingling ring", /*german*/"ein gefangener Multifunktionsschlüssel", /*french*/"des efface-serrures emprisonnés"), - // /*spanish*/una cadena multiusos enjaulada - CustomMessage("an imprisoned skeleton key", /*german*/"ein gefangener Skelettschlüssel", /*french*/"des crochets à porte emprisonnés") - // /*spanish*/un anillo enjaulado contra cerrojos - }, - CustomMessage("Gerudo Fortress Key Ring", "Schlüsselbund für die Gerudo-Festung", "Trousseau du Repaire des Voleurs")); + // /*spanish*/un llavero de la Fortaleza Gerudo + { + CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") + // /*spanish*/un llavero + }, { + CustomMessage("an imprisoned toolbox for unlocking", /*german*/"eine gefangene Werkzeugkiste zur Entschlüsselung", /*french*/"des anti-portes emprisonnés"), + // /*spanish*/un conjunto enjaulado de cerrajero + CustomMessage("an imprisoned dungeon season pass", /*german*/"ein gefangener Dungeon-Season-Pass", /*french*/"les rêves emprisonnés d'un prisonnier"), + // /*spanish*/un pase vip de una mazmorra enjaulado + CustomMessage("an imprisoned jingling ring", /*german*/"ein gefangener Multifunktionsschlüssel", /*french*/"des efface-serrures emprisonnés"), + // /*spanish*/una cadena multiusos enjaulada + CustomMessage("an imprisoned skeleton key", /*german*/"ein gefangener Skelettschlüssel", /*french*/"des crochets à porte emprisonnés") + // /*spanish*/un anillo enjaulado contra cerrojos + }, + CustomMessage("Gerudo Fortress Key Ring", "Schlüsselbund für die Gerudo-Festung", "Trousseau du Repaire des Voleurs")); hintTextTable[RHT_BOTW_KEY_RING] = HintText(CustomMessage("a Bottom of the Well Key Ring", /*german*/"ein Schlüsselbund des Grund des Brunnens", /*french*/"un trousseau de clés du fond du Puits"), - // /*spanish*/un llavero del Fondo del pozo - { - CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") - // /*spanish*/un llavero - }, { - CustomMessage("a moldy toolbox for unlocking", /*german*/"eine schimmelige Werkzeugkiste zur Entschlüsselung", /*french*/"des anti-portes moisis"), - // /*spanish*/un conjunto subterráneo de cerrajero - CustomMessage("a moldy dungeon season pass", /*german*/"ein schimmeliger Dungeon-Season-Pass", /*french*/"les rêves moisis d'un prisonnier"), - // /*spanish*/un pase vip de una mazmorra subterráneo - CustomMessage("a moldy jingling ring", /*german*/"ein schimmeliger Multifunktionsschlüssel", /*french*/"des efface-serrures moisis"), - // /*spanish*/una cadena multiusos subterránea - CustomMessage("a moldy skeleton key", /*german*/"ein schimmeliger Skelettschlüssel", /*french*/"des crochets à porte moisis") - // /*spanish*/un anillo subterráneo contra cerrojos - }, - CustomMessage("Bottom of the Well Key Ring", "Schlüsselbund für den Grund des Brunnens", "Trousseau du Puits")); + // /*spanish*/un llavero del Fondo del pozo + { + CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") + // /*spanish*/un llavero + }, { + CustomMessage("a moldy toolbox for unlocking", /*german*/"eine schimmelige Werkzeugkiste zur Entschlüsselung", /*french*/"des anti-portes moisis"), + // /*spanish*/un conjunto subterráneo de cerrajero + CustomMessage("a moldy dungeon season pass", /*german*/"ein schimmeliger Dungeon-Season-Pass", /*french*/"les rêves moisis d'un prisonnier"), + // /*spanish*/un pase vip de una mazmorra subterráneo + CustomMessage("a moldy jingling ring", /*german*/"ein schimmeliger Multifunktionsschlüssel", /*french*/"des efface-serrures moisis"), + // /*spanish*/una cadena multiusos subterránea + CustomMessage("a moldy skeleton key", /*german*/"ein schimmeliger Skelettschlüssel", /*french*/"des crochets à porte moisis") + // /*spanish*/un anillo subterráneo contra cerrojos + }, + CustomMessage("Bottom of the Well Key Ring", "Schlüsselbund für den Grund des Brunnens", "Trousseau du Puits")); hintTextTable[RHT_GANONS_CASTLE_KEY_RING] = HintText(CustomMessage("a Ganon's Castle Key Ring", /*german*/"ein Schlüsselbund von Ganons Schloß", /*french*/"un trousseau de clés du Château de Ganon"), // /*spanish*/un llavero del Castillo de Ganon @@ -1973,16 +1973,16 @@ void StaticData::HintTable_Init_Item() { CustomMessage("Ganon's Castle Key Ring", "Schlüsselbund für Ganons Schloß", "Trousseau du Château de Ganon")); hintTextTable[RHT_TCG_KEY_RING] = HintText(CustomMessage("a Chest Game Key Ring"), - { - CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") - // /*spanish*/un llavero - }, { - CustomMessage("a gambler's toolbox for unlocking"), - CustomMessage("a gambler's season pass"), - CustomMessage("a gambler's jingling ring"), - CustomMessage("a gambler's skeleton key") - }, - CustomMessage("Chest Game Key Ring", "Trousseau du jeu la Chasse-aux-Trésors", "Schlüsselbund für das Truhenspiel")); + { + CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") + // /*spanish*/un llavero + }, { + CustomMessage("a gambler's toolbox for unlocking"),//"!!!" + CustomMessage("a gambler's season pass"), + CustomMessage("a gambler's jingling ring"), + CustomMessage("a gambler's skeleton key") + }, + CustomMessage("Chest Game Key Ring", "Trousseau du jeu la Chasse-aux-Trésors", "Schlüsselbund für das Truhenspiel")); hintTextTable[RHT_KOKIRI_EMERALD] = HintText(CustomMessage("the Kokiri Emerald", /*german*/"der Kokiri-Smaragd", /*french*/"l'Émeraude Kokiri"), // /*spanish*/la Esmeralda de los Kokiri @@ -2481,15 +2481,15 @@ void StaticData::HintTable_Init_Item() { CustomMessage("Piece of Heart (WINNER)", "Herzstück (Schatztruhenminispiel)", "Quart de Coeur (Chasse-aux-Trésors)")); hintTextTable[RHT_LOSER_GREEN_RUPEE] = HintText(CustomMessage("a Green Rupee", /*german*/"ein grüner Rubin", /*french*/"un rubis vert"), - // /*spanish*/una rupia verde - { - CustomMessage("some rupees", /*german*/"einige Rubine", /*french*/"une quantité de rubis") - // /*spanish*/una cantidad de rupias - }, { - CustomMessage("the dollar of defeat", /*german*/"der Rubin der Niederlage", /*french*/"le rubis de la défaite") - // /*spanish*/el peso de la derrota - }, - CustomMessage("Green Rupee (LOSER)", "Grüner Rubin (Schatztruhenminispiel)", "Rubis Vert (Chasse-aux-Trésors)")); + // /*spanish*/una rupia verde + { + CustomMessage("some rupees", /*german*/"einige Rubine", /*french*/"une quantité de rubis") + // /*spanish*/una cantidad de rupias + }, { + CustomMessage("the dollar of defeat", /*german*/"der Rubin der Niederlage", /*french*/"le rubis de la défaite") + // /*spanish*/el peso de la derrota + }, + CustomMessage("Green Rupee (LOSER)", "Grüner Rubin (Schatztruhenminispiel)", "Rubis Vert (Chasse-aux-Trésors)")); hintTextTable[RHT_BUY_DEKU_NUTS_5] = HintText(CustomMessage("Deku Nuts", /*german*/"!!!", /*french*/"!!!"), {}, {}, @@ -2773,9 +2773,9 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_BOMBCHU_BAG] = HintText(CustomMessage("a Bombchu Bag", /*german*/"eine Krabbelminentasche", /*french*/"un Sac de Missiles Teigneux"), { - CustomMessage("explosives", /*german*/"ein Explosivpaket", /*french*/"un paquet d'explosifs"), + CustomMessage("explosives", /*german*/"ein Explosivpaket", /*french*/"un paquet d'explosifs"), // /*spanish*/un montón de explosivos - CustomMessage("something that can remove boulders", /*german*/"etwas, das Geröll entfernen kann", /*french*/"une chose qui enlève les rochers") + CustomMessage("something that can remove boulders", /*german*/"etwas, das Geröll entfernen kann", /*french*/"une chose qui enlève les rochers") // /*spanish*/algo que pueda quitar rocas }, { CustomMessage("sack of mice", /*german*/"ein Sack Mäuse", /*french*/"un Sac rempli de souris") diff --git a/soh/soh/Enhancements/randomizer/Plandomizer.cpp b/soh/soh/Enhancements/randomizer/Plandomizer.cpp index 6f724f89d..ed063eb0c 100644 --- a/soh/soh/Enhancements/randomizer/Plandomizer.cpp +++ b/soh/soh/Enhancements/randomizer/Plandomizer.cpp @@ -100,170 +100,170 @@ std::vector infiniteItemList = { }; std::unordered_map itemImageMap = { - { RG_NONE, "ITEM_SOLD_OUT" }, - { RG_KOKIRI_SWORD, "ITEM_SWORD_KOKIRI" }, - { RG_GIANTS_KNIFE, "ITEM_SWORD_KNIFE" }, - { RG_BIGGORON_SWORD, "ITEM_SWORD_BGS" }, - { RG_DEKU_SHIELD, "ITEM_SHIELD_DEKU" }, - { RG_HYLIAN_SHIELD, "ITEM_SHIELD_HYLIAN" }, - { RG_MIRROR_SHIELD, "ITEM_SHIELD_MIRROR" }, - { RG_GORON_TUNIC, "ITEM_TUNIC_GORON" }, - { RG_ZORA_TUNIC, "ITEM_TUNIC_ZORA" }, - { RG_IRON_BOOTS, "ITEM_BOOTS_IRON" }, - { RG_HOVER_BOOTS, "ITEM_BOOTS_HOVER" }, - { RG_BOOMERANG, "ITEM_BOOMERANG" }, - { RG_LENS_OF_TRUTH, "ITEM_LENS" }, - { RG_MEGATON_HAMMER, "ITEM_HAMMER" }, - { RG_STONE_OF_AGONY, "ITEM_STONE_OF_AGONY" }, - { RG_DINS_FIRE, "ITEM_DINS_FIRE" }, - { RG_FARORES_WIND, "ITEM_FARORES_WIND" }, - { RG_NAYRUS_LOVE, "ITEM_NAYRUS_LOVE" }, - { RG_FIRE_ARROWS, "ITEM_ARROW_FIRE" }, - { RG_ICE_ARROWS, "ITEM_ARROW_ICE" }, - { RG_LIGHT_ARROWS, "ITEM_ARROW_LIGHT" }, - { RG_GERUDO_MEMBERSHIP_CARD, "ITEM_GERUDO_CARD" }, - { RG_MAGIC_BEAN, "ITEM_BEAN" }, - { RG_MAGIC_BEAN_PACK, "ITEM_BEAN" }, - { RG_DOUBLE_DEFENSE, "ITEM_HEART_CONTAINER" }, - { RG_WEIRD_EGG, "ITEM_WEIRD_EGG" }, - { RG_ZELDAS_LETTER, "ITEM_LETTER_ZELDA" }, - { RG_POCKET_EGG, "ITEM_POCKET_EGG" }, - { RG_COJIRO, "ITEM_COJIRO" }, - { RG_ODD_MUSHROOM, "ITEM_ODD_MUSHROOM" }, - { RG_ODD_POTION, "ITEM_ODD_POTION" }, - { RG_POACHERS_SAW, "ITEM_SAW" }, - { RG_BROKEN_SWORD, "ITEM_SWORD_BROKEN" }, - { RG_PRESCRIPTION, "ITEM_PRESCRIPTION" }, - { RG_EYEBALL_FROG, "ITEM_FROG" }, - { RG_EYEDROPS, "ITEM_EYEDROPS" }, - { RG_CLAIM_CHECK, "ITEM_CLAIM_CHECK" }, - { RG_GOLD_SKULLTULA_TOKEN, "ITEM_SKULL_TOKEN" }, - { RG_PROGRESSIVE_HOOKSHOT, "ITEM_HOOKSHOT" }, - { RG_PROGRESSIVE_STRENGTH, "ITEM_BRACELET" }, - { RG_PROGRESSIVE_BOMB_BAG, "ITEM_BOMB_BAG_30" }, - { RG_PROGRESSIVE_BOW, "ITEM_QUIVER_30" }, - { RG_PROGRESSIVE_SLINGSHOT, "ITEM_SLINGSHOT" }, - { RG_PROGRESSIVE_WALLET, "ITEM_WALLET_ADULT" }, - { RG_PROGRESSIVE_SCALE, "ITEM_SCALE_SILVER" }, - { RG_PROGRESSIVE_NUT_BAG, "ITEM_NUT" }, - { RG_PROGRESSIVE_STICK_BAG, "ITEM_STICK" }, - { RG_PROGRESSIVE_BOMBCHUS, "ITEM_BOMBCHU" }, - { RG_PROGRESSIVE_MAGIC, "ITEM_MAGIC_SMALL" }, - { RG_MAGIC_SINGLE, "ITEM_MAGIC_SMALL" }, - { RG_MAGIC_DOUBLE, "ITEM_MAGIC_LARGE" }, - { RG_PROGRESSIVE_OCARINA, "ITEM_OCARINA_FAIRY" }, - { RG_PROGRESSIVE_GORONSWORD, "ITEM_SWORD_BGS" }, - { RG_EMPTY_BOTTLE, "ITEM_BOTTLE" }, - { RG_BOTTLE_WITH_MILK, "ITEM_MILK_BOTTLE" }, - { RG_BOTTLE_WITH_RED_POTION, "ITEM_POTION_RED" }, - { RG_BOTTLE_WITH_GREEN_POTION, "ITEM_POTION_GREEN" }, - { RG_BOTTLE_WITH_BLUE_POTION, "ITEM_POTION_BLUE" }, - { RG_BOTTLE_WITH_FAIRY, "ITEM_FAIRY" }, - { RG_BOTTLE_WITH_FISH, "ITEM_FISH" }, - { RG_BOTTLE_WITH_BLUE_FIRE, "ITEM_BLUE_FIRE" }, - { RG_BOTTLE_WITH_BUGS, "ITEM_BUG" }, - { RG_BOTTLE_WITH_POE, "ITEM_POE" }, - { RG_RUTOS_LETTER, "ITEM_LETTER_RUTO" }, - { RG_BOTTLE_WITH_BIG_POE, "ITEM_BIG_POE" }, - { RG_ZELDAS_LULLABY, "ITEM_SONG_LULLABY" }, - { RG_EPONAS_SONG, "ITEM_SONG_EPONA" }, - { RG_SARIAS_SONG, "ITEM_SONG_SARIA" }, - { RG_SUNS_SONG, "ITEM_SONG_SUN" }, - { RG_SONG_OF_TIME, "ITEM_SONG_TIME" }, - { RG_SONG_OF_STORMS, "ITEM_SONG_STORMS" }, - { RG_MINUET_OF_FOREST, "ITEM_SONG_MINUET" }, - { RG_BOLERO_OF_FIRE, "ITEM_SONG_BOLERO" }, - { RG_SERENADE_OF_WATER, "ITEM_SONG_SERENADE" }, - { RG_REQUIEM_OF_SPIRIT, "ITEM_SONG_REQUIEM" }, - { RG_NOCTURNE_OF_SHADOW, "ITEM_SONG_NOCTURNE" }, - { RG_PRELUDE_OF_LIGHT, "ITEM_SONG_PRELUDE" }, - { RG_DEKU_TREE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_DODONGOS_CAVERN_MAP, "ITEM_DUNGEON_MAP" }, - { RG_JABU_JABUS_BELLY_MAP, "ITEM_DUNGEON_MAP" }, - { RG_FOREST_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_FIRE_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_WATER_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_SPIRIT_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_SHADOW_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_BOTW_MAP, "ITEM_DUNGEON_MAP" }, - { RG_ICE_CAVERN_MAP, "ITEM_DUNGEON_MAP" }, - { RG_DEKU_TREE_COMPASS, "ITEM_COMPASS" }, - { RG_DODONGOS_CAVERN_COMPASS, "ITEM_COMPASS" }, - { RG_JABU_JABUS_BELLY_COMPASS, "ITEM_COMPASS" }, - { RG_FOREST_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_FIRE_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_WATER_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_SPIRIT_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_SHADOW_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_BOTW_COMPASS, "ITEM_COMPASS" }, - { RG_ICE_CAVERN_COMPASS, "ITEM_COMPASS" }, - { RG_FOREST_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, - { RG_FIRE_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, - { RG_WATER_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, - { RG_SPIRIT_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, - { RG_SHADOW_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, - { RG_GANONS_CASTLE_BOSS_KEY, "ITEM_KEY_BOSS" }, - { RG_FOREST_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_FIRE_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_WATER_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_SPIRIT_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_SHADOW_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_BOTW_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_GTG_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_HIDEOUT_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_GANONS_CASTLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_TCG_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_KOKIRI_EMERALD, "ITEM_KOKIRI_EMERALD" }, - { RG_GORON_RUBY, "ITEM_GORON_RUBY" }, - { RG_ZORA_SAPPHIRE, "ITEM_ZORA_SAPPHIRE" }, - { RG_FOREST_MEDALLION, "ITEM_MEDALLION_FOREST" }, - { RG_FIRE_MEDALLION, "ITEM_MEDALLION_FIRE" }, - { RG_WATER_MEDALLION, "ITEM_MEDALLION_WATER" }, - { RG_SPIRIT_MEDALLION, "ITEM_MEDALLION_SPIRIT" }, - { RG_SHADOW_MEDALLION, "ITEM_MEDALLION_SHADOW" }, - { RG_LIGHT_MEDALLION, "ITEM_MEDALLION_LIGHT" }, - { RG_RECOVERY_HEART, "ITEM_HEART_GRAYSCALE" }, - { RG_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_GREG_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_BLUE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_RED_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_PURPLE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_HUGE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_LOSER_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_PIECE_OF_HEART, "ITEM_HEART_PIECE" }, - { RG_HEART_CONTAINER, "ITEM_HEART_CONTAINER" }, - { RG_ICE_TRAP, "ITEM_ICE_TRAP" }, - { RG_MILK, "ITEM_MILK_BOTTLE"}, - { RG_BOMBS_5, "ITEM_BOMB" }, - { RG_BOMBS_10, "ITEM_BOMB" }, - { RG_BOMBS_20, "ITEM_BOMB" }, - { RG_BUY_BOMBS_525, "ITEM_BOMB" }, - { RG_BUY_BOMBS_535, "ITEM_BOMB" }, - { RG_BUY_BOMBS_10, "ITEM_BOMB" }, - { RG_BUY_BOMBS_20, "ITEM_BOMB" }, - { RG_BUY_BOMBS_30, "ITEM_BOMB" }, - { RG_DEKU_NUTS_5, "ITEM_NUT" }, - { RG_DEKU_NUTS_10, "ITEM_NUT" }, - { RG_BUY_DEKU_NUTS_5, "ITEM_NUT" }, - { RG_BUY_DEKU_NUTS_10, "ITEM_NUT" }, - { RG_BOMBCHU_5, "ITEM_BOMBCHU" }, - { RG_BOMBCHU_10, "ITEM_BOMBCHU" }, - { RG_BOMBCHU_20, "ITEM_BOMBCHU" }, - { RG_BUY_BOMBCHUS_20, "ITEM_BOMBCHU" }, - { RG_ARROWS_5, "ITEM_ARROWS_SMALL" }, - { RG_BUY_ARROWS_10, "ITEM_ARROWS_SMALL" }, - { RG_ARROWS_10, "ITEM_ARROWS_MEDIUM" }, - { RG_BUY_ARROWS_30, "ITEM_ARROWS_MEDIUM" }, - { RG_ARROWS_30, "ITEM_ARROWS_LARGE" }, - { RG_BUY_ARROWS_50, "ITEM_ARROWS_LARGE" }, - { RG_TCG_PIECE_OF_HEART, "ITEM_HEART_PIECE" }, - { RG_DEKU_SEEDS_30, "ITEM_SEEDS" }, - { RG_BUY_DEKU_SEEDS_30, "ITEM_SEEDS" }, - { RG_BUY_HEART, "ITEM_HEART_GRAYSCALE" }, - { RG_FISHING_POLE, "ITEM_FISHING_POLE" }, - { RG_SOLD_OUT, "ITEM_SOLD_OUT" }, - { RG_TRIFORCE_PIECE, "TRIFORCE_PIECE" }, - { RG_SKELETON_KEY, "ITEM_KEY_SMALL" } + { RG_NONE, "ITEM_SOLD_OUT" }, + { RG_KOKIRI_SWORD, "ITEM_SWORD_KOKIRI" }, + { RG_GIANTS_KNIFE, "ITEM_SWORD_KNIFE" }, + { RG_BIGGORON_SWORD, "ITEM_SWORD_BGS" }, + { RG_DEKU_SHIELD, "ITEM_SHIELD_DEKU" }, + { RG_HYLIAN_SHIELD, "ITEM_SHIELD_HYLIAN" }, + { RG_MIRROR_SHIELD, "ITEM_SHIELD_MIRROR" }, + { RG_GORON_TUNIC, "ITEM_TUNIC_GORON" }, + { RG_ZORA_TUNIC, "ITEM_TUNIC_ZORA" }, + { RG_IRON_BOOTS, "ITEM_BOOTS_IRON" }, + { RG_HOVER_BOOTS, "ITEM_BOOTS_HOVER" }, + { RG_BOOMERANG, "ITEM_BOOMERANG" }, + { RG_LENS_OF_TRUTH, "ITEM_LENS" }, + { RG_MEGATON_HAMMER, "ITEM_HAMMER" }, + { RG_STONE_OF_AGONY, "ITEM_STONE_OF_AGONY" }, + { RG_DINS_FIRE, "ITEM_DINS_FIRE" }, + { RG_FARORES_WIND, "ITEM_FARORES_WIND" }, + { RG_NAYRUS_LOVE, "ITEM_NAYRUS_LOVE" }, + { RG_FIRE_ARROWS, "ITEM_ARROW_FIRE" }, + { RG_ICE_ARROWS, "ITEM_ARROW_ICE" }, + { RG_LIGHT_ARROWS, "ITEM_ARROW_LIGHT" }, + { RG_GERUDO_MEMBERSHIP_CARD, "ITEM_GERUDO_CARD" }, + { RG_MAGIC_BEAN, "ITEM_BEAN" }, + { RG_MAGIC_BEAN_PACK, "ITEM_BEAN" }, + { RG_DOUBLE_DEFENSE, "ITEM_HEART_CONTAINER" }, + { RG_WEIRD_EGG, "ITEM_WEIRD_EGG" }, + { RG_ZELDAS_LETTER, "ITEM_LETTER_ZELDA" }, + { RG_POCKET_EGG, "ITEM_POCKET_EGG" }, + { RG_COJIRO, "ITEM_COJIRO" }, + { RG_ODD_MUSHROOM, "ITEM_ODD_MUSHROOM" }, + { RG_ODD_POTION, "ITEM_ODD_POTION" }, + { RG_POACHERS_SAW, "ITEM_SAW" }, + { RG_BROKEN_SWORD, "ITEM_SWORD_BROKEN" }, + { RG_PRESCRIPTION, "ITEM_PRESCRIPTION" }, + { RG_EYEBALL_FROG, "ITEM_FROG" }, + { RG_EYEDROPS, "ITEM_EYEDROPS" }, + { RG_CLAIM_CHECK, "ITEM_CLAIM_CHECK" }, + { RG_GOLD_SKULLTULA_TOKEN, "ITEM_SKULL_TOKEN" }, + { RG_PROGRESSIVE_HOOKSHOT, "ITEM_HOOKSHOT" }, + { RG_PROGRESSIVE_STRENGTH, "ITEM_BRACELET" }, + { RG_PROGRESSIVE_BOMB_BAG, "ITEM_BOMB_BAG_30" }, + { RG_PROGRESSIVE_BOW, "ITEM_QUIVER_30" }, + { RG_PROGRESSIVE_SLINGSHOT, "ITEM_SLINGSHOT" }, + { RG_PROGRESSIVE_WALLET, "ITEM_WALLET_ADULT" }, + { RG_PROGRESSIVE_SCALE, "ITEM_SCALE_SILVER" }, + { RG_PROGRESSIVE_NUT_BAG, "ITEM_NUT" }, + { RG_PROGRESSIVE_STICK_BAG, "ITEM_STICK" }, + { RG_PROGRESSIVE_BOMBCHUS, "ITEM_BOMBCHU" }, + { RG_PROGRESSIVE_MAGIC, "ITEM_MAGIC_SMALL" }, + { RG_MAGIC_SINGLE, "ITEM_MAGIC_SMALL" }, + { RG_MAGIC_DOUBLE, "ITEM_MAGIC_LARGE" }, + { RG_PROGRESSIVE_OCARINA, "ITEM_OCARINA_FAIRY" }, + { RG_PROGRESSIVE_GORONSWORD, "ITEM_SWORD_BGS" }, + { RG_EMPTY_BOTTLE, "ITEM_BOTTLE" }, + { RG_BOTTLE_WITH_MILK, "ITEM_MILK_BOTTLE" }, + { RG_BOTTLE_WITH_RED_POTION, "ITEM_POTION_RED" }, + { RG_BOTTLE_WITH_GREEN_POTION, "ITEM_POTION_GREEN" }, + { RG_BOTTLE_WITH_BLUE_POTION, "ITEM_POTION_BLUE" }, + { RG_BOTTLE_WITH_FAIRY, "ITEM_FAIRY" }, + { RG_BOTTLE_WITH_FISH, "ITEM_FISH" }, + { RG_BOTTLE_WITH_BLUE_FIRE, "ITEM_BLUE_FIRE" }, + { RG_BOTTLE_WITH_BUGS, "ITEM_BUG" }, + { RG_BOTTLE_WITH_POE, "ITEM_POE" }, + { RG_RUTOS_LETTER, "ITEM_LETTER_RUTO" }, + { RG_BOTTLE_WITH_BIG_POE, "ITEM_BIG_POE" }, + { RG_ZELDAS_LULLABY, "ITEM_SONG_LULLABY" }, + { RG_EPONAS_SONG, "ITEM_SONG_EPONA" }, + { RG_SARIAS_SONG, "ITEM_SONG_SARIA" }, + { RG_SUNS_SONG, "ITEM_SONG_SUN" }, + { RG_SONG_OF_TIME, "ITEM_SONG_TIME" }, + { RG_SONG_OF_STORMS, "ITEM_SONG_STORMS" }, + { RG_MINUET_OF_FOREST, "ITEM_SONG_MINUET" }, + { RG_BOLERO_OF_FIRE, "ITEM_SONG_BOLERO" }, + { RG_SERENADE_OF_WATER, "ITEM_SONG_SERENADE" }, + { RG_REQUIEM_OF_SPIRIT, "ITEM_SONG_REQUIEM" }, + { RG_NOCTURNE_OF_SHADOW, "ITEM_SONG_NOCTURNE" }, + { RG_PRELUDE_OF_LIGHT, "ITEM_SONG_PRELUDE" }, + { RG_DEKU_TREE_MAP, "ITEM_DUNGEON_MAP" }, + { RG_DODONGOS_CAVERN_MAP, "ITEM_DUNGEON_MAP" }, + { RG_JABU_JABUS_BELLY_MAP, "ITEM_DUNGEON_MAP" }, + { RG_FOREST_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, + { RG_FIRE_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, + { RG_WATER_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, + { RG_SPIRIT_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, + { RG_SHADOW_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, + { RG_BOTW_MAP, "ITEM_DUNGEON_MAP" }, + { RG_ICE_CAVERN_MAP, "ITEM_DUNGEON_MAP" }, + { RG_DEKU_TREE_COMPASS, "ITEM_COMPASS" }, + { RG_DODONGOS_CAVERN_COMPASS, "ITEM_COMPASS" }, + { RG_JABU_JABUS_BELLY_COMPASS, "ITEM_COMPASS" }, + { RG_FOREST_TEMPLE_COMPASS, "ITEM_COMPASS" }, + { RG_FIRE_TEMPLE_COMPASS, "ITEM_COMPASS" }, + { RG_WATER_TEMPLE_COMPASS, "ITEM_COMPASS" }, + { RG_SPIRIT_TEMPLE_COMPASS, "ITEM_COMPASS" }, + { RG_SHADOW_TEMPLE_COMPASS, "ITEM_COMPASS" }, + { RG_BOTW_COMPASS, "ITEM_COMPASS" }, + { RG_ICE_CAVERN_COMPASS, "ITEM_COMPASS" }, + { RG_FOREST_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, + { RG_FIRE_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, + { RG_WATER_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, + { RG_SPIRIT_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, + { RG_SHADOW_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, + { RG_GANONS_CASTLE_BOSS_KEY, "ITEM_KEY_BOSS" }, + { RG_FOREST_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_FIRE_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_WATER_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_SPIRIT_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_SHADOW_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_BOTW_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_GTG_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_HIDEOUT_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_GANONS_CASTLE_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_TCG_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_KOKIRI_EMERALD, "ITEM_KOKIRI_EMERALD" }, + { RG_GORON_RUBY, "ITEM_GORON_RUBY" }, + { RG_ZORA_SAPPHIRE, "ITEM_ZORA_SAPPHIRE" }, + { RG_FOREST_MEDALLION, "ITEM_MEDALLION_FOREST" }, + { RG_FIRE_MEDALLION, "ITEM_MEDALLION_FIRE" }, + { RG_WATER_MEDALLION, "ITEM_MEDALLION_WATER" }, + { RG_SPIRIT_MEDALLION, "ITEM_MEDALLION_SPIRIT" }, + { RG_SHADOW_MEDALLION, "ITEM_MEDALLION_SHADOW" }, + { RG_LIGHT_MEDALLION, "ITEM_MEDALLION_LIGHT" }, + { RG_RECOVERY_HEART, "ITEM_HEART_GRAYSCALE" }, + { RG_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_GREG_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_BLUE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_RED_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_PURPLE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_HUGE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_LOSER_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_PIECE_OF_HEART, "ITEM_HEART_PIECE" }, + { RG_HEART_CONTAINER, "ITEM_HEART_CONTAINER" }, + { RG_ICE_TRAP, "ITEM_ICE_TRAP" }, + { RG_MILK, "ITEM_MILK_BOTTLE"}, + { RG_BOMBS_5, "ITEM_BOMB" }, + { RG_BOMBS_10, "ITEM_BOMB" }, + { RG_BOMBS_20, "ITEM_BOMB" }, + { RG_BUY_BOMBS_525, "ITEM_BOMB" }, + { RG_BUY_BOMBS_535, "ITEM_BOMB" }, + { RG_BUY_BOMBS_10, "ITEM_BOMB" }, + { RG_BUY_BOMBS_20, "ITEM_BOMB" }, + { RG_BUY_BOMBS_30, "ITEM_BOMB" }, + { RG_DEKU_NUTS_5, "ITEM_NUT" }, + { RG_DEKU_NUTS_10, "ITEM_NUT" }, + { RG_BUY_DEKU_NUTS_5, "ITEM_NUT" }, + { RG_BUY_DEKU_NUTS_10, "ITEM_NUT" }, + { RG_BOMBCHU_5, "ITEM_BOMBCHU" }, + { RG_BOMBCHU_10, "ITEM_BOMBCHU" }, + { RG_BOMBCHU_20, "ITEM_BOMBCHU" }, + { RG_BUY_BOMBCHUS_20, "ITEM_BOMBCHU" }, + { RG_ARROWS_5, "ITEM_ARROWS_SMALL" }, + { RG_BUY_ARROWS_10, "ITEM_ARROWS_SMALL" }, + { RG_ARROWS_10, "ITEM_ARROWS_MEDIUM" }, + { RG_BUY_ARROWS_30, "ITEM_ARROWS_MEDIUM" }, + { RG_ARROWS_30, "ITEM_ARROWS_LARGE" }, + { RG_BUY_ARROWS_50, "ITEM_ARROWS_LARGE" }, + { RG_TCG_PIECE_OF_HEART, "ITEM_HEART_PIECE" }, + { RG_DEKU_SEEDS_30, "ITEM_SEEDS" }, + { RG_BUY_DEKU_SEEDS_30, "ITEM_SEEDS" }, + { RG_BUY_HEART, "ITEM_HEART_GRAYSCALE" }, + { RG_FISHING_POLE, "ITEM_FISHING_POLE" }, + { RG_SOLD_OUT, "ITEM_SOLD_OUT" }, + { RG_TRIFORCE_PIECE, "TRIFORCE_PIECE" }, + { RG_SKELETON_KEY, "ITEM_KEY_SMALL" } }; Rando::Item plandomizerRandoRetrieveItem(RandomizerGet randoGetItem) { From 73e4964f050ef04e4c7aba0efd79f0ef1723a1cb Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Fri, 28 Mar 2025 17:44:49 +0000 Subject: [PATCH 08/24] clean location list a bit --- .../Enhancements/randomizer/location_list.cpp | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/location_list.cpp b/soh/soh/Enhancements/randomizer/location_list.cpp index a2d41fdb2..13923a911 100644 --- a/soh/soh/Enhancements/randomizer/location_list.cpp +++ b/soh/soh/Enhancements/randomizer/location_list.cpp @@ -169,14 +169,14 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_GV_DEKU_SCRUB_GROTTO_FRONT] = Location::Base(RC_GV_DEKU_SCRUB_GROTTO_FRONT, RCQUEST_BOTH, RCTYPE_SCRUB, RCAREA_GERUDO_VALLEY, ACTOR_EN_DNS, SCENE_GROTTOS, TWO_ACTOR_PARAMS(0x08, 0xF0), "Deku Scrub Grotto Front", RHT_GV_DEKU_SCRUB_GROTTO_FRONT, RG_BUY_GREEN_POTION, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_GV_DEKU_SCRUB_GROTTO_FRONT), false, 40); // Gerudo Fortress locationTable[RC_GF_CHEST] = Location::Chest(RC_GF_CHEST, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDOS_FORTRESS, 1984, 0x00, "Chest", RHT_GF_CHEST, RG_PIECE_OF_HEART, true); - locationTable[RC_GF_HBA_1000_POINTS] = Location::Base(RC_GF_HBA_1000_POINTS, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_GERUDOS_FORTRESS, 0x00, "HBA 1000 Points", RHT_GF_HBA_1000_POINTS, RG_PIECE_OF_HEART, SpoilerCollectionCheck::InfTable(INFTABLE_190), true); - locationTable[RC_GF_HBA_1500_POINTS] = Location::Base(RC_GF_HBA_1500_POINTS, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_GERUDOS_FORTRESS, 0x00, "HBA 1500 Points", RHT_GF_HBA_1500_POINTS, RG_PROGRESSIVE_BOW, SpoilerCollectionCheck::ItemGetInf(15), true); + locationTable[RC_GF_HBA_1000_POINTS] = Location::Base(RC_GF_HBA_1000_POINTS, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_GERUDOS_FORTRESS, 0x00, "HBA 1000 Points", RHT_GF_HBA_1000_POINTS, RG_PIECE_OF_HEART, SpoilerCollectionCheck::InfTable(INFTABLE_190), true); + locationTable[RC_GF_HBA_1500_POINTS] = Location::Base(RC_GF_HBA_1500_POINTS, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_GERUDOS_FORTRESS, 0x00, "HBA 1500 Points", RHT_GF_HBA_1500_POINTS, RG_PROGRESSIVE_BOW, SpoilerCollectionCheck::ItemGetInf(15), true); // RandoTodo: Do we replace these with the RC_HIDEOUT keys or keep these? - locationTable[RC_GF_GERUDO_MEMBERSHIP_CARD] = Location::Base(RC_GF_GERUDO_MEMBERSHIP_CARD, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_THIEVES_HIDEOUT, 0x00, "Gerudo Membership Card", RHT_GF_GERUDO_MEMBERSHIP_CARD, RG_GERUDO_MEMBERSHIP_CARD, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ITEM_FROM_LEADER_OF_FORTRESS), true); - locationTable[RC_GF_NORTH_F1_CARPENTER] = Location::Collectable(RC_GF_NORTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3089, 0x0C, "North F1 Carpenter", RHT_GF_NORTH_F1_CARPENTER, RG_HIDEOUT_SMALL_KEY, true); - locationTable[RC_GF_NORTH_F2_CARPENTER] = Location::Collectable(RC_GF_NORTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 2577, 0x0A, "North F2 Carpenter", RHT_GF_NORTH_F2_CARPENTER, RG_HIDEOUT_SMALL_KEY, true); - locationTable[RC_GF_SOUTH_F1_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3601, 0x0E, "South F1 Carpenter", RHT_GF_SOUTH_F1_CARPENTER, RG_HIDEOUT_SMALL_KEY, true); - locationTable[RC_GF_SOUTH_F2_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3857, 0x0F, "South F2 Carpenter", RHT_GF_SOUTH_F2_CARPENTER, RG_HIDEOUT_SMALL_KEY, true); + locationTable[RC_GF_GERUDO_MEMBERSHIP_CARD] = Location::Base(RC_GF_GERUDO_MEMBERSHIP_CARD, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_THIEVES_HIDEOUT, 0x00, "Gerudo Membership Card", RHT_GF_GERUDO_MEMBERSHIP_CARD, RG_GERUDO_MEMBERSHIP_CARD, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ITEM_FROM_LEADER_OF_FORTRESS), true); + locationTable[RC_GF_NORTH_F1_CARPENTER] = Location::Collectable(RC_GF_NORTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3089, 0x0C, "North F1 Carpenter", RHT_GF_NORTH_F1_CARPENTER, RG_HIDEOUT_SMALL_KEY, true); + locationTable[RC_GF_NORTH_F2_CARPENTER] = Location::Collectable(RC_GF_NORTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 2577, 0x0A, "North F2 Carpenter", RHT_GF_NORTH_F2_CARPENTER, RG_HIDEOUT_SMALL_KEY, true); + locationTable[RC_GF_SOUTH_F1_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3601, 0x0E, "South F1 Carpenter", RHT_GF_SOUTH_F1_CARPENTER, RG_HIDEOUT_SMALL_KEY, true); + locationTable[RC_GF_SOUTH_F2_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3857, 0x0F, "South F2 Carpenter", RHT_GF_SOUTH_F2_CARPENTER, RG_HIDEOUT_SMALL_KEY, true); // Haunted Wasteland locationTable[RC_WASTELAND_CHEST] = Location::Chest(RC_WASTELAND_CHEST, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_WASTELAND, ACTOR_EN_BOX, SCENE_HAUNTED_WASTELAND, -30048, 0x00, "Chest", RHT_WASTELAND_CHEST, RG_PURPLE_RUPEE); locationTable[RC_WASTELAND_BOMBCHU_SALESMAN] = Location::Base(RC_WASTELAND_BOMBCHU_SALESMAN, RCQUEST_BOTH, RCTYPE_MERCHANT, RCAREA_WASTELAND, ACTOR_ID_MAX, SCENE_HAUNTED_WASTELAND, 0x00, "Carpet Salesman", RHT_WASTELAND_BOMBCHU_SALESMAN, RG_BUY_BOMBCHUS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN), false, 200); @@ -185,7 +185,7 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR] = Location::Base(RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, RCQUEST_BOTH, RCTYPE_SCRUB, RCAREA_DESERT_COLOSSUS, ACTOR_EN_DNS, SCENE_GROTTOS, TWO_ACTOR_PARAMS(0x07, 0xFD), "Deku Scrub Grotto Rear", RHT_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, RG_BUY_RED_POTION_40, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_COLOSSUS_DEKU_SCRUB_GROTTO_REAR), false, 40); locationTable[RC_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT] = Location::Base(RC_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, RCQUEST_BOTH, RCTYPE_SCRUB, RCAREA_DESERT_COLOSSUS, ACTOR_EN_DNS, SCENE_GROTTOS, TWO_ACTOR_PARAMS(0x08, 0xFD), "Deku Scrub Grotto Front", RHT_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, RG_BUY_GREEN_POTION, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT), false, 40); // Market - locationTable[RC_MARKET_TREASURE_CHEST_GAME_REWARD] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Treasure Chest Game Reward", RHT_MARKET_TREASURE_CHEST_GAME_REWARD, RG_TCG_PIECE_OF_HEART, SpoilerCollectionCheck::ItemGetInf(27), true); + locationTable[RC_MARKET_TREASURE_CHEST_GAME_REWARD] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Treasure Chest Game Reward", RHT_MARKET_TREASURE_CHEST_GAME_REWARD, RG_TCG_PIECE_OF_HEART, SpoilerCollectionCheck::ItemGetInf(27), true); locationTable[RC_MARKET_BOMBCHU_BOWLING_FIRST_PRIZE] = Location::Base(RC_MARKET_BOMBCHU_BOWLING_FIRST_PRIZE, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_BOMBCHU_BOWLING_ALLEY, 0x00, "Bombchu Bowling First Prize", RHT_MARKET_BOMBCHU_BOWLING_FIRST_PRIZE, RG_PROGRESSIVE_BOMB_BAG, SpoilerCollectionCheck::ItemGetInf(17), true); locationTable[RC_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE] = Location::Base(RC_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_BOMBCHU_BOWLING_ALLEY, 0x00, "Bombchu Bowling Second Prize", RHT_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE, RG_PIECE_OF_HEART, SpoilerCollectionCheck::ItemGetInf(18), true); locationTable[RC_MARKET_LOST_DOG] = Location::Base(RC_MARKET_LOST_DOG, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_DOG_LADY_HOUSE, 0x00, "Lost Dog", RHT_MARKET_LOST_DOG, RG_PIECE_OF_HEART, SpoilerCollectionCheck::InfTable(INFTABLE_191), true); @@ -196,11 +196,11 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_3] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_3, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Third Room Item", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_3, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_3)); locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_4] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_4, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Fourth Room Item", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_4, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_4)); locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_5] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_5, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Fifth Room Item", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_5, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_5)); - locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_1] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_1, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game First Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_1, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_1)); - locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_2] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_2, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Second Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_2, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_2)); - locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_3] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_3, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Third Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_3, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_3)); - locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_4] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_4, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Fourth Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_4, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_4)); - locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_5] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_5, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Fifth Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_5, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_5)); + locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_1] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_1, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game First Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_1, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_1)); + locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_2] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_2, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Second Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_2, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_2)); + locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_3] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_3, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Third Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_3, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_3)); + locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_4] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_4, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Fourth Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_4, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_4)); + locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_5] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_5, RCQUEST_BOTH, RCTYPE_CHEST_GAME, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, "Chest Game Fifth Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_5, RG_TCG_SMALL_KEY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_5)); // Hyrule Castle locationTable[RC_HC_MALON_EGG] = Location::Base(RC_HC_MALON_EGG, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_HYRULE_CASTLE, 0x00, "Malon Egg", RHT_HC_MALON_EGG, RG_WEIRD_EGG, SpoilerCollectionCheck::EventChkInf(EVENTCHKINF_OBTAINED_POCKET_EGG), true); locationTable[RC_HC_ZELDAS_LETTER] = Location::Base(RC_HC_ZELDAS_LETTER, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_ID_MAX, SCENE_CASTLE_COURTYARD_ZELDA, 0x00, "Zeldas Letter", RHT_HC_ZELDAS_LETTER, RG_ZELDAS_LETTER, SpoilerCollectionCheck::EventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER), true); From 5bf2f1eeb019967d96e0efe1ff368f0019437a51 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Fri, 28 Mar 2025 17:52:04 +0000 Subject: [PATCH 09/24] clean more files --- soh/soh/Enhancements/randomizer/logic.cpp | 192 +++++++++--------- .../randomizer/randomizer_item_tracker.cpp | 48 ++--- 2 files changed, 120 insertions(+), 120 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/logic.cpp b/soh/soh/Enhancements/randomizer/logic.cpp index 877df04b1..ea90a71d5 100644 --- a/soh/soh/Enhancements/randomizer/logic.cpp +++ b/soh/soh/Enhancements/randomizer/logic.cpp @@ -1348,97 +1348,97 @@ namespace Rando { }; std::map Logic::RandoGetToRandInf = { - { RG_ZELDAS_LETTER, RAND_INF_ZELDAS_LETTER }, - { RG_WEIRD_EGG, RAND_INF_WEIRD_EGG }, - { RG_GOHMA_SOUL, RAND_INF_GOHMA_SOUL }, - { RG_KING_DODONGO_SOUL, RAND_INF_KING_DODONGO_SOUL }, - { RG_BARINADE_SOUL, RAND_INF_BARINADE_SOUL }, - { RG_PHANTOM_GANON_SOUL, RAND_INF_PHANTOM_GANON_SOUL }, - { RG_VOLVAGIA_SOUL, RAND_INF_VOLVAGIA_SOUL }, - { RG_MORPHA_SOUL, RAND_INF_MORPHA_SOUL }, - { RG_BONGO_BONGO_SOUL, RAND_INF_BONGO_BONGO_SOUL }, - { RG_TWINROVA_SOUL, RAND_INF_TWINROVA_SOUL }, - { RG_GANON_SOUL, RAND_INF_GANON_SOUL }, - { RG_OCARINA_A_BUTTON, RAND_INF_HAS_OCARINA_A }, - { RG_OCARINA_C_UP_BUTTON, RAND_INF_HAS_OCARINA_C_UP }, - { RG_OCARINA_C_DOWN_BUTTON, RAND_INF_HAS_OCARINA_C_DOWN }, - { RG_OCARINA_C_LEFT_BUTTON, RAND_INF_HAS_OCARINA_C_LEFT }, - { RG_OCARINA_C_RIGHT_BUTTON, RAND_INF_HAS_OCARINA_C_RIGHT }, - { RG_SKELETON_KEY, RAND_INF_HAS_SKELETON_KEY }, - { RG_GREG_RUPEE, RAND_INF_GREG_FOUND }, - { RG_FISHING_POLE, RAND_INF_FISHING_POLE_FOUND }, - { RG_GUARD_HOUSE_KEY, RAND_INF_GUARD_HOUSE_KEY_OBTAINED }, - { RG_MARKET_BAZAAR_KEY, RAND_INF_MARKET_BAZAAR_KEY_OBTAINED }, - { RG_MARKET_POTION_SHOP_KEY, RAND_INF_MARKET_POTION_SHOP_KEY_OBTAINED }, - { RG_MASK_SHOP_KEY, RAND_INF_MASK_SHOP_KEY_OBTAINED }, - { RG_MARKET_SHOOTING_KEY, RAND_INF_MARKET_SHOOTING_GALLERY_KEY_OBTAINED }, - { RG_BOMBCHU_BOWLING_KEY, RAND_INF_BOMBCHU_BOWLING_KEY_OBTAINED }, - { RG_TCG_BUILDING_KEY, RAND_INF_TREASURE_CHEST_GAME_BUILDING_KEY_OBTAINED }, - { RG_BOMBCHU_SHOP_KEY, RAND_INF_BOMBCHU_SHOP_KEY_OBTAINED }, - { RG_RICHARDS_HOUSE_KEY, RAND_INF_RICHARDS_HOUSE_KEY_OBTAINED }, - { RG_ALLEY_HOUSE_KEY, RAND_INF_ALLEY_HOUSE_KEY_OBTAINED }, - { RG_KAK_BAZAAR_KEY, RAND_INF_KAK_BAZAAR_KEY_OBTAINED }, - { RG_KAK_POTION_SHOP_KEY, RAND_INF_KAK_POTION_SHOP_KEY_OBTAINED }, - { RG_BOSS_HOUSE_KEY, RAND_INF_BOSS_HOUSE_KEY_OBTAINED }, - { RG_GRANNYS_POTION_SHOP_KEY, RAND_INF_GRANNYS_POTION_SHOP_KEY_OBTAINED }, - { RG_SKULLTULA_HOUSE_KEY, RAND_INF_SKULLTULA_HOUSE_KEY_OBTAINED }, - { RG_IMPAS_HOUSE_KEY, RAND_INF_IMPAS_HOUSE_KEY_OBTAINED }, - { RG_WINDMILL_KEY, RAND_INF_WINDMILL_KEY_OBTAINED }, - { RG_KAK_SHOOTING_KEY, RAND_INF_KAK_SHOOTING_GALLERY_KEY_OBTAINED }, - { RG_DAMPES_HUT_KEY, RAND_INF_DAMPES_HUT_KEY_OBTAINED }, - { RG_TALONS_HOUSE_KEY, RAND_INF_TALONS_HOUSE_KEY_OBTAINED }, - { RG_STABLES_KEY, RAND_INF_STABLES_KEY_OBTAINED }, - { RG_BACK_TOWER_KEY, RAND_INF_BACK_TOWER_KEY_OBTAINED }, - { RG_HYLIA_LAB_KEY, RAND_INF_HYLIA_LAB_KEY_OBTAINED }, - { RG_FISHING_HOLE_KEY, RAND_INF_FISHING_HOLE_KEY_OBTAINED }, + { RG_ZELDAS_LETTER, RAND_INF_ZELDAS_LETTER }, + { RG_WEIRD_EGG, RAND_INF_WEIRD_EGG }, + { RG_GOHMA_SOUL, RAND_INF_GOHMA_SOUL }, + { RG_KING_DODONGO_SOUL, RAND_INF_KING_DODONGO_SOUL }, + { RG_BARINADE_SOUL, RAND_INF_BARINADE_SOUL }, + { RG_PHANTOM_GANON_SOUL, RAND_INF_PHANTOM_GANON_SOUL }, + { RG_VOLVAGIA_SOUL, RAND_INF_VOLVAGIA_SOUL }, + { RG_MORPHA_SOUL, RAND_INF_MORPHA_SOUL }, + { RG_BONGO_BONGO_SOUL, RAND_INF_BONGO_BONGO_SOUL }, + { RG_TWINROVA_SOUL, RAND_INF_TWINROVA_SOUL }, + { RG_GANON_SOUL, RAND_INF_GANON_SOUL }, + { RG_OCARINA_A_BUTTON, RAND_INF_HAS_OCARINA_A }, + { RG_OCARINA_C_UP_BUTTON, RAND_INF_HAS_OCARINA_C_UP }, + { RG_OCARINA_C_DOWN_BUTTON, RAND_INF_HAS_OCARINA_C_DOWN }, + { RG_OCARINA_C_LEFT_BUTTON, RAND_INF_HAS_OCARINA_C_LEFT }, + { RG_OCARINA_C_RIGHT_BUTTON, RAND_INF_HAS_OCARINA_C_RIGHT }, + { RG_SKELETON_KEY, RAND_INF_HAS_SKELETON_KEY }, + { RG_GREG_RUPEE, RAND_INF_GREG_FOUND }, + { RG_FISHING_POLE, RAND_INF_FISHING_POLE_FOUND }, + { RG_GUARD_HOUSE_KEY, RAND_INF_GUARD_HOUSE_KEY_OBTAINED }, + { RG_MARKET_BAZAAR_KEY, RAND_INF_MARKET_BAZAAR_KEY_OBTAINED }, + { RG_MARKET_POTION_SHOP_KEY, RAND_INF_MARKET_POTION_SHOP_KEY_OBTAINED }, + { RG_MASK_SHOP_KEY, RAND_INF_MASK_SHOP_KEY_OBTAINED }, + { RG_MARKET_SHOOTING_KEY, RAND_INF_MARKET_SHOOTING_GALLERY_KEY_OBTAINED }, + { RG_BOMBCHU_BOWLING_KEY, RAND_INF_BOMBCHU_BOWLING_KEY_OBTAINED }, + { RG_TCG_BUILDING_KEY, RAND_INF_TREASURE_CHEST_GAME_BUILDING_KEY_OBTAINED }, + { RG_BOMBCHU_SHOP_KEY, RAND_INF_BOMBCHU_SHOP_KEY_OBTAINED }, + { RG_RICHARDS_HOUSE_KEY, RAND_INF_RICHARDS_HOUSE_KEY_OBTAINED }, + { RG_ALLEY_HOUSE_KEY, RAND_INF_ALLEY_HOUSE_KEY_OBTAINED }, + { RG_KAK_BAZAAR_KEY, RAND_INF_KAK_BAZAAR_KEY_OBTAINED }, + { RG_KAK_POTION_SHOP_KEY, RAND_INF_KAK_POTION_SHOP_KEY_OBTAINED }, + { RG_BOSS_HOUSE_KEY, RAND_INF_BOSS_HOUSE_KEY_OBTAINED }, + { RG_GRANNYS_POTION_SHOP_KEY, RAND_INF_GRANNYS_POTION_SHOP_KEY_OBTAINED }, + { RG_SKULLTULA_HOUSE_KEY, RAND_INF_SKULLTULA_HOUSE_KEY_OBTAINED }, + { RG_IMPAS_HOUSE_KEY, RAND_INF_IMPAS_HOUSE_KEY_OBTAINED }, + { RG_WINDMILL_KEY, RAND_INF_WINDMILL_KEY_OBTAINED }, + { RG_KAK_SHOOTING_KEY, RAND_INF_KAK_SHOOTING_GALLERY_KEY_OBTAINED }, + { RG_DAMPES_HUT_KEY, RAND_INF_DAMPES_HUT_KEY_OBTAINED }, + { RG_TALONS_HOUSE_KEY, RAND_INF_TALONS_HOUSE_KEY_OBTAINED }, + { RG_STABLES_KEY, RAND_INF_STABLES_KEY_OBTAINED }, + { RG_BACK_TOWER_KEY, RAND_INF_BACK_TOWER_KEY_OBTAINED }, + { RG_HYLIA_LAB_KEY, RAND_INF_HYLIA_LAB_KEY_OBTAINED }, + { RG_FISHING_HOLE_KEY, RAND_INF_FISHING_HOLE_KEY_OBTAINED }, }; std::map Logic::RandoGetToDungeonScene = { - { RG_FOREST_TEMPLE_SMALL_KEY, SCENE_FOREST_TEMPLE }, - { RG_FIRE_TEMPLE_SMALL_KEY, SCENE_FIRE_TEMPLE }, - { RG_WATER_TEMPLE_SMALL_KEY, SCENE_WATER_TEMPLE }, - { RG_SPIRIT_TEMPLE_SMALL_KEY, SCENE_SPIRIT_TEMPLE }, - { RG_SHADOW_TEMPLE_SMALL_KEY, SCENE_SHADOW_TEMPLE }, - { RG_BOTW_SMALL_KEY, SCENE_BOTTOM_OF_THE_WELL }, - { RG_GTG_SMALL_KEY, SCENE_GERUDO_TRAINING_GROUND }, - { RG_HIDEOUT_SMALL_KEY, SCENE_THIEVES_HIDEOUT }, - { RG_GANONS_CASTLE_SMALL_KEY, SCENE_INSIDE_GANONS_CASTLE }, - { RG_FOREST_TEMPLE_KEY_RING, SCENE_FOREST_TEMPLE }, - { RG_FIRE_TEMPLE_KEY_RING, SCENE_FIRE_TEMPLE }, - { RG_WATER_TEMPLE_KEY_RING, SCENE_WATER_TEMPLE }, - { RG_SPIRIT_TEMPLE_KEY_RING, SCENE_SPIRIT_TEMPLE }, - { RG_SHADOW_TEMPLE_KEY_RING, SCENE_SHADOW_TEMPLE }, - { RG_BOTW_KEY_RING, SCENE_BOTTOM_OF_THE_WELL }, - { RG_GTG_KEY_RING, SCENE_GERUDO_TRAINING_GROUND }, - { RG_HIDEOUT_KEY_RING, SCENE_THIEVES_HIDEOUT }, - { RG_GANONS_CASTLE_KEY_RING, SCENE_INSIDE_GANONS_CASTLE }, - { RG_FOREST_TEMPLE_BOSS_KEY, SCENE_FOREST_TEMPLE }, - { RG_FIRE_TEMPLE_BOSS_KEY, SCENE_FIRE_TEMPLE }, - { RG_WATER_TEMPLE_BOSS_KEY, SCENE_WATER_TEMPLE }, - { RG_SPIRIT_TEMPLE_BOSS_KEY, SCENE_SPIRIT_TEMPLE }, - { RG_SHADOW_TEMPLE_BOSS_KEY, SCENE_SHADOW_TEMPLE }, - { RG_GANONS_CASTLE_BOSS_KEY, SCENE_INSIDE_GANONS_CASTLE }, - { RG_DEKU_TREE_MAP, SCENE_DEKU_TREE }, - { RG_DODONGOS_CAVERN_MAP, SCENE_DODONGOS_CAVERN }, - { RG_JABU_JABUS_BELLY_MAP, SCENE_JABU_JABU }, - { RG_FOREST_TEMPLE_MAP, SCENE_FOREST_TEMPLE }, - { RG_FIRE_TEMPLE_MAP, SCENE_FIRE_TEMPLE }, - { RG_WATER_TEMPLE_MAP, SCENE_WATER_TEMPLE }, - { RG_SPIRIT_TEMPLE_MAP, SCENE_SPIRIT_TEMPLE }, - { RG_SHADOW_TEMPLE_MAP, SCENE_SHADOW_TEMPLE }, - { RG_BOTW_MAP, SCENE_BOTTOM_OF_THE_WELL }, - { RG_ICE_CAVERN_MAP, SCENE_ICE_CAVERN }, - { RG_DEKU_TREE_COMPASS, SCENE_DEKU_TREE }, - { RG_DODONGOS_CAVERN_COMPASS, SCENE_DODONGOS_CAVERN }, - { RG_JABU_JABUS_BELLY_COMPASS, SCENE_JABU_JABU }, - { RG_FOREST_TEMPLE_COMPASS, SCENE_FOREST_TEMPLE }, - { RG_FIRE_TEMPLE_COMPASS, SCENE_FIRE_TEMPLE }, - { RG_WATER_TEMPLE_COMPASS, SCENE_WATER_TEMPLE }, - { RG_SPIRIT_TEMPLE_COMPASS, SCENE_SPIRIT_TEMPLE }, - { RG_SHADOW_TEMPLE_COMPASS, SCENE_SHADOW_TEMPLE }, - { RG_BOTW_COMPASS, SCENE_BOTTOM_OF_THE_WELL }, - { RG_ICE_CAVERN_COMPASS, SCENE_ICE_CAVERN }, - { RG_TCG_SMALL_KEY, SCENE_TREASURE_BOX_SHOP } + { RG_FOREST_TEMPLE_SMALL_KEY, SCENE_FOREST_TEMPLE }, + { RG_FIRE_TEMPLE_SMALL_KEY, SCENE_FIRE_TEMPLE }, + { RG_WATER_TEMPLE_SMALL_KEY, SCENE_WATER_TEMPLE }, + { RG_SPIRIT_TEMPLE_SMALL_KEY, SCENE_SPIRIT_TEMPLE }, + { RG_SHADOW_TEMPLE_SMALL_KEY, SCENE_SHADOW_TEMPLE }, + { RG_BOTW_SMALL_KEY, SCENE_BOTTOM_OF_THE_WELL }, + { RG_GTG_SMALL_KEY, SCENE_GERUDO_TRAINING_GROUND }, + { RG_HIDEOUT_SMALL_KEY, SCENE_THIEVES_HIDEOUT }, + { RG_GANONS_CASTLE_SMALL_KEY, SCENE_INSIDE_GANONS_CASTLE }, + { RG_FOREST_TEMPLE_KEY_RING, SCENE_FOREST_TEMPLE }, + { RG_FIRE_TEMPLE_KEY_RING, SCENE_FIRE_TEMPLE }, + { RG_WATER_TEMPLE_KEY_RING, SCENE_WATER_TEMPLE }, + { RG_SPIRIT_TEMPLE_KEY_RING, SCENE_SPIRIT_TEMPLE }, + { RG_SHADOW_TEMPLE_KEY_RING, SCENE_SHADOW_TEMPLE }, + { RG_BOTW_KEY_RING, SCENE_BOTTOM_OF_THE_WELL }, + { RG_GTG_KEY_RING, SCENE_GERUDO_TRAINING_GROUND }, + { RG_HIDEOUT_KEY_RING, SCENE_THIEVES_HIDEOUT }, + { RG_GANONS_CASTLE_KEY_RING, SCENE_INSIDE_GANONS_CASTLE }, + { RG_FOREST_TEMPLE_BOSS_KEY, SCENE_FOREST_TEMPLE }, + { RG_FIRE_TEMPLE_BOSS_KEY, SCENE_FIRE_TEMPLE }, + { RG_WATER_TEMPLE_BOSS_KEY, SCENE_WATER_TEMPLE }, + { RG_SPIRIT_TEMPLE_BOSS_KEY, SCENE_SPIRIT_TEMPLE }, + { RG_SHADOW_TEMPLE_BOSS_KEY, SCENE_SHADOW_TEMPLE }, + { RG_GANONS_CASTLE_BOSS_KEY, SCENE_INSIDE_GANONS_CASTLE }, + { RG_DEKU_TREE_MAP, SCENE_DEKU_TREE }, + { RG_DODONGOS_CAVERN_MAP, SCENE_DODONGOS_CAVERN }, + { RG_JABU_JABUS_BELLY_MAP, SCENE_JABU_JABU }, + { RG_FOREST_TEMPLE_MAP, SCENE_FOREST_TEMPLE }, + { RG_FIRE_TEMPLE_MAP, SCENE_FIRE_TEMPLE }, + { RG_WATER_TEMPLE_MAP, SCENE_WATER_TEMPLE }, + { RG_SPIRIT_TEMPLE_MAP, SCENE_SPIRIT_TEMPLE }, + { RG_SHADOW_TEMPLE_MAP, SCENE_SHADOW_TEMPLE }, + { RG_BOTW_MAP, SCENE_BOTTOM_OF_THE_WELL }, + { RG_ICE_CAVERN_MAP, SCENE_ICE_CAVERN }, + { RG_DEKU_TREE_COMPASS, SCENE_DEKU_TREE }, + { RG_DODONGOS_CAVERN_COMPASS, SCENE_DODONGOS_CAVERN }, + { RG_JABU_JABUS_BELLY_COMPASS, SCENE_JABU_JABU }, + { RG_FOREST_TEMPLE_COMPASS, SCENE_FOREST_TEMPLE }, + { RG_FIRE_TEMPLE_COMPASS, SCENE_FIRE_TEMPLE }, + { RG_WATER_TEMPLE_COMPASS, SCENE_WATER_TEMPLE }, + { RG_SPIRIT_TEMPLE_COMPASS, SCENE_SPIRIT_TEMPLE }, + { RG_SHADOW_TEMPLE_COMPASS, SCENE_SHADOW_TEMPLE }, + { RG_BOTW_COMPASS, SCENE_BOTTOM_OF_THE_WELL }, + { RG_ICE_CAVERN_COMPASS, SCENE_ICE_CAVERN }, + { RG_TCG_SMALL_KEY, SCENE_TREASURE_BOX_SHOP } }; std::map Logic::RandoGetToQuestItem = { @@ -1468,15 +1468,15 @@ namespace Rando { }; std::map BottleRandomizerGetToItemID = { - { RG_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED }, + { RG_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED }, { RG_BOTTLE_WITH_GREEN_POTION, ITEM_POTION_GREEN }, - { RG_BOTTLE_WITH_BLUE_POTION, ITEM_POTION_BLUE }, - { RG_BOTTLE_WITH_FAIRY, ITEM_FAIRY }, - { RG_BOTTLE_WITH_FISH, ITEM_FISH }, - { RG_BOTTLE_WITH_BLUE_FIRE, ITEM_BLUE_FIRE }, - { RG_BOTTLE_WITH_BUGS, ITEM_BUG }, - { RG_BOTTLE_WITH_POE, ITEM_POE }, - { RG_BOTTLE_WITH_BIG_POE, ITEM_BIG_POE }, + { RG_BOTTLE_WITH_BLUE_POTION, ITEM_POTION_BLUE }, + { RG_BOTTLE_WITH_FAIRY, ITEM_FAIRY }, + { RG_BOTTLE_WITH_FISH, ITEM_FISH }, + { RG_BOTTLE_WITH_BLUE_FIRE, ITEM_BLUE_FIRE }, + { RG_BOTTLE_WITH_BUGS, ITEM_BUG }, + { RG_BOTTLE_WITH_POE, ITEM_POE }, + { RG_BOTTLE_WITH_BIG_POE, ITEM_BIG_POE }, }; uint32_t HookshotLookup[3] = { ITEM_NONE, ITEM_HOOKSHOT, ITEM_LONGSHOT }; diff --git a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp index 26e69dfc1..c19bd9869 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp @@ -117,30 +117,30 @@ std::vector ocarinaButtonItems = { std::vector overworldKeyItems = { // Hack for right now, just gonna overworld keys as dungeon keys. // Will replace with other macro once we have a custom texture - ITEM_TRACKER_ITEM_CUSTOM(RG_GUARD_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_BAZAAR_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_MASK_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_SHOOTING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_BOMBCHU_BOWLING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_TCG_BUILDING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_BOMBCHU_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_RICHARDS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_ALLEY_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_BAZAAR_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_BOSS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_GRANNYS_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_SKULLTULA_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_IMPAS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_WINDMILL_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_SHOOTING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_DAMPES_HUT_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_TALONS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_STABLES_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_BACK_TOWER_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_HYLIA_LAB_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_FISHING_HOLE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_GUARD_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_BAZAAR_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_MASK_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_SHOOTING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_BOMBCHU_BOWLING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_TCG_BUILDING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_BOMBCHU_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_RICHARDS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_ALLEY_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_BAZAAR_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_BOSS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_GRANNYS_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_SKULLTULA_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_IMPAS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_WINDMILL_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_SHOOTING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_DAMPES_HUT_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_TALONS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_STABLES_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_BACK_TOWER_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_HYLIA_LAB_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_FISHING_HOLE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), }; std::vector fishingPoleItems = { From 0a394b03563757eacf3d25abaa711ffdb280b547 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Wed, 2 Apr 2025 13:08:10 +0100 Subject: [PATCH 10/24] post merge stuff --- soh/soh/Enhancements/randomizer/hint.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/hint.cpp b/soh/soh/Enhancements/randomizer/hint.cpp index d35272d6a..f171378ad 100644 --- a/soh/soh/Enhancements/randomizer/hint.cpp +++ b/soh/soh/Enhancements/randomizer/hint.cpp @@ -413,13 +413,13 @@ oJson Hint::toJSON() { if (items.size() == 1) { log["item"] = StaticData::GetItemTable()[items[0]] .GetName() - ..GetForCurrentLanguage(MF_RAW)); // RANDOTODO change to CustomMessage; + .GetForCurrentLanguage(MF_RAW); // RANDOTODO change to CustomMessage; } else if (items.size() > 1) { std::vector itemStrings = {}; for (size_t c = 0; c < items.size(); c++) { itemStrings.push_back(StaticData::GetItemTable()[items[c]] .GetName() - ..GetForCurrentLanguage(MF_RAW))); // RANDOTODO change to CustomMessage + .GetForCurrentLanguage(MF_RAW)); // RANDOTODO change to CustomMessage } log["items"] = itemStrings; } From 4bf78d6b9e394bb5aa661d33f6db18833bbec9cd Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Wed, 2 Apr 2025 14:15:01 +0100 Subject: [PATCH 11/24] apply clang-format --- .../Enhancements/randomizer/3drando/fill.cpp | 10 +- .../Enhancements/randomizer/3drando/hints.cpp | 5 +- .../randomizer/3drando/item_pool.cpp | 33 +- .../randomizer/3drando/spoiler_log.cpp | 43 +- .../Enhancements/randomizer/Plandomizer.cpp | 347 ++++++------- soh/soh/Enhancements/randomizer/dungeon.cpp | 11 +- soh/soh/Enhancements/randomizer/hint.cpp | 13 +- .../Enhancements/randomizer/hook_handlers.cpp | 2 +- soh/soh/Enhancements/randomizer/item.cpp | 51 +- soh/soh/Enhancements/randomizer/item.h | 18 +- soh/soh/Enhancements/randomizer/item_list.cpp | 8 +- soh/soh/Enhancements/randomizer/logic.cpp | 200 +++---- .../Enhancements/randomizer/randomizer.cpp | 489 ++++++++---------- .../randomizer/randomizer_check_tracker.cpp | 8 +- .../randomizer/randomizer_item_tracker.cpp | 46 +- .../Enhancements/randomizer/static_data.cpp | 27 +- soh/soh/SaveManager.cpp | 4 +- 17 files changed, 633 insertions(+), 682 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/fill.cpp b/soh/soh/Enhancements/randomizer/3drando/fill.cpp index 5a5576ab2..a00420ace 100644 --- a/soh/soh/Enhancements/randomizer/3drando/fill.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/fill.cpp @@ -1129,14 +1129,12 @@ static void RandomizeDungeonItems() { } if (ctx->GetOption(RSK_GERUDO_KEYS).Is(RO_GERUDO_KEYS_ANY_DUNGEON)) { - auto gerudoKeys = FilterAndEraseFromPool(ItemPool, [](const auto i) { - return i == RG_HIDEOUT_SMALL_KEY || i == RG_HIDEOUT_KEY_RING; - }); + auto gerudoKeys = FilterAndEraseFromPool( + ItemPool, [](const auto i) { return i == RG_HIDEOUT_SMALL_KEY || i == RG_HIDEOUT_KEY_RING; }); AddElementsToPool(anyDungeonItems, gerudoKeys); } else if (ctx->GetOption(RSK_GERUDO_KEYS).Is(RO_GERUDO_KEYS_OVERWORLD)) { - auto gerudoKeys = FilterAndEraseFromPool(ItemPool, [](const auto i) { - return i == RG_HIDEOUT_SMALL_KEY || i == RG_HIDEOUT_KEY_RING; - }); + auto gerudoKeys = FilterAndEraseFromPool( + ItemPool, [](const auto i) { return i == RG_HIDEOUT_SMALL_KEY || i == RG_HIDEOUT_KEY_RING; }); AddElementsToPool(overworldItems, gerudoKeys); } diff --git a/soh/soh/Enhancements/randomizer/3drando/hints.cpp b/soh/soh/Enhancements/randomizer/3drando/hints.cpp index 3241bf5c4..d720abfaf 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hints.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hints.cpp @@ -27,10 +27,11 @@ HintDistributionSetting::HintDistributionSetting(std::string _name, HintType _ty dungeonLimit = _dungeonLimit; } -//RANDOTODO rearrange once all HintText's have names +// RANDOTODO rearrange once all HintText's have names HintText::HintText(CustomMessage clearText_, std::vector ambiguousText_, std::vector obscureText_, CustomMessage name_) - : clearText(std::move(clearText_)), ambiguousText(std::move(ambiguousText_)), obscureText(std::move(obscureText_)), name(std::move(name_)) { + : clearText(std::move(clearText_)), ambiguousText(std::move(ambiguousText_)), obscureText(std::move(obscureText_)), + name(std::move(name_)) { } const CustomMessage& HintText::GetClear() const { diff --git a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp index d47a61a56..f6433205d 100644 --- a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp @@ -462,28 +462,17 @@ void GenerateItemPool() { // Initialize ice trap models to always major items ctx->possibleIceTrapModels = { - RG_MIRROR_SHIELD, - RG_BOOMERANG, - RG_LENS_OF_TRUTH, - RG_MEGATON_HAMMER, - RG_IRON_BOOTS, - RG_HOVER_BOOTS, - RG_STONE_OF_AGONY, - RG_DINS_FIRE, - RG_FARORES_WIND, - RG_NAYRUS_LOVE, - RG_FIRE_ARROWS, - RG_ICE_ARROWS, - RG_LIGHT_ARROWS, - RG_DOUBLE_DEFENSE, - RG_CLAIM_CHECK, - RG_PROGRESSIVE_HOOKSHOT, - RG_PROGRESSIVE_STRENGTH, - RG_PROGRESSIVE_BOMB_BAG, - RG_PROGRESSIVE_BOW, - RG_PROGRESSIVE_SLINGSHOT, - RG_PROGRESSIVE_WALLET, - RG_PROGRESSIVE_SCALE, + RG_MIRROR_SHIELD, RG_BOOMERANG, + RG_LENS_OF_TRUTH, RG_MEGATON_HAMMER, + RG_IRON_BOOTS, RG_HOVER_BOOTS, + RG_STONE_OF_AGONY, RG_DINS_FIRE, + RG_FARORES_WIND, RG_NAYRUS_LOVE, + RG_FIRE_ARROWS, RG_ICE_ARROWS, + RG_LIGHT_ARROWS, RG_DOUBLE_DEFENSE, + RG_CLAIM_CHECK, RG_PROGRESSIVE_HOOKSHOT, + RG_PROGRESSIVE_STRENGTH, RG_PROGRESSIVE_BOMB_BAG, + RG_PROGRESSIVE_BOW, RG_PROGRESSIVE_SLINGSHOT, + RG_PROGRESSIVE_WALLET, RG_PROGRESSIVE_SCALE, RG_PROGRESSIVE_MAGIC, }; // Check song shuffle and dungeon reward shuffle just for ice traps diff --git a/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp b/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp index e58ff63b1..f3b7d6279 100644 --- a/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/spoiler_log.cpp @@ -74,7 +74,8 @@ static void WriteLocation(std::string sphere, const RandomizerCheck locationKey, Rando::Location* location = Rando::StaticData::GetLocation(locationKey); Rando::ItemLocation* itemLocation = Rando::Context::GetInstance()->GetItemLocation(locationKey); - jsonData["playthrough"][sphere][location->GetName()] = itemLocation->GetPlacedItemName().GetForCurrentLanguage(MF_RAW); + jsonData["playthrough"][sphere][location->GetName()] = + itemLocation->GetPlacedItemName().GetForCurrentLanguage(MF_RAW); } // Writes a shuffled entrance to the specified node @@ -255,43 +256,43 @@ static void WriteAllLocations() { for (const RandomizerCheck key : ctx->allLocations) { Rando::ItemLocation* location = ctx->GetItemLocation(key); std::string placedItemName = location->GetPlacedItemName().GetForCurrentLanguage(MF_RAW); + std::string locName = Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName(); // If it's a simple item (not an ice trap, doesn't have a price) // just add the name of the item and move on if (!location->HasCustomPrice() && location->GetPlacedRandomizerGet() != RG_ICE_TRAP) { - jsonData["locations"][Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName()] = - placedItemName; + jsonData["locations"][locName] = placedItemName; continue; } // We're dealing with a complex item, build out the json object for it - jsonData["locations"][Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName()]["item"] = - placedItemName; + jsonData["locations"][locName]["item"] = placedItemName; if (location->HasCustomPrice()) { - jsonData["locations"][Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName()]["price"] = - location->GetPrice(); + jsonData["locations"][locName]["price"] = location->GetPrice(); } if (location->IsAHintAccessible()) { hintedLocations.emplace(Rando::StaticData::GetLocation(key)->GetHintKey(), location); } if (location->GetPlacedRandomizerGet() == RG_ICE_TRAP) { - jsonData["locations"][Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName()]["model"] = - Rando::StaticData::RetrieveItem(ctx->overrides[location->GetRandomizerCheck()].LooksLike()).GetName().GetForCurrentLanguage(MF_RAW); - switch (gSaveContext.language) { - case 0: - default: - jsonData["locations"][Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName()]["trickName"] = - ctx->overrides[location->GetRandomizerCheck()].GetTrickName().english; - break; - case 2: - jsonData["locations"][Rando::StaticData::GetLocation(location->GetRandomizerCheck())->GetName()]["trickName"] = - ctx->overrides[location->GetRandomizerCheck()].GetTrickName().french; - break; - } - } + jsonData["locations"][locName]["model"] = + Rando::StaticData::RetrieveItem(ctx->overrides[location->GetRandomizerCheck()].LooksLike()) + .GetName() + .GetForCurrentLanguage(MF_RAW); + switch (gSaveContext.language) { + case 0: + default: + jsonData["locations"][locName]["trickName"] = + ctx->overrides[location->GetRandomizerCheck()].GetTrickName().english; + break; + case 2: + jsonData["locations"][locName]["trickName"] = + ctx->overrides[location->GetRandomizerCheck()].GetTrickName().french; + break; + } + } } } diff --git a/soh/soh/Enhancements/randomizer/Plandomizer.cpp b/soh/soh/Enhancements/randomizer/Plandomizer.cpp index d7e7a64e7..7694ec0e7 100644 --- a/soh/soh/Enhancements/randomizer/Plandomizer.cpp +++ b/soh/soh/Enhancements/randomizer/Plandomizer.cpp @@ -87,172 +87,170 @@ std::vector infiniteItemList = { RG_BOMBS_20, RG_BOMBCHU_5, RG_BOMBCHU_10, RG_BOMBCHU_20, RG_RECOVERY_HEART, RG_ICE_TRAP, RG_SOLD_OUT }; -std::unordered_map itemImageMap = { - { RG_NONE, "ITEM_SOLD_OUT" }, - { RG_KOKIRI_SWORD, "ITEM_SWORD_KOKIRI" }, - { RG_GIANTS_KNIFE, "ITEM_SWORD_KNIFE" }, - { RG_BIGGORON_SWORD, "ITEM_SWORD_BGS" }, - { RG_DEKU_SHIELD, "ITEM_SHIELD_DEKU" }, - { RG_HYLIAN_SHIELD, "ITEM_SHIELD_HYLIAN" }, - { RG_MIRROR_SHIELD, "ITEM_SHIELD_MIRROR" }, - { RG_GORON_TUNIC, "ITEM_TUNIC_GORON" }, - { RG_ZORA_TUNIC, "ITEM_TUNIC_ZORA" }, - { RG_IRON_BOOTS, "ITEM_BOOTS_IRON" }, - { RG_HOVER_BOOTS, "ITEM_BOOTS_HOVER" }, - { RG_BOOMERANG, "ITEM_BOOMERANG" }, - { RG_LENS_OF_TRUTH, "ITEM_LENS" }, - { RG_MEGATON_HAMMER, "ITEM_HAMMER" }, - { RG_STONE_OF_AGONY, "ITEM_STONE_OF_AGONY" }, - { RG_DINS_FIRE, "ITEM_DINS_FIRE" }, - { RG_FARORES_WIND, "ITEM_FARORES_WIND" }, - { RG_NAYRUS_LOVE, "ITEM_NAYRUS_LOVE" }, - { RG_FIRE_ARROWS, "ITEM_ARROW_FIRE" }, - { RG_ICE_ARROWS, "ITEM_ARROW_ICE" }, - { RG_LIGHT_ARROWS, "ITEM_ARROW_LIGHT" }, - { RG_GERUDO_MEMBERSHIP_CARD, "ITEM_GERUDO_CARD" }, - { RG_MAGIC_BEAN, "ITEM_BEAN" }, - { RG_MAGIC_BEAN_PACK, "ITEM_BEAN" }, - { RG_DOUBLE_DEFENSE, "ITEM_HEART_CONTAINER" }, - { RG_WEIRD_EGG, "ITEM_WEIRD_EGG" }, - { RG_ZELDAS_LETTER, "ITEM_LETTER_ZELDA" }, - { RG_POCKET_EGG, "ITEM_POCKET_EGG" }, - { RG_COJIRO, "ITEM_COJIRO" }, - { RG_ODD_MUSHROOM, "ITEM_ODD_MUSHROOM" }, - { RG_ODD_POTION, "ITEM_ODD_POTION" }, - { RG_POACHERS_SAW, "ITEM_SAW" }, - { RG_BROKEN_SWORD, "ITEM_SWORD_BROKEN" }, - { RG_PRESCRIPTION, "ITEM_PRESCRIPTION" }, - { RG_EYEBALL_FROG, "ITEM_FROG" }, - { RG_EYEDROPS, "ITEM_EYEDROPS" }, - { RG_CLAIM_CHECK, "ITEM_CLAIM_CHECK" }, - { RG_GOLD_SKULLTULA_TOKEN, "ITEM_SKULL_TOKEN" }, - { RG_PROGRESSIVE_HOOKSHOT, "ITEM_HOOKSHOT" }, - { RG_PROGRESSIVE_STRENGTH, "ITEM_BRACELET" }, - { RG_PROGRESSIVE_BOMB_BAG, "ITEM_BOMB_BAG_30" }, - { RG_PROGRESSIVE_BOW, "ITEM_QUIVER_30" }, - { RG_PROGRESSIVE_SLINGSHOT, "ITEM_SLINGSHOT" }, - { RG_PROGRESSIVE_WALLET, "ITEM_WALLET_ADULT" }, - { RG_PROGRESSIVE_SCALE, "ITEM_SCALE_SILVER" }, - { RG_PROGRESSIVE_NUT_BAG, "ITEM_NUT" }, - { RG_PROGRESSIVE_STICK_BAG, "ITEM_STICK" }, - { RG_PROGRESSIVE_BOMBCHUS, "ITEM_BOMBCHU" }, - { RG_PROGRESSIVE_MAGIC, "ITEM_MAGIC_SMALL" }, - { RG_MAGIC_SINGLE, "ITEM_MAGIC_SMALL" }, - { RG_MAGIC_DOUBLE, "ITEM_MAGIC_LARGE" }, - { RG_PROGRESSIVE_OCARINA, "ITEM_OCARINA_FAIRY" }, - { RG_PROGRESSIVE_GORONSWORD, "ITEM_SWORD_BGS" }, - { RG_EMPTY_BOTTLE, "ITEM_BOTTLE" }, - { RG_BOTTLE_WITH_MILK, "ITEM_MILK_BOTTLE" }, - { RG_BOTTLE_WITH_RED_POTION, "ITEM_POTION_RED" }, - { RG_BOTTLE_WITH_GREEN_POTION, "ITEM_POTION_GREEN" }, - { RG_BOTTLE_WITH_BLUE_POTION, "ITEM_POTION_BLUE" }, - { RG_BOTTLE_WITH_FAIRY, "ITEM_FAIRY" }, - { RG_BOTTLE_WITH_FISH, "ITEM_FISH" }, - { RG_BOTTLE_WITH_BLUE_FIRE, "ITEM_BLUE_FIRE" }, - { RG_BOTTLE_WITH_BUGS, "ITEM_BUG" }, - { RG_BOTTLE_WITH_POE, "ITEM_POE" }, - { RG_RUTOS_LETTER, "ITEM_LETTER_RUTO" }, - { RG_BOTTLE_WITH_BIG_POE, "ITEM_BIG_POE" }, - { RG_ZELDAS_LULLABY, "ITEM_SONG_LULLABY" }, - { RG_EPONAS_SONG, "ITEM_SONG_EPONA" }, - { RG_SARIAS_SONG, "ITEM_SONG_SARIA" }, - { RG_SUNS_SONG, "ITEM_SONG_SUN" }, - { RG_SONG_OF_TIME, "ITEM_SONG_TIME" }, - { RG_SONG_OF_STORMS, "ITEM_SONG_STORMS" }, - { RG_MINUET_OF_FOREST, "ITEM_SONG_MINUET" }, - { RG_BOLERO_OF_FIRE, "ITEM_SONG_BOLERO" }, - { RG_SERENADE_OF_WATER, "ITEM_SONG_SERENADE" }, - { RG_REQUIEM_OF_SPIRIT, "ITEM_SONG_REQUIEM" }, - { RG_NOCTURNE_OF_SHADOW, "ITEM_SONG_NOCTURNE" }, - { RG_PRELUDE_OF_LIGHT, "ITEM_SONG_PRELUDE" }, - { RG_DEKU_TREE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_DODONGOS_CAVERN_MAP, "ITEM_DUNGEON_MAP" }, - { RG_JABU_JABUS_BELLY_MAP, "ITEM_DUNGEON_MAP" }, - { RG_FOREST_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_FIRE_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_WATER_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_SPIRIT_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_SHADOW_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_BOTW_MAP, "ITEM_DUNGEON_MAP" }, - { RG_ICE_CAVERN_MAP, "ITEM_DUNGEON_MAP" }, - { RG_DEKU_TREE_COMPASS, "ITEM_COMPASS" }, - { RG_DODONGOS_CAVERN_COMPASS, "ITEM_COMPASS" }, - { RG_JABU_JABUS_BELLY_COMPASS, "ITEM_COMPASS" }, - { RG_FOREST_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_FIRE_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_WATER_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_SPIRIT_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_SHADOW_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_BOTW_COMPASS, "ITEM_COMPASS" }, - { RG_ICE_CAVERN_COMPASS, "ITEM_COMPASS" }, - { RG_FOREST_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, - { RG_FIRE_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, - { RG_WATER_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, - { RG_SPIRIT_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, - { RG_SHADOW_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, - { RG_GANONS_CASTLE_BOSS_KEY, "ITEM_KEY_BOSS" }, - { RG_FOREST_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_FIRE_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_WATER_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_SPIRIT_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_SHADOW_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_BOTW_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_GTG_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_HIDEOUT_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_GANONS_CASTLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_TCG_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_KOKIRI_EMERALD, "ITEM_KOKIRI_EMERALD" }, - { RG_GORON_RUBY, "ITEM_GORON_RUBY" }, - { RG_ZORA_SAPPHIRE, "ITEM_ZORA_SAPPHIRE" }, - { RG_FOREST_MEDALLION, "ITEM_MEDALLION_FOREST" }, - { RG_FIRE_MEDALLION, "ITEM_MEDALLION_FIRE" }, - { RG_WATER_MEDALLION, "ITEM_MEDALLION_WATER" }, - { RG_SPIRIT_MEDALLION, "ITEM_MEDALLION_SPIRIT" }, - { RG_SHADOW_MEDALLION, "ITEM_MEDALLION_SHADOW" }, - { RG_LIGHT_MEDALLION, "ITEM_MEDALLION_LIGHT" }, - { RG_RECOVERY_HEART, "ITEM_HEART_GRAYSCALE" }, - { RG_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_GREG_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_BLUE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_RED_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_PURPLE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_HUGE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_LOSER_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_PIECE_OF_HEART, "ITEM_HEART_PIECE" }, - { RG_HEART_CONTAINER, "ITEM_HEART_CONTAINER" }, - { RG_ICE_TRAP, "ITEM_ICE_TRAP" }, - { RG_MILK, "ITEM_MILK_BOTTLE"}, - { RG_BOMBS_5, "ITEM_BOMB" }, - { RG_BOMBS_10, "ITEM_BOMB" }, - { RG_BOMBS_20, "ITEM_BOMB" }, - { RG_BUY_BOMBS_525, "ITEM_BOMB" }, - { RG_BUY_BOMBS_535, "ITEM_BOMB" }, - { RG_BUY_BOMBS_10, "ITEM_BOMB" }, - { RG_BUY_BOMBS_20, "ITEM_BOMB" }, - { RG_BUY_BOMBS_30, "ITEM_BOMB" }, - { RG_DEKU_NUTS_5, "ITEM_NUT" }, - { RG_DEKU_NUTS_10, "ITEM_NUT" }, - { RG_BUY_DEKU_NUTS_5, "ITEM_NUT" }, - { RG_BUY_DEKU_NUTS_10, "ITEM_NUT" }, - { RG_BOMBCHU_5, "ITEM_BOMBCHU" }, - { RG_BOMBCHU_10, "ITEM_BOMBCHU" }, - { RG_BOMBCHU_20, "ITEM_BOMBCHU" }, - { RG_BUY_BOMBCHUS_20, "ITEM_BOMBCHU" }, - { RG_ARROWS_5, "ITEM_ARROWS_SMALL" }, - { RG_BUY_ARROWS_10, "ITEM_ARROWS_SMALL" }, - { RG_ARROWS_10, "ITEM_ARROWS_MEDIUM" }, - { RG_BUY_ARROWS_30, "ITEM_ARROWS_MEDIUM" }, - { RG_ARROWS_30, "ITEM_ARROWS_LARGE" }, - { RG_BUY_ARROWS_50, "ITEM_ARROWS_LARGE" }, - { RG_TCG_PIECE_OF_HEART, "ITEM_HEART_PIECE" }, - { RG_DEKU_SEEDS_30, "ITEM_SEEDS" }, - { RG_BUY_DEKU_SEEDS_30, "ITEM_SEEDS" }, - { RG_BUY_HEART, "ITEM_HEART_GRAYSCALE" }, - { RG_FISHING_POLE, "ITEM_FISHING_POLE" }, - { RG_SOLD_OUT, "ITEM_SOLD_OUT" }, - { RG_TRIFORCE_PIECE, "TRIFORCE_PIECE" }, - { RG_SKELETON_KEY, "ITEM_KEY_SMALL" } -}; +std::unordered_map itemImageMap = { { RG_NONE, "ITEM_SOLD_OUT" }, + { RG_KOKIRI_SWORD, "ITEM_SWORD_KOKIRI" }, + { RG_GIANTS_KNIFE, "ITEM_SWORD_KNIFE" }, + { RG_BIGGORON_SWORD, "ITEM_SWORD_BGS" }, + { RG_DEKU_SHIELD, "ITEM_SHIELD_DEKU" }, + { RG_HYLIAN_SHIELD, "ITEM_SHIELD_HYLIAN" }, + { RG_MIRROR_SHIELD, "ITEM_SHIELD_MIRROR" }, + { RG_GORON_TUNIC, "ITEM_TUNIC_GORON" }, + { RG_ZORA_TUNIC, "ITEM_TUNIC_ZORA" }, + { RG_IRON_BOOTS, "ITEM_BOOTS_IRON" }, + { RG_HOVER_BOOTS, "ITEM_BOOTS_HOVER" }, + { RG_BOOMERANG, "ITEM_BOOMERANG" }, + { RG_LENS_OF_TRUTH, "ITEM_LENS" }, + { RG_MEGATON_HAMMER, "ITEM_HAMMER" }, + { RG_STONE_OF_AGONY, "ITEM_STONE_OF_AGONY" }, + { RG_DINS_FIRE, "ITEM_DINS_FIRE" }, + { RG_FARORES_WIND, "ITEM_FARORES_WIND" }, + { RG_NAYRUS_LOVE, "ITEM_NAYRUS_LOVE" }, + { RG_FIRE_ARROWS, "ITEM_ARROW_FIRE" }, + { RG_ICE_ARROWS, "ITEM_ARROW_ICE" }, + { RG_LIGHT_ARROWS, "ITEM_ARROW_LIGHT" }, + { RG_GERUDO_MEMBERSHIP_CARD, "ITEM_GERUDO_CARD" }, + { RG_MAGIC_BEAN, "ITEM_BEAN" }, + { RG_MAGIC_BEAN_PACK, "ITEM_BEAN" }, + { RG_DOUBLE_DEFENSE, "ITEM_HEART_CONTAINER" }, + { RG_WEIRD_EGG, "ITEM_WEIRD_EGG" }, + { RG_ZELDAS_LETTER, "ITEM_LETTER_ZELDA" }, + { RG_POCKET_EGG, "ITEM_POCKET_EGG" }, + { RG_COJIRO, "ITEM_COJIRO" }, + { RG_ODD_MUSHROOM, "ITEM_ODD_MUSHROOM" }, + { RG_ODD_POTION, "ITEM_ODD_POTION" }, + { RG_POACHERS_SAW, "ITEM_SAW" }, + { RG_BROKEN_SWORD, "ITEM_SWORD_BROKEN" }, + { RG_PRESCRIPTION, "ITEM_PRESCRIPTION" }, + { RG_EYEBALL_FROG, "ITEM_FROG" }, + { RG_EYEDROPS, "ITEM_EYEDROPS" }, + { RG_CLAIM_CHECK, "ITEM_CLAIM_CHECK" }, + { RG_GOLD_SKULLTULA_TOKEN, "ITEM_SKULL_TOKEN" }, + { RG_PROGRESSIVE_HOOKSHOT, "ITEM_HOOKSHOT" }, + { RG_PROGRESSIVE_STRENGTH, "ITEM_BRACELET" }, + { RG_PROGRESSIVE_BOMB_BAG, "ITEM_BOMB_BAG_30" }, + { RG_PROGRESSIVE_BOW, "ITEM_QUIVER_30" }, + { RG_PROGRESSIVE_SLINGSHOT, "ITEM_SLINGSHOT" }, + { RG_PROGRESSIVE_WALLET, "ITEM_WALLET_ADULT" }, + { RG_PROGRESSIVE_SCALE, "ITEM_SCALE_SILVER" }, + { RG_PROGRESSIVE_NUT_BAG, "ITEM_NUT" }, + { RG_PROGRESSIVE_STICK_BAG, "ITEM_STICK" }, + { RG_PROGRESSIVE_BOMBCHUS, "ITEM_BOMBCHU" }, + { RG_PROGRESSIVE_MAGIC, "ITEM_MAGIC_SMALL" }, + { RG_MAGIC_SINGLE, "ITEM_MAGIC_SMALL" }, + { RG_MAGIC_DOUBLE, "ITEM_MAGIC_LARGE" }, + { RG_PROGRESSIVE_OCARINA, "ITEM_OCARINA_FAIRY" }, + { RG_PROGRESSIVE_GORONSWORD, "ITEM_SWORD_BGS" }, + { RG_EMPTY_BOTTLE, "ITEM_BOTTLE" }, + { RG_BOTTLE_WITH_MILK, "ITEM_MILK_BOTTLE" }, + { RG_BOTTLE_WITH_RED_POTION, "ITEM_POTION_RED" }, + { RG_BOTTLE_WITH_GREEN_POTION, "ITEM_POTION_GREEN" }, + { RG_BOTTLE_WITH_BLUE_POTION, "ITEM_POTION_BLUE" }, + { RG_BOTTLE_WITH_FAIRY, "ITEM_FAIRY" }, + { RG_BOTTLE_WITH_FISH, "ITEM_FISH" }, + { RG_BOTTLE_WITH_BLUE_FIRE, "ITEM_BLUE_FIRE" }, + { RG_BOTTLE_WITH_BUGS, "ITEM_BUG" }, + { RG_BOTTLE_WITH_POE, "ITEM_POE" }, + { RG_RUTOS_LETTER, "ITEM_LETTER_RUTO" }, + { RG_BOTTLE_WITH_BIG_POE, "ITEM_BIG_POE" }, + { RG_ZELDAS_LULLABY, "ITEM_SONG_LULLABY" }, + { RG_EPONAS_SONG, "ITEM_SONG_EPONA" }, + { RG_SARIAS_SONG, "ITEM_SONG_SARIA" }, + { RG_SUNS_SONG, "ITEM_SONG_SUN" }, + { RG_SONG_OF_TIME, "ITEM_SONG_TIME" }, + { RG_SONG_OF_STORMS, "ITEM_SONG_STORMS" }, + { RG_MINUET_OF_FOREST, "ITEM_SONG_MINUET" }, + { RG_BOLERO_OF_FIRE, "ITEM_SONG_BOLERO" }, + { RG_SERENADE_OF_WATER, "ITEM_SONG_SERENADE" }, + { RG_REQUIEM_OF_SPIRIT, "ITEM_SONG_REQUIEM" }, + { RG_NOCTURNE_OF_SHADOW, "ITEM_SONG_NOCTURNE" }, + { RG_PRELUDE_OF_LIGHT, "ITEM_SONG_PRELUDE" }, + { RG_DEKU_TREE_MAP, "ITEM_DUNGEON_MAP" }, + { RG_DODONGOS_CAVERN_MAP, "ITEM_DUNGEON_MAP" }, + { RG_JABU_JABUS_BELLY_MAP, "ITEM_DUNGEON_MAP" }, + { RG_FOREST_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, + { RG_FIRE_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, + { RG_WATER_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, + { RG_SPIRIT_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, + { RG_SHADOW_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, + { RG_BOTW_MAP, "ITEM_DUNGEON_MAP" }, + { RG_ICE_CAVERN_MAP, "ITEM_DUNGEON_MAP" }, + { RG_DEKU_TREE_COMPASS, "ITEM_COMPASS" }, + { RG_DODONGOS_CAVERN_COMPASS, "ITEM_COMPASS" }, + { RG_JABU_JABUS_BELLY_COMPASS, "ITEM_COMPASS" }, + { RG_FOREST_TEMPLE_COMPASS, "ITEM_COMPASS" }, + { RG_FIRE_TEMPLE_COMPASS, "ITEM_COMPASS" }, + { RG_WATER_TEMPLE_COMPASS, "ITEM_COMPASS" }, + { RG_SPIRIT_TEMPLE_COMPASS, "ITEM_COMPASS" }, + { RG_SHADOW_TEMPLE_COMPASS, "ITEM_COMPASS" }, + { RG_BOTW_COMPASS, "ITEM_COMPASS" }, + { RG_ICE_CAVERN_COMPASS, "ITEM_COMPASS" }, + { RG_FOREST_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, + { RG_FIRE_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, + { RG_WATER_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, + { RG_SPIRIT_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, + { RG_SHADOW_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, + { RG_GANONS_CASTLE_BOSS_KEY, "ITEM_KEY_BOSS" }, + { RG_FOREST_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_FIRE_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_WATER_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_SPIRIT_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_SHADOW_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_BOTW_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_GTG_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_HIDEOUT_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_GANONS_CASTLE_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_TCG_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_KOKIRI_EMERALD, "ITEM_KOKIRI_EMERALD" }, + { RG_GORON_RUBY, "ITEM_GORON_RUBY" }, + { RG_ZORA_SAPPHIRE, "ITEM_ZORA_SAPPHIRE" }, + { RG_FOREST_MEDALLION, "ITEM_MEDALLION_FOREST" }, + { RG_FIRE_MEDALLION, "ITEM_MEDALLION_FIRE" }, + { RG_WATER_MEDALLION, "ITEM_MEDALLION_WATER" }, + { RG_SPIRIT_MEDALLION, "ITEM_MEDALLION_SPIRIT" }, + { RG_SHADOW_MEDALLION, "ITEM_MEDALLION_SHADOW" }, + { RG_LIGHT_MEDALLION, "ITEM_MEDALLION_LIGHT" }, + { RG_RECOVERY_HEART, "ITEM_HEART_GRAYSCALE" }, + { RG_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_GREG_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_BLUE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_RED_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_PURPLE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_HUGE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_LOSER_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_PIECE_OF_HEART, "ITEM_HEART_PIECE" }, + { RG_HEART_CONTAINER, "ITEM_HEART_CONTAINER" }, + { RG_ICE_TRAP, "ITEM_ICE_TRAP" }, + { RG_MILK, "ITEM_MILK_BOTTLE" }, + { RG_BOMBS_5, "ITEM_BOMB" }, + { RG_BOMBS_10, "ITEM_BOMB" }, + { RG_BOMBS_20, "ITEM_BOMB" }, + { RG_BUY_BOMBS_525, "ITEM_BOMB" }, + { RG_BUY_BOMBS_535, "ITEM_BOMB" }, + { RG_BUY_BOMBS_10, "ITEM_BOMB" }, + { RG_BUY_BOMBS_20, "ITEM_BOMB" }, + { RG_BUY_BOMBS_30, "ITEM_BOMB" }, + { RG_DEKU_NUTS_5, "ITEM_NUT" }, + { RG_DEKU_NUTS_10, "ITEM_NUT" }, + { RG_BUY_DEKU_NUTS_5, "ITEM_NUT" }, + { RG_BUY_DEKU_NUTS_10, "ITEM_NUT" }, + { RG_BOMBCHU_5, "ITEM_BOMBCHU" }, + { RG_BOMBCHU_10, "ITEM_BOMBCHU" }, + { RG_BOMBCHU_20, "ITEM_BOMBCHU" }, + { RG_BUY_BOMBCHUS_20, "ITEM_BOMBCHU" }, + { RG_ARROWS_5, "ITEM_ARROWS_SMALL" }, + { RG_BUY_ARROWS_10, "ITEM_ARROWS_SMALL" }, + { RG_ARROWS_10, "ITEM_ARROWS_MEDIUM" }, + { RG_BUY_ARROWS_30, "ITEM_ARROWS_MEDIUM" }, + { RG_ARROWS_30, "ITEM_ARROWS_LARGE" }, + { RG_BUY_ARROWS_50, "ITEM_ARROWS_LARGE" }, + { RG_TCG_PIECE_OF_HEART, "ITEM_HEART_PIECE" }, + { RG_DEKU_SEEDS_30, "ITEM_SEEDS" }, + { RG_BUY_DEKU_SEEDS_30, "ITEM_SEEDS" }, + { RG_BUY_HEART, "ITEM_HEART_GRAYSCALE" }, + { RG_FISHING_POLE, "ITEM_FISHING_POLE" }, + { RG_SOLD_OUT, "ITEM_SOLD_OUT" }, + { RG_TRIFORCE_PIECE, "TRIFORCE_PIECE" }, + { RG_SKELETON_KEY, "ITEM_KEY_SMALL" } }; Rando::Item plandomizerRandoRetrieveItem(RandomizerGet randoGetItem) { auto randoGetItemEntry = Rando::StaticData::RetrieveItem(randoGetItem); @@ -530,15 +528,19 @@ void PlandomizerSaveSpoilerLog() { for (auto& import : plandoLogData) { if (import.checkRewardItem.GetRandomizerGet() == RG_ICE_TRAP) { - spoilerSave["locations"][import.checkName] = { { "item", import.checkRewardItem.GetName().GetForCurrentLanguage(MF_RAW) }, - { "model", import.iceTrapModel.GetName().GetForCurrentLanguage(MF_RAW) }, - { "trickName", import.iceTrapName.c_str() } }; + spoilerSave["locations"][import.checkName] = { + { "item", import.checkRewardItem.GetName().GetForCurrentLanguage(MF_RAW) }, + { "model", import.iceTrapModel.GetName().GetForCurrentLanguage(MF_RAW) }, + { "trickName", import.iceTrapName.c_str() } + }; if (import.shopPrice > -1) { spoilerSave["locations"][import.checkName]["price"] = import.shopPrice; } } else if (import.shopPrice > -1) { - spoilerSave["locations"][import.checkName] = { { "item", import.checkRewardItem.GetName().GetForCurrentLanguage(MF_RAW) }, - { "price", import.shopPrice } }; + spoilerSave["locations"][import.checkName] = { + { "item", import.checkRewardItem.GetName().GetForCurrentLanguage(MF_RAW) }, + { "price", import.shopPrice } + }; } else { spoilerSave["locations"][import.checkName] = import.checkRewardItem.GetName().GetForCurrentLanguage(MF_RAW); } @@ -622,8 +624,7 @@ void PlandomizerLoadSpoilerLog(std::string logFile) { checkObject.checkRewardItem = plandomizerRandoRetrieveItem(Rando::StaticData::itemNameToEnum[value.get()]); checkObject.shopPrice = -1; - if (checkObject.shopPrice == -1 && - checkObject.checkRewardItem.GetItemType() == ITEMTYPE_SHOP) { + if (checkObject.shopPrice == -1 && checkObject.checkRewardItem.GetItemType() == ITEMTYPE_SHOP) { checkObject.shopPrice = checkObject.checkRewardItem.GetPrice(); } } diff --git a/soh/soh/Enhancements/randomizer/dungeon.cpp b/soh/soh/Enhancements/randomizer/dungeon.cpp index db0b5b3c9..fca145540 100644 --- a/soh/soh/Enhancements/randomizer/dungeon.cpp +++ b/soh/soh/Enhancements/randomizer/dungeon.cpp @@ -170,14 +170,13 @@ Dungeons::Dungeons() { "Shadow Temple", RHT_SHADOW_TEMPLE, RG_SHADOW_TEMPLE_MAP, RG_SHADOW_TEMPLE_COMPASS, RG_SHADOW_TEMPLE_SMALL_KEY, RG_SHADOW_TEMPLE_KEY_RING, RG_SHADOW_TEMPLE_BOSS_KEY, RA_SHADOW_TEMPLE, 5, 6, RSK_MQ_SHADOW_TEMPLE); dungeonList[BOTTOM_OF_THE_WELL] = - DungeonInfo("Bottom of the Well", RHT_BOTTOM_OF_THE_WELL, RG_BOTW_MAP, - RG_BOTW_COMPASS, RG_BOTW_SMALL_KEY, RG_BOTW_KEY_RING, - RG_NONE, RA_BOTTOM_OF_THE_WELL, 3, 2, RSK_MQ_BOTTOM_OF_THE_WELL); + DungeonInfo("Bottom of the Well", RHT_BOTTOM_OF_THE_WELL, RG_BOTW_MAP, RG_BOTW_COMPASS, RG_BOTW_SMALL_KEY, + RG_BOTW_KEY_RING, RG_NONE, RA_BOTTOM_OF_THE_WELL, 3, 2, RSK_MQ_BOTTOM_OF_THE_WELL); dungeonList[ICE_CAVERN] = DungeonInfo("Ice Cavern", RHT_ICE_CAVERN, RG_ICE_CAVERN_MAP, RG_ICE_CAVERN_COMPASS, RG_NONE, RG_NONE, RG_NONE, RA_ICE_CAVERN, 0, 0, RSK_MQ_ICE_CAVERN); - dungeonList[GERUDO_TRAINING_GROUND] = DungeonInfo( - "Gerudo Training Ground", RHT_GERUDO_TRAINING_GROUND, RG_NONE, RG_NONE, RG_GTG_SMALL_KEY, - RG_GTG_KEY_RING, RG_NONE, RA_GERUDO_TRAINING_GROUND, 9, 3, RSK_MQ_GTG); + dungeonList[GERUDO_TRAINING_GROUND] = + DungeonInfo("Gerudo Training Ground", RHT_GERUDO_TRAINING_GROUND, RG_NONE, RG_NONE, RG_GTG_SMALL_KEY, + RG_GTG_KEY_RING, RG_NONE, RA_GERUDO_TRAINING_GROUND, 9, 3, RSK_MQ_GTG); dungeonList[GANONS_CASTLE] = DungeonInfo("Ganon's Castle", RHT_GANONS_CASTLE, RG_NONE, RG_NONE, RG_GANONS_CASTLE_SMALL_KEY, RG_GANONS_CASTLE_KEY_RING, RG_GANONS_CASTLE_BOSS_KEY, RA_GANONS_CASTLE, 2, 3, RSK_MQ_GANONS_CASTLE); diff --git a/soh/soh/Enhancements/randomizer/hint.cpp b/soh/soh/Enhancements/randomizer/hint.cpp index f171378ad..d1820639f 100644 --- a/soh/soh/Enhancements/randomizer/hint.cpp +++ b/soh/soh/Enhancements/randomizer/hint.cpp @@ -276,7 +276,8 @@ const HintText Hint::GetHintText(uint8_t id) const { return StaticData::hintTextTable[RHT_CAN_BE_FOUND_AT]; } } else { - return HintText(CustomMessage("ERROR: ITEM AREA HINT WITH NO LOCATION")); // RANDOTODO get isDungeon from area? + return HintText( + CustomMessage("ERROR: ITEM AREA HINT WITH NO LOCATION")); // RANDOTODO get isDungeon from area? } default: return HintText(CustomMessage("ERROR: NO HINTKEY PROVIDED AND HINT TYPE HAS NO DEFAULT")); @@ -411,15 +412,13 @@ oJson Hint::toJSON() { if (!(StaticData::staticHintInfoMap.contains(ownKey) && StaticData::staticHintInfoMap[ownKey].targetItems.size() > 0)) { if (items.size() == 1) { - log["item"] = StaticData::GetItemTable()[items[0]] - .GetName() - .GetForCurrentLanguage(MF_RAW); // RANDOTODO change to CustomMessage; + log["item"] = StaticData::GetItemTable()[items[0]].GetName().GetForCurrentLanguage( + MF_RAW); // RANDOTODO change to CustomMessage; } else if (items.size() > 1) { std::vector itemStrings = {}; for (size_t c = 0; c < items.size(); c++) { - itemStrings.push_back(StaticData::GetItemTable()[items[c]] - .GetName() - .GetForCurrentLanguage(MF_RAW)); // RANDOTODO change to CustomMessage + itemStrings.push_back(StaticData::GetItemTable()[items[c]].GetName().GetForCurrentLanguage( + MF_RAW)); // RANDOTODO change to CustomMessage } log["items"] = itemStrings; } diff --git a/soh/soh/Enhancements/randomizer/hook_handlers.cpp b/soh/soh/Enhancements/randomizer/hook_handlers.cpp index 2bd505c0f..abb143f83 100644 --- a/soh/soh/Enhancements/randomizer/hook_handlers.cpp +++ b/soh/soh/Enhancements/randomizer/hook_handlers.cpp @@ -1034,7 +1034,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l }); } else if (item00->itemEntry.modIndex == MOD_RANDOMIZER) { Notification::Emit({ - .message = "You found ",//RANDOTODO change based on language + .message = "You found ", // RANDOTODO change based on language .suffix = Rando::StaticData::RetrieveItem((RandomizerGet)item00->itemEntry.getItemId) .GetName() .GetForCurrentLanguage(MF_RAW), diff --git a/soh/soh/Enhancements/randomizer/item.cpp b/soh/soh/Enhancements/randomizer/item.cpp index 692ba781a..51d044efa 100644 --- a/soh/soh/Enhancements/randomizer/item.cpp +++ b/soh/soh/Enhancements/randomizer/item.cpp @@ -15,13 +15,12 @@ Item::Item() : randomizerGet(RG_NONE), type(ITEMTYPE_ITEM), getItemId(GI_NONE), advancement(false), hintKey(RHT_NONE), progressive(false), price(0) { } -Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, - const bool advancement_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t itemId_, - const uint16_t objectId_, const uint16_t gid_, const uint16_t textId_, const uint16_t field_, - const int16_t chestAnimation_, const GetItemCategory category_, const uint16_t modIndex_, - const bool progressive_, const uint16_t price_) - : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), - advancement(advancement_), logicVal(logicVal_), hintKey(hintKey_), progressive(progressive_), price(price_) { +Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, + LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t itemId_, const uint16_t objectId_, + const uint16_t gid_, const uint16_t textId_, const uint16_t field_, const int16_t chestAnimation_, + const GetItemCategory category_, const uint16_t modIndex_, const bool progressive_, const uint16_t price_) + : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), advancement(advancement_), logicVal(logicVal_), + hintKey(hintKey_), progressive(progressive_), price(price_) { if (modIndex_ == MOD_RANDOMIZER || getItemId > 0x7D) { giEntry = std::make_shared(GetItemEntry{ itemId_, field_, static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, @@ -35,27 +34,31 @@ Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16 } } - -Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, - const bool advancement_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, - const uint16_t objectId_, const uint16_t gid_, const uint16_t textId_, const uint16_t field_, - const int16_t chestAnimation_, const GetItemCategory category_, const uint16_t modIndex_, - const bool progressive_, const uint16_t price_) - : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), - advancement(advancement_), logicVal(logicVal_), hintKey(hintKey_), progressive(progressive_), price(price_) { +Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, + LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t objectId_, const uint16_t gid_, + const uint16_t textId_, const uint16_t field_, const int16_t chestAnimation_, + const GetItemCategory category_, const uint16_t modIndex_, const bool progressive_, const uint16_t price_) + : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), advancement(advancement_), logicVal(logicVal_), + hintKey(hintKey_), progressive(progressive_), price(price_) { if (modIndex_ == MOD_RANDOMIZER || getItemId > 0x7D) { - giEntry = std::make_shared(GetItemEntry{ static_cast(randomizerGet_), field_, static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, objectId_, modIndex_, TABLE_RANDOMIZER, static_cast(randomizerGet_), gid_, true, ITEM_FROM_NPC, category_, static_cast(randomizerGet_), MOD_RANDOMIZER, NULL }); - } - else { - giEntry = std::make_shared(GetItemEntry{ static_cast(randomizerGet_), field_, static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, objectId_, modIndex_, TABLE_VANILLA, getItemId_, gid_, true, ITEM_FROM_NPC, category_, static_cast(randomizerGet_), modIndex_, NULL }); + giEntry = std::make_shared( + GetItemEntry{ static_cast(randomizerGet_), field_, + static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, + objectId_, modIndex_, TABLE_RANDOMIZER, static_cast(randomizerGet_), gid_, true, + ITEM_FROM_NPC, category_, static_cast(randomizerGet_), MOD_RANDOMIZER, NULL }); + } else { + giEntry = std::make_shared( + GetItemEntry{ static_cast(randomizerGet_), field_, + static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, + objectId_, modIndex_, TABLE_VANILLA, getItemId_, gid_, true, ITEM_FROM_NPC, category_, + static_cast(randomizerGet_), modIndex_, NULL }); } } -Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, - const bool advancement_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const bool progressive_, - const uint16_t price_) - : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), - advancement(advancement_), logicVal(logicVal_), hintKey(hintKey_), progressive(progressive_), price(price_) { +Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, + LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const bool progressive_, const uint16_t price_) + : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), advancement(advancement_), logicVal(logicVal_), + hintKey(hintKey_), progressive(progressive_), price(price_) { } Item::~Item() = default; diff --git a/soh/soh/Enhancements/randomizer/item.h b/soh/soh/Enhancements/randomizer/item.h index 5b80765d0..60ff4c13b 100644 --- a/soh/soh/Enhancements/randomizer/item.h +++ b/soh/soh/Enhancements/randomizer/item.h @@ -30,16 +30,16 @@ namespace Rando { class Item { public: Item(); - Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, - LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t itemId_, uint16_t objectId_, uint16_t gid_, - uint16_t textId_, uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, + Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, + RandomizerHintTextKey hintKey_, uint16_t itemId_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, + uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, bool progressive_ = false, uint16_t price_ = 0); - Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, - LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t objectId_, uint16_t gid_, - uint16_t textId_, uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, - bool progressive_ = false, uint16_t price_ = 0); - Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, - LogicVal logicVal_, RandomizerHintTextKey hintKey_, bool progressive_ = false, uint16_t price_ = 0); + Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, + RandomizerHintTextKey hintKey_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, uint16_t field_, + int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, bool progressive_ = false, + uint16_t price_ = 0); + Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, + RandomizerHintTextKey hintKey_, bool progressive_ = false, uint16_t price_ = 0); ~Item(); void ApplyEffect() const; diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index 66e46ae9e..de92b5d9e 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -406,11 +406,11 @@ void Rando::StaticData::InitItemTable() { // Init itemNameToEnum for (auto& item : itemTable) { std::vector strings = item.GetName().GetAllMessages(MF_RAW); - for (std::string string: strings){ - if (itemNameToEnum.contains(string) && string != ""){ - if (itemNameToEnum[string] != item.GetRandomizerGet()){ + for (std::string string : strings) { + if (itemNameToEnum.contains(string) && string != "") { + if (itemNameToEnum[string] != item.GetRandomizerGet()) { SPDLOG_DEBUG("\tREPEATED STRING WITH " + string + "\n\n"); - } + } } else { itemNameToEnum[string] = item.GetRandomizerGet(); } diff --git a/soh/soh/Enhancements/randomizer/logic.cpp b/soh/soh/Enhancements/randomizer/logic.cpp index cf72b5e33..85817363a 100644 --- a/soh/soh/Enhancements/randomizer/logic.cpp +++ b/soh/soh/Enhancements/randomizer/logic.cpp @@ -1460,99 +1460,99 @@ std::map Logic::RandoGetToEquipFlag = { { RG_IRON_BOOTS, EQUIP_FLAG_BOOTS_IRON }, { RG_HOVER_BOOTS, EQUIP_FLAG_BOOTS_HOVER } }; - std::map Logic::RandoGetToRandInf = { - { RG_ZELDAS_LETTER, RAND_INF_ZELDAS_LETTER }, - { RG_WEIRD_EGG, RAND_INF_WEIRD_EGG }, - { RG_GOHMA_SOUL, RAND_INF_GOHMA_SOUL }, - { RG_KING_DODONGO_SOUL, RAND_INF_KING_DODONGO_SOUL }, - { RG_BARINADE_SOUL, RAND_INF_BARINADE_SOUL }, - { RG_PHANTOM_GANON_SOUL, RAND_INF_PHANTOM_GANON_SOUL }, - { RG_VOLVAGIA_SOUL, RAND_INF_VOLVAGIA_SOUL }, - { RG_MORPHA_SOUL, RAND_INF_MORPHA_SOUL }, - { RG_BONGO_BONGO_SOUL, RAND_INF_BONGO_BONGO_SOUL }, - { RG_TWINROVA_SOUL, RAND_INF_TWINROVA_SOUL }, - { RG_GANON_SOUL, RAND_INF_GANON_SOUL }, - { RG_OCARINA_A_BUTTON, RAND_INF_HAS_OCARINA_A }, - { RG_OCARINA_C_UP_BUTTON, RAND_INF_HAS_OCARINA_C_UP }, - { RG_OCARINA_C_DOWN_BUTTON, RAND_INF_HAS_OCARINA_C_DOWN }, - { RG_OCARINA_C_LEFT_BUTTON, RAND_INF_HAS_OCARINA_C_LEFT }, - { RG_OCARINA_C_RIGHT_BUTTON, RAND_INF_HAS_OCARINA_C_RIGHT }, - { RG_SKELETON_KEY, RAND_INF_HAS_SKELETON_KEY }, - { RG_GREG_RUPEE, RAND_INF_GREG_FOUND }, - { RG_FISHING_POLE, RAND_INF_FISHING_POLE_FOUND }, - { RG_GUARD_HOUSE_KEY, RAND_INF_GUARD_HOUSE_KEY_OBTAINED }, - { RG_MARKET_BAZAAR_KEY, RAND_INF_MARKET_BAZAAR_KEY_OBTAINED }, - { RG_MARKET_POTION_SHOP_KEY, RAND_INF_MARKET_POTION_SHOP_KEY_OBTAINED }, - { RG_MASK_SHOP_KEY, RAND_INF_MASK_SHOP_KEY_OBTAINED }, - { RG_MARKET_SHOOTING_KEY, RAND_INF_MARKET_SHOOTING_GALLERY_KEY_OBTAINED }, - { RG_BOMBCHU_BOWLING_KEY, RAND_INF_BOMBCHU_BOWLING_KEY_OBTAINED }, - { RG_TCG_BUILDING_KEY, RAND_INF_TREASURE_CHEST_GAME_BUILDING_KEY_OBTAINED }, - { RG_BOMBCHU_SHOP_KEY, RAND_INF_BOMBCHU_SHOP_KEY_OBTAINED }, - { RG_RICHARDS_HOUSE_KEY, RAND_INF_RICHARDS_HOUSE_KEY_OBTAINED }, - { RG_ALLEY_HOUSE_KEY, RAND_INF_ALLEY_HOUSE_KEY_OBTAINED }, - { RG_KAK_BAZAAR_KEY, RAND_INF_KAK_BAZAAR_KEY_OBTAINED }, - { RG_KAK_POTION_SHOP_KEY, RAND_INF_KAK_POTION_SHOP_KEY_OBTAINED }, - { RG_BOSS_HOUSE_KEY, RAND_INF_BOSS_HOUSE_KEY_OBTAINED }, - { RG_GRANNYS_POTION_SHOP_KEY, RAND_INF_GRANNYS_POTION_SHOP_KEY_OBTAINED }, - { RG_SKULLTULA_HOUSE_KEY, RAND_INF_SKULLTULA_HOUSE_KEY_OBTAINED }, - { RG_IMPAS_HOUSE_KEY, RAND_INF_IMPAS_HOUSE_KEY_OBTAINED }, - { RG_WINDMILL_KEY, RAND_INF_WINDMILL_KEY_OBTAINED }, - { RG_KAK_SHOOTING_KEY, RAND_INF_KAK_SHOOTING_GALLERY_KEY_OBTAINED }, - { RG_DAMPES_HUT_KEY, RAND_INF_DAMPES_HUT_KEY_OBTAINED }, - { RG_TALONS_HOUSE_KEY, RAND_INF_TALONS_HOUSE_KEY_OBTAINED }, - { RG_STABLES_KEY, RAND_INF_STABLES_KEY_OBTAINED }, - { RG_BACK_TOWER_KEY, RAND_INF_BACK_TOWER_KEY_OBTAINED }, - { RG_HYLIA_LAB_KEY, RAND_INF_HYLIA_LAB_KEY_OBTAINED }, - { RG_FISHING_HOLE_KEY, RAND_INF_FISHING_HOLE_KEY_OBTAINED }, - }; +std::map Logic::RandoGetToRandInf = { + { RG_ZELDAS_LETTER, RAND_INF_ZELDAS_LETTER }, + { RG_WEIRD_EGG, RAND_INF_WEIRD_EGG }, + { RG_GOHMA_SOUL, RAND_INF_GOHMA_SOUL }, + { RG_KING_DODONGO_SOUL, RAND_INF_KING_DODONGO_SOUL }, + { RG_BARINADE_SOUL, RAND_INF_BARINADE_SOUL }, + { RG_PHANTOM_GANON_SOUL, RAND_INF_PHANTOM_GANON_SOUL }, + { RG_VOLVAGIA_SOUL, RAND_INF_VOLVAGIA_SOUL }, + { RG_MORPHA_SOUL, RAND_INF_MORPHA_SOUL }, + { RG_BONGO_BONGO_SOUL, RAND_INF_BONGO_BONGO_SOUL }, + { RG_TWINROVA_SOUL, RAND_INF_TWINROVA_SOUL }, + { RG_GANON_SOUL, RAND_INF_GANON_SOUL }, + { RG_OCARINA_A_BUTTON, RAND_INF_HAS_OCARINA_A }, + { RG_OCARINA_C_UP_BUTTON, RAND_INF_HAS_OCARINA_C_UP }, + { RG_OCARINA_C_DOWN_BUTTON, RAND_INF_HAS_OCARINA_C_DOWN }, + { RG_OCARINA_C_LEFT_BUTTON, RAND_INF_HAS_OCARINA_C_LEFT }, + { RG_OCARINA_C_RIGHT_BUTTON, RAND_INF_HAS_OCARINA_C_RIGHT }, + { RG_SKELETON_KEY, RAND_INF_HAS_SKELETON_KEY }, + { RG_GREG_RUPEE, RAND_INF_GREG_FOUND }, + { RG_FISHING_POLE, RAND_INF_FISHING_POLE_FOUND }, + { RG_GUARD_HOUSE_KEY, RAND_INF_GUARD_HOUSE_KEY_OBTAINED }, + { RG_MARKET_BAZAAR_KEY, RAND_INF_MARKET_BAZAAR_KEY_OBTAINED }, + { RG_MARKET_POTION_SHOP_KEY, RAND_INF_MARKET_POTION_SHOP_KEY_OBTAINED }, + { RG_MASK_SHOP_KEY, RAND_INF_MASK_SHOP_KEY_OBTAINED }, + { RG_MARKET_SHOOTING_KEY, RAND_INF_MARKET_SHOOTING_GALLERY_KEY_OBTAINED }, + { RG_BOMBCHU_BOWLING_KEY, RAND_INF_BOMBCHU_BOWLING_KEY_OBTAINED }, + { RG_TCG_BUILDING_KEY, RAND_INF_TREASURE_CHEST_GAME_BUILDING_KEY_OBTAINED }, + { RG_BOMBCHU_SHOP_KEY, RAND_INF_BOMBCHU_SHOP_KEY_OBTAINED }, + { RG_RICHARDS_HOUSE_KEY, RAND_INF_RICHARDS_HOUSE_KEY_OBTAINED }, + { RG_ALLEY_HOUSE_KEY, RAND_INF_ALLEY_HOUSE_KEY_OBTAINED }, + { RG_KAK_BAZAAR_KEY, RAND_INF_KAK_BAZAAR_KEY_OBTAINED }, + { RG_KAK_POTION_SHOP_KEY, RAND_INF_KAK_POTION_SHOP_KEY_OBTAINED }, + { RG_BOSS_HOUSE_KEY, RAND_INF_BOSS_HOUSE_KEY_OBTAINED }, + { RG_GRANNYS_POTION_SHOP_KEY, RAND_INF_GRANNYS_POTION_SHOP_KEY_OBTAINED }, + { RG_SKULLTULA_HOUSE_KEY, RAND_INF_SKULLTULA_HOUSE_KEY_OBTAINED }, + { RG_IMPAS_HOUSE_KEY, RAND_INF_IMPAS_HOUSE_KEY_OBTAINED }, + { RG_WINDMILL_KEY, RAND_INF_WINDMILL_KEY_OBTAINED }, + { RG_KAK_SHOOTING_KEY, RAND_INF_KAK_SHOOTING_GALLERY_KEY_OBTAINED }, + { RG_DAMPES_HUT_KEY, RAND_INF_DAMPES_HUT_KEY_OBTAINED }, + { RG_TALONS_HOUSE_KEY, RAND_INF_TALONS_HOUSE_KEY_OBTAINED }, + { RG_STABLES_KEY, RAND_INF_STABLES_KEY_OBTAINED }, + { RG_BACK_TOWER_KEY, RAND_INF_BACK_TOWER_KEY_OBTAINED }, + { RG_HYLIA_LAB_KEY, RAND_INF_HYLIA_LAB_KEY_OBTAINED }, + { RG_FISHING_HOLE_KEY, RAND_INF_FISHING_HOLE_KEY_OBTAINED }, +}; - std::map Logic::RandoGetToDungeonScene = { - { RG_FOREST_TEMPLE_SMALL_KEY, SCENE_FOREST_TEMPLE }, - { RG_FIRE_TEMPLE_SMALL_KEY, SCENE_FIRE_TEMPLE }, - { RG_WATER_TEMPLE_SMALL_KEY, SCENE_WATER_TEMPLE }, - { RG_SPIRIT_TEMPLE_SMALL_KEY, SCENE_SPIRIT_TEMPLE }, - { RG_SHADOW_TEMPLE_SMALL_KEY, SCENE_SHADOW_TEMPLE }, - { RG_BOTW_SMALL_KEY, SCENE_BOTTOM_OF_THE_WELL }, - { RG_GTG_SMALL_KEY, SCENE_GERUDO_TRAINING_GROUND }, - { RG_HIDEOUT_SMALL_KEY, SCENE_THIEVES_HIDEOUT }, - { RG_GANONS_CASTLE_SMALL_KEY, SCENE_INSIDE_GANONS_CASTLE }, - { RG_FOREST_TEMPLE_KEY_RING, SCENE_FOREST_TEMPLE }, - { RG_FIRE_TEMPLE_KEY_RING, SCENE_FIRE_TEMPLE }, - { RG_WATER_TEMPLE_KEY_RING, SCENE_WATER_TEMPLE }, - { RG_SPIRIT_TEMPLE_KEY_RING, SCENE_SPIRIT_TEMPLE }, - { RG_SHADOW_TEMPLE_KEY_RING, SCENE_SHADOW_TEMPLE }, - { RG_BOTW_KEY_RING, SCENE_BOTTOM_OF_THE_WELL }, - { RG_GTG_KEY_RING, SCENE_GERUDO_TRAINING_GROUND }, - { RG_HIDEOUT_KEY_RING, SCENE_THIEVES_HIDEOUT }, - { RG_GANONS_CASTLE_KEY_RING, SCENE_INSIDE_GANONS_CASTLE }, - { RG_FOREST_TEMPLE_BOSS_KEY, SCENE_FOREST_TEMPLE }, - { RG_FIRE_TEMPLE_BOSS_KEY, SCENE_FIRE_TEMPLE }, - { RG_WATER_TEMPLE_BOSS_KEY, SCENE_WATER_TEMPLE }, - { RG_SPIRIT_TEMPLE_BOSS_KEY, SCENE_SPIRIT_TEMPLE }, - { RG_SHADOW_TEMPLE_BOSS_KEY, SCENE_SHADOW_TEMPLE }, - { RG_GANONS_CASTLE_BOSS_KEY, SCENE_INSIDE_GANONS_CASTLE }, - { RG_DEKU_TREE_MAP, SCENE_DEKU_TREE }, - { RG_DODONGOS_CAVERN_MAP, SCENE_DODONGOS_CAVERN }, - { RG_JABU_JABUS_BELLY_MAP, SCENE_JABU_JABU }, - { RG_FOREST_TEMPLE_MAP, SCENE_FOREST_TEMPLE }, - { RG_FIRE_TEMPLE_MAP, SCENE_FIRE_TEMPLE }, - { RG_WATER_TEMPLE_MAP, SCENE_WATER_TEMPLE }, - { RG_SPIRIT_TEMPLE_MAP, SCENE_SPIRIT_TEMPLE }, - { RG_SHADOW_TEMPLE_MAP, SCENE_SHADOW_TEMPLE }, - { RG_BOTW_MAP, SCENE_BOTTOM_OF_THE_WELL }, - { RG_ICE_CAVERN_MAP, SCENE_ICE_CAVERN }, - { RG_DEKU_TREE_COMPASS, SCENE_DEKU_TREE }, - { RG_DODONGOS_CAVERN_COMPASS, SCENE_DODONGOS_CAVERN }, - { RG_JABU_JABUS_BELLY_COMPASS, SCENE_JABU_JABU }, - { RG_FOREST_TEMPLE_COMPASS, SCENE_FOREST_TEMPLE }, - { RG_FIRE_TEMPLE_COMPASS, SCENE_FIRE_TEMPLE }, - { RG_WATER_TEMPLE_COMPASS, SCENE_WATER_TEMPLE }, - { RG_SPIRIT_TEMPLE_COMPASS, SCENE_SPIRIT_TEMPLE }, - { RG_SHADOW_TEMPLE_COMPASS, SCENE_SHADOW_TEMPLE }, - { RG_BOTW_COMPASS, SCENE_BOTTOM_OF_THE_WELL }, - { RG_ICE_CAVERN_COMPASS, SCENE_ICE_CAVERN }, - { RG_TCG_SMALL_KEY, SCENE_TREASURE_BOX_SHOP } - }; +std::map Logic::RandoGetToDungeonScene = { + { RG_FOREST_TEMPLE_SMALL_KEY, SCENE_FOREST_TEMPLE }, + { RG_FIRE_TEMPLE_SMALL_KEY, SCENE_FIRE_TEMPLE }, + { RG_WATER_TEMPLE_SMALL_KEY, SCENE_WATER_TEMPLE }, + { RG_SPIRIT_TEMPLE_SMALL_KEY, SCENE_SPIRIT_TEMPLE }, + { RG_SHADOW_TEMPLE_SMALL_KEY, SCENE_SHADOW_TEMPLE }, + { RG_BOTW_SMALL_KEY, SCENE_BOTTOM_OF_THE_WELL }, + { RG_GTG_SMALL_KEY, SCENE_GERUDO_TRAINING_GROUND }, + { RG_HIDEOUT_SMALL_KEY, SCENE_THIEVES_HIDEOUT }, + { RG_GANONS_CASTLE_SMALL_KEY, SCENE_INSIDE_GANONS_CASTLE }, + { RG_FOREST_TEMPLE_KEY_RING, SCENE_FOREST_TEMPLE }, + { RG_FIRE_TEMPLE_KEY_RING, SCENE_FIRE_TEMPLE }, + { RG_WATER_TEMPLE_KEY_RING, SCENE_WATER_TEMPLE }, + { RG_SPIRIT_TEMPLE_KEY_RING, SCENE_SPIRIT_TEMPLE }, + { RG_SHADOW_TEMPLE_KEY_RING, SCENE_SHADOW_TEMPLE }, + { RG_BOTW_KEY_RING, SCENE_BOTTOM_OF_THE_WELL }, + { RG_GTG_KEY_RING, SCENE_GERUDO_TRAINING_GROUND }, + { RG_HIDEOUT_KEY_RING, SCENE_THIEVES_HIDEOUT }, + { RG_GANONS_CASTLE_KEY_RING, SCENE_INSIDE_GANONS_CASTLE }, + { RG_FOREST_TEMPLE_BOSS_KEY, SCENE_FOREST_TEMPLE }, + { RG_FIRE_TEMPLE_BOSS_KEY, SCENE_FIRE_TEMPLE }, + { RG_WATER_TEMPLE_BOSS_KEY, SCENE_WATER_TEMPLE }, + { RG_SPIRIT_TEMPLE_BOSS_KEY, SCENE_SPIRIT_TEMPLE }, + { RG_SHADOW_TEMPLE_BOSS_KEY, SCENE_SHADOW_TEMPLE }, + { RG_GANONS_CASTLE_BOSS_KEY, SCENE_INSIDE_GANONS_CASTLE }, + { RG_DEKU_TREE_MAP, SCENE_DEKU_TREE }, + { RG_DODONGOS_CAVERN_MAP, SCENE_DODONGOS_CAVERN }, + { RG_JABU_JABUS_BELLY_MAP, SCENE_JABU_JABU }, + { RG_FOREST_TEMPLE_MAP, SCENE_FOREST_TEMPLE }, + { RG_FIRE_TEMPLE_MAP, SCENE_FIRE_TEMPLE }, + { RG_WATER_TEMPLE_MAP, SCENE_WATER_TEMPLE }, + { RG_SPIRIT_TEMPLE_MAP, SCENE_SPIRIT_TEMPLE }, + { RG_SHADOW_TEMPLE_MAP, SCENE_SHADOW_TEMPLE }, + { RG_BOTW_MAP, SCENE_BOTTOM_OF_THE_WELL }, + { RG_ICE_CAVERN_MAP, SCENE_ICE_CAVERN }, + { RG_DEKU_TREE_COMPASS, SCENE_DEKU_TREE }, + { RG_DODONGOS_CAVERN_COMPASS, SCENE_DODONGOS_CAVERN }, + { RG_JABU_JABUS_BELLY_COMPASS, SCENE_JABU_JABU }, + { RG_FOREST_TEMPLE_COMPASS, SCENE_FOREST_TEMPLE }, + { RG_FIRE_TEMPLE_COMPASS, SCENE_FIRE_TEMPLE }, + { RG_WATER_TEMPLE_COMPASS, SCENE_WATER_TEMPLE }, + { RG_SPIRIT_TEMPLE_COMPASS, SCENE_SPIRIT_TEMPLE }, + { RG_SHADOW_TEMPLE_COMPASS, SCENE_SHADOW_TEMPLE }, + { RG_BOTW_COMPASS, SCENE_BOTTOM_OF_THE_WELL }, + { RG_ICE_CAVERN_COMPASS, SCENE_ICE_CAVERN }, + { RG_TCG_SMALL_KEY, SCENE_TREASURE_BOX_SHOP } +}; std::map Logic::RandoGetToQuestItem = { { RG_FOREST_MEDALLION, QUEST_MEDALLION_FOREST }, @@ -1581,15 +1581,15 @@ std::map Logic::RandoGetToQuestItem = { }; std::map BottleRandomizerGetToItemID = { - { RG_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED }, + { RG_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED }, { RG_BOTTLE_WITH_GREEN_POTION, ITEM_POTION_GREEN }, - { RG_BOTTLE_WITH_BLUE_POTION, ITEM_POTION_BLUE }, - { RG_BOTTLE_WITH_FAIRY, ITEM_FAIRY }, - { RG_BOTTLE_WITH_FISH, ITEM_FISH }, - { RG_BOTTLE_WITH_BLUE_FIRE, ITEM_BLUE_FIRE }, - { RG_BOTTLE_WITH_BUGS, ITEM_BUG }, - { RG_BOTTLE_WITH_POE, ITEM_POE }, - { RG_BOTTLE_WITH_BIG_POE, ITEM_BIG_POE }, + { RG_BOTTLE_WITH_BLUE_POTION, ITEM_POTION_BLUE }, + { RG_BOTTLE_WITH_FAIRY, ITEM_FAIRY }, + { RG_BOTTLE_WITH_FISH, ITEM_FISH }, + { RG_BOTTLE_WITH_BLUE_FIRE, ITEM_BLUE_FIRE }, + { RG_BOTTLE_WITH_BUGS, ITEM_BUG }, + { RG_BOTTLE_WITH_POE, ITEM_POE }, + { RG_BOTTLE_WITH_BIG_POE, ITEM_BIG_POE }, }; uint32_t HookshotLookup[3] = { ITEM_NONE, ITEM_HOOKSHOT, ITEM_LONGSHOT }; diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index f503a2d2f..465cc44be 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -635,17 +635,21 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe // Inventory Items case RG_PROGRESSIVE_STICK_BAG: - return infiniteUpgrades != RO_INF_UPGRADES_OFF ? - (Flags_GetRandomizerInf(RAND_INF_HAS_INFINITE_STICK_UPGRADE) ? CANT_OBTAIN_ALREADY_HAVE : CAN_OBTAIN) : - (CUR_UPG_VALUE(UPG_STICKS) < 3 ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE); + return infiniteUpgrades != RO_INF_UPGRADES_OFF + ? (Flags_GetRandomizerInf(RAND_INF_HAS_INFINITE_STICK_UPGRADE) ? CANT_OBTAIN_ALREADY_HAVE + : CAN_OBTAIN) + : (CUR_UPG_VALUE(UPG_STICKS) < 3 ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE); case RG_DEKU_STICK_1: case RG_BUY_DEKU_STICK_1: - return CUR_UPG_VALUE(UPG_STICKS) || !OTRGlobals::Instance->gRandoContext->GetOption(RSK_SHUFFLE_DEKU_STICK_BAG).Get() - ? CAN_OBTAIN : CANT_OBTAIN_NEED_UPGRADE; + return CUR_UPG_VALUE(UPG_STICKS) || + !OTRGlobals::Instance->gRandoContext->GetOption(RSK_SHUFFLE_DEKU_STICK_BAG).Get() + ? CAN_OBTAIN + : CANT_OBTAIN_NEED_UPGRADE; case RG_PROGRESSIVE_NUT_BAG: - return infiniteUpgrades != RO_INF_UPGRADES_OFF ? - (Flags_GetRandomizerInf(RAND_INF_HAS_INFINITE_NUT_UPGRADE) ? CANT_OBTAIN_ALREADY_HAVE : CAN_OBTAIN) : - (CUR_UPG_VALUE(UPG_NUTS) < 3 ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE); + return infiniteUpgrades != RO_INF_UPGRADES_OFF + ? (Flags_GetRandomizerInf(RAND_INF_HAS_INFINITE_NUT_UPGRADE) ? CANT_OBTAIN_ALREADY_HAVE + : CAN_OBTAIN) + : (CUR_UPG_VALUE(UPG_NUTS) < 3 ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE); case RG_DEKU_NUTS_5: case RG_DEKU_NUTS_10: case RG_BUY_DEKU_NUTS_5: @@ -874,7 +878,8 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe case RG_SHADOW_TEMPLE_COMPASS: return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_SHADOW_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_BOTW_COMPASS: - return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_BOTTOM_OF_THE_WELL) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; + return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_BOTTOM_OF_THE_WELL) ? CAN_OBTAIN + : CANT_OBTAIN_ALREADY_HAVE; case RG_ICE_CAVERN_COMPASS: return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_ICE_CAVERN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_FOREST_TEMPLE_BOSS_KEY: @@ -906,17 +911,30 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_SHADOW_TEMPLE_SMALL_KEY: - return gSaveContext.inventory.dungeonKeys[SCENE_SHADOW_TEMPLE] < SHADOW_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; + return gSaveContext.inventory.dungeonKeys[SCENE_SHADOW_TEMPLE] < SHADOW_TEMPLE_SMALL_KEY_MAX + ? CAN_OBTAIN + : CANT_OBTAIN_ALREADY_HAVE; case RG_BOTW_SMALL_KEY: - return gSaveContext.inventory.dungeonKeys[SCENE_BOTTOM_OF_THE_WELL] < BOTTOM_OF_THE_WELL_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; + return gSaveContext.inventory.dungeonKeys[SCENE_BOTTOM_OF_THE_WELL] < BOTTOM_OF_THE_WELL_SMALL_KEY_MAX + ? CAN_OBTAIN + : CANT_OBTAIN_ALREADY_HAVE; case RG_GTG_SMALL_KEY: - return gSaveContext.inventory.dungeonKeys[SCENE_GERUDO_TRAINING_GROUND] < GERUDO_TRAINING_GROUND_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; + return gSaveContext.inventory.dungeonKeys[SCENE_GERUDO_TRAINING_GROUND] < + GERUDO_TRAINING_GROUND_SMALL_KEY_MAX + ? CAN_OBTAIN + : CANT_OBTAIN_ALREADY_HAVE; case RG_HIDEOUT_SMALL_KEY: - return gSaveContext.inventory.dungeonKeys[SCENE_THIEVES_HIDEOUT] < GERUDO_FORTRESS_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; + return gSaveContext.inventory.dungeonKeys[SCENE_THIEVES_HIDEOUT] < GERUDO_FORTRESS_SMALL_KEY_MAX + ? CAN_OBTAIN + : CANT_OBTAIN_ALREADY_HAVE; case RG_GANONS_CASTLE_SMALL_KEY: - return gSaveContext.inventory.dungeonKeys[SCENE_INSIDE_GANONS_CASTLE] < GANONS_CASTLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; + return gSaveContext.inventory.dungeonKeys[SCENE_INSIDE_GANONS_CASTLE] < GANONS_CASTLE_SMALL_KEY_MAX + ? CAN_OBTAIN + : CANT_OBTAIN_ALREADY_HAVE; case RG_TCG_SMALL_KEY: - return gSaveContext.inventory.dungeonKeys[SCENE_TREASURE_BOX_SHOP] < TREASURE_GAME_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; + return gSaveContext.inventory.dungeonKeys[SCENE_TREASURE_BOX_SHOP] < TREASURE_GAME_SMALL_KEY_MAX + ? CAN_OBTAIN + : CANT_OBTAIN_ALREADY_HAVE; // Dungeon Rewards case RG_KOKIRI_EMERALD: @@ -5185,179 +5203,136 @@ void Randomizer::CreateCustomMessages() { "vielleicht&dafür...", "Vous obtenez une %rBouteille avec&un Esprit%w! Ça intéresserait&peut-être le vendeur d'Âme "), - GIMESSAGE(RG_HIDEOUT_SMALL_KEY, ITEM_KEY_SMALL, - "You found a %yThieves Hideout &%wSmall Key!", - "Du erhältst einen %rkleinen&Schlüssel%w für das %yDiebesversteck%w!", - "Vous obtenez une %rPetite Clé %w&du %yRepaire des Voleurs%w!"), - GIMESSAGE(RG_FOREST_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL, - "You found a %gForest Temple &%wSmall Key!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %gWaldtempel%w!", - "Vous obtenez une %rPetite Clé %w&du %gTemple de la Forêt%w!"), - GIMESSAGE(RG_FIRE_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL, - "You found a %rFire Temple &%wSmall Key!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %rFeuertempel%w!", - "Vous obtenez une %rPetite Clé %w&du %rTemple du Feu%w!"), - GIMESSAGE(RG_WATER_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL, - "You found a %bWater Temple &%wSmall Key!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %bWassertempel%w!", - "Vous obtenez une %rPetite Clé %w&du %bTemple de l'Eau%w!"), - GIMESSAGE(RG_SPIRIT_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL, - "You found a %ySpirit Temple &%wSmall Key!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %yGeistertempel%w!", - "Vous obtenez une %rPetite Clé %w&du %yTemple de l'Esprit%w!"), - GIMESSAGE(RG_SHADOW_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL, - "You found a %pShadow Temple &%wSmall Key!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %pSchattentempel%w!", - "Vous obtenez une %rPetite Clé %w&du %pTemple de l'Ombre%w!"), - GIMESSAGE(RG_BOTW_SMALL_KEY, ITEM_KEY_SMALL, - "You found a %pBottom of the &Well %wSmall Key!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %pGrund des Brunnens%w!", - "Vous obtenez une %rPetite Clé %w&du %pPuits%w!"), - GIMESSAGE(RG_GTG_SMALL_KEY, ITEM_KEY_SMALL, - "You found a %yGerudo Training &Ground %wSmall Key!", - "Du erhältst einen %rkleinen&Schlüssel%w für das %yGerudo-Trainingsgelände%w!", - "Vous obtenez une %rPetite Clé %w&du %yGymnase Gerudo%w!"), - GIMESSAGE(RG_GANONS_CASTLE_SMALL_KEY, ITEM_KEY_SMALL, - "You found a %rGanon's Castle &%wSmall Key!", - "Du erhältst einen %rkleinen&Schlüssel%w für %rGanons Schloß%w!", - "Vous obtenez une %rPetite Clé %w&du %rChâteau de Ganon%w!"), - GIMESSAGE(RG_GUARD_HOUSE_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gGuard House%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus der Wachen%w!", - "Vous obtenez la %rClé %wde la&%gMaison des Gardes%w!"), - GIMESSAGE(RG_MARKET_BAZAAR_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gMarket Bazaar%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %gBasar des Marktes%w!", - "Vous obtenez la %rClé %wdu %gBazar&de la Place du Marché%w!"), - GIMESSAGE(RG_MARKET_POTION_SHOP_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gMarket Potion Shop%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %gMagie-Laden des Marktes%w!", - "Vous obtenez la %rClé %wde la&%gPlace du Marché%w!"), - GIMESSAGE(RG_MASK_SHOP_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gMask Shop%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %gMaskenladen%w!", - "Vous obtenez la %rClé %wde la&%gFoire aux Masques%w!"), - GIMESSAGE(RG_MARKET_SHOOTING_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gMarket Shooting Gallery%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für die %gSchießbude des Marktes%w!", - "Vous obtenez la %rClé %wdu %gStand de&Tir de la Place du Marché%w!"), - GIMESSAGE(RG_BOMBCHU_BOWLING_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gBombchu Bowling Alley%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für die %gMinenbowlingbahn%w!", - "Vous obtenez la %rClé %wdu %gBowling&Teigneux%w!"), - GIMESSAGE(RG_TCG_BUILDING_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gTreasure Chest Game Building%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus des Schatzkisten-Pokers%w!", - "Vous obtenez la %rClé %wdu %gJeu de la&Chasse au Trésor%w!"), - GIMESSAGE(RG_BOMBCHU_SHOP_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gBombchu Shop%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %gKrabbelminenladen%w!", - "Vous obtenez la %rClé %wdu %gMagasin&de Missiles%w!"), - GIMESSAGE(RG_RICHARDS_HOUSE_KEY, ITEM_KEY_SMALL, - "You found the key to&%gRichard's House%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus von Richard%w!", - "Vous obtenez la %rClé %wde la %gMaison&de Kiki%w!"), - GIMESSAGE(RG_ALLEY_HOUSE_KEY, ITEM_KEY_SMALL, - "You found the key to&the %gAlley House%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus in der Gasse%w!", - "Vous obtenez la %rClé %wde la %gMaison&de la Ruelle%w!"), - GIMESSAGE(RG_KAK_BAZAAR_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gKakariko Bazaar%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %gBasar von Kakariko%w!", - "Vous obtenez la %rClé %wdu %gBazar&de Cocorico%w!"), - GIMESSAGE(RG_KAK_POTION_SHOP_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gKakariko Potion Shop%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %gMagie-Laden von Kakariko%w!", - "Vous obtenez la %rClé %wdu %gMagasin de&Potions de Cocorico%w!"), - GIMESSAGE(RG_BOSS_HOUSE_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gBoss's House%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus des Chefs%w!", - "Vous obtenez la %rClé %wde la %gMaison&du chef des ouvriers%w!"), - GIMESSAGE(RG_GRANNYS_POTION_SHOP_KEY, ITEM_KEY_SMALL, - "You found the key to&%gGranny's Potion Shop%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für %gAsas Hexenladen%w!", - "Vous obtenez la %rClé %wde&l'%gApothicaire%w!"), - GIMESSAGE(RG_SKULLTULA_HOUSE_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gSkulltula House%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für das %gSkulltula-Haus%w!", - "Vous obtenez la %rClé %wde la %gMaison&des Araignées%w!"), - GIMESSAGE(RG_IMPAS_HOUSE_KEY, ITEM_KEY_SMALL, - "You found the key to&%gImpa's House%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus von Impa%w!", - "Vous obtenez la %rClé %wde la %gMaison&d'Impa%w!"), - GIMESSAGE(RG_WINDMILL_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gWindmill%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für die %gWindmühle%w!", - "Vous obtenez la %rClé %w du %gMoulin%w!"), - GIMESSAGE(RG_KAK_SHOOTING_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gKakariko Shooting Gallery%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für die %gSchießbude von Kakariko%w!", - "Vous obtenez la %rClé %w du %gStand de&Tir de Cocorico%w!"), - GIMESSAGE(RG_DAMPES_HUT_KEY, ITEM_KEY_SMALL, - "You found the key to&%gDampe's Hut%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für die %gHütte von Boris%w!", - "Vous obtenez la %rClé %wde la %gCabane&d'Igor%w!"), - GIMESSAGE(RG_TALONS_HOUSE_KEY, ITEM_KEY_SMALL, - "You found the key to&%gTalon's House%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus von Talon%w!", - "Vous obtenez la %rClé %wde la %gMaison&de Talon%w!"), - GIMESSAGE(RG_STABLES_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gStables%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für die %gStälle%w!", - "Vous obtenez la %rClé %wdes %gÉcuries%w!"), - GIMESSAGE(RG_BACK_TOWER_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gBack Tower%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %ghinteren Turm%w!", - "Vous obtenez la %rClé %wdu %gSilo%w!"), - GIMESSAGE(RG_HYLIA_LAB_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gHylia Laboratory%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für das %gHylia-Labor%w!", - "Vous obtenez la %rClé %wdu %gLaboratoire&du Lac Hylia%w!"), - GIMESSAGE(RG_FISHING_HOLE_KEY, ITEM_KEY_SMALL, - "You found the key to the&%gPond%w!", - "Du erhältst einen %rkleinen&Schlüssel%w für den %gFischweiher%w!", - "Vous obtenez la %rClé %wde l'%gÉtang%w!"), + GIMESSAGE(RG_HIDEOUT_SMALL_KEY, ITEM_KEY_SMALL, "You found a %yThieves Hideout &%wSmall Key!", + "Du erhältst einen %rkleinen&Schlüssel%w für das %yDiebesversteck%w!", + "Vous obtenez une %rPetite Clé %w&du %yRepaire des Voleurs%w!"), + GIMESSAGE(RG_FOREST_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL, "You found a %gForest Temple &%wSmall Key!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %gWaldtempel%w!", + "Vous obtenez une %rPetite Clé %w&du %gTemple de la Forêt%w!"), + GIMESSAGE(RG_FIRE_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL, "You found a %rFire Temple &%wSmall Key!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %rFeuertempel%w!", + "Vous obtenez une %rPetite Clé %w&du %rTemple du Feu%w!"), + GIMESSAGE(RG_WATER_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL, "You found a %bWater Temple &%wSmall Key!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %bWassertempel%w!", + "Vous obtenez une %rPetite Clé %w&du %bTemple de l'Eau%w!"), + GIMESSAGE(RG_SPIRIT_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL, "You found a %ySpirit Temple &%wSmall Key!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %yGeistertempel%w!", + "Vous obtenez une %rPetite Clé %w&du %yTemple de l'Esprit%w!"), + GIMESSAGE(RG_SHADOW_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL, "You found a %pShadow Temple &%wSmall Key!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %pSchattentempel%w!", + "Vous obtenez une %rPetite Clé %w&du %pTemple de l'Ombre%w!"), + GIMESSAGE(RG_BOTW_SMALL_KEY, ITEM_KEY_SMALL, "You found a %pBottom of the &Well %wSmall Key!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %pGrund des Brunnens%w!", + "Vous obtenez une %rPetite Clé %w&du %pPuits%w!"), + GIMESSAGE(RG_GTG_SMALL_KEY, ITEM_KEY_SMALL, "You found a %yGerudo Training &Ground %wSmall Key!", + "Du erhältst einen %rkleinen&Schlüssel%w für das %yGerudo-Trainingsgelände%w!", + "Vous obtenez une %rPetite Clé %w&du %yGymnase Gerudo%w!"), + GIMESSAGE(RG_GANONS_CASTLE_SMALL_KEY, ITEM_KEY_SMALL, "You found a %rGanon's Castle &%wSmall Key!", + "Du erhältst einen %rkleinen&Schlüssel%w für %rGanons Schloß%w!", + "Vous obtenez une %rPetite Clé %w&du %rChâteau de Ganon%w!"), + GIMESSAGE(RG_GUARD_HOUSE_KEY, ITEM_KEY_SMALL, "You found the key to the&%gGuard House%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus der Wachen%w!", + "Vous obtenez la %rClé %wde la&%gMaison des Gardes%w!"), + GIMESSAGE(RG_MARKET_BAZAAR_KEY, ITEM_KEY_SMALL, "You found the key to the&%gMarket Bazaar%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %gBasar des Marktes%w!", + "Vous obtenez la %rClé %wdu %gBazar&de la Place du Marché%w!"), + GIMESSAGE(RG_MARKET_POTION_SHOP_KEY, ITEM_KEY_SMALL, "You found the key to the&%gMarket Potion Shop%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %gMagie-Laden des Marktes%w!", + "Vous obtenez la %rClé %wde la&%gPlace du Marché%w!"), + GIMESSAGE(RG_MASK_SHOP_KEY, ITEM_KEY_SMALL, "You found the key to the&%gMask Shop%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %gMaskenladen%w!", + "Vous obtenez la %rClé %wde la&%gFoire aux Masques%w!"), + GIMESSAGE(RG_MARKET_SHOOTING_KEY, ITEM_KEY_SMALL, "You found the key to the&%gMarket Shooting Gallery%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für die %gSchießbude des Marktes%w!", + "Vous obtenez la %rClé %wdu %gStand de&Tir de la Place du Marché%w!"), + GIMESSAGE(RG_BOMBCHU_BOWLING_KEY, ITEM_KEY_SMALL, "You found the key to the&%gBombchu Bowling Alley%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für die %gMinenbowlingbahn%w!", + "Vous obtenez la %rClé %wdu %gBowling&Teigneux%w!"), + GIMESSAGE(RG_TCG_BUILDING_KEY, ITEM_KEY_SMALL, "You found the key to the&%gTreasure Chest Game Building%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus des Schatzkisten-Pokers%w!", + "Vous obtenez la %rClé %wdu %gJeu de la&Chasse au Trésor%w!"), + GIMESSAGE(RG_BOMBCHU_SHOP_KEY, ITEM_KEY_SMALL, "You found the key to the&%gBombchu Shop%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %gKrabbelminenladen%w!", + "Vous obtenez la %rClé %wdu %gMagasin&de Missiles%w!"), + GIMESSAGE(RG_RICHARDS_HOUSE_KEY, ITEM_KEY_SMALL, "You found the key to&%gRichard's House%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus von Richard%w!", + "Vous obtenez la %rClé %wde la %gMaison&de Kiki%w!"), + GIMESSAGE(RG_ALLEY_HOUSE_KEY, ITEM_KEY_SMALL, "You found the key to&the %gAlley House%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus in der Gasse%w!", + "Vous obtenez la %rClé %wde la %gMaison&de la Ruelle%w!"), + GIMESSAGE(RG_KAK_BAZAAR_KEY, ITEM_KEY_SMALL, "You found the key to the&%gKakariko Bazaar%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %gBasar von Kakariko%w!", + "Vous obtenez la %rClé %wdu %gBazar&de Cocorico%w!"), + GIMESSAGE(RG_KAK_POTION_SHOP_KEY, ITEM_KEY_SMALL, "You found the key to the&%gKakariko Potion Shop%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %gMagie-Laden von Kakariko%w!", + "Vous obtenez la %rClé %wdu %gMagasin de&Potions de Cocorico%w!"), + GIMESSAGE(RG_BOSS_HOUSE_KEY, ITEM_KEY_SMALL, "You found the key to the&%gBoss's House%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus des Chefs%w!", + "Vous obtenez la %rClé %wde la %gMaison&du chef des ouvriers%w!"), + GIMESSAGE(RG_GRANNYS_POTION_SHOP_KEY, ITEM_KEY_SMALL, "You found the key to&%gGranny's Potion Shop%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für %gAsas Hexenladen%w!", + "Vous obtenez la %rClé %wde&l'%gApothicaire%w!"), + GIMESSAGE(RG_SKULLTULA_HOUSE_KEY, ITEM_KEY_SMALL, "You found the key to the&%gSkulltula House%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für das %gSkulltula-Haus%w!", + "Vous obtenez la %rClé %wde la %gMaison&des Araignées%w!"), + GIMESSAGE(RG_IMPAS_HOUSE_KEY, ITEM_KEY_SMALL, "You found the key to&%gImpa's House%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus von Impa%w!", + "Vous obtenez la %rClé %wde la %gMaison&d'Impa%w!"), + GIMESSAGE(RG_WINDMILL_KEY, ITEM_KEY_SMALL, "You found the key to the&%gWindmill%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für die %gWindmühle%w!", + "Vous obtenez la %rClé %w du %gMoulin%w!"), + GIMESSAGE(RG_KAK_SHOOTING_KEY, ITEM_KEY_SMALL, "You found the key to the&%gKakariko Shooting Gallery%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für die %gSchießbude von Kakariko%w!", + "Vous obtenez la %rClé %w du %gStand de&Tir de Cocorico%w!"), + GIMESSAGE(RG_DAMPES_HUT_KEY, ITEM_KEY_SMALL, "You found the key to&%gDampe's Hut%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für die %gHütte von Boris%w!", + "Vous obtenez la %rClé %wde la %gCabane&d'Igor%w!"), + GIMESSAGE(RG_TALONS_HOUSE_KEY, ITEM_KEY_SMALL, "You found the key to&%gTalon's House%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus von Talon%w!", + "Vous obtenez la %rClé %wde la %gMaison&de Talon%w!"), + GIMESSAGE(RG_STABLES_KEY, ITEM_KEY_SMALL, "You found the key to the&%gStables%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für die %gStälle%w!", + "Vous obtenez la %rClé %wdes %gÉcuries%w!"), + GIMESSAGE(RG_BACK_TOWER_KEY, ITEM_KEY_SMALL, "You found the key to the&%gBack Tower%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %ghinteren Turm%w!", + "Vous obtenez la %rClé %wdu %gSilo%w!"), + GIMESSAGE(RG_HYLIA_LAB_KEY, ITEM_KEY_SMALL, "You found the key to the&%gHylia Laboratory%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für das %gHylia-Labor%w!", + "Vous obtenez la %rClé %wdu %gLaboratoire&du Lac Hylia%w!"), + GIMESSAGE(RG_FISHING_HOLE_KEY, ITEM_KEY_SMALL, "You found the key to the&%gPond%w!", + "Du erhältst einen %rkleinen&Schlüssel%w für den %gFischweiher%w!", + "Vous obtenez la %rClé %wde l'%gÉtang%w!"), - GIMESSAGE(RG_HIDEOUT_KEY_RING, ITEM_KEY_SMALL, - "You found a %yThieves Hideout&%wKeyring!", - "Du erhältst ein %rSchlüsselbund%w&für das %yDiebesversteck%w!", - "Vous obtenez le trousseau de&clés du %yRepaire des Voleurs%w!"), - GIMESSAGE(RG_FOREST_TEMPLE_KEY_RING, ITEM_KEY_SMALL, - "You found a %gForest Temple&%wKeyring!", - "Du erhältst ein %rSchlüsselbund%w&für den %gWaldtempel%w!", - "Vous obtenez le trousseau de&clés du %gTemple de la Forêt%w!"), - GIMESSAGE(RG_FIRE_TEMPLE_KEY_RING, ITEM_KEY_SMALL, - "You found a %rFire Temple&%wKeyring!", - "Du erhältst ein %rSchlüsselbund%w&für den %rFeuertempel%w!", - "Vous obtenez le trousseau de&clés du %rTemple du Feu%w!"), - GIMESSAGE(RG_WATER_TEMPLE_KEY_RING, ITEM_KEY_SMALL, - "You found a %bWater Temple&%wKeyring!", - "Du erhältst ein %rSchlüsselbund%w&für den %bWassertempel%w!", - "Vous obtenez le trousseau de&clés du %bTemple de l'Eau%w!"), - GIMESSAGE(RG_SPIRIT_TEMPLE_KEY_RING, ITEM_KEY_SMALL, - "You found a %ySpirit Temple&%wKeyring!", - "Du erhältst ein %rSchlüsselbund%w&für den %yGeistertempel%w!", - "Vous obtenez le trousseau de&clés du %yTemple de l'Esprit%w!"), - GIMESSAGE(RG_SHADOW_TEMPLE_KEY_RING, ITEM_KEY_SMALL, - "You found a %pShadow Temple&%wKeyring!", - "Du erhältst ein %rSchlüsselbund%w&für den %pSchattentempel%w!", - "Vous obtenez le trousseau de&clés du %pTemple de l'Ombre%w!"), - GIMESSAGE(RG_BOTW_KEY_RING, ITEM_KEY_SMALL, - "You found a %pBottom of the&Well %wKeyring!", - "Du erhältst ein %rSchlüsselbund%w&für den %pGrund des Brunnens%w!", - "Vous obtenez le trousseau de&clés du %pPuits%w!"), - GIMESSAGE(RG_GTG_KEY_RING, ITEM_KEY_SMALL, - "You found a %yGerudo Training&Ground %wKeyring!", - "Du erhältst ein %rSchlüsselbund%w&für das %yGerudo-Trainingsgelände%w!", - "Vous obtenez le trousseau de&clés du %yGymnase Gerudo%w!"), - GIMESSAGE(RG_GANONS_CASTLE_KEY_RING, ITEM_KEY_SMALL, - "You found a %rGanon's Castle&%wKeyring!", - "Du erhältst ein %rSchlüsselbund%w&für %rGanons Schloß%w!", - "Vous obtenez le trousseau de&clés du %rChâteau de Ganon%w!"), - GIMESSAGE(RG_TCG_KEY_RING, ITEM_KEY_SMALL, - "You found a %rTreasure Chest Game&%wKeyring!", - "Du erhältst ein %rSchlüsselbund%w& für das %rSchatztruhen-Poker&%w!", - "Vous obtenez le trousseau de&clés du %rJeu de la Chasse au Trésor%w!"), + GIMESSAGE(RG_HIDEOUT_KEY_RING, ITEM_KEY_SMALL, "You found a %yThieves Hideout&%wKeyring!", + "Du erhältst ein %rSchlüsselbund%w&für das %yDiebesversteck%w!", + "Vous obtenez le trousseau de&clés du %yRepaire des Voleurs%w!"), + GIMESSAGE(RG_FOREST_TEMPLE_KEY_RING, ITEM_KEY_SMALL, "You found a %gForest Temple&%wKeyring!", + "Du erhältst ein %rSchlüsselbund%w&für den %gWaldtempel%w!", + "Vous obtenez le trousseau de&clés du %gTemple de la Forêt%w!"), + GIMESSAGE(RG_FIRE_TEMPLE_KEY_RING, ITEM_KEY_SMALL, "You found a %rFire Temple&%wKeyring!", + "Du erhältst ein %rSchlüsselbund%w&für den %rFeuertempel%w!", + "Vous obtenez le trousseau de&clés du %rTemple du Feu%w!"), + GIMESSAGE(RG_WATER_TEMPLE_KEY_RING, ITEM_KEY_SMALL, "You found a %bWater Temple&%wKeyring!", + "Du erhältst ein %rSchlüsselbund%w&für den %bWassertempel%w!", + "Vous obtenez le trousseau de&clés du %bTemple de l'Eau%w!"), + GIMESSAGE(RG_SPIRIT_TEMPLE_KEY_RING, ITEM_KEY_SMALL, "You found a %ySpirit Temple&%wKeyring!", + "Du erhältst ein %rSchlüsselbund%w&für den %yGeistertempel%w!", + "Vous obtenez le trousseau de&clés du %yTemple de l'Esprit%w!"), + GIMESSAGE(RG_SHADOW_TEMPLE_KEY_RING, ITEM_KEY_SMALL, "You found a %pShadow Temple&%wKeyring!", + "Du erhältst ein %rSchlüsselbund%w&für den %pSchattentempel%w!", + "Vous obtenez le trousseau de&clés du %pTemple de l'Ombre%w!"), + GIMESSAGE(RG_BOTW_KEY_RING, ITEM_KEY_SMALL, "You found a %pBottom of the&Well %wKeyring!", + "Du erhältst ein %rSchlüsselbund%w&für den %pGrund des Brunnens%w!", + "Vous obtenez le trousseau de&clés du %pPuits%w!"), + GIMESSAGE(RG_GTG_KEY_RING, ITEM_KEY_SMALL, "You found a %yGerudo Training&Ground %wKeyring!", + "Du erhältst ein %rSchlüsselbund%w&für das %yGerudo-Trainingsgelände%w!", + "Vous obtenez le trousseau de&clés du %yGymnase Gerudo%w!"), + GIMESSAGE(RG_GANONS_CASTLE_KEY_RING, ITEM_KEY_SMALL, "You found a %rGanon's Castle&%wKeyring!", + "Du erhältst ein %rSchlüsselbund%w&für %rGanons Schloß%w!", + "Vous obtenez le trousseau de&clés du %rChâteau de Ganon%w!"), + GIMESSAGE(RG_TCG_KEY_RING, ITEM_KEY_SMALL, "You found a %rTreasure Chest Game&%wKeyring!", + "Du erhältst ein %rSchlüsselbund%w& für das %rSchatztruhen-Poker&%w!", + "Vous obtenez le trousseau de&clés du %rJeu de la Chasse au Trésor%w!"), GIMESSAGE(RG_FOREST_TEMPLE_BOSS_KEY, ITEM_KEY_BOSS, "You found the %gForest Temple&%wBoss Key!", "Du erhältst den %rMaster-Schlüssel%w&für den %gWaldtempel%w!", @@ -5378,87 +5353,67 @@ void Randomizer::CreateCustomMessages() { "Du erhältst den %rMaster-Schlüssel%w&für %rGanons Schloß%w!", "Vous obtenez la %rClé d'or %wdu&%rChâteau de Ganon%w!"), - GIMESSAGE(RG_DEKU_TREE_MAP, ITEM_DUNGEON_MAP, - "You found the %gDeku Tree&%wMap![[typeHint]]", - "Du erhältst die %rKarte%w für den&%gDeku-Baum%w![[typeHint]]", - "Vous obtenez la %rCarte %wde&l'%gArbre Mojo%w![[typeHint]]"), - GIMESSAGE(RG_DODONGOS_CAVERN_MAP, ITEM_DUNGEON_MAP, - "You found the %rDodongo's Cavern&%wMap![[typeHint]]", - "Du erhältst die %rKarte%w für&%rDodongos Höhle%w![[typeHint]]", - "Vous obtenez la %rCarte %wde la&%rCaverne Dodongo%w![[typeHint]]"), - GIMESSAGE(RG_JABU_JABUS_BELLY_MAP, ITEM_DUNGEON_MAP, - "You found the %bJabu Jabu's Belly&%wMap![[typeHint]]", - "Du erhältst die %rKarte%w für&%bJabu-Jabus Bauch%w![[typeHint]]", - "Vous obtenez la %rCarte %wdu&%bVentre de Jabu-Jabu%w![[typeHint]]"), - GIMESSAGE(RG_FOREST_TEMPLE_MAP, ITEM_DUNGEON_MAP, - "You found the %gForest Temple&%wMap![[typeHint]]", - "Du erhältst die %rKarte%w für den&%gWaldtempel%w![[typeHint]]", - "Vous obtenez la %rCarte %wdu&%gTemple de la Forêt%w![[typeHint]]"), - GIMESSAGE(RG_FIRE_TEMPLE_MAP, ITEM_DUNGEON_MAP, - "You found the %rFire Temple&%wMap![[typeHint]]", - "Du erhältst die %rKarte%w für den&%rFeuertempel%w![[typeHint]]", - "Vous obtenez la %rCarte %wdu&%rTemple du Feu%w![[typeHint]]"), - GIMESSAGE(RG_WATER_TEMPLE_MAP, ITEM_DUNGEON_MAP, - "You found the %bWater Temple&%wMap![[typeHint]]", - "Du erhältst die %rKarte%w für den&%bWassertempel%w![[typeHint]]", - "Vous obtenez la %rCarte %wdu&%bTemple de l'Eau%w![[typeHint]]"), - GIMESSAGE(RG_SPIRIT_TEMPLE_MAP, ITEM_DUNGEON_MAP, - "You found the %ySpirit Temple&%wMap![[typeHint]]", - "Du erhältst die %rKarte%w für den&%yGeistertempel%w![[typeHint]]", - "Vous obtenez la %rCarte %wdu&%yTemple de l'Esprit%w![[typeHint]]"), - GIMESSAGE(RG_SHADOW_TEMPLE_MAP, ITEM_DUNGEON_MAP, - "You found the %pShadow Temple&%wMap![[typeHint]]", - "Du erhältst die %rKarte%w für den&%pSchattentempel%w![[typeHint]]", - "Vous obtenez la %rCarte %wdu&%pTemple de l'Ombre%w![[typeHint]]"), - GIMESSAGE(RG_BOTW_MAP, ITEM_DUNGEON_MAP, - "You found the %pBottom of the&Well %wMap![[typeHint]]", - "Du erhältst die %rKarte%w für den&%pGrund des Brunnens%w![[typeHint]]", - "Vous obtenez la %rCarte %wdu&%pPuits%w![[typeHint]]"), - GIMESSAGE(RG_ICE_CAVERN_MAP, ITEM_DUNGEON_MAP, - "You found the %cIce Cavern&%wMap![[typeHint]]", - "Du erhältst die %rKarte%w für die&%cEishöhle%w![[typeHint]]", - "Vous obtenez la %rCarte %wde&la %cCaverne Polaire%w![[typeHint]]"), + GIMESSAGE(RG_DEKU_TREE_MAP, ITEM_DUNGEON_MAP, "You found the %gDeku Tree&%wMap![[typeHint]]", + "Du erhältst die %rKarte%w für den&%gDeku-Baum%w![[typeHint]]", + "Vous obtenez la %rCarte %wde&l'%gArbre Mojo%w![[typeHint]]"), + GIMESSAGE(RG_DODONGOS_CAVERN_MAP, ITEM_DUNGEON_MAP, "You found the %rDodongo's Cavern&%wMap![[typeHint]]", + "Du erhältst die %rKarte%w für&%rDodongos Höhle%w![[typeHint]]", + "Vous obtenez la %rCarte %wde la&%rCaverne Dodongo%w![[typeHint]]"), + GIMESSAGE(RG_JABU_JABUS_BELLY_MAP, ITEM_DUNGEON_MAP, "You found the %bJabu Jabu's Belly&%wMap![[typeHint]]", + "Du erhältst die %rKarte%w für&%bJabu-Jabus Bauch%w![[typeHint]]", + "Vous obtenez la %rCarte %wdu&%bVentre de Jabu-Jabu%w![[typeHint]]"), + GIMESSAGE(RG_FOREST_TEMPLE_MAP, ITEM_DUNGEON_MAP, "You found the %gForest Temple&%wMap![[typeHint]]", + "Du erhältst die %rKarte%w für den&%gWaldtempel%w![[typeHint]]", + "Vous obtenez la %rCarte %wdu&%gTemple de la Forêt%w![[typeHint]]"), + GIMESSAGE(RG_FIRE_TEMPLE_MAP, ITEM_DUNGEON_MAP, "You found the %rFire Temple&%wMap![[typeHint]]", + "Du erhältst die %rKarte%w für den&%rFeuertempel%w![[typeHint]]", + "Vous obtenez la %rCarte %wdu&%rTemple du Feu%w![[typeHint]]"), + GIMESSAGE(RG_WATER_TEMPLE_MAP, ITEM_DUNGEON_MAP, "You found the %bWater Temple&%wMap![[typeHint]]", + "Du erhältst die %rKarte%w für den&%bWassertempel%w![[typeHint]]", + "Vous obtenez la %rCarte %wdu&%bTemple de l'Eau%w![[typeHint]]"), + GIMESSAGE(RG_SPIRIT_TEMPLE_MAP, ITEM_DUNGEON_MAP, "You found the %ySpirit Temple&%wMap![[typeHint]]", + "Du erhältst die %rKarte%w für den&%yGeistertempel%w![[typeHint]]", + "Vous obtenez la %rCarte %wdu&%yTemple de l'Esprit%w![[typeHint]]"), + GIMESSAGE(RG_SHADOW_TEMPLE_MAP, ITEM_DUNGEON_MAP, "You found the %pShadow Temple&%wMap![[typeHint]]", + "Du erhältst die %rKarte%w für den&%pSchattentempel%w![[typeHint]]", + "Vous obtenez la %rCarte %wdu&%pTemple de l'Ombre%w![[typeHint]]"), + GIMESSAGE(RG_BOTW_MAP, ITEM_DUNGEON_MAP, "You found the %pBottom of the&Well %wMap![[typeHint]]", + "Du erhältst die %rKarte%w für den&%pGrund des Brunnens%w![[typeHint]]", + "Vous obtenez la %rCarte %wdu&%pPuits%w![[typeHint]]"), + GIMESSAGE(RG_ICE_CAVERN_MAP, ITEM_DUNGEON_MAP, "You found the %cIce Cavern&%wMap![[typeHint]]", + "Du erhältst die %rKarte%w für die&%cEishöhle%w![[typeHint]]", + "Vous obtenez la %rCarte %wde&la %cCaverne Polaire%w![[typeHint]]"), - GIMESSAGE(RG_DEKU_TREE_COMPASS, ITEM_COMPASS, - "You found the %gDeku Tree&%wCompass!", - "Du erhältst den %rKompaß%w für den&%gDeku-Baum%w!", - "Vous obtenez la %rBoussole %wde&l'%gArbre Mojo%w!"), - GIMESSAGE(RG_DODONGOS_CAVERN_COMPASS, ITEM_COMPASS, - "You found the %rDodongo's Cavern&%wCompass!", - "Du erhältst den %rKompaß%w für&%rDodongos Höhle%w!", - "Vous obtenez la %rBoussole %wde la&%rCaverne Dodongo%w!"), - GIMESSAGE(RG_JABU_JABUS_BELLY_COMPASS, ITEM_COMPASS, - "You found the %bJabu Jabu's Belly&%wCompass!", - "Du erhältst den %rKompaß%w für den&%bJabu-Jabus Bauch%w!", - "Vous obtenez la %rBoussole %wdu&%bVentre de Jabu-Jabu%w!"), - GIMESSAGE(RG_FOREST_TEMPLE_COMPASS, ITEM_COMPASS, - "You found the %gForest Temple&%wCompass!", - "Du erhältst den %rKompaß%w für den&%gWaldtempel%w!", - "Vous obtenez la %rBoussole %wdu&%gTemple de la Forêt%w!"), - GIMESSAGE(RG_FIRE_TEMPLE_COMPASS, ITEM_COMPASS, - "You found the %rFire Temple&%wCompass!", - "Du erhältst den %rKompaß%w für den&%rFeuertempel%w!", - "Vous obtenez la %rBoussole %wdu&%rTemple du Feu%w!"), - GIMESSAGE(RG_WATER_TEMPLE_COMPASS, ITEM_COMPASS, - "You found the %bWater Temple&%wCompass!", - "Du erhältst den %rKompaß%w für den&%bWassertempel%w!", - "Vous obtenez la %rBoussole %wdu&%bTemple de l'Eau%w!"), - GIMESSAGE(RG_SPIRIT_TEMPLE_COMPASS, ITEM_COMPASS, - "You found the %ySpirit Temple&%wCompass!", - "Du erhältst den %rKompaß%w für den&%yGeistertempel%w!", - "Vous obtenez la %rBoussole %wdu&%yTemple de l'Esprit%w!"), - GIMESSAGE(RG_SHADOW_TEMPLE_COMPASS, ITEM_COMPASS, - "You found the %pShadow Temple&%wCompass!", - "Du erhältst den %rKompaß%w für den&%pSchattentempel%w!", - "Vous obtenez la %rBoussole %wdu&%pTemple de l'Ombre%w!"), - GIMESSAGE(RG_BOTW_COMPASS, ITEM_COMPASS, - "You found the %pBottom of the&Well %wCompass!", - "Du erhältst den %rKompaß%w für den&%pGrund des Brunnens%w!", - "Vous obtenez la %rBoussole %wdu&%pPuits%w!"), - GIMESSAGE(RG_ICE_CAVERN_COMPASS, ITEM_COMPASS, - "You found the %cIce Cavern&%wCompass!", - "Du erhältst den %rKompaß%w für die&%cEishöhle%w!", - "Vous obtenez la %rBoussole %wde&la %cCaverne Polaire%w!"), + GIMESSAGE(RG_DEKU_TREE_COMPASS, ITEM_COMPASS, "You found the %gDeku Tree&%wCompass!", + "Du erhältst den %rKompaß%w für den&%gDeku-Baum%w!", + "Vous obtenez la %rBoussole %wde&l'%gArbre Mojo%w!"), + GIMESSAGE(RG_DODONGOS_CAVERN_COMPASS, ITEM_COMPASS, "You found the %rDodongo's Cavern&%wCompass!", + "Du erhältst den %rKompaß%w für&%rDodongos Höhle%w!", + "Vous obtenez la %rBoussole %wde la&%rCaverne Dodongo%w!"), + GIMESSAGE(RG_JABU_JABUS_BELLY_COMPASS, ITEM_COMPASS, "You found the %bJabu Jabu's Belly&%wCompass!", + "Du erhältst den %rKompaß%w für den&%bJabu-Jabus Bauch%w!", + "Vous obtenez la %rBoussole %wdu&%bVentre de Jabu-Jabu%w!"), + GIMESSAGE(RG_FOREST_TEMPLE_COMPASS, ITEM_COMPASS, "You found the %gForest Temple&%wCompass!", + "Du erhältst den %rKompaß%w für den&%gWaldtempel%w!", + "Vous obtenez la %rBoussole %wdu&%gTemple de la Forêt%w!"), + GIMESSAGE(RG_FIRE_TEMPLE_COMPASS, ITEM_COMPASS, "You found the %rFire Temple&%wCompass!", + "Du erhältst den %rKompaß%w für den&%rFeuertempel%w!", + "Vous obtenez la %rBoussole %wdu&%rTemple du Feu%w!"), + GIMESSAGE(RG_WATER_TEMPLE_COMPASS, ITEM_COMPASS, "You found the %bWater Temple&%wCompass!", + "Du erhältst den %rKompaß%w für den&%bWassertempel%w!", + "Vous obtenez la %rBoussole %wdu&%bTemple de l'Eau%w!"), + GIMESSAGE(RG_SPIRIT_TEMPLE_COMPASS, ITEM_COMPASS, "You found the %ySpirit Temple&%wCompass!", + "Du erhältst den %rKompaß%w für den&%yGeistertempel%w!", + "Vous obtenez la %rBoussole %wdu&%yTemple de l'Esprit%w!"), + GIMESSAGE(RG_SHADOW_TEMPLE_COMPASS, ITEM_COMPASS, "You found the %pShadow Temple&%wCompass!", + "Du erhältst den %rKompaß%w für den&%pSchattentempel%w!", + "Vous obtenez la %rBoussole %wdu&%pTemple de l'Ombre%w!"), + GIMESSAGE(RG_BOTW_COMPASS, ITEM_COMPASS, "You found the %pBottom of the&Well %wCompass!", + "Du erhältst den %rKompaß%w für den&%pGrund des Brunnens%w!", + "Vous obtenez la %rBoussole %wdu&%pPuits%w!"), + GIMESSAGE(RG_ICE_CAVERN_COMPASS, ITEM_COMPASS, "You found the %cIce Cavern&%wCompass!", + "Du erhältst den %rKompaß%w für die&%cEishöhle%w!", + "Vous obtenez la %rBoussole %wde&la %cCaverne Polaire%w!"), GIMESSAGE(RG_MAGIC_BEAN_PACK, ITEM_BEAN, "You got a %rPack of Magic Beans%w!&Find a suitable spot for a garden&and plant them. Then, wait " diff --git a/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp index 6807c9094..512092638 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp @@ -1809,7 +1809,9 @@ void DrawLocation(RandomizerCheck rc) { txt = itemLoc->GetPlacedItem().GetName().GetForCurrentLanguage(MF_RAW); } else { if (IsHeartPiece((GetItemID)Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetItemID())) { - txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetName().GetForCurrentLanguage(MF_RAW); + txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()) + .GetName() + .GetForCurrentLanguage(MF_RAW); } } break; @@ -1838,7 +1840,9 @@ void DrawLocation(RandomizerCheck rc) { } } else { if (IsHeartPiece((GetItemID)Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetItemID())) { - txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()).GetName().GetForCurrentLanguage(MF_RAW); + txt = Rando::StaticData::RetrieveItem(loc->GetVanillaItem()) + .GetName() + .GetForCurrentLanguage(MF_RAW); } } break; diff --git a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp index 65139b8b8..18b30df31 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp @@ -133,30 +133,30 @@ std::vector ocarinaButtonItems = { std::vector overworldKeyItems = { // Hack for right now, just gonna overworld keys as dungeon keys. // Will replace with other macro once we have a custom texture - ITEM_TRACKER_ITEM_CUSTOM(RG_GUARD_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_BAZAAR_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_MASK_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_SHOOTING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_BOMBCHU_BOWLING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_TCG_BUILDING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_BOMBCHU_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_RICHARDS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_ALLEY_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_BAZAAR_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_BOSS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_GUARD_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_BAZAAR_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_MASK_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_MARKET_SHOOTING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_BOMBCHU_BOWLING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_TCG_BUILDING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_BOMBCHU_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_RICHARDS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_ALLEY_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_BAZAAR_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_BOSS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_GRANNYS_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_SKULLTULA_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_IMPAS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_WINDMILL_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_SHOOTING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_DAMPES_HUT_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_TALONS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_STABLES_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_BACK_TOWER_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_HYLIA_LAB_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_FISHING_HOLE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_SKULLTULA_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_IMPAS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_WINDMILL_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_SHOOTING_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_DAMPES_HUT_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_TALONS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_STABLES_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_BACK_TOWER_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_HYLIA_LAB_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_FISHING_HOLE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), }; std::vector fishingPoleItems = { ITEM_TRACKER_ITEM(ITEM_FISHING_POLE, 0, DrawItem) }; diff --git a/soh/soh/Enhancements/randomizer/static_data.cpp b/soh/soh/Enhancements/randomizer/static_data.cpp index 0f53cf6dc..77ba2dd3a 100644 --- a/soh/soh/Enhancements/randomizer/static_data.cpp +++ b/soh/soh/Enhancements/randomizer/static_data.cpp @@ -233,21 +233,22 @@ StaticData::PopulateTranslationMap(std::unordered_map i return output; } -std::unordered_map StaticData::PopulateTranslationMap(std::unordered_map input){ - std::unordered_map output = {}; - for (const auto& [key, text] : input) { - std::vector strings = hintTextTable[text].GetClear().GetAllMessages(); - for (std::string string: strings){ - if (output.contains(string)){ - if (output[string] != key && string != ""){ - SPDLOG_DEBUG("\tREPEATED STRING WITH " + string + "\n\n"); +std::unordered_map +StaticData::PopulateTranslationMap(std::unordered_map input) { + std::unordered_map output = {}; + for (const auto& [key, text] : input) { + std::vector strings = hintTextTable[text].GetClear().GetAllMessages(); + for (std::string string : strings) { + if (output.contains(string)) { + if (output[string] != key && string != "") { + SPDLOG_DEBUG("\tREPEATED STRING WITH " + string + "\n\n"); + } + } else { + output[string] = key; + } } - } else { - output[string] = key; - } } - } - return output; + return output; } std::unordered_map StaticData::hintNameToEnum = {}; diff --git a/soh/soh/SaveManager.cpp b/soh/soh/SaveManager.cpp index 6ed292fcc..0615c0e9e 100644 --- a/soh/soh/SaveManager.cpp +++ b/soh/soh/SaveManager.cpp @@ -558,8 +558,8 @@ void SaveManager::SaveRandomizer(SaveContext* saveContext, int sectionID, bool f std::vector items = hint->GetHintedItems(); SaveManager::Instance->SaveArray("items", items.size(), [&](size_t i) { - SaveManager::Instance->SaveData("", - Rando::StaticData::GetItemTable()[items[i]].GetName().GetEnglish(MF_RAW)); + SaveManager::Instance->SaveData( + "", Rando::StaticData::GetItemTable()[items[i]].GetName().GetEnglish(MF_RAW)); }); std::vector itemNamesChosen = hint->GetItemNamesChosen(); From f9c7943964dc725841fa189f5da67c3f33f614aa Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Tue, 8 Apr 2025 13:48:17 +0100 Subject: [PATCH 12/24] apply clang --- soh/soh/Enhancements/randomizer/3drando/hints.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/hints.hpp b/soh/soh/Enhancements/randomizer/3drando/hints.hpp index 91955b833..74c3b784a 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hints.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/hints.hpp @@ -34,7 +34,7 @@ class HintText { public: HintText() = default; explicit HintText(CustomMessage clearText_, std::vector ambiguousText_ = {}, - std::vector obscureText_ = {}, CustomMessage name_ = {""}); + std::vector obscureText_ = {}, CustomMessage name_ = { "" }); const CustomMessage& GetName() const; const CustomMessage& GetClear() const; const CustomMessage& GetObscure() const; @@ -49,7 +49,8 @@ class HintText { bool operator!=(const HintText& right) const; private: - CustomMessage clearText; //RANDOTODO proper system to define use of articles instead of having the name and name with articles repeated + CustomMessage clearText; // RANDOTODO proper system to define use of articles instead of having the name and name + // with articles repeated std::vector ambiguousText = {}; std::vector obscureText = {}; CustomMessage name; From 0753fff9c1153a66fbb80cff22f985d77a1bb6af Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Tue, 8 Apr 2025 13:58:22 +0100 Subject: [PATCH 13/24] remove vestigial explicit --- soh/soh/Enhancements/randomizer/3drando/hints.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/hints.hpp b/soh/soh/Enhancements/randomizer/3drando/hints.hpp index 74c3b784a..9517cb2d2 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hints.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/hints.hpp @@ -33,7 +33,7 @@ struct HintSetting { class HintText { public: HintText() = default; - explicit HintText(CustomMessage clearText_, std::vector ambiguousText_ = {}, + HintText(CustomMessage clearText_, std::vector ambiguousText_ = {}, std::vector obscureText_ = {}, CustomMessage name_ = { "" }); const CustomMessage& GetName() const; const CustomMessage& GetClear() const; From 2a7f9d12a2c149953c23e1991a3e963f4d263d45 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Tue, 8 Apr 2025 14:08:01 +0100 Subject: [PATCH 14/24] clang pls --- soh/soh/Enhancements/randomizer/3drando/hints.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/hints.hpp b/soh/soh/Enhancements/randomizer/3drando/hints.hpp index 9517cb2d2..f1f2f6b5a 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hints.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/hints.hpp @@ -34,7 +34,7 @@ class HintText { public: HintText() = default; HintText(CustomMessage clearText_, std::vector ambiguousText_ = {}, - std::vector obscureText_ = {}, CustomMessage name_ = { "" }); + std::vector obscureText_ = {}, CustomMessage name_ = { "" }); const CustomMessage& GetName() const; const CustomMessage& GetClear() const; const CustomMessage& GetObscure() const; From 228ad0bfcb637b77c755084241edf8b434ba8c2d Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Sun, 13 Apr 2025 14:29:12 +0100 Subject: [PATCH 15/24] post merge moves and more TODO_TRANSLATE --- .../3drando/hint_list/hint_list_item.cpp | 238 +++++++++--------- 1 file changed, 119 insertions(+), 119 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index 5b2692bb9..87f5048a6 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -444,7 +444,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a little clucker", /*german*/"ein kleiner Gackerer", /*french*/"un petit glousseur") // /*spanish*/un pollito chiquito }, - CustomMessage("Pocket Cucco", "!!!", "!!!")); + CustomMessage("Pocket Cucco", TODO_TRANSLATE, TODO_TRANSLATE)); hintTextTable[RHT_COJIRO] = HintText(CustomMessage("Cojiro", /*german*/"Henni", /*french*/"le p'tit poulet"), // /*spanish*/a Cojiro @@ -1608,216 +1608,216 @@ void StaticData::HintTable_Init_Item() { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("a key to pots", /*german*/"!!!", /*french*/"!!!") + CustomMessage("a key to pots", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Guard House Key", "Schlüssel für das Haus der Wachen", ""/*!!!*/)); + CustomMessage("Guard House Key", "Schlüssel für das Haus der Wachen", "Clé de la Maison des Gardes")); hintTextTable[RHT_MARKET_BAZAAR_KEY] = HintText(CustomMessage("Market Bazaar's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("a child's shopping key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("a child's shopping key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Market Bazaar Key", "Schlüssel für den Basar des Marktes", "")); + CustomMessage("Market Bazaar Key", "Schlüssel für den Basar des Marktes", "Clé du Bazar de la Place du Marché")); hintTextTable[RHT_MARKET_POTION_SHOP_KEY] = HintText(CustomMessage("the Market Potion Shop's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("past potion's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("past potion's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Market Potion Shop Key", "Schlüssel für den Magie-Laden des Marktes", "")); + CustomMessage("Market Potion Shop Key", "Schlüssel für den Magie-Laden des Marktes", "Clé du Magasin de Potions de la Place du Marché")); hintTextTable[RHT_MASK_SHOP_KEY] = HintText(CustomMessage("the Mask Shop's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the masqurade's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the masqurade's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Mask Shop Key", "Schlüssel für den Maskenladen", "")); + CustomMessage("Mask Shop Key", "Schlüssel für den Maskenladen", "Clé de la Foire aux Masques")); hintTextTable[RHT_MARKET_SHOOTING_KEY] = HintText(CustomMessage("Market Shooting Gallery's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("slingshot shooting's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("slingshot shooting's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Market Shooting Gallery Key", "Schlüssel für die Schießbude des Marktes", "")); + CustomMessage("Market Shooting Gallery Key", "Schlüssel für die Schießbude des Marktes", "Clé du Stand de Tir de la Place du Marché")); hintTextTable[RHT_BOMBCHU_BOWLING_KEY] = HintText(CustomMessage("Bombchu Bowling's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("mouse golf's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("mouse golf's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Bombchu Bowling Alley Key", "Schlüssel für die Minenbowlingbahn", "")); + CustomMessage("Bombchu Bowling Alley Key", "Schlüssel für die Minenbowlingbahn", "Clé du Bowling Teigneux")); hintTextTable[RHT_TCG_BUILDING_KEY] = HintText(CustomMessage("Treasure Chest Game Building's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the gambling game's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the gambling game's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Treasure Chest Game Building Key", "Schlüssel für das Haus des Schatzkisten-Pokers", "")); + CustomMessage("Treasure Chest Game Building Key", "Schlüssel für das Haus des Schatzkisten-Pokers", "Clé de la Chasse au Trésor")); hintTextTable[RHT_BOMBCHU_SHOP_KEY] = HintText(CustomMessage("the Bombchu Shop's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("a mouse merchant's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("a mouse merchant's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Bombchu Shop Key", "Schlüssel für den Krabbelminenladen", "")); + CustomMessage("Bombchu Shop Key", "Schlüssel für den Krabbelminenladen", "Clé du Magasin de Missiles")); hintTextTable[RHT_RICHARDS_HOUSE_KEY] = HintText(CustomMessage("Richard's House Key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("a lost puppy's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("a lost puppy's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Richard's House Key", "Schlüssel für das Haus von Richard", "")); + CustomMessage("Richard's House Key", "Schlüssel für das Haus von Richard", "Clé de la Maison de Kiki")); hintTextTable[RHT_ALLEY_HOUSE_KEY] = HintText(CustomMessage("the Alley House's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("a townhouse's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("a townhouse's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Alley House Key", "Schlüssel für das Gassenhaus", "")); + CustomMessage("Alley House Key", "Schlüssel für das Gassenhaus", "Clé de la Maison de la Ruelle")); hintTextTable[RHT_KAK_BAZAAR_KEY] = HintText(CustomMessage("Kakariko Bazaar's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("adult's shopping key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("adult's shopping key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Kakariko Bazaar Key", "Schlüssel für den Basar von Kakariko", "")); + CustomMessage("Kakariko Bazaar Key", "Schlüssel für den Basar von Kakariko", "Clé du Bazar de Cocorico")); hintTextTable[RHT_KAK_POTION_SHOP_KEY] = HintText(CustomMessage("the Kakariko Potion Shop's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("future's potion key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("future's potion key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Kakariko Potion Shop Key", "Schlüssel für den Magie-Laden von Kakariko", "")); + CustomMessage("Kakariko Potion Shop Key", "Schlüssel für den Magie-Laden von Kakariko", "Clé du Magasin de Potions de Cocorico")); hintTextTable[RHT_BOSS_HOUSE_KEY] = HintText(CustomMessage("the Boss's House's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the carpenter's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the carpenter's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Boss's House Key", "Schlüssel für das Haus des Chefs", "")); + CustomMessage("Boss's House Key", "Schlüssel für das Haus des Chefs", "Clé de la Maison du Chef des Ouvriers")); hintTextTable[RHT_GRANNYS_POTION_SHOP_KEY] = HintText(CustomMessage("Granny's Potion Shop's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the old woman's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the old woman's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Granny's Potion Shop Key", "Schlüssel für Asas Hexenladen", "")); + CustomMessage("Granny's Potion Shop Key", "Schlüssel für Asas Hexenladen", "Clé de l'Apothicaire")); hintTextTable[RHT_SKULLTULA_HOUSE_KEY] = HintText(CustomMessage("the Skulltula House's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the cursed place's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the cursed place's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Skulltula House Key", "Schlüssel für das Skulltula-Haus", "")); + CustomMessage("Skulltula House Key", "Schlüssel für das Skulltula-Haus", "Clé de la Maison des Araignées")); hintTextTable[RHT_IMPAS_HOUSE_KEY] = HintText(CustomMessage("Impa's House's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the Shadow Sage's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the Shadow Sage's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Impa's House Key", "Schlüssel für das Haus von Impa", "")); + CustomMessage("Impa's House Key", "Schlüssel für das Haus von Impa", "Clé de la Maison d'Impa")); hintTextTable[RHT_WINDMILL_KEY] = HintText(CustomMessage("the Windmill's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the grain grinder's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the grain grinder's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Windmill Key", "Schlüssel für die Windmühle", "")); + CustomMessage("Windmill Key", "Schlüssel für die Windmühle", "Clé du Moulin")); hintTextTable[RHT_KAK_SHOOTING_KEY] = HintText(CustomMessage("Kakariko Shooting Gallery's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("bow shooting's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("bow shooting's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Kakariko Shooting Gallery Key", "Schlüssel für die Schießbude von Kakariko", "")); + CustomMessage("Kakariko Shooting Gallery Key", "Schlüssel für die Schießbude von Kakariko", "Clé du Stand de Tir de Cocorico")); hintTextTable[RHT_DAMPES_HUT_KEY] = HintText(CustomMessage("Dampe's Hut's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the small hut's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the small hut's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Dampe's Hut Key", "Schlüssel für die Hütte von Boris", "")); + CustomMessage("Dampe's Hut Key", "Schlüssel für die Hütte von Boris", "Clé de la Cabane d'Igor")); hintTextTable[RHT_TALONS_HOUSE_KEY] = HintText(CustomMessage("Talon's House's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the layabout's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the layabout's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Talon's House Key", "Schlüssel für das Haus von Talon", "")); + CustomMessage("Talon's House Key", "Schlüssel für das Haus von Talon", "Clé de la Maison de Talon")); hintTextTable[RHT_STABLES_KEY] = HintText(CustomMessage("the Stables' key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the key to the farm", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the key to the farm", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Stables Key", "Schlüssel für die Ställe", "")); + CustomMessage("Stables Key", "Schlüssel für die Ställe", "Clé des Écuries")); hintTextTable[RHT_BACK_TOWER_KEY] = HintText(CustomMessage("the Back Tower's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the cowshed's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the cowshed's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Back Tower Key", "Schlüssel für den hinteren Turm", "")); + CustomMessage("Back Tower Key", "Schlüssel für den hinteren Turm", "Clé du Silo")); hintTextTable[RHT_HYLIA_LAB_KEY] = HintText(CustomMessage("the Hylia Laboratory's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the key to science", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the key to science", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Hylia Laboratory Key", "Schlüssel für das Hylia-Labor", "")); + CustomMessage("Hylia Laboratory Key", "Schlüssel für das Hylia-Labor", "Clé du Laboratoire du Lac Hylia")); hintTextTable[RHT_FISHING_HOLE_KEY] = HintText(CustomMessage("the Fishing Hole's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior }, { - CustomMessage("the fisherman's key", /*german*/"!!!", /*french*/"!!!") + CustomMessage("the fisherman's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Fishing Hole Key", "Schlüssel für den Fischweiher", "")); + CustomMessage("Fishing Hole Key", "Schlüssel für den Fischweiher", "Clé de l'Étang")); hintTextTable[RHT_FOREST_TEMPLE_KEY_RING] = HintText(CustomMessage("a Forest Temple Key Ring", /*german*/"ein Schlüsselbund des Waldtempels", /*french*/"un trousseau de clés du Temple de la Forêt"), // /*spanish*/un llavero del Templo del Bosque @@ -1977,7 +1977,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") // /*spanish*/un llavero }, { - CustomMessage("a gambler's toolbox for unlocking"),//"!!!" + CustomMessage("a gambler's toolbox for unlocking"),// TODO_TRANSLATE CustomMessage("a gambler's season pass"), CustomMessage("a gambler's jingling ring"), CustomMessage("a gambler's skeleton key") @@ -2254,11 +2254,11 @@ void StaticData::HintTable_Init_Item() { CustomMessage("Ice Trap", "Eisfalle", "Piège de Glace")); - hintTextTable[RHT_MILK] = HintText(CustomMessage("some Milk", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_MILK] = HintText(CustomMessage("some Milk", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Milk", "Milch", "Lait")); - hintTextTable[RHT_FISH] = HintText(CustomMessage("a Fish", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_FISH] = HintText(CustomMessage("a Fish", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Fish", "Fisch", "Poisson")); @@ -2457,15 +2457,15 @@ void StaticData::HintTable_Init_Item() { }, CustomMessage("Deku Stick (1)", "Deku-Stab (1)", "Bâton Mojo (1)")); - hintTextTable[RHT_RED_POTION_REFILL] = HintText(CustomMessage("some Red Potion", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_RED_POTION_REFILL] = HintText(CustomMessage("some Red Potion", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Red Potion Refill", "Nachfüllpackung des roten Elixiers", "Recharge de Potion Rouge")); - hintTextTable[RHT_GREEN_POTION_REFILL] = HintText(CustomMessage("some Green Potion", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_GREEN_POTION_REFILL] = HintText(CustomMessage("some Green Potion", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Green Potion Refill", "Nachfüllpackung des grünen Elixiers", "Recharge de Potion Verte")); - hintTextTable[RHT_BLUE_POTION_REFILL] = HintText(CustomMessage("some Blue Potion", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BLUE_POTION_REFILL] = HintText(CustomMessage("some Blue Potion", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Blue Potion Refill", "Nachfüllpackung des blauen Elixiers", "Recharge de Potion Bleue")); @@ -2491,123 +2491,123 @@ void StaticData::HintTable_Init_Item() { }, CustomMessage("Green Rupee (LOSER)", "Grüner Rubin (Schatztruhenminispiel)", "Rubis Vert (Chasse-aux-Trésors)")); - hintTextTable[RHT_BUY_DEKU_NUTS_5] = HintText(CustomMessage("Deku Nuts", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_DEKU_NUTS_5] = HintText(CustomMessage("Deku Nuts", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Deku Nut (5)", "Deku-Nuß kaufen (5)", "Acheter: Noix Mojo (5)")); - hintTextTable[RHT_BUY_ARROWS_30] = HintText(CustomMessage("Arrows", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_ARROWS_30] = HintText(CustomMessage("Arrows", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Arrows (30)", "Pfeile kaufen (30)", "Acheter: Flèches (30)")); - hintTextTable[RHT_BUY_ARROWS_50] = HintText(CustomMessage("Arrows", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_ARROWS_50] = HintText(CustomMessage("Arrows", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Arrows (50)", "Pfeile kaufen (50)", "Acheter: Flèches (50)")); - hintTextTable[RHT_BUY_BOMBS_525] = HintText(CustomMessage("cheap Bombs", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_BOMBS_525] = HintText(CustomMessage("cheap Bombs", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Bombs (5) [25]", "Bomben kaufen (5) [25]", "Acheter: Bombes (5) [25]")); - hintTextTable[RHT_BUY_DEKU_NUTS_10] = HintText(CustomMessage("Deku Nuts", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_DEKU_NUTS_10] = HintText(CustomMessage("Deku Nuts", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Deku Nut (10)", "Deku-Nuß kaufen (10)", "Acheter: Noix Mojo (10)")); - hintTextTable[RHT_BUY_DEKU_STICK_1] = HintText(CustomMessage("Deku Sticks", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_DEKU_STICK_1] = HintText(CustomMessage("Deku Sticks", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Deku Stick (1)", "Acheter: Bâton Mojo (1)", "Deku-Stab kaufen (1)")); - hintTextTable[RHT_BUY_BOMBS_10] = HintText(CustomMessage("Bombs", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_BOMBS_10] = HintText(CustomMessage("Bombs", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Bombs (10)", "Bomben kaufen (10)", "Acheter: Bombes (10)")); - hintTextTable[RHT_BUY_FISH] = HintText(CustomMessage("Fish", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_FISH] = HintText(CustomMessage("Fish", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Fish", "Fisch kaufen", "Acheter: Poisson")); - hintTextTable[RHT_BUY_RED_POTION_30] = HintText(CustomMessage("cheap Red Potion", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_RED_POTION_30] = HintText(CustomMessage("cheap Red Potion", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Red Potion [30]", "Rotes Elixier kaufen [30]", "Acheter: Potion Rouge [30]")); - hintTextTable[RHT_BUY_GREEN_POTION] = HintText(CustomMessage("Green Potion", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_GREEN_POTION] = HintText(CustomMessage("Green Potion", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Green Potion", "Grünes Elixier kaufen", "Acheter: Potion Verte")); - hintTextTable[RHT_BUY_BLUE_POTION] = HintText(CustomMessage("Blue Potion", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_BLUE_POTION] = HintText(CustomMessage("Blue Potion", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Blue Potion", "Blaues Elixier kaufen", "Acheter: Potion Bleue")); - hintTextTable[RHT_BUY_HYLIAN_SHIELD] = HintText(CustomMessage("Hylian Shields", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_HYLIAN_SHIELD] = HintText(CustomMessage("Hylian Shields", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Hylian Shield", "Hylia-Schild kaufen", "Acheter: Bouclier Hylien")); - hintTextTable[RHT_BUY_DEKU_SHIELD] = HintText(CustomMessage("Deku Shields", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_DEKU_SHIELD] = HintText(CustomMessage("Deku Shields", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Deku Shield", "Deku-Schild kaufen", "Acheter: Bouclier Mojo")); - hintTextTable[RHT_BUY_GORON_TUNIC] = HintText(CustomMessage("Goron Tunics", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_GORON_TUNIC] = HintText(CustomMessage("Goron Tunics", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Goron Tunic", "Goronen-Tunika kaufen", "Acheter: Tunique Goron")); - hintTextTable[RHT_BUY_ZORA_TUNIC] = HintText(CustomMessage("Zora Tunics", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_ZORA_TUNIC] = HintText(CustomMessage("Zora Tunics", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Zora Tunic", "Zora-Tunika kaufen", "Acheter: Tunique Zora")); - hintTextTable[RHT_BUY_HEART] = HintText(CustomMessage("Recovery Hearts", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_HEART] = HintText(CustomMessage("Recovery Hearts", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Heart", "Herz kaufen", "Acheter: Coeur de Vie")); - hintTextTable[RHT_BUY_BOMBCHUS_10] = HintText(CustomMessage("Bombchus", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_BOMBCHUS_10] = HintText(CustomMessage("Bombchus", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Bombchu (10)", "Krabbelminen kaufen (10)", "Acheter: Missiles (10)")); - hintTextTable[RHT_BUY_BOMBCHUS_20] = HintText(CustomMessage("Bulk Bombchus", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_BOMBCHUS_20] = HintText(CustomMessage("Bulk Bombchus", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Bombchu (20)", "Krabbelminen kaufen (20)", "Acheter: Missiles (20)")); - hintTextTable[RHT_BUY_DEKU_SEEDS_30] = HintText(CustomMessage("Deku Seeds", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_DEKU_SEEDS_30] = HintText(CustomMessage("Deku Seeds", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Deku Seeds (30)", "Deku-Samen kaufen (30)", "Acheter: Graines Mojo (30)")); - hintTextTable[RHT_SOLD_OUT] = HintText(CustomMessage("Nothing", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_SOLD_OUT] = HintText(CustomMessage("Nothing", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Sold Out", "Ausverkauft", "Rupture de stock")); - hintTextTable[RHT_BUY_BLUE_FIRE] = HintText(CustomMessage("Blue Fire", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_BLUE_FIRE] = HintText(CustomMessage("Blue Fire", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Blue Fire", "Blaues Feuer kaufen", "Acheter: Flamme Bleue")); - hintTextTable[RHT_BUY_BOTTLE_BUG] = HintText(CustomMessage("Bugs", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_BOTTLE_BUG] = HintText(CustomMessage("Bugs", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Bottle Bug", "Flaschenkäfer kaufen", "Acheter: Insecte en bouteille")); - hintTextTable[RHT_BUY_POE] = HintText(CustomMessage("Poes", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_POE] = HintText(CustomMessage("Poes", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Poe", "Geist kaufen", "Acheter: Esprit")); - hintTextTable[RHT_BUY_FAIRYS_SPIRIT] = HintText(CustomMessage("Fairies", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_FAIRYS_SPIRIT] = HintText(CustomMessage("Fairies", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Fairy's Spirit", "Feengeist kaufen", "Acheter: Esprit de Fée")); - hintTextTable[RHT_BUY_ARROWS_10] = HintText(CustomMessage("Arrows", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_ARROWS_10] = HintText(CustomMessage("Arrows", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Arrows (10)", "Pfeile kaufen (10)", "Acheter: Flèches (10)")); - hintTextTable[RHT_BUY_BOMBS_20] = HintText(CustomMessage("Bombs", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_BOMBS_20] = HintText(CustomMessage("Bombs", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Bombs (20)", "Bomben kaufen (20)", "Acheter: Bombes (20)")); - hintTextTable[RHT_BUY_BOMBS_30] = HintText(CustomMessage("bulk Bombs", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_BOMBS_30] = HintText(CustomMessage("bulk Bombs", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Bombs (30)", "Bomben kaufen (30)", "Acheter: Bombes (30)")); - hintTextTable[RHT_BUY_BOMBS_535] = HintText(CustomMessage("pricy Bombs", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_BOMBS_535] = HintText(CustomMessage("pricy Bombs", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Bombs (5) [35]", "Bomben kaufen (5) [35]", "Acheter: Bombes (5) [35]")); - hintTextTable[RHT_BUY_RED_POTION_40] = HintText(CustomMessage("Red Potion", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_RED_POTION_40] = HintText(CustomMessage("Red Potion", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Red Potion [40]", "Rotes Elixier kaufen [40]", "Acheter: Potion Rouge [40]")); - hintTextTable[RHT_BUY_RED_POTION_50] = HintText(CustomMessage("pricy Red Potion", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BUY_RED_POTION_50] = HintText(CustomMessage("pricy Red Potion", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Buy Red Potion [50]", "Rotes Elixier kaufen [50]", "Acheter: Potion Rouge [50]")); @@ -2780,7 +2780,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("sack of mice", /*german*/"ein Sack Mäuse", /*french*/"un Sac rempli de souris") }, - CustomMessage("Bombchu Bag", "Krabbelminentasche", "!!!")); + CustomMessage("Bombchu Bag", "Krabbelminentasche", TODO_TRANSLATE)); hintTextTable[RHT_SKELETON_KEY] = HintText(CustomMessage("a Skeleton Key", /*german*/ "ein Universalschlüssel", /*french*/ "une Clé Squelette"), // /*spanish*/una Llave Maestra @@ -2841,135 +2841,135 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a four legged friend", /*german*/"ein vierbeiniger Freund", /*french*/"un puissant animal")}); // /*spanish*/una amiga cuadrúpeda - hintTextTable[RG_TRIFORCE] = HintText(CustomMessage("the Triforce", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RG_TRIFORCE] = HintText(CustomMessage("the Triforce", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Triforce", "Triforce", "Triforce")); - hintTextTable[RHT_HINT] = HintText(CustomMessage("a Hint", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_HINT] = HintText(CustomMessage("a Hint", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Hint", "Hinweis", "Indice")); - hintTextTable[RHT_HOOKSHOT] = HintText(CustomMessage("the Hookshot", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_HOOKSHOT] = HintText(CustomMessage("the Hookshot", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Hookshot", "Fanghaken", "Grappin")); - hintTextTable[RHT_LONGSHOT] = HintText(CustomMessage("the Longshot", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_LONGSHOT] = HintText(CustomMessage("the Longshot", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Longshot", "Enterhaken", "Super-Grappin")); - hintTextTable[RHT_FAIRY_OCARINA] = HintText(CustomMessage("the Fairy Ocarina", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_FAIRY_OCARINA] = HintText(CustomMessage("the Fairy Ocarina", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Fairy Ocarina", "Feen-Okarina", "Ocarina des fées")); - hintTextTable[RHT_OCARINA_OF_TIME] = HintText(CustomMessage("the Ocarina of Time", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_OCARINA_OF_TIME] = HintText(CustomMessage("the Ocarina of Time", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Ocarina of Time", "Okarina der Zeit", "Ocarina du Temps")); - hintTextTable[RHT_BOMB_BAG] = HintText(CustomMessage("the Bomb Bag", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BOMB_BAG] = HintText(CustomMessage("the Bomb Bag", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Bomb Bag", "Bombentasche", "Sac de Bombes")); - hintTextTable[RHT_BIG_BOMB_BAG] = HintText(CustomMessage("the Big Bomb Bag", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BIG_BOMB_BAG] = HintText(CustomMessage("the Big Bomb Bag", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Big Bomb Bag", "Große Bombentasche", "Grand Sac de Bombes")); - hintTextTable[RHT_BIGGEST_BOMB_BAG] = HintText(CustomMessage("the Biggest Bomb Bag", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BIGGEST_BOMB_BAG] = HintText(CustomMessage("the Biggest Bomb Bag", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Biggest Bomb Bag", "Größte Bombentasche", "Énorme Sac de Bombes")); - hintTextTable[RHT_FAIRY_BOW] = HintText(CustomMessage("the Fairy Bow", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_FAIRY_BOW] = HintText(CustomMessage("the Fairy Bow", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Fairy Bow", "Feen-Bogen", "Arc des Fées")); - hintTextTable[RHT_BIG_QUIVER] = HintText(CustomMessage("a Big Quiver", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BIG_QUIVER] = HintText(CustomMessage("a Big Quiver", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Big Quiver", "Großer Köcher", "Grand carquois")); - hintTextTable[RHT_BIGGEST_QUIVER] = HintText(CustomMessage("the Biggest Quiver", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BIGGEST_QUIVER] = HintText(CustomMessage("the Biggest Quiver", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Biggest Quiver", "Größter Köcher", "Énorme carquois")); - hintTextTable[RHT_FAIRY_SLINGSHOT] = HintText(CustomMessage("the Fairy Slingshot", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_FAIRY_SLINGSHOT] = HintText(CustomMessage("the Fairy Slingshot", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Fairy Slingshot", "Feen-Schleuder", "Lance-Pierre des Fées")); - hintTextTable[RHT_BIG_BULLET_BAG] = HintText(CustomMessage("a Big Bullet Bag", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BIG_BULLET_BAG] = HintText(CustomMessage("a Big Bullet Bag", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Big Deku Seed Bullet Bag", "Große Deku-Samentasche", "Grand sac de graines mojo")); - hintTextTable[RHT_BIGGEST_BULLET_BAG] = HintText(CustomMessage("the Biggest Bullet Bag", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BIGGEST_BULLET_BAG] = HintText(CustomMessage("the Biggest Bullet Bag", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Biggest Deku Seed Bullet Bag", "Größte Deku-Samentasche", "Énorme sac de graines mojo")); - hintTextTable[RHT_GORONS_BRACELET] = HintText(CustomMessage("the Goron's Bracelet", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_GORONS_BRACELET] = HintText(CustomMessage("the Goron's Bracelet", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Goron's Bracelet", "Goronen-Armband", "Bracelet Goron")); - hintTextTable[RHT_SILVER_GAUNTLETS] = HintText(CustomMessage("the Silver Gauntlets", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_SILVER_GAUNTLETS] = HintText(CustomMessage("the Silver Gauntlets", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Silver Gauntlets", "Silberhandschuhe", "Gantelets d'argent")); - hintTextTable[RHT_GOLDEN_GAUNTLETS] = HintText(CustomMessage("the Golden Gauntlets", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_GOLDEN_GAUNTLETS] = HintText(CustomMessage("the Golden Gauntlets", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Golden Gauntlets", "Goldhandschuhe", "Gantelets d'or")); - hintTextTable[RHT_BRONZE_SCALE] = HintText(CustomMessage("a Bronze Scale", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_BRONZE_SCALE] = HintText(CustomMessage("a Bronze Scale", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Bronze Scale", "Bronzene Schuppe", "Écaille de Bronze")); - hintTextTable[RHT_SILVER_SCALE] = HintText(CustomMessage("a Silver Scale", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_SILVER_SCALE] = HintText(CustomMessage("a Silver Scale", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Silver Scale", "Silberne Schuppe", "Écaille d'argent")); - hintTextTable[RHT_GOLDEN_SCALE] = HintText(CustomMessage("a Golden Scale", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_GOLDEN_SCALE] = HintText(CustomMessage("a Golden Scale", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Golden Scale", "Goldene Schuppe", "Écaille d'or")); - hintTextTable[RHT_CHILD_WALLET] = HintText(CustomMessage("a Child's Wallet", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_CHILD_WALLET] = HintText(CustomMessage("a Child's Wallet", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Child Wallet", "Kindergeldbörse", "Petite Bourse")); - hintTextTable[RHT_ADULT_WALLET] = HintText(CustomMessage("an Adult's Wallet", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_ADULT_WALLET] = HintText(CustomMessage("an Adult's Wallet", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Adult Wallet", "Erwachsenengeldbörse", "Grande Bourse")); - hintTextTable[RHT_GIANT_WALLET] = HintText(CustomMessage("a Giant Wallet", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_GIANT_WALLET] = HintText(CustomMessage("a Giant Wallet", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Giant Wallet", "Riesige Geldbörse", "Bourse de Géant")); - hintTextTable[RHT_TYCOON_WALLET] = HintText(CustomMessage("the Tycoon Wallet", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_TYCOON_WALLET] = HintText(CustomMessage("the Tycoon Wallet", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Tycoon Wallet", "Goldene Geldbörse", "Bourse de Magnat")); - hintTextTable[RHT_DEKU_NUT_BAG] = HintText(CustomMessage("a Deku Nut Bag", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_DEKU_NUT_BAG] = HintText(CustomMessage("a Deku Nut Bag", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Deku Nut Bag", "Deku-Nuß-Tasche", "Sac de Noix Mojo")); - hintTextTable[RHT_DEKU_NUT_CAPACITY_30] = HintText(CustomMessage("Deku Nut Capacity (30)", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_DEKU_NUT_CAPACITY_30] = HintText(CustomMessage("Deku Nut Capacity (30)", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Deku Nut Capacity (30)", "Deku-Nuß-Kapazität (30)", "Capacité de noix Mojo (30)")); - hintTextTable[RHT_DEKU_NUT_CAPACITY_40] = HintText(CustomMessage("", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_DEKU_NUT_CAPACITY_40] = HintText(CustomMessage("", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Deku Nut Capacity (40)", "Deku-Nuß-Kapazität (40)", "Capacité de noix Mojo (40)")); - hintTextTable[RHT_DEKU_STICK_BAG] = HintText(CustomMessage("a Deku Stick Bag", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_DEKU_STICK_BAG] = HintText(CustomMessage("a Deku Stick Bag", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Deku Stick Bag", "Deku-Stab-Tasche", "Sac de Bâton Mojo")); - hintTextTable[RHT_DEKU_STICK_CAPACITY_20] = HintText(CustomMessage("", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_DEKU_STICK_CAPACITY_20] = HintText(CustomMessage("", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Deku Stick Capacity (20)", "Deku-Stab-Kapazität (20)", "Capacité de Bâtons Mojo (20)")); - hintTextTable[RHT_DEKU_STICK_CAPACITY_30] = HintText(CustomMessage("", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_DEKU_STICK_CAPACITY_30] = HintText(CustomMessage("", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Deku Stick Capacity (30)", "Deku-Stab-Kapazität (30)", "Capacité de Bâtons Mojo (30)")); - hintTextTable[RHT_MAGIC_SINGLE] = HintText(CustomMessage("a Small Magic Meter", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_MAGIC_SINGLE] = HintText(CustomMessage("a Small Magic Meter", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Magic Meter", "Magisches Maß", "Jauge de Magie")); - hintTextTable[RHT_MAGIC_DOUBLE] = HintText(CustomMessage("a Large Magic Meter", /*german*/"!!!", /*french*/"!!!"), + hintTextTable[RHT_MAGIC_DOUBLE] = HintText(CustomMessage("a Large Magic Meter", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Enhanced Magic Meter", "Verbessertes Magisches Maß", "Jauge de Magie améliorée")); From fdb6f42ec72dbcb9a3b24c4657a0dda7a132c235 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Wed, 23 Apr 2025 23:06:57 +0100 Subject: [PATCH 16/24] remove playthrough and progressive --- .../Enhancements/randomizer/3drando/fill.cpp | 1 - soh/soh/Enhancements/randomizer/item.cpp | 22 +++---- soh/soh/Enhancements/randomizer/item.h | 12 +--- soh/soh/Enhancements/randomizer/item_list.cpp | 62 +++++++++---------- 4 files changed, 41 insertions(+), 56 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/fill.cpp b/soh/soh/Enhancements/randomizer/3drando/fill.cpp index d7e02594a..6d24659b3 100644 --- a/soh/soh/Enhancements/randomizer/3drando/fill.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/fill.cpp @@ -881,7 +881,6 @@ static void AssumedFill(const std::vector& items, const std::vect Shuffle(itemsToPlace); while (!itemsToPlace.empty()) { RandomizerGet item = std::move(itemsToPlace.back()); - Rando::StaticData::RetrieveItem(item).SetAsPlaythrough(); itemsToPlace.pop_back(); // assume we have all unplaced items diff --git a/soh/soh/Enhancements/randomizer/item.cpp b/soh/soh/Enhancements/randomizer/item.cpp index 51d044efa..6a8cf8600 100644 --- a/soh/soh/Enhancements/randomizer/item.cpp +++ b/soh/soh/Enhancements/randomizer/item.cpp @@ -13,14 +13,14 @@ namespace Rando { Item::Item() : randomizerGet(RG_NONE), type(ITEMTYPE_ITEM), getItemId(GI_NONE), advancement(false), hintKey(RHT_NONE), - progressive(false), price(0) { + price(0) { } Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t itemId_, const uint16_t objectId_, const uint16_t gid_, const uint16_t textId_, const uint16_t field_, const int16_t chestAnimation_, - const GetItemCategory category_, const uint16_t modIndex_, const bool progressive_, const uint16_t price_) + const GetItemCategory category_, const uint16_t modIndex_, const uint16_t price_) : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), advancement(advancement_), logicVal(logicVal_), - hintKey(hintKey_), progressive(progressive_), price(price_) { + hintKey(hintKey_), price(price_) { if (modIndex_ == MOD_RANDOMIZER || getItemId > 0x7D) { giEntry = std::make_shared(GetItemEntry{ itemId_, field_, static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, @@ -37,9 +37,9 @@ Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16 Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t objectId_, const uint16_t gid_, const uint16_t textId_, const uint16_t field_, const int16_t chestAnimation_, - const GetItemCategory category_, const uint16_t modIndex_, const bool progressive_, const uint16_t price_) + const GetItemCategory category_, const uint16_t modIndex_, const uint16_t price_) : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), advancement(advancement_), logicVal(logicVal_), - hintKey(hintKey_), progressive(progressive_), price(price_) { + hintKey(hintKey_), price(price_) { if (modIndex_ == MOD_RANDOMIZER || getItemId > 0x7D) { giEntry = std::make_shared( GetItemEntry{ static_cast(randomizerGet_), field_, @@ -56,9 +56,9 @@ Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16 } Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, - LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const bool progressive_, const uint16_t price_) + LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t price_) : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), advancement(advancement_), logicVal(logicVal_), - hintKey(hintKey_), progressive(progressive_), price(price_) { + hintKey(hintKey_), price(price_) { } Item::~Item() = default; @@ -390,18 +390,10 @@ void Item::SetPrice(const uint16_t price_) { price = price_; } -void Item::SetAsPlaythrough() { - playthrough = true; -} - void Item::SetCustomDrawFunc(const CustomDrawFunc drawFunc) const { giEntry->drawFunc = drawFunc; } -bool Item::IsPlaythrough() const { - return playthrough; -} - bool Item::IsBottleItem() const { return getItemId == 0x0F || // Empty Bottle getItemId == 0X14 || // Bottle with Milk diff --git a/soh/soh/Enhancements/randomizer/item.h b/soh/soh/Enhancements/randomizer/item.h index 60ff4c13b..17dcf6d5b 100644 --- a/soh/soh/Enhancements/randomizer/item.h +++ b/soh/soh/Enhancements/randomizer/item.h @@ -32,14 +32,12 @@ class Item { Item(); Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t itemId_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, - uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, - bool progressive_ = false, uint16_t price_ = 0); + uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, uint16_t price_ = 0); Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, uint16_t field_, - int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, bool progressive_ = false, - uint16_t price_ = 0); + int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, uint16_t price_ = 0); Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, - RandomizerHintTextKey hintKey_, bool progressive_ = false, uint16_t price_ = 0); + RandomizerHintTextKey hintKey_, uint16_t price_ = 0); ~Item(); void ApplyEffect() const; @@ -55,9 +53,7 @@ class Item { std::shared_ptr GetGIEntry() const; GetItemEntry GetGIEntry_Copy() const; void SetPrice(uint16_t price_); - void SetAsPlaythrough(); void SetCustomDrawFunc(CustomDrawFunc) const; - bool IsPlaythrough() const; bool IsBottleItem() const; bool IsMajorItem() const; RandomizerHintTextKey GetHintKey() const; @@ -73,9 +69,7 @@ class Item { bool advancement; LogicVal logicVal; RandomizerHintTextKey hintKey; - bool progressive; uint16_t price; - bool playthrough = false; std::shared_ptr giEntry; }; } // namespace Rando diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index 1ac3229ea..dd53a5662 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -146,7 +146,7 @@ void Rando::StaticData::InitItemTable() { itemTable[RG_WATER_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY] = Item(RG_SPIRIT_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x98, true, LOGIC_BOSS_KEY_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_SHADOW_TEMPLE_BOSS_KEY] = Item( RG_SHADOW_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x99, true, LOGIC_BOSS_KEY_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_BOSS_KEY] = Item(RG_SHADOW_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x99, true, LOGIC_BOSS_KEY_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); itemTable[RG_GANONS_CASTLE_BOSS_KEY] = Item(RG_GANONS_CASTLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x9A, true, LOGIC_BOSS_KEY_GANONS_CASTLE, RHT_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); @@ -284,36 +284,36 @@ void Rando::StaticData::InitItemTable() { itemTable[RG_TCG_PIECE_OF_HEART] = Item(RG_TCG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE_WIN, true, LOGIC_PIECE_OF_HEART, RHT_TCG_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); itemTable[RG_LOSER_GREEN_RUPEE] = Item(RG_LOSER_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN_LOSE, false, LOGIC_NONE, RHT_LOSER_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); // Shop - itemTable[RG_BUY_DEKU_NUTS_5] = Item(RG_BUY_DEKU_NUTS_5, ITEMTYPE_SHOP, GI_NUTS_5_2, true, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 15); - itemTable[RG_BUY_ARROWS_30] = Item(RG_BUY_ARROWS_30, ITEMTYPE_SHOP, GI_ARROWS_MEDIUM, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_30, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 60); - itemTable[RG_BUY_ARROWS_50] = Item(RG_BUY_ARROWS_50, ITEMTYPE_SHOP, GI_ARROWS_LARGE, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_50, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 90); - itemTable[RG_BUY_BOMBS_525] = Item(RG_BUY_BOMBS_525, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_525, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 25); - itemTable[RG_BUY_DEKU_NUTS_10] = Item(RG_BUY_DEKU_NUTS_10, ITEMTYPE_SHOP, GI_NUTS_10, true, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_DEKU_STICK_1] = Item(RG_BUY_DEKU_STICK_1, ITEMTYPE_SHOP, GI_STICKS_1, true, LOGIC_STICKS, RHT_BUY_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); - itemTable[RG_BUY_BOMBS_10] = Item(RG_BUY_BOMBS_10, ITEMTYPE_SHOP, GI_BOMBS_10, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); - itemTable[RG_BUY_FISH] = Item(RG_BUY_FISH, ITEMTYPE_SHOP, GI_FISH, true, LOGIC_FISH_ACCESS, RHT_BUY_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 200); - itemTable[RG_BUY_RED_POTION_30] = Item(RG_BUY_RED_POTION_30, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_30, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_GREEN_POTION] = Item(RG_BUY_GREEN_POTION, ITEMTYPE_SHOP, GI_POTION_GREEN, true, LOGIC_BUY_MAGIC_POTION, RHT_BUY_GREEN_POTION, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_BLUE_POTION] = Item(RG_BUY_BLUE_POTION, ITEMTYPE_SHOP, GI_POTION_BLUE, true, LOGIC_BUY_MAGIC_POTION, RHT_BUY_BLUE_POTION, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 100); - itemTable[RG_BUY_HYLIAN_SHIELD] = Item(RG_BUY_HYLIAN_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_HYLIAN, true, LOGIC_HYLIAN_SHIELD, RHT_BUY_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 80); - itemTable[RG_BUY_DEKU_SHIELD] = Item(RG_BUY_DEKU_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_DEKU, true, LOGIC_DEKU_SHIELD, RHT_BUY_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 40); - itemTable[RG_BUY_GORON_TUNIC] = Item(RG_BUY_GORON_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_BUY_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 200); - itemTable[RG_BUY_ZORA_TUNIC] = Item(RG_BUY_ZORA_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_BUY_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 300); - itemTable[RG_BUY_HEART] = Item(RG_BUY_HEART, ITEMTYPE_SHOP, GI_HEART, false, LOGIC_NONE, RHT_BUY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); - itemTable[RG_BUY_BOMBCHUS_10] = Item(RG_BUY_BOMBCHUS_10, ITEMTYPE_SHOP, GI_BOMBCHUS_10, true, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 99); - itemTable[RG_BUY_BOMBCHUS_20] = Item(RG_BUY_BOMBCHUS_20, ITEMTYPE_SHOP, GI_BOMBCHUS_20, true, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 180); - itemTable[RG_BUY_DEKU_SEEDS_30] = Item(RG_BUY_DEKU_SEEDS_30, ITEMTYPE_SHOP, GI_SEEDS_30, true, LOGIC_BUY_SEED, RHT_BUY_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_SOLD_OUT] = Item(RG_SOLD_OUT, ITEMTYPE_SHOP, RG_SOLD_OUT, false, LOGIC_NONE, RHT_SOLD_OUT, false, 0); - itemTable[RG_BUY_BLUE_FIRE] = Item(RG_BUY_BLUE_FIRE, ITEMTYPE_SHOP, GI_BLUE_FIRE, true, LOGIC_BLUE_FIRE_ACCESS, RHT_BUY_BLUE_FIRE, ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 300); - itemTable[RG_BUY_BOTTLE_BUG] = Item(RG_BUY_BOTTLE_BUG, ITEMTYPE_SHOP, GI_BUGS, true, LOGIC_BUGS_ACCESS, RHT_BUY_BOTTLE_BUG, ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); - itemTable[RG_BUY_POE] = Item(RG_BUY_POE, ITEMTYPE_SHOP, RG_BUY_POE, false, LOGIC_NONE, RHT_BUY_POE, ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_FAIRYS_SPIRIT] = Item(RG_BUY_FAIRYS_SPIRIT, ITEMTYPE_SHOP, GI_FAIRY, true, LOGIC_FAIRY_ACCESS, RHT_BUY_FAIRYS_SPIRIT, ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); - itemTable[RG_BUY_ARROWS_10] = Item(RG_BUY_ARROWS_10, ITEMTYPE_SHOP, GI_ARROWS_SMALL, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_10, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 20); - itemTable[RG_BUY_BOMBS_20] = Item(RG_BUY_BOMBS_20, ITEMTYPE_SHOP, GI_BOMBS_20, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 80); - itemTable[RG_BUY_BOMBS_30] = Item(RG_BUY_BOMBS_30, ITEMTYPE_SHOP, GI_BOMBS_30, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_30, ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 120); - itemTable[RG_BUY_BOMBS_535] = Item(RG_BUY_BOMBS_535, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_535, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 35); - itemTable[RG_BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_40, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 40); - itemTable[RG_BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_50, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_DEKU_NUTS_5] = Item(RG_BUY_DEKU_NUTS_5, ITEMTYPE_SHOP, GI_NUTS_5_2, true, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 15); + itemTable[RG_BUY_ARROWS_30] = Item(RG_BUY_ARROWS_30, ITEMTYPE_SHOP, GI_ARROWS_MEDIUM, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_30, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 60); + itemTable[RG_BUY_ARROWS_50] = Item(RG_BUY_ARROWS_50, ITEMTYPE_SHOP, GI_ARROWS_LARGE, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_50, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 90); + itemTable[RG_BUY_BOMBS_525] = Item(RG_BUY_BOMBS_525, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_525, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 25); + itemTable[RG_BUY_DEKU_NUTS_10] = Item(RG_BUY_DEKU_NUTS_10, ITEMTYPE_SHOP, GI_NUTS_10, true, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + itemTable[RG_BUY_DEKU_STICK_1] = Item(RG_BUY_DEKU_STICK_1, ITEMTYPE_SHOP, GI_STICKS_1, true, LOGIC_STICKS, RHT_BUY_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 10); + itemTable[RG_BUY_BOMBS_10] = Item(RG_BUY_BOMBS_10, ITEMTYPE_SHOP, GI_BOMBS_10, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 50); + itemTable[RG_BUY_FISH] = Item(RG_BUY_FISH, ITEMTYPE_SHOP, GI_FISH, true, LOGIC_FISH_ACCESS, RHT_BUY_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 200); + itemTable[RG_BUY_RED_POTION_30] = Item(RG_BUY_RED_POTION_30, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_30, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + itemTable[RG_BUY_GREEN_POTION] = Item(RG_BUY_GREEN_POTION, ITEMTYPE_SHOP, GI_POTION_GREEN, true, LOGIC_BUY_MAGIC_POTION, RHT_BUY_GREEN_POTION, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + itemTable[RG_BUY_BLUE_POTION] = Item(RG_BUY_BLUE_POTION, ITEMTYPE_SHOP, GI_POTION_BLUE, true, LOGIC_BUY_MAGIC_POTION, RHT_BUY_BLUE_POTION, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 100); + itemTable[RG_BUY_HYLIAN_SHIELD] = Item(RG_BUY_HYLIAN_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_HYLIAN, true, LOGIC_HYLIAN_SHIELD, RHT_BUY_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, 80); + itemTable[RG_BUY_DEKU_SHIELD] = Item(RG_BUY_DEKU_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_DEKU, true, LOGIC_DEKU_SHIELD, RHT_BUY_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, 40); + itemTable[RG_BUY_GORON_TUNIC] = Item(RG_BUY_GORON_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_BUY_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, 200); + itemTable[RG_BUY_ZORA_TUNIC] = Item(RG_BUY_ZORA_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_BUY_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, 300); + itemTable[RG_BUY_HEART] = Item(RG_BUY_HEART, ITEMTYPE_SHOP, GI_HEART, false, LOGIC_NONE, RHT_BUY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 10); + itemTable[RG_BUY_BOMBCHUS_10] = Item(RG_BUY_BOMBCHUS_10, ITEMTYPE_SHOP, GI_BOMBCHUS_10, true, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 99); + itemTable[RG_BUY_BOMBCHUS_20] = Item(RG_BUY_BOMBCHUS_20, ITEMTYPE_SHOP, GI_BOMBCHUS_20, true, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 180); + itemTable[RG_BUY_DEKU_SEEDS_30] = Item(RG_BUY_DEKU_SEEDS_30, ITEMTYPE_SHOP, GI_SEEDS_30, true, LOGIC_BUY_SEED, RHT_BUY_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + itemTable[RG_SOLD_OUT] = Item(RG_SOLD_OUT, ITEMTYPE_SHOP, RG_SOLD_OUT, false, LOGIC_NONE, RHT_SOLD_OUT, 0); + itemTable[RG_BUY_BLUE_FIRE] = Item(RG_BUY_BLUE_FIRE, ITEMTYPE_SHOP, GI_BLUE_FIRE, true, LOGIC_BLUE_FIRE_ACCESS, RHT_BUY_BLUE_FIRE, ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 300); + itemTable[RG_BUY_BOTTLE_BUG] = Item(RG_BUY_BOTTLE_BUG, ITEMTYPE_SHOP, GI_BUGS, true, LOGIC_BUGS_ACCESS, RHT_BUY_BOTTLE_BUG, ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); + itemTable[RG_BUY_POE] = Item(RG_BUY_POE, ITEMTYPE_SHOP, RG_BUY_POE, false, LOGIC_NONE, RHT_BUY_POE, ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + itemTable[RG_BUY_FAIRYS_SPIRIT] = Item(RG_BUY_FAIRYS_SPIRIT, ITEMTYPE_SHOP, GI_FAIRY, true, LOGIC_FAIRY_ACCESS, RHT_BUY_FAIRYS_SPIRIT, ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); + itemTable[RG_BUY_ARROWS_10] = Item(RG_BUY_ARROWS_10, ITEMTYPE_SHOP, GI_ARROWS_SMALL, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_10, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 20); + itemTable[RG_BUY_BOMBS_20] = Item(RG_BUY_BOMBS_20, ITEMTYPE_SHOP, GI_BOMBS_20, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 80); + itemTable[RG_BUY_BOMBS_30] = Item(RG_BUY_BOMBS_30, ITEMTYPE_SHOP, GI_BOMBS_30, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_30, ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 120); + itemTable[RG_BUY_BOMBS_535] = Item(RG_BUY_BOMBS_535, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_535, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 35); + itemTable[RG_BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_40, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 40); + itemTable[RG_BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_50, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); // Misc. itemTable[RG_GOHMA_SOUL] = Item(RG_GOHMA_SOUL, ITEMTYPE_ITEM, 0xE0, true, LOGIC_CAN_SUMMON_GOHMA, RHT_GOHMA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GOHMA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); From 56982bea37ddd02b5f940e0b44cae9a6879d43d6 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Thu, 24 Apr 2025 01:46:16 +0100 Subject: [PATCH 17/24] generation failing --- soh/soh/Enhancements/randomizer/item.cpp | 3 +-- soh/soh/Enhancements/randomizer/item.h | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/item.cpp b/soh/soh/Enhancements/randomizer/item.cpp index 6a8cf8600..c74dec613 100644 --- a/soh/soh/Enhancements/randomizer/item.cpp +++ b/soh/soh/Enhancements/randomizer/item.cpp @@ -12,8 +12,7 @@ namespace Rando { Item::Item() - : randomizerGet(RG_NONE), type(ITEMTYPE_ITEM), getItemId(GI_NONE), advancement(false), hintKey(RHT_NONE), - price(0) { + : randomizerGet(RG_NONE), type(ITEMTYPE_ITEM), getItemId(GI_NONE), advancement(false), hintKey(RHT_NONE), price(0) { } Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t itemId_, const uint16_t objectId_, diff --git a/soh/soh/Enhancements/randomizer/item.h b/soh/soh/Enhancements/randomizer/item.h index 17dcf6d5b..36de27a3d 100644 --- a/soh/soh/Enhancements/randomizer/item.h +++ b/soh/soh/Enhancements/randomizer/item.h @@ -37,7 +37,7 @@ class Item { RandomizerHintTextKey hintKey_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, uint16_t price_ = 0); Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, - RandomizerHintTextKey hintKey_, uint16_t price_ = 0); + RandomizerHintTextKey hintKey_, uint16_t price_ = 0); ~Item(); void ApplyEffect() const; From 50cfa58bdc68f8d99602c08a640ed74c120235c5 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Thu, 24 Apr 2025 17:38:24 +0100 Subject: [PATCH 18/24] fix progressives having a price --- soh/soh/Enhancements/randomizer/item_list.cpp | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index dd53a5662..b879d8040 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -57,19 +57,19 @@ void Rando::StaticData::InitItemTable() { // Skulltula Token itemTable[RG_GOLD_SKULLTULA_TOKEN] = Item(RG_GOLD_SKULLTULA_TOKEN, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, true, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULLTULA_TOKEN, MOD_NONE); // Progressive Items - itemTable[RG_PROGRESSIVE_HOOKSHOT] = Item(RG_PROGRESSIVE_HOOKSHOT, ITEMTYPE_ITEM, 0x80, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_PROGRESSIVE_HOOKSHOT, true); - itemTable[RG_PROGRESSIVE_STRENGTH] = Item(RG_PROGRESSIVE_STRENGTH, ITEMTYPE_ITEM, 0x81, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_PROGRESSIVE_STRENGTH, true); - itemTable[RG_PROGRESSIVE_BOMB_BAG] = Item(RG_PROGRESSIVE_BOMB_BAG, ITEMTYPE_ITEM, 0x82, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_PROGRESSIVE_BOMB_BAG, true); - itemTable[RG_PROGRESSIVE_BOW] = Item(RG_PROGRESSIVE_BOW, ITEMTYPE_ITEM, 0x83, true, LOGIC_PROGRESSIVE_BOW, RHT_PROGRESSIVE_BOW, true); - itemTable[RG_PROGRESSIVE_SLINGSHOT] = Item(RG_PROGRESSIVE_SLINGSHOT, ITEMTYPE_ITEM, 0x84, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_PROGRESSIVE_SLINGSHOT, true); - itemTable[RG_PROGRESSIVE_WALLET] = Item(RG_PROGRESSIVE_WALLET, ITEMTYPE_ITEM, 0x85, true, LOGIC_PROGRESSIVE_WALLET, RHT_PROGRESSIVE_WALLET, true); - itemTable[RG_PROGRESSIVE_SCALE] = Item(RG_PROGRESSIVE_SCALE, ITEMTYPE_ITEM, 0x86, true, LOGIC_PROGRESSIVE_SCALE, RHT_PROGRESSIVE_SCALE, true); - itemTable[RG_PROGRESSIVE_NUT_BAG] = Item(RG_PROGRESSIVE_NUT_BAG, ITEMTYPE_ITEM, 0x87, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_PROGRESSIVE_NUT_UPGRADE, true); - itemTable[RG_PROGRESSIVE_STICK_BAG] = Item(RG_PROGRESSIVE_STICK_BAG, ITEMTYPE_ITEM, 0x88, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_PROGRESSIVE_STICK_UPGRADE, true); - itemTable[RG_PROGRESSIVE_BOMBCHUS] = Item(RG_PROGRESSIVE_BOMBCHUS, ITEMTYPE_ITEM, 0x89, true, LOGIC_BOMBCHUS, RHT_PROGRESSIVE_BOMBCHUS, true); - itemTable[RG_PROGRESSIVE_MAGIC] = Item(RG_PROGRESSIVE_MAGIC, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_PROGRESSIVE_MAGIC_METER, true); - itemTable[RG_PROGRESSIVE_OCARINA] = Item(RG_PROGRESSIVE_OCARINA, ITEMTYPE_ITEM, 0x8B, true, LOGIC_PROGRESSIVE_OCARINA, RHT_PROGRESSIVE_OCARINA, true); - itemTable[RG_PROGRESSIVE_GORONSWORD] = Item(RG_PROGRESSIVE_GORONSWORD, ITEMTYPE_ITEM, 0xD4, true, LOGIC_PROGRESSIVE_GORONSWORD, RHT_PROGRESSIVE_GORONSWORD, true); + itemTable[RG_PROGRESSIVE_HOOKSHOT] = Item(RG_PROGRESSIVE_HOOKSHOT, ITEMTYPE_ITEM, 0x80, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_PROGRESSIVE_HOOKSHOT); + itemTable[RG_PROGRESSIVE_STRENGTH] = Item(RG_PROGRESSIVE_STRENGTH, ITEMTYPE_ITEM, 0x81, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_PROGRESSIVE_STRENGTH); + itemTable[RG_PROGRESSIVE_BOMB_BAG] = Item(RG_PROGRESSIVE_BOMB_BAG, ITEMTYPE_ITEM, 0x82, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_PROGRESSIVE_BOMB_BAG); + itemTable[RG_PROGRESSIVE_BOW] = Item(RG_PROGRESSIVE_BOW, ITEMTYPE_ITEM, 0x83, true, LOGIC_PROGRESSIVE_BOW, RHT_PROGRESSIVE_BOW); + itemTable[RG_PROGRESSIVE_SLINGSHOT] = Item(RG_PROGRESSIVE_SLINGSHOT, ITEMTYPE_ITEM, 0x84, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_PROGRESSIVE_SLINGSHOT); + itemTable[RG_PROGRESSIVE_WALLET] = Item(RG_PROGRESSIVE_WALLET, ITEMTYPE_ITEM, 0x85, true, LOGIC_PROGRESSIVE_WALLET, RHT_PROGRESSIVE_WALLET); + itemTable[RG_PROGRESSIVE_SCALE] = Item(RG_PROGRESSIVE_SCALE, ITEMTYPE_ITEM, 0x86, true, LOGIC_PROGRESSIVE_SCALE, RHT_PROGRESSIVE_SCALE); + itemTable[RG_PROGRESSIVE_NUT_BAG] = Item(RG_PROGRESSIVE_NUT_BAG, ITEMTYPE_ITEM, 0x87, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_PROGRESSIVE_NUT_UPGRADE); + itemTable[RG_PROGRESSIVE_STICK_BAG] = Item(RG_PROGRESSIVE_STICK_BAG, ITEMTYPE_ITEM, 0x88, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_PROGRESSIVE_STICK_UPGRADE); + itemTable[RG_PROGRESSIVE_BOMBCHUS] = Item(RG_PROGRESSIVE_BOMBCHUS, ITEMTYPE_ITEM, 0x89, true, LOGIC_BOMBCHUS, RHT_PROGRESSIVE_BOMBCHUS); + itemTable[RG_PROGRESSIVE_MAGIC] = Item(RG_PROGRESSIVE_MAGIC, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_PROGRESSIVE_MAGIC_METER); + itemTable[RG_PROGRESSIVE_OCARINA] = Item(RG_PROGRESSIVE_OCARINA, ITEMTYPE_ITEM, 0x8B, true, LOGIC_PROGRESSIVE_OCARINA, RHT_PROGRESSIVE_OCARINA); + itemTable[RG_PROGRESSIVE_GORONSWORD] = Item(RG_PROGRESSIVE_GORONSWORD, ITEMTYPE_ITEM, 0xD4, true, LOGIC_PROGRESSIVE_GORONSWORD, RHT_PROGRESSIVE_GORONSWORD); // Bottles itemTable[RG_EMPTY_BOTTLE] = Item(RG_EMPTY_BOTTLE, ITEMTYPE_ITEM, GI_BOTTLE, true, LOGIC_BOTTLES, RHT_EMPTY_BOTTLE, ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); itemTable[RG_BOTTLE_WITH_MILK] = Item(RG_BOTTLE_WITH_MILK, ITEMTYPE_ITEM, GI_MILK_BOTTLE, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); @@ -383,7 +383,7 @@ void Rando::StaticData::InitItemTable() { itemTable[RG_GORONS_BRACELET] = Item(RG_GORONS_BRACELET, ITEMTYPE_ITEM, GI_BRACELET, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GORONS_BRACELET, ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); itemTable[RG_SILVER_GAUNTLETS] = Item(RG_SILVER_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_SILVER, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_SILVER_GAUNTLETS, ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); itemTable[RG_GOLDEN_GAUNTLETS] = Item(RG_GOLDEN_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_GOLD, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GOLDEN_GAUNTLETS, ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BRONZE_SCALE] = Item(RG_BRONZE_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_WALLET, RHT_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BRONZE_SCALE] = Item(RG_BRONZE_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_SCALE, RHT_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BRONZE_SCALE].SetCustomDrawFunc(Randomizer_DrawBronzeScale); itemTable[RG_SILVER_SCALE] = Item(RG_SILVER_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_SCALE, RHT_SILVER_SCALE, ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); itemTable[RG_GOLDEN_SCALE] = Item(RG_GOLDEN_SCALE, ITEMTYPE_ITEM, GI_SCALE_GOLDEN, true, LOGIC_PROGRESSIVE_SCALE, RHT_GOLDEN_SCALE, ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); From a0e2a234638106102098219ab1c38ab7f6bea3a8 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Thu, 24 Apr 2025 18:08:58 +0100 Subject: [PATCH 19/24] fix Triforce Hint Text --- .../randomizer/3drando/hint_list/hint_list_item.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index 87f5048a6..3ed16f9c8 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -2841,7 +2841,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a four legged friend", /*german*/"ein vierbeiniger Freund", /*french*/"un puissant animal")}); // /*spanish*/una amiga cuadrúpeda - hintTextTable[RG_TRIFORCE] = HintText(CustomMessage("the Triforce", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), + hintTextTable[RHT_TRIFORCE] = HintText(CustomMessage("the Triforce", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, CustomMessage("Triforce", "Triforce", "Triforce")); From b705fc2f454d510018c33951429313a8e4903a76 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Thu, 24 Apr 2025 18:15:08 +0100 Subject: [PATCH 20/24] small comment change --- soh/soh/Enhancements/randomizer/3drando/hint_list.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp index c598c6dec..f1e45b7c6 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp @@ -1001,7 +1001,7 @@ void StaticData::HintTable_Init() { hintTextTable[RHT_CASTLE_GROUNDS] = HintText(CustomMessage("the Castle Grounds", /*german*/ "Anlage von Schloß Hyrule", - /*french*/ "le Château d'Hyrule")); //RANDOTODO name differently to RHT_HYRULE_CASTLE + /*french*/ "le Château d'Hyrule")); //TRANSLATE_TODO name differently to RHT_HYRULE_CASTLE // /*spanish*/ hintTextTable[RHT_HYRULE_CASTLE] = HintText(CustomMessage("Hyrule Castle", From 343935cbc053d2721af903a590bd93b91e478653 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Mon, 28 Apr 2025 14:53:17 +0100 Subject: [PATCH 21/24] use a function to add items and avoid repeating the get --- .../3drando/hint_list/hint_list_item.cpp | 2 +- .../randomizer/3drando/item_pool.cpp | 2 +- soh/soh/Enhancements/randomizer/item.cpp | 32 +- soh/soh/Enhancements/randomizer/item.h | 6 +- soh/soh/Enhancements/randomizer/item_list.cpp | 575 +++++++++--------- .../location_access/overworld/kakariko.cpp | 2 +- soh/soh/Enhancements/randomizer/logic.cpp | 6 +- .../Enhancements/randomizer/randomizer.cpp | 2 +- .../Enhancements/randomizer/randomizerTypes.h | 44 +- .../randomizer/randomizer_item_tracker.cpp | 36 +- soh/soh/Enhancements/randomizer/static_data.h | 10 + 11 files changed, 357 insertions(+), 360 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index 3ed16f9c8..7998d8585 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -1720,7 +1720,7 @@ void StaticData::HintTable_Init_Item() { }, CustomMessage("Boss's House Key", "Schlüssel für das Haus des Chefs", "Clé de la Maison du Chef des Ouvriers")); - hintTextTable[RHT_GRANNYS_POTION_SHOP_KEY] = HintText(CustomMessage("Granny's Potion Shop's key"), + hintTextTable[RHT_GRANNYS_SHOP_KEY] = HintText(CustomMessage("Granny's Potion Shop's key"), { CustomMessage("an Overworld Key", /*german*/"ein Überwelt-Schlüssel", /*french*/"une clé de l'Overworld") // /*spanish*/una llave del mundo exterior diff --git a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp index f6433205d..5879996b0 100644 --- a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp @@ -957,7 +957,7 @@ void GenerateItemPool() { AddItemToPool(ItemPool, RG_KAK_BAZAAR_KEY); AddItemToPool(ItemPool, RG_KAK_POTION_SHOP_KEY); AddItemToPool(ItemPool, RG_BOSS_HOUSE_KEY); - AddItemToPool(ItemPool, RG_GRANNYS_POTION_SHOP_KEY); + AddItemToPool(ItemPool, RG_GRANNYS_SHOP_KEY); AddItemToPool(ItemPool, RG_SKULLTULA_HOUSE_KEY); AddItemToPool(ItemPool, RG_IMPAS_HOUSE_KEY); AddItemToPool(ItemPool, RG_WINDMILL_KEY); diff --git a/soh/soh/Enhancements/randomizer/item.cpp b/soh/soh/Enhancements/randomizer/item.cpp index c74dec613..704ab3372 100644 --- a/soh/soh/Enhancements/randomizer/item.cpp +++ b/soh/soh/Enhancements/randomizer/item.cpp @@ -14,12 +14,12 @@ namespace Rando { Item::Item() : randomizerGet(RG_NONE), type(ITEMTYPE_ITEM), getItemId(GI_NONE), advancement(false), hintKey(RHT_NONE), price(0) { } -Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, - LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t itemId_, const uint16_t objectId_, - const uint16_t gid_, const uint16_t textId_, const uint16_t field_, const int16_t chestAnimation_, +Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, LogicVal logicVal_, + const RandomizerHintTextKey hintKey_, const uint16_t itemId_, const uint16_t objectId_, const uint16_t gid_, + const uint16_t textId_, const uint16_t field_, const int16_t chestAnimation_, const GetItemCategory category_, const uint16_t modIndex_, const uint16_t price_) - : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), advancement(advancement_), logicVal(logicVal_), - hintKey(hintKey_), price(price_) { + : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), logicVal(logicVal_), hintKey(hintKey_), + price(price_) { if (modIndex_ == MOD_RANDOMIZER || getItemId > 0x7D) { giEntry = std::make_shared(GetItemEntry{ itemId_, field_, static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, @@ -33,12 +33,12 @@ Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16 } } -Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, - LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t objectId_, const uint16_t gid_, - const uint16_t textId_, const uint16_t field_, const int16_t chestAnimation_, - const GetItemCategory category_, const uint16_t modIndex_, const uint16_t price_) - : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), advancement(advancement_), logicVal(logicVal_), - hintKey(hintKey_), price(price_) { +Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, LogicVal logicVal_, + const RandomizerHintTextKey hintKey_, const uint16_t objectId_, const uint16_t gid_, const uint16_t textId_, + const uint16_t field_, const int16_t chestAnimation_, const GetItemCategory category_, + const uint16_t modIndex_, const uint16_t price_) + : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), logicVal(logicVal_), hintKey(hintKey_), + price(price_) { if (modIndex_ == MOD_RANDOMIZER || getItemId > 0x7D) { giEntry = std::make_shared( GetItemEntry{ static_cast(randomizerGet_), field_, @@ -54,10 +54,10 @@ Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16 } } -Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, const bool advancement_, - LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t price_) - : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), advancement(advancement_), logicVal(logicVal_), - hintKey(hintKey_), price(price_) { +Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, LogicVal logicVal_, + const RandomizerHintTextKey hintKey_, const uint16_t price_) + : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), logicVal(logicVal_), hintKey(hintKey_), + price(price_) { } Item::~Item() = default; @@ -79,7 +79,7 @@ const CustomMessage& Item::GetName() const { } bool Item::IsAdvancement() const { - return advancement; + return logicVal != LOGIC_NONE; } int Item::GetItemID() const { diff --git a/soh/soh/Enhancements/randomizer/item.h b/soh/soh/Enhancements/randomizer/item.h index 36de27a3d..92016bbe4 100644 --- a/soh/soh/Enhancements/randomizer/item.h +++ b/soh/soh/Enhancements/randomizer/item.h @@ -30,13 +30,13 @@ namespace Rando { class Item { public: Item(); - Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, + Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t itemId_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, uint16_t price_ = 0); - Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, + Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, uint16_t price_ = 0); - Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, bool advancement_, LogicVal logicVal_, + Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t price_ = 0); ~Item(); diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index b879d8040..0c1cedb63 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -9,397 +9,420 @@ using namespace Rando; std::array Rando::StaticData::itemTable; std::unordered_map Rando::StaticData::itemNameToEnum; +void Rando::StaticData::AddItem(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, + LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t itemId_, + const uint16_t objectId_, const uint16_t gid_, const uint16_t textId_, + const uint16_t field_, const int16_t chestAnimation_, const GetItemCategory category_, + const uint16_t modIndex_, const uint16_t price_) { + itemTable[randomizerGet_] = Item(randomizerGet_, type_, getItemId_, logicVal_, hintKey_, itemId_, objectId_, gid_, + textId_, field_, chestAnimation_, category_, modIndex_, price_); +} + +void Rando::StaticData::AddItem(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, + LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t objectId_, + const uint16_t gid_, const uint16_t textId_, const uint16_t field_, + const int16_t chestAnimation_, const GetItemCategory category_, + const uint16_t modIndex_, const uint16_t price_) { + itemTable[randomizerGet_] = Item(randomizerGet_, type_, getItemId_, logicVal_, hintKey_, objectId_, gid_, textId_, + field_, chestAnimation_, category_, modIndex_, price_); +} + +void Rando::StaticData::AddItem(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, + const LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t price_) { + itemTable[randomizerGet_] = Item(randomizerGet_, type_, getItemId_, logicVal_, hintKey_, price_); +} + void Rando::StaticData::InitItemTable() { // clang-format off - itemTable[RG_NONE] = Item(RG_NONE, ITEMTYPE_EVENT, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_NONE, ITEM_NONE, 0, 0, 0, 0, 0, ITEM_CATEGORY_JUNK, MOD_NONE); - // Randomizer Get Randomizer Get Type Get Item ID Adv. Logic Value Hint Text Key Item ID Object ID Draw ID Text ID field Chest Animation Item Category Mod Index - itemTable[RG_KOKIRI_SWORD] = Item(RG_KOKIRI_SWORD, ITEMTYPE_EQUIP, GI_SWORD_KOKIRI, true, LOGIC_KOKIRI_SWORD, RHT_KOKIRI_SWORD, ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MASTER_SWORD] = Item(RG_MASTER_SWORD, ITEMTYPE_EQUIP, 0xE0, true, LOGIC_MASTER_SWORD, RHT_MASTER_SWORD, ITEM_SWORD_MASTER, OBJECT_TOKI_OBJECTS, GID_SWORD_BGS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_NONE, ITEMTYPE_EVENT, GI_RUPEE_GREEN, LOGIC_NONE, RHT_NONE, ITEM_NONE, 0, 0, 0, 0, 0, ITEM_CATEGORY_JUNK, MOD_NONE); + // Randomizer Get Type Get Item ID Logic Value Hint Text Key Item ID Object ID Draw ID Text ID field Chest Animation Item Category Mod Index + AddItem(RG_KOKIRI_SWORD, ITEMTYPE_EQUIP, GI_SWORD_KOKIRI, LOGIC_KOKIRI_SWORD, RHT_KOKIRI_SWORD, ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_MASTER_SWORD, ITEMTYPE_EQUIP, 0xE0, LOGIC_MASTER_SWORD, RHT_MASTER_SWORD, ITEM_SWORD_MASTER, OBJECT_TOKI_OBJECTS, GID_SWORD_BGS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MASTER_SWORD].SetCustomDrawFunc(Randomizer_DrawMasterSword); - itemTable[RG_GIANTS_KNIFE] = Item(RG_GIANTS_KNIFE, ITEMTYPE_EQUIP, GI_SWORD_KNIFE, true, LOGIC_NONE, RHT_GIANTS_KNIFE, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x4B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIGGORON_SWORD] = Item(RG_BIGGORON_SWORD, ITEMTYPE_EQUIP, GI_SWORD_BGS, true, LOGIC_BIGGORON_SWORD, RHT_BIGGORON_SWORD, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x0C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_DEKU_SHIELD] = Item(RG_DEKU_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_DEKU, false, LOGIC_DEKU_SHIELD, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_HYLIAN_SHIELD] = Item(RG_HYLIAN_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_HYLIAN, false, LOGIC_HYLIAN_SHIELD, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_MIRROR_SHIELD] = Item(RG_MIRROR_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_MIRROR, true, LOGIC_MIRROR_SHIELD, RHT_MIRROR_SHIELD, ITEM_SHIELD_MIRROR, OBJECT_GI_SHIELD_3, GID_SHIELD_MIRROR, 0x4E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GORON_TUNIC] = Item(RG_GORON_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_ZORA_TUNIC] = Item(RG_ZORA_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_IRON_BOOTS] = Item(RG_IRON_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_IRON, true, LOGIC_IRON_BOOTS, RHT_IRON_BOOTS, ITEM_BOOTS_IRON, OBJECT_GI_BOOTS_2, GID_BOOTS_IRON, 0x53, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_HOVER_BOOTS] = Item(RG_HOVER_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_HOVER, true, LOGIC_HOVER_BOOTS, RHT_HOVER_BOOTS, ITEM_BOOTS_HOVER, OBJECT_GI_HOVERBOOTS, GID_BOOTS_HOVER, 0x54, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOOMERANG] = Item(RG_BOOMERANG, ITEMTYPE_ITEM, GI_BOOMERANG, true, LOGIC_BOOMERANG, RHT_BOOMERANG, ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LENS_OF_TRUTH] = Item(RG_LENS_OF_TRUTH, ITEMTYPE_ITEM, GI_LENS, true, LOGIC_LENS_OF_TRUTH, RHT_LENS_OF_TRUTH, ITEM_LENS, OBJECT_GI_GLASSES, GID_LENS, 0x39, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MEGATON_HAMMER] = Item(RG_MEGATON_HAMMER, ITEMTYPE_ITEM, GI_HAMMER, true, LOGIC_HAMMER, RHT_MEGATON_HAMMER, ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_STONE_OF_AGONY] = Item(RG_STONE_OF_AGONY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_STONE_OF_AGONY, RHT_STONE_OF_AGONY, ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_DINS_FIRE] = Item(RG_DINS_FIRE, ITEMTYPE_ITEM, GI_DINS_FIRE, true, LOGIC_DINS_FIRE, RHT_DINS_FIRE, ITEM_DINS_FIRE, OBJECT_GI_GODDESS, GID_DINS_FIRE, 0xAD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FARORES_WIND] = Item(RG_FARORES_WIND, ITEMTYPE_ITEM, GI_FARORES_WIND, true, LOGIC_FARORES_WIND, RHT_FARORES_WIND, ITEM_FARORES_WIND, OBJECT_GI_GODDESS, GID_FARORES_WIND, 0xAE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_NAYRUS_LOVE] = Item(RG_NAYRUS_LOVE, ITEMTYPE_ITEM, GI_NAYRUS_LOVE, true, LOGIC_NAYRUS_LOVE, RHT_NAYRUS_LOVE, ITEM_NAYRUS_LOVE, OBJECT_GI_GODDESS, GID_NAYRUS_LOVE, 0xAF, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FIRE_ARROWS] = Item(RG_FIRE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_FIRE, true, LOGIC_FIRE_ARROWS, RHT_FIRE_ARROWS, ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ICE_ARROWS] = Item(RG_ICE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_ICE, true, LOGIC_ICE_ARROWS, RHT_ICE_ARROWS, ITEM_ARROW_ICE, OBJECT_GI_M_ARROW, GID_ARROW_ICE, 0x71, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LIGHT_ARROWS] = Item(RG_LIGHT_ARROWS, ITEMTYPE_ITEM, GI_ARROW_LIGHT, true, LOGIC_LIGHT_ARROWS, RHT_LIGHT_ARROWS, ITEM_ARROW_LIGHT, OBJECT_GI_M_ARROW, GID_ARROW_LIGHT, 0x72, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GERUDO_MEMBERSHIP_CARD] = Item(RG_GERUDO_MEMBERSHIP_CARD, ITEMTYPE_ITEM, GI_GERUDO_CARD, true, LOGIC_GERUDO_CARD, RHT_GERUDO_MEMBERSHIP_CARD, ITEM_GERUDO_CARD, OBJECT_GI_GERUDO, GID_GERUDO_CARD, 0x7B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MAGIC_BEAN] = Item(RG_MAGIC_BEAN, ITEMTYPE_ITEM, GI_BEAN, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN, ITEM_BEAN, OBJECT_GI_BEAN, GID_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MAGIC_BEAN_PACK] = Item(RG_MAGIC_BEAN_PACK, ITEMTYPE_ITEM, RG_MAGIC_BEAN_PACK, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN_PACK, OBJECT_GI_BEAN, GID_BEAN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_DOUBLE_DEFENSE] = Item(RG_DOUBLE_DEFENSE, ITEMTYPE_ITEM, RG_DOUBLE_DEFENSE, true, LOGIC_DOUBLE_DEFENSE, RHT_DOUBLE_DEFENSE, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xE9, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_GIANTS_KNIFE, ITEMTYPE_EQUIP, GI_SWORD_KNIFE, LOGIC_NONE, RHT_GIANTS_KNIFE, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x4B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BIGGORON_SWORD, ITEMTYPE_EQUIP, GI_SWORD_BGS, LOGIC_BIGGORON_SWORD, RHT_BIGGORON_SWORD, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x0C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_DEKU_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_DEKU, LOGIC_NONE, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_HYLIAN_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_HYLIAN, LOGIC_NONE, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_MIRROR_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_MIRROR, LOGIC_MIRROR_SHIELD, RHT_MIRROR_SHIELD, ITEM_SHIELD_MIRROR, OBJECT_GI_SHIELD_3, GID_SHIELD_MIRROR, 0x4E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_GORON_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_GORON, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_ZORA_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_ZORA, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_IRON_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_IRON, LOGIC_IRON_BOOTS, RHT_IRON_BOOTS, ITEM_BOOTS_IRON, OBJECT_GI_BOOTS_2, GID_BOOTS_IRON, 0x53, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_HOVER_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_HOVER, LOGIC_HOVER_BOOTS, RHT_HOVER_BOOTS, ITEM_BOOTS_HOVER, OBJECT_GI_HOVERBOOTS, GID_BOOTS_HOVER, 0x54, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BOOMERANG, ITEMTYPE_ITEM, GI_BOOMERANG, LOGIC_BOOMERANG, RHT_BOOMERANG, ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_LENS_OF_TRUTH, ITEMTYPE_ITEM, GI_LENS, LOGIC_LENS_OF_TRUTH, RHT_LENS_OF_TRUTH, ITEM_LENS, OBJECT_GI_GLASSES, GID_LENS, 0x39, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_MEGATON_HAMMER, ITEMTYPE_ITEM, GI_HAMMER, LOGIC_HAMMER, RHT_MEGATON_HAMMER, ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_STONE_OF_AGONY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, LOGIC_STONE_OF_AGONY, RHT_STONE_OF_AGONY, ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_DINS_FIRE, ITEMTYPE_ITEM, GI_DINS_FIRE, LOGIC_DINS_FIRE, RHT_DINS_FIRE, ITEM_DINS_FIRE, OBJECT_GI_GODDESS, GID_DINS_FIRE, 0xAD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_FARORES_WIND, ITEMTYPE_ITEM, GI_FARORES_WIND, LOGIC_FARORES_WIND, RHT_FARORES_WIND, ITEM_FARORES_WIND, OBJECT_GI_GODDESS, GID_FARORES_WIND, 0xAE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_NAYRUS_LOVE, ITEMTYPE_ITEM, GI_NAYRUS_LOVE, LOGIC_NAYRUS_LOVE, RHT_NAYRUS_LOVE, ITEM_NAYRUS_LOVE, OBJECT_GI_GODDESS, GID_NAYRUS_LOVE, 0xAF, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_FIRE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_FIRE, LOGIC_FIRE_ARROWS, RHT_FIRE_ARROWS, ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_ICE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_ICE, LOGIC_ICE_ARROWS, RHT_ICE_ARROWS, ITEM_ARROW_ICE, OBJECT_GI_M_ARROW, GID_ARROW_ICE, 0x71, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_LIGHT_ARROWS, ITEMTYPE_ITEM, GI_ARROW_LIGHT, LOGIC_LIGHT_ARROWS, RHT_LIGHT_ARROWS, ITEM_ARROW_LIGHT, OBJECT_GI_M_ARROW, GID_ARROW_LIGHT, 0x72, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_GERUDO_MEMBERSHIP_CARD, ITEMTYPE_ITEM, GI_GERUDO_CARD, LOGIC_GERUDO_CARD, RHT_GERUDO_MEMBERSHIP_CARD, ITEM_GERUDO_CARD, OBJECT_GI_GERUDO, GID_GERUDO_CARD, 0x7B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_MAGIC_BEAN, ITEMTYPE_ITEM, GI_BEAN, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN, ITEM_BEAN, OBJECT_GI_BEAN, GID_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_MAGIC_BEAN_PACK, ITEMTYPE_ITEM, RG_MAGIC_BEAN_PACK, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN_PACK, OBJECT_GI_BEAN, GID_BEAN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_DOUBLE_DEFENSE, ITEMTYPE_ITEM, RG_DOUBLE_DEFENSE, LOGIC_DOUBLE_DEFENSE, RHT_DOUBLE_DEFENSE, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xE9, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DOUBLE_DEFENSE].SetCustomDrawFunc(Randomizer_DrawDoubleDefense); // Trade Quest Items - itemTable[RG_WEIRD_EGG] = Item(RG_WEIRD_EGG, ITEMTYPE_ITEM, GI_WEIRD_EGG, true, LOGIC_WEIRD_EGG, RHT_WEIRD_EGG, ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ZELDAS_LETTER] = Item(RG_ZELDAS_LETTER, ITEMTYPE_ITEM, GI_LETTER_ZELDA, true, LOGIC_ZELDAS_LETTER, RHT_ZELDAS_LETTER, ITEM_LETTER_ZELDA, OBJECT_GI_LETTER, GID_LETTER_ZELDA, 0x69, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_POCKET_EGG] = Item(RG_POCKET_EGG, ITEMTYPE_ITEM, GI_POCKET_EGG, true, LOGIC_POCKET_EGG, RHT_POCKET_EGG, ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_COJIRO] = Item(RG_COJIRO, ITEMTYPE_ITEM, GI_COJIRO, true, LOGIC_COJIRO, RHT_COJIRO, ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ODD_MUSHROOM] = Item(RG_ODD_MUSHROOM, ITEMTYPE_ITEM, GI_ODD_MUSHROOM, true, LOGIC_ODD_MUSHROOM, RHT_ODD_MUSHROOM, ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ODD_POTION] = Item(RG_ODD_POTION, ITEMTYPE_ITEM, GI_ODD_POTION, true, LOGIC_ODD_POULTICE, RHT_ODD_POTION, ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_POACHERS_SAW] = Item(RG_POACHERS_SAW, ITEMTYPE_ITEM, GI_SAW, true, LOGIC_POACHERS_SAW, RHT_POACHERS_SAW, ITEM_SAW, OBJECT_GI_SAW, GID_SAW, 0x05, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BROKEN_SWORD] = Item(RG_BROKEN_SWORD, ITEMTYPE_ITEM, GI_SWORD_BROKEN, true, LOGIC_BROKEN_SWORD, RHT_BROKEN_SWORD, ITEM_SWORD_BROKEN, OBJECT_GI_BROKENSWORD, GID_SWORD_BROKEN, 0x08, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_PRESCRIPTION] = Item(RG_PRESCRIPTION, ITEMTYPE_ITEM, GI_PRESCRIPTION, true, LOGIC_PRESCRIPTION, RHT_PRESCRIPTION, ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_EYEBALL_FROG] = Item(RG_EYEBALL_FROG, ITEMTYPE_ITEM, GI_FROG, true, LOGIC_EYEBALL_FROG, RHT_EYEBALL_FROG, ITEM_FROG, OBJECT_GI_FROG, GID_FROG, 0x0D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_EYEDROPS] = Item(RG_EYEDROPS, ITEMTYPE_ITEM, GI_EYEDROPS, true, LOGIC_EYEDROPS, RHT_EYEDROPS, ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_CLAIM_CHECK] = Item(RG_CLAIM_CHECK, ITEMTYPE_ITEM, GI_CLAIM_CHECK, true, LOGIC_CLAIM_CHECK, RHT_CLAIM_CHECK, ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_WEIRD_EGG, ITEMTYPE_ITEM, GI_WEIRD_EGG, LOGIC_WEIRD_EGG, RHT_WEIRD_EGG, ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_ZELDAS_LETTER, ITEMTYPE_ITEM, GI_LETTER_ZELDA, LOGIC_ZELDAS_LETTER, RHT_ZELDAS_LETTER, ITEM_LETTER_ZELDA, OBJECT_GI_LETTER, GID_LETTER_ZELDA, 0x69, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_POCKET_EGG, ITEMTYPE_ITEM, GI_POCKET_EGG, LOGIC_POCKET_EGG, RHT_POCKET_EGG, ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_COJIRO, ITEMTYPE_ITEM, GI_COJIRO, LOGIC_COJIRO, RHT_COJIRO, ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_ODD_MUSHROOM, ITEMTYPE_ITEM, GI_ODD_MUSHROOM, LOGIC_ODD_MUSHROOM, RHT_ODD_MUSHROOM, ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_ODD_POTION, ITEMTYPE_ITEM, GI_ODD_POTION, LOGIC_ODD_POULTICE, RHT_ODD_POTION, ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_POACHERS_SAW, ITEMTYPE_ITEM, GI_SAW, LOGIC_POACHERS_SAW, RHT_POACHERS_SAW, ITEM_SAW, OBJECT_GI_SAW, GID_SAW, 0x05, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BROKEN_SWORD, ITEMTYPE_ITEM, GI_SWORD_BROKEN, LOGIC_BROKEN_SWORD, RHT_BROKEN_SWORD, ITEM_SWORD_BROKEN, OBJECT_GI_BROKENSWORD, GID_SWORD_BROKEN, 0x08, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_PRESCRIPTION, ITEMTYPE_ITEM, GI_PRESCRIPTION, LOGIC_PRESCRIPTION, RHT_PRESCRIPTION, ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_EYEBALL_FROG, ITEMTYPE_ITEM, GI_FROG, LOGIC_EYEBALL_FROG, RHT_EYEBALL_FROG, ITEM_FROG, OBJECT_GI_FROG, GID_FROG, 0x0D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_EYEDROPS, ITEMTYPE_ITEM, GI_EYEDROPS, LOGIC_EYEDROPS, RHT_EYEDROPS, ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_CLAIM_CHECK, ITEMTYPE_ITEM, GI_CLAIM_CHECK, LOGIC_CLAIM_CHECK, RHT_CLAIM_CHECK, ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Skulltula Token - itemTable[RG_GOLD_SKULLTULA_TOKEN] = Item(RG_GOLD_SKULLTULA_TOKEN, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, true, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULLTULA_TOKEN, MOD_NONE); + AddItem(RG_GOLD_SKULLTULA_TOKEN, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULLTULA_TOKEN, MOD_NONE); // Progressive Items - itemTable[RG_PROGRESSIVE_HOOKSHOT] = Item(RG_PROGRESSIVE_HOOKSHOT, ITEMTYPE_ITEM, 0x80, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_PROGRESSIVE_HOOKSHOT); - itemTable[RG_PROGRESSIVE_STRENGTH] = Item(RG_PROGRESSIVE_STRENGTH, ITEMTYPE_ITEM, 0x81, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_PROGRESSIVE_STRENGTH); - itemTable[RG_PROGRESSIVE_BOMB_BAG] = Item(RG_PROGRESSIVE_BOMB_BAG, ITEMTYPE_ITEM, 0x82, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_PROGRESSIVE_BOMB_BAG); - itemTable[RG_PROGRESSIVE_BOW] = Item(RG_PROGRESSIVE_BOW, ITEMTYPE_ITEM, 0x83, true, LOGIC_PROGRESSIVE_BOW, RHT_PROGRESSIVE_BOW); - itemTable[RG_PROGRESSIVE_SLINGSHOT] = Item(RG_PROGRESSIVE_SLINGSHOT, ITEMTYPE_ITEM, 0x84, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_PROGRESSIVE_SLINGSHOT); - itemTable[RG_PROGRESSIVE_WALLET] = Item(RG_PROGRESSIVE_WALLET, ITEMTYPE_ITEM, 0x85, true, LOGIC_PROGRESSIVE_WALLET, RHT_PROGRESSIVE_WALLET); - itemTable[RG_PROGRESSIVE_SCALE] = Item(RG_PROGRESSIVE_SCALE, ITEMTYPE_ITEM, 0x86, true, LOGIC_PROGRESSIVE_SCALE, RHT_PROGRESSIVE_SCALE); - itemTable[RG_PROGRESSIVE_NUT_BAG] = Item(RG_PROGRESSIVE_NUT_BAG, ITEMTYPE_ITEM, 0x87, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_PROGRESSIVE_NUT_UPGRADE); - itemTable[RG_PROGRESSIVE_STICK_BAG] = Item(RG_PROGRESSIVE_STICK_BAG, ITEMTYPE_ITEM, 0x88, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_PROGRESSIVE_STICK_UPGRADE); - itemTable[RG_PROGRESSIVE_BOMBCHUS] = Item(RG_PROGRESSIVE_BOMBCHUS, ITEMTYPE_ITEM, 0x89, true, LOGIC_BOMBCHUS, RHT_PROGRESSIVE_BOMBCHUS); - itemTable[RG_PROGRESSIVE_MAGIC] = Item(RG_PROGRESSIVE_MAGIC, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_PROGRESSIVE_MAGIC_METER); - itemTable[RG_PROGRESSIVE_OCARINA] = Item(RG_PROGRESSIVE_OCARINA, ITEMTYPE_ITEM, 0x8B, true, LOGIC_PROGRESSIVE_OCARINA, RHT_PROGRESSIVE_OCARINA); - itemTable[RG_PROGRESSIVE_GORONSWORD] = Item(RG_PROGRESSIVE_GORONSWORD, ITEMTYPE_ITEM, 0xD4, true, LOGIC_PROGRESSIVE_GORONSWORD, RHT_PROGRESSIVE_GORONSWORD); + AddItem(RG_PROGRESSIVE_HOOKSHOT, ITEMTYPE_ITEM, 0x80, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_PROGRESSIVE_HOOKSHOT); + AddItem(RG_PROGRESSIVE_STRENGTH, ITEMTYPE_ITEM, 0x81, LOGIC_PROGRESSIVE_STRENGTH, RHT_PROGRESSIVE_STRENGTH); + AddItem(RG_PROGRESSIVE_BOMB_BAG, ITEMTYPE_ITEM, 0x82, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_PROGRESSIVE_BOMB_BAG); + AddItem(RG_PROGRESSIVE_BOW, ITEMTYPE_ITEM, 0x83, LOGIC_PROGRESSIVE_BOW, RHT_PROGRESSIVE_BOW); + AddItem(RG_PROGRESSIVE_SLINGSHOT, ITEMTYPE_ITEM, 0x84, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_PROGRESSIVE_SLINGSHOT); + AddItem(RG_PROGRESSIVE_WALLET, ITEMTYPE_ITEM, 0x85, LOGIC_PROGRESSIVE_WALLET, RHT_PROGRESSIVE_WALLET); + AddItem(RG_PROGRESSIVE_SCALE, ITEMTYPE_ITEM, 0x86, LOGIC_PROGRESSIVE_SCALE, RHT_PROGRESSIVE_SCALE); + AddItem(RG_PROGRESSIVE_NUT_BAG, ITEMTYPE_ITEM, 0x87, LOGIC_PROGRESSIVE_NUT_BAG, RHT_PROGRESSIVE_NUT_UPGRADE); + AddItem(RG_PROGRESSIVE_STICK_BAG, ITEMTYPE_ITEM, 0x88, LOGIC_PROGRESSIVE_STICK_BAG, RHT_PROGRESSIVE_STICK_UPGRADE); + AddItem(RG_PROGRESSIVE_BOMBCHUS, ITEMTYPE_ITEM, 0x89, LOGIC_BOMBCHUS, RHT_PROGRESSIVE_BOMBCHUS); + AddItem(RG_PROGRESSIVE_MAGIC, ITEMTYPE_ITEM, 0x8A, LOGIC_PROGRESSIVE_MAGIC, RHT_PROGRESSIVE_MAGIC_METER); + AddItem(RG_PROGRESSIVE_OCARINA, ITEMTYPE_ITEM, 0x8B, LOGIC_PROGRESSIVE_OCARINA, RHT_PROGRESSIVE_OCARINA); + AddItem(RG_PROGRESSIVE_GORONSWORD, ITEMTYPE_ITEM, 0xD4, LOGIC_PROGRESSIVE_GORONSWORD, RHT_PROGRESSIVE_GORONSWORD); // Bottles - itemTable[RG_EMPTY_BOTTLE] = Item(RG_EMPTY_BOTTLE, ITEMTYPE_ITEM, GI_BOTTLE, true, LOGIC_BOTTLES, RHT_EMPTY_BOTTLE, ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOTTLE_WITH_MILK] = Item(RG_BOTTLE_WITH_MILK, ITEMTYPE_ITEM, GI_MILK_BOTTLE, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOTTLE_WITH_RED_POTION] = Item(RG_BOTTLE_WITH_RED_POTION, ITEMTYPE_ITEM, 0x8C, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_RED_POTION, OBJECT_GI_LIQUID, GID_POTION_RED, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_GREEN_POTION] = Item(RG_BOTTLE_WITH_GREEN_POTION, ITEMTYPE_ITEM, 0x8D, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_GREEN_POTION, OBJECT_GI_LIQUID, GID_POTION_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_BLUE_POTION] = Item(RG_BOTTLE_WITH_BLUE_POTION, ITEMTYPE_ITEM, 0x8E, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_POTION, OBJECT_GI_LIQUID, GID_POTION_BLUE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_FAIRY] = Item(RG_BOTTLE_WITH_FAIRY, ITEMTYPE_ITEM, 0x8F, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_FISH] = Item(RG_BOTTLE_WITH_FISH, ITEMTYPE_ITEM, 0x90, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FISH, OBJECT_GI_FISH, GID_FISH, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_BLUE_FIRE] = Item(RG_BOTTLE_WITH_BLUE_FIRE, ITEMTYPE_ITEM, 0x91, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_BUGS] = Item(RG_BOTTLE_WITH_BUGS, ITEMTYPE_ITEM, 0x92, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BUGS, OBJECT_GI_INSECT, GID_BUG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_POE] = Item(RG_BOTTLE_WITH_POE, ITEMTYPE_ITEM, 0x94, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_RUTOS_LETTER] = Item(RG_RUTOS_LETTER, ITEMTYPE_ITEM, GI_LETTER_RUTO, true, LOGIC_RUTOS_LETTER, RHT_RUTOS_LETTER, ITEM_LETTER_RUTO, OBJECT_GI_BOTTLE_LETTER, GID_LETTER_RUTO, 0x99, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOTTLE_WITH_BIG_POE] = Item(RG_BOTTLE_WITH_BIG_POE, ITEMTYPE_ITEM, 0x93, true, LOGIC_BOTTLE_WITH_BIG_POE, RHT_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_EMPTY_BOTTLE, ITEMTYPE_ITEM, GI_BOTTLE, LOGIC_BOTTLES, RHT_EMPTY_BOTTLE, ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BOTTLE_WITH_MILK, ITEMTYPE_ITEM, GI_MILK_BOTTLE, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BOTTLE_WITH_RED_POTION, ITEMTYPE_ITEM, 0x8C, LOGIC_BOTTLES, RHT_BOTTLE_WITH_RED_POTION, OBJECT_GI_LIQUID, GID_POTION_RED, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_GREEN_POTION, ITEMTYPE_ITEM, 0x8D, LOGIC_BOTTLES, RHT_BOTTLE_WITH_GREEN_POTION, OBJECT_GI_LIQUID, GID_POTION_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_BLUE_POTION, ITEMTYPE_ITEM, 0x8E, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_POTION, OBJECT_GI_LIQUID, GID_POTION_BLUE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_FAIRY, ITEMTYPE_ITEM, 0x8F, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_FISH, ITEMTYPE_ITEM, 0x90, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FISH, OBJECT_GI_FISH, GID_FISH, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_BLUE_FIRE, ITEMTYPE_ITEM, 0x91, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_BUGS, ITEMTYPE_ITEM, 0x92, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BUGS, OBJECT_GI_INSECT, GID_BUG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_POE, ITEMTYPE_ITEM, 0x94, LOGIC_BOTTLES, RHT_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_RUTOS_LETTER, ITEMTYPE_ITEM, GI_LETTER_RUTO, LOGIC_RUTOS_LETTER, RHT_RUTOS_LETTER, ITEM_LETTER_RUTO, OBJECT_GI_BOTTLE_LETTER, GID_LETTER_RUTO, 0x99, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BOTTLE_WITH_BIG_POE, ITEMTYPE_ITEM, 0x93, LOGIC_BOTTLE_WITH_BIG_POE, RHT_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); // Songs - itemTable[RG_ZELDAS_LULLABY] = Item(RG_ZELDAS_LULLABY, ITEMTYPE_SONG, 0xC1, true, LOGIC_ZELDAS_LULLABY, RHT_ZELDAS_LULLABY, ITEM_SONG_LULLABY, OBJECT_GI_MELODY, GID_SONG_ZELDA, 0xD4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_EPONAS_SONG] = Item(RG_EPONAS_SONG, ITEMTYPE_SONG, 0xC2, true, LOGIC_EPONAS_SONG, RHT_EPONAS_SONG, ITEM_SONG_EPONA, OBJECT_GI_MELODY, GID_SONG_EPONA, 0xD2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SARIAS_SONG] = Item(RG_SARIAS_SONG, ITEMTYPE_SONG, 0xC3, true, LOGIC_SARIAS_SONG, RHT_SARIAS_SONG, ITEM_SONG_SARIA, OBJECT_GI_MELODY, GID_SONG_SARIA, 0xD1, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SUNS_SONG] = Item(RG_SUNS_SONG, ITEMTYPE_SONG, 0xC4, true, LOGIC_SUNS_SONG, RHT_SUNS_SONG, ITEM_SONG_SUN, OBJECT_GI_MELODY, GID_SONG_SUN, 0xD3, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SONG_OF_TIME] = Item(RG_SONG_OF_TIME, ITEMTYPE_SONG, 0xC5, true, LOGIC_SONG_OF_TIME, RHT_SONG_OF_TIME, ITEM_SONG_TIME, OBJECT_GI_MELODY, GID_SONG_TIME, 0xD5, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SONG_OF_STORMS] = Item(RG_SONG_OF_STORMS, ITEMTYPE_SONG, 0xC6, true, LOGIC_SONG_OF_STORMS, RHT_SONG_OF_STORMS, ITEM_SONG_STORMS, OBJECT_GI_MELODY, GID_SONG_STORM, 0xD6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MINUET_OF_FOREST] = Item(RG_MINUET_OF_FOREST, ITEMTYPE_SONG, 0xBB, true, LOGIC_MINUET_OF_FOREST, RHT_MINUET_OF_FOREST, ITEM_SONG_MINUET, OBJECT_GI_MELODY, GID_SONG_MINUET, 0x73, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOLERO_OF_FIRE] = Item(RG_BOLERO_OF_FIRE, ITEMTYPE_SONG, 0xBC, true, LOGIC_BOLERO_OF_FIRE, RHT_BOLERO_OF_FIRE, ITEM_SONG_BOLERO, OBJECT_GI_MELODY, GID_SONG_BOLERO, 0x74, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SERENADE_OF_WATER] = Item(RG_SERENADE_OF_WATER, ITEMTYPE_SONG, 0xBD, true, LOGIC_SERENADE_OF_WATER, RHT_SERENADE_OF_WATER, ITEM_SONG_SERENADE, OBJECT_GI_MELODY, GID_SONG_SERENADE, 0x75, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_NOCTURNE_OF_SHADOW] = Item(RG_NOCTURNE_OF_SHADOW, ITEMTYPE_SONG, 0xBF, true, LOGIC_NOCTURNE_OF_SHADOW, RHT_NOCTURNE_OF_SHADOW, ITEM_SONG_NOCTURNE, OBJECT_GI_MELODY, GID_SONG_NOCTURNE, 0x77, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_REQUIEM_OF_SPIRIT] = Item(RG_REQUIEM_OF_SPIRIT, ITEMTYPE_SONG, 0xBE, true, LOGIC_REQUIEM_OF_SPIRIT, RHT_REQUIEM_OF_SPIRIT, ITEM_SONG_REQUIEM, OBJECT_GI_MELODY, GID_SONG_REQUIEM, 0x76, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_PRELUDE_OF_LIGHT] = Item(RG_PRELUDE_OF_LIGHT, ITEMTYPE_SONG, 0xC0, true, LOGIC_PRELUDE_OF_LIGHT, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_ZELDAS_LULLABY, ITEMTYPE_SONG, 0xC1, LOGIC_ZELDAS_LULLABY, RHT_ZELDAS_LULLABY, ITEM_SONG_LULLABY, OBJECT_GI_MELODY, GID_SONG_ZELDA, 0xD4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_EPONAS_SONG, ITEMTYPE_SONG, 0xC2, LOGIC_EPONAS_SONG, RHT_EPONAS_SONG, ITEM_SONG_EPONA, OBJECT_GI_MELODY, GID_SONG_EPONA, 0xD2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SARIAS_SONG, ITEMTYPE_SONG, 0xC3, LOGIC_SARIAS_SONG, RHT_SARIAS_SONG, ITEM_SONG_SARIA, OBJECT_GI_MELODY, GID_SONG_SARIA, 0xD1, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SUNS_SONG, ITEMTYPE_SONG, 0xC4, LOGIC_SUNS_SONG, RHT_SUNS_SONG, ITEM_SONG_SUN, OBJECT_GI_MELODY, GID_SONG_SUN, 0xD3, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SONG_OF_TIME, ITEMTYPE_SONG, 0xC5, LOGIC_SONG_OF_TIME, RHT_SONG_OF_TIME, ITEM_SONG_TIME, OBJECT_GI_MELODY, GID_SONG_TIME, 0xD5, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SONG_OF_STORMS, ITEMTYPE_SONG, 0xC6, LOGIC_SONG_OF_STORMS, RHT_SONG_OF_STORMS, ITEM_SONG_STORMS, OBJECT_GI_MELODY, GID_SONG_STORM, 0xD6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_MINUET_OF_FOREST, ITEMTYPE_SONG, 0xBB, LOGIC_MINUET_OF_FOREST, RHT_MINUET_OF_FOREST, ITEM_SONG_MINUET, OBJECT_GI_MELODY, GID_SONG_MINUET, 0x73, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BOLERO_OF_FIRE, ITEMTYPE_SONG, 0xBC, LOGIC_BOLERO_OF_FIRE, RHT_BOLERO_OF_FIRE, ITEM_SONG_BOLERO, OBJECT_GI_MELODY, GID_SONG_BOLERO, 0x74, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SERENADE_OF_WATER, ITEMTYPE_SONG, 0xBD, LOGIC_SERENADE_OF_WATER, RHT_SERENADE_OF_WATER, ITEM_SONG_SERENADE, OBJECT_GI_MELODY, GID_SONG_SERENADE, 0x75, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_NOCTURNE_OF_SHADOW, ITEMTYPE_SONG, 0xBF, LOGIC_NOCTURNE_OF_SHADOW, RHT_NOCTURNE_OF_SHADOW, ITEM_SONG_NOCTURNE, OBJECT_GI_MELODY, GID_SONG_NOCTURNE, 0x77, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_REQUIEM_OF_SPIRIT, ITEMTYPE_SONG, 0xBE, LOGIC_REQUIEM_OF_SPIRIT, RHT_REQUIEM_OF_SPIRIT, ITEM_SONG_REQUIEM, OBJECT_GI_MELODY, GID_SONG_REQUIEM, 0x76, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_PRELUDE_OF_LIGHT, ITEMTYPE_SONG, 0xC0, LOGIC_PRELUDE_OF_LIGHT, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Maps and Compasses - itemTable[RG_DEKU_TREE_MAP] = Item(RG_DEKU_TREE_MAP, ITEMTYPE_MAP, 0xA5, false, LOGIC_MAP_DEKU_TREE, RHT_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_DEKU_TREE_MAP, ITEMTYPE_MAP, 0xA5, LOGIC_NONE, RHT_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DEKU_TREE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_DODONGOS_CAVERN_MAP] = Item(RG_DODONGOS_CAVERN_MAP, ITEMTYPE_MAP, 0xA6, false, LOGIC_MAP_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_DODONGOS_CAVERN_MAP, ITEMTYPE_MAP, 0xA6, LOGIC_NONE, RHT_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DODONGOS_CAVERN_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_JABU_JABUS_BELLY_MAP] = Item(RG_JABU_JABUS_BELLY_MAP, ITEMTYPE_MAP, 0xA7, false, LOGIC_MAP_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_JABU_JABUS_BELLY_MAP, ITEMTYPE_MAP, 0xA7, LOGIC_NONE, RHT_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_JABU_JABUS_BELLY_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_FOREST_TEMPLE_MAP] = Item(RG_FOREST_TEMPLE_MAP, ITEMTYPE_MAP, 0xA8, false, LOGIC_MAP_FOREST_TEMPLE, RHT_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_FOREST_TEMPLE_MAP, ITEMTYPE_MAP, 0xA8, LOGIC_NONE, RHT_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_FIRE_TEMPLE_MAP] = Item(RG_FIRE_TEMPLE_MAP, ITEMTYPE_MAP, 0xA9, false, LOGIC_MAP_FIRE_TEMPLE, RHT_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_FIRE_TEMPLE_MAP, ITEMTYPE_MAP, 0xA9, LOGIC_NONE, RHT_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_WATER_TEMPLE_MAP] = Item(RG_WATER_TEMPLE_MAP, ITEMTYPE_MAP, 0xAA, false, LOGIC_MAP_WATER_TEMPLE, RHT_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_WATER_TEMPLE_MAP, ITEMTYPE_MAP, 0xAA, LOGIC_NONE, RHT_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_SPIRIT_TEMPLE_MAP] = Item(RG_SPIRIT_TEMPLE_MAP, ITEMTYPE_MAP, 0xAB, false, LOGIC_MAP_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_SPIRIT_TEMPLE_MAP, ITEMTYPE_MAP, 0xAB, LOGIC_NONE, RHT_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_SHADOW_TEMPLE_MAP] = Item(RG_SHADOW_TEMPLE_MAP, ITEMTYPE_MAP, 0xAC, false, LOGIC_MAP_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_SHADOW_TEMPLE_MAP, ITEMTYPE_MAP, 0xAC, LOGIC_NONE, RHT_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_BOTW_MAP] = Item(RG_BOTW_MAP, ITEMTYPE_MAP, 0xAD, false, LOGIC_MAP_BOTW, RHT_BOTW_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_BOTW_MAP, ITEMTYPE_MAP, 0xAD, LOGIC_NONE, RHT_BOTW_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_BOTW_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_ICE_CAVERN_MAP] = Item(RG_ICE_CAVERN_MAP, ITEMTYPE_MAP, 0xAE, false, LOGIC_MAP_ICE_CAVERN, RHT_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_ICE_CAVERN_MAP, ITEMTYPE_MAP, 0xAE, LOGIC_NONE, RHT_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_ICE_CAVERN_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - itemTable[RG_DEKU_TREE_COMPASS] = Item(RG_DEKU_TREE_COMPASS, ITEMTYPE_COMPASS, 0x9B, false, LOGIC_COMPASS_DEKU_TREE, RHT_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_DEKU_TREE_COMPASS, ITEMTYPE_COMPASS, 0x9B, LOGIC_NONE, RHT_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DEKU_TREE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_DODONGOS_CAVERN_COMPASS] = Item(RG_DODONGOS_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0x9C, false, LOGIC_COMPASS_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_DODONGOS_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0x9C, LOGIC_NONE, RHT_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DODONGOS_CAVERN_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_JABU_JABUS_BELLY_COMPASS] = Item(RG_JABU_JABUS_BELLY_COMPASS, ITEMTYPE_COMPASS, 0x9D, false, LOGIC_COMPASS_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_JABU_JABUS_BELLY_COMPASS, ITEMTYPE_COMPASS, 0x9D, LOGIC_NONE, RHT_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_JABU_JABUS_BELLY_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_FOREST_TEMPLE_COMPASS] = Item(RG_FOREST_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9E, false, LOGIC_COMPASS_FOREST_TEMPLE, RHT_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_FOREST_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9E, LOGIC_NONE, RHT_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_FIRE_TEMPLE_COMPASS] = Item(RG_FIRE_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9F, false, LOGIC_COMPASS_FIRE_TEMPLE, RHT_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_FIRE_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9F, LOGIC_NONE, RHT_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_WATER_TEMPLE_COMPASS] = Item(RG_WATER_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA0, false, LOGIC_COMPASS_WATER_TEMPLE, RHT_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_WATER_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA0, LOGIC_NONE, RHT_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_SPIRIT_TEMPLE_COMPASS] = Item(RG_SPIRIT_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA1, false, LOGIC_COMPASS_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_SPIRIT_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA1, LOGIC_NONE, RHT_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_SHADOW_TEMPLE_COMPASS] = Item(RG_SHADOW_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA2, false, LOGIC_COMPASS_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_SHADOW_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA2, LOGIC_NONE, RHT_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_BOTW_COMPASS] = Item(RG_BOTW_COMPASS, ITEMTYPE_COMPASS, 0xA3, false, LOGIC_COMPASS_BOTW, RHT_BOTW_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_BOTW_COMPASS, ITEMTYPE_COMPASS, 0xA3, LOGIC_NONE, RHT_BOTW_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_BOTW_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_ICE_CAVERN_COMPASS] = Item(RG_ICE_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0xA4, false, LOGIC_COMPASS_ICE_CAVERN, RHT_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_ICE_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0xA4, LOGIC_NONE, RHT_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_ICE_CAVERN_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); // Boss Keys - itemTable[RG_FOREST_TEMPLE_BOSS_KEY] = Item(RG_FOREST_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x95, true, LOGIC_BOSS_KEY_FOREST_TEMPLE, RHT_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + AddItem(RG_FOREST_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x95, LOGIC_BOSS_KEY_FOREST_TEMPLE, RHT_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_FIRE_TEMPLE_BOSS_KEY] = Item(RG_FIRE_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x96, true, LOGIC_BOSS_KEY_FIRE_TEMPLE, RHT_FIRE_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + AddItem(RG_FIRE_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x96, LOGIC_BOSS_KEY_FIRE_TEMPLE, RHT_FIRE_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_WATER_TEMPLE_BOSS_KEY] = Item(RG_WATER_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x97, true, LOGIC_BOSS_KEY_WATER_TEMPLE, RHT_WATER_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + AddItem(RG_WATER_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x97, LOGIC_BOSS_KEY_WATER_TEMPLE, RHT_WATER_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY] = Item(RG_SPIRIT_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x98, true, LOGIC_BOSS_KEY_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + AddItem(RG_SPIRIT_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x98, LOGIC_BOSS_KEY_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_SHADOW_TEMPLE_BOSS_KEY] = Item(RG_SHADOW_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x99, true, LOGIC_BOSS_KEY_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + AddItem(RG_SHADOW_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x99, LOGIC_BOSS_KEY_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_GANONS_CASTLE_BOSS_KEY] = Item(RG_GANONS_CASTLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x9A, true, LOGIC_BOSS_KEY_GANONS_CASTLE, RHT_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + AddItem(RG_GANONS_CASTLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x9A, LOGIC_BOSS_KEY_GANONS_CASTLE, RHT_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_FOREST_TEMPLE_SMALL_KEY] = Item(RG_FOREST_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xAF, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_FOREST_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xAF, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_FIRE_TEMPLE_SMALL_KEY] = Item(RG_FIRE_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB0, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_FIRE_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB0, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_WATER_TEMPLE_SMALL_KEY] = Item(RG_WATER_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB1, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_WATER_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB1, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_SPIRIT_TEMPLE_SMALL_KEY] = Item(RG_SPIRIT_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB2, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_SPIRIT_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB2, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_SHADOW_TEMPLE_SMALL_KEY] = Item(RG_SHADOW_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB3, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_SHADOW_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB3, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_BOTW_SMALL_KEY] = Item(RG_BOTW_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB4, true, LOGIC_BOTW_KEYS, RHT_BOTW_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_BOTW_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB4, LOGIC_BOTW_KEYS, RHT_BOTW_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOTW_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_GTG_SMALL_KEY] = Item(RG_GTG_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB5, true, LOGIC_GTG_KEYS, RHT_GTG_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_GTG_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB5, LOGIC_GTG_KEYS, RHT_GTG_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GTG_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_HIDEOUT_SMALL_KEY] = Item(RG_HIDEOUT_SMALL_KEY, ITEMTYPE_HIDEOUT_KEY, 0xB6, true, LOGIC_HIDEOUT_KEYS, RHT_HIDEOUT_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_HIDEOUT_SMALL_KEY, ITEMTYPE_HIDEOUT_KEY, 0xB6, LOGIC_HIDEOUT_KEYS, RHT_HIDEOUT_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_HIDEOUT_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_GANONS_CASTLE_SMALL_KEY] = Item(RG_GANONS_CASTLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB7, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_GANONS_CASTLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB7, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_TCG_SMALL_KEY] = Item(RG_TCG_SMALL_KEY, ITEMTYPE_SMALLKEY, GI_DOOR_KEY, true, LOGIC_TCG_KEYS, RHT_TCG_SMALL_KEY, ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0xF3, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_NONE); + AddItem(RG_TCG_SMALL_KEY, ITEMTYPE_SMALLKEY, GI_DOOR_KEY, LOGIC_TCG_KEYS, RHT_TCG_SMALL_KEY, ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0xF3, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_NONE); itemTable[RG_TCG_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_GUARD_HOUSE_KEY] = Item(RG_GUARD_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_GUARD_HOUSE_KEY, RHT_GUARD_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_GUARD_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_GUARD_HOUSE_KEY, RHT_GUARD_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GUARD_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_MARKET_BAZAAR_KEY] = Item(RG_MARKET_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_BAZAAR_KEY, RHT_MARKET_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_MARKET_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_MARKET_BAZAAR_KEY, RHT_MARKET_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_MARKET_BAZAAR_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_MARKET_POTION_SHOP_KEY] = Item(RG_MARKET_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_POTION_SHOP_KEY, RHT_MARKET_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_MARKET_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_MARKET_POTION_SHOP_KEY, RHT_MARKET_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_MARKET_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_MASK_SHOP_KEY] = Item(RG_MASK_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MASK_SHOP_KEY, RHT_MASK_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_MASK_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_MASK_SHOP_KEY, RHT_MASK_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_MASK_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_MARKET_SHOOTING_KEY] = Item(RG_MARKET_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_SHOOTING_KEY, RHT_MARKET_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_MARKET_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_MARKET_SHOOTING_KEY, RHT_MARKET_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_MARKET_SHOOTING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_BOMBCHU_BOWLING_KEY] = Item(RG_BOMBCHU_BOWLING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOMBCHU_BOWLING_KEY, RHT_BOMBCHU_BOWLING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_BOMBCHU_BOWLING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_BOMBCHU_BOWLING_KEY, RHT_BOMBCHU_BOWLING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOMBCHU_BOWLING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_TCG_BUILDING_KEY] = Item(RG_TCG_BUILDING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_TCG_BUILDING_KEY, RHT_TCG_BUILDING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_TCG_BUILDING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_TCG_BUILDING_KEY, RHT_TCG_BUILDING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_TCG_BUILDING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_BOMBCHU_SHOP_KEY] = Item(RG_BOMBCHU_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOMBCHU_SHOP_KEY, RHT_BOMBCHU_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_BOMBCHU_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_BOMBCHU_SHOP_KEY, RHT_BOMBCHU_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOMBCHU_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_RICHARDS_HOUSE_KEY] = Item(RG_RICHARDS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_RICHARDS_HOUSE_KEY, RHT_RICHARDS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_RICHARDS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_RICHARDS_HOUSE_KEY, RHT_RICHARDS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_RICHARDS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_ALLEY_HOUSE_KEY] = Item(RG_ALLEY_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_ALLEY_HOUSE_KEY, RHT_ALLEY_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_ALLEY_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_ALLEY_HOUSE_KEY, RHT_ALLEY_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_ALLEY_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_KAK_BAZAAR_KEY] = Item(RG_KAK_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_BAZAAR_KEY, RHT_KAK_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_KAK_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_KAK_BAZAAR_KEY, RHT_KAK_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_KAK_BAZAAR_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_KAK_POTION_SHOP_KEY] = Item(RG_KAK_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_POTION_SHOP_KEY, RHT_KAK_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_KAK_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_KAK_POTION_SHOP_KEY, RHT_KAK_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_KAK_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_BOSS_HOUSE_KEY] = Item(RG_BOSS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOSS_HOUSE_KEY, RHT_BOSS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_BOSS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_BOSS_HOUSE_KEY, RHT_BOSS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOSS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_GRANNYS_POTION_SHOP_KEY] = Item(RG_GRANNYS_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_GRANNYS_POTION_SHOP_KEY, RHT_GRANNYS_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GRANNYS_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_SKULLTULA_HOUSE_KEY] = Item(RG_SKULLTULA_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_SKULLTULA_HOUSE_KEY, RHT_SKULLTULA_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_GRANNYS_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_GRANNYS_SHOP_KEY, RHT_GRANNYS_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_GRANNYS_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); + AddItem(RG_SKULLTULA_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_SKULLTULA_HOUSE_KEY, RHT_SKULLTULA_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SKULLTULA_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_IMPAS_HOUSE_KEY] = Item(RG_IMPAS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_IMPAS_HOUSE_KEY, RHT_IMPAS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_IMPAS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_IMPAS_HOUSE_KEY, RHT_IMPAS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_IMPAS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_WINDMILL_KEY] = Item(RG_WINDMILL_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_WINDMILL_KEY, RHT_WINDMILL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_WINDMILL_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_WINDMILL_KEY, RHT_WINDMILL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_WINDMILL_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_KAK_SHOOTING_KEY] = Item(RG_KAK_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_SHOOTING_KEY, RHT_KAK_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_KAK_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_KAK_SHOOTING_KEY, RHT_KAK_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_KAK_SHOOTING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_DAMPES_HUT_KEY] = Item(RG_DAMPES_HUT_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_DAMPES_HUT_KEY, RHT_DAMPES_HUT_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_DAMPES_HUT_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_DAMPES_HUT_KEY, RHT_DAMPES_HUT_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_DAMPES_HUT_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_TALONS_HOUSE_KEY] = Item(RG_TALONS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_TALONS_HOUSE_KEY, RHT_TALONS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_TALONS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_TALONS_HOUSE_KEY, RHT_TALONS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_TALONS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_STABLES_KEY] = Item(RG_STABLES_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_STABLES_KEY, RHT_STABLES_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_STABLES_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_STABLES_KEY, RHT_STABLES_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_STABLES_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_BACK_TOWER_KEY] = Item(RG_BACK_TOWER_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BACK_TOWER_KEY, RHT_BACK_TOWER_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_BACK_TOWER_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_BACK_TOWER_KEY, RHT_BACK_TOWER_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BACK_TOWER_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_HYLIA_LAB_KEY] = Item(RG_HYLIA_LAB_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_HYLIA_LAB_KEY, RHT_HYLIA_LAB_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_HYLIA_LAB_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_HYLIA_LAB_KEY, RHT_HYLIA_LAB_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_HYLIA_LAB_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - itemTable[RG_FISHING_HOLE_KEY] = Item(RG_FISHING_HOLE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_FISHING_HOLE_KEY, RHT_FISHING_HOLE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_FISHING_HOLE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_FISHING_HOLE_KEY, RHT_FISHING_HOLE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FISHING_HOLE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); // Key Rings - itemTable[RG_FOREST_TEMPLE_KEY_RING] = Item(RG_FOREST_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD5, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_FOREST_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD5, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_FIRE_TEMPLE_KEY_RING] = Item(RG_FIRE_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD6, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_FIRE_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD6, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_WATER_TEMPLE_KEY_RING] = Item(RG_WATER_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD7, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_WATER_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD7, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_SPIRIT_TEMPLE_KEY_RING] = Item(RG_SPIRIT_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD8, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_SPIRIT_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD8, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_SHADOW_TEMPLE_KEY_RING] = Item(RG_SHADOW_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD9, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_SHADOW_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD9, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_BOTW_KEY_RING] = Item(RG_BOTW_KEY_RING, ITEMTYPE_SMALLKEY, 0xDA, true, LOGIC_BOTW_KEYS, RHT_BOTW_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_BOTW_KEY_RING, ITEMTYPE_SMALLKEY, 0xDA, LOGIC_BOTW_KEYS, RHT_BOTW_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_BOTW_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_GTG_KEY_RING] = Item(RG_GTG_KEY_RING, ITEMTYPE_SMALLKEY, 0xDB, true, LOGIC_GTG_KEYS, RHT_GTG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_GTG_KEY_RING, ITEMTYPE_SMALLKEY, 0xDB, LOGIC_GTG_KEYS, RHT_GTG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GTG_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_HIDEOUT_KEY_RING] = Item(RG_HIDEOUT_KEY_RING, ITEMTYPE_HIDEOUT_KEY, 0xDC, true, LOGIC_HIDEOUT_KEYS, RHT_HIDEOUT_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_HIDEOUT_KEY_RING, ITEMTYPE_HIDEOUT_KEY, 0xDC, LOGIC_HIDEOUT_KEYS, RHT_HIDEOUT_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_HIDEOUT_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_GANONS_CASTLE_KEY_RING] = Item(RG_GANONS_CASTLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xDD, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_GANONS_CASTLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xDD, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_TCG_KEY_RING] = Item(RG_TCG_KEY_RING, ITEMTYPE_SMALLKEY, 0xDE, true, LOGIC_TCG_KEYS, RHT_TCG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + AddItem(RG_TCG_KEY_RING, ITEMTYPE_SMALLKEY, 0xDE, LOGIC_TCG_KEYS, RHT_TCG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_TCG_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); // Dungeon Rewards - itemTable[RG_KOKIRI_EMERALD] = Item(RG_KOKIRI_EMERALD, ITEMTYPE_DUNGEONREWARD, 0xCB, true, LOGIC_KOKIRI_EMERALD, RHT_KOKIRI_EMERALD, ITEM_KOKIRI_EMERALD, OBJECT_GI_JEWEL, GID_KOKIRI_EMERALD, 0x80, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GORON_RUBY] = Item(RG_GORON_RUBY, ITEMTYPE_DUNGEONREWARD, 0xCC, true, LOGIC_GORON_RUBY, RHT_GORON_RUBY, ITEM_GORON_RUBY, OBJECT_GI_JEWEL, GID_GORON_RUBY, 0x81, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ZORA_SAPPHIRE] = Item(RG_ZORA_SAPPHIRE, ITEMTYPE_DUNGEONREWARD, 0xCD, true, LOGIC_ZORA_SAPPHIRE, RHT_ZORA_SAPPHIRE, ITEM_ZORA_SAPPHIRE, OBJECT_GI_JEWEL, GID_ZORA_SAPPHIRE, 0x82, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FOREST_MEDALLION] = Item(RG_FOREST_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCE, true, LOGIC_FOREST_MEDALLION, RHT_FOREST_MEDALLION, ITEM_MEDALLION_FOREST, OBJECT_GI_MEDAL, GID_MEDALLION_FOREST, 0x3E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FIRE_MEDALLION] = Item(RG_FIRE_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCF, true, LOGIC_FIRE_MEDALLION, RHT_FIRE_MEDALLION, ITEM_MEDALLION_FIRE, OBJECT_GI_MEDAL, GID_MEDALLION_FIRE, 0x3C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_WATER_MEDALLION] = Item(RG_WATER_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD0, true, LOGIC_WATER_MEDALLION, RHT_WATER_MEDALLION, ITEM_MEDALLION_WATER, OBJECT_GI_MEDAL, GID_MEDALLION_WATER, 0x3D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SPIRIT_MEDALLION] = Item(RG_SPIRIT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD1, true, LOGIC_SPIRIT_MEDALLION, RHT_SPIRIT_MEDALLION, ITEM_MEDALLION_SPIRIT, OBJECT_GI_MEDAL, GID_MEDALLION_SPIRIT, 0x3F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SHADOW_MEDALLION] = Item(RG_SHADOW_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD2, true, LOGIC_SHADOW_MEDALLION, RHT_SHADOW_MEDALLION, ITEM_MEDALLION_SHADOW, OBJECT_GI_MEDAL, GID_MEDALLION_SHADOW, 0x41, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LIGHT_MEDALLION] = Item(RG_LIGHT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD3, true, LOGIC_LIGHT_MEDALLION, RHT_LIGHT_MEDALLION, ITEM_MEDALLION_LIGHT, OBJECT_GI_MEDAL, GID_MEDALLION_LIGHT, 0x40, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_KOKIRI_EMERALD, ITEMTYPE_DUNGEONREWARD, 0xCB, LOGIC_KOKIRI_EMERALD, RHT_KOKIRI_EMERALD, ITEM_KOKIRI_EMERALD, OBJECT_GI_JEWEL, GID_KOKIRI_EMERALD, 0x80, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_GORON_RUBY, ITEMTYPE_DUNGEONREWARD, 0xCC, LOGIC_GORON_RUBY, RHT_GORON_RUBY, ITEM_GORON_RUBY, OBJECT_GI_JEWEL, GID_GORON_RUBY, 0x81, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_ZORA_SAPPHIRE, ITEMTYPE_DUNGEONREWARD, 0xCD, LOGIC_ZORA_SAPPHIRE, RHT_ZORA_SAPPHIRE, ITEM_ZORA_SAPPHIRE, OBJECT_GI_JEWEL, GID_ZORA_SAPPHIRE, 0x82, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_FOREST_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCE, LOGIC_FOREST_MEDALLION, RHT_FOREST_MEDALLION, ITEM_MEDALLION_FOREST, OBJECT_GI_MEDAL, GID_MEDALLION_FOREST, 0x3E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_FIRE_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCF, LOGIC_FIRE_MEDALLION, RHT_FIRE_MEDALLION, ITEM_MEDALLION_FIRE, OBJECT_GI_MEDAL, GID_MEDALLION_FIRE, 0x3C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_WATER_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD0, LOGIC_WATER_MEDALLION, RHT_WATER_MEDALLION, ITEM_MEDALLION_WATER, OBJECT_GI_MEDAL, GID_MEDALLION_WATER, 0x3D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SPIRIT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD1, LOGIC_SPIRIT_MEDALLION, RHT_SPIRIT_MEDALLION, ITEM_MEDALLION_SPIRIT, OBJECT_GI_MEDAL, GID_MEDALLION_SPIRIT, 0x3F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SHADOW_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD2, LOGIC_SHADOW_MEDALLION, RHT_SHADOW_MEDALLION, ITEM_MEDALLION_SHADOW, OBJECT_GI_MEDAL, GID_MEDALLION_SHADOW, 0x41, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_LIGHT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD3, LOGIC_LIGHT_MEDALLION, RHT_LIGHT_MEDALLION, ITEM_MEDALLION_LIGHT, OBJECT_GI_MEDAL, GID_MEDALLION_LIGHT, 0x40, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Generic Items - itemTable[RG_RECOVERY_HEART] = Item(RG_RECOVERY_HEART, ITEMTYPE_ITEM, GI_HEART, false, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_GREEN_RUPEE] = Item(RG_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_GREG_RUPEE] = Item(RG_GREG_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, true, LOGIC_GREG, RHT_GREG_RUPEE, OBJECT_GI_RUPY, GID_RUPEE_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BLUE_RUPEE] = Item(RG_BLUE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_BLUE, false, LOGIC_NONE, RHT_BLUE_RUPEE, ITEM_RUPEE_BLUE, OBJECT_GI_RUPY, GID_RUPEE_BLUE, 0xCC, 0x01, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_RED_RUPEE] = Item(RG_RED_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_RED, false, LOGIC_NONE, RHT_RED_RUPEE, ITEM_RUPEE_RED, OBJECT_GI_RUPY, GID_RUPEE_RED, 0xF0, 0x02, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_PURPLE_RUPEE] = Item(RG_PURPLE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_PURPLE, false, LOGIC_NONE, RHT_PURPLE_RUPEE, ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_HUGE_RUPEE] = Item(RG_HUGE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GOLD, false, LOGIC_NONE, RHT_HUGE_RUPEE, ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_PIECE_OF_HEART] = Item(RG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE, true, LOGIC_PIECE_OF_HEART, RHT_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_HEART_CONTAINER] = Item(RG_HEART_CONTAINER, ITEMTYPE_ITEM, GI_HEART_CONTAINER_2, true, LOGIC_HEART_CONTAINER, RHT_HEART_CONTAINER, ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_ICE_TRAP] = Item(RG_ICE_TRAP, ITEMTYPE_ITEM, RG_ICE_TRAP, false, LOGIC_NONE, RHT_ICE_TRAP, OBJECT_GI_RUPY, GID_RUPEE_GOLD, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_MILK] = Item(RG_MILK, ITEMTYPE_ITEM, GI_MILK, false, LOGIC_NONE, RHT_MILK, ITEM_MILK, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_FISH] = Item(RG_FISH, ITEMTYPE_ITEM, GI_FISH, false, LOGIC_NONE, RHT_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_RECOVERY_HEART, ITEMTYPE_ITEM, GI_HEART, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, LOGIC_NONE, RHT_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_GREG_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, LOGIC_GREG, RHT_GREG_RUPEE, OBJECT_GI_RUPY, GID_RUPEE_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BLUE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_BLUE, LOGIC_NONE, RHT_BLUE_RUPEE, ITEM_RUPEE_BLUE, OBJECT_GI_RUPY, GID_RUPEE_BLUE, 0xCC, 0x01, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_RED_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_RED, LOGIC_NONE, RHT_RED_RUPEE, ITEM_RUPEE_RED, OBJECT_GI_RUPY, GID_RUPEE_RED, 0xF0, 0x02, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_PURPLE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_PURPLE, LOGIC_NONE, RHT_PURPLE_RUPEE, ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_HUGE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GOLD, LOGIC_NONE, RHT_HUGE_RUPEE, ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE, LOGIC_PIECE_OF_HEART, RHT_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_HEART_CONTAINER, ITEMTYPE_ITEM, GI_HEART_CONTAINER_2, LOGIC_HEART_CONTAINER, RHT_HEART_CONTAINER, ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_ICE_TRAP, ITEMTYPE_ITEM, RG_ICE_TRAP, LOGIC_NONE, RHT_ICE_TRAP, OBJECT_GI_RUPY, GID_RUPEE_GOLD, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_MILK, ITEMTYPE_ITEM, GI_MILK, LOGIC_NONE, RHT_MILK, ITEM_MILK, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_FISH, ITEMTYPE_ITEM, GI_FISH, LOGIC_NONE, RHT_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); // Refills - itemTable[RG_BOMBS_5] = Item(RG_BOMBS_5, ITEMTYPE_REFILL, GI_BOMBS_5, false, LOGIC_NONE, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBS_10] = Item(RG_BOMBS_10, ITEMTYPE_REFILL, GI_BOMBS_10, false, LOGIC_NONE, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBS_20] = Item(RG_BOMBS_20, ITEMTYPE_REFILL, GI_BOMBS_20, false, LOGIC_NONE, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_5] = Item(RG_BOMBCHU_5, ITEMTYPE_REFILL, GI_BOMBCHUS_5, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_5, ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_10] = Item(RG_BOMBCHU_10, ITEMTYPE_REFILL, GI_BOMBCHUS_10, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_20] = Item(RG_BOMBCHU_20, ITEMTYPE_REFILL, GI_BOMBCHUS_20, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BOMBS_5, ITEMTYPE_REFILL, GI_BOMBS_5, LOGIC_NONE, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BOMBS_10, ITEMTYPE_REFILL, GI_BOMBS_10, LOGIC_NONE, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BOMBS_20, ITEMTYPE_REFILL, GI_BOMBS_20, LOGIC_NONE, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BOMBCHU_5, ITEMTYPE_REFILL, GI_BOMBCHUS_5, LOGIC_BOMBCHUS, RHT_BOMBCHUS_5, ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BOMBCHU_10, ITEMTYPE_REFILL, GI_BOMBCHUS_10, LOGIC_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BOMBCHU_20, ITEMTYPE_REFILL, GI_BOMBCHUS_20, LOGIC_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); itemTable[RG_BOMBCHU_20].SetCustomDrawFunc(Randomizer_DrawBombchuBagInLogic); - itemTable[RG_ARROWS_5] = Item(RG_ARROWS_5, ITEMTYPE_REFILL, GI_ARROWS_SMALL, false, LOGIC_NONE, RHT_ARROWS_5, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_ARROWS_10] = Item(RG_ARROWS_10, ITEMTYPE_REFILL, GI_ARROWS_MEDIUM, false, LOGIC_NONE, RHT_ARROWS_10, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_ARROWS_30] = Item(RG_ARROWS_30, ITEMTYPE_REFILL, GI_ARROWS_LARGE, false, LOGIC_NONE, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_NUTS_5] = Item(RG_DEKU_NUTS_5, ITEMTYPE_REFILL, GI_NUTS_5, false, LOGIC_NONE, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_NUTS_10] = Item(RG_DEKU_NUTS_10, ITEMTYPE_REFILL, GI_NUTS_10, false, LOGIC_NONE, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_SEEDS_30] = Item(RG_DEKU_SEEDS_30, ITEMTYPE_REFILL, GI_SEEDS_30, false, LOGIC_NONE, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_STICK_1] = Item(RG_DEKU_STICK_1, ITEMTYPE_REFILL, GI_STICKS_1, false, LOGIC_NONE, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_RED_POTION_REFILL] = Item(RG_RED_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_RED, false, LOGIC_NONE, RHT_RED_POTION_REFILL, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_GREEN_POTION_REFILL] = Item(RG_GREEN_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_GREEN, false, LOGIC_NONE, RHT_GREEN_POTION_REFILL, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BLUE_POTION_REFILL] = Item(RG_BLUE_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_BLUE, false, LOGIC_NONE, RHT_BLUE_POTION_REFILL, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_ARROWS_5, ITEMTYPE_REFILL, GI_ARROWS_SMALL, LOGIC_NONE, RHT_ARROWS_5, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_ARROWS_10, ITEMTYPE_REFILL, GI_ARROWS_MEDIUM, LOGIC_NONE, RHT_ARROWS_10, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_ARROWS_30, ITEMTYPE_REFILL, GI_ARROWS_LARGE, LOGIC_NONE, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_DEKU_NUTS_5, ITEMTYPE_REFILL, GI_NUTS_5, LOGIC_NONE, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_DEKU_NUTS_10, ITEMTYPE_REFILL, GI_NUTS_10, LOGIC_NONE, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_DEKU_SEEDS_30, ITEMTYPE_REFILL, GI_SEEDS_30, LOGIC_NONE, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_DEKU_STICK_1, ITEMTYPE_REFILL, GI_STICKS_1, LOGIC_NONE, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_RED_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_RED, LOGIC_NONE, RHT_RED_POTION_REFILL, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_GREEN_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_GREEN, LOGIC_NONE, RHT_GREEN_POTION_REFILL, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BLUE_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_BLUE, LOGIC_NONE, RHT_BLUE_POTION_REFILL, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); // Treasure Game - itemTable[RG_TCG_PIECE_OF_HEART] = Item(RG_TCG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE_WIN, true, LOGIC_PIECE_OF_HEART, RHT_TCG_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_LOSER_GREEN_RUPEE] = Item(RG_LOSER_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN_LOSE, false, LOGIC_NONE, RHT_LOSER_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_TCG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE_WIN, LOGIC_PIECE_OF_HEART, RHT_TCG_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_LOSER_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN_LOSE, LOGIC_NONE, RHT_LOSER_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); // Shop - itemTable[RG_BUY_DEKU_NUTS_5] = Item(RG_BUY_DEKU_NUTS_5, ITEMTYPE_SHOP, GI_NUTS_5_2, true, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 15); - itemTable[RG_BUY_ARROWS_30] = Item(RG_BUY_ARROWS_30, ITEMTYPE_SHOP, GI_ARROWS_MEDIUM, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_30, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 60); - itemTable[RG_BUY_ARROWS_50] = Item(RG_BUY_ARROWS_50, ITEMTYPE_SHOP, GI_ARROWS_LARGE, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_50, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 90); - itemTable[RG_BUY_BOMBS_525] = Item(RG_BUY_BOMBS_525, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_525, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 25); - itemTable[RG_BUY_DEKU_NUTS_10] = Item(RG_BUY_DEKU_NUTS_10, ITEMTYPE_SHOP, GI_NUTS_10, true, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 30); - itemTable[RG_BUY_DEKU_STICK_1] = Item(RG_BUY_DEKU_STICK_1, ITEMTYPE_SHOP, GI_STICKS_1, true, LOGIC_STICKS, RHT_BUY_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 10); - itemTable[RG_BUY_BOMBS_10] = Item(RG_BUY_BOMBS_10, ITEMTYPE_SHOP, GI_BOMBS_10, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 50); - itemTable[RG_BUY_FISH] = Item(RG_BUY_FISH, ITEMTYPE_SHOP, GI_FISH, true, LOGIC_FISH_ACCESS, RHT_BUY_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 200); - itemTable[RG_BUY_RED_POTION_30] = Item(RG_BUY_RED_POTION_30, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_30, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); - itemTable[RG_BUY_GREEN_POTION] = Item(RG_BUY_GREEN_POTION, ITEMTYPE_SHOP, GI_POTION_GREEN, true, LOGIC_BUY_MAGIC_POTION, RHT_BUY_GREEN_POTION, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); - itemTable[RG_BUY_BLUE_POTION] = Item(RG_BUY_BLUE_POTION, ITEMTYPE_SHOP, GI_POTION_BLUE, true, LOGIC_BUY_MAGIC_POTION, RHT_BUY_BLUE_POTION, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 100); - itemTable[RG_BUY_HYLIAN_SHIELD] = Item(RG_BUY_HYLIAN_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_HYLIAN, true, LOGIC_HYLIAN_SHIELD, RHT_BUY_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, 80); - itemTable[RG_BUY_DEKU_SHIELD] = Item(RG_BUY_DEKU_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_DEKU, true, LOGIC_DEKU_SHIELD, RHT_BUY_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, 40); - itemTable[RG_BUY_GORON_TUNIC] = Item(RG_BUY_GORON_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_BUY_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, 200); - itemTable[RG_BUY_ZORA_TUNIC] = Item(RG_BUY_ZORA_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_BUY_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, 300); - itemTable[RG_BUY_HEART] = Item(RG_BUY_HEART, ITEMTYPE_SHOP, GI_HEART, false, LOGIC_NONE, RHT_BUY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 10); - itemTable[RG_BUY_BOMBCHUS_10] = Item(RG_BUY_BOMBCHUS_10, ITEMTYPE_SHOP, GI_BOMBCHUS_10, true, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 99); - itemTable[RG_BUY_BOMBCHUS_20] = Item(RG_BUY_BOMBCHUS_20, ITEMTYPE_SHOP, GI_BOMBCHUS_20, true, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 180); - itemTable[RG_BUY_DEKU_SEEDS_30] = Item(RG_BUY_DEKU_SEEDS_30, ITEMTYPE_SHOP, GI_SEEDS_30, true, LOGIC_BUY_SEED, RHT_BUY_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 30); - itemTable[RG_SOLD_OUT] = Item(RG_SOLD_OUT, ITEMTYPE_SHOP, RG_SOLD_OUT, false, LOGIC_NONE, RHT_SOLD_OUT, 0); - itemTable[RG_BUY_BLUE_FIRE] = Item(RG_BUY_BLUE_FIRE, ITEMTYPE_SHOP, GI_BLUE_FIRE, true, LOGIC_BLUE_FIRE_ACCESS, RHT_BUY_BLUE_FIRE, ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 300); - itemTable[RG_BUY_BOTTLE_BUG] = Item(RG_BUY_BOTTLE_BUG, ITEMTYPE_SHOP, GI_BUGS, true, LOGIC_BUGS_ACCESS, RHT_BUY_BOTTLE_BUG, ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); - itemTable[RG_BUY_POE] = Item(RG_BUY_POE, ITEMTYPE_SHOP, RG_BUY_POE, false, LOGIC_NONE, RHT_BUY_POE, ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); - itemTable[RG_BUY_FAIRYS_SPIRIT] = Item(RG_BUY_FAIRYS_SPIRIT, ITEMTYPE_SHOP, GI_FAIRY, true, LOGIC_FAIRY_ACCESS, RHT_BUY_FAIRYS_SPIRIT, ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); - itemTable[RG_BUY_ARROWS_10] = Item(RG_BUY_ARROWS_10, ITEMTYPE_SHOP, GI_ARROWS_SMALL, true, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_10, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 20); - itemTable[RG_BUY_BOMBS_20] = Item(RG_BUY_BOMBS_20, ITEMTYPE_SHOP, GI_BOMBS_20, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 80); - itemTable[RG_BUY_BOMBS_30] = Item(RG_BUY_BOMBS_30, ITEMTYPE_SHOP, GI_BOMBS_30, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_30, ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 120); - itemTable[RG_BUY_BOMBS_535] = Item(RG_BUY_BOMBS_535, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_535, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 35); - itemTable[RG_BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_40, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 40); - itemTable[RG_BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BUY_RED_POTION_50, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); + AddItem(RG_BUY_DEKU_NUTS_5, ITEMTYPE_SHOP, GI_NUTS_5_2, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 15); + AddItem(RG_BUY_ARROWS_30, ITEMTYPE_SHOP, GI_ARROWS_MEDIUM, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_30, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 60); + AddItem(RG_BUY_ARROWS_50, ITEMTYPE_SHOP, GI_ARROWS_LARGE, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_50, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 90); + AddItem(RG_BUY_BOMBS_525, ITEMTYPE_SHOP, GI_BOMBS_5, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_525, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 25); + AddItem(RG_BUY_DEKU_NUTS_10, ITEMTYPE_SHOP, GI_NUTS_10, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + AddItem(RG_BUY_DEKU_STICK_1, ITEMTYPE_SHOP, GI_STICKS_1, LOGIC_STICKS, RHT_BUY_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 10); + AddItem(RG_BUY_BOMBS_10, ITEMTYPE_SHOP, GI_BOMBS_10, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 50); + AddItem(RG_BUY_FISH, ITEMTYPE_SHOP, GI_FISH, LOGIC_FISH_ACCESS, RHT_BUY_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 200); + AddItem(RG_BUY_RED_POTION_30, ITEMTYPE_SHOP, GI_POTION_RED, LOGIC_NONE, RHT_BUY_RED_POTION_30, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + AddItem(RG_BUY_GREEN_POTION, ITEMTYPE_SHOP, GI_POTION_GREEN, LOGIC_BUY_MAGIC_POTION, RHT_BUY_GREEN_POTION, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + AddItem(RG_BUY_BLUE_POTION, ITEMTYPE_SHOP, GI_POTION_BLUE, LOGIC_BUY_MAGIC_POTION, RHT_BUY_BLUE_POTION, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 100); + AddItem(RG_BUY_HYLIAN_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_HYLIAN, LOGIC_HYLIAN_SHIELD, RHT_BUY_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, 80); + AddItem(RG_BUY_DEKU_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_DEKU, LOGIC_DEKU_SHIELD, RHT_BUY_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, 40); + AddItem(RG_BUY_GORON_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_GORON, LOGIC_GORON_TUNIC, RHT_BUY_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, 200); + AddItem(RG_BUY_ZORA_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_ZORA, LOGIC_ZORA_TUNIC, RHT_BUY_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, 300); + AddItem(RG_BUY_HEART, ITEMTYPE_SHOP, GI_HEART, LOGIC_NONE, RHT_BUY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 10); + AddItem(RG_BUY_BOMBCHUS_10, ITEMTYPE_SHOP, GI_BOMBCHUS_10, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 99); + AddItem(RG_BUY_BOMBCHUS_20, ITEMTYPE_SHOP, GI_BOMBCHUS_20, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 180); + AddItem(RG_BUY_DEKU_SEEDS_30, ITEMTYPE_SHOP, GI_SEEDS_30, LOGIC_BUY_SEED, RHT_BUY_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + AddItem(RG_SOLD_OUT, ITEMTYPE_SHOP, RG_SOLD_OUT, LOGIC_NONE, RHT_SOLD_OUT, 0); + AddItem(RG_BUY_BLUE_FIRE, ITEMTYPE_SHOP, GI_BLUE_FIRE, LOGIC_BLUE_FIRE_ACCESS, RHT_BUY_BLUE_FIRE, ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 300); + AddItem(RG_BUY_BOTTLE_BUG, ITEMTYPE_SHOP, GI_BUGS, LOGIC_BUGS_ACCESS, RHT_BUY_BOTTLE_BUG, ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); + AddItem(RG_BUY_POE, ITEMTYPE_SHOP, RG_BUY_POE, LOGIC_NONE, RHT_BUY_POE, ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + AddItem(RG_BUY_FAIRYS_SPIRIT, ITEMTYPE_SHOP, GI_FAIRY, LOGIC_FAIRY_ACCESS, RHT_BUY_FAIRYS_SPIRIT, ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); + AddItem(RG_BUY_ARROWS_10, ITEMTYPE_SHOP, GI_ARROWS_SMALL, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_10, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 20); + AddItem(RG_BUY_BOMBS_20, ITEMTYPE_SHOP, GI_BOMBS_20, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 80); + AddItem(RG_BUY_BOMBS_30, ITEMTYPE_SHOP, GI_BOMBS_30, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_30, ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 120); + AddItem(RG_BUY_BOMBS_535, ITEMTYPE_SHOP, GI_BOMBS_5, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_535, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 35); + AddItem(RG_BUY_RED_POTION_40, ITEMTYPE_SHOP, GI_POTION_RED, LOGIC_NONE, RHT_BUY_RED_POTION_40, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 40); + AddItem(RG_BUY_RED_POTION_50, ITEMTYPE_SHOP, GI_POTION_RED, LOGIC_NONE, RHT_BUY_RED_POTION_50, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); // Misc. - itemTable[RG_GOHMA_SOUL] = Item(RG_GOHMA_SOUL, ITEMTYPE_ITEM, 0xE0, true, LOGIC_CAN_SUMMON_GOHMA, RHT_GOHMA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_GOHMA_SOUL, ITEMTYPE_ITEM, 0xE0, LOGIC_GOHMA_SOUL, RHT_GOHMA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GOHMA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_KING_DODONGO_SOUL] = Item(RG_KING_DODONGO_SOUL, ITEMTYPE_ITEM, 0xE1, true, LOGIC_CAN_SUMMON_KINGDODONGO, RHT_KING_DODONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_KING_DODONGO_SOUL, ITEMTYPE_ITEM, 0xE1, LOGIC_KING_DODONGO_SOUL, RHT_KING_DODONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_KING_DODONGO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BARINADE_SOUL] = Item(RG_BARINADE_SOUL, ITEMTYPE_ITEM, 0xE2, true, LOGIC_CAN_SUMMON_BARINADE, RHT_BARINADE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BARINADE_SOUL, ITEMTYPE_ITEM, 0xE2, LOGIC_BARINADE_SOUL, RHT_BARINADE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BARINADE_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_PHANTOM_GANON_SOUL] = Item(RG_PHANTOM_GANON_SOUL, ITEMTYPE_ITEM, 0xE3, true, LOGIC_CAN_SUMMON_PHANTOMGANON, RHT_PHANTOM_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_PHANTOM_GANON_SOUL, ITEMTYPE_ITEM, 0xE3, LOGIC_PHANTOM_GANON_SOUL, RHT_PHANTOM_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_PHANTOM_GANON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_VOLVAGIA_SOUL] = Item(RG_VOLVAGIA_SOUL, ITEMTYPE_ITEM, 0xE4, true, LOGIC_CAN_SUMMON_VOLVAGIA, RHT_VOLVAGIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_VOLVAGIA_SOUL, ITEMTYPE_ITEM, 0xE4, LOGIC_VOLVAGIA_SOUL, RHT_VOLVAGIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_VOLVAGIA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_MORPHA_SOUL] = Item(RG_MORPHA_SOUL, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_MORPHA_SOUL, ITEMTYPE_ITEM, 0xE5, LOGIC_MORPHA_SOUL, RHT_MORPHA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MORPHA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BONGO_BONGO_SOUL] = Item(RG_BONGO_BONGO_SOUL, ITEMTYPE_ITEM, 0xE6, true, LOGIC_CAN_SUMMON_BONGOBONGO, RHT_BONGO_BONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BONGO_BONGO_SOUL, ITEMTYPE_ITEM, 0xE6, LOGIC_BONGO_BONGO_SOUL, RHT_BONGO_BONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BONGO_BONGO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_TWINROVA_SOUL] = Item(RG_TWINROVA_SOUL, ITEMTYPE_ITEM, 0xE7, true, LOGIC_CAN_SUMMON_TWINROVA, RHT_TWINROVA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_TWINROVA_SOUL, ITEMTYPE_ITEM, 0xE7, LOGIC_TWINROVA_SOUL, RHT_TWINROVA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_TWINROVA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_GANON_SOUL] = Item(RG_GANON_SOUL, ITEMTYPE_ITEM, 0xE8, true, LOGIC_CAN_SUMMON_GANON, RHT_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_GANON_SOUL, ITEMTYPE_ITEM, 0xE8, LOGIC_GANON_SOUL, RHT_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GANON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_FISHING_POLE] = Item(RG_FISHING_POLE, ITEMTYPE_ITEM, RG_FISHING_POLE, true, LOGIC_FISHING_POLE, RHT_FISHING_POLE, OBJECT_GI_FISH, GID_FISHING_POLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_FISHING_POLE, ITEMTYPE_ITEM, RG_FISHING_POLE, LOGIC_FISHING_POLE, RHT_FISHING_POLE, OBJECT_GI_FISH, GID_FISHING_POLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_FISHING_POLE].SetCustomDrawFunc(Randomizer_DrawFishingPoleGI); - itemTable[RG_OCARINA_A_BUTTON] = Item(RG_OCARINA_A_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_A_BUTTON, RHT_OCARINA_A_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_OCARINA_A_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_A_BUTTON, RHT_OCARINA_A_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_A_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_UP_BUTTON] = Item(RG_OCARINA_C_UP_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_UP_BUTTON, RHT_OCARINA_C_UP_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_OCARINA_C_UP_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_C_UP_BUTTON, RHT_OCARINA_C_UP_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_UP_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_DOWN_BUTTON] = Item(RG_OCARINA_C_DOWN_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_DOWN_BUTTON, RHT_OCARINA_C_DOWN_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_OCARINA_C_DOWN_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_C_DOWN_BUTTON, RHT_OCARINA_C_DOWN_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_DOWN_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_LEFT_BUTTON] = Item(RG_OCARINA_C_LEFT_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_LEFT_BUTTON, RHT_OCARINA_C_LEFT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_OCARINA_C_LEFT_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_C_LEFT_BUTTON, RHT_OCARINA_C_LEFT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_LEFT_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_RIGHT_BUTTON] = Item(RG_OCARINA_C_RIGHT_BUTTON, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_RIGHT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_OCARINA_C_RIGHT_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_C_RIGHT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_RIGHT_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_BOMBCHU_BAG] = Item(RG_BOMBCHU_BAG, ITEMTYPE_ITEM, RG_BOMBCHU_BAG, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_BAG, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOMBCHU_BAG, ITEMTYPE_ITEM, RG_BOMBCHU_BAG, LOGIC_BOMBCHUS, RHT_BOMBCHU_BAG, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BOMBCHU_BAG].SetCustomDrawFunc(Randomizer_DrawBombchuBag); - itemTable[RG_QUIVER_INF] = Item(RG_QUIVER_INF, ITEMTYPE_ITEM, RG_QUIVER_INF, true, LOGIC_PROGRESSIVE_BOW, RHT_QUIVER_INF, OBJECT_GI_ARROWCASE, GID_QUIVER_50, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOMB_BAG_INF] = Item(RG_BOMB_BAG_INF, ITEMTYPE_ITEM, RG_BOMB_BAG_INF, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG_INF, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BULLET_BAG_INF] = Item(RG_BULLET_BAG_INF, ITEMTYPE_ITEM, RG_BULLET_BAG_INF, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BULLET_BAG_INF, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_STICK_UPGRADE_INF] = Item(RG_STICK_UPGRADE_INF, ITEMTYPE_ITEM, RG_STICK_UPGRADE_INF, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_STICK_UPGRADE_INF, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_NUT_UPGRADE_INF] = Item(RG_NUT_UPGRADE_INF, ITEMTYPE_ITEM, RG_NUT_UPGRADE_INF, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NUT_UPGRADE_INF, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_MAGIC_INF] = Item(RG_MAGIC_INF, ITEMTYPE_ITEM, RG_MAGIC_INF, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_INF, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOMBCHU_INF] = Item(RG_BOMBCHU_INF, ITEMTYPE_ITEM, RG_BOMBCHU_INF, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_INF, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_QUIVER_INF, ITEMTYPE_ITEM, RG_QUIVER_INF, LOGIC_PROGRESSIVE_BOW, RHT_QUIVER_INF, OBJECT_GI_ARROWCASE, GID_QUIVER_50, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_BOMB_BAG_INF, ITEMTYPE_ITEM, RG_BOMB_BAG_INF, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG_INF, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_BULLET_BAG_INF, ITEMTYPE_ITEM, RG_BULLET_BAG_INF, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BULLET_BAG_INF, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_STICK_UPGRADE_INF, ITEMTYPE_ITEM, RG_STICK_UPGRADE_INF, LOGIC_PROGRESSIVE_STICK_BAG, RHT_STICK_UPGRADE_INF, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_NUT_UPGRADE_INF, ITEMTYPE_ITEM, RG_NUT_UPGRADE_INF, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NUT_UPGRADE_INF, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_MAGIC_INF, ITEMTYPE_ITEM, RG_MAGIC_INF, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_INF, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_BOMBCHU_INF, ITEMTYPE_ITEM, RG_BOMBCHU_INF, LOGIC_BOMBCHUS, RHT_BOMBCHU_INF, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_BOMBCHU_INF].SetCustomDrawFunc(Randomizer_DrawBombchuBag); - itemTable[RG_WALLET_INF] = Item(RG_WALLET_INF, ITEMTYPE_ITEM, RG_WALLET_INF, true, LOGIC_PROGRESSIVE_WALLET, RHT_WALLET_INF, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_WALLET_INF, ITEMTYPE_ITEM, RG_WALLET_INF, LOGIC_PROGRESSIVE_WALLET, RHT_WALLET_INF, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_SKELETON_KEY] = Item(RG_SKELETON_KEY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_SKELETON_KEY, RHT_SKELETON_KEY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_SKELETON_KEY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, LOGIC_SKELETON_KEY, RHT_SKELETON_KEY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_SKELETON_KEY].SetCustomDrawFunc(Randomizer_DrawSkeletonKey); - itemTable[RG_TRIFORCE] = Item(RG_TRIFORCE, ITEMTYPE_EVENT, RG_TRIFORCE, false, LOGIC_NONE, RHT_TRIFORCE); - itemTable[RG_HINT] = Item(RG_HINT, ITEMTYPE_EVENT, RG_HINT, false, LOGIC_NONE, RHT_HINT); + AddItem(RG_TRIFORCE, ITEMTYPE_EVENT, RG_TRIFORCE, LOGIC_NONE, RHT_TRIFORCE); + AddItem(RG_HINT, ITEMTYPE_EVENT, RG_HINT, LOGIC_NONE, RHT_HINT); // Individual stages of progressive items (only here for GetItemEntry purposes, not for use in seed gen) - itemTable[RG_HOOKSHOT] = Item(RG_HOOKSHOT, ITEMTYPE_ITEM, GI_HOOKSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_HOOKSHOT, ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LONGSHOT] = Item(RG_LONGSHOT, ITEMTYPE_ITEM, GI_LONGSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_LONGSHOT, ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FAIRY_OCARINA] = Item(RG_FAIRY_OCARINA, ITEMTYPE_ITEM, GI_OCARINA_FAIRY, true, LOGIC_PROGRESSIVE_OCARINA, RHT_FAIRY_OCARINA, ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x4A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_OCARINA_OF_TIME] = Item(RG_OCARINA_OF_TIME, ITEMTYPE_ITEM, GI_OCARINA_OOT, true, LOGIC_PROGRESSIVE_OCARINA, RHT_OCARINA_OF_TIME, ITEM_OCARINA_TIME, OBJECT_GI_OCARINA, GID_OCARINA_TIME, 0x3A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOMB_BAG] = Item(RG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_20, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG, ITEM_BOMB_BAG_20, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_20, 0x58, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIG_BOMB_BAG] = Item(RG_BIG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_30, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIG_BOMB_BAG, ITEM_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, 0x59, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_BIGGEST_BOMB_BAG] = Item(RG_BIGGEST_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_40, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIGGEST_BOMB_BAG, ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_FAIRY_BOW] = Item(RG_FAIRY_BOW, ITEMTYPE_ITEM, GI_BOW, true, LOGIC_PROGRESSIVE_BOW, RHT_FAIRY_BOW, ITEM_BOW, OBJECT_GI_BOW, GID_BOW, 0x31, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIG_QUIVER] = Item(RG_BIG_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_40, true, LOGIC_PROGRESSIVE_BOW, RHT_BIG_QUIVER, ITEM_QUIVER_40, OBJECT_GI_ARROWCASE, GID_QUIVER_40, 0x56, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_BIGGEST_QUIVER] = Item(RG_BIGGEST_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_50, true, LOGIC_PROGRESSIVE_BOW, RHT_BIGGEST_QUIVER, ITEM_QUIVER_50, OBJECT_GI_ARROWCASE, GID_QUIVER_50, 0x57, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_FAIRY_SLINGSHOT] = Item(RG_FAIRY_SLINGSHOT, ITEMTYPE_ITEM, GI_SLINGSHOT, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_FAIRY_SLINGSHOT, ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIG_BULLET_BAG] = Item(RG_BIG_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_40, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIG_BULLET_BAG, ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_BIGGEST_BULLET_BAG] = Item(RG_BIGGEST_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_50, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIGGEST_BULLET_BAG, ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_GORONS_BRACELET] = Item(RG_GORONS_BRACELET, ITEMTYPE_ITEM, GI_BRACELET, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GORONS_BRACELET, ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SILVER_GAUNTLETS] = Item(RG_SILVER_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_SILVER, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_SILVER_GAUNTLETS, ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GOLDEN_GAUNTLETS] = Item(RG_GOLDEN_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_GOLD, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GOLDEN_GAUNTLETS, ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BRONZE_SCALE] = Item(RG_BRONZE_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_SCALE, RHT_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_HOOKSHOT, ITEMTYPE_ITEM, GI_HOOKSHOT, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_HOOKSHOT, ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_LONGSHOT, ITEMTYPE_ITEM, GI_LONGSHOT, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_LONGSHOT, ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_FAIRY_OCARINA, ITEMTYPE_ITEM, GI_OCARINA_FAIRY, LOGIC_PROGRESSIVE_OCARINA, RHT_FAIRY_OCARINA, ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x4A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_OCARINA_OF_TIME, ITEMTYPE_ITEM, GI_OCARINA_OOT, LOGIC_PROGRESSIVE_OCARINA, RHT_OCARINA_OF_TIME, ITEM_OCARINA_TIME, OBJECT_GI_OCARINA, GID_OCARINA_TIME, 0x3A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_20, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG, ITEM_BOMB_BAG_20, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_20, 0x58, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BIG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_30, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIG_BOMB_BAG, ITEM_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, 0x59, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_BIGGEST_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_40, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIGGEST_BOMB_BAG, ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_FAIRY_BOW, ITEMTYPE_ITEM, GI_BOW, LOGIC_PROGRESSIVE_BOW, RHT_FAIRY_BOW, ITEM_BOW, OBJECT_GI_BOW, GID_BOW, 0x31, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BIG_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_40, LOGIC_PROGRESSIVE_BOW, RHT_BIG_QUIVER, ITEM_QUIVER_40, OBJECT_GI_ARROWCASE, GID_QUIVER_40, 0x56, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_BIGGEST_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_50, LOGIC_PROGRESSIVE_BOW, RHT_BIGGEST_QUIVER, ITEM_QUIVER_50, OBJECT_GI_ARROWCASE, GID_QUIVER_50, 0x57, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_FAIRY_SLINGSHOT, ITEMTYPE_ITEM, GI_SLINGSHOT, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_FAIRY_SLINGSHOT, ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BIG_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_40, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIG_BULLET_BAG, ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_BIGGEST_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_50, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIGGEST_BULLET_BAG, ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_GORONS_BRACELET, ITEMTYPE_ITEM, GI_BRACELET, LOGIC_PROGRESSIVE_STRENGTH, RHT_GORONS_BRACELET, ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SILVER_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_SILVER, LOGIC_PROGRESSIVE_STRENGTH, RHT_SILVER_GAUNTLETS, ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_GOLDEN_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_GOLD, LOGIC_PROGRESSIVE_STRENGTH, RHT_GOLDEN_GAUNTLETS, ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BRONZE_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, LOGIC_PROGRESSIVE_SCALE, RHT_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BRONZE_SCALE].SetCustomDrawFunc(Randomizer_DrawBronzeScale); - itemTable[RG_SILVER_SCALE] = Item(RG_SILVER_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_SCALE, RHT_SILVER_SCALE, ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GOLDEN_SCALE] = Item(RG_GOLDEN_SCALE, ITEMTYPE_ITEM, GI_SCALE_GOLDEN, true, LOGIC_PROGRESSIVE_SCALE, RHT_GOLDEN_SCALE, ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_CHILD_WALLET] = Item(RG_CHILD_WALLET, ITEMTYPE_ITEM, RG_CHILD_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_CHILD_WALLET, OBJECT_GI_PURSE, GID_WALLET_ADULT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_ADULT_WALLET] = Item(RG_ADULT_WALLET, ITEMTYPE_ITEM, GI_WALLET_ADULT, true, LOGIC_PROGRESSIVE_WALLET, RHT_ADULT_WALLET, ITEM_WALLET_ADULT, OBJECT_GI_PURSE, GID_WALLET_ADULT, 0x5E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GIANT_WALLET] = Item(RG_GIANT_WALLET, ITEMTYPE_ITEM, GI_WALLET_GIANT, true, LOGIC_PROGRESSIVE_WALLET, RHT_GIANT_WALLET, ITEM_WALLET_GIANT, OBJECT_GI_PURSE, GID_WALLET_GIANT, 0x5F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_TYCOON_WALLET] = Item(RG_TYCOON_WALLET, ITEMTYPE_ITEM, RG_TYCOON_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_TYCOON_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_DEKU_NUT_BAG] = Item(RG_DEKU_NUT_BAG, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_BAG, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_DEKU_NUT_CAPACITY_30] = Item(RG_DEKU_NUT_CAPACITY_30, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_30, ITEM_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_DEKU_NUT_CAPACITY_40] = Item(RG_DEKU_NUT_CAPACITY_40, ITEMTYPE_ITEM, GI_NUT_UPGRADE_40, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_40, ITEM_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_DEKU_STICK_BAG] = Item(RG_DEKU_STICK_BAG, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_BAG, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_DEKU_STICK_CAPACITY_20] = Item(RG_DEKU_STICK_CAPACITY_20, ITEMTYPE_ITEM, GI_STICK_UPGRADE_20, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_20, ITEM_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_STICK, 0x90, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_DEKU_STICK_CAPACITY_30] = Item(RG_DEKU_STICK_CAPACITY_30, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_30, ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_MAGIC_SINGLE] = Item(RG_MAGIC_SINGLE, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_SINGLE, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0xE4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_MAGIC_DOUBLE] = Item(RG_MAGIC_DOUBLE, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, ITEMTYPE_ITEM, 0xDF, true, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_SILVER_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, LOGIC_PROGRESSIVE_SCALE, RHT_SILVER_SCALE, ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_GOLDEN_SCALE, ITEMTYPE_ITEM, GI_SCALE_GOLDEN, LOGIC_PROGRESSIVE_SCALE, RHT_GOLDEN_SCALE, ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_CHILD_WALLET, ITEMTYPE_ITEM, RG_CHILD_WALLET, LOGIC_PROGRESSIVE_WALLET, RHT_CHILD_WALLET, OBJECT_GI_PURSE, GID_WALLET_ADULT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_ADULT_WALLET, ITEMTYPE_ITEM, GI_WALLET_ADULT, LOGIC_PROGRESSIVE_WALLET, RHT_ADULT_WALLET, ITEM_WALLET_ADULT, OBJECT_GI_PURSE, GID_WALLET_ADULT, 0x5E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_GIANT_WALLET, ITEMTYPE_ITEM, GI_WALLET_GIANT, LOGIC_PROGRESSIVE_WALLET, RHT_GIANT_WALLET, ITEM_WALLET_GIANT, OBJECT_GI_PURSE, GID_WALLET_GIANT, 0x5F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_TYCOON_WALLET, ITEMTYPE_ITEM, RG_TYCOON_WALLET, LOGIC_PROGRESSIVE_WALLET, RHT_TYCOON_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_DEKU_NUT_BAG, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_BAG, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_DEKU_NUT_CAPACITY_30, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_30, ITEM_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_DEKU_NUT_CAPACITY_40, ITEMTYPE_ITEM, GI_NUT_UPGRADE_40, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_40, ITEM_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_DEKU_STICK_BAG, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_BAG, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_DEKU_STICK_CAPACITY_20, ITEMTYPE_ITEM, GI_STICK_UPGRADE_20, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_20, ITEM_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_STICK, 0x90, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_DEKU_STICK_CAPACITY_30, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_30, ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_MAGIC_SINGLE, ITEMTYPE_ITEM, 0x8A, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_SINGLE, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0xE4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_MAGIC_DOUBLE, ITEMTYPE_ITEM, 0x8A, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_TRIFORCE_PIECE, ITEMTYPE_ITEM, 0xDF, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); // clang-format on diff --git a/soh/soh/Enhancements/randomizer/location_access/overworld/kakariko.cpp b/soh/soh/Enhancements/randomizer/location_access/overworld/kakariko.cpp index 9b44f5c12..e8511e686 100644 --- a/soh/soh/Enhancements/randomizer/location_access/overworld/kakariko.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/overworld/kakariko.cpp @@ -122,7 +122,7 @@ void RegionTable_Init_Kakariko() { //Exits Entrance(RR_KAKARIKO_VILLAGE, []{return true;}), Entrance(RR_KAK_OPEN_GROTTO, []{return true;}), - Entrance(RR_KAK_ODD_POTION_BUILDING, []{return logic->IsAdult && logic->CanOpenOverworldDoor(RG_GRANNYS_POTION_SHOP_KEY);}), + Entrance(RR_KAK_ODD_POTION_BUILDING, []{return logic->IsAdult && logic->CanOpenOverworldDoor(RG_GRANNYS_SHOP_KEY);}), Entrance(RR_KAK_POTION_SHOP_BACK, []{return logic->IsAdult && logic->AtDay && logic->CanOpenOverworldDoor(RG_KAK_POTION_SHOP_KEY);}), }); diff --git a/soh/soh/Enhancements/randomizer/logic.cpp b/soh/soh/Enhancements/randomizer/logic.cpp index 7595c45f4..b56ca703c 100644 --- a/soh/soh/Enhancements/randomizer/logic.cpp +++ b/soh/soh/Enhancements/randomizer/logic.cpp @@ -158,7 +158,7 @@ bool Logic::HasItem(RandomizerGet itemName) { case RG_KAK_BAZAAR_KEY: case RG_KAK_POTION_SHOP_KEY: case RG_BOSS_HOUSE_KEY: - case RG_GRANNYS_POTION_SHOP_KEY: + case RG_GRANNYS_SHOP_KEY: case RG_SKULLTULA_HOUSE_KEY: case RG_IMPAS_HOUSE_KEY: case RG_WINDMILL_KEY: @@ -1485,7 +1485,7 @@ std::map Logic::RandoGetToRandInf = { { RG_KAK_BAZAAR_KEY, RAND_INF_KAK_BAZAAR_KEY_OBTAINED }, { RG_KAK_POTION_SHOP_KEY, RAND_INF_KAK_POTION_SHOP_KEY_OBTAINED }, { RG_BOSS_HOUSE_KEY, RAND_INF_BOSS_HOUSE_KEY_OBTAINED }, - { RG_GRANNYS_POTION_SHOP_KEY, RAND_INF_GRANNYS_POTION_SHOP_KEY_OBTAINED }, + { RG_GRANNYS_SHOP_KEY, RAND_INF_GRANNYS_POTION_SHOP_KEY_OBTAINED }, { RG_SKULLTULA_HOUSE_KEY, RAND_INF_SKULLTULA_HOUSE_KEY_OBTAINED }, { RG_IMPAS_HOUSE_KEY, RAND_INF_IMPAS_HOUSE_KEY_OBTAINED }, { RG_WINDMILL_KEY, RAND_INF_WINDMILL_KEY_OBTAINED }, @@ -1850,7 +1850,7 @@ void Logic::ApplyItemEffect(Item& item, bool state) { case RG_KAK_BAZAAR_KEY: case RG_KAK_POTION_SHOP_KEY: case RG_BOSS_HOUSE_KEY: - case RG_GRANNYS_POTION_SHOP_KEY: + case RG_GRANNYS_SHOP_KEY: case RG_SKULLTULA_HOUSE_KEY: case RG_IMPAS_HOUSE_KEY: case RG_WINDMILL_KEY: diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 53d61f2b1..02c4e38b6 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -5278,7 +5278,7 @@ void Randomizer::CreateCustomMessages() { GIMESSAGE(RG_BOSS_HOUSE_KEY, ITEM_KEY_SMALL, "You found the key to the&%gBoss's House%w!", "Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus des Chefs%w!", "Vous obtenez la %rClé %wde la %gMaison&du Chef des Ouvriers%w!"), - GIMESSAGE(RG_GRANNYS_POTION_SHOP_KEY, ITEM_KEY_SMALL, "You found the key to&%gGranny's Potion Shop%w!", + GIMESSAGE(RG_GRANNYS_SHOP_KEY, ITEM_KEY_SMALL, "You found the key to&%gGranny's Potion Shop%w!", "Du erhältst einen %rkleinen&Schlüssel%w für %gAsas Hexenladen%w!", "Vous obtenez la %rClé %wde&l'%gApothicaire%w!"), GIMESSAGE(RG_SKULLTULA_HOUSE_KEY, ITEM_KEY_SMALL, "You found the key to the&%gSkulltula House%w!", diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index aa4e58971..ec7f23737 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -111,26 +111,6 @@ typedef enum { LOGIC_NOCTURNE_OF_SHADOW, LOGIC_REQUIEM_OF_SPIRIT, LOGIC_PRELUDE_OF_LIGHT, - LOGIC_MAP_DEKU_TREE, - LOGIC_MAP_DODONGOS_CAVERN, - LOGIC_MAP_JABU_JABUS_BELLY, - LOGIC_MAP_FOREST_TEMPLE, - LOGIC_MAP_FIRE_TEMPLE, - LOGIC_MAP_WATER_TEMPLE, - LOGIC_MAP_SPIRIT_TEMPLE, - LOGIC_MAP_SHADOW_TEMPLE, - LOGIC_MAP_BOTW, - LOGIC_MAP_ICE_CAVERN, - LOGIC_COMPASS_DEKU_TREE, - LOGIC_COMPASS_DODONGOS_CAVERN, - LOGIC_COMPASS_JABU_JABUS_BELLY, - LOGIC_COMPASS_FOREST_TEMPLE, - LOGIC_COMPASS_FIRE_TEMPLE, - LOGIC_COMPASS_WATER_TEMPLE, - LOGIC_COMPASS_SPIRIT_TEMPLE, - LOGIC_COMPASS_SHADOW_TEMPLE, - LOGIC_COMPASS_BOTW, - LOGIC_COMPASS_ICE_CAVERN, LOGIC_BOSS_KEY_FOREST_TEMPLE, LOGIC_BOSS_KEY_FIRE_TEMPLE, LOGIC_BOSS_KEY_WATER_TEMPLE, @@ -161,7 +141,7 @@ typedef enum { LOGIC_KAK_BAZAAR_KEY, LOGIC_KAK_POTION_SHOP_KEY, LOGIC_BOSS_HOUSE_KEY, - LOGIC_GRANNYS_POTION_SHOP_KEY, + LOGIC_GRANNYS_SHOP_KEY, LOGIC_SKULLTULA_HOUSE_KEY, LOGIC_IMPAS_HOUSE_KEY, LOGIC_WINDMILL_KEY, @@ -195,15 +175,15 @@ typedef enum { LOGIC_BLUE_FIRE_ACCESS, LOGIC_BUGS_ACCESS, LOGIC_FAIRY_ACCESS, - LOGIC_CAN_SUMMON_GOHMA, - LOGIC_CAN_SUMMON_KINGDODONGO, - LOGIC_CAN_SUMMON_BARINADE, - LOGIC_CAN_SUMMON_PHANTOMGANON, - LOGIC_CAN_SUMMON_VOLVAGIA, - LOGIC_CAN_SUMMON_MORPHA, - LOGIC_CAN_SUMMON_BONGOBONGO, - LOGIC_CAN_SUMMON_TWINROVA, - LOGIC_CAN_SUMMON_GANON, + LOGIC_GOHMA_SOUL, + LOGIC_KING_DODONGO_SOUL, + LOGIC_BARINADE_SOUL, + LOGIC_PHANTOM_GANON_SOUL, + LOGIC_VOLVAGIA_SOUL, + LOGIC_MORPHA_SOUL, + LOGIC_BONGO_BONGO_SOUL, + LOGIC_TWINROVA_SOUL, + LOGIC_GANON_SOUL, LOGIC_FISHING_POLE, LOGIC_OCARINA_A_BUTTON, LOGIC_OCARINA_C_UP_BUTTON, @@ -4006,7 +3986,7 @@ typedef enum { RG_KAK_BAZAAR_KEY, RG_KAK_POTION_SHOP_KEY, RG_BOSS_HOUSE_KEY, - RG_GRANNYS_POTION_SHOP_KEY, + RG_GRANNYS_SHOP_KEY, RG_SKULLTULA_HOUSE_KEY, RG_IMPAS_HOUSE_KEY, RG_WINDMILL_KEY, @@ -5172,7 +5152,7 @@ typedef enum { RHT_KAK_BAZAAR_KEY, RHT_KAK_POTION_SHOP_KEY, RHT_BOSS_HOUSE_KEY, - RHT_GRANNYS_POTION_SHOP_KEY, + RHT_GRANNYS_SHOP_KEY, RHT_SKULLTULA_HOUSE_KEY, RHT_IMPAS_HOUSE_KEY, RHT_WINDMILL_KEY, diff --git a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp index c5cbb8298..d04858d89 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp @@ -146,7 +146,7 @@ std::vector overworldKeyItems = { ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_BAZAAR_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_KAK_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_BOSS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), - ITEM_TRACKER_ITEM_CUSTOM(RG_GRANNYS_POTION_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), + ITEM_TRACKER_ITEM_CUSTOM(RG_GRANNYS_SHOP_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_SKULLTULA_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_IMPAS_HOUSE_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), ITEM_TRACKER_ITEM_CUSTOM(RG_WINDMILL_KEY, ITEM_KEY_SMALL, ITEM_KEY_SMALL, 0, DrawItem), @@ -234,30 +234,14 @@ std::map itemTrackerOcarinaButtonShortNames = { }; std::map itemTrackerOverworldKeyShortNames = { - { RG_GUARD_HOUSE_KEY, "GUARD" }, - { RG_MARKET_BAZAAR_KEY, "MKBAZ" }, - { RG_MARKET_POTION_SHOP_KEY, "MKPOT" }, - { RG_MASK_SHOP_KEY, "MASK" }, - { RG_MARKET_SHOOTING_KEY, "MKSHO" }, - { RG_BOMBCHU_BOWLING_KEY, "BOWL" }, - { RG_TCG_BUILDING_KEY, "TREASU" }, - { RG_BOMBCHU_SHOP_KEY, "CHUSHO" }, - { RG_RICHARDS_HOUSE_KEY, "RICH" }, - { RG_ALLEY_HOUSE_KEY, "ALLEY" }, - { RG_KAK_BAZAAR_KEY, "KAKBAZ" }, - { RG_KAK_POTION_SHOP_KEY, "KAKPO" }, - { RG_BOSS_HOUSE_KEY, "BOSS" }, - { RG_GRANNYS_POTION_SHOP_KEY, "GRANNY" }, - { RG_SKULLTULA_HOUSE_KEY, "SKULL" }, - { RG_IMPAS_HOUSE_KEY, "IMPAS" }, - { RG_WINDMILL_KEY, "WIND" }, - { RG_KAK_SHOOTING_KEY, "KAKSHO" }, - { RG_DAMPES_HUT_KEY, "DAMPES" }, - { RG_TALONS_HOUSE_KEY, "TALONS" }, - { RG_STABLES_KEY, "STABLE" }, - { RG_BACK_TOWER_KEY, "TOWER" }, - { RG_HYLIA_LAB_KEY, "LAB" }, - { RG_FISHING_HOLE_KEY, "FISH" }, + { RG_GUARD_HOUSE_KEY, "GUARD" }, { RG_MARKET_BAZAAR_KEY, "MKBAZ" }, { RG_MARKET_POTION_SHOP_KEY, "MKPOT" }, + { RG_MASK_SHOP_KEY, "MASK" }, { RG_MARKET_SHOOTING_KEY, "MKSHO" }, { RG_BOMBCHU_BOWLING_KEY, "BOWL" }, + { RG_TCG_BUILDING_KEY, "TREASU" }, { RG_BOMBCHU_SHOP_KEY, "CHUSHO" }, { RG_RICHARDS_HOUSE_KEY, "RICH" }, + { RG_ALLEY_HOUSE_KEY, "ALLEY" }, { RG_KAK_BAZAAR_KEY, "KAKBAZ" }, { RG_KAK_POTION_SHOP_KEY, "KAKPO" }, + { RG_BOSS_HOUSE_KEY, "BOSS" }, { RG_GRANNYS_SHOP_KEY, "GRANNY" }, { RG_SKULLTULA_HOUSE_KEY, "SKULL" }, + { RG_IMPAS_HOUSE_KEY, "IMPAS" }, { RG_WINDMILL_KEY, "WIND" }, { RG_KAK_SHOOTING_KEY, "KAKSHO" }, + { RG_DAMPES_HUT_KEY, "DAMPES" }, { RG_TALONS_HOUSE_KEY, "TALONS" }, { RG_STABLES_KEY, "STABLE" }, + { RG_BACK_TOWER_KEY, "TOWER" }, { RG_HYLIA_LAB_KEY, "LAB" }, { RG_FISHING_HOLE_KEY, "FISH" }, }; std::vector dungeonItems = {}; @@ -894,7 +878,7 @@ void DrawItem(ItemTrackerItem item) { hasItem = Flags_GetRandomizerInf(RAND_INF_BOSS_HOUSE_KEY_OBTAINED); itemName = "Boss House Key"; break; - case RG_GRANNYS_POTION_SHOP_KEY: + case RG_GRANNYS_SHOP_KEY: actualItemId = item.id; hasItem = Flags_GetRandomizerInf(RAND_INF_GRANNYS_POTION_SHOP_KEY_OBTAINED); itemName = "Granny's Potion Shop Key"; diff --git a/soh/soh/Enhancements/randomizer/static_data.h b/soh/soh/Enhancements/randomizer/static_data.h index 797fcab46..2b7804fd9 100644 --- a/soh/soh/Enhancements/randomizer/static_data.h +++ b/soh/soh/Enhancements/randomizer/static_data.h @@ -22,6 +22,16 @@ class StaticData { public: static void InitItemTable(); + static void AddItem(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, LogicVal logicVal_, + RandomizerHintTextKey hintKey_, uint16_t itemId_, uint16_t objectId_, uint16_t gid_, + uint16_t textId_, uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, + uint16_t modIndex_, uint16_t price_ = 0); + static void AddItem(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, LogicVal logicVal_, + RandomizerHintTextKey hintKey_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, + uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, + uint16_t price_ = 0); + static void AddItem(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, LogicVal logicVal_, + RandomizerHintTextKey hintKey_, uint16_t price_ = 0); static void HintTable_Init(); static void HintTable_Init_Item(); static void HintTable_Init_Exclude_Overworld(); From 5734be1e20eea33c42beba04bb1b7351713cbcaa Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Mon, 28 Apr 2025 19:36:49 +0100 Subject: [PATCH 22/24] ItemList now accepts custom draw as an argument --- .../Enhancements/item-tables/ItemTableTypes.h | 2 +- .../Enhancements/randomizer/ShuffleCrates.cpp | 4 +- .../Enhancements/randomizer/ShuffleGrass.cpp | 2 +- .../Enhancements/randomizer/hook_handlers.cpp | 2 +- soh/soh/Enhancements/randomizer/item.cpp | 13 +- soh/soh/Enhancements/randomizer/item.h | 6 +- soh/soh/Enhancements/randomizer/item_list.cpp | 624 ++++++++---------- soh/soh/Enhancements/randomizer/static_data.h | 4 +- soh/soh/OTRGlobals.cpp | 2 +- soh/src/overlays/actors/ovl_En_Box/z_en_box.c | 4 +- 10 files changed, 288 insertions(+), 375 deletions(-) diff --git a/soh/soh/Enhancements/item-tables/ItemTableTypes.h b/soh/soh/Enhancements/item-tables/ItemTableTypes.h index df59d6770..a17b1879f 100644 --- a/soh/soh/Enhancements/item-tables/ItemTableTypes.h +++ b/soh/soh/Enhancements/item-tables/ItemTableTypes.h @@ -25,7 +25,7 @@ typedef enum GetItemCategory { /* 0x01 */ ITEM_CATEGORY_LESSER, /* 0x02 */ ITEM_CATEGORY_BOSS_KEY, /* 0x03 */ ITEM_CATEGORY_SMALL_KEY, - /* 0x04 */ ITEM_CATEGORY_SKULLTULA_TOKEN, + /* 0x04 */ ITEM_CATEGORY_SKULL_TOKEN, /* 0x05 */ ITEM_CATEGORY_MAJOR, } GetItemCategory; diff --git a/soh/soh/Enhancements/randomizer/ShuffleCrates.cpp b/soh/soh/Enhancements/randomizer/ShuffleCrates.cpp index aaac412f9..45cee02b8 100644 --- a/soh/soh/Enhancements/randomizer/ShuffleCrates.cpp +++ b/soh/soh/Enhancements/randomizer/ShuffleCrates.cpp @@ -59,7 +59,7 @@ extern "C" void ObjKibako2_RandomizerDraw(Actor* thisx, PlayState* play) { case ITEM_CATEGORY_MAJOR: Gfx_DrawDListOpa(play, (Gfx*)gLargeMajorCrateDL); break; - case ITEM_CATEGORY_SKULLTULA_TOKEN: + case ITEM_CATEGORY_SKULL_TOKEN: Gfx_DrawDListOpa(play, (Gfx*)gLargeTokenCrateDL); break; case ITEM_CATEGORY_SMALL_KEY: @@ -127,7 +127,7 @@ extern "C" void ObjKibako_RandomizerDraw(Actor* thisx, PlayState* play) { case ITEM_CATEGORY_MAJOR: Gfx_DrawDListOpa(play, (Gfx*)gSmallMajorCrateDL); break; - case ITEM_CATEGORY_SKULLTULA_TOKEN: + case ITEM_CATEGORY_SKULL_TOKEN: Gfx_DrawDListOpa(play, (Gfx*)gSmallTokenCrateDL); break; case ITEM_CATEGORY_SMALL_KEY: diff --git a/soh/soh/Enhancements/randomizer/ShuffleGrass.cpp b/soh/soh/Enhancements/randomizer/ShuffleGrass.cpp index b8d31144a..a32b787a2 100644 --- a/soh/soh/Enhancements/randomizer/ShuffleGrass.cpp +++ b/soh/soh/Enhancements/randomizer/ShuffleGrass.cpp @@ -67,7 +67,7 @@ extern "C" void EnKusa_RandomizerDraw(Actor* thisx, PlayState* play) { case ITEM_CATEGORY_SMALL_KEY: DrawTypeOfGrass(grassActor, (Gfx*)gRandoBushSmallKeyDL, (Gfx*)gRandoCuttableGrassSmallKeyDL, play); break; - case ITEM_CATEGORY_SKULLTULA_TOKEN: + case ITEM_CATEGORY_SKULL_TOKEN: DrawTypeOfGrass(grassActor, (Gfx*)gRandoBushTokenDL, (Gfx*)gRandoCuttableGrassTokenDL, play); break; case ITEM_CATEGORY_MAJOR: diff --git a/soh/soh/Enhancements/randomizer/hook_handlers.cpp b/soh/soh/Enhancements/randomizer/hook_handlers.cpp index 577163a79..015aa1b5d 100644 --- a/soh/soh/Enhancements/randomizer/hook_handlers.cpp +++ b/soh/soh/Enhancements/randomizer/hook_handlers.cpp @@ -326,7 +326,7 @@ void RandomizerOnPlayerUpdateForRCQueueHandler() { !(getItemEntry.getItemId >= RG_DEKU_TREE_MAP && getItemEntry.getItemId <= RG_ICE_CAVERN_MAP && getItemEntry.modIndex == MOD_RANDOMIZER) && (getItemEntry.getItemCategory == ITEM_CATEGORY_JUNK || - getItemEntry.getItemCategory == ITEM_CATEGORY_SKULLTULA_TOKEN || + getItemEntry.getItemCategory == ITEM_CATEGORY_SKULL_TOKEN || getItemEntry.getItemCategory == ITEM_CATEGORY_LESSER))))) { Item_DropCollectible(gPlayState, &spawnPos, ITEM00_SOH_GIVE_ITEM_ENTRY | 0x8000); } diff --git a/soh/soh/Enhancements/randomizer/item.cpp b/soh/soh/Enhancements/randomizer/item.cpp index 704ab3372..5ee91f8c3 100644 --- a/soh/soh/Enhancements/randomizer/item.cpp +++ b/soh/soh/Enhancements/randomizer/item.cpp @@ -17,26 +17,27 @@ Item::Item() Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t itemId_, const uint16_t objectId_, const uint16_t gid_, const uint16_t textId_, const uint16_t field_, const int16_t chestAnimation_, - const GetItemCategory category_, const uint16_t modIndex_, const uint16_t price_) + const GetItemCategory category_, const uint16_t modIndex_, const uint16_t price_, + const CustomDrawFunc drawfunc_) : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), logicVal(logicVal_), hintKey(hintKey_), price(price_) { if (modIndex_ == MOD_RANDOMIZER || getItemId > 0x7D) { giEntry = std::make_shared(GetItemEntry{ itemId_, field_, static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, objectId_, modIndex_, TABLE_RANDOMIZER, static_cast(randomizerGet_), gid_, true, ITEM_FROM_NPC, - category_, static_cast(randomizerGet_), MOD_RANDOMIZER, NULL }); + category_, static_cast(randomizerGet_), MOD_RANDOMIZER, drawfunc_ }); } else { giEntry = std::make_shared(GetItemEntry{ itemId_, field_, static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, objectId_, modIndex_, TABLE_VANILLA, getItemId_, gid_, true, ITEM_FROM_NPC, category_, itemId_, modIndex_, - NULL }); + drawfunc_ }); } } Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t objectId_, const uint16_t gid_, const uint16_t textId_, const uint16_t field_, const int16_t chestAnimation_, const GetItemCategory category_, - const uint16_t modIndex_, const uint16_t price_) + const uint16_t modIndex_, const uint16_t price_, const CustomDrawFunc drawfunc_) : randomizerGet(randomizerGet_), type(type_), getItemId(getItemId_), logicVal(logicVal_), hintKey(hintKey_), price(price_) { if (modIndex_ == MOD_RANDOMIZER || getItemId > 0x7D) { @@ -44,13 +45,13 @@ Item::Item(const RandomizerGet randomizerGet_, const ItemType type_, const int16 GetItemEntry{ static_cast(randomizerGet_), field_, static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, objectId_, modIndex_, TABLE_RANDOMIZER, static_cast(randomizerGet_), gid_, true, - ITEM_FROM_NPC, category_, static_cast(randomizerGet_), MOD_RANDOMIZER, NULL }); + ITEM_FROM_NPC, category_, static_cast(randomizerGet_), MOD_RANDOMIZER, drawfunc_ }); } else { giEntry = std::make_shared( GetItemEntry{ static_cast(randomizerGet_), field_, static_cast((chestAnimation_ != CHEST_ANIM_SHORT ? 1 : -1) * (gid_ + 1)), textId_, objectId_, modIndex_, TABLE_VANILLA, getItemId_, gid_, true, ITEM_FROM_NPC, category_, - static_cast(randomizerGet_), modIndex_, NULL }); + static_cast(randomizerGet_), modIndex_, drawfunc_ }); } } diff --git a/soh/soh/Enhancements/randomizer/item.h b/soh/soh/Enhancements/randomizer/item.h index 92016bbe4..2edfdd0e2 100644 --- a/soh/soh/Enhancements/randomizer/item.h +++ b/soh/soh/Enhancements/randomizer/item.h @@ -32,10 +32,12 @@ class Item { Item(); Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t itemId_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, - uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, uint16_t price_ = 0); + uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, uint16_t price_ = 0, + CustomDrawFunc drawfunc_ = NULL); Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, uint16_t field_, - int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, uint16_t price_ = 0); + int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, uint16_t price_ = 0, + CustomDrawFunc drawfunc_ = NULL); Item(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t price_ = 0); ~Item(); diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index 0c1cedb63..6106dde90 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -13,18 +13,18 @@ void Rando::StaticData::AddItem(const RandomizerGet randomizerGet_, const ItemTy LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t itemId_, const uint16_t objectId_, const uint16_t gid_, const uint16_t textId_, const uint16_t field_, const int16_t chestAnimation_, const GetItemCategory category_, - const uint16_t modIndex_, const uint16_t price_) { + const uint16_t MODIndex_, const uint16_t price_, CustomDrawFunc drawfunc_) { itemTable[randomizerGet_] = Item(randomizerGet_, type_, getItemId_, logicVal_, hintKey_, itemId_, objectId_, gid_, - textId_, field_, chestAnimation_, category_, modIndex_, price_); + textId_, field_, chestAnimation_, category_, MODIndex_, price_, drawfunc_); } void Rando::StaticData::AddItem(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, LogicVal logicVal_, const RandomizerHintTextKey hintKey_, const uint16_t objectId_, const uint16_t gid_, const uint16_t textId_, const uint16_t field_, const int16_t chestAnimation_, const GetItemCategory category_, - const uint16_t modIndex_, const uint16_t price_) { + const uint16_t MODIndex_, const uint16_t price_, CustomDrawFunc drawfunc_) { itemTable[randomizerGet_] = Item(randomizerGet_, type_, getItemId_, logicVal_, hintKey_, objectId_, gid_, textId_, - field_, chestAnimation_, category_, modIndex_, price_); + field_, chestAnimation_, category_, MODIndex_, price_, drawfunc_); } void Rando::StaticData::AddItem(const RandomizerGet randomizerGet_, const ItemType type_, const int16_t getItemId_, @@ -33,52 +33,49 @@ void Rando::StaticData::AddItem(const RandomizerGet randomizerGet_, const ItemTy } void Rando::StaticData::InitItemTable() { - // clang-format off - AddItem(RG_NONE, ITEMTYPE_EVENT, GI_RUPEE_GREEN, LOGIC_NONE, RHT_NONE, ITEM_NONE, 0, 0, 0, 0, 0, ITEM_CATEGORY_JUNK, MOD_NONE); - // Randomizer Get Type Get Item ID Logic Value Hint Text Key Item ID Object ID Draw ID Text ID field Chest Animation Item Category Mod Index - AddItem(RG_KOKIRI_SWORD, ITEMTYPE_EQUIP, GI_SWORD_KOKIRI, LOGIC_KOKIRI_SWORD, RHT_KOKIRI_SWORD, ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_MASTER_SWORD, ITEMTYPE_EQUIP, 0xE0, LOGIC_MASTER_SWORD, RHT_MASTER_SWORD, ITEM_SWORD_MASTER, OBJECT_TOKI_OBJECTS, GID_SWORD_BGS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_MASTER_SWORD].SetCustomDrawFunc(Randomizer_DrawMasterSword); - AddItem(RG_GIANTS_KNIFE, ITEMTYPE_EQUIP, GI_SWORD_KNIFE, LOGIC_NONE, RHT_GIANTS_KNIFE, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x4B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_BIGGORON_SWORD, ITEMTYPE_EQUIP, GI_SWORD_BGS, LOGIC_BIGGORON_SWORD, RHT_BIGGORON_SWORD, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x0C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_DEKU_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_DEKU, LOGIC_NONE, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_HYLIAN_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_HYLIAN, LOGIC_NONE, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_MIRROR_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_MIRROR, LOGIC_MIRROR_SHIELD, RHT_MIRROR_SHIELD, ITEM_SHIELD_MIRROR, OBJECT_GI_SHIELD_3, GID_SHIELD_MIRROR, 0x4E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_GORON_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_GORON, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_ZORA_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_ZORA, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_IRON_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_IRON, LOGIC_IRON_BOOTS, RHT_IRON_BOOTS, ITEM_BOOTS_IRON, OBJECT_GI_BOOTS_2, GID_BOOTS_IRON, 0x53, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_HOVER_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_HOVER, LOGIC_HOVER_BOOTS, RHT_HOVER_BOOTS, ITEM_BOOTS_HOVER, OBJECT_GI_HOVERBOOTS, GID_BOOTS_HOVER, 0x54, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_BOOMERANG, ITEMTYPE_ITEM, GI_BOOMERANG, LOGIC_BOOMERANG, RHT_BOOMERANG, ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_LENS_OF_TRUTH, ITEMTYPE_ITEM, GI_LENS, LOGIC_LENS_OF_TRUTH, RHT_LENS_OF_TRUTH, ITEM_LENS, OBJECT_GI_GLASSES, GID_LENS, 0x39, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_MEGATON_HAMMER, ITEMTYPE_ITEM, GI_HAMMER, LOGIC_HAMMER, RHT_MEGATON_HAMMER, ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_STONE_OF_AGONY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, LOGIC_STONE_OF_AGONY, RHT_STONE_OF_AGONY, ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_DINS_FIRE, ITEMTYPE_ITEM, GI_DINS_FIRE, LOGIC_DINS_FIRE, RHT_DINS_FIRE, ITEM_DINS_FIRE, OBJECT_GI_GODDESS, GID_DINS_FIRE, 0xAD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_FARORES_WIND, ITEMTYPE_ITEM, GI_FARORES_WIND, LOGIC_FARORES_WIND, RHT_FARORES_WIND, ITEM_FARORES_WIND, OBJECT_GI_GODDESS, GID_FARORES_WIND, 0xAE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_NAYRUS_LOVE, ITEMTYPE_ITEM, GI_NAYRUS_LOVE, LOGIC_NAYRUS_LOVE, RHT_NAYRUS_LOVE, ITEM_NAYRUS_LOVE, OBJECT_GI_GODDESS, GID_NAYRUS_LOVE, 0xAF, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_FIRE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_FIRE, LOGIC_FIRE_ARROWS, RHT_FIRE_ARROWS, ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_ICE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_ICE, LOGIC_ICE_ARROWS, RHT_ICE_ARROWS, ITEM_ARROW_ICE, OBJECT_GI_M_ARROW, GID_ARROW_ICE, 0x71, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_LIGHT_ARROWS, ITEMTYPE_ITEM, GI_ARROW_LIGHT, LOGIC_LIGHT_ARROWS, RHT_LIGHT_ARROWS, ITEM_ARROW_LIGHT, OBJECT_GI_M_ARROW, GID_ARROW_LIGHT, 0x72, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_GERUDO_MEMBERSHIP_CARD, ITEMTYPE_ITEM, GI_GERUDO_CARD, LOGIC_GERUDO_CARD, RHT_GERUDO_MEMBERSHIP_CARD, ITEM_GERUDO_CARD, OBJECT_GI_GERUDO, GID_GERUDO_CARD, 0x7B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_MAGIC_BEAN, ITEMTYPE_ITEM, GI_BEAN, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN, ITEM_BEAN, OBJECT_GI_BEAN, GID_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_MAGIC_BEAN_PACK, ITEMTYPE_ITEM, RG_MAGIC_BEAN_PACK, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN_PACK, OBJECT_GI_BEAN, GID_BEAN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_DOUBLE_DEFENSE, ITEMTYPE_ITEM, RG_DOUBLE_DEFENSE, LOGIC_DOUBLE_DEFENSE, RHT_DOUBLE_DEFENSE, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xE9, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_DOUBLE_DEFENSE].SetCustomDrawFunc(Randomizer_DrawDoubleDefense); + AddItem(RG_NONE, ITEMTYPE_EVENT, GI_RUPEE_GREEN, LOGIC_NONE, RHT_NONE, ITEM_NONE, 0, 0, 0, 0, 0, ITEM_CATEGORY_JUNK, MOD_NONE); + // Randomizer Get Type Get Item ID Logic Value Hint Text Key Item ID Object ID Draw ID Text ID field Chest Animation Item Category MOD Index Price CustomDrawFunction + AddItem(RG_KOKIRI_SWORD, ITEMTYPE_EQUIP, GI_SWORD_KOKIRI, LOGIC_KOKIRI_SWORD, RHT_KOKIRI_SWORD, ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_MASTER_SWORD, ITEMTYPE_EQUIP, 0xE0, LOGIC_MASTER_SWORD, RHT_MASTER_SWORD, ITEM_SWORD_MASTER, OBJECT_TOKI_OBJECTS, GID_SWORD_BGS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawMasterSword); + AddItem(RG_GIANTS_KNIFE, ITEMTYPE_EQUIP, GI_SWORD_KNIFE, LOGIC_NONE, RHT_GIANTS_KNIFE, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x4B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BIGGORON_SWORD, ITEMTYPE_EQUIP, GI_SWORD_BGS, LOGIC_BIGGORON_SWORD, RHT_BIGGORON_SWORD, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x0C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_DEKU_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_DEKU, LOGIC_NONE, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_HYLIAN_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_HYLIAN, LOGIC_NONE, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_MIRROR_SHIELD, ITEMTYPE_EQUIP, GI_SHIELD_MIRROR, LOGIC_MIRROR_SHIELD, RHT_MIRROR_SHIELD, ITEM_SHIELD_MIRROR, OBJECT_GI_SHIELD_3, GID_SHIELD_MIRROR, 0x4E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_GORON_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_GORON, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_ZORA_TUNIC, ITEMTYPE_EQUIP, GI_TUNIC_ZORA, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_IRON_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_IRON, LOGIC_IRON_BOOTS, RHT_IRON_BOOTS, ITEM_BOOTS_IRON, OBJECT_GI_BOOTS_2, GID_BOOTS_IRON, 0x53, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_HOVER_BOOTS, ITEMTYPE_EQUIP, GI_BOOTS_HOVER, LOGIC_HOVER_BOOTS, RHT_HOVER_BOOTS, ITEM_BOOTS_HOVER, OBJECT_GI_HOVERBOOTS, GID_BOOTS_HOVER, 0x54, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BOOMERANG, ITEMTYPE_ITEM, GI_BOOMERANG, LOGIC_BOOMERANG, RHT_BOOMERANG, ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_LENS_OF_TRUTH, ITEMTYPE_ITEM, GI_LENS, LOGIC_LENS_OF_TRUTH, RHT_LENS_OF_TRUTH, ITEM_LENS, OBJECT_GI_GLASSES, GID_LENS, 0x39, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_MEGATON_HAMMER, ITEMTYPE_ITEM, GI_HAMMER, LOGIC_HAMMER, RHT_MEGATON_HAMMER, ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_STONE_OF_AGONY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, LOGIC_STONE_OF_AGONY, RHT_STONE_OF_AGONY, ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_DINS_FIRE, ITEMTYPE_ITEM, GI_DINS_FIRE, LOGIC_DINS_FIRE, RHT_DINS_FIRE, ITEM_DINS_FIRE, OBJECT_GI_GODDESS, GID_DINS_FIRE, 0xAD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_FARORES_WIND, ITEMTYPE_ITEM, GI_FARORES_WIND, LOGIC_FARORES_WIND, RHT_FARORES_WIND, ITEM_FARORES_WIND, OBJECT_GI_GODDESS, GID_FARORES_WIND, 0xAE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_NAYRUS_LOVE, ITEMTYPE_ITEM, GI_NAYRUS_LOVE, LOGIC_NAYRUS_LOVE, RHT_NAYRUS_LOVE, ITEM_NAYRUS_LOVE, OBJECT_GI_GODDESS, GID_NAYRUS_LOVE, 0xAF, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_FIRE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_FIRE, LOGIC_FIRE_ARROWS, RHT_FIRE_ARROWS, ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_ICE_ARROWS, ITEMTYPE_ITEM, GI_ARROW_ICE, LOGIC_ICE_ARROWS, RHT_ICE_ARROWS, ITEM_ARROW_ICE, OBJECT_GI_M_ARROW, GID_ARROW_ICE, 0x71, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_LIGHT_ARROWS, ITEMTYPE_ITEM, GI_ARROW_LIGHT, LOGIC_LIGHT_ARROWS, RHT_LIGHT_ARROWS, ITEM_ARROW_LIGHT, OBJECT_GI_M_ARROW, GID_ARROW_LIGHT, 0x72, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_GERUDO_MEMBERSHIP_CARD, ITEMTYPE_ITEM, GI_GERUDO_CARD, LOGIC_GERUDO_CARD, RHT_GERUDO_MEMBERSHIP_CARD, ITEM_GERUDO_CARD, OBJECT_GI_GERUDO, GID_GERUDO_CARD, 0x7B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_MAGIC_BEAN, ITEMTYPE_ITEM, GI_BEAN, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN, ITEM_BEAN, OBJECT_GI_BEAN, GID_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_MAGIC_BEAN_PACK, ITEMTYPE_ITEM, RG_MAGIC_BEAN_PACK, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN_PACK, OBJECT_GI_BEAN, GID_BEAN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_DOUBLE_DEFENSE, ITEMTYPE_ITEM, RG_DOUBLE_DEFENSE, LOGIC_DOUBLE_DEFENSE, RHT_DOUBLE_DEFENSE, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xE9, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawDoubleDefense); // Trade Quest Items - AddItem(RG_WEIRD_EGG, ITEMTYPE_ITEM, GI_WEIRD_EGG, LOGIC_WEIRD_EGG, RHT_WEIRD_EGG, ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_ZELDAS_LETTER, ITEMTYPE_ITEM, GI_LETTER_ZELDA, LOGIC_ZELDAS_LETTER, RHT_ZELDAS_LETTER, ITEM_LETTER_ZELDA, OBJECT_GI_LETTER, GID_LETTER_ZELDA, 0x69, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_POCKET_EGG, ITEMTYPE_ITEM, GI_POCKET_EGG, LOGIC_POCKET_EGG, RHT_POCKET_EGG, ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_COJIRO, ITEMTYPE_ITEM, GI_COJIRO, LOGIC_COJIRO, RHT_COJIRO, ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_ODD_MUSHROOM, ITEMTYPE_ITEM, GI_ODD_MUSHROOM, LOGIC_ODD_MUSHROOM, RHT_ODD_MUSHROOM, ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_ODD_POTION, ITEMTYPE_ITEM, GI_ODD_POTION, LOGIC_ODD_POULTICE, RHT_ODD_POTION, ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_POACHERS_SAW, ITEMTYPE_ITEM, GI_SAW, LOGIC_POACHERS_SAW, RHT_POACHERS_SAW, ITEM_SAW, OBJECT_GI_SAW, GID_SAW, 0x05, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_BROKEN_SWORD, ITEMTYPE_ITEM, GI_SWORD_BROKEN, LOGIC_BROKEN_SWORD, RHT_BROKEN_SWORD, ITEM_SWORD_BROKEN, OBJECT_GI_BROKENSWORD, GID_SWORD_BROKEN, 0x08, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_PRESCRIPTION, ITEMTYPE_ITEM, GI_PRESCRIPTION, LOGIC_PRESCRIPTION, RHT_PRESCRIPTION, ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_EYEBALL_FROG, ITEMTYPE_ITEM, GI_FROG, LOGIC_EYEBALL_FROG, RHT_EYEBALL_FROG, ITEM_FROG, OBJECT_GI_FROG, GID_FROG, 0x0D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_EYEDROPS, ITEMTYPE_ITEM, GI_EYEDROPS, LOGIC_EYEDROPS, RHT_EYEDROPS, ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_CLAIM_CHECK, ITEMTYPE_ITEM, GI_CLAIM_CHECK, LOGIC_CLAIM_CHECK, RHT_CLAIM_CHECK, ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_WEIRD_EGG, ITEMTYPE_ITEM, GI_WEIRD_EGG, LOGIC_WEIRD_EGG, RHT_WEIRD_EGG, ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_ZELDAS_LETTER, ITEMTYPE_ITEM, GI_LETTER_ZELDA, LOGIC_ZELDAS_LETTER, RHT_ZELDAS_LETTER, ITEM_LETTER_ZELDA, OBJECT_GI_LETTER, GID_LETTER_ZELDA, 0x69, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_POCKET_EGG, ITEMTYPE_ITEM, GI_POCKET_EGG, LOGIC_POCKET_EGG, RHT_POCKET_EGG, ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_COJIRO, ITEMTYPE_ITEM, GI_COJIRO, LOGIC_COJIRO, RHT_COJIRO, ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_ODD_MUSHROOM, ITEMTYPE_ITEM, GI_ODD_MUSHROOM, LOGIC_ODD_MUSHROOM, RHT_ODD_MUSHROOM, ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_ODD_POTION, ITEMTYPE_ITEM, GI_ODD_POTION, LOGIC_ODD_POULTICE, RHT_ODD_POTION, ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_POACHERS_SAW, ITEMTYPE_ITEM, GI_SAW, LOGIC_POACHERS_SAW, RHT_POACHERS_SAW, ITEM_SAW, OBJECT_GI_SAW, GID_SAW, 0x05, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BROKEN_SWORD, ITEMTYPE_ITEM, GI_SWORD_BROKEN, LOGIC_BROKEN_SWORD, RHT_BROKEN_SWORD, ITEM_SWORD_BROKEN, OBJECT_GI_BROKENSWORD, GID_SWORD_BROKEN, 0x08, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_PRESCRIPTION, ITEMTYPE_ITEM, GI_PRESCRIPTION, LOGIC_PRESCRIPTION, RHT_PRESCRIPTION, ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_EYEBALL_FROG, ITEMTYPE_ITEM, GI_FROG, LOGIC_EYEBALL_FROG, RHT_EYEBALL_FROG, ITEM_FROG, OBJECT_GI_FROG, GID_FROG, 0x0D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_EYEDROPS, ITEMTYPE_ITEM, GI_EYEDROPS, LOGIC_EYEDROPS, RHT_EYEDROPS, ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_CLAIM_CHECK, ITEMTYPE_ITEM, GI_CLAIM_CHECK, LOGIC_CLAIM_CHECK, RHT_CLAIM_CHECK, ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Skulltula Token - AddItem(RG_GOLD_SKULLTULA_TOKEN, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULLTULA_TOKEN, MOD_NONE); + AddItem(RG_GOLD_SKULLTULA_TOKEN, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULL_TOKEN, MOD_NONE); // Progressive Items AddItem(RG_PROGRESSIVE_HOOKSHOT, ITEMTYPE_ITEM, 0x80, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_PROGRESSIVE_HOOKSHOT); AddItem(RG_PROGRESSIVE_STRENGTH, ITEMTYPE_ITEM, 0x81, LOGIC_PROGRESSIVE_STRENGTH, RHT_PROGRESSIVE_STRENGTH); @@ -94,335 +91,248 @@ void Rando::StaticData::InitItemTable() { AddItem(RG_PROGRESSIVE_OCARINA, ITEMTYPE_ITEM, 0x8B, LOGIC_PROGRESSIVE_OCARINA, RHT_PROGRESSIVE_OCARINA); AddItem(RG_PROGRESSIVE_GORONSWORD, ITEMTYPE_ITEM, 0xD4, LOGIC_PROGRESSIVE_GORONSWORD, RHT_PROGRESSIVE_GORONSWORD); // Bottles - AddItem(RG_EMPTY_BOTTLE, ITEMTYPE_ITEM, GI_BOTTLE, LOGIC_BOTTLES, RHT_EMPTY_BOTTLE, ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_BOTTLE_WITH_MILK, ITEMTYPE_ITEM, GI_MILK_BOTTLE, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_BOTTLE_WITH_RED_POTION, ITEMTYPE_ITEM, 0x8C, LOGIC_BOTTLES, RHT_BOTTLE_WITH_RED_POTION, OBJECT_GI_LIQUID, GID_POTION_RED, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_BOTTLE_WITH_GREEN_POTION, ITEMTYPE_ITEM, 0x8D, LOGIC_BOTTLES, RHT_BOTTLE_WITH_GREEN_POTION, OBJECT_GI_LIQUID, GID_POTION_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_BOTTLE_WITH_BLUE_POTION, ITEMTYPE_ITEM, 0x8E, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_POTION, OBJECT_GI_LIQUID, GID_POTION_BLUE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_BOTTLE_WITH_FAIRY, ITEMTYPE_ITEM, 0x8F, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_BOTTLE_WITH_FISH, ITEMTYPE_ITEM, 0x90, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FISH, OBJECT_GI_FISH, GID_FISH, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_BOTTLE_WITH_BLUE_FIRE, ITEMTYPE_ITEM, 0x91, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_BOTTLE_WITH_BUGS, ITEMTYPE_ITEM, 0x92, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BUGS, OBJECT_GI_INSECT, GID_BUG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_BOTTLE_WITH_POE, ITEMTYPE_ITEM, 0x94, LOGIC_BOTTLES, RHT_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_RUTOS_LETTER, ITEMTYPE_ITEM, GI_LETTER_RUTO, LOGIC_RUTOS_LETTER, RHT_RUTOS_LETTER, ITEM_LETTER_RUTO, OBJECT_GI_BOTTLE_LETTER, GID_LETTER_RUTO, 0x99, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_BOTTLE_WITH_BIG_POE, ITEMTYPE_ITEM, 0x93, LOGIC_BOTTLE_WITH_BIG_POE, RHT_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_EMPTY_BOTTLE, ITEMTYPE_ITEM, GI_BOTTLE, LOGIC_BOTTLES, RHT_EMPTY_BOTTLE, ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BOTTLE_WITH_MILK, ITEMTYPE_ITEM, GI_MILK_BOTTLE, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BOTTLE_WITH_RED_POTION, ITEMTYPE_ITEM, 0x8C, LOGIC_BOTTLES, RHT_BOTTLE_WITH_RED_POTION, OBJECT_GI_LIQUID, GID_POTION_RED, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_GREEN_POTION, ITEMTYPE_ITEM, 0x8D, LOGIC_BOTTLES, RHT_BOTTLE_WITH_GREEN_POTION, OBJECT_GI_LIQUID, GID_POTION_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_BLUE_POTION, ITEMTYPE_ITEM, 0x8E, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_POTION, OBJECT_GI_LIQUID, GID_POTION_BLUE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_FAIRY, ITEMTYPE_ITEM, 0x8F, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_FISH, ITEMTYPE_ITEM, 0x90, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FISH, OBJECT_GI_FISH, GID_FISH, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_BLUE_FIRE, ITEMTYPE_ITEM, 0x91, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_BUGS, ITEMTYPE_ITEM, 0x92, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BUGS, OBJECT_GI_INSECT, GID_BUG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BOTTLE_WITH_POE, ITEMTYPE_ITEM, 0x94, LOGIC_BOTTLES, RHT_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_RUTOS_LETTER, ITEMTYPE_ITEM, GI_LETTER_RUTO, LOGIC_RUTOS_LETTER, RHT_RUTOS_LETTER, ITEM_LETTER_RUTO, OBJECT_GI_BOTTLE_LETTER, GID_LETTER_RUTO, 0x99, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BOTTLE_WITH_BIG_POE, ITEMTYPE_ITEM, 0x93, LOGIC_BOTTLE_WITH_BIG_POE, RHT_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); // Songs - AddItem(RG_ZELDAS_LULLABY, ITEMTYPE_SONG, 0xC1, LOGIC_ZELDAS_LULLABY, RHT_ZELDAS_LULLABY, ITEM_SONG_LULLABY, OBJECT_GI_MELODY, GID_SONG_ZELDA, 0xD4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_EPONAS_SONG, ITEMTYPE_SONG, 0xC2, LOGIC_EPONAS_SONG, RHT_EPONAS_SONG, ITEM_SONG_EPONA, OBJECT_GI_MELODY, GID_SONG_EPONA, 0xD2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_SARIAS_SONG, ITEMTYPE_SONG, 0xC3, LOGIC_SARIAS_SONG, RHT_SARIAS_SONG, ITEM_SONG_SARIA, OBJECT_GI_MELODY, GID_SONG_SARIA, 0xD1, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_SUNS_SONG, ITEMTYPE_SONG, 0xC4, LOGIC_SUNS_SONG, RHT_SUNS_SONG, ITEM_SONG_SUN, OBJECT_GI_MELODY, GID_SONG_SUN, 0xD3, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_SONG_OF_TIME, ITEMTYPE_SONG, 0xC5, LOGIC_SONG_OF_TIME, RHT_SONG_OF_TIME, ITEM_SONG_TIME, OBJECT_GI_MELODY, GID_SONG_TIME, 0xD5, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_SONG_OF_STORMS, ITEMTYPE_SONG, 0xC6, LOGIC_SONG_OF_STORMS, RHT_SONG_OF_STORMS, ITEM_SONG_STORMS, OBJECT_GI_MELODY, GID_SONG_STORM, 0xD6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_MINUET_OF_FOREST, ITEMTYPE_SONG, 0xBB, LOGIC_MINUET_OF_FOREST, RHT_MINUET_OF_FOREST, ITEM_SONG_MINUET, OBJECT_GI_MELODY, GID_SONG_MINUET, 0x73, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_BOLERO_OF_FIRE, ITEMTYPE_SONG, 0xBC, LOGIC_BOLERO_OF_FIRE, RHT_BOLERO_OF_FIRE, ITEM_SONG_BOLERO, OBJECT_GI_MELODY, GID_SONG_BOLERO, 0x74, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_SERENADE_OF_WATER, ITEMTYPE_SONG, 0xBD, LOGIC_SERENADE_OF_WATER, RHT_SERENADE_OF_WATER, ITEM_SONG_SERENADE, OBJECT_GI_MELODY, GID_SONG_SERENADE, 0x75, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_NOCTURNE_OF_SHADOW, ITEMTYPE_SONG, 0xBF, LOGIC_NOCTURNE_OF_SHADOW, RHT_NOCTURNE_OF_SHADOW, ITEM_SONG_NOCTURNE, OBJECT_GI_MELODY, GID_SONG_NOCTURNE, 0x77, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_REQUIEM_OF_SPIRIT, ITEMTYPE_SONG, 0xBE, LOGIC_REQUIEM_OF_SPIRIT, RHT_REQUIEM_OF_SPIRIT, ITEM_SONG_REQUIEM, OBJECT_GI_MELODY, GID_SONG_REQUIEM, 0x76, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_PRELUDE_OF_LIGHT, ITEMTYPE_SONG, 0xC0, LOGIC_PRELUDE_OF_LIGHT, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - // Maps and Compasses - AddItem(RG_DEKU_TREE_MAP, ITEMTYPE_MAP, 0xA5, LOGIC_NONE, RHT_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_DEKU_TREE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - AddItem(RG_DODONGOS_CAVERN_MAP, ITEMTYPE_MAP, 0xA6, LOGIC_NONE, RHT_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_DODONGOS_CAVERN_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - AddItem(RG_JABU_JABUS_BELLY_MAP, ITEMTYPE_MAP, 0xA7, LOGIC_NONE, RHT_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_JABU_JABUS_BELLY_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - AddItem(RG_FOREST_TEMPLE_MAP, ITEMTYPE_MAP, 0xA8, LOGIC_NONE, RHT_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_FOREST_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - AddItem(RG_FIRE_TEMPLE_MAP, ITEMTYPE_MAP, 0xA9, LOGIC_NONE, RHT_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_FIRE_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - AddItem(RG_WATER_TEMPLE_MAP, ITEMTYPE_MAP, 0xAA, LOGIC_NONE, RHT_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_WATER_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - AddItem(RG_SPIRIT_TEMPLE_MAP, ITEMTYPE_MAP, 0xAB, LOGIC_NONE, RHT_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_SPIRIT_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - AddItem(RG_SHADOW_TEMPLE_MAP, ITEMTYPE_MAP, 0xAC, LOGIC_NONE, RHT_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_SHADOW_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - AddItem(RG_BOTW_MAP, ITEMTYPE_MAP, 0xAD, LOGIC_NONE, RHT_BOTW_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOTW_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - AddItem(RG_ICE_CAVERN_MAP, ITEMTYPE_MAP, 0xAE, LOGIC_NONE, RHT_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_ICE_CAVERN_MAP].SetCustomDrawFunc(Randomizer_DrawMap); - AddItem(RG_DEKU_TREE_COMPASS, ITEMTYPE_COMPASS, 0x9B, LOGIC_NONE, RHT_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_DEKU_TREE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - AddItem(RG_DODONGOS_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0x9C, LOGIC_NONE, RHT_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_DODONGOS_CAVERN_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - AddItem(RG_JABU_JABUS_BELLY_COMPASS, ITEMTYPE_COMPASS, 0x9D, LOGIC_NONE, RHT_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_JABU_JABUS_BELLY_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - AddItem(RG_FOREST_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9E, LOGIC_NONE, RHT_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_FOREST_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - AddItem(RG_FIRE_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9F, LOGIC_NONE, RHT_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_FIRE_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - AddItem(RG_WATER_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA0, LOGIC_NONE, RHT_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_WATER_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - AddItem(RG_SPIRIT_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA1, LOGIC_NONE, RHT_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_SPIRIT_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - AddItem(RG_SHADOW_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA2, LOGIC_NONE, RHT_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_SHADOW_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - AddItem(RG_BOTW_COMPASS, ITEMTYPE_COMPASS, 0xA3, LOGIC_NONE, RHT_BOTW_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOTW_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - AddItem(RG_ICE_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0xA4, LOGIC_NONE, RHT_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_ICE_CAVERN_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); + AddItem(RG_ZELDAS_LULLABY, ITEMTYPE_SONG, 0xC1, LOGIC_ZELDAS_LULLABY, RHT_ZELDAS_LULLABY, ITEM_SONG_LULLABY, OBJECT_GI_MELODY, GID_SONG_ZELDA, 0xD4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_EPONAS_SONG, ITEMTYPE_SONG, 0xC2, LOGIC_EPONAS_SONG, RHT_EPONAS_SONG, ITEM_SONG_EPONA, OBJECT_GI_MELODY, GID_SONG_EPONA, 0xD2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SARIAS_SONG, ITEMTYPE_SONG, 0xC3, LOGIC_SARIAS_SONG, RHT_SARIAS_SONG, ITEM_SONG_SARIA, OBJECT_GI_MELODY, GID_SONG_SARIA, 0xD1, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SUNS_SONG, ITEMTYPE_SONG, 0xC4, LOGIC_SUNS_SONG, RHT_SUNS_SONG, ITEM_SONG_SUN, OBJECT_GI_MELODY, GID_SONG_SUN, 0xD3, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SONG_OF_TIME, ITEMTYPE_SONG, 0xC5, LOGIC_SONG_OF_TIME, RHT_SONG_OF_TIME, ITEM_SONG_TIME, OBJECT_GI_MELODY, GID_SONG_TIME, 0xD5, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SONG_OF_STORMS, ITEMTYPE_SONG, 0xC6, LOGIC_SONG_OF_STORMS, RHT_SONG_OF_STORMS, ITEM_SONG_STORMS, OBJECT_GI_MELODY, GID_SONG_STORM, 0xD6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_MINUET_OF_FOREST, ITEMTYPE_SONG, 0xBB, LOGIC_MINUET_OF_FOREST, RHT_MINUET_OF_FOREST, ITEM_SONG_MINUET, OBJECT_GI_MELODY, GID_SONG_MINUET, 0x73, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BOLERO_OF_FIRE, ITEMTYPE_SONG, 0xBC, LOGIC_BOLERO_OF_FIRE, RHT_BOLERO_OF_FIRE, ITEM_SONG_BOLERO, OBJECT_GI_MELODY, GID_SONG_BOLERO, 0x74, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SERENADE_OF_WATER, ITEMTYPE_SONG, 0xBD, LOGIC_SERENADE_OF_WATER, RHT_SERENADE_OF_WATER, ITEM_SONG_SERENADE, OBJECT_GI_MELODY, GID_SONG_SERENADE, 0x75, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_NOCTURNE_OF_SHADOW, ITEMTYPE_SONG, 0xBF, LOGIC_NOCTURNE_OF_SHADOW, RHT_NOCTURNE_OF_SHADOW, ITEM_SONG_NOCTURNE, OBJECT_GI_MELODY, GID_SONG_NOCTURNE, 0x77, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_REQUIEM_OF_SPIRIT, ITEMTYPE_SONG, 0xBE, LOGIC_REQUIEM_OF_SPIRIT, RHT_REQUIEM_OF_SPIRIT, ITEM_SONG_REQUIEM, OBJECT_GI_MELODY, GID_SONG_REQUIEM, 0x76, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_PRELUDE_OF_LIGHT, ITEMTYPE_SONG, 0xC0, LOGIC_PRELUDE_OF_LIGHT, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + // Maps + AddItem(RG_DEKU_TREE_MAP, ITEMTYPE_MAP, 0xA5, LOGIC_NONE, RHT_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawMap); + AddItem(RG_DODONGOS_CAVERN_MAP, ITEMTYPE_MAP, 0xA6, LOGIC_NONE, RHT_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawMap); + AddItem(RG_JABU_JABUS_BELLY_MAP, ITEMTYPE_MAP, 0xA7, LOGIC_NONE, RHT_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawMap); + AddItem(RG_FOREST_TEMPLE_MAP, ITEMTYPE_MAP, 0xA8, LOGIC_NONE, RHT_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawMap); + AddItem(RG_FIRE_TEMPLE_MAP, ITEMTYPE_MAP, 0xA9, LOGIC_NONE, RHT_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawMap); + AddItem(RG_WATER_TEMPLE_MAP, ITEMTYPE_MAP, 0xAA, LOGIC_NONE, RHT_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawMap); + AddItem(RG_SPIRIT_TEMPLE_MAP, ITEMTYPE_MAP, 0xAB, LOGIC_NONE, RHT_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawMap); + AddItem(RG_SHADOW_TEMPLE_MAP, ITEMTYPE_MAP, 0xAC, LOGIC_NONE, RHT_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawMap); + AddItem(RG_BOTW_MAP, ITEMTYPE_MAP, 0xAD, LOGIC_NONE, RHT_BOTW_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawMap); + AddItem(RG_ICE_CAVERN_MAP, ITEMTYPE_MAP, 0xAE, LOGIC_NONE, RHT_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawMap); + // Compasses + AddItem(RG_DEKU_TREE_COMPASS, ITEMTYPE_COMPASS, 0x9B, LOGIC_NONE, RHT_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawCompass); + AddItem(RG_DODONGOS_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0x9C, LOGIC_NONE, RHT_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawCompass); + AddItem(RG_JABU_JABUS_BELLY_COMPASS, ITEMTYPE_COMPASS, 0x9D, LOGIC_NONE, RHT_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawCompass); + AddItem(RG_FOREST_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9E, LOGIC_NONE, RHT_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawCompass); + AddItem(RG_FIRE_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0x9F, LOGIC_NONE, RHT_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawCompass); + AddItem(RG_WATER_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA0, LOGIC_NONE, RHT_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawCompass); + AddItem(RG_SPIRIT_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA1, LOGIC_NONE, RHT_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawCompass); + AddItem(RG_SHADOW_TEMPLE_COMPASS, ITEMTYPE_COMPASS, 0xA2, LOGIC_NONE, RHT_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawCompass); + AddItem(RG_BOTW_COMPASS, ITEMTYPE_COMPASS, 0xA3, LOGIC_NONE, RHT_BOTW_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawCompass); + AddItem(RG_ICE_CAVERN_COMPASS, ITEMTYPE_COMPASS, 0xA4, LOGIC_NONE, RHT_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawCompass); // Boss Keys - AddItem(RG_FOREST_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x95, LOGIC_BOSS_KEY_FOREST_TEMPLE, RHT_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); - itemTable[RG_FOREST_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - AddItem(RG_FIRE_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x96, LOGIC_BOSS_KEY_FIRE_TEMPLE, RHT_FIRE_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); - itemTable[RG_FIRE_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - AddItem(RG_WATER_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x97, LOGIC_BOSS_KEY_WATER_TEMPLE, RHT_WATER_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); - itemTable[RG_WATER_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - AddItem(RG_SPIRIT_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x98, LOGIC_BOSS_KEY_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); - itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - AddItem(RG_SHADOW_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x99, LOGIC_BOSS_KEY_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); - itemTable[RG_SHADOW_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - AddItem(RG_GANONS_CASTLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x9A, LOGIC_BOSS_KEY_GANONS_CASTLE, RHT_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); - itemTable[RG_GANONS_CASTLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - AddItem(RG_FOREST_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xAF, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_FOREST_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - AddItem(RG_FIRE_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB0, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_FIRE_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - AddItem(RG_WATER_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB1, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_WATER_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - AddItem(RG_SPIRIT_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB2, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_SPIRIT_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - AddItem(RG_SHADOW_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB3, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_SHADOW_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - AddItem(RG_BOTW_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB4, LOGIC_BOTW_KEYS, RHT_BOTW_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_BOTW_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - AddItem(RG_GTG_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB5, LOGIC_GTG_KEYS, RHT_GTG_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GTG_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - AddItem(RG_HIDEOUT_SMALL_KEY, ITEMTYPE_HIDEOUT_KEY, 0xB6, LOGIC_HIDEOUT_KEYS, RHT_HIDEOUT_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_HIDEOUT_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - AddItem(RG_GANONS_CASTLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB7, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GANONS_CASTLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - AddItem(RG_TCG_SMALL_KEY, ITEMTYPE_SMALLKEY, GI_DOOR_KEY, LOGIC_TCG_KEYS, RHT_TCG_SMALL_KEY, ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0xF3, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_NONE); - itemTable[RG_TCG_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - AddItem(RG_GUARD_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_GUARD_HOUSE_KEY, RHT_GUARD_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GUARD_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_MARKET_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_MARKET_BAZAAR_KEY, RHT_MARKET_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_MARKET_BAZAAR_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_MARKET_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_MARKET_POTION_SHOP_KEY, RHT_MARKET_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_MARKET_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_MASK_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_MASK_SHOP_KEY, RHT_MASK_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_MASK_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_MARKET_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_MARKET_SHOOTING_KEY, RHT_MARKET_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_MARKET_SHOOTING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_BOMBCHU_BOWLING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_BOMBCHU_BOWLING_KEY, RHT_BOMBCHU_BOWLING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_BOMBCHU_BOWLING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_TCG_BUILDING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_TCG_BUILDING_KEY, RHT_TCG_BUILDING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_TCG_BUILDING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_BOMBCHU_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_BOMBCHU_SHOP_KEY, RHT_BOMBCHU_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_BOMBCHU_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_RICHARDS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_RICHARDS_HOUSE_KEY, RHT_RICHARDS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_RICHARDS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_ALLEY_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_ALLEY_HOUSE_KEY, RHT_ALLEY_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_ALLEY_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_KAK_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_KAK_BAZAAR_KEY, RHT_KAK_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_KAK_BAZAAR_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_KAK_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_KAK_POTION_SHOP_KEY, RHT_KAK_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_KAK_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_BOSS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_BOSS_HOUSE_KEY, RHT_BOSS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_BOSS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_GRANNYS_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_GRANNYS_SHOP_KEY, RHT_GRANNYS_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GRANNYS_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_SKULLTULA_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_SKULLTULA_HOUSE_KEY, RHT_SKULLTULA_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_SKULLTULA_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_IMPAS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_IMPAS_HOUSE_KEY, RHT_IMPAS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_IMPAS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_WINDMILL_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_WINDMILL_KEY, RHT_WINDMILL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_WINDMILL_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_KAK_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_KAK_SHOOTING_KEY, RHT_KAK_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_KAK_SHOOTING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_DAMPES_HUT_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_DAMPES_HUT_KEY, RHT_DAMPES_HUT_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_DAMPES_HUT_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_TALONS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_TALONS_HOUSE_KEY, RHT_TALONS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_TALONS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_STABLES_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_STABLES_KEY, RHT_STABLES_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_STABLES_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_BACK_TOWER_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_BACK_TOWER_KEY, RHT_BACK_TOWER_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_BACK_TOWER_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_HYLIA_LAB_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_HYLIA_LAB_KEY, RHT_HYLIA_LAB_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_HYLIA_LAB_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); - AddItem(RG_FISHING_HOLE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_FISHING_HOLE_KEY, RHT_FISHING_HOLE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_FISHING_HOLE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey); + AddItem(RG_FOREST_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x95, LOGIC_BOSS_KEY_FOREST_TEMPLE, RHT_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawBossKey); + AddItem(RG_FIRE_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x96, LOGIC_BOSS_KEY_FIRE_TEMPLE, RHT_FIRE_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawBossKey); + AddItem(RG_WATER_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x97, LOGIC_BOSS_KEY_WATER_TEMPLE, RHT_WATER_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawBossKey); + AddItem(RG_SPIRIT_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x98, LOGIC_BOSS_KEY_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawBossKey); + AddItem(RG_SHADOW_TEMPLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x99, LOGIC_BOSS_KEY_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawBossKey); + AddItem(RG_GANONS_CASTLE_BOSS_KEY, ITEMTYPE_BOSSKEY, 0x9A, LOGIC_BOSS_KEY_GANONS_CASTLE, RHT_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawBossKey); + // Small Keys + AddItem(RG_FOREST_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xAF, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawSmallKey); + AddItem(RG_FIRE_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB0, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawSmallKey); + AddItem(RG_WATER_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB1, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawSmallKey); + AddItem(RG_SPIRIT_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB2, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawSmallKey); + AddItem(RG_SHADOW_TEMPLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB3, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawSmallKey); + AddItem(RG_BOTW_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB4, LOGIC_BOTW_KEYS, RHT_BOTW_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawSmallKey); + AddItem(RG_GTG_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB5, LOGIC_GTG_KEYS, RHT_GTG_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawSmallKey); + AddItem(RG_HIDEOUT_SMALL_KEY, ITEMTYPE_HIDEOUT_KEY, 0xB6, LOGIC_HIDEOUT_KEYS, RHT_HIDEOUT_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawSmallKey); + AddItem(RG_GANONS_CASTLE_SMALL_KEY, ITEMTYPE_SMALLKEY, 0xB7, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawSmallKey); + AddItem(RG_TCG_SMALL_KEY, ITEMTYPE_SMALLKEY, GI_DOOR_KEY, LOGIC_TCG_KEYS, RHT_TCG_SMALL_KEY, ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0xF3, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_NONE, 0, Randomizer_DrawSmallKey); + // Overworld Keys + AddItem(RG_GUARD_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_GUARD_HOUSE_KEY, RHT_GUARD_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_MARKET_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_MARKET_BAZAAR_KEY, RHT_MARKET_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_MARKET_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_MARKET_POTION_SHOP_KEY, RHT_MARKET_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_MASK_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_MASK_SHOP_KEY, RHT_MASK_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_MARKET_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_MARKET_SHOOTING_KEY, RHT_MARKET_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_BOMBCHU_BOWLING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_BOMBCHU_BOWLING_KEY, RHT_BOMBCHU_BOWLING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_TCG_BUILDING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_TCG_BUILDING_KEY, RHT_TCG_BUILDING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_BOMBCHU_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_BOMBCHU_SHOP_KEY, RHT_BOMBCHU_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_RICHARDS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_RICHARDS_HOUSE_KEY, RHT_RICHARDS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_ALLEY_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_ALLEY_HOUSE_KEY, RHT_ALLEY_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_KAK_BAZAAR_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_KAK_BAZAAR_KEY, RHT_KAK_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_KAK_POTION_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_KAK_POTION_SHOP_KEY, RHT_KAK_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_BOSS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_BOSS_HOUSE_KEY, RHT_BOSS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_GRANNYS_SHOP_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_GRANNYS_SHOP_KEY, RHT_GRANNYS_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_SKULLTULA_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_SKULLTULA_HOUSE_KEY, RHT_SKULLTULA_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_IMPAS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_IMPAS_HOUSE_KEY, RHT_IMPAS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_WINDMILL_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_WINDMILL_KEY, RHT_WINDMILL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_KAK_SHOOTING_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_KAK_SHOOTING_KEY, RHT_KAK_SHOOTING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_DAMPES_HUT_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_DAMPES_HUT_KEY, RHT_DAMPES_HUT_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_TALONS_HOUSE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_TALONS_HOUSE_KEY, RHT_TALONS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_STABLES_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_STABLES_KEY, RHT_STABLES_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_BACK_TOWER_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_BACK_TOWER_KEY, RHT_BACK_TOWER_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_HYLIA_LAB_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_HYLIA_LAB_KEY, RHT_HYLIA_LAB_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); + AddItem(RG_FISHING_HOLE_KEY, ITEMTYPE_ITEM, GI_DOOR_KEY, LOGIC_FISHING_HOLE_KEY, RHT_FISHING_HOLE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawOverworldKey); // Key Rings - AddItem(RG_FOREST_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD5, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_FOREST_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - AddItem(RG_FIRE_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD6, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_FIRE_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - AddItem(RG_WATER_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD7, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_WATER_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - AddItem(RG_SPIRIT_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD8, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_SPIRIT_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - AddItem(RG_SHADOW_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD9, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_SHADOW_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - AddItem(RG_BOTW_KEY_RING, ITEMTYPE_SMALLKEY, 0xDA, LOGIC_BOTW_KEYS, RHT_BOTW_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_BOTW_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - AddItem(RG_GTG_KEY_RING, ITEMTYPE_SMALLKEY, 0xDB, LOGIC_GTG_KEYS, RHT_GTG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GTG_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - AddItem(RG_HIDEOUT_KEY_RING, ITEMTYPE_HIDEOUT_KEY, 0xDC, LOGIC_HIDEOUT_KEYS, RHT_HIDEOUT_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_HIDEOUT_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - AddItem(RG_GANONS_CASTLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xDD, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GANONS_CASTLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - AddItem(RG_TCG_KEY_RING, ITEMTYPE_SMALLKEY, 0xDE, LOGIC_TCG_KEYS, RHT_TCG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_TCG_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); + AddItem(RG_FOREST_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD5, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawKeyRing); + AddItem(RG_FIRE_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD6, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawKeyRing); + AddItem(RG_WATER_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD7, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawKeyRing); + AddItem(RG_SPIRIT_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD8, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawKeyRing); + AddItem(RG_SHADOW_TEMPLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xD9, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawKeyRing); + AddItem(RG_BOTW_KEY_RING, ITEMTYPE_SMALLKEY, 0xDA, LOGIC_BOTW_KEYS, RHT_BOTW_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawKeyRing); + AddItem(RG_GTG_KEY_RING, ITEMTYPE_SMALLKEY, 0xDB, LOGIC_GTG_KEYS, RHT_GTG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawKeyRing); + AddItem(RG_HIDEOUT_KEY_RING, ITEMTYPE_HIDEOUT_KEY, 0xDC, LOGIC_HIDEOUT_KEYS, RHT_HIDEOUT_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawKeyRing); + AddItem(RG_GANONS_CASTLE_KEY_RING, ITEMTYPE_SMALLKEY, 0xDD, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawKeyRing); + AddItem(RG_TCG_KEY_RING, ITEMTYPE_SMALLKEY, 0xDE, LOGIC_TCG_KEYS, RHT_TCG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, 0, Randomizer_DrawKeyRing); // Dungeon Rewards - AddItem(RG_KOKIRI_EMERALD, ITEMTYPE_DUNGEONREWARD, 0xCB, LOGIC_KOKIRI_EMERALD, RHT_KOKIRI_EMERALD, ITEM_KOKIRI_EMERALD, OBJECT_GI_JEWEL, GID_KOKIRI_EMERALD, 0x80, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_GORON_RUBY, ITEMTYPE_DUNGEONREWARD, 0xCC, LOGIC_GORON_RUBY, RHT_GORON_RUBY, ITEM_GORON_RUBY, OBJECT_GI_JEWEL, GID_GORON_RUBY, 0x81, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_ZORA_SAPPHIRE, ITEMTYPE_DUNGEONREWARD, 0xCD, LOGIC_ZORA_SAPPHIRE, RHT_ZORA_SAPPHIRE, ITEM_ZORA_SAPPHIRE, OBJECT_GI_JEWEL, GID_ZORA_SAPPHIRE, 0x82, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_FOREST_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCE, LOGIC_FOREST_MEDALLION, RHT_FOREST_MEDALLION, ITEM_MEDALLION_FOREST, OBJECT_GI_MEDAL, GID_MEDALLION_FOREST, 0x3E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_FIRE_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCF, LOGIC_FIRE_MEDALLION, RHT_FIRE_MEDALLION, ITEM_MEDALLION_FIRE, OBJECT_GI_MEDAL, GID_MEDALLION_FIRE, 0x3C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_WATER_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD0, LOGIC_WATER_MEDALLION, RHT_WATER_MEDALLION, ITEM_MEDALLION_WATER, OBJECT_GI_MEDAL, GID_MEDALLION_WATER, 0x3D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_SPIRIT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD1, LOGIC_SPIRIT_MEDALLION, RHT_SPIRIT_MEDALLION, ITEM_MEDALLION_SPIRIT, OBJECT_GI_MEDAL, GID_MEDALLION_SPIRIT, 0x3F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_SHADOW_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD2, LOGIC_SHADOW_MEDALLION, RHT_SHADOW_MEDALLION, ITEM_MEDALLION_SHADOW, OBJECT_GI_MEDAL, GID_MEDALLION_SHADOW, 0x41, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_LIGHT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD3, LOGIC_LIGHT_MEDALLION, RHT_LIGHT_MEDALLION, ITEM_MEDALLION_LIGHT, OBJECT_GI_MEDAL, GID_MEDALLION_LIGHT, 0x40, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_KOKIRI_EMERALD, ITEMTYPE_DUNGEONREWARD, 0xCB, LOGIC_KOKIRI_EMERALD, RHT_KOKIRI_EMERALD, ITEM_KOKIRI_EMERALD, OBJECT_GI_JEWEL, GID_KOKIRI_EMERALD, 0x80, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_GORON_RUBY, ITEMTYPE_DUNGEONREWARD, 0xCC, LOGIC_GORON_RUBY, RHT_GORON_RUBY, ITEM_GORON_RUBY, OBJECT_GI_JEWEL, GID_GORON_RUBY, 0x81, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_ZORA_SAPPHIRE, ITEMTYPE_DUNGEONREWARD, 0xCD, LOGIC_ZORA_SAPPHIRE, RHT_ZORA_SAPPHIRE, ITEM_ZORA_SAPPHIRE, OBJECT_GI_JEWEL, GID_ZORA_SAPPHIRE, 0x82, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_FOREST_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCE, LOGIC_FOREST_MEDALLION, RHT_FOREST_MEDALLION, ITEM_MEDALLION_FOREST, OBJECT_GI_MEDAL, GID_MEDALLION_FOREST, 0x3E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_FIRE_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xCF, LOGIC_FIRE_MEDALLION, RHT_FIRE_MEDALLION, ITEM_MEDALLION_FIRE, OBJECT_GI_MEDAL, GID_MEDALLION_FIRE, 0x3C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_WATER_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD0, LOGIC_WATER_MEDALLION, RHT_WATER_MEDALLION, ITEM_MEDALLION_WATER, OBJECT_GI_MEDAL, GID_MEDALLION_WATER, 0x3D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SPIRIT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD1, LOGIC_SPIRIT_MEDALLION, RHT_SPIRIT_MEDALLION, ITEM_MEDALLION_SPIRIT, OBJECT_GI_MEDAL, GID_MEDALLION_SPIRIT, 0x3F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SHADOW_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD2, LOGIC_SHADOW_MEDALLION, RHT_SHADOW_MEDALLION, ITEM_MEDALLION_SHADOW, OBJECT_GI_MEDAL, GID_MEDALLION_SHADOW, 0x41, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_LIGHT_MEDALLION, ITEMTYPE_DUNGEONREWARD, 0xD3, LOGIC_LIGHT_MEDALLION, RHT_LIGHT_MEDALLION, ITEM_MEDALLION_LIGHT, OBJECT_GI_MEDAL, GID_MEDALLION_LIGHT, 0x40, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Generic Items - AddItem(RG_RECOVERY_HEART, ITEMTYPE_ITEM, GI_HEART, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, LOGIC_NONE, RHT_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_GREG_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, LOGIC_GREG, RHT_GREG_RUPEE, OBJECT_GI_RUPY, GID_RUPEE_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_BLUE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_BLUE, LOGIC_NONE, RHT_BLUE_RUPEE, ITEM_RUPEE_BLUE, OBJECT_GI_RUPY, GID_RUPEE_BLUE, 0xCC, 0x01, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_RED_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_RED, LOGIC_NONE, RHT_RED_RUPEE, ITEM_RUPEE_RED, OBJECT_GI_RUPY, GID_RUPEE_RED, 0xF0, 0x02, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_PURPLE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_PURPLE, LOGIC_NONE, RHT_PURPLE_RUPEE, ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_HUGE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GOLD, LOGIC_NONE, RHT_HUGE_RUPEE, ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE, LOGIC_PIECE_OF_HEART, RHT_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_HEART_CONTAINER, ITEMTYPE_ITEM, GI_HEART_CONTAINER_2, LOGIC_HEART_CONTAINER, RHT_HEART_CONTAINER, ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_ICE_TRAP, ITEMTYPE_ITEM, RG_ICE_TRAP, LOGIC_NONE, RHT_ICE_TRAP, OBJECT_GI_RUPY, GID_RUPEE_GOLD, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_MILK, ITEMTYPE_ITEM, GI_MILK, LOGIC_NONE, RHT_MILK, ITEM_MILK, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_FISH, ITEMTYPE_ITEM, GI_FISH, LOGIC_NONE, RHT_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_RECOVERY_HEART, ITEMTYPE_ITEM, GI_HEART, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, LOGIC_NONE, RHT_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_GREG_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN, LOGIC_GREG, RHT_GREG_RUPEE, OBJECT_GI_RUPY, GID_RUPEE_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_BLUE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_BLUE, LOGIC_NONE, RHT_BLUE_RUPEE, ITEM_RUPEE_BLUE, OBJECT_GI_RUPY, GID_RUPEE_BLUE, 0xCC, 0x01, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_RED_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_RED, LOGIC_NONE, RHT_RED_RUPEE, ITEM_RUPEE_RED, OBJECT_GI_RUPY, GID_RUPEE_RED, 0xF0, 0x02, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_PURPLE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_PURPLE, LOGIC_NONE, RHT_PURPLE_RUPEE, ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_HUGE_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GOLD, LOGIC_NONE, RHT_HUGE_RUPEE, ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE, LOGIC_PIECE_OF_HEART, RHT_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_HEART_CONTAINER, ITEMTYPE_ITEM, GI_HEART_CONTAINER_2, LOGIC_HEART_CONTAINER, RHT_HEART_CONTAINER, ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_ICE_TRAP, ITEMTYPE_ITEM, RG_ICE_TRAP, LOGIC_NONE, RHT_ICE_TRAP, OBJECT_GI_RUPY, GID_RUPEE_GOLD, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_MILK, ITEMTYPE_ITEM, GI_MILK, LOGIC_NONE, RHT_MILK, ITEM_MILK, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_FISH, ITEMTYPE_ITEM, GI_FISH, LOGIC_NONE, RHT_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); // Refills - AddItem(RG_BOMBS_5, ITEMTYPE_REFILL, GI_BOMBS_5, LOGIC_NONE, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_BOMBS_10, ITEMTYPE_REFILL, GI_BOMBS_10, LOGIC_NONE, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_BOMBS_20, ITEMTYPE_REFILL, GI_BOMBS_20, LOGIC_NONE, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_BOMBCHU_5, ITEMTYPE_REFILL, GI_BOMBCHUS_5, LOGIC_BOMBCHUS, RHT_BOMBCHUS_5, ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_BOMBCHU_10, ITEMTYPE_REFILL, GI_BOMBCHUS_10, LOGIC_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_BOMBCHU_20, ITEMTYPE_REFILL, GI_BOMBCHUS_20, LOGIC_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_20].SetCustomDrawFunc(Randomizer_DrawBombchuBagInLogic); - AddItem(RG_ARROWS_5, ITEMTYPE_REFILL, GI_ARROWS_SMALL, LOGIC_NONE, RHT_ARROWS_5, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_ARROWS_10, ITEMTYPE_REFILL, GI_ARROWS_MEDIUM, LOGIC_NONE, RHT_ARROWS_10, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_ARROWS_30, ITEMTYPE_REFILL, GI_ARROWS_LARGE, LOGIC_NONE, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_DEKU_NUTS_5, ITEMTYPE_REFILL, GI_NUTS_5, LOGIC_NONE, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_DEKU_NUTS_10, ITEMTYPE_REFILL, GI_NUTS_10, LOGIC_NONE, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_DEKU_SEEDS_30, ITEMTYPE_REFILL, GI_SEEDS_30, LOGIC_NONE, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_DEKU_STICK_1, ITEMTYPE_REFILL, GI_STICKS_1, LOGIC_NONE, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_RED_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_RED, LOGIC_NONE, RHT_RED_POTION_REFILL, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_GREEN_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_GREEN, LOGIC_NONE, RHT_GREEN_POTION_REFILL, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - AddItem(RG_BLUE_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_BLUE, LOGIC_NONE, RHT_BLUE_POTION_REFILL, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BOMBS_5, ITEMTYPE_REFILL, GI_BOMBS_5, LOGIC_NONE, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BOMBS_10, ITEMTYPE_REFILL, GI_BOMBS_10, LOGIC_NONE, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BOMBS_20, ITEMTYPE_REFILL, GI_BOMBS_20, LOGIC_NONE, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BOMBCHU_5, ITEMTYPE_REFILL, GI_BOMBCHUS_5, LOGIC_BOMBCHUS, RHT_BOMBCHUS_5, ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BOMBCHU_10, ITEMTYPE_REFILL, GI_BOMBCHUS_10, LOGIC_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BOMBCHU_20, ITEMTYPE_REFILL, GI_BOMBCHUS_20, LOGIC_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 0, Randomizer_DrawBombchuBagInLogic); + AddItem(RG_ARROWS_5, ITEMTYPE_REFILL, GI_ARROWS_SMALL, LOGIC_NONE, RHT_ARROWS_5, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_ARROWS_10, ITEMTYPE_REFILL, GI_ARROWS_MEDIUM, LOGIC_NONE, RHT_ARROWS_10, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_ARROWS_30, ITEMTYPE_REFILL, GI_ARROWS_LARGE, LOGIC_NONE, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_DEKU_NUTS_5, ITEMTYPE_REFILL, GI_NUTS_5, LOGIC_NONE, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_DEKU_NUTS_10, ITEMTYPE_REFILL, GI_NUTS_10, LOGIC_NONE, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_DEKU_SEEDS_30, ITEMTYPE_REFILL, GI_SEEDS_30, LOGIC_NONE, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_DEKU_STICK_1, ITEMTYPE_REFILL, GI_STICKS_1, LOGIC_NONE, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_RED_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_RED, LOGIC_NONE, RHT_RED_POTION_REFILL, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_GREEN_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_GREEN, LOGIC_NONE, RHT_GREEN_POTION_REFILL, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + AddItem(RG_BLUE_POTION_REFILL, ITEMTYPE_REFILL, GI_POTION_BLUE, LOGIC_NONE, RHT_BLUE_POTION_REFILL, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); // Treasure Game - AddItem(RG_TCG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE_WIN, LOGIC_PIECE_OF_HEART, RHT_TCG_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_LOSER_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN_LOSE, LOGIC_NONE, RHT_LOSER_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_TCG_PIECE_OF_HEART, ITEMTYPE_ITEM, GI_HEART_PIECE_WIN, LOGIC_PIECE_OF_HEART, RHT_TCG_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_LOSER_GREEN_RUPEE, ITEMTYPE_ITEM, GI_RUPEE_GREEN_LOSE, LOGIC_NONE, RHT_LOSER_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); // Shop - AddItem(RG_BUY_DEKU_NUTS_5, ITEMTYPE_SHOP, GI_NUTS_5_2, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 15); - AddItem(RG_BUY_ARROWS_30, ITEMTYPE_SHOP, GI_ARROWS_MEDIUM, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_30, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 60); - AddItem(RG_BUY_ARROWS_50, ITEMTYPE_SHOP, GI_ARROWS_LARGE, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_50, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 90); - AddItem(RG_BUY_BOMBS_525, ITEMTYPE_SHOP, GI_BOMBS_5, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_525, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 25); - AddItem(RG_BUY_DEKU_NUTS_10, ITEMTYPE_SHOP, GI_NUTS_10, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 30); - AddItem(RG_BUY_DEKU_STICK_1, ITEMTYPE_SHOP, GI_STICKS_1, LOGIC_STICKS, RHT_BUY_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 10); - AddItem(RG_BUY_BOMBS_10, ITEMTYPE_SHOP, GI_BOMBS_10, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 50); - AddItem(RG_BUY_FISH, ITEMTYPE_SHOP, GI_FISH, LOGIC_FISH_ACCESS, RHT_BUY_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 200); - AddItem(RG_BUY_RED_POTION_30, ITEMTYPE_SHOP, GI_POTION_RED, LOGIC_NONE, RHT_BUY_RED_POTION_30, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); - AddItem(RG_BUY_GREEN_POTION, ITEMTYPE_SHOP, GI_POTION_GREEN, LOGIC_BUY_MAGIC_POTION, RHT_BUY_GREEN_POTION, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); - AddItem(RG_BUY_BLUE_POTION, ITEMTYPE_SHOP, GI_POTION_BLUE, LOGIC_BUY_MAGIC_POTION, RHT_BUY_BLUE_POTION, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 100); - AddItem(RG_BUY_HYLIAN_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_HYLIAN, LOGIC_HYLIAN_SHIELD, RHT_BUY_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, 80); - AddItem(RG_BUY_DEKU_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_DEKU, LOGIC_DEKU_SHIELD, RHT_BUY_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, 40); - AddItem(RG_BUY_GORON_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_GORON, LOGIC_GORON_TUNIC, RHT_BUY_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, 200); - AddItem(RG_BUY_ZORA_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_ZORA, LOGIC_ZORA_TUNIC, RHT_BUY_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, 300); - AddItem(RG_BUY_HEART, ITEMTYPE_SHOP, GI_HEART, LOGIC_NONE, RHT_BUY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 10); - AddItem(RG_BUY_BOMBCHUS_10, ITEMTYPE_SHOP, GI_BOMBCHUS_10, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 99); - AddItem(RG_BUY_BOMBCHUS_20, ITEMTYPE_SHOP, GI_BOMBCHUS_20, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 180); - AddItem(RG_BUY_DEKU_SEEDS_30, ITEMTYPE_SHOP, GI_SEEDS_30, LOGIC_BUY_SEED, RHT_BUY_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + AddItem(RG_BUY_DEKU_NUTS_5, ITEMTYPE_SHOP, GI_NUTS_5_2, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 15); + AddItem(RG_BUY_ARROWS_30, ITEMTYPE_SHOP, GI_ARROWS_MEDIUM, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_30, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 60); + AddItem(RG_BUY_ARROWS_50, ITEMTYPE_SHOP, GI_ARROWS_LARGE, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_50, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 90); + AddItem(RG_BUY_BOMBS_525, ITEMTYPE_SHOP, GI_BOMBS_5, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_525, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 25); + AddItem(RG_BUY_DEKU_NUTS_10, ITEMTYPE_SHOP, GI_NUTS_10, LOGIC_NUTS, RHT_BUY_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + AddItem(RG_BUY_DEKU_STICK_1, ITEMTYPE_SHOP, GI_STICKS_1, LOGIC_STICKS, RHT_BUY_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 10); + AddItem(RG_BUY_BOMBS_10, ITEMTYPE_SHOP, GI_BOMBS_10, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 50); + AddItem(RG_BUY_FISH, ITEMTYPE_SHOP, GI_FISH, LOGIC_FISH_ACCESS, RHT_BUY_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 200); + AddItem(RG_BUY_RED_POTION_30, ITEMTYPE_SHOP, GI_POTION_RED, LOGIC_NONE, RHT_BUY_RED_POTION_30, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + AddItem(RG_BUY_GREEN_POTION, ITEMTYPE_SHOP, GI_POTION_GREEN, LOGIC_BUY_MAGIC_POTION, RHT_BUY_GREEN_POTION, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + AddItem(RG_BUY_BLUE_POTION, ITEMTYPE_SHOP, GI_POTION_BLUE, LOGIC_BUY_MAGIC_POTION, RHT_BUY_BLUE_POTION, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 100); + AddItem(RG_BUY_HYLIAN_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_HYLIAN, LOGIC_HYLIAN_SHIELD, RHT_BUY_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, 80); + AddItem(RG_BUY_DEKU_SHIELD, ITEMTYPE_SHOP, GI_SHIELD_DEKU, LOGIC_DEKU_SHIELD, RHT_BUY_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, 40); + AddItem(RG_BUY_GORON_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_GORON, LOGIC_GORON_TUNIC, RHT_BUY_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, 200); + AddItem(RG_BUY_ZORA_TUNIC, ITEMTYPE_SHOP, GI_TUNIC_ZORA, LOGIC_ZORA_TUNIC, RHT_BUY_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, 300); + AddItem(RG_BUY_HEART, ITEMTYPE_SHOP, GI_HEART, LOGIC_NONE, RHT_BUY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 10); + AddItem(RG_BUY_BOMBCHUS_10, ITEMTYPE_SHOP, GI_BOMBCHUS_10, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 99); + AddItem(RG_BUY_BOMBCHUS_20, ITEMTYPE_SHOP, GI_BOMBCHUS_20, LOGIC_BUY_BOMBCHUS, RHT_BUY_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 180); + AddItem(RG_BUY_DEKU_SEEDS_30, ITEMTYPE_SHOP, GI_SEEDS_30, LOGIC_BUY_SEED, RHT_BUY_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 30); AddItem(RG_SOLD_OUT, ITEMTYPE_SHOP, RG_SOLD_OUT, LOGIC_NONE, RHT_SOLD_OUT, 0); - AddItem(RG_BUY_BLUE_FIRE, ITEMTYPE_SHOP, GI_BLUE_FIRE, LOGIC_BLUE_FIRE_ACCESS, RHT_BUY_BLUE_FIRE, ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 300); - AddItem(RG_BUY_BOTTLE_BUG, ITEMTYPE_SHOP, GI_BUGS, LOGIC_BUGS_ACCESS, RHT_BUY_BOTTLE_BUG, ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); - AddItem(RG_BUY_POE, ITEMTYPE_SHOP, RG_BUY_POE, LOGIC_NONE, RHT_BUY_POE, ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); - AddItem(RG_BUY_FAIRYS_SPIRIT, ITEMTYPE_SHOP, GI_FAIRY, LOGIC_FAIRY_ACCESS, RHT_BUY_FAIRYS_SPIRIT, ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); - AddItem(RG_BUY_ARROWS_10, ITEMTYPE_SHOP, GI_ARROWS_SMALL, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_10, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 20); - AddItem(RG_BUY_BOMBS_20, ITEMTYPE_SHOP, GI_BOMBS_20, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 80); - AddItem(RG_BUY_BOMBS_30, ITEMTYPE_SHOP, GI_BOMBS_30, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_30, ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 120); - AddItem(RG_BUY_BOMBS_535, ITEMTYPE_SHOP, GI_BOMBS_5, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_535, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 35); - AddItem(RG_BUY_RED_POTION_40, ITEMTYPE_SHOP, GI_POTION_RED, LOGIC_NONE, RHT_BUY_RED_POTION_40, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 40); - AddItem(RG_BUY_RED_POTION_50, ITEMTYPE_SHOP, GI_POTION_RED, LOGIC_NONE, RHT_BUY_RED_POTION_50, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); + AddItem(RG_BUY_BLUE_FIRE, ITEMTYPE_SHOP, GI_BLUE_FIRE, LOGIC_BLUE_FIRE_ACCESS, RHT_BUY_BLUE_FIRE, ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 300); + AddItem(RG_BUY_BOTTLE_BUG, ITEMTYPE_SHOP, GI_BUGS, LOGIC_BUGS_ACCESS, RHT_BUY_BOTTLE_BUG, ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); + AddItem(RG_BUY_POE, ITEMTYPE_SHOP, RG_BUY_POE, LOGIC_NONE, RHT_BUY_POE, ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 30); + AddItem(RG_BUY_FAIRYS_SPIRIT, ITEMTYPE_SHOP, GI_FAIRY, LOGIC_FAIRY_ACCESS, RHT_BUY_FAIRYS_SPIRIT, ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); + AddItem(RG_BUY_ARROWS_10, ITEMTYPE_SHOP, GI_ARROWS_SMALL, LOGIC_BUY_ARROW, RHT_BUY_ARROWS_10, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 20); + AddItem(RG_BUY_BOMBS_20, ITEMTYPE_SHOP, GI_BOMBS_20, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 80); + AddItem(RG_BUY_BOMBS_30, ITEMTYPE_SHOP, GI_BOMBS_30, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_30, ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 120); + AddItem(RG_BUY_BOMBS_535, ITEMTYPE_SHOP, GI_BOMBS_5, LOGIC_BUY_BOMB, RHT_BUY_BOMBS_535, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, 35); + AddItem(RG_BUY_RED_POTION_40, ITEMTYPE_SHOP, GI_POTION_RED, LOGIC_NONE, RHT_BUY_RED_POTION_40, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 40); + AddItem(RG_BUY_RED_POTION_50, ITEMTYPE_SHOP, GI_POTION_RED, LOGIC_NONE, RHT_BUY_RED_POTION_50, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, 50); // Misc. - AddItem(RG_GOHMA_SOUL, ITEMTYPE_ITEM, 0xE0, LOGIC_GOHMA_SOUL, RHT_GOHMA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_GOHMA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - AddItem(RG_KING_DODONGO_SOUL, ITEMTYPE_ITEM, 0xE1, LOGIC_KING_DODONGO_SOUL, RHT_KING_DODONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_KING_DODONGO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - AddItem(RG_BARINADE_SOUL, ITEMTYPE_ITEM, 0xE2, LOGIC_BARINADE_SOUL, RHT_BARINADE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BARINADE_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - AddItem(RG_PHANTOM_GANON_SOUL, ITEMTYPE_ITEM, 0xE3, LOGIC_PHANTOM_GANON_SOUL, RHT_PHANTOM_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_PHANTOM_GANON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - AddItem(RG_VOLVAGIA_SOUL, ITEMTYPE_ITEM, 0xE4, LOGIC_VOLVAGIA_SOUL, RHT_VOLVAGIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_VOLVAGIA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - AddItem(RG_MORPHA_SOUL, ITEMTYPE_ITEM, 0xE5, LOGIC_MORPHA_SOUL, RHT_MORPHA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_MORPHA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - AddItem(RG_BONGO_BONGO_SOUL, ITEMTYPE_ITEM, 0xE6, LOGIC_BONGO_BONGO_SOUL, RHT_BONGO_BONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BONGO_BONGO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - AddItem(RG_TWINROVA_SOUL, ITEMTYPE_ITEM, 0xE7, LOGIC_TWINROVA_SOUL, RHT_TWINROVA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_TWINROVA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - AddItem(RG_GANON_SOUL, ITEMTYPE_ITEM, 0xE8, LOGIC_GANON_SOUL, RHT_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_GANON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - AddItem(RG_FISHING_POLE, ITEMTYPE_ITEM, RG_FISHING_POLE, LOGIC_FISHING_POLE, RHT_FISHING_POLE, OBJECT_GI_FISH, GID_FISHING_POLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_FISHING_POLE].SetCustomDrawFunc(Randomizer_DrawFishingPoleGI); + AddItem(RG_GOHMA_SOUL, ITEMTYPE_ITEM, 0xE0, LOGIC_GOHMA_SOUL, RHT_GOHMA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawBossSoul); + AddItem(RG_KING_DODONGO_SOUL, ITEMTYPE_ITEM, 0xE1, LOGIC_KING_DODONGO_SOUL, RHT_KING_DODONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawBossSoul); + AddItem(RG_BARINADE_SOUL, ITEMTYPE_ITEM, 0xE2, LOGIC_BARINADE_SOUL, RHT_BARINADE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawBossSoul); + AddItem(RG_PHANTOM_GANON_SOUL, ITEMTYPE_ITEM, 0xE3, LOGIC_PHANTOM_GANON_SOUL, RHT_PHANTOM_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawBossSoul); + AddItem(RG_VOLVAGIA_SOUL, ITEMTYPE_ITEM, 0xE4, LOGIC_VOLVAGIA_SOUL, RHT_VOLVAGIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawBossSoul); + AddItem(RG_MORPHA_SOUL, ITEMTYPE_ITEM, 0xE5, LOGIC_MORPHA_SOUL, RHT_MORPHA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawBossSoul); + AddItem(RG_BONGO_BONGO_SOUL, ITEMTYPE_ITEM, 0xE6, LOGIC_BONGO_BONGO_SOUL, RHT_BONGO_BONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawBossSoul); + AddItem(RG_TWINROVA_SOUL, ITEMTYPE_ITEM, 0xE7, LOGIC_TWINROVA_SOUL, RHT_TWINROVA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawBossSoul); + AddItem(RG_GANON_SOUL, ITEMTYPE_ITEM, 0xE8, LOGIC_GANON_SOUL, RHT_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawBossSoul); - AddItem(RG_OCARINA_A_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_A_BUTTON, RHT_OCARINA_A_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_OCARINA_A_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - AddItem(RG_OCARINA_C_UP_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_C_UP_BUTTON, RHT_OCARINA_C_UP_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_OCARINA_C_UP_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - AddItem(RG_OCARINA_C_DOWN_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_C_DOWN_BUTTON, RHT_OCARINA_C_DOWN_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_OCARINA_C_DOWN_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - AddItem(RG_OCARINA_C_LEFT_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_C_LEFT_BUTTON, RHT_OCARINA_C_LEFT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_OCARINA_C_LEFT_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - AddItem(RG_OCARINA_C_RIGHT_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_C_RIGHT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_OCARINA_C_RIGHT_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); + AddItem(RG_FISHING_POLE, ITEMTYPE_ITEM, RG_FISHING_POLE, LOGIC_FISHING_POLE, RHT_FISHING_POLE, OBJECT_GI_FISH, GID_FISHING_POLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawFishingPoleGI); - AddItem(RG_BOMBCHU_BAG, ITEMTYPE_ITEM, RG_BOMBCHU_BAG, LOGIC_BOMBCHUS, RHT_BOMBCHU_BAG, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOMBCHU_BAG].SetCustomDrawFunc(Randomizer_DrawBombchuBag); + AddItem(RG_OCARINA_A_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_A_BUTTON, RHT_OCARINA_A_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawOcarinaButton); + AddItem(RG_OCARINA_C_UP_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_C_UP_BUTTON, RHT_OCARINA_C_UP_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawOcarinaButton); + AddItem(RG_OCARINA_C_DOWN_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_C_DOWN_BUTTON, RHT_OCARINA_C_DOWN_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawOcarinaButton); + AddItem(RG_OCARINA_C_LEFT_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_C_LEFT_BUTTON, RHT_OCARINA_C_LEFT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawOcarinaButton); + AddItem(RG_OCARINA_C_RIGHT_BUTTON, ITEMTYPE_ITEM, GI_MAP, LOGIC_OCARINA_C_RIGHT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawOcarinaButton); - AddItem(RG_QUIVER_INF, ITEMTYPE_ITEM, RG_QUIVER_INF, LOGIC_PROGRESSIVE_BOW, RHT_QUIVER_INF, OBJECT_GI_ARROWCASE, GID_QUIVER_50, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - AddItem(RG_BOMB_BAG_INF, ITEMTYPE_ITEM, RG_BOMB_BAG_INF, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG_INF, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - AddItem(RG_BULLET_BAG_INF, ITEMTYPE_ITEM, RG_BULLET_BAG_INF, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BULLET_BAG_INF, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - AddItem(RG_STICK_UPGRADE_INF, ITEMTYPE_ITEM, RG_STICK_UPGRADE_INF, LOGIC_PROGRESSIVE_STICK_BAG, RHT_STICK_UPGRADE_INF, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - AddItem(RG_NUT_UPGRADE_INF, ITEMTYPE_ITEM, RG_NUT_UPGRADE_INF, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NUT_UPGRADE_INF, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - AddItem(RG_MAGIC_INF, ITEMTYPE_ITEM, RG_MAGIC_INF, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_INF, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - AddItem(RG_BOMBCHU_INF, ITEMTYPE_ITEM, RG_BOMBCHU_INF, LOGIC_BOMBCHUS, RHT_BOMBCHU_INF, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOMBCHU_INF].SetCustomDrawFunc(Randomizer_DrawBombchuBag); - AddItem(RG_WALLET_INF, ITEMTYPE_ITEM, RG_WALLET_INF, LOGIC_PROGRESSIVE_WALLET, RHT_WALLET_INF, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_BOMBCHU_BAG, ITEMTYPE_ITEM, RG_BOMBCHU_BAG, LOGIC_BOMBCHUS, RHT_BOMBCHU_BAG, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawBombchuBag); - AddItem(RG_SKELETON_KEY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, LOGIC_SKELETON_KEY, RHT_SKELETON_KEY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_SKELETON_KEY].SetCustomDrawFunc(Randomizer_DrawSkeletonKey); + AddItem(RG_QUIVER_INF, ITEMTYPE_ITEM, RG_QUIVER_INF, LOGIC_PROGRESSIVE_BOW, RHT_QUIVER_INF, OBJECT_GI_ARROWCASE, GID_QUIVER_50, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_BOMB_BAG_INF, ITEMTYPE_ITEM, RG_BOMB_BAG_INF, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG_INF, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_BULLET_BAG_INF, ITEMTYPE_ITEM, RG_BULLET_BAG_INF, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BULLET_BAG_INF, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_STICK_UPGRADE_INF, ITEMTYPE_ITEM, RG_STICK_UPGRADE_INF, LOGIC_PROGRESSIVE_STICK_BAG, RHT_STICK_UPGRADE_INF, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_NUT_UPGRADE_INF, ITEMTYPE_ITEM, RG_NUT_UPGRADE_INF, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NUT_UPGRADE_INF, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_MAGIC_INF, ITEMTYPE_ITEM, RG_MAGIC_INF, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_INF, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_BOMBCHU_INF, ITEMTYPE_ITEM, RG_BOMBCHU_INF, LOGIC_BOMBCHUS, RHT_BOMBCHU_INF, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, 0, Randomizer_DrawBombchuBag); + AddItem(RG_WALLET_INF, ITEMTYPE_ITEM, RG_WALLET_INF, LOGIC_PROGRESSIVE_WALLET, RHT_WALLET_INF, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_SKELETON_KEY, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, LOGIC_SKELETON_KEY, RHT_SKELETON_KEY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawSkeletonKey); AddItem(RG_TRIFORCE, ITEMTYPE_EVENT, RG_TRIFORCE, LOGIC_NONE, RHT_TRIFORCE); AddItem(RG_HINT, ITEMTYPE_EVENT, RG_HINT, LOGIC_NONE, RHT_HINT); // Individual stages of progressive items (only here for GetItemEntry purposes, not for use in seed gen) - AddItem(RG_HOOKSHOT, ITEMTYPE_ITEM, GI_HOOKSHOT, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_HOOKSHOT, ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_LONGSHOT, ITEMTYPE_ITEM, GI_LONGSHOT, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_LONGSHOT, ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_FAIRY_OCARINA, ITEMTYPE_ITEM, GI_OCARINA_FAIRY, LOGIC_PROGRESSIVE_OCARINA, RHT_FAIRY_OCARINA, ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x4A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_OCARINA_OF_TIME, ITEMTYPE_ITEM, GI_OCARINA_OOT, LOGIC_PROGRESSIVE_OCARINA, RHT_OCARINA_OF_TIME, ITEM_OCARINA_TIME, OBJECT_GI_OCARINA, GID_OCARINA_TIME, 0x3A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_20, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG, ITEM_BOMB_BAG_20, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_20, 0x58, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_BIG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_30, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIG_BOMB_BAG, ITEM_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, 0x59, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_BIGGEST_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_40, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIGGEST_BOMB_BAG, ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_FAIRY_BOW, ITEMTYPE_ITEM, GI_BOW, LOGIC_PROGRESSIVE_BOW, RHT_FAIRY_BOW, ITEM_BOW, OBJECT_GI_BOW, GID_BOW, 0x31, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_BIG_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_40, LOGIC_PROGRESSIVE_BOW, RHT_BIG_QUIVER, ITEM_QUIVER_40, OBJECT_GI_ARROWCASE, GID_QUIVER_40, 0x56, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_BIGGEST_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_50, LOGIC_PROGRESSIVE_BOW, RHT_BIGGEST_QUIVER, ITEM_QUIVER_50, OBJECT_GI_ARROWCASE, GID_QUIVER_50, 0x57, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_FAIRY_SLINGSHOT, ITEMTYPE_ITEM, GI_SLINGSHOT, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_FAIRY_SLINGSHOT, ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_BIG_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_40, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIG_BULLET_BAG, ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_BIGGEST_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_50, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIGGEST_BULLET_BAG, ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_GORONS_BRACELET, ITEMTYPE_ITEM, GI_BRACELET, LOGIC_PROGRESSIVE_STRENGTH, RHT_GORONS_BRACELET, ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_SILVER_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_SILVER, LOGIC_PROGRESSIVE_STRENGTH, RHT_SILVER_GAUNTLETS, ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_GOLDEN_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_GOLD, LOGIC_PROGRESSIVE_STRENGTH, RHT_GOLDEN_GAUNTLETS, ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_BRONZE_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, LOGIC_PROGRESSIVE_SCALE, RHT_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BRONZE_SCALE].SetCustomDrawFunc(Randomizer_DrawBronzeScale); - AddItem(RG_SILVER_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, LOGIC_PROGRESSIVE_SCALE, RHT_SILVER_SCALE, ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_GOLDEN_SCALE, ITEMTYPE_ITEM, GI_SCALE_GOLDEN, LOGIC_PROGRESSIVE_SCALE, RHT_GOLDEN_SCALE, ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_CHILD_WALLET, ITEMTYPE_ITEM, RG_CHILD_WALLET, LOGIC_PROGRESSIVE_WALLET, RHT_CHILD_WALLET, OBJECT_GI_PURSE, GID_WALLET_ADULT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_ADULT_WALLET, ITEMTYPE_ITEM, GI_WALLET_ADULT, LOGIC_PROGRESSIVE_WALLET, RHT_ADULT_WALLET, ITEM_WALLET_ADULT, OBJECT_GI_PURSE, GID_WALLET_ADULT, 0x5E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_GIANT_WALLET, ITEMTYPE_ITEM, GI_WALLET_GIANT, LOGIC_PROGRESSIVE_WALLET, RHT_GIANT_WALLET, ITEM_WALLET_GIANT, OBJECT_GI_PURSE, GID_WALLET_GIANT, 0x5F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - AddItem(RG_TYCOON_WALLET, ITEMTYPE_ITEM, RG_TYCOON_WALLET, LOGIC_PROGRESSIVE_WALLET, RHT_TYCOON_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - AddItem(RG_DEKU_NUT_BAG, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_BAG, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_DEKU_NUT_CAPACITY_30, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_30, ITEM_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_DEKU_NUT_CAPACITY_40, ITEMTYPE_ITEM, GI_NUT_UPGRADE_40, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_40, ITEM_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_DEKU_STICK_BAG, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_BAG, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_DEKU_STICK_CAPACITY_20, ITEMTYPE_ITEM, GI_STICK_UPGRADE_20, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_20, ITEM_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_STICK, 0x90, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_DEKU_STICK_CAPACITY_30, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_30, ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - AddItem(RG_MAGIC_SINGLE, ITEMTYPE_ITEM, 0x8A, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_SINGLE, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0xE4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - AddItem(RG_MAGIC_DOUBLE, ITEMTYPE_ITEM, 0x8A, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - AddItem(RG_TRIFORCE_PIECE, ITEMTYPE_ITEM, 0xDF, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_HOOKSHOT, ITEMTYPE_ITEM, GI_HOOKSHOT, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_HOOKSHOT, ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_LONGSHOT, ITEMTYPE_ITEM, GI_LONGSHOT, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_LONGSHOT, ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_FAIRY_OCARINA, ITEMTYPE_ITEM, GI_OCARINA_FAIRY, LOGIC_PROGRESSIVE_OCARINA, RHT_FAIRY_OCARINA, ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x4A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_OCARINA_OF_TIME, ITEMTYPE_ITEM, GI_OCARINA_OOT, LOGIC_PROGRESSIVE_OCARINA, RHT_OCARINA_OF_TIME, ITEM_OCARINA_TIME, OBJECT_GI_OCARINA, GID_OCARINA_TIME, 0x3A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_20, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG, ITEM_BOMB_BAG_20, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_20, 0x58, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BIG_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_30, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIG_BOMB_BAG, ITEM_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, 0x59, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_BIGGEST_BOMB_BAG, ITEMTYPE_ITEM, GI_BOMB_BAG_40, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIGGEST_BOMB_BAG, ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_FAIRY_BOW, ITEMTYPE_ITEM, GI_BOW, LOGIC_PROGRESSIVE_BOW, RHT_FAIRY_BOW, ITEM_BOW, OBJECT_GI_BOW, GID_BOW, 0x31, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BIG_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_40, LOGIC_PROGRESSIVE_BOW, RHT_BIG_QUIVER, ITEM_QUIVER_40, OBJECT_GI_ARROWCASE, GID_QUIVER_40, 0x56, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_BIGGEST_QUIVER, ITEMTYPE_ITEM, GI_QUIVER_50, LOGIC_PROGRESSIVE_BOW, RHT_BIGGEST_QUIVER, ITEM_QUIVER_50, OBJECT_GI_ARROWCASE, GID_QUIVER_50, 0x57, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_FAIRY_SLINGSHOT, ITEMTYPE_ITEM, GI_SLINGSHOT, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_FAIRY_SLINGSHOT, ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BIG_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_40, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIG_BULLET_BAG, ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_BIGGEST_BULLET_BAG, ITEMTYPE_ITEM, GI_BULLET_BAG_50, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIGGEST_BULLET_BAG, ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_GORONS_BRACELET, ITEMTYPE_ITEM, GI_BRACELET, LOGIC_PROGRESSIVE_STRENGTH, RHT_GORONS_BRACELET, ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_SILVER_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_SILVER, LOGIC_PROGRESSIVE_STRENGTH, RHT_SILVER_GAUNTLETS, ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_GOLDEN_GAUNTLETS, ITEMTYPE_ITEM, GI_GAUNTLETS_GOLD, LOGIC_PROGRESSIVE_STRENGTH, RHT_GOLDEN_GAUNTLETS, ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_BRONZE_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, LOGIC_PROGRESSIVE_SCALE, RHT_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, 0, Randomizer_DrawBronzeScale); + AddItem(RG_SILVER_SCALE, ITEMTYPE_ITEM, GI_SCALE_SILVER, LOGIC_PROGRESSIVE_SCALE, RHT_SILVER_SCALE, ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_GOLDEN_SCALE, ITEMTYPE_ITEM, GI_SCALE_GOLDEN, LOGIC_PROGRESSIVE_SCALE, RHT_GOLDEN_SCALE, ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_CHILD_WALLET, ITEMTYPE_ITEM, RG_CHILD_WALLET, LOGIC_PROGRESSIVE_WALLET, RHT_CHILD_WALLET, OBJECT_GI_PURSE, GID_WALLET_ADULT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_ADULT_WALLET, ITEMTYPE_ITEM, GI_WALLET_ADULT, LOGIC_PROGRESSIVE_WALLET, RHT_ADULT_WALLET, ITEM_WALLET_ADULT, OBJECT_GI_PURSE, GID_WALLET_ADULT, 0x5E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_GIANT_WALLET, ITEMTYPE_ITEM, GI_WALLET_GIANT, LOGIC_PROGRESSIVE_WALLET, RHT_GIANT_WALLET, ITEM_WALLET_GIANT, OBJECT_GI_PURSE, GID_WALLET_GIANT, 0x5F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + AddItem(RG_TYCOON_WALLET, ITEMTYPE_ITEM, RG_TYCOON_WALLET, LOGIC_PROGRESSIVE_WALLET, RHT_TYCOON_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_DEKU_NUT_BAG, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_BAG, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_DEKU_NUT_CAPACITY_30, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_30, ITEM_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_DEKU_NUT_CAPACITY_40, ITEMTYPE_ITEM, GI_NUT_UPGRADE_40, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_40, ITEM_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_DEKU_STICK_BAG, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_BAG, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_DEKU_STICK_CAPACITY_20, ITEMTYPE_ITEM, GI_STICK_UPGRADE_20, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_20, ITEM_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_STICK, 0x90, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_DEKU_STICK_CAPACITY_30, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_30, ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + AddItem(RG_MAGIC_SINGLE, ITEMTYPE_ITEM, 0x8A, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_SINGLE, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0xE4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + AddItem(RG_MAGIC_DOUBLE, ITEMTYPE_ITEM, 0x8A, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + AddItem(RG_TRIFORCE_PIECE, ITEMTYPE_ITEM, 0xDF, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); // clang-format on diff --git a/soh/soh/Enhancements/randomizer/static_data.h b/soh/soh/Enhancements/randomizer/static_data.h index 2b7804fd9..e547d11a0 100644 --- a/soh/soh/Enhancements/randomizer/static_data.h +++ b/soh/soh/Enhancements/randomizer/static_data.h @@ -25,11 +25,11 @@ class StaticData { static void AddItem(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t itemId_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, - uint16_t modIndex_, uint16_t price_ = 0); + uint16_t modIndex_, uint16_t price_ = 0, CustomDrawFunc drawfunc_ = NULL); static void AddItem(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t objectId_, uint16_t gid_, uint16_t textId_, uint16_t field_, int16_t chestAnimation_, GetItemCategory category_, uint16_t modIndex_, - uint16_t price_ = 0); + uint16_t price_ = 0, CustomDrawFunc drawfunc_ = NULL); static void AddItem(RandomizerGet randomizerGet_, ItemType type_, int16_t getItemId_, LogicVal logicVal_, RandomizerHintTextKey hintKey_, uint16_t price_ = 0); static void HintTable_Init(); diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 80bff54a1..130c60e32 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -704,7 +704,7 @@ extern "C" void VanillaItemTable_Init() { GET_ITEM(ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE, GI_ARROW_FIRE), GET_ITEM(ITEM_ARROW_ICE, OBJECT_GI_M_ARROW, GID_ARROW_ICE, 0x71, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE, GI_ARROW_ICE), GET_ITEM(ITEM_ARROW_LIGHT, OBJECT_GI_M_ARROW, GID_ARROW_LIGHT, 0x72, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE, GI_ARROW_LIGHT), - GET_ITEM(ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULLTULA_TOKEN, MOD_NONE, GI_SKULL_TOKEN), + GET_ITEM(ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULL_TOKEN, MOD_NONE, GI_SKULL_TOKEN), GET_ITEM(ITEM_DINS_FIRE, OBJECT_GI_GODDESS, GID_DINS_FIRE, 0xAD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE, GI_DINS_FIRE), GET_ITEM(ITEM_FARORES_WIND, OBJECT_GI_GODDESS, GID_FARORES_WIND, 0xAE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE, GI_FARORES_WIND), GET_ITEM(ITEM_NAYRUS_LOVE, OBJECT_GI_GODDESS, GID_NAYRUS_LOVE, 0xAF, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE, GI_NAYRUS_LOVE), diff --git a/soh/src/overlays/actors/ovl_En_Box/z_en_box.c b/soh/src/overlays/actors/ovl_En_Box/z_en_box.c index 9a3a8fb77..2d34eed59 100644 --- a/soh/src/overlays/actors/ovl_En_Box/z_en_box.c +++ b/soh/src/overlays/actors/ovl_En_Box/z_en_box.c @@ -611,7 +611,7 @@ void EnBox_UpdateSizeAndTexture(EnBox* this, PlayState* play) { switch (getItemCategory) { case ITEM_CATEGORY_JUNK: case ITEM_CATEGORY_SMALL_KEY: - case ITEM_CATEGORY_SKULLTULA_TOKEN: + case ITEM_CATEGORY_SKULL_TOKEN: Actor_SetScale(&this->dyna.actor, 0.005f); Actor_SetFocus(&this->dyna.actor, 20.0f); break; @@ -643,7 +643,7 @@ void EnBox_UpdateSizeAndTexture(EnBox* this, PlayState* play) { this->boxBodyDL = gGoldTreasureChestChestFrontDL; this->boxLidDL = gGoldTreasureChestChestSideAndLidDL; break; - case ITEM_CATEGORY_SKULLTULA_TOKEN: + case ITEM_CATEGORY_SKULL_TOKEN: this->boxBodyDL = gSkullTreasureChestChestFrontDL; this->boxLidDL = gSkullTreasureChestChestSideAndLidDL; break; From f17d82a9cfcd461a0633f3989eef50b575acb6f2 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Sun, 29 Jun 2025 21:44:53 +0100 Subject: [PATCH 23/24] post merge fixes --- .../3drando/hint_list/hint_list_item.cpp | 305 +++++++++--------- 1 file changed, 145 insertions(+), 160 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index 6c31b9e78..dc7447b80 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -100,7 +100,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a silvered surface", /*german*/"eine silberne Oberfläche", /*french*/"une surface argentée") // /*spanish*/una superficie plateada }, - CustomMessage("Mirror Shield", "Spiegelschild", "Bouclier Miroir")); + CustomMessage("Mirror Shield", "Spiegel-Schild", "Bouclier Miroir")); hintTextTable[RHT_GORON_TUNIC] = HintText(CustomMessage("a Goron Tunic", /*german*/"eine Goronen-Rüstung", /*french*/"une Tunique Goron"), // /*spanish*/un sayo goron @@ -115,7 +115,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("cooking clothes", /*german*/"eine Kochschürze", /*french*/"une tenue de cuisine") // /*spanish*/unos abrasantes ropajes }, - CustomMessage("Goron Tunic", "Goronen-Tunika", "Tunique Goron")); + CustomMessage("Goron Tunic", "Goronen-Rüstung", "Tunique Goron")); hintTextTable[RHT_ZORA_TUNIC] = HintText(CustomMessage("a Zora Tunic", /*german*/"eine Zora-Rüstung", /*french*/"une Tunique Zora"), // /*spanish*/un sayo zora @@ -132,7 +132,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a swimsuit", /*german*/"ein Badeanzug", /*french*/"un costume de baignade") // /*spanish*/unos ropajes sumergibles }, - CustomMessage("Zora Tunic", "Zora-Tunika", "Tunique Zora")); + CustomMessage("Zora Tunic", "Zora-Rüstung", "Tunique Zora")); hintTextTable[RHT_IRON_BOOTS] = HintText(CustomMessage("the Iron Boots", /*german*/"die Eisenstiefel€", /*french*/"une paire de Bottes de plomb"), // /*spanish*/las botas de hierro @@ -311,7 +311,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a magma missile", /*german*/"eine vulkanische Rakete", /*french*/"un missile volcanique") // /*spanish*/el misil abrasador }, - CustomMessage("Fire Arrow", "Feuerpfeil", "Flèche de Feu")); + CustomMessage("Fire Arrow", "Feuer-Pfeile", "Flèche de Feu")); hintTextTable[RHT_ICE_ARROWS] = HintText(CustomMessage("the Ice Arrows", /*german*/"die Eis-Pfeile€", /*french*/"les Flèches de Glace"), // /*spanish*/la flecha de hielo @@ -328,7 +328,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("an iceberg maker", /*german*/"ein Eisbergmacher", /*french*/"une aiguille glaciale") // /*spanish*/el control de escarcha }, - CustomMessage("Ice Arrow", "Eispfeil", "Flèche de Glace")); + CustomMessage("Ice Arrow", "Eis-Pfeile", "Flèche de Glace")); hintTextTable[RHT_LIGHT_ARROWS] = HintText(CustomMessage("the Light Arrows", /*german*/"die Licht-Pfeile€", /*french*/"les Flèches de Lumière"), // /*spanish*/la flecha de luz @@ -345,7 +345,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("the lighting bolts", /*german*/"die Lichtstifte€", /*french*/"l'éclair sacré") // /*spanish*/las puntas resplandecientes }, - CustomMessage("Light Arrow", "Lichtpfeil", "Flèche de Lumière")); + CustomMessage("Light Arrow", "Licht-Pfeile", "Flèche de Lumière")); hintTextTable[RHT_GERUDO_MEMBERSHIP_CARD] = HintText(CustomMessage("the Gerudo Membership Card", /*german*/"der Gerudo-Pass", /*french*/"la Carte Gerudo"), // /*spanish*/el pase de socio gerudo @@ -416,7 +416,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("one percent of a curse", /*german*/"ein Prozent eines Fluches", /*french*/"un centième de malédiction") // /*spanish*/una centésima de una maldición }, - CustomMessage("Gold Skulltula Token", "Goldenes Skulltula-Symbol", "Symbole de Skulltula d'Or")); + CustomMessage("Gold Skulltula Token", "Skulltula-Symbol", "Symbole de Skulltula d'Or")); hintTextTable[RHT_POCKET_EGG] = HintText(CustomMessage("the Pocket Egg", /*german*/"das Ei", /*french*/"l'Oeuf de Poche"), // /*spanish*/el huevo de bolsillo @@ -505,7 +505,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a shattered slicer", /*german*/"ein zersplitterter Schneider", /*french*/"une arme cassée") // /*spanish*/una rebanadora rota }, - CustomMessage("Broken Goron's Sword", "Zerbrochenes Goronen-Schwert", "Épée Brisée de Goron")); + CustomMessage("Broken Goron's Sword", "zerbr. Goronen-Schwert", "Épée Brisée de Goron")); hintTextTable[RHT_PRESCRIPTION] = HintText(CustomMessage("the Prescription", /*german*/"ein Rezept", /*french*/"une Ordonnance"), // /*spanish*/la receta @@ -568,7 +568,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("the BOING! chain", /*german*/"die BOING!-Kette", /*french*/"la chaîne de BOING!") // /*spanish*/una cadena retráctil }, - CustomMessage("Progressive Hookshot", "Progressiver Fanghaken", "Grappin (prog.)")); + CustomMessage("Progressive Hookshot", "Fanghaken (prog.)", "Grappin (prog.)")); hintTextTable[RHT_PROGRESSIVE_STRENGTH] = HintText(CustomMessage("a Strength Upgrade", /*german*/"eine Kraftsteigerung", /*french*/"une Amélioration de Force"), // /*spanish*/un aumento de fuerza @@ -583,7 +583,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("the heavy lifty", /*german*/"der Schwerlastheber", /*french*/"la puissance de dix hommes") // /*spanish*/un levantamiento pesado }, - CustomMessage("Strength Upgrade", "Progressives Kraft-Upgrade", "Amélioration de Force (prog.)")); + CustomMessage("Strength Upgrade", "Stärke (prog.)", "Amélioration de Force (prog.)")); hintTextTable[RHT_PROGRESSIVE_BOMB_BAG] = HintText(CustomMessage("a Bomb Bag", /*german*/"eine Bombentasche", /*french*/"un Sac de Bombes"), // /*spanish*/un saco de bombas @@ -598,7 +598,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a blast bag", /*german*/"ein Dodongomagen", /*french*/"un estomac de Dodongo") // /*spanish*/un zurrón de estallidos }, - CustomMessage("Progressive Bomb Bag", "Progressive Bombentasche", "Sac de Bombes (prog.)")); + CustomMessage("Progressive Bomb Bag", "Bombentasche (prog.)", "Sac de Bombes (prog.)")); hintTextTable[RHT_PROGRESSIVE_BOW] = HintText(CustomMessage("a Fairy Bow", /*german*/"ein Feen-Bogen", /*french*/"l'Arc des Fées"), // /*spanish*/un arco de las hadas @@ -611,7 +611,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a danger dart launcher", /*german*/"ein Pfeilwerfer", /*french*/"un tire-fléchette") // /*spanish*/un peligroso lanzadardos }, - CustomMessage("Progressive Bow", "Progressiver Bogen", "Arc (prog.)")); + CustomMessage("Progressive Bow", "Bogen (prog.)", "Arc (prog.)")); hintTextTable[RHT_PROGRESSIVE_SLINGSHOT] = HintText(CustomMessage("a Slingshot", /*german*/"eine Feen-Schleuder", /*french*/"un Lance-Pierre"), // /*spanish*/una resortera de las hadas @@ -626,7 +626,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a child's catapult", /*german*/"ein Kinderkatapult", /*french*/"un jouet d'enfant") // /*spanish*/una catapulta infantil }, - CustomMessage("Progressive Slingshot", "Progressive Steinschleuder", "Lance-Pierre (prog.)")); + CustomMessage("Progressive Slingshot", "Schleuder (prog.)", "Lance-Pierre (prog.)")); hintTextTable[RHT_PROGRESSIVE_WALLET] = HintText(CustomMessage("a Wallet", /*german*/"eine Geldbörse", /*french*/"une Bourse"), // /*spanish*/una bolsa de rupias @@ -641,7 +641,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a portable bank", /*german*/"eine tragbare Bank", /*french*/"une petite banque") // /*spanish*/un banco portable }, - CustomMessage("Progressive Wallet", "Progressive Geldbörse", "Bourse (prog.)")); + CustomMessage("Progressive Wallet", "Geldbörse (prog.)", "Bourse (prog.)")); hintTextTable[RHT_PROGRESSIVE_SCALE] = HintText(CustomMessage("a Zora Scale", /*german*/"eine Zora-Schuppe", /*french*/"une Écaille Zora"), // /*spanish*/una escama Zora @@ -654,7 +654,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a piece of Zora", /*german*/"ein Zora-Fragment", /*french*/"un morceau de Zora") // /*spanish*/un fragmento de Zora }, - CustomMessage("Progressive Scale", "Progressive Schuppe", "Écaille (prog.)")); + CustomMessage("Progressive Scale", "Zora-Schuppe (prog.)", "Écaille (prog.)")); hintTextTable[RHT_PROGRESSIVE_NUT_UPGRADE] = HintText(CustomMessage("Deku Nut Capacity", /*german*/"Deku-Nuß-Kapazität", /*french*/"une Augmentation de Noix Mojo"), // /*spanish*/un aumento de nueces deku @@ -669,7 +669,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("flashbang storage", /*german*/"Blendgranatenvorrat", /*french*/"un sac à noix") // /*spanish*/más frutos aturdidores }, - CustomMessage("Progressive Nut Capacity", "Progressive Nuß-Kapazität", "Capacité de Noix (prog.)")); + CustomMessage("Progressive Nut Capacity", "Nuß-Kapazität (prog.)", "Capacité de Noix (prog.)")); hintTextTable[RHT_PROGRESSIVE_STICK_UPGRADE] = HintText(CustomMessage("Deku Stick Capacity", /*german*/"Deku-Stab-Kapazität", /*french*/"une augmentation de bâtons Mojo"), // /*spanish*/un aumento de palos deku @@ -682,7 +682,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("more flammable twigs", /*german*/"mehr entflammbare Zweige", /*french*/"beaucoup de branches") // /*spanish*/más varas }, - CustomMessage("Progressive Stick Capacity", "Progressive Stab-Kapazität", "Capacité de Bâtons (prog.)")); + CustomMessage("Progressive Stick Capacity", "Stab-Kapazität (prog.)", "Capacité de Bâtons (prog.)")); hintTextTable[RHT_PROGRESSIVE_MAGIC_METER] = HintText(CustomMessage("a Magic Meter", /*german*/"Magische Kraft", /*french*/"une Jauge de Magie"), // /*spanish*/un aumento de poder mágico @@ -697,7 +697,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a green rectangle", /*german*/"ein grünes Rechteck", /*french*/"un rectangle vert") // /*spanish*/una verduzca barra }, - CustomMessage("Progressive Magic Meter", "Progressives Magisches Maß", "Jauge de Magie (prog.)")); + CustomMessage("Progressive Magic Meter", "Magische Kraft (prog.)", "Jauge de Magie (prog.)")); hintTextTable[RHT_PROGRESSIVE_OCARINA] = HintText(CustomMessage("an Ocarina", /*german*/"eine Okarina", /*french*/"un ocarina"), // /*spanish*/una ocarina @@ -712,7 +712,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a music maker", /*german*/"ein Musikmacher", /*french*/"un porteur de chansons") // /*spanish*/un instrumento }, - CustomMessage("Progressive Ocarina", "Progressive Okarina", "Ocarina (prog.)")); + CustomMessage("Progressive Ocarina", "Okarina (prog.)", "Ocarina (prog.)")); hintTextTable[RHT_PROGRESSIVE_BOMBCHUS] = HintText(CustomMessage("Bombchus", /*german*/"Krabbelminen€", /*french*/"un paquet de Missiles"), // /*spanish*/unos bombchus @@ -731,7 +731,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("trail blazers", /*german*/"Vorreiter€", /*french*/"un zigzag éclatant") // /*spanish*/unas ratas propulsadas }, - CustomMessage("Progressive Bombchu", "Progressive Krabbelminen", "Missiles (prog.)")); + CustomMessage("Progressive Bombchu", "Krabbelminen (prog.)", "Missiles (prog.)")); hintTextTable[RHT_PROGRESSIVE_GORONSWORD] = HintText(CustomMessage("a Goron Sword", /*german*/"ein Goronen-Schwert", /*french*/"une épée Goron"), // /*spanish*/una espada goron @@ -744,7 +744,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a Goron weapon", /*german*/"eine Goronenwaffe", /*french*/"une arme Goron") // /*spanish*/un arma goron }, - CustomMessage("Progressive Goron Sword", "Progressives Goronen-Schwert", "Épée Goron (prog.)")); + CustomMessage("Progressive Goron Sword", "Goronen-Schwert (prog.)", "Épée Goron (prog.)")); hintTextTable[RHT_EMPTY_BOTTLE] = HintText(CustomMessage("a bottle", /*german*/"eine leere Flasche", /*french*/"un flacon vide"), // /*spanish*/una botella @@ -774,7 +774,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a baby's breakfast", /*german*/"ein Babyfrühstück", /*french*/"du jus pour bébé") // /*spanish*/un trago para bebés }, - CustomMessage("Bottle with Milk", "Flasche mit Milch", "Bouteille avec du Lait")); + CustomMessage("Bottle with Milk", "Flasche (Milch)", "Bouteille avec du Lait")); hintTextTable[RHT_BOTTLE_WITH_RED_POTION] = HintText(CustomMessage("a Red Potion Bottle", /*german*/"eine Flasche mit rotem Elixier", /*french*/"un flacon de potion rouge"), // /*spanish*/una botella de poción roja @@ -787,7 +787,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a red liquid", /*german*/"eine rote Flüssigkeit", /*french*/"un liquide rouge") // /*spanish*/un remedio rojizo }, - CustomMessage("Bottle with Red Potion", "Flasche mit rotem Elixier", "Bouteille avec une Potion Rouge")); + CustomMessage("Bottle with Red Potion", "Flasche (rotes Elixier)", "Bouteille avec une Potion Rouge")); hintTextTable[RHT_BOTTLE_WITH_GREEN_POTION] = HintText(CustomMessage("a Green Potion Bottle", /*german*/"eine Flasche mit grünem Elixier", /*french*/"un flacon de potion verte"), // /*spanish*/una botella de poción verde @@ -800,7 +800,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a green liquid", /*german*/"eine grüne Flüssigkeit", /*french*/"un liquide vert") // /*spanish*/un remedio verduzco }, - CustomMessage("Bottle with Green Potion", "Flasche mit grünem Elixier", "Bouteille avec une Potion Verte")); + CustomMessage("Bottle with Green Potion", "Flasche (Grünes Elixier)", "Bouteille avec une Potion Verte")); hintTextTable[RHT_BOTTLE_WITH_BLUE_POTION] = HintText(CustomMessage("a Blue Potion Bottle", /*german*/"eine Flasche mit blauem Elixier", /*french*/"un flacon de potion bleue"), // /*spanish*/una botella de poción azul @@ -810,7 +810,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("an ailment antidote", /*german*/"ein Allheilmittel", /*french*/"l'élixir ultime"), // /*spanish*/un antídoto para el dolor - CustomMessage("a blue liquid", /*german*/"eine blaue Flüssigkeit", /*french*/"un liquide bleu") + CustomMessage("a blue liquid", /*german*/"Flasche (Blaues Elixier)", /*french*/"un liquide bleu") // /*spanish*/un remedio índigo }, CustomMessage("Bottle with Blue Potion", "Flasche mit blauem Elixier", "Bouteille avec une Potion Bleue")); @@ -828,7 +828,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("Navi's cousin", /*german*/"Navis Cousine", /*french*/"le cousin de Navi") // /*spanish*/una prima de Navi }, - CustomMessage("Bottle with Fairy", "Flasche mit Fee", "Bouteille avec une Fée")); + CustomMessage("Bottle with Fairy", "Flasche (Fee)", "Bouteille avec une Fée")); hintTextTable[RHT_BOTTLE_WITH_FISH] = HintText(CustomMessage("a Fish Bottle", /*german*/"eine Flasche mit Fisch", /*french*/"un poisson en flacon"), // /*spanish*/un pez en una botella @@ -841,7 +841,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a deity's snack", /*german*/"ein göttlicher Snack", /*french*/"le repas d'un dieu marin") // /*spanish*/un tentempié de cierta deidad }, - CustomMessage("Bottle with Fish", "Flasche mit Fisch", "Bouteille avec un Poisson")); + CustomMessage("Bottle with Fish", "Flasche (Fisch)", "Bouteille avec un Poisson")); hintTextTable[RHT_BOTTLE_WITH_BLUE_FIRE] = HintText(CustomMessage("a Blue Fire Bottle", /*german*/"eine Flasche mit blauem Feuer", /*french*/"une flamme bleue en flacon"), // /*spanish*/una botella de fuego azul @@ -854,7 +854,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("an icemelt jar", /*german*/"ein eisschmelzendes Gefäß", /*french*/"un brasier glacial") // /*spanish*/unas brasas enfrascadas }, - CustomMessage("Bottle with Blue Fire", "Flasche mit blauem Feuer", "Bouteille avec une Flamme Bleue")); + CustomMessage("Bottle with Blue Fire", "Flasche (Blaues Feuer)", "Bouteille avec une Flamme Bleue")); hintTextTable[RHT_BOTTLE_WITH_BUGS] = HintText(CustomMessage("a Bug Bottle", /*german*/"eine Flasche mit Käfern", /*french*/"un insecte en flacon"), // /*spanish*/unos insectos en una botella @@ -867,7 +867,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("Skulltula finders", /*german*/"Skulltula-Finder", /*french*/"une poignée de trouve-Skulltula") // /*spanish*/unos rastreadores de skulltulas }, - CustomMessage("Bottle with Bugs", "Flasche mit Wanzen", "Bouteille avec des Insectes")); + CustomMessage("Bottle with Bugs", "Flasche (Käfer)", "Bouteille avec des Insectes")); hintTextTable[RHT_BOTTLE_WITH_POE] = HintText(CustomMessage("a Poe Bottle", /*german*/"eine Flasche mit Irrlicht", /*french*/"un Esprit en flacon"), // /*spanish*/un Poe en una botella @@ -880,7 +880,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a face in the jar", /*german*/"ein Gesicht im Gefäß", /*french*/"un visage dans un bocal") // /*spanish*/una expresión enfrascada }, - CustomMessage("Bottle with Poe", "Flasche mit einem Geist", "Bouteille avec un Esprit")); + CustomMessage("Bottle with Poe", "Flasche (Irrlicht)", "Bouteille avec un Esprit")); hintTextTable[RHT_BOTTLE_WITH_BIG_POE] = HintText(CustomMessage("a Big Poe Bottle", /*german*/"eine Flasche mit Nachtschwärmer", /*french*/"une Ame en flacon"), // /*spanish*/un Gran Poe en una botella @@ -893,7 +893,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a sidequest spirit", /*german*/"ein Nebenmissionsgeist", /*french*/"un précieux esprit") // /*spanish*/un buen valorado espíritu }, - CustomMessage("Bottle with Big Poe", "Flasche mit Seele", "Bouteille avec une Âme")); + CustomMessage("Bottle with Big Poe", "Flasche (Nachtschwärmer)", "Bouteille avec une Âme")); hintTextTable[RHT_RUTOS_LETTER] = HintText(CustomMessage("Ruto's Letter", /*german*/"Rutos Brief", /*french*/"la lettre de Ruto"), // /*spanish*/la carta de Ruto @@ -910,7 +910,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a fishy stationery", /*german*/"fischiges Briefpapier", /*french*/"un papier mouillé") // /*spanish*/un mensaje de ayuda }, - CustomMessage("Bottle with Ruto's Letter", "Flasche mit Rutos Brief", "Bouteille avec la Lettre de Ruto")); + CustomMessage("Bottle with Ruto's Letter", "Flasche (Rutos Brief)", "Bouteille avec la Lettre de Ruto")); hintTextTable[RHT_ZELDAS_LULLABY] = HintText(CustomMessage("Zelda's Lullaby", /*german*/"Zeldas Wiegenlied", /*french*/"la berceuse de Zelda"), // /*spanish*/la Nana de Zelda @@ -1105,7 +1105,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("some mossy blueprints", /*german*/"moosige Baupläne€", /*french*/"un plan boisé") // /*spanish*/unos planos musgosos }, - CustomMessage("Great Deku Tree Map", "Karte des Deku-Baums", "Carte de l'Arbre Mojo")); + CustomMessage("Great Deku Tree Map", "Karte (Deku-Baum)", "Carte de l'Arbre Mojo")); hintTextTable[RHT_DODONGOS_CAVERN_MAP] = HintText(CustomMessage("the Dodongo's Cavern Map", /*german*/"die Labyrinth-Karte von Dodongos Höhle", /*french*/"la carte de la Caverne Dodongo"), // /*spanish*/el mapa de la Cueva de los Dodongos @@ -1118,7 +1118,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("some rocky blueprints", /*german*/"felsige Baupläne€", /*french*/"un plan rocheux") // /*spanish*/unos planos rocosos }, - CustomMessage("Dodongo's Cavern Map", "Karte der Dodongo-Höhle", "Carte de la Caverne Dodongo")); + CustomMessage("Dodongo's Cavern Map", "Karte (Dodongos Höhle)", "Carte de la Caverne Dodongo")); hintTextTable[RHT_JABU_JABUS_BELLY_MAP] = HintText(CustomMessage("the Jabu-Jabu's Belly Map", /*german*/"die Labyrinth-Karte von Jabu-Jabus Bauch", /*french*/"la carte de Jabu-Jabu"), // /*spanish*/el mapa de la Tripa de Jabu-Jabu @@ -1131,7 +1131,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("some fishy blueprints", /*german*/"fischige Baupläne€", /*french*/"un plan digéré") // /*spanish*/unos planos digestos }, - CustomMessage("Jabu-Jabu's Belly Map", "Karte des Jabu-Jabu-Bauchs", "Carte du Ventre de Jabu-Jabu")); + CustomMessage("Jabu-Jabu's Belly Map", "Karte (Jabu-Jabus Bauch)", "Carte du Ventre de Jabu-Jabu")); hintTextTable[RHT_FOREST_TEMPLE_MAP] = HintText(CustomMessage("the Forest Temple Map", /*german*/"die Labyrinth-Karte des Waldtempels", /*french*/"la carte du Temple de la Forêt"), // /*spanish*/el mapa del Templo del Bosque @@ -1144,7 +1144,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("some sylvan blueprints", /*german*/"waldige Baupläne€", /*french*/"un plan sylvestre") // /*spanish*/unos planos enselvados }, - CustomMessage("Forest Temple Map", "Karte des Waldtempels", "Carte du Temple de la Forêt")); + CustomMessage("Forest Temple Map", "Karte (Waldtempel)", "Carte du Temple de la Forêt")); hintTextTable[RHT_FIRE_TEMPLE_MAP] = HintText(CustomMessage("the Fire Temple Map", /*german*/"die Labyrinth-Karte des Feuertempels", /*french*/"la carte du Temple du Feu"), // /*spanish*/el mapa del Templo del Fuego @@ -1157,7 +1157,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("some molten blueprints", /*german*/"geschmolzene Baupläne€", /*french*/"un plan fondu") // /*spanish*/unos planos fundidos }, - CustomMessage("Fire Temple Map", "Karte des Feuertempels", "Carte due Temple de Feu")); + CustomMessage("Fire Temple Map", "Karte (Feuertempel)", "Carte due Temple de Feu")); hintTextTable[RHT_WATER_TEMPLE_MAP] = HintText(CustomMessage("the Water Temple Map", /*german*/"die Labyrinth-Karte des Wassertempels", /*french*/"la carte du Temple de l'Eau"), // /*spanish*/el mapa del Templo del Agua @@ -1170,7 +1170,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("some wet blueprints", /*german*/"nasse Baupläne€", /*french*/"un plan humide") // /*spanish*/unos planos mojados }, - CustomMessage("Water Temple Map", "Karte des Wassertempels", "Carte du Temple de l'Eau")); + CustomMessage("Water Temple Map", "Karte (Wassertempel)", "Carte du Temple de l'Eau")); hintTextTable[RHT_SPIRIT_TEMPLE_MAP] = HintText(CustomMessage("the Spirit Temple Map", /*german*/"die Labyrinth-Karte des Geistertempels", /*french*/"la carte du Temple de l'Esprit"), // /*spanish*/el mapa del Templo del Espíritu @@ -1183,7 +1183,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("some sandy blueprints", /*german*/"sandige Baupläne€", /*french*/"un plan sableux") // /*spanish*/unos planos arenosos }, - CustomMessage("Spirit Temple Map", "Karte des Geistertempels", "Carte due Temple de l'Esprit")); + CustomMessage("Spirit Temple Map", "Karte (Geistertempel)", "Carte due Temple de l'Esprit")); hintTextTable[RHT_SHADOW_TEMPLE_MAP] = HintText(CustomMessage("the Shadow Temple Map", /*german*/"die Labyrinth-Karte des Schattentempels", /*french*/"la carte du Temple de l'Ombre"), // /*spanish*/el mapa del Templo de las Sombras @@ -1196,7 +1196,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("some creepy blueprints", /*german*/"gruselige Baupläne€", /*french*/"un plan sinistre") // /*spanish*/unos planos siniestras }, - CustomMessage("Shadow Temple Map", "Karte des Schattentempels", "Carte du Temple de l'Ombre")); + CustomMessage("Shadow Temple Map", "Karte (Schattentempel)", "Carte du Temple de l'Ombre")); hintTextTable[RHT_BOTW_MAP] = HintText(CustomMessage("the Bottom of the Well Map", /*german*/"die Labyrinth-Karte vom Grund des Brunnens", /*french*/"la carte du fond du Puits"), // /*spanish*/el mapa del Fondo del pozo @@ -1209,7 +1209,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("some moldy blueprints", /*german*/"schimmelige Baupläne€", /*french*/"un plan moisi") // /*spanish*/unos planos mohosos }, - CustomMessage("Bottom of the Well Map", "Karte des Grund des Brunnens", "Carte du Puits")); + CustomMessage("Bottom of the Well Map", "Karte (Grund des Brunnens)", "Carte du Puits")); hintTextTable[RHT_ICE_CAVERN_MAP] = HintText(CustomMessage("the Ice Cavern Map", /*german*/"die Labyrinth-Karte der Eishöhle", /*french*/"la carte de la Caverne Polaire"), // /*spanish*/el mapa de la Caverna de hielo @@ -1222,7 +1222,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("some polar blueprints", /*german*/"polare Baupläne€", /*french*/"un plan polaire") // /*spanish*/unos planos polars }, - CustomMessage("Ice Cavern Map", "Karte der Eishöhle", "Carte de la Caverne Polaire")); + CustomMessage("Ice Cavern Map", "Karte (Eishöhle)", "Carte de la Caverne Polaire")); hintTextTable[RHT_DEKU_TREE_COMPASS] = HintText(CustomMessage("the Deku Tree Compass", /*german*/"der Kompaß des Deku-Baumes", /*french*/"la boussole de l'Arbre Mojo"), // /*spanish*/la brújula del Gran Árbol Deku @@ -1235,7 +1235,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a mossy magnetic needle", /*german*/"eine moosige Magnetnadel", /*french*/"une aimant boisée") // /*spanish*/un imán musgoso }, - CustomMessage("Great Deku Tree Compass", "Kompaß des Deku-Baums", "Boussole de l'Arbre Mojo")); + CustomMessage("Great Deku Tree Compass", "Kompaß (Deku-Baum)", "Boussole de l'Arbre Mojo")); hintTextTable[RHT_DODONGOS_CAVERN_COMPASS] = HintText(CustomMessage("the Dodongo's Cavern Compass", /*german*/"der Kompaß von Dodongos Höhle", /*french*/"la boussole de la Caverne Dodongo"), // /*spanish*/la brújula de la Cueva de los Dodongos @@ -1248,7 +1248,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a rocky magnetic needle", /*german*/"eine felsige Magnetnadel", /*french*/"une aimant rocheux") // /*spanish*/un imán rocoso }, - CustomMessage("Dodongo's Cavern Compass", "Kompaß der Dodongo-Höhle", "Boussole de la Caverne Dodongo")); + CustomMessage("Dodongo's Cavern Compass", "Kompaß (Dodongos Höhle)", "Boussole de la Caverne Dodongo")); hintTextTable[RHT_JABU_JABUS_BELLY_COMPASS] = HintText(CustomMessage("the Jabu-Jabu's Belly Compass", /*german*/"der Kompaß von Jabu-Jabus Bauch", /*french*/"la boussole de Jabu-Jabu"), // /*spanish*/la brújula de la Tripa de Jabu-Jabu @@ -1261,7 +1261,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a fishy magnetic needle", /*german*/"eine fischige Magnetnadel", /*french*/"une aimant digéré") // /*spanish*/un imán digesto }, - CustomMessage("Jabu-Jabu's Belly Compass", "Kompaß des Jabu-Jabu-Bauchs", "Boussole du Ventre de Jabu-Jabu")); + CustomMessage("Jabu-Jabu's Belly Compass", "Kompaß (Jabu-Jabus Bauch)", "Boussole du Ventre de Jabu-Jabu")); hintTextTable[RHT_FOREST_TEMPLE_COMPASS] = HintText(CustomMessage("the Forest Temple Compass", /*german*/"der Kompaß des Waldtempels", /*french*/"la boussole du Temple de la Forêt"), // /*spanish*/la brújula del Templo del Bosque @@ -1287,7 +1287,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a molten magnetic needle", /*german*/"eine geschmolzene Magnetnadel", /*french*/"une aimant fondu") // /*spanish*/un imán fundido }, - CustomMessage("Fire Temple Compass", "Kompaß des Feuertempels", "Boussole du Temple du Feu")); + CustomMessage("Fire Temple Compass", "Kompaß (Geistertempel)", "Boussole du Temple du Feu")); hintTextTable[RHT_WATER_TEMPLE_COMPASS] = HintText(CustomMessage("the Water Temple Compass", /*german*/"der Kompaß des Wassertempels", /*french*/"la boussole du Temple de l'Eau"), // /*spanish*/la brújula del Templo del Agua @@ -1300,7 +1300,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a wet magnetic needle", /*german*/"eine nasse Magnetnadel", /*french*/"une aimant humide") // /*spanish*/un imán mojado }, - CustomMessage("Water Temple Compass", "Kompaß des Wassertempels", "Boussole du Temple de l'Eau")); + CustomMessage("Water Temple Compass", "Kompaß (Wassertempel)", "Boussole du Temple de l'Eau")); hintTextTable[RHT_SPIRIT_TEMPLE_COMPASS] = HintText(CustomMessage("the Spirit Temple Compass", /*german*/"der Kompaß des Geistertempels", /*french*/"la boussole du Temple de l'Esprit"), // /*spanish*/la brújula del Templo del Espíritu @@ -1313,7 +1313,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a sandy magnetic needle", /*german*/"eine sandige Magnetnadel", /*french*/"une aimant sableux") // /*spanish*/un imán arenoso }, - CustomMessage("Spirit Temple Compass", "Kompaß des Geistertempels", "Boussole due Temple de l'Esprit")); + CustomMessage("Spirit Temple Compass", "Kompaß (Geistertempel)", "Boussole due Temple de l'Esprit")); hintTextTable[RHT_SHADOW_TEMPLE_COMPASS] = HintText(CustomMessage("the Shadow Temple Compass", /*german*/"der Kompaß des Schattentempels", /*french*/"la boussole du Temple de l'Ombre"), // /*spanish*/la brújula del Templo de las Sombras @@ -1326,7 +1326,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a creepy magnetic needle", /*german*/"eine gruselige Magnetnadel", /*french*/"une aimant sinistre") // /*spanish*/un imán siniestra }, - CustomMessage("Shadow Temple Compass", "Kompaß des Schattentempels", "Boussole du Temple de l'Ombre")); + CustomMessage("Shadow Temple Compass", "Kompaß (Schattentempel)", "Boussole du Temple de l'Ombre")); hintTextTable[RHT_BOTW_COMPASS] = HintText(CustomMessage("the Bottom of the Well Compass", /*german*/"der Kompaß vom Grund des Brunnens", /*french*/"la boussole du fond du Puits"), // /*spanish*/la brújula del Fondo del pozo @@ -1339,7 +1339,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a dank magnetic needle", /*german*/"eine schimmelige Magnetnadel", /*french*/"une aimant moisi") // /*spanish*/un imán mohoso }, - CustomMessage("Bottom of the Well Compass", "Kompaß des Grund des Brunnens", "Boussole du Puits")); + CustomMessage("Bottom of the Well Compass", "Kompaß (Grund des Brunnens)", "Boussole du Puits")); hintTextTable[RHT_ICE_CAVERN_COMPASS] = HintText(CustomMessage("the Ice Cavern Compass", /*german*/"der Kompaß der Eishöhle", /*french*/"la Boussole de la Caverne Polaire"), // /*spanish*/la brújula de la Caverna de hielo @@ -1352,7 +1352,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a polar magnetic needle", /*german*/"eine polare Magnetnadel", /*french*/"une aimant polaire") // /*spanish*/un imán polar }, - CustomMessage("Ice Cavern Compass", "Kompaß der Eishöhle", "Boussole de la Caverne Polaire")); + CustomMessage("Ice Cavern Compass", "Kompaß (Eishöhle)", "Boussole de la Caverne Polaire")); hintTextTable[RHT_FOREST_TEMPLE_BOSS_KEY] = HintText(CustomMessage("the Forest Temple Boss Key", /*german*/"der Master-Schlüssel des Waldtempels", /*french*/"la Clé d'Or du Temple de la Forêt"), // /*spanish*/la gran llave del Templo del Bosque @@ -1365,7 +1365,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a sylvan dungeon's master pass", /*german*/"ein waldiger Labyrinth-Meisterpass", /*french*/"une clé maléfique sylvestre") // /*spanish*/el pase maestro enselvado }, - CustomMessage("Forest Temple Boss Key", "Master-Schlüssel des Waldtempels", "Clé d'Or du Temple de la Forêt")); + CustomMessage("Forest Temple Boss Key", "Master-Schlüssel (Waldtempel)", "Clé d'Or du Temple de la Forêt")); hintTextTable[RHT_FIRE_TEMPLE_BOSS_KEY] = HintText(CustomMessage("the Fire Temple Boss Key", /*german*/"der Master-Schlüssel des Feuertempels", /*french*/"la Clé d'Or du Temple du Feu"), // /*spanish*/la gran llave del Templo del Fuego @@ -1378,7 +1378,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a molten dungeon's master pass", /*german*/"ein geschmolzener Labyrinth-Meisterpass", /*french*/"une clé maléfique fondu") // /*spanish*/el pase maestro fundido }, - CustomMessage("Fire Temple Boss Key", "Master-Schlüssel des Feuertempels", "Clé d'Or du Temple du Feu")); + CustomMessage("Fire Temple Boss Key", "Master-Schlüssel (Feuertempel)", "Clé d'Or du Temple du Feu")); hintTextTable[RHT_WATER_TEMPLE_BOSS_KEY] = HintText(CustomMessage("the Water Temple Boss Key", /*german*/"der Master-Schlüssel des Wassertempels", /*french*/"la Clé d'Or du Temple de l'Eau"), // /*spanish*/la gran llave del Templo del Agua @@ -1391,7 +1391,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a wet dungeon's master pass", /*german*/"ein nasser Labyrinth-Meisterpass", /*french*/"une clé maléfique humide") // /*spanish*/el pase maestro mojado }, - CustomMessage("Water Temple Boss Key", "Master-Schlüssel des Wassertempels", "Clé d'Or du Temple de l'Eau")); + CustomMessage("Water Temple Boss Key", "Master-Schlüssel (Wassertempel)", "Clé d'Or du Temple de l'Eau")); hintTextTable[RHT_SPIRIT_TEMPLE_BOSS_KEY] = HintText(CustomMessage("the Spirit Temple Boss Key", /*german*/"der Master-Schlüssel des Geistertempels", /*french*/"la Clé d'Or du Temple de l'Esprit"), // /*spanish*/la gran llave del Templo del Espíritu @@ -1404,7 +1404,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a sandy dungeon's master pass", /*german*/"ein sandiger Labyrinth-Meisterpass", /*french*/"une clé maléfique sableux") // /*spanish*/el pase maestro arenoso }, - CustomMessage("Spirit Temple Boss Key", "Master-Schlüssel des Geistertempels", "Clé d'Or du Temple de l'Esprit")); + CustomMessage("Spirit Temple Boss Key", "Master-Schlüssel (Geistertempel)", "Clé d'Or du Temple de l'Esprit")); hintTextTable[RHT_SHADOW_TEMPLE_BOSS_KEY] = HintText(CustomMessage("the Shadow Temple Boss Key", /*german*/"der Master-Schlüssel des Schattentempels", /*french*/"la Clé d'Or du Temple de l'Ombre"), // /*spanish*/la gran llave del Templo de las Sombras @@ -1417,7 +1417,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a creepy dungeon's master pass", /*german*/"ein gruseliger Labyrinth-Meisterpass", /*french*/"une clé maléfique sinistre") // /*spanish*/el pase maestro siniestra }, - CustomMessage("Shadow Temple Boss Key", "Master-Schlüssel des Schattentempels", "Clé d'Or du Temple de l'Ombre")); + CustomMessage("Shadow Temple Boss Key", "Master-Schlüssel (Schattentempel)", "Clé d'Or du Temple de l'Ombre")); hintTextTable[RHT_GANONS_CASTLE_BOSS_KEY] = HintText(CustomMessage("the Ganon's Castle Boss Key", /*german*/"der Master-Schlüssel von Ganons Schloß", /*french*/"la Clé d'Or du Château de Ganon"), // /*spanish*/la gran llave del Castillo de Ganon @@ -1430,7 +1430,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a final dungeon's master pass", /*german*/"ein finaler Labyrinth-Meisterpass", /*french*/"une clé maléfique final") // /*spanish*/el pase maestro final }, - CustomMessage("Ganon's Castle Boss Key", "Master-Schlüssel von Ganons Schloß", "Clé d'Or du Château de Ganon")); + CustomMessage("Ganon's Castle Boss Key", "Master-Schlüssel (Ganons Schloß)", "Clé d'Or du Château de Ganon")); hintTextTable[RHT_FOREST_TEMPLE_SMALL_KEY] = HintText(CustomMessage("a Forest Temple Small Key", /*german*/"ein kleiner Schlüssel des Waldtempels", /*french*/"une petite clé du Temple de la Forêt"), // /*spanish*/una llave pequeña del Templo del Bosque @@ -1447,7 +1447,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a sylvan lockpick", /*german*/"ein waldiger Dietrich", /*french*/"un crochet à porte sylvestre") // /*spanish*/una apertura portentosa enselvada }, - CustomMessage("Forest Temple Small Key", "Kleiner Schlüssel für den Waldtempel", "Petite Clé du Temple de la Forêt")); + CustomMessage("Forest Temple Small Key", "Kleiner Schlüssel (Waldtempel)", "Petite Clé du Temple de la Forêt")); hintTextTable[RHT_FIRE_TEMPLE_SMALL_KEY] = HintText(CustomMessage("a Fire Temple Small Key", /*german*/"ein kleiner Schlüssel des Feuertempels", /*french*/"une petite clé du Temple du Feu"), // /*spanish*/una llave pequeña del Templo del Fuego @@ -1464,7 +1464,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a molten lockpick", /*german*/"ein geschmolzener Dietrich", /*french*/"un crochet à porte fondu") // /*spanish*/una apertura portentosa fundida }, - CustomMessage("Fire Temple Small Key", "Kleiner Schlüssel für den Feuertempel", "Petite Clé du Temple du Feu")); + CustomMessage("Fire Temple Small Key", "Kleiner Schlüssel (Feuertempel)", "Petite Clé du Temple du Feu")); hintTextTable[RHT_WATER_TEMPLE_SMALL_KEY] = HintText(CustomMessage("a Water Temple Small Key", /*german*/"ein kleiner Schlüssel des Wassertempels", /*french*/"une petite clé du Temple de l'Eau"), // /*spanish*/una llave pequeña del Templo del Agua @@ -1481,7 +1481,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a wet lockpick", /*german*/"ein nasser Dietrich", /*french*/"un crochet à porte humide") // /*spanish*/una apertura portentosa mojada }, - CustomMessage("Water Temple Small Key", "Kleiner Schlüssel für den Wassertempel", "Petite Clé du Temple de l'Eau")); + CustomMessage("Water Temple Small Key", "Kleiner Schlüssel (Wassertempel)", "Petite Clé du Temple de l'Eau")); hintTextTable[RHT_SPIRIT_TEMPLE_SMALL_KEY] = HintText(CustomMessage("a Spirit Temple Small Key", /*german*/"ein kleiner Schlüssel des Geistertempels", /*french*/"une petite clé du Temple de l'Esprit"), // /*spanish*/una llave pequeña del Templo del Espíritu @@ -1498,7 +1498,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a sandy lockpick", /*german*/"ein sandiger Dietrich", /*french*/"un crochet à porte sableux") // /*spanish*/una apertura portentosa arenosa }, - CustomMessage("Spirit Temple Small Key", "Kleiner Schlüssel für den Geistertempel", "Petite Clé du Temple de l'Esprit")); + CustomMessage("Spirit Temple Small Key", "Kleiner Schlüssel (Geistertempel)", "Petite Clé du Temple de l'Esprit")); hintTextTable[RHT_SHADOW_TEMPLE_SMALL_KEY] = HintText(CustomMessage("a Shadow Temple Small Key", /*german*/"ein kleiner Schlüssel des Schattentempels", /*french*/"une petite clé du Temple de l'Ombre"), // /*spanish*/una llave pequeña del Templo de las Sombras @@ -1515,7 +1515,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a creepy lockpick", /*german*/"ein gruseliger Dietrich", /*french*/"un crochet à porte sinistre") // /*spanish*/una apertura portentosa siniestra:a }, - CustomMessage("Shadow Temple Small Key", "Petite Clé du Temple de l'Ombre", "Kleiner Schlüssel für den Schattentempel")); + CustomMessage("Shadow Temple Small Key", "Kleiner Schlüssel (Schattentempel)", "Petite Clé du Temple de l'Ombre")); hintTextTable[RHT_GTG_SMALL_KEY] = HintText(CustomMessage("a Gerudo Training Ground Small Key", /*german*/"ein kleiner Schlüssel der Gerudo-Trainingsarena", /*french*/"une petite clé du Gymnase Gerudo"), // /*spanish*/una llave pequeña del Centro de Instrucción Gerudo @@ -1532,7 +1532,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a labyrinthian lockpick", /*german*/"ein verwirrender Dietrich", /*french*/"un crochet à porte labyrinthique") // /*spanish*/una apertura portentosa laberíntica }, - CustomMessage("Training Ground Small Key", "Kleiner Schlüssel für das Gerudo-Trainingsgelände", "Petite Clé du Gymnase Gerudo")); + CustomMessage("Training Ground Small Key", "Kleiner Schlüssel (Gerudo-Trainingsarena)", "Petite Clé du Gymnase Gerudo")); hintTextTable[RHT_HIDEOUT_SMALL_KEY] = HintText(CustomMessage("a Gerudo Fortress Small Key", /*german*/"ein kleiner Schlüssel des Diebesverstecks", /*french*/"une petite clé de la Repaire des Voleurs"), // /*spanish*/una llave pequeña de la Fortaleza Gerudo @@ -1549,7 +1549,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("an imprisoned lockpick", /*german*/"ein gefangener Dietrich", /*french*/"un crochet à porte emprisonné") // /*spanish*/una apertura portentosa encarcelada }, - CustomMessage("Gerudo Fortress Small Key", "Kleiner Schlüssel für die Gerudo-Festung", "Petite Clé du Repaire des Voleurs")); + CustomMessage("Gerudo Fortress Small Key", "Kleiner Schlüssel (Diebesversteck)", "Petite Clé du Repaire des Voleurs")); hintTextTable[RHT_BOTW_SMALL_KEY] = HintText(CustomMessage("a Bottom of the Well Small Key", /*german*/"ein kleiner Schlüssel vom Grund des Brunnens", /*french*/"une petite clé du fond du Puits"), // /*spanish*/una llave pequeña del Fondo del pozo @@ -1566,7 +1566,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a moldy lockpick", /*german*/"ein schimmeliger Dietrich", /*french*/"un crochet à porte moisi") // /*spanish*/una apertura portentosa mohosa }, - CustomMessage("Bottom of the Well Small Key", "Kleiner Schlüssel für den Grund des Brunnens", "Petite Clé du Puits")); + CustomMessage("Bottom of the Well Small Key", "Kleiner Schlüssel (Grund des Brunnens)", "Petite Clé du Puits")); hintTextTable[RHT_GANONS_CASTLE_SMALL_KEY] = HintText(CustomMessage("a Ganon's Castle Small Key", /*german*/"ein kleiner Schlüssel von Ganons Schloß", /*french*/"une petite clé du Château de Ganon"), // /*spanish*/una llave pequeña del Castillo de Ganon @@ -1583,7 +1583,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a final lockpick", /*german*/"ein finaler Dietrich", /*french*/"un crochet à porte final") // /*spanish*/una apertura portentosa final }, - CustomMessage("Ganon's Castle Small Key", "Kleiner Schlüssel für Ganons Schloß", "Petite Clé du Château de Ganon")); + CustomMessage("Ganon's Castle Small Key", "Kleiner Schlüssel (Ganons Schloß)", "Petite Clé du Château de Ganon")); hintTextTable[RHT_TCG_SMALL_KEY] = HintText(CustomMessage("a Treasure Chest Shop Small Key", /*german*/"ein kleiner Schlüssel des Schatztruhenladens", /*french*/"une petite clé de la chasse aux trésors"), @@ -1601,7 +1601,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a gambler's lockpick", /*german*/"ein Spieler-Dietrich", /*french*/"un crochet à serrure de parieur") // /*spanish*/una apertura portentosa del juego de azar }, - CustomMessage("Chest Game Small Key", "Kleiner Schlüssel für das Truhenspiel", "Petite Clé du jeu la Chasse-aux-Trésors")); + CustomMessage("Chest Game Small Key", "Kleiner Schlüssel (Truhenlotterie)", "Petite Clé du jeu la Chasse-aux-Trésors")); hintTextTable[RHT_GUARD_HOUSE_KEY] = HintText(CustomMessage("the Guard House's key"), { @@ -1610,7 +1610,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a key to pots", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Guard House Key", "Schlüssel für das Haus der Wachen", "Clé de la Maison des Gardes")); + CustomMessage("Guard House Key", "Schlüssel (Wachhaus)", "Clé de la Maison des Gardes")); hintTextTable[RHT_MARKET_BAZAAR_KEY] = HintText(CustomMessage("Market Bazaar's key"), { @@ -1619,7 +1619,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a child's shopping key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Market Bazaar Key", "Schlüssel für den Basar des Marktes", "Clé du Bazar de la Place du Marché")); + CustomMessage("Market Bazaar Key", "Schlüssel (Basar des Marktes)", "Clé du Bazar de la Place du Marché")); hintTextTable[RHT_MARKET_POTION_SHOP_KEY] = HintText(CustomMessage("the Market Potion Shop's key"), { @@ -1628,7 +1628,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("past potion's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Market Potion Shop Key", "Schlüssel für den Magie-Laden des Marktes", "Clé du Magasin de Potions de la Place du Marché")); + CustomMessage("Market Potion Shop Key", "Schlüssel (Magie-Laden des Marktes)", "Clé du Magasin de Potions de la Place du Marché")); hintTextTable[RHT_MASK_SHOP_KEY] = HintText(CustomMessage("the Mask Shop's key"), { @@ -1637,7 +1637,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the masqurade's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Mask Shop Key", "Schlüssel für den Maskenladen", "Clé de la Foire aux Masques")); + CustomMessage("Mask Shop Key", "Schlüssel (Maskenladen)", "Clé de la Foire aux Masques")); hintTextTable[RHT_MARKET_SHOOTING_KEY] = HintText(CustomMessage("Market Shooting Gallery's key"), { @@ -1646,7 +1646,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("slingshot shooting's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Market Shooting Gallery Key", "Schlüssel für die Schießbude des Marktes", "Clé du Stand de Tir de la Place du Marché")); + CustomMessage("Market Shooting Gallery Key", "Schlüssel (Schießbude des Marktes)", "Clé du Stand de Tir de la Place du Marché")); hintTextTable[RHT_BOMBCHU_BOWLING_KEY] = HintText(CustomMessage("Bombchu Bowling's key"), { @@ -1655,7 +1655,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("mouse golf's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Bombchu Bowling Alley Key", "Schlüssel für die Minenbowlingbahn", "Clé du Bowling Teigneux")); + CustomMessage("Bombchu Bowling Alley Key", "Schlüssel (Minenbowlingbahn)", "Clé du Bowling Teigneux")); hintTextTable[RHT_TCG_BUILDING_KEY] = HintText(CustomMessage("Treasure Chest Game Building's key"), { @@ -1664,7 +1664,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the gambling game's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Treasure Chest Game Building Key", "Schlüssel für das Haus des Schatzkisten-Pokers", "Clé de la Chasse au Trésor")); + CustomMessage("Treasure Chest Game Building Key", "Schlüssel (Haus der Truhenlotterie)", "Clé de la Chasse au Trésor")); hintTextTable[RHT_BOMBCHU_SHOP_KEY] = HintText(CustomMessage("the Bombchu Shop's key"), { @@ -1673,7 +1673,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a mouse merchant's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Bombchu Shop Key", "Schlüssel für den Krabbelminenladen", "Clé du Magasin de Missiles")); + CustomMessage("Bombchu Shop Key", "Schlüssel (Krabbelminenladen)", "Clé du Magasin de Missiles")); hintTextTable[RHT_RICHARDS_HOUSE_KEY] = HintText(CustomMessage("Richard's House Key"), { @@ -1682,7 +1682,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a lost puppy's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Richard's House Key", "Schlüssel für das Haus von Richard", "Clé de la Maison de Kiki")); + CustomMessage("Richard's House Key", "Schlüssel (Richards Haus)", "Clé de la Maison de Kiki")); hintTextTable[RHT_ALLEY_HOUSE_KEY] = HintText(CustomMessage("the Alley House's key"), { @@ -1691,7 +1691,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a townhouse's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Alley House Key", "Schlüssel für das Gassenhaus", "Clé de la Maison de la Ruelle")); + CustomMessage("Alley House Key", "Schlüssel (Haus in der Gasse)", "Clé de la Maison de la Ruelle")); hintTextTable[RHT_KAK_BAZAAR_KEY] = HintText(CustomMessage("Kakariko Bazaar's key"), { @@ -1700,7 +1700,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("adult's shopping key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Kakariko Bazaar Key", "Schlüssel für den Basar von Kakariko", "Clé du Bazar de Cocorico")); + CustomMessage("Kakariko Bazaar Key", "Schlüssel (Basar von Kakariko)", "Clé du Bazar de Cocorico")); hintTextTable[RHT_KAK_POTION_SHOP_KEY] = HintText(CustomMessage("the Kakariko Potion Shop's key"), { @@ -1709,7 +1709,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("future's potion key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Kakariko Potion Shop Key", "Schlüssel für den Magie-Laden von Kakariko", "Clé du Magasin de Potions de Cocorico")); + CustomMessage("Kakariko Potion Shop Key", "Schlüssel (Magie-Laden von Kakariko)", "Clé du Magasin de Potions de Cocorico")); hintTextTable[RHT_BOSS_HOUSE_KEY] = HintText(CustomMessage("the Boss's House's key"), { @@ -1718,7 +1718,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the carpenter's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Boss's House Key", "Schlüssel für das Haus des Chefs", "Clé de la Maison du Chef des Ouvriers")); + CustomMessage("Boss's House Key", "Schlüssel (Haus des Chefs)", "Clé de la Maison du Chef des Ouvriers")); hintTextTable[RHT_GRANNYS_SHOP_KEY] = HintText(CustomMessage("Granny's Potion Shop's key"), { @@ -1727,7 +1727,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the old woman's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Granny's Potion Shop Key", "Schlüssel für Asas Hexenladen", "Clé de l'Apothicaire")); + CustomMessage("Granny's Potion Shop Key", "Schlüssel (Asas Hexenladen)", "Clé de l'Apothicaire")); hintTextTable[RHT_SKULLTULA_HOUSE_KEY] = HintText(CustomMessage("the Skulltula House's key"), { @@ -1736,7 +1736,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the cursed place's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Skulltula House Key", "Schlüssel für das Skulltula-Haus", "Clé de la Maison des Araignées")); + CustomMessage("Skulltula House Key", "Schlüssel (Skulltula-Haus)", "Clé de la Maison des Araignées")); hintTextTable[RHT_IMPAS_HOUSE_KEY] = HintText(CustomMessage("Impa's House's key"), { @@ -1745,7 +1745,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the Shadow Sage's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Impa's House Key", "Schlüssel für das Haus von Impa", "Clé de la Maison d'Impa")); + CustomMessage("Impa's House Key", "Schlüssel (Impas Haus)", "Clé de la Maison d'Impa")); hintTextTable[RHT_WINDMILL_KEY] = HintText(CustomMessage("the Windmill's key"), { @@ -1754,7 +1754,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the grain grinder's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Windmill Key", "Schlüssel für die Windmühle", "Clé du Moulin")); + CustomMessage("Windmill Key", "Schlüssel (Windmühle)", "Clé du Moulin")); hintTextTable[RHT_KAK_SHOOTING_KEY] = HintText(CustomMessage("Kakariko Shooting Gallery's key"), { @@ -1763,7 +1763,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("bow shooting's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Kakariko Shooting Gallery Key", "Schlüssel für die Schießbude von Kakariko", "Clé du Stand de Tir de Cocorico")); + CustomMessage("Kakariko Shooting Gallery Key", "Schlüssel (Schießbude von Kakariko)", "Clé du Stand de Tir de Cocorico")); hintTextTable[RHT_DAMPES_HUT_KEY] = HintText(CustomMessage("Dampe's Hut's key"), { @@ -1772,7 +1772,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the small hut's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Dampe's Hut Key", "Schlüssel für die Hütte von Boris", "Clé de la Cabane d'Igor")); + CustomMessage("Dampe's Hut Key", "Schlüssel (Hütte des Totengräbers)", "Clé de la Cabane d'Igor")); hintTextTable[RHT_TALONS_HOUSE_KEY] = HintText(CustomMessage("Talon's House's key"), { @@ -1781,7 +1781,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the layabout's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Talon's House Key", "Schlüssel für das Haus von Talon", "Clé de la Maison de Talon")); + CustomMessage("Talon's House Key", "Schlüssel (Talons Haus)", "Clé de la Maison de Talon")); hintTextTable[RHT_STABLES_KEY] = HintText(CustomMessage("the Stables' key"), { @@ -1790,7 +1790,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the key to the farm", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Stables Key", "Schlüssel für die Ställe", "Clé des Écuries")); + CustomMessage("Stables Key", "Schlüssel (Ställe)", "Clé des Écuries")); hintTextTable[RHT_BACK_TOWER_KEY] = HintText(CustomMessage("the Back Tower's key"), { @@ -1799,7 +1799,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the cowshed's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Back Tower Key", "Schlüssel für den hinteren Turm", "Clé du Silo")); + CustomMessage("Back Tower Key", "Schlüssel (Lon Lon-Turm)", "Clé du Silo")); hintTextTable[RHT_HYLIA_LAB_KEY] = HintText(CustomMessage("the Hylia Laboratory's key"), { @@ -1808,7 +1808,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the key to science", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Hylia Laboratory Key", "Schlüssel für das Hylia-Labor", "Clé du Laboratoire du Lac Hylia")); + CustomMessage("Hylia Laboratory Key", "Schlüssel (Hylia-Labor)", "Clé du Laboratoire du Lac Hylia")); hintTextTable[RHT_FISHING_HOLE_KEY] = HintText(CustomMessage("the Fishing Hole's key"), { @@ -1817,7 +1817,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("the fisherman's key", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE) }, - CustomMessage("Fishing Hole Key", "Schlüssel für den Fischweiher", "Clé de l'Étang")); + CustomMessage("Fishing Hole Key", "Schlüssel (Fischweiher)", "Clé de l'Étang")); hintTextTable[RHT_FOREST_TEMPLE_KEY_RING] = HintText(CustomMessage("a Forest Temple Key Ring", /*german*/"das Schlüsselbund des Waldtempels", /*french*/"un trousseau de clés du Temple de la Forêt"), // /*spanish*/un llavero del Templo del Bosque @@ -1834,7 +1834,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a sylvan skeleton key", /*german*/"ein waldiger Skelettschlüssel", /*french*/"des crochets à porte sylvestres") // /*spanish*/un anillo silvestre contra cerrojos }, - CustomMessage("Forest Temple Key Ring", "Schlüsselbund für den Waldtempel", "Trousseau du Temple de la Forêt")); + CustomMessage("Forest Temple Key Ring", "Schlüsselbund (Waldtempel)", "Trousseau du Temple de la Forêt")); hintTextTable[RHT_FIRE_TEMPLE_KEY_RING] = HintText(CustomMessage("a Fire Temple Key Ring", /*german*/"das Schlüsselbund des Feuertempels", /*french*/"un trousseau de clés du Temple du Feu"), // /*spanish*/un llavero del Templo del Fuego @@ -1851,7 +1851,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a molten skeleton key", /*german*/"ein geschmolzener Skelettschlüssel", /*french*/"des crochets à porte fondus") // /*spanish*/un anillo fundido contra cerrojos }, - CustomMessage("Fire Temple Key Ring", "Schlüsselbund für den Feuertempel", "Trousseau du Temple du Feu")); + CustomMessage("Fire Temple Key Ring", "Schlüsselbund (Feuertempel)", "Trousseau du Temple du Feu")); hintTextTable[RHT_WATER_TEMPLE_KEY_RING] = HintText(CustomMessage("a Water Temple Key Ring", /*german*/"das Schlüsselbund des Wassertempels", /*french*/"un trousseau de clés du Temple de l'Eau"), // /*spanish*/un llavero del Templo del Agua @@ -1868,7 +1868,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a wet skeleton key", /*german*/"ein nasser Skelettschlüssel", /*french*/"des crochets à porte humides") // /*spanish*/un anillo abisal contra cerrojos }, - CustomMessage("Water Temple Key Ring", "Schlüsselbund für den Wassertempel", "Trousseau du Temple de l'Eau")); + CustomMessage("Water Temple Key Ring", "Schlüsselbund (Wassertempel)", "Trousseau du Temple de l'Eau")); hintTextTable[RHT_SPIRIT_TEMPLE_KEY_RING] = HintText(CustomMessage("a Spirit Temple Key Ring", /*german*/"das Schlüsselbund des Geistertempels", /*french*/"un trousseau de clés du Temple de l'Esprit"), // /*spanish*/un llavero del Templo del Espíritu @@ -1885,7 +1885,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a sandy skeleton key", /*german*/"ein sandiger Skelettschlüssel", /*french*/"des crochets à porte sableux") // /*spanish*/un anillo arenoso contra cerrojos }, - CustomMessage("Spirit Temple Key Ring", "Schlüsselbund für den Geistertempel", "Trousseau du Temple de l'Esprit")); + CustomMessage("Spirit Temple Key Ring", "Schlüsselbund (Geistertempel)", "Trousseau du Temple de l'Esprit")); hintTextTable[RHT_SHADOW_TEMPLE_KEY_RING] = HintText(CustomMessage("a Shadow Temple Key Ring", /*german*/"das Schlüsselbund des Schattentempels", /*french*/"un trousseau de clés du Temple de l'Ombre"), // /*spanish*/un llavero del Templo de las Sombras @@ -1902,7 +1902,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a creepy skeleton key", /*german*/"ein gruseliger Skelettschlüssel", /*french*/"des crochets à porte sinistres") // /*spanish*/un anillo tenebroso contra cerrojos }, - CustomMessage("Shadow Temple Key Ring", "Schlüsselbund für den Schattentempel", "Trousseau du Temple de l'Ombre")); + CustomMessage("Shadow Temple Key Ring", "Schlüsselbund (Schattentempel)", "Trousseau du Temple de l'Ombre")); hintTextTable[RHT_GTG_KEY_RING] = HintText(CustomMessage("a Gerudo Training Ground Key Ring", /*german*/"das Schlüsselbund der Gerudo-Trainingsarena", /*french*/"un trousseau de clés du Gymnase Gerudo"), // /*spanish*/un llavero del Centro de Instrucción Gerudo @@ -1919,7 +1919,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a labyrinthian skeleton key", /*german*/"ein verwirrender Skelettschlüssel", /*french*/"des crochets à porte labyrinthiques") // /*spanish*/un anillo laberíntico contra cerrojos }, - CustomMessage("Training Ground Key Ring", "Schlüsselbund für das Gerudo-Trainingsgelände", "Trousseau du Gymnase Gerudo")); + CustomMessage("Training Ground Key Ring", "Schlüsselbund (Grund des Brunnens)", "Trousseau du Gymnase Gerudo")); hintTextTable[RHT_HIDEOUT_KEY_RING] = HintText(CustomMessage("a Gerudo Fortress Key Ring", /*german*/"das Schlüsselbund des Diebesverstecks", /*french*/"un trousseau de clés de la Repaire des Voleurs"), // /*spanish*/un llavero de la Fortaleza Gerudo @@ -1936,7 +1936,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("an imprisoned skeleton key", /*german*/"ein gefangener Skelettschlüssel", /*french*/"des crochets à porte emprisonnés") // /*spanish*/un anillo enjaulado contra cerrojos }, - CustomMessage("Gerudo Fortress Key Ring", "Schlüsselbund für die Gerudo-Festung", "Trousseau du Repaire des Voleurs")); + CustomMessage("Gerudo Fortress Key Ring", "Schlüsselbund (Gerudo-Trainingsarena)", "Trousseau du Repaire des Voleurs")); hintTextTable[RHT_BOTW_KEY_RING] = HintText(CustomMessage("a Bottom of the Well Key Ring", /*german*/"das Schlüsselbund vom Grund des Brunnens", /*french*/"un trousseau de clés du fond du Puits"), // /*spanish*/un llavero del Fondo del pozo @@ -1953,7 +1953,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a moldy skeleton key", /*german*/"ein schimmeliger Skelettschlüssel", /*french*/"des crochets à porte moisis") // /*spanish*/un anillo subterráneo contra cerrojos }, - CustomMessage("Bottom of the Well Key Ring", "Schlüsselbund für den Grund des Brunnens", "Trousseau du Puits")); + CustomMessage("Bottom of the Well Key Ring", "Schlüsselbund (Diebesversteck)", "Trousseau du Puits")); hintTextTable[RHT_GANONS_CASTLE_KEY_RING] = HintText(CustomMessage("a Ganon's Castle Key Ring", /*german*/"das Schlüsselbund von Ganons Schloß", /*french*/"un trousseau de clés du Château de Ganon"), // /*spanish*/un llavero del Castillo de Ganon @@ -1970,34 +1970,19 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a final skeleton key", /*german*/"ein finaler Skelettschlüssel", /*french*/"des crochets à porte finaux") // /*spanish*/un anillo decisivo multiusos }, - CustomMessage("Ganon's Castle Key Ring", "Schlüsselbund für Ganons Schloß", "Trousseau du Château de Ganon")); + CustomMessage("Ganon's Castle Key Ring", "Schlüsselbund (Ganons Schloß)", "Trousseau du Château de Ganon")); - hintTextTable[RHT_TCG_SMALL_KEY] = HintText(CustomMessage("a Treasure Chest Shop Small Key", /*german*/"ein kleiner Schlüssel der Truhenlotterie", /*french*/"une petite clé de la chasse aux trésors"), - // /*spanish*/una llave pequeña del Cofre del Tesoro - { - CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") - // /*spanish*/una llave pequeña - }, { - CustomMessage("a gambler's tool for unlocking", /*german*/"ein Zocker-Werkzeug zur Entriegelung", /*french*/"un anti-porte de parieur"), - // /*spanish*/una clave de un juego de azar - CustomMessage("a gambler's dungeon pass", /*german*/"ein Zocker-Labyrinth-Pass", /*french*/"le rêve d'un prisonnier parieur"), - // /*spanish*/un pase de un juego de azar - CustomMessage("a gambler's lock remover", /*german*/"ein Zocker-Schlossentferner", /*french*/"un efface-serrure de parieur"), - // /*spanish*/un destructor de cerraduras del juego de azar - CustomMessage("a gambler's lockpick", /*german*/"ein Zocker-Dietrich", /*french*/"un crochet à serrure de parieur")}); - // /*spanish*/una apertura portentosa del juego de azar - - hintTextTable[RHT_TCG_KEY_RING] = HintText(CustomMessage("a Chest Game Key Ring", /*german*/ "das Schlüsselbund der Truhenlotterie", /*french*/ "TRANSLATE THIS"), + hintTextTable[RHT_TCG_KEY_RING] = HintText(CustomMessage("a Chest Game Key Ring", /*german*/ "das Schlüsselbund der Truhenlotterie", /*french*/ TODO_TRANSLATE), { CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") // /*spanish*/un llavero }, { - CustomMessage("a gambler's toolbox for unlocking", /*german*/ "eine Zocker-Werkzeugkiste zur Entriegelung", /*french*/ "TRANSLATE THIS"), - CustomMessage("a gambler's season pass", /*german*/ "ein Zocker-Labyrinth-Season-Pass", /*french*/ "TRANSLATE THIS"), - CustomMessage("a gambler's jingling ring", /*german*/ "ein Zocker-Multifunktionsschlüssel", /*french*/ "TRANSLATE THIS"), - CustomMessage("a gambler's skeleton key", /*german*/ "ein Zocker-Skelettschlüssel", /*french*/ "TRANSLATE THIS") + CustomMessage("a gambler's toolbox for unlocking", /*german*/ "eine Zocker-Werkzeugkiste zur Entriegelung", /*french*/ TODO_TRANSLATE), + CustomMessage("a gambler's season pass", /*german*/ "ein Zocker-Labyrinth-Season-Pass", /*french*/ TODO_TRANSLATE), + CustomMessage("a gambler's jingling ring", /*german*/ "ein Zocker-Multifunktionsschlüssel", /*french*/ TODO_TRANSLATE), + CustomMessage("a gambler's skeleton key", /*german*/ "ein Zocker-Skelettschlüssel", /*french*/ TODO_TRANSLATE) }, - CustomMessage("Chest Game Key Ring", "Trousseau du jeu la Chasse-aux-Trésors", "Schlüsselbund für das Truhenspiel")); + CustomMessage("Chest Game Key Ring", "Schlüsselbund (Truhenlotterie)", "Trousseau du jeu la Chasse-aux-Trésors")); hintTextTable[RHT_KOKIRI_EMERALD] = HintText(CustomMessage("the Kokiri Emerald", /*german*/"der Kokiri-Smaragd", /*french*/"l'Émeraude Kokiri"), // /*spanish*/la Esmeralda de los Kokiri @@ -2157,7 +2142,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a glorious gem", /*german*/"ein glorioser Edelstein", /*french*/"Greg") // /*spanish*/Greg }, - CustomMessage("Greg the Green Rupee", "Greg Rubin", "Rubis Greg")); + CustomMessage("Greg the Green Rupee", "Greg der grüne Rubin", "Greg Rubin")); hintTextTable[RHT_BLUE_RUPEE] = HintText(CustomMessage("a Blue Rupee", /*german*/"ein blauer Rubin", /*french*/"un rubis bleu"), // /*spanish*/una rupia azul @@ -2215,7 +2200,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("great wealth", /*german*/"Reichtum", /*french*/"l'aisance financière") // /*spanish*/dinero a caudales }, - CustomMessage("Huge Rupee", "Riesiger Rubin", "Énorme Rubis")); + CustomMessage("Huge Rupee", "Goldener Rubin", "Énorme Rubis")); hintTextTable[RHT_PIECE_OF_HEART] = HintText(CustomMessage("a Piece of Heart", /*german*/"ein Herzteil", /*french*/"un Quart de Coeur"), // /*spanish*/una pieza de corazón @@ -2228,7 +2213,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a broken heart", /*german*/"ein gebrochenes Herz", /*french*/"un coeur brisé") // /*spanish*/un corazón roto }, - CustomMessage("Piece of Heart", "Herzstück", "Quart de Coeur")); + CustomMessage("Piece of Heart", "Herzteil", "Quart de Coeur")); hintTextTable[RHT_HEART_CONTAINER] = HintText(CustomMessage("a Heart Container", /*german*/"ein Herzcontainer", /*french*/"un Réceptacle de Coeur"), // /*spanish*/un contenedor de corazón @@ -2271,7 +2256,7 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_MILK] = HintText(CustomMessage("some Milk", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Milk", "Milch", "Lait")); + CustomMessage("Milk", "Lon Lon-Milch", "Lait")); hintTextTable[RHT_FISH] = HintText(CustomMessage("a Fish", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, @@ -2459,7 +2444,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("lots-o-seeds", /*german*/"viele Kerne€", /*french*/"un paquet de germes séchés") // /*spanish*/un puñado de semillas }, - CustomMessage("Deku Seeds (30)", "Deku-Samen (30)", "Graines Mojo (30)")); + CustomMessage("Deku Seeds (30)", "Deku-Kerne (30)", "Graines Mojo (30)")); hintTextTable[RHT_DEKU_STICK_1] = HintText(CustomMessage("a Deku Stick", /*german*/"ein Deku-Stab", /*french*/"un bâton Mojo"), // /*spanish*/un palo deku @@ -2474,15 +2459,15 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_RED_POTION_REFILL] = HintText(CustomMessage("some Red Potion", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Red Potion Refill", "Nachfüllpackung des roten Elixiers", "Recharge de Potion Rouge")); + CustomMessage("Red Potion Refill", "Rotes Elixier", "Recharge de Potion Rouge")); hintTextTable[RHT_GREEN_POTION_REFILL] = HintText(CustomMessage("some Green Potion", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Green Potion Refill", "Nachfüllpackung des grünen Elixiers", "Recharge de Potion Verte")); + CustomMessage("Green Potion Refill", "Grünes Elixier", "Recharge de Potion Verte")); hintTextTable[RHT_BLUE_POTION_REFILL] = HintText(CustomMessage("some Blue Potion", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Blue Potion Refill", "Nachfüllpackung des blauen Elixiers", "Recharge de Potion Bleue")); + CustomMessage("Blue Potion Refill", "Blaues Elixier", "Recharge de Potion Bleue")); hintTextTable[RHT_TCG_PIECE_OF_HEART] = HintText(CustomMessage("a Piece of Heart", /*german*/"ein Herzteil", /*french*/"un Quart de Coeur"), // /*spanish*/el amor de la victoria @@ -2493,7 +2478,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a victory valentine", /*german*/"ein siegreicher Valentin", /*french*/"un amour gagnant") // /*spanish*/el amor victorioso }, - CustomMessage("Piece of Heart (WINNER)", "Herzstück (Schatztruhenminispiel)", "Quart de Coeur (Chasse-aux-Trésors)")); + CustomMessage("Piece of Heart (WINNER)", "Herzteil (Truhenlotterie)", "Quart de Coeur (Chasse-aux-Trésors)")); hintTextTable[RHT_LOSER_GREEN_RUPEE] = HintText(CustomMessage("a Green Rupee", /*german*/"ein grüner Rubin", /*french*/"un rubis vert"), // /*spanish*/una rupia verde @@ -2504,11 +2489,11 @@ void StaticData::HintTable_Init_Item() { CustomMessage("the dollar of defeat", /*german*/"der Rubin der Niederlage", /*french*/"le rubis de la défaite") // /*spanish*/el peso de la derrota }, - CustomMessage("Green Rupee (LOSER)", "Grüner Rubin (Schatztruhenminispiel)", "Rubis Vert (Chasse-aux-Trésors)")); + CustomMessage("Green Rupee (LOSER)", "Grüner Rubin (Truhenlotterie)", "Rubis Vert (Chasse-aux-Trésors)")); hintTextTable[RHT_BUY_DEKU_NUTS_5] = HintText(CustomMessage("Deku Nuts", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Buy Deku Nut (5)", "Deku-Nuß kaufen (5)", "Acheter: Noix Mojo (5)")); + CustomMessage("Buy Deku Nut (5)", "Deku-Nüsse kaufen (5)", "Acheter: Noix Mojo (5)")); hintTextTable[RHT_BUY_ARROWS_30] = HintText(CustomMessage("Arrows", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, @@ -2524,7 +2509,7 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_BUY_DEKU_NUTS_10] = HintText(CustomMessage("Deku Nuts", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Buy Deku Nut (10)", "Deku-Nuß kaufen (10)", "Acheter: Noix Mojo (10)")); + CustomMessage("Buy Deku Nut (10)", "Deku-Nüsse kaufen (10)", "Acheter: Noix Mojo (10)")); hintTextTable[RHT_BUY_DEKU_STICK_1] = HintText(CustomMessage("Deku Sticks", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, @@ -2560,11 +2545,11 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_BUY_GORON_TUNIC] = HintText(CustomMessage("Goron Tunics", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Buy Goron Tunic", "Goronen-Tunika kaufen", "Acheter: Tunique Goron")); + CustomMessage("Buy Goron Tunic", "Goronen-Rüstung kaufen", "Acheter: Tunique Goron")); hintTextTable[RHT_BUY_ZORA_TUNIC] = HintText(CustomMessage("Zora Tunics", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Buy Zora Tunic", "Zora-Tunika kaufen", "Acheter: Tunique Zora")); + CustomMessage("Buy Zora Tunic", "Zora-Rüstung kaufen", "Acheter: Tunique Zora")); hintTextTable[RHT_BUY_HEART] = HintText(CustomMessage("Recovery Hearts", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, @@ -2580,7 +2565,7 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_BUY_DEKU_SEEDS_30] = HintText(CustomMessage("Deku Seeds", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Buy Deku Seeds (30)", "Deku-Samen kaufen (30)", "Acheter: Graines Mojo (30)")); + CustomMessage("Buy Deku Seeds (30)", "Deku-Kerne kaufen (30)", "Acheter: Graines Mojo (30)")); hintTextTable[RHT_SOLD_OUT] = HintText(CustomMessage("Nothing", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, @@ -2592,15 +2577,15 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_BUY_BOTTLE_BUG] = HintText(CustomMessage("Bugs", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Buy Bottle Bug", "Flaschenkäfer kaufen", "Acheter: Insecte en bouteille")); + CustomMessage("Buy Bottle Bug", "Käfer kaufen", "Acheter: Insecte en bouteille")); hintTextTable[RHT_BUY_POE] = HintText(CustomMessage("Poes", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Buy Poe", "Geist kaufen", "Acheter: Esprit")); + CustomMessage("Buy Poe", "Irrlicht kaufen", "Acheter: Esprit")); hintTextTable[RHT_BUY_FAIRYS_SPIRIT] = HintText(CustomMessage("Fairies", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Buy Fairy's Spirit", "Feengeist kaufen", "Acheter: Esprit de Fée")); + CustomMessage("Buy Fairy's Spirit", "Fee kaufen", "Acheter: Esprit de Fée")); hintTextTable[RHT_BUY_ARROWS_10] = HintText(CustomMessage("Arrows", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, @@ -2636,7 +2621,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a gold fragment", /*german*/"ein Goldfragment", /*french*/"un fragment d'or") // /*spanish*/un fragmento dorado }, - CustomMessage("Triforce Piece", "Triforce-Fragment", "Triforce Piece")); + CustomMessage("Triforce Piece", "Triforce-Splitter", "Triforce Piece")); hintTextTable[RHT_GOHMA_SOUL] = HintText(CustomMessage("the soul of Gohma", /*german*/"Gohmas Seele", /*french*/"l'Âme de Gohma"), { @@ -2727,7 +2712,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a musical letter", /*german*/"ein musikalischer Brief", /*french*/"une lettre musicale") // /*spanish*/una letra musical }, - CustomMessage("Ocarina A Button", "Taste A der Okarina", "Touche A de l'Ocarina")); + CustomMessage("Ocarina A Button", "A-Taste der Okarina", "Touche A de l'Ocarina")); hintTextTable[RHT_OCARINA_C_UP_BUTTON] = HintText(CustomMessage("an Ocarina C Up Button", /*german*/"die C-Oben-Taste der Okarina", /*french*/"la Touche C-Haut de l'Ocarina"), // /*spanish*/un botón C superior de Ocarina @@ -2738,7 +2723,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a high tone", /*german*/"ein hoher Ton", /*french*/"une tonalité élevée") // /*spanish*/un tono alto }, - CustomMessage("Ocarina C Up Button", "Taste C-Oben der Okarina", "Touche C-Haut de l'Ocarina")); + CustomMessage("Ocarina C Up Button", "C-Oben-Taste der Okarina", "Touche C-Haut de l'Ocarina")); hintTextTable[RHT_OCARINA_C_DOWN_BUTTON] = HintText(CustomMessage("an Ocarina C Down Button", /*german*/"die C-Unten-Taste der Okarina", /*french*/"la Touche C-Bas de l'Ocarina"), // /*spanish*/un botón C inferior de Ocarina @@ -2749,7 +2734,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a low tone", /*german*/"ein tiefer Ton", /*french*/"une tonalité basse") // /*spanish*/un tono bajo }, - CustomMessage("Ocarina C Down Button", "Taste C-Unten der Okarina", "Touche C-Bas de l'Ocarina")); + CustomMessage("Ocarina C Down Button", "C-Unten-Taste der Okarina", "Touche C-Bas de l'Ocarina")); hintTextTable[RHT_OCARINA_C_LEFT_BUTTON] = HintText(CustomMessage("an Ocarina C Left Button", /*german*/"die C-Links-Taste der Okarina", /*french*/"la Touche C-Gauche de l'Ocarina"), // /*spanish*/un botón C izquierdo de Ocarina @@ -2760,7 +2745,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a leftward tone", /*german*/"ein linksseitiger Ton", /*french*/"une tonalité vers la gauche") // /*spanish*/un tono hacia la izquierda }, - CustomMessage("Ocarina C Left Button", "Taste C-Links der Okarina", "Touche C-Gauche de l'Ocarina")); + CustomMessage("Ocarina C Left Button", "C-Links-Taste der Okarina", "Touche C-Gauche de l'Ocarina")); hintTextTable[RHT_OCARINA_C_RIGHT_BUTTON] = HintText(CustomMessage("an Ocarina C Right Button", /*german*/"die C-Rechts-Taste der Okarina", /*french*/"la Touche C-Droit de l'Ocarina"), // /*spanish*/un botón C derecho de Ocarina @@ -2771,7 +2756,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a rightward tone", /*german*/"ein rechtsseitiger Ton", /*french*/"une tonalité vers la droite") // /*spanish*/un tono hacia la derecha }, - CustomMessage("Ocarina C Right Button", "Taste C-Rechts der Okarina", "Touche C-Droit de l'Ocarina")); + CustomMessage("Ocarina C Right Button", "C-Rechts-Taste der Okarina", "Touche C-Droit de l'Ocarina")); hintTextTable[RHT_FISHING_POLE] = HintText(CustomMessage("a fishing pole", /*german*/"eine Angelrute", /*french*/"une canne à pêche"), // /*spanish*/caña de pescar @@ -2815,23 +2800,23 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_BULLET_BAG_INF] = HintText(CustomMessage("an infinite Bullet Bag", /*german*/"die unendliche Munitionstasche", /*french*/"un Sac de Graine sans fond"), {}, {}, - CustomMessage("Infinite Bullet Bag", "Unendliche Samentasche", "Sac de Graines Infinis")); + CustomMessage("Infinite Bullet Bag", "Unendliche Munitionstasche", "Sac de Graines Infinis")); hintTextTable[RHT_STICK_UPGRADE_INF] = HintText(CustomMessage("infinite Deku Sticks", /*german*/"unendliche Deku-Stab-Kapazität", /*french*/"des Bâtons Mojo illimités"), {}, {}, - CustomMessage("Infinite Stick Capacity", "Unendliche Stab-Kapazität", "Bâtons Mojo Infinis")); + CustomMessage("Infinite Stick Capacity", "Unendliche Deku-Stab-Kapazität", "Bâtons Mojo Infinis")); hintTextTable[RHT_NUT_UPGRADE_INF] = HintText(CustomMessage("infinite Deku Nutss", /*german*/"unendliche Deku-Nuß-Kapazität", /*french*/"des Noix Mojo illimitées"), {}, {}, - CustomMessage("Infinite Nut Capacity", "Unendliche Nuß-Kapazität", "Noix Mojo Infinies")); + CustomMessage("Infinite Nut Capacity", "Unendliche Deku-Nuß-Kapazität", "Noix Mojo Infinies")); hintTextTable[RHT_MAGIC_INF] = HintText(CustomMessage("unlimited Magic", /*german*/"unendliche Magische Kraft", /*french*/"de la Magie infinie"), {}, {}, - CustomMessage("Infinite Magic Meter", "Unendliches Magisches Maß", "Magie Infinie")); + CustomMessage("Infinite Magic Meter", "Unendliche Magische Kraft", "Magie Infinie")); hintTextTable[RHT_BOMBCHU_INF] = HintText(CustomMessage("infinite Bombchus", /*german*/"die unendliche Krabbelminentasche", /*french*/"des Missiles Teigneux illimités"), {}, {}, - CustomMessage("Infinite Bombchus", "Unendliche Krabbelminen", "Missiles Teigneux Infinis")); + CustomMessage("Infinite Bombchus", "Unendliche Krabbelminentasche", "Missiles Teigneux Infinis")); hintTextTable[RHT_WALLET_INF] = HintText(CustomMessage("an infinite Wallet", /*german*/"die unendliche Geldbörse", /*french*/"une Bourse sans fond"), {}, {}, @@ -2886,7 +2871,7 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_BIGGEST_BOMB_BAG] = HintText(CustomMessage("the Biggest Bomb Bag", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Biggest Bomb Bag", "Größte Bombentasche", "Énorme Sac de Bombes")); + CustomMessage("Biggest Bomb Bag", "Riesen-Bombentasche", "Énorme Sac de Bombes")); hintTextTable[RHT_FAIRY_BOW] = HintText(CustomMessage("the Fairy Bow", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, @@ -2898,7 +2883,7 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_BIGGEST_QUIVER] = HintText(CustomMessage("the Biggest Quiver", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Biggest Quiver", "Größter Köcher", "Énorme carquois")); + CustomMessage("Biggest Quiver", "Riesenköcher", "Énorme carquois")); hintTextTable[RHT_FAIRY_SLINGSHOT] = HintText(CustomMessage("the Fairy Slingshot", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, @@ -2906,11 +2891,11 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_BIG_BULLET_BAG] = HintText(CustomMessage("a Big Bullet Bag", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Big Deku Seed Bullet Bag", "Große Deku-Samentasche", "Grand sac de graines mojo")); + CustomMessage("Big Deku Seed Bullet Bag", "Große Munitionstasche", "Grand sac de graines mojo")); hintTextTable[RHT_BIGGEST_BULLET_BAG] = HintText(CustomMessage("the Biggest Bullet Bag", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Biggest Deku Seed Bullet Bag", "Größte Deku-Samentasche", "Énorme sac de graines mojo")); + CustomMessage("Biggest Deku Seed Bullet Bag", "Riesen-Munitionstasche", "Énorme sac de graines mojo")); hintTextTable[RHT_GORONS_BRACELET] = HintText(CustomMessage("the Goron's Bracelet", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, @@ -2918,11 +2903,11 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_SILVER_GAUNTLETS] = HintText(CustomMessage("the Silver Gauntlets", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Silver Gauntlets", "Silberhandschuhe", "Gantelets d'argent")); + CustomMessage("Silver Gauntlets", "Krafthandschuhe", "Gantelets d'argent")); hintTextTable[RHT_GOLDEN_GAUNTLETS] = HintText(CustomMessage("the Golden Gauntlets", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Golden Gauntlets", "Goldhandschuhe", "Gantelets d'or")); + CustomMessage("Golden Gauntlets", "Titanhandschuhe", "Gantelets d'or")); hintTextTable[RHT_BRONZE_SCALE] = HintText(CustomMessage("a Bronze Scale", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, @@ -2942,11 +2927,11 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_ADULT_WALLET] = HintText(CustomMessage("an Adult's Wallet", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Adult Wallet", "Erwachsenengeldbörse", "Grande Bourse")); + CustomMessage("Adult Wallet", "Große Geldbörse", "Grande Bourse")); hintTextTable[RHT_GIANT_WALLET] = HintText(CustomMessage("a Giant Wallet", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Giant Wallet", "Riesige Geldbörse", "Bourse de Géant")); + CustomMessage("Giant Wallet", "Riesengeldbörse", "Bourse de Géant")); hintTextTable[RHT_TYCOON_WALLET] = HintText(CustomMessage("the Tycoon Wallet", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, @@ -2978,11 +2963,11 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_MAGIC_SINGLE] = HintText(CustomMessage("a Small Magic Meter", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Magic Meter", "Magisches Maß", "Jauge de Magie")); + CustomMessage("Magic Meter", "Magische Kraft", "Jauge de Magie")); hintTextTable[RHT_MAGIC_DOUBLE] = HintText(CustomMessage("a Large Magic Meter", /*german*/ TODO_TRANSLATE, /*french*/ TODO_TRANSLATE), {}, {}, - CustomMessage("Enhanced Magic Meter", "Verbessertes Magisches Maß", "Jauge de Magie améliorée")); + CustomMessage("Enhanced Magic Meter", "Verb. Magische Kraft", "Jauge de Magie améliorée")); //What is this used for? From d6459820e2e6415aedeb159be80f9b0af6106468 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Sun, 29 Jun 2025 21:58:26 +0100 Subject: [PATCH 24/24] another fix --- soh/soh/Enhancements/randomizer/item_list.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index f2c7cfc8e..095ac26dd 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -75,7 +75,7 @@ void Rando::StaticData::InitItemTable() { AddItem(RG_EYEDROPS, ITEMTYPE_ITEM, GI_EYEDROPS, LOGIC_EYEDROPS, RHT_EYEDROPS, ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); AddItem(RG_CLAIM_CHECK, ITEMTYPE_ITEM, GI_CLAIM_CHECK, LOGIC_CLAIM_CHECK, RHT_CLAIM_CHECK, ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Skulltula Token - itemTable[RG_GOLD_SKULLTULA_TOKEN] = Item(RG_GOLD_SKULLTULA_TOKEN, Text{ "Gold Skulltula Token", "Symbole de Skulltula d'Or", "Skulltula-Symbol" }, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, true, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULLTULA_TOKEN, MOD_NONE); + AddItem(RG_GOLD_SKULLTULA_TOKEN, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULL_TOKEN, MOD_NONE); // Progressive Items AddItem(RG_PROGRESSIVE_HOOKSHOT, ITEMTYPE_ITEM, 0x80, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_PROGRESSIVE_HOOKSHOT); AddItem(RG_PROGRESSIVE_STRENGTH, ITEMTYPE_ITEM, 0x81, LOGIC_PROGRESSIVE_STRENGTH, RHT_PROGRESSIVE_STRENGTH);