From 167601685c23511dc6e3cd66b69937f05ad480d6 Mon Sep 17 00:00:00 2001 From: Demur Rumed Date: Wed, 29 Jan 2025 03:17:28 +0000 Subject: [PATCH] GI text. RHT. Also always require Rauru's Soul --- .../3drando/hint_list/hint_list_item.cpp | 47 ++++++ soh/soh/Enhancements/randomizer/item_list.cpp | 90 ++++++------ .../Enhancements/randomizer/randomizer.cpp | 135 +++++++++++++++++- .../Enhancements/randomizer/randomizerTypes.h | 94 +++++++++++- .../Enhancements/randomizer/randomizer_inf.h | 2 +- .../Enhancements/timesaver_hook_handlers.cpp | 2 +- 6 files changed, 320 insertions(+), 50 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 867da2b2c..425a00fbd 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 @@ -2025,6 +2025,53 @@ void StaticData::HintTable_Init_Item() { CustomMessage("an evil soul", /*german*/"eine böse Seele", /*french*/""), CustomMessage("some powerful essence", /*german*/"etwas mächtige Essenz", /*french*/"")}); + hintTextTable[RHT_ANJU_SOUL] = HintText(CustomMessage("Anju's Soul")); + hintTextTable[RHT_TALON_SOUL] = HintText(CustomMessage("Talon's Soul")); + hintTextTable[RHT_GROG_SOUL] = HintText(CustomMessage("Grog's Soul")); + hintTextTable[RHT_GRANNY_SOUL] = HintText(CustomMessage("Granny's Soul")); + hintTextTable[RHT_FADO_SOUL] = HintText(CustomMessage("Fado's Soul")); + hintTextTable[RHT_LINK_SOUL] = HintText(CustomMessage("Darunia's Son's Soul")); + hintTextTable[RHT_BIGGORON_SOUL] = HintText(CustomMessage("Biggoron's Soul")); + hintTextTable[RHT_HOT_RODDER_SOUL] = HintText(CustomMessage("Hot Rodder's Soul")); + hintTextTable[RHT_MEDIGORON_SOUL] = HintText(CustomMessage("Medigoron's Soul")); + hintTextTable[RHT_CARPENTER_BOSS_SOUL] = HintText(CustomMessage("Carpenter Boss's Soul")); + hintTextTable[RHT_ICHIRO_SOUL] = HintText(CustomMessage("Ichiro's Soul")); + hintTextTable[RHT_SABOORO_SOUL] = HintText(CustomMessage("Sabooro's Soul")); + hintTextTable[RHT_JIRO_SOUL] = HintText(CustomMessage("Jiro's Soul")); + hintTextTable[RHT_SHIRO_SOUL] = HintText(CustomMessage("Shiro's Soul")); + hintTextTable[RHT_HW_GATEKEEPER_SOUL] = HintText(CustomMessage("Haunted Wasteland Gate Operator's Soul")); + hintTextTable[RHT_GTG_GATEKEEPER_SOUL] = HintText(CustomMessage("Training Ground Gate Operator's Soul")); + hintTextTable[RHT_ARCHER_SOUL] = HintText(CustomMessage("Horseback Archer's Soul")); + hintTextTable[RHT_GREAT_FAIRY_SOUL] = HintText(CustomMessage("Great Fairy's Soul")); + hintTextTable[RHT_POE_COLLECTOR_SOUL] = HintText(CustomMessage("Poe Collector's Soul")); + hintTextTable[RHT_DAMPE_SOUL] = HintText(CustomMessage("Dampe's Soul")); + hintTextTable[RHT_WINDMILL_MAN_SOUL] = HintText(CustomMessage("Windmill Man's Soul")); + hintTextTable[RHT_MAN_ON_ROOF_SOUL] = HintText(CustomMessage("Man on Roof's Soul")); + hintTextTable[RHT_MALON_SOUL] = HintText(CustomMessage("Malon's Soul")); + hintTextTable[RHT_BEGGAR_SOUL] = HintText(CustomMessage("Beggar's Soul")); + hintTextTable[RHT_ARMS_DEALER_SOUL] = HintText(CustomMessage("Arms Dealer's Soul")); + hintTextTable[RHT_BEAN_SALESMAN_SOUL] = HintText(CustomMessage("Bean Salesman's Soul")); + hintTextTable[RHT_SHOOTING_SOUL] = HintText(CustomMessage("Shooter's Soul")); + hintTextTable[RHT_KOKIRI_SHOPKEEPER_SOUL] = HintText(CustomMessage("Kokiri Shopkeeper's Soul")); + hintTextTable[RHT_POTION_SHOPKEEPER_SOUL] = HintText(CustomMessage("Potion Shopkeeper's Soul")); + hintTextTable[RHT_BAZAAR_SHOPKEEPER_SOUL] = HintText(CustomMessage("Bazaar Shopkeeper's Soul")); + hintTextTable[RHT_GORON_SHOPKEEPER_SOUL] = HintText(CustomMessage("Goron Shopkeeper's Soul")); + hintTextTable[RHT_ZORA_SHOPKEEPER_SOUL] = HintText(CustomMessage("Zora Shopkeeper's Soul")); + hintTextTable[RHT_BOMBCHU_SHOPKEEPER_SOUL] = HintText(CustomMessage("Bombchu Shopkeeper's Soul")); + hintTextTable[RHT_MASK_SALESMAN_SOUL] = HintText(CustomMessage("Mask Salesman's Soul")); + hintTextTable[RHT_TREASURE_MAN_SOUL] = HintText(CustomMessage("Treasure Man's Soul")); + hintTextTable[RHT_BOMBCHU_LADY_SOUL] = HintText(CustomMessage("Bombchu Lady's Soul")); + hintTextTable[RHT_DIVING_SOUL] = HintText(CustomMessage("Diver's Soul")); + hintTextTable[RHT_SCIENTIST_SOUL] = HintText(CustomMessage("Scientist's Soul")); + hintTextTable[RHT_KAEPORA_SOUL] = HintText(CustomMessage("Kaepora's Soul")); + hintTextTable[RHT_RAURU_SOUL] = HintText(CustomMessage("Rauru's Soul")); + hintTextTable[RHT_SARIA_SOUL] = HintText(CustomMessage("Saria's Soul")); + hintTextTable[RHT_DARUNIA_SOUL] = HintText(CustomMessage("Darunia's Soul")); + hintTextTable[RHT_RUTO_SOUL] = HintText(CustomMessage("Ruto's Soul")); + hintTextTable[RHT_NABOORU_SOUL] = HintText(CustomMessage("Nabooru's Soul")); + hintTextTable[RHT_IMPA_SOUL] = HintText(CustomMessage("Impa's Soul")); + hintTextTable[RHT_ZELDA_SOUL] = HintText(CustomMessage("Zelda's Soul")); + 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 { diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index f7d4a0a43..a890bf824 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -323,95 +323,95 @@ void Rando::StaticData::InitItemTable() { 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].SetCustomDrawFunc(Randomizer_DrawBossSoul); // NPC souls - itemTable[RG_ANJU_SOUL] = Item(RG_ANJU_SOUL, Text{ "Anju's Soul", "Âme de Anju", "Anjus Seele" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_ANJU_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_ANJU_SOUL] = Item(RG_ANJU_SOUL, Text{ "Anju's Soul", "Âme de Anju", "Anjus Seele" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_ANJU, RHT_ANJU_SOUL, RG_ANJU_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_ANJU_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_TALON_SOUL] = Item(RG_TALON_SOUL, Text{ "Talon's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_TALON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_TALON_SOUL] = Item(RG_TALON_SOUL, Text{ "Talon's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_TALON, RHT_TALON_SOUL, RG_TALON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_TALON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_GROG_SOUL] = Item(RG_GROG_SOUL, Text{ "Grog's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_GROG_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_GROG_SOUL] = Item(RG_GROG_SOUL, Text{ "Grog's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_GROG, RHT_GROG_SOUL, RG_GROG_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GROG_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_GRANNY_SOUL] = Item(RG_GRANNY_SOUL, Text{ "Granny's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_GRANNY_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_GRANNY_SOUL] = Item(RG_GRANNY_SOUL, Text{ "Granny's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_GRANNY, RHT_GRANNY_SOUL, RG_GRANNY_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GRANNY_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_FADO_SOUL] = Item(RG_FADO_SOUL, Text{ "Fado's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_FADO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_FADO_SOUL] = Item(RG_FADO_SOUL, Text{ "Fado's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_FADO, RHT_FADO_SOUL, RG_FADO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_FADO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_LINK_SOUL] = Item(RG_LINK_SOUL, Text{ "Darunia's Son's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_LINK_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_LINK_SOUL] = Item(RG_LINK_SOUL, Text{ "Darunia's Son's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_LINK, RHT_LINK_SOUL, RG_LINK_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_LINK_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BIGGORON_SOUL] = Item(RG_BIGGORON_SOUL, Text{ "Biggoron's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_BIGGORON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BIGGORON_SOUL] = Item(RG_BIGGORON_SOUL, Text{ "Biggoron's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_BIGGORON, RHT_BIGGORON_SOUL, RG_BIGGORON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BIGGORON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_HOT_RODDER_SOUL] = Item(RG_HOT_RODDER_SOUL, Text{ "Hot Rodder's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_HOT_RODDER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_HOT_RODDER_SOUL] = Item(RG_HOT_RODDER_SOUL, Text{ "Hot Rodder's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_HOT_RODDER, RHT_HOT_RODDER_SOUL, RG_HOT_RODDER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_HOT_RODDER_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_MEDIGORON_SOUL] = Item(RG_MEDIGORON_SOUL, Text{ "Medigoron's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_MEDIGORON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MEDIGORON_SOUL] = Item(RG_MEDIGORON_SOUL, Text{ "Medigoron's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MEDIGORON, RHT_MEDIGORON_SOUL, RG_MEDIGORON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MEDIGORON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_CARPENTER_BOSS_SOUL] = Item(RG_CARPENTER_BOSS_SOUL, Text{ "Carpenter Boss's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_CARPENTER_BOSS_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_CARPENTER_BOSS_SOUL] = Item(RG_CARPENTER_BOSS_SOUL, Text{ "Carpenter Boss's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_CARPENTER_BOSS, RHT_CARPENTER_BOSS_SOUL, RG_CARPENTER_BOSS_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_CARPENTER_BOSS_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_ICHIRO_SOUL] = Item(RG_ICHIRO_SOUL, Text{ "Ichiro's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_ICHIRO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_ICHIRO_SOUL] = Item(RG_ICHIRO_SOUL, Text{ "Ichiro's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_ICHIRO, RHT_ICHIRO_SOUL, RG_ICHIRO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_FADO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_SABOORO_SOUL] = Item(RG_SABOORO_SOUL, Text{ "Sabooro's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_FADO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_SABOORO_SOUL] = Item(RG_SABOORO_SOUL, Text{ "Sabooro's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_SABOORO, RHT_SABOORO_SOUL, RG_FADO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_SABOORO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_JIRO_SOUL] = Item(RG_JIRO_SOUL, Text{ "Jiro's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_JIRO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_JIRO_SOUL] = Item(RG_JIRO_SOUL, Text{ "Jiro's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_JIRO, RHT_JIRO_SOUL, RG_JIRO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_JIRO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_SHIRO_SOUL] = Item(RG_SHIRO_SOUL, Text{ "Shiro's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_SHIRO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_SHIRO_SOUL] = Item(RG_SHIRO_SOUL, Text{ "Shiro's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_SHIRO, RHT_SHIRO_SOUL, RG_SHIRO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_SHIRO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_HW_GATEKEEPER_SOUL] = Item(RG_HW_GATEKEEPER_SOUL, Text{ "Haunted Wasteland Gate Operator's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_HW_GATEKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_HW_GATEKEEPER_SOUL] = Item(RG_HW_GATEKEEPER_SOUL, Text{ "Haunted Wasteland Gate Operator's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_HW_GATEKEEPER, RHT_HW_GATEKEEPER_SOUL, RG_HW_GATEKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_HW_GATEKEEPER_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_GTG_GATEKEEPER_SOUL] = Item(RG_GTG_GATEKEEPER_SOUL, Text{ "Training Ground Gate Operator's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_GTG_GATEKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_GTG_GATEKEEPER_SOUL] = Item(RG_GTG_GATEKEEPER_SOUL, Text{ "Training Ground Gate Operator's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_GTG_GATEKEEPER, RHT_GTG_GATEKEEPER_SOUL, RG_GTG_GATEKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GTG_GATEKEEPER_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_ARCHER_SOUL] = Item(RG_ARCHER_SOUL, Text{ "Horseback Archer's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_ARCHER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_ARCHER_SOUL] = Item(RG_ARCHER_SOUL, Text{ "Horseback Archer's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_ARCHER, RHT_ARCHER_SOUL, RG_ARCHER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_ARCHER_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_GREAT_FAIRY_SOUL] = Item(RG_GREAT_FAIRY_SOUL, Text{ "Great Fairy's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_GREAT_FAIRY_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_GREAT_FAIRY_SOUL] = Item(RG_GREAT_FAIRY_SOUL, Text{ "Great Fairy's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_GREAT_FAIRY, RHT_GREAT_FAIRY_SOUL, RG_GREAT_FAIRY_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GREAT_FAIRY_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_POE_COLLECTOR_SOUL] = Item(RG_POE_COLLECTOR_SOUL, Text{ "Poe Collector's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_POE_COLLECTOR_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_POE_COLLECTOR_SOUL] = Item(RG_POE_COLLECTOR_SOUL, Text{ "Poe Collector's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_POE_COLLECTOR, RHT_POE_COLLECTOR_SOUL, RG_POE_COLLECTOR_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_POE_COLLECTOR_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_DAMPE_SOUL] = Item(RG_DAMPE_SOUL, Text{ "Dampe's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_DAMPE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DAMPE_SOUL] = Item(RG_DAMPE_SOUL, Text{ "Dampe's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_DAMPE, RHT_DAMPE_SOUL, RG_DAMPE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_DAMPE_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_WINDMILL_MAN_SOUL] = Item(RG_WINDMILL_MAN_SOUL, Text{ "Windmill Man's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_WINDMILL_MAN_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_WINDMILL_MAN_SOUL] = Item(RG_WINDMILL_MAN_SOUL, Text{ "Windmill Man's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_WINDMILL_MAN, RHT_WINDMILL_MAN_SOUL, RG_WINDMILL_MAN_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_WINDMILL_MAN_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_MAN_ON_ROOF_SOUL] = Item(RG_MAN_ON_ROOF_SOUL, Text{ "Man on Roof's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_MAN_ON_ROOF_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MAN_ON_ROOF_SOUL] = Item(RG_MAN_ON_ROOF_SOUL, Text{ "Man on Roof's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MAN_ON_ROOF, RHT_MAN_ON_ROOF_SOUL, RG_MAN_ON_ROOF_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MAN_ON_ROOF_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_MALON_SOUL] = Item(RG_MALON_SOUL, Text{ "Malon's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_MALON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MALON_SOUL] = Item(RG_MALON_SOUL, Text{ "Malon's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MALON, RHT_MALON_SOUL, RG_MALON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MALON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_ARMS_DEALER_SOUL] = Item(RG_ARMS_DEALER_SOUL, Text{ "Arms Dealer's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_ARMS_DEALER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_ARMS_DEALER_SOUL] = Item(RG_ARMS_DEALER_SOUL, Text{ "Arms Dealer's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_ARMS_DEALER, RHT_ARMS_DEALER_SOUL, RG_ARMS_DEALER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_ARMS_DEALER_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BEAN_SALESMAN_SOUL] = Item(RG_BEAN_SALESMAN_SOUL, Text{ "Bean Salesman's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_BEAN_SALESMAN_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BEAN_SALESMAN_SOUL] = Item(RG_BEAN_SALESMAN_SOUL, Text{ "Bean Salesman's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_BEAN_SALESMAN, RHT_BEAN_SALESMAN_SOUL, RG_BEAN_SALESMAN_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BEAN_SALESMAN_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_SHOOTING_SOUL] = Item(RG_SHOOTING_SOUL, Text{ "Shooter's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_SHOOTING_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_SHOOTING_SOUL] = Item(RG_SHOOTING_SOUL, Text{ "Shooter's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_SHOOTING, RHT_SHOOTING_SOUL, RG_SHOOTING_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_SHOOTING_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_KOKIRI_SHOPKEEPER_SOUL] = Item(RG_KOKIRI_SHOPKEEPER_SOUL, Text{ "Kokiri Shopkeeper's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_KOKIRI_SHOPKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_KOKIRI_SHOPKEEPER_SOUL] = Item(RG_KOKIRI_SHOPKEEPER_SOUL, Text{ "Kokiri Shopkeeper's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_KOKIRI_SHOPKEEPER, RHT_KOKIRI_SHOPKEEPER_SOUL, RG_KOKIRI_SHOPKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_KOKIRI_SHOPKEEPER_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_POTION_SHOPKEEPER_SOUL] = Item(RG_POTION_SHOPKEEPER_SOUL, Text{ "Potion Shopkeeper's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_POTION_SHOPKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_POTION_SHOPKEEPER_SOUL] = Item(RG_POTION_SHOPKEEPER_SOUL, Text{ "Potion Shopkeeper's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_POTION_SHOPKEEPER, RHT_POTION_SHOPKEEPER_SOUL, RG_POTION_SHOPKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_POTION_SHOPKEEPER_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BAZAAR_SHOPKEEPER_SOUL] = Item(RG_BAZAAR_SHOPKEEPER_SOUL, Text{ "Bazaar Shopkeeper's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_BAZAAR_SHOPKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BAZAAR_SHOPKEEPER_SOUL] = Item(RG_BAZAAR_SHOPKEEPER_SOUL, Text{ "Bazaar Shopkeeper's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_BAZAAR_SHOPKEEPER, RHT_BAZAAR_SHOPKEEPER_SOUL, RG_BAZAAR_SHOPKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BAZAAR_SHOPKEEPER_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_GORON_SHOPKEEPER_SOUL] = Item(RG_GORON_SHOPKEEPER_SOUL, Text{ "Goron Shopkeeper's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_GORON_SHOPKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_GORON_SHOPKEEPER_SOUL] = Item(RG_GORON_SHOPKEEPER_SOUL, Text{ "Goron Shopkeeper's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_GORON_SHOPKEEPER, RHT_GORON_SHOPKEEPER_SOUL, RG_GORON_SHOPKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GORON_SHOPKEEPER_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_ZORA_SHOPKEEPER_SOUL] = Item(RG_ZORA_SHOPKEEPER_SOUL, Text{ "Zora Shopkeeper's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_ZORA_SHOPKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_ZORA_SHOPKEEPER_SOUL] = Item(RG_ZORA_SHOPKEEPER_SOUL, Text{ "Zora Shopkeeper's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_ZORA_SHOPKEEPER, RHT_ZORA_SHOPKEEPER_SOUL, RG_ZORA_SHOPKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_ZORA_SHOPKEEPER_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BOMBCHU_SHOPKEEPER_SOUL] = Item(RG_BOMBCHU_SHOPKEEPER_SOUL, Text{ "Bombchu Shopkeeper's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_BOMBCHU_SHOPKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOMBCHU_SHOPKEEPER_SOUL] = Item(RG_BOMBCHU_SHOPKEEPER_SOUL, Text{ "Bombchu Shopkeeper's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_BOMBCHU_SHOPKEEPER, RHT_BOMBCHU_SHOPKEEPER_SOUL, RG_BOMBCHU_SHOPKEEPER_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BOMBCHU_SHOPKEEPER_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_MASK_SALESMAN_SOUL] = Item(RG_MASK_SALESMAN_SOUL, Text{ "Mask Salesman's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_MASK_SALESMAN_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MASK_SALESMAN_SOUL] = Item(RG_MASK_SALESMAN_SOUL, Text{ "Mask Salesman's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MASK_SALESMAN, RHT_MASK_SALESMAN_SOUL, RG_MASK_SALESMAN_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MASK_SALESMAN_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_TREASURE_MAN_SOUL] = Item(RG_TREASURE_MAN_SOUL, Text{ "Treasure Man's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_TREASURE_MAN_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_TREASURE_MAN_SOUL] = Item(RG_TREASURE_MAN_SOUL, Text{ "Treasure Man's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_TREASURE_MAN, RHT_TREASURE_MAN_SOUL, RG_TREASURE_MAN_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_TREASURE_MAN_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BOMBCHU_LADY_SOUL] = Item(RG_BOMBCHU_LADY_SOUL, Text{ "Bombchu Lady's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_BOMBCHU_LADY_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOMBCHU_LADY_SOUL] = Item(RG_BOMBCHU_LADY_SOUL, Text{ "Bombchu Lady's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_BOMBCHU_LADY, RHT_BOMBCHU_LADY_SOUL, RG_BOMBCHU_LADY_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BOMBCHU_LADY_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_DIVING_SOUL] = Item(RG_DIVING_SOUL, Text{ "Diver's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_DIVING_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DIVING_SOUL] = Item(RG_DIVING_SOUL, Text{ "Diver's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_DIVING, RHT_DIVING_SOUL, RG_DIVING_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_DIVING_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_SCIENTIST_SOUL] = Item(RG_SCIENTIST_SOUL, Text{ "Scientist's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_SCIENTIST_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_SCIENTIST_SOUL] = Item(RG_SCIENTIST_SOUL, Text{ "Scientist's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_SCIENTIST, RHT_SCIENTIST_SOUL, RG_SCIENTIST_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_SCIENTIST_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_KAEPORA_SOUL] = Item(RG_KAEPORA_SOUL, Text{ "Kaepora's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_KAEPORA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_KAEPORA_SOUL] = Item(RG_KAEPORA_SOUL, Text{ "Kaepora's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_KAEPORA, RHT_KAEPORA_SOUL, RG_KAEPORA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_KAEPORA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_RAURU_SOUL] = Item(RG_RAURU_SOUL, Text{ "Rauru's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_RAURU_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_RAURU_SOUL] = Item(RG_RAURU_SOUL, Text{ "Rauru's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_RAURU, RHT_RAURU_SOUL, RG_RAURU_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_RAURU_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_SARIA_SOUL] = Item(RG_SARIA_SOUL, Text{ "Saria's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_SARIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_SARIA_SOUL] = Item(RG_SARIA_SOUL, Text{ "Saria's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_SARIA, RHT_SARIA_SOUL, RG_SARIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_SARIA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_DARUNIA_SOUL] = Item(RG_DARUNIA_SOUL, Text{ "Darunia's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_DARUNIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DARUNIA_SOUL] = Item(RG_DARUNIA_SOUL, Text{ "Darunia's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_DARUNIA, RHT_DARUNIA_SOUL, RG_DARUNIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_DARUNIA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_RUTO_SOUL] = Item(RG_RUTO_SOUL, Text{ "Ruto's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_RUTO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_RUTO_SOUL] = Item(RG_RUTO_SOUL, Text{ "Ruto's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_RUTO, RHT_RUTO_SOUL, RG_RUTO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_RUTO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_NABOORU_SOUL] = Item(RG_NABOORU_SOUL, Text{ "Nabooru's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_NABOORU_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_NABOORU_SOUL] = Item(RG_NABOORU_SOUL, Text{ "Nabooru's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_NABOORU, RHT_NABOORU_SOUL, RG_NABOORU_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_NABOORU_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_IMPA_SOUL] = Item(RG_IMPA_SOUL, Text{ "Impa's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_IMPA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_IMPA_SOUL] = Item(RG_IMPA_SOUL, Text{ "Impa's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_IMPA, RHT_IMPA_SOUL, RG_IMPA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_IMPA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_ZELDA_SOUL] = Item(RG_ZELDA_SOUL, Text{ "Zelda's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_ZELDA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_ZELDA_SOUL] = Item(RG_ZELDA_SOUL, Text{ "Zelda's Soul" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_ZELDA, RHT_ZELDA_SOUL, RG_ZELDA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_ZELDA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); // Misc. 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); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index b489a9694..8e790625c 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -3332,7 +3332,7 @@ CustomMessage Randomizer::GetGoronMessage(u16 index) { void Randomizer::CreateCustomMessages() { // RANDTODO: Translate into french and german and replace GIMESSAGE_UNTRANSLATED // with GIMESSAGE(getItemID, itemID, english, german, french). - const std::array getItemMessages = {{ + const std::array getItemMessages = {{ GIMESSAGE(RG_GREG_RUPEE, ITEM_MASK_GORON, "You found %gGreg%w!", "%gGreg%w! Du hast ihn wirklich gefunden!", @@ -3707,10 +3707,141 @@ void Randomizer::CreateCustomMessages() { GIMESSAGE_NO_GERMAN(RG_ANJU_SOUL, ITEM_BIG_POE, "You found the soul for %bAnju%w!", "Vous obtenez l'âme de %bAnju%w!"), - // TODO, for now play without get item message enabled + GIMESSAGE_NO_GERMAN(RG_TALON_SOUL, ITEM_BIG_POE, + "You found the soul for %bTalon%w!", + "Vous obtenez l'âme de %bTalon%w!"), + GIMESSAGE_NO_GERMAN(RG_GROG_SOUL, ITEM_BIG_POE, + "You found the soul for %bGrog%w!", + "Vous obtenez l'âme de %bGrog%w!"), + GIMESSAGE_NO_GERMAN(RG_GRANNY_SOUL, ITEM_BIG_POE, + "You found the soul for %bGranny%w!", + "Vous obtenez l'âme de %bGranny%w!"), + GIMESSAGE_NO_GERMAN(RG_FADO_SOUL, ITEM_BIG_POE, + "You found the soul for %bFado%w!", + "Vous obtenez l'âme de %bFado%w!"), + GIMESSAGE_NO_GERMAN(RG_LINK_SOUL, ITEM_BIG_POE, + "You found the soul for %bDarunia's Son%w!", + "Vous obtenez l'âme de %ble fils de Darunia%w!"), + GIMESSAGE_NO_GERMAN(RG_BIGGORON_SOUL, ITEM_BIG_POE, + "You found the soul for %bBiggoron%w!", + "Vous obtenez l'âme de %bBiggoron%w!"), + GIMESSAGE_NO_GERMAN(RG_HOT_RODDER_SOUL, ITEM_BIG_POE, + "You found the soul for %bHot Rodder%w!", + "Vous obtenez l'âme de %bHot Rodder%w!"), + GIMESSAGE_NO_GERMAN(RG_MEDIGORON_SOUL, ITEM_BIG_POE, + "You found the soul for %bMedigoron%w!", + "Vous obtenez l'âme de %bMedigoron%w!"), + GIMESSAGE_NO_GERMAN(RG_CARPENTER_BOSS_SOUL, ITEM_BIG_POE, + "You found the soul for %bCarpenter Boss%w!", + "Vous obtenez l'âme de %bCarpenter Boss%w!"), + GIMESSAGE_NO_GERMAN(RG_ICHIRO_SOUL, ITEM_BIG_POE, + "You found the soul for %bIchiro%w!", + "Vous obtenez l'âme de %bIchiro%w!"), + GIMESSAGE_NO_GERMAN(RG_SABOORO_SOUL, ITEM_BIG_POE, + "You found the soul for %bSabooro%w!", + "Vous obtenez l'âme de %bSabooro%w!"), + GIMESSAGE_NO_GERMAN(RG_JIRO_SOUL, ITEM_BIG_POE, + "You found the soul for %bJiro%w!", + "Vous obtenez l'âme de %bJiro%w!"), + GIMESSAGE_NO_GERMAN(RG_SHIRO_SOUL, ITEM_BIG_POE, + "You found the soul for %bShiro%w!", + "Vous obtenez l'âme de %bShiro%w!"), + GIMESSAGE_NO_GERMAN(RG_HW_GATEKEEPER_SOUL, ITEM_BIG_POE, + "You found the soul for %bHaunted Wasteland Gate Operator%w!", + "Vous obtenez l'âme de %bHaunted Wasteland Gate Operator%w!"), + GIMESSAGE_NO_GERMAN(RG_GTG_GATEKEEPER_SOUL, ITEM_BIG_POE, + "You found the soul for %bTraining Ground Gate Operator%w!", + "Vous obtenez l'âme de %bTraining Ground Gate Operator%w!"), + GIMESSAGE_NO_GERMAN(RG_ARCHER_SOUL, ITEM_BIG_POE, + "You found the soul for %bHorseback Archer%w!", + "Vous obtenez l'âme de %bHorseback Archer%w!"), + GIMESSAGE_NO_GERMAN(RG_GREAT_FAIRY_SOUL, ITEM_BIG_POE, + "You found the soul for %bGreat Fairy%w!", + "Vous obtenez l'âme de %bGreat Fairy%w!"), + GIMESSAGE_NO_GERMAN(RG_POE_COLLECTOR_SOUL, ITEM_BIG_POE, + "You found the soul for %bPoe Collector%w!", + "Vous obtenez l'âme de %bPoe Collector%w!"), + GIMESSAGE_NO_GERMAN(RG_DAMPE_SOUL, ITEM_BIG_POE, + "You found the soul for %bDampe%w!", + "Vous obtenez l'âme de %Dampeb%w!"), + GIMESSAGE_NO_GERMAN(RG_WINDMILL_MAN_SOUL, ITEM_BIG_POE, + "You found the soul for %bWindmill Man%w!", + "Vous obtenez l'âme de %bWindmill Man%w!"), + GIMESSAGE_NO_GERMAN(RG_MAN_ON_ROOF_SOUL, ITEM_BIG_POE, + "You found the soul for %bMan on Roof%w!", + "Vous obtenez l'âme de %bMan on Roof%w!"), + GIMESSAGE_NO_GERMAN(RG_MALON_SOUL, ITEM_BIG_POE, + "You found the soul for %bMalon%w!", + "Vous obtenez l'âme de %bMalon%w!"), + GIMESSAGE_NO_GERMAN(RG_BEGGAR_SOUL, ITEM_BIG_POE, + "You found the soul for %bBeggar%w!", + "Vous obtenez l'âme de %bBeggar%w!"), + GIMESSAGE_NO_GERMAN(RG_ARMS_DEALER_SOUL, ITEM_BIG_POE, + "You found the soul for %bArms Dealer%w!", + "Vous obtenez l'âme de %bArms Dealer%w!"), + GIMESSAGE_NO_GERMAN(RG_BEAN_SALESMAN_SOUL, ITEM_BIG_POE, + "You found the soul for %bBean Salesman%w!", + "Vous obtenez l'âme de %bBean Salesman%w!"), GIMESSAGE_NO_GERMAN(RG_SHOOTING_SOUL, ITEM_BIG_POE, "You found the soul for %bShooter%w!", "Vous obtenez l'âme de %bShooter%w!"), + GIMESSAGE_NO_GERMAN(RG_KOKIRI_SHOPKEEPER_SOUL, ITEM_BIG_POE, + "You found the soul for %bKokiri Shopkeeper%w!", + "Vous obtenez l'âme de %bKokiri Shopkeeper%w!"), + GIMESSAGE_NO_GERMAN(RG_POTION_SHOPKEEPER_SOUL, ITEM_BIG_POE, + "You found the soul for %bPotion Shopkeeper%w!", + "Vous obtenez l'âme de %bPotion Shopkeeper%w!"), + GIMESSAGE_NO_GERMAN(RG_BAZAAR_SHOPKEEPER_SOUL, ITEM_BIG_POE, + "You found the soul for %bBazaar Shopkeeper%w!", + "Vous obtenez l'âme de %bBazaar Shopkeeper%w!"), + GIMESSAGE_NO_GERMAN(RG_GORON_SHOPKEEPER_SOUL, ITEM_BIG_POE, + "You found the soul for %bGoron Shopkeeper%w!", + "Vous obtenez l'âme de %bGoron Shopkeeper%w!"), + GIMESSAGE_NO_GERMAN(RG_ZORA_SHOPKEEPER_SOUL, ITEM_BIG_POE, + "You found the soul for %bZora Shopkeeper%w!", + "Vous obtenez l'âme de %bZora Shopkeeper%w!"), + GIMESSAGE_NO_GERMAN(RG_BOMBCHU_SHOPKEEPER_SOUL, ITEM_BIG_POE, + "You found the soul for %bBombchu Shopkeeper%w!", + "Vous obtenez l'âme de %bBombchu Shopkeeper%w!"), + GIMESSAGE_NO_GERMAN(RG_MASK_SALESMAN_SOUL, ITEM_BIG_POE, + "You found the soul for %bMask Salesman%w!", + "Vous obtenez l'âme de %bMask Salesman%w!"), + GIMESSAGE_NO_GERMAN(RG_TREASURE_MAN_SOUL, ITEM_BIG_POE, + "You found the soul for %bTreasure Man%w!", + "Vous obtenez l'âme de %bTreasure Man%w!"), + GIMESSAGE_NO_GERMAN(RG_BOMBCHU_LADY_SOUL, ITEM_BIG_POE, + "You found the soul for %bBombchu Lady%w!", + "Vous obtenez l'âme de %bBombchu Lady%w!"), + GIMESSAGE_NO_GERMAN(RG_DIVING_SOUL, ITEM_BIG_POE, + "You found the soul for %bDiver%w!", + "Vous obtenez l'âme de %bDiver%w!"), + GIMESSAGE_NO_GERMAN(RG_SCIENTIST_SOUL, ITEM_BIG_POE, + "You found the soul for %bScientist%w!", + "Vous obtenez l'âme de %bScientifique%w!"), + GIMESSAGE_NO_GERMAN(RG_KAEPORA_SOUL, ITEM_BIG_POE, + "You found the soul for %bKaepora%w!", + "Vous obtenez l'âme de %bKaepora%w!"), + GIMESSAGE_NO_GERMAN(RG_RAURU_SOUL, ITEM_BIG_POE, + "You found the soul for %bRauru%w!", + "Vous obtenez l'âme de %bRauru%w!"), + GIMESSAGE_NO_GERMAN(RG_SARIA_SOUL, ITEM_BIG_POE, + "You found the soul for %bSaria%w!", + "Vous obtenez l'âme de %bSaria%w!"), + GIMESSAGE_NO_GERMAN(RG_DARUNIA_SOUL, ITEM_BIG_POE, + "You found the soul for %bDarunia%w!", + "Vous obtenez l'âme de %bDarunia%w!"), + GIMESSAGE_NO_GERMAN(RG_RUTO_SOUL, ITEM_BIG_POE, + "You found the soul for %bRuto%w!", + "Vous obtenez l'âme de %bRuto%w!"), + GIMESSAGE_NO_GERMAN(RG_NABOORU_SOUL, ITEM_BIG_POE, + "You found the soul for %bNabooru%w!", + "Vous obtenez l'âme de %bNabooru%w!"), + GIMESSAGE_NO_GERMAN(RG_IMPA_SOUL, ITEM_BIG_POE, + "You found the soul for %bImpa%w!", + "Vous obtenez l'âme de %bImpa%w!"), + GIMESSAGE_NO_GERMAN(RG_ZELDA_SOUL, ITEM_BIG_POE, + "You found the soul for %bZelda%w!", + "Vous obtenez l'âme de %bZelda%w!"), GIMESSAGE(RG_OCARINA_A_BUTTON, ITEM_OCARINA_TIME, "You got the %b\x9f%r button for the&Ocarina%w! You can now use it&while playing songs!", diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index 868457578..8ac4b8990 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -204,6 +204,52 @@ typedef enum { LOGIC_CAN_SUMMON_BONGOBONGO, LOGIC_CAN_SUMMON_TWINROVA, LOGIC_CAN_SUMMON_GANON, + LOGIC_CAN_SUMMON_ANJU, + LOGIC_CAN_SUMMON_TALON, + LOGIC_CAN_SUMMON_GROG, + LOGIC_CAN_SUMMON_GRANNY, + LOGIC_CAN_SUMMON_FADO, + LOGIC_CAN_SUMMON_LINK, + LOGIC_CAN_SUMMON_BIGGORON, + LOGIC_CAN_SUMMON_HOT_RODDER, + LOGIC_CAN_SUMMON_MEDIGORON, + LOGIC_CAN_SUMMON_CARPENTER_BOSS, + LOGIC_CAN_SUMMON_ICHIRO, + LOGIC_CAN_SUMMON_SABOORO, + LOGIC_CAN_SUMMON_JIRO, + LOGIC_CAN_SUMMON_SHIRO, + LOGIC_CAN_SUMMON_HW_GATEKEEPER, + LOGIC_CAN_SUMMON_GTG_GATEKEEPER, + LOGIC_CAN_SUMMON_ARCHER, + LOGIC_CAN_SUMMON_GREAT_FAIRY, + LOGIC_CAN_SUMMON_POE_COLLECTOR, + LOGIC_CAN_SUMMON_DAMPE, + LOGIC_CAN_SUMMON_WINDMILL_MAN, + LOGIC_CAN_SUMMON_MAN_ON_ROOF, + LOGIC_CAN_SUMMON_MALON, + LOGIC_CAN_SUMMON_BEGGAR, + LOGIC_CAN_SUMMON_ARMS_DEALER, + LOGIC_CAN_SUMMON_BEAN_SALESMAN, + LOGIC_CAN_SUMMON_SHOOTING, + LOGIC_CAN_SUMMON_KOKIRI_SHOPKEEPER, + LOGIC_CAN_SUMMON_POTION_SHOPKEEPER, + LOGIC_CAN_SUMMON_BAZAAR_SHOPKEEPER, + LOGIC_CAN_SUMMON_GORON_SHOPKEEPER, + LOGIC_CAN_SUMMON_ZORA_SHOPKEEPER, + LOGIC_CAN_SUMMON_BOMBCHU_SHOPKEEPER, + LOGIC_CAN_SUMMON_MASK_SALESMAN, + LOGIC_CAN_SUMMON_TREASURE_MAN, + LOGIC_CAN_SUMMON_BOMBCHU_LADY, + LOGIC_CAN_SUMMON_DIVING, + LOGIC_CAN_SUMMON_SCIENTIST, + LOGIC_CAN_SUMMON_KAEPORA, + LOGIC_CAN_SUMMON_RAURU, + LOGIC_CAN_SUMMON_SARIA, + LOGIC_CAN_SUMMON_DARUNIA, + LOGIC_CAN_SUMMON_RUTO, + LOGIC_CAN_SUMMON_NABOORU, + LOGIC_CAN_SUMMON_IMPA, + LOGIC_CAN_SUMMON_ZELDA, LOGIC_FISHING_POLE, LOGIC_OCARINA_A_BUTTON, LOGIC_OCARINA_C_UP_BUTTON, @@ -3359,7 +3405,7 @@ typedef enum { RG_BOMBCHU_LADY_SOUL, RG_DIVING_SOUL, RG_SCIENTIST_SOUL, - RG_KAEPORA_SOUL, // used by loop, must be last non-sage NPC soul + RG_KAEPORA_SOUL, RG_RAURU_SOUL, RG_SARIA_SOUL, RG_DARUNIA_SOUL, @@ -4568,6 +4614,52 @@ typedef enum { RHT_BONGO_BONGO_SOUL, RHT_TWINROVA_SOUL, RHT_GANON_SOUL, + RHT_ANJU_SOUL, + RHT_TALON_SOUL, + RHT_GROG_SOUL, + RHT_GRANNY_SOUL, + RHT_FADO_SOUL, + RHT_LINK_SOUL, + RHT_BIGGORON_SOUL, + RHT_HOT_RODDER_SOUL, + RHT_MEDIGORON_SOUL, + RHT_CARPENTER_BOSS_SOUL, + RHT_ICHIRO_SOUL, + RHT_SABOORO_SOUL, + RHT_JIRO_SOUL, + RHT_SHIRO_SOUL, + RHT_HW_GATEKEEPER_SOUL, + RHT_GTG_GATEKEEPER_SOUL, + RHT_ARCHER_SOUL, + RHT_GREAT_FAIRY_SOUL, + RHT_POE_COLLECTOR_SOUL, + RHT_DAMPE_SOUL, + RHT_WINDMILL_MAN_SOUL, + RHT_MAN_ON_ROOF_SOUL, + RHT_MALON_SOUL, + RHT_BEGGAR_SOUL, + RHT_ARMS_DEALER_SOUL, + RHT_BEAN_SALESMAN_SOUL, + RHT_SHOOTING_SOUL, + RHT_KOKIRI_SHOPKEEPER_SOUL, + RHT_POTION_SHOPKEEPER_SOUL, + RHT_BAZAAR_SHOPKEEPER_SOUL, + RHT_GORON_SHOPKEEPER_SOUL, + RHT_ZORA_SHOPKEEPER_SOUL, + RHT_BOMBCHU_SHOPKEEPER_SOUL, + RHT_MASK_SALESMAN_SOUL, + RHT_TREASURE_MAN_SOUL, + RHT_BOMBCHU_LADY_SOUL, + RHT_DIVING_SOUL, + RHT_SCIENTIST_SOUL, + RHT_KAEPORA_SOUL, + RHT_RAURU_SOUL, + RHT_SARIA_SOUL, + RHT_DARUNIA_SOUL, + RHT_RUTO_SOUL, + RHT_NABOORU_SOUL, + RHT_IMPA_SOUL, + RHT_ZELDA_SOUL, RHT_OCARINA_A_BUTTON, RHT_OCARINA_C_UP_BUTTON, RHT_OCARINA_C_DOWN_BUTTON, diff --git a/soh/soh/Enhancements/randomizer/randomizer_inf.h b/soh/soh/Enhancements/randomizer/randomizer_inf.h index 2d49278a7..b69df2d41 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_inf.h +++ b/soh/soh/Enhancements/randomizer/randomizer_inf.h @@ -1363,7 +1363,7 @@ typedef enum { RAND_INF_TREASURE_MAN_SOUL, RAND_INF_DIVING_SOUL, RAND_INF_SCIENTIST_SOUL, - RAND_INF_KAEPORA_SOUL, // used by loop, must be last non-sage NPC soul + RAND_INF_KAEPORA_SOUL, RAND_INF_RAURU_SOUL, RAND_INF_SARIA_SOUL, RAND_INF_DARUNIA_SOUL, diff --git a/soh/soh/Enhancements/timesaver_hook_handlers.cpp b/soh/soh/Enhancements/timesaver_hook_handlers.cpp index 258745f8d..ae6e720e1 100644 --- a/soh/soh/Enhancements/timesaver_hook_handlers.cpp +++ b/soh/soh/Enhancements/timesaver_hook_handlers.cpp @@ -406,7 +406,7 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_li Flags_SetEventChkInf(EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL); Flags_SetEventChkInf(EVENTCHKINF_ENTERED_MASTER_SWORD_CHAMBER); Flags_SetEventChkInf(EVENTCHKINF_SHEIK_SPAWNED_AT_MASTER_SWORD_PEDESTAL); - if (!IS_RANDO || RAND_GET_OPTION(RSK_SHUFFLE_NPC_SOULS) != RO_NPC_SOULS_ON_PLUS_SAGES || Flags_GetRandomizerInf(RAND_INF_RAURU_SOUL)) { + if (!IS_RANDO || !RAND_GET_OPTION(RSK_SHUFFLE_NPC_SOULS) || Flags_GetRandomizerInf(RAND_INF_RAURU_SOUL)) { Flags_SetEventChkInf(EVENTCHKINF_TIME_TRAVELED_TO_ADULT); if (GameInteractor_Should(VB_GIVE_ITEM_LIGHT_MEDALLION, true)) { Item_Give(gPlayState, ITEM_MEDALLION_LIGHT);