/** * d_item.cpp * Item Get Handling */ #include "d/dolzel.h" // IWYU pragma: keep #include "d/d_item.h" #include "d/d_com_inf_game.h" #include "d/d_meter2_info.h" #if TARGET_PC #include "dusk/randomizer/game/flags.h" #include "dusk/randomizer/game/tools.h" #include "dusk/randomizer/game/stages.h" #include "dusk/randomizer/game/verify_item_functions.h" #endif #include static void (*item_func_ptr[256])() = { item_func_HEART, item_func_GREEN_RUPEE, item_func_BLUE_RUPEE, item_func_YELLOW_RUPEE, item_func_RED_RUPEE, item_func_PURPLE_RUPEE, item_func_ORANGE_RUPEE, item_func_SILVER_RUPEE, item_func_S_MAGIC, item_func_L_MAGIC, item_func_BOMB_5, item_func_BOMB_10, item_func_BOMB_20, item_func_BOMB_30, item_func_ARROW_10, item_func_ARROW_20, item_func_ARROW_30, item_func_ARROW_1, item_func_PACHINKO_SHOT, item_func_noentry, item_func_noentry, item_func_noentry, item_func_WATER_BOMB_5, item_func_WATER_BOMB_10, item_func_WATER_BOMB_20, item_func_WATER_BOMB_30, item_func_BOMB_INSECT_5, item_func_BOMB_INSECT_10, item_func_BOMB_INSECT_20, item_func_BOMB_INSECT_30, item_func_RECOVER_FAILY, item_func_TRIPLE_HEART, item_func_SMALL_KEY, item_func_KAKERA_HEART, item_func_UTUWA_HEART, item_func_MAP, item_func_COMPUS, item_func_DUNGEON_EXIT, item_func_BOSS_KEY, item_func_DUNGEON_BACK, item_func_SWORD, item_func_MASTER_SWORD, item_func_WOOD_SHIELD, item_func_SHIELD, item_func_HYLIA_SHIELD, item_func_TKS_LETTER, item_func_WEAR_CASUAL, item_func_WEAR_KOKIRI, item_func_ARMOR, item_func_WEAR_ZORA, item_func_MAGIC_LV1, item_func_DUNGEON_EXIT_2, item_func_WALLET_LV1, item_func_WALLET_LV2, item_func_WALLET_LV3, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_ZORAS_JEWEL, item_func_HAWK_EYE, item_func_WOOD_STICK, item_func_BOOMERANG, item_func_SPINNER, item_func_IRONBALL, item_func_BOW, item_func_HOOKSHOT, item_func_HVY_BOOTS, item_func_COPY_ROD, item_func_W_HOOKSHOT, item_func_KANTERA, item_func_LIGHT_SWORD, item_func_FISHING_ROD_1, item_func_PACHINKO, item_func_COPY_ROD_2, item_func_noentry, item_func_noentry, item_func_BOMB_BAG_LV2, item_func_BOMB_BAG_LV1, item_func_BOMB_IN_BAG, item_func_noentry, item_func_LIGHT_ARROW, item_func_ARROW_LV1, item_func_ARROW_LV2, item_func_ARROW_LV3, item_func_noentry, item_func_LURE_ROD, item_func_BOMB_ARROW, item_func_HAWK_ARROW, item_func_BEE_ROD, item_func_JEWEL_ROD, item_func_WORM_ROD, item_func_JEWEL_BEE_ROD, item_func_JEWEL_WORM_ROD, item_func_EMPTY_BOTTLE, item_func_RED_BOTTLE, item_func_GREEN_BOTTLE, item_func_BLUE_BOTTLE, item_func_MILK_BOTTLE, item_func_HALF_MILK_BOTTLE, item_func_OIL_BOTTLE, item_func_WATER_BOTTLE, item_func_OIL_BOTTLE2, item_func_RED_BOTTLE2, item_func_UGLY_SOUP, item_func_HOT_SPRING, item_func_FAIRY_BOTTLE, item_func_HOT_SPRING2, item_func_OIL2, item_func_OIL, item_func_NORMAL_BOMB, item_func_WATER_BOMB, item_func_POKE_BOMB, item_func_FAIRY_DROP, item_func_WORM, item_func_DROP_BOTTLE, item_func_BEE_CHILD, item_func_CHUCHU_RARE, item_func_CHUCHU_RED, item_func_CHUCHU_BLUE, item_func_CHUCHU_GREEN, item_func_CHUCHU_YELLOW, item_func_CHUCHU_PURPLE, item_func_LV1_SOUP, item_func_LV2_SOUP, item_func_LV3_SOUP, item_func_LETTER, item_func_BILL, item_func_WOOD_STATUE, item_func_IRIAS_PENDANT, item_func_HORSE_FLUTE, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_RAFRELS_MEMO, item_func_ASHS_SCRIBBLING, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_CHUCHU_YELLOW2, item_func_OIL_BOTTLE3, item_func_SHOP_BEE_CHILD, item_func_CHUCHU_BLACK, item_func_LIGHT_DROP, item_func_DROP_CONTAINER, item_func_DROP_CONTAINER02, item_func_DROP_CONTAINER03, item_func_FILLED_CONTAINER, item_func_MIRROR_PIECE_2, item_func_MIRROR_PIECE_3, item_func_MIRROR_PIECE_4, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_SMELL_YELIA_POUCH, item_func_SMELL_PUMPKIN, item_func_SMELL_POH, item_func_SMELL_FISH, item_func_SMELL_CHILDREN, item_func_SMELL_MEDICINE, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_M_BEETLE, item_func_F_BEETLE, item_func_M_BUTTERFLY, item_func_F_BUTTERFLY, item_func_M_STAG_BEETLE, item_func_F_STAG_BEETLE, item_func_M_GRASSHOPPER, item_func_F_GRASSHOPPER, item_func_M_NANAFUSHI, item_func_F_NANAFUSHI, item_func_M_DANGOMUSHI, item_func_F_DANGOMUSHI, item_func_M_MANTIS, item_func_F_MANTIS, item_func_M_LADYBUG, item_func_F_LADYBUG, item_func_M_SNAIL, item_func_F_SNAIL, item_func_M_DRAGONFLY, item_func_F_DRAGONFLY, item_func_M_ANT, item_func_F_ANT, item_func_M_MAYFLY, item_func_F_MAYFLY, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_POU_SPIRIT, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_noentry, item_func_ANCIENT_DOCUMENT, item_func_AIR_LETTER, item_func_ANCIENT_DOCUMENT2, item_func_LV7_DUNGEON_EXIT, item_func_LINKS_SAVINGS, item_func_SMALL_KEY2, item_func_POU_FIRE1, item_func_POU_FIRE2, item_func_POU_FIRE3, item_func_POU_FIRE4, item_func_BOSSRIDER_KEY, item_func_TOMATO_PUREE, item_func_TASTE, item_func_LV5_BOSS_KEY, item_func_SURFBOARD, item_func_KANTERA2, item_func_L2_KEY_PIECES1, item_func_L2_KEY_PIECES2, item_func_L2_KEY_PIECES3, item_func_KEY_OF_CARAVAN, item_func_LV2_BOSS_KEY, item_func_KEY_OF_FILONE, item_func_noentry, }; #if TARGET_PC static void (*item_func_ptr_randomizer[256])() = { /* 0x00 */ item_func_HEART, /* 0x01 */ item_func_GREEN_RUPEE, /* 0x02 */ item_func_BLUE_RUPEE, /* 0x03 */ item_func_YELLOW_RUPEE, /* 0x04 */ item_func_RED_RUPEE, /* 0x05 */ item_func_PURPLE_RUPEE, /* 0x06 */ item_func_ORANGE_RUPEE, /* 0x07 */ item_func_SILVER_RUPEE, /* 0x08 */ item_func_S_MAGIC, /* 0x09 */ item_func_L_MAGIC, /* 0x0A */ item_func_BOMB_5, /* 0x0B */ item_func_BOMB_10, /* 0x0C */ item_func_BOMB_20, /* 0x0D */ item_func_BOMB_30, /* 0x0E */ item_func_ARROW_10, /* 0x0F */ item_func_ARROW_20, /* 0x10 */ item_func_ARROW_30, /* 0x11 */ item_func_ARROW_1, /* 0x12 */ item_func_PACHINKO_SHOT, /* 0x13 */ item_func_FOOLISH_ITEM, /* 0x14 */ item_func_ORDON_PORTAL, /* 0x15 */ item_func_SOUTH_FARON_PORTAL, /* 0x16 */ item_func_WATER_BOMB_5, /* 0x17 */ item_func_WATER_BOMB_10, /* 0x18 */ item_func_WATER_BOMB_20, /* 0x19 */ item_func_WATER_BOMB_30, /* 0x1A */ item_func_BOMB_INSECT_5, /* 0x1B */ item_func_BOMB_INSECT_10, /* 0x1C */ item_func_BOMB_INSECT_20, /* 0x1D */ item_func_BOMB_INSECT_30, /* 0x1E */ item_func_RECOVER_FAILY, /* 0x1F */ item_func_TRIPLE_HEART, /* 0x20 */ item_func_SMALL_KEY, /* 0x21 */ item_func_KAKERA_HEART, /* 0x22 */ item_func_UTUWA_HEART, /* 0x23 */ item_func_MAP, /* 0x24 */ item_func_COMPUS, /* 0x25 */ item_func_DUNGEON_EXIT, /* 0x26 */ item_func_BOSS_KEY, /* 0x27 */ item_func_DUNGEON_BACK, /* 0x28 */ item_func_SWORD, /* 0x29 */ item_func_MASTER_SWORD, /* 0x2A */ item_func_WOOD_SHIELD, /* 0x2B */ item_func_SHIELD, /* 0x2C */ item_func_HYLIA_SHIELD, /* 0x2D */ item_func_TKS_LETTER, /* 0x2E */ item_func_WEAR_CASUAL, /* 0x2F */ item_func_WEAR_KOKIRI, /* 0x30 */ item_func_ARMOR, /* 0x31 */ item_func_WEAR_ZORA, /* 0x32 */ item_func_MAGIC_LV1, /* 0x33 */ item_func_DUNGEON_EXIT_2, /* 0x34 */ item_func_WALLET_LV1, /* 0x35 */ item_func_WALLET_LV2, /* 0x36 */ item_func_WALLET_LV3, /* 0x37 */ item_func_noentry, /* 0x38 */ item_func_noentry, /* 0x39 */ item_func_UPPER_ZORAS_RIVER_PORTAL, /* 0x3A */ item_func_CASTLE_TOWN_PORTAL, /* 0x3B */ item_func_GERUDO_DESERT_PORTAL, /* 0x3C */ item_func_NORTH_FARON_PORTAL, /* 0x3D */ item_func_ZORAS_JEWEL, /* 0x3E */ item_func_HAWK_EYE, /* 0x3F */ item_func_WOOD_STICK, /* 0x40 */ item_func_BOOMERANG, /* 0x41 */ item_func_SPINNER, /* 0x42 */ item_func_IRONBALL, /* 0x43 */ item_func_BOW, /* 0x44 */ item_func_HOOKSHOT, /* 0x45 */ item_func_HVY_BOOTS, /* 0x46 */ item_func_COPY_ROD, /* 0x47 */ item_func_W_HOOKSHOT, /* 0x48 */ item_func_KANTERA, /* 0x49 */ item_func_LIGHT_SWORD, /* 0x4A */ item_func_FISHING_ROD_1, /* 0x4B */ item_func_PACHINKO, /* 0x4C */ item_func_COPY_ROD_2, /* 0x4D */ item_func_KAKARIKO_GORGE_PORTAL, /* 0x4E */ item_func_KAKARIKO_VILLAGE_PORTAL, /* 0x4F */ item_func_BOMB_BAG_LV2, /* 0x50 */ item_func_BOMB_BAG_LV1, /* 0x51 */ item_func_BOMB_IN_BAG, /* 0x52 */ item_func_DEATH_MOUNTAIN_PORTAL, /* 0x53 */ item_func_LIGHT_ARROW, /* 0x54 */ item_func_ARROW_LV1, /* 0x55 */ item_func_ARROW_LV2, /* 0x56 */ item_func_ARROW_LV3, /* 0x57 */ item_func_ZORAS_DOMAIN_PORTAL, /* 0x58 */ item_func_LURE_ROD, /* 0x59 */ item_func_BOMB_ARROW, /* 0x5A */ item_func_HAWK_ARROW, /* 0x5B */ item_func_BEE_ROD, /* 0x5C */ item_func_JEWEL_ROD, /* 0x5D */ item_func_WORM_ROD, /* 0x5E */ item_func_JEWEL_BEE_ROD, /* 0x5F */ item_func_JEWEL_WORM_ROD, /* 0x60 */ item_func_EMPTY_BOTTLE, /* 0x61 */ item_func_RED_BOTTLE, /* 0x62 */ item_func_GREEN_BOTTLE, /* 0x63 */ item_func_BLUE_BOTTLE, /* 0x64 */ item_func_MILK_BOTTLE, /* 0x65 */ item_func_HALF_MILK_BOTTLE, /* 0x66 */ item_func_OIL_BOTTLE, /* 0x67 */ item_func_WATER_BOTTLE, /* 0x68 */ item_func_OIL_BOTTLE2, /* 0x69 */ item_func_RED_BOTTLE2, /* 0x6A */ item_func_UGLY_SOUP, /* 0x6B */ item_func_HOT_SPRING, /* 0x6C */ item_func_FAIRY_BOTTLE, /* 0x6D */ item_func_HOT_SPRING2, /* 0x6E */ item_func_OIL2, /* 0x6F */ item_func_OIL, /* 0x70 */ item_func_NORMAL_BOMB, /* 0x71 */ item_func_WATER_BOMB, /* 0x72 */ item_func_POKE_BOMB, /* 0x73 */ item_func_FAIRY_DROP, /* 0x74 */ item_func_WORM, /* 0x75 */ item_func_DROP_BOTTLE, /* 0x76 */ item_func_BEE_CHILD, /* 0x77 */ item_func_CHUCHU_RARE, /* 0x78 */ item_func_CHUCHU_RED, /* 0x79 */ item_func_CHUCHU_BLUE, /* 0x7A */ item_func_CHUCHU_GREEN, /* 0x7B */ item_func_CHUCHU_YELLOW, /* 0x7C */ item_func_CHUCHU_PURPLE, /* 0x7D */ item_func_LV1_SOUP, /* 0x7E */ item_func_LV2_SOUP, /* 0x7F */ item_func_LV3_SOUP, /* 0x80 */ item_func_LETTER, /* 0x81 */ item_func_BILL, /* 0x82 */ item_func_WOOD_STATUE, /* 0x83 */ item_func_IRIAS_PENDANT, /* 0x84 */ item_func_HORSE_FLUTE, /* 0x85 */ item_func_FOREST_SMALL_KEY, /* 0x86 */ item_func_MINES_SMALL_KEY, /* 0x87 */ item_func_LAKEBED_SMALL_KEY, /* 0x88 */ item_func_ARBITERS_SMALL_KEY, /* 0x89 */ item_func_SNOWPEAK_SMALL_KEY, /* 0x8A */ item_func_TEMPLE_OF_TIME_SMALL_KEY, /* 0x8B */ item_func_CITY_SMALL_KEY, /* 0x8C */ item_func_PALACE_SMALL_KEY, /* 0x8D */ item_func_HYRULE_SMALL_KEY, /* 0x8E */ item_func_CAMP_SMALL_KEY, /* 0x8F */ item_func_LAKE_HYLIA_PORTAL, /* 0x90 */ item_func_RAFRELS_MEMO, /* 0x91 */ item_func_ASHS_SCRIBBLING, /* 0x92 */ item_func_FOREST_BOSS_KEY, /* 0x93 */ item_func_LAKEBED_BOSS_KEY, /* 0x94 */ item_func_ARBITERS_BOSS_KEY, /* 0x95 */ item_func_TEMPLE_OF_TIME_BOSS_KEY, /* 0x96 */ item_func_CITY_BOSS_KEY, /* 0x97 */ item_func_PALACE_BOSS_KEY, /* 0x98 */ item_func_HYRULE_BOSS_KEY, /* 0x99 */ item_func_FOREST_COMPASS, /* 0x9A */ item_func_MINES_COMPASS, /* 0x9B */ item_func_LAKEBED_COMPASS, /* 0x9C */ item_func_CHUCHU_YELLOW2, /* 0x9D */ item_func_OIL_BOTTLE3, /* 0x9E */ item_func_SHOP_BEE_CHILD, /* 0x9F */ item_func_CHUCHU_BLACK, /* 0xA0 */ item_func_LIGHT_DROP, /* 0xA1 */ item_func_DROP_CONTAINER, /* 0xA2 */ item_func_DROP_CONTAINER02, /* 0xA3 */ item_func_DROP_CONTAINER03, /* 0xA4 */ item_func_FILLED_CONTAINER, /* 0xA5 */ item_func_MIRROR_PIECE_2, /* 0xA6 */ item_func_MIRROR_PIECE_3, /* 0xA7 */ item_func_MIRROR_PIECE_4, /* 0xA8 */ item_func_ARBITERS_COMPASS, /* 0xA9 */ item_func_SNOWPEAK_COMPASS, /* 0xAA */ item_func_TEMPLE_OF_TIME_COMPASS, /* 0xAB */ item_func_CITY_COMPASS, /* 0xAC */ item_func_PALACE_COMPASS, /* 0xAD */ item_func_HYRULE_COMPASS, /* 0xAE */ item_func_MIRROR_CHAMBER_PORTAL, /* 0xAF */ item_func_SNOWPEAK_PORTAL, /* 0xB0 */ item_func_SMELL_YELIA_POUCH, /* 0xB1 */ item_func_SMELL_PUMPKIN, /* 0xB2 */ item_func_SMELL_POH, /* 0xB3 */ item_func_SMELL_FISH, /* 0xB4 */ item_func_SMELL_CHILDREN, /* 0xB5 */ item_func_SMELL_MEDICINE, /* 0xB6 */ item_func_FOREST_MAP, /* 0xB7 */ item_func_MINES_MAP, /* 0xB8 */ item_func_LAKEBED_MAP, /* 0xB9 */ item_func_ARBITERS_MAP, /* 0xBA */ item_func_SNOWPEAK_MAP, /* 0xBB */ item_func_TEMPLE_OF_TIME_MAP, /* 0xBC */ item_func_CITY_MAP, /* 0xBD */ item_func_PALACE_MAP, /* 0xBE */ item_func_HYRULE_MAP, /* 0xBF */ item_func_SACRED_GROVE_PORTAL, /* 0xC0 */ item_func_M_BEETLE, /* 0xC1 */ item_func_F_BEETLE, /* 0xC2 */ item_func_M_BUTTERFLY, /* 0xC3 */ item_func_F_BUTTERFLY, /* 0xC4 */ item_func_M_STAG_BEETLE, /* 0xC5 */ item_func_F_STAG_BEETLE, /* 0xC6 */ item_func_M_GRASSHOPPER, /* 0xC7 */ item_func_F_GRASSHOPPER, /* 0xC8 */ item_func_M_NANAFUSHI, /* 0xC9 */ item_func_F_NANAFUSHI, /* 0xCA */ item_func_M_DANGOMUSHI, /* 0xCB */ item_func_F_DANGOMUSHI, /* 0xCC */ item_func_M_MANTIS, /* 0xCD */ item_func_F_MANTIS, /* 0xCE */ item_func_M_LADYBUG, /* 0xCF */ item_func_F_LADYBUG, /* 0xD0 */ item_func_M_SNAIL, /* 0xD1 */ item_func_F_SNAIL, /* 0xD2 */ item_func_M_DRAGONFLY, /* 0xD3 */ item_func_F_DRAGONFLY, /* 0xD4 */ item_func_M_ANT, /* 0xD5 */ item_func_F_ANT, /* 0xD6 */ item_func_M_MAYFLY, /* 0xD7 */ item_func_F_MAYFLY, /* 0xD8 */ item_func_FUSED_SHADOW_1, /* 0xD9 */ item_func_FUSED_SHADOW_2, /* 0xDA */ item_func_FUSED_SHADOW_3, /* 0xDB */ item_func_MIRROR_PIECE_1, /* 0xDC */ item_func_noentry, /* 0xDD */ item_func_noentry, /* 0xDE */ item_func_noentry, /* 0xDF */ item_func_noentry, /* 0xE0 */ item_func_POU_SPIRIT, /* 0xE1 */ item_func_ENDING_BLOW, /* 0xE2 */ item_func_SHIELD_ATTACK, /* 0xE3 */ item_func_BACK_SLICE, /* 0xE4 */ item_func_HELM_SPLITTER, /* 0xE5 */ item_func_MORTAL_DRAW, /* 0xE6 */ item_func_JUMP_STRIKE, /* 0xE7 */ item_func_GREAT_SPIN, /* 0xE8 */ item_func_ELDIN_BRIDGE_PORTAL, /* 0xE9 */ item_func_ANCIENT_DOCUMENT, /* 0xEA */ item_func_AIR_LETTER, /* 0xEB */ item_func_ANCIENT_DOCUMENT2, /* 0xEC */ item_func_LV7_DUNGEON_EXIT, /* 0xED */ item_func_LINKS_SAVINGS, /* 0xEE */ item_func_SMALL_KEY2, /* 0xEF */ item_func_POU_FIRE1, /* 0xF0 */ item_func_POU_FIRE2, /* 0xF1 */ item_func_POU_FIRE3, /* 0xF2 */ item_func_POU_FIRE4, /* 0xF3 */ item_func_BOSSRIDER_KEY, /* 0xF4 */ item_func_TOMATO_PUREE, /* 0xF5 */ item_func_TASTE, /* 0xF6 */ item_func_LV5_BOSS_KEY, /* 0xF7 */ item_func_SURFBOARD, /* 0xF8 */ item_func_KANTERA2, /* 0xF9 */ item_func_L2_KEY_PIECES1, /* 0xFA */ item_func_L2_KEY_PIECES2, /* 0xFB */ item_func_L2_KEY_PIECES3, /* 0xFC */ item_func_KEY_OF_CARAVAN, /* 0xFD */ item_func_LV2_BOSS_KEY, /* 0xFE */ item_func_KEY_OF_FILONE, /* 0xFF */ item_func_noentry, }; #endif inline void getItemFunc(u8 i_itemNo) { dComIfGs_onItemFirstBit(i_itemNo); #if TARGET_PC (randomizer_IsActive() ? item_func_ptr_randomizer : item_func_ptr)[i_itemNo](); #else item_func_ptr[i_itemNo](); #endif } void execItemGet(u8 i_itemNo) { #if TARGET_PC if (randomizer_IsActive()) i_itemNo = verifyProgressiveItem(i_itemNo); #endif getItemFunc(i_itemNo); } static int (*item_getcheck_func_ptr[256])() = { item_getcheck_func_HEART, item_getcheck_func_GREEN_RUPEE, item_getcheck_func_BLUE_RUPEE, item_getcheck_func_YELLOW_RUPEE, item_getcheck_func_RED_RUPEE, item_getcheck_func_PURPLE_RUPEE, item_getcheck_func_ORANGE_RUPEE, item_getcheck_func_SILVER_RUPEE, item_getcheck_func_S_MAGIC, item_getcheck_func_L_MAGIC, item_getcheck_func_BOMB_5, item_getcheck_func_BOMB_10, item_getcheck_func_BOMB_20, item_getcheck_func_BOMB_30, item_getcheck_func_ARROW_10, item_getcheck_func_ARROW_20, item_getcheck_func_ARROW_30, item_getcheck_func_ARROW_1, item_getcheck_func_PACHINKO_SHOT, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_WATER_BOMB_5, item_getcheck_func_WATER_BOMB_10, item_getcheck_func_WATER_BOMB_20, item_getcheck_func_WATER_BOMB_30, item_getcheck_func_BOMB_INSECT_5, item_getcheck_func_BOMB_INSECT_10, item_getcheck_func_BOMB_INSECT_20, item_getcheck_func_BOMB_INSECT_30, item_getcheck_func_RECOVER_FAILY, item_getcheck_func_TRIPLE_HEART, item_getcheck_func_SMALL_KEY, item_getcheck_func_KAKERA_HEART, item_getcheck_func_UTUWA_HEART, item_getcheck_func_MAP, item_getcheck_func_COMPUS, item_getcheck_func_DUNGEON_EXIT, item_getcheck_func_BOSS_KEY, item_getcheck_func_DUNGEON_BACK, item_getcheck_func_SWORD, item_getcheck_func_MASTER_SWORD, item_getcheck_func_WOOD_SHIELD, item_getcheck_func_SHIELD, item_getcheck_func_HYLIA_SHIELD, item_getcheck_func_TKS_LETTER, item_getcheck_func_WEAR_CASUAL, item_getcheck_func_WEAR_KOKIRI, item_getcheck_func_ARMOR, item_getcheck_func_WEAR_ZORA, item_getcheck_func_MAGIC_LV1, item_getcheck_func_DUNGEON_EXIT_2, item_getcheck_func_WALLET_LV1, item_getcheck_func_WALLET_LV2, item_getcheck_func_WALLET_LV3, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_ZORAS_JEWEL, item_getcheck_func_HAWK_EYE, item_getcheck_func_WOOD_STICK, item_getcheck_func_BOOMERANG, item_getcheck_func_SPINNER, item_getcheck_func_IRONBALL, item_getcheck_func_BOW, item_getcheck_func_HOOKSHOT, item_getcheck_func_HVY_BOOTS, item_getcheck_func_COPY_ROD, item_getcheck_func_W_HOOKSHOT, item_getcheck_func_KANTERA, item_getcheck_func_LIGHT_SWORD, item_getcheck_func_FISHING_ROD_1, item_getcheck_func_PACHINKO, item_getcheck_func_COPY_ROD_2, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_BOMB_BAG_LV2, item_getcheck_func_BOMB_BAG_LV1, item_getcheck_func_BOMB_IN_BAG, item_getcheck_func_noentry, item_getcheck_func_LIGHT_ARROW, item_getcheck_func_ARROW_LV1, item_getcheck_func_ARROW_LV2, item_getcheck_func_ARROW_LV3, item_getcheck_func_noentry, item_getcheck_func_LURE_ROD, item_getcheck_func_BOMB_ARROW, item_getcheck_func_HAWK_ARROW, item_getcheck_func_BEE_ROD, item_getcheck_func_JEWEL_ROD, item_getcheck_func_WORM_ROD, item_getcheck_func_JEWEL_BEE_ROD, item_getcheck_func_JEWEL_WORM_ROD, item_getcheck_func_EMPTY_BOTTLE, item_getcheck_func_RED_BOTTLE, item_getcheck_func_GREEN_BOTTLE, item_getcheck_func_BLUE_BOTTLE, item_getcheck_func_MILK_BOTTLE, item_getcheck_func_HALF_MILK_BOTTLE, item_getcheck_func_OIL_BOTTLE, item_getcheck_func_WATER_BOTTLE, item_getcheck_func_OIL_BOTTLE2, item_getcheck_func_RED_BOTTLE2, item_getcheck_func_UGLY_SOUP, item_getcheck_func_HOT_SPRING, item_getcheck_func_FAIRY_BOTTLE, item_getcheck_func_HOT_SPRING2, item_getcheck_func_OIL2, item_getcheck_func_OIL, item_getcheck_func_NORMAL_BOMB, item_getcheck_func_WATER_BOMB, item_getcheck_func_POKE_BOMB, item_getcheck_func_FAIRY_DROP, item_getcheck_func_WORM, item_getcheck_func_DROP_BOTTLE, item_getcheck_func_BEE_CHILD, item_getcheck_func_CHUCHU_RARE, item_getcheck_func_CHUCHU_RED, item_getcheck_func_CHUCHU_BLUE, item_getcheck_func_CHUCHU_GREEN, item_getcheck_func_CHUCHU_YELLOW, item_getcheck_func_CHUCHU_PURPLE, item_getcheck_func_LV1_SOUP, item_getcheck_func_LV2_SOUP, item_getcheck_func_LV3_SOUP, item_getcheck_func_LETTER, item_getcheck_func_BILL, item_getcheck_func_WOOD_STATUE, item_getcheck_func_IRIAS_PENDANT, item_getcheck_func_HORSE_FLUTE, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_RAFRELS_MEMO, item_getcheck_func_ASHS_SCRIBBLING, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_CHUCHU_YELLOW2, item_getcheck_func_OIL_BOTTLE3, item_getcheck_func_SHOP_BEE_CHILD, item_getcheck_func_CHUCHU_BLACK, item_getcheck_func_LIGHT_DROP, item_getcheck_func_DROP_CONTAINER, item_getcheck_func_DROP_CONTAINER02, item_getcheck_func_DROP_CONTAINER03, item_getcheck_func_FILLED_CONTAINER, item_getcheck_func_MIRROR_PIECE_2, item_getcheck_func_MIRROR_PIECE_3, item_getcheck_func_MIRROR_PIECE_4, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_SMELL_YELIA_POUCH, item_getcheck_func_SMELL_PUMPKIN, item_getcheck_func_SMELL_POH, item_getcheck_func_SMELL_FISH, item_getcheck_func_SMELL_CHILDREN, item_getcheck_func_SMELL_MEDICINE, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_M_BEETLE, item_getcheck_func_F_BEETLE, item_getcheck_func_M_BUTTERFLY, item_getcheck_func_F_BUTTERFLY, item_getcheck_func_M_STAG_BEETLE, item_getcheck_func_F_STAG_BEETLE, item_getcheck_func_M_GRASSHOPPER, item_getcheck_func_F_GRASSHOPPER, item_getcheck_func_M_NANAFUSHI, item_getcheck_func_F_NANAFUSHI, item_getcheck_func_M_DANGOMUSHI, item_getcheck_func_F_DANGOMUSHI, item_getcheck_func_M_MANTIS, item_getcheck_func_F_MANTIS, item_getcheck_func_M_LADYBUG, item_getcheck_func_F_LADYBUG, item_getcheck_func_M_SNAIL, item_getcheck_func_F_SNAIL, item_getcheck_func_M_DRAGONFLY, item_getcheck_func_F_DRAGONFLY, item_getcheck_func_M_ANT, item_getcheck_func_F_ANT, item_getcheck_func_M_MAYFLY, item_getcheck_func_F_MAYFLY, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_POU_SPIRIT, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_ANCIENT_DOCUMENT, item_getcheck_func_AIR_LETTER, item_getcheck_func_ANCIENT_DOCUMENT2, item_getcheck_func_LV7_DUNGEON_EXIT, item_getcheck_func_LINKS_SAVINGS, item_getcheck_func_SMALL_KEY2, item_getcheck_func_POU_FIRE1, item_getcheck_func_POU_FIRE2, item_getcheck_func_POU_FIRE3, item_getcheck_func_POU_FIRE4, item_getcheck_func_BOSSRIDER_KEY, item_getcheck_func_TOMATO_PUREE, item_getcheck_func_TASTE, item_getcheck_func_LV5_BOSS_KEY, item_getcheck_func_SURFBOARD, item_getcheck_func_KANTERA2, item_getcheck_func_L2_KEY_PIECES1, item_getcheck_func_L2_KEY_PIECES2, item_getcheck_func_L2_KEY_PIECES3, item_getcheck_func_KEY_OF_CARAVAN, item_getcheck_func_LV2_BOSS_KEY, item_getcheck_func_KEY_OF_FILONE, item_getcheck_func_noentry, }; #if TARGET_PC static int (*item_getcheck_func_ptr_randomizer[256])() = { item_getcheck_func_HEART, item_getcheck_func_GREEN_RUPEE, item_getcheck_func_BLUE_RUPEE, item_getcheck_func_YELLOW_RUPEE, item_getcheck_func_RED_RUPEE, item_getcheck_func_PURPLE_RUPEE, item_getcheck_func_ORANGE_RUPEE, item_getcheck_func_SILVER_RUPEE, item_getcheck_func_S_MAGIC, item_getcheck_func_L_MAGIC, item_getcheck_func_BOMB_5, item_getcheck_func_BOMB_10, item_getcheck_func_BOMB_20, item_getcheck_func_BOMB_30, item_getcheck_func_ARROW_10, item_getcheck_func_ARROW_20, item_getcheck_func_ARROW_30, item_getcheck_func_ARROW_1, item_getcheck_func_PACHINKO_SHOT, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_WATER_BOMB_5, item_getcheck_func_WATER_BOMB_10, item_getcheck_func_WATER_BOMB_20, item_getcheck_func_WATER_BOMB_30, item_getcheck_func_BOMB_INSECT_5, item_getcheck_func_BOMB_INSECT_10, item_getcheck_func_BOMB_INSECT_20, item_getcheck_func_BOMB_INSECT_30, item_getcheck_func_RECOVER_FAILY, item_getcheck_func_TRIPLE_HEART, item_getcheck_func_SMALL_KEY, item_getcheck_func_KAKERA_HEART, item_getcheck_func_UTUWA_HEART, item_getcheck_func_MAP, item_getcheck_func_COMPUS, item_getcheck_func_DUNGEON_EXIT, item_getcheck_func_BOSS_KEY, item_getcheck_func_DUNGEON_BACK, item_getcheck_func_SWORD, item_getcheck_func_MASTER_SWORD, item_getcheck_func_WOOD_SHIELD, item_getcheck_func_SHIELD, item_getcheck_func_HYLIA_SHIELD, item_getcheck_func_TKS_LETTER, item_getcheck_func_WEAR_CASUAL, item_getcheck_func_WEAR_KOKIRI, item_getcheck_func_ARMOR, item_getcheck_func_WEAR_ZORA, item_getcheck_func_MAGIC_LV1, item_getcheck_func_DUNGEON_EXIT_2, item_getcheck_func_WALLET_LV1, item_getcheck_func_WALLET_LV2, item_getcheck_func_WALLET_LV3, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_ZORAS_JEWEL, item_getcheck_func_HAWK_EYE, item_getcheck_func_WOOD_STICK, item_getcheck_func_BOOMERANG, item_getcheck_func_SPINNER, item_getcheck_func_IRONBALL, item_getcheck_func_BOW, item_getcheck_func_HOOKSHOT, item_getcheck_func_HVY_BOOTS, item_getcheck_func_COPY_ROD, item_getcheck_func_W_HOOKSHOT, item_getcheck_func_KANTERA, item_getcheck_func_LIGHT_SWORD, item_getcheck_func_FISHING_ROD_1, item_getcheck_func_PACHINKO, item_getcheck_func_COPY_ROD_2, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_BOMB_BAG_LV2, item_getcheck_func_BOMB_BAG_LV1, item_getcheck_func_BOMB_IN_BAG, item_getcheck_func_noentry, item_getcheck_func_LIGHT_ARROW, item_getcheck_func_ARROW_LV1, item_getcheck_func_ARROW_LV2, item_getcheck_func_ARROW_LV3, item_getcheck_func_noentry, item_getcheck_func_LURE_ROD, item_getcheck_func_BOMB_ARROW, item_getcheck_func_HAWK_ARROW, item_getcheck_func_BEE_ROD, item_getcheck_func_JEWEL_ROD, item_getcheck_func_WORM_ROD, item_getcheck_func_JEWEL_BEE_ROD, item_getcheck_func_JEWEL_WORM_ROD, item_getcheck_func_EMPTY_BOTTLE, item_getcheck_func_RED_BOTTLE, item_getcheck_func_GREEN_BOTTLE, item_getcheck_func_BLUE_BOTTLE, item_getcheck_func_MILK_BOTTLE, item_getcheck_func_HALF_MILK_BOTTLE, item_getcheck_func_OIL_BOTTLE, item_getcheck_func_WATER_BOTTLE, item_getcheck_func_OIL_BOTTLE2, item_getcheck_func_RED_BOTTLE2, item_getcheck_func_UGLY_SOUP, item_getcheck_func_HOT_SPRING, item_getcheck_func_FAIRY_BOTTLE, item_getcheck_func_HOT_SPRING2, item_getcheck_func_OIL2, item_getcheck_func_OIL, item_getcheck_func_NORMAL_BOMB, item_getcheck_func_WATER_BOMB, item_getcheck_func_POKE_BOMB, item_getcheck_func_FAIRY_DROP, item_getcheck_func_WORM, item_getcheck_func_DROP_BOTTLE, item_getcheck_func_BEE_CHILD, item_getcheck_func_CHUCHU_RARE, item_getcheck_func_CHUCHU_RED, item_getcheck_func_CHUCHU_BLUE, item_getcheck_func_CHUCHU_GREEN, item_getcheck_func_CHUCHU_YELLOW, item_getcheck_func_CHUCHU_PURPLE, item_getcheck_func_LV1_SOUP, item_getcheck_func_LV2_SOUP, item_getcheck_func_LV3_SOUP, item_getcheck_func_LETTER, item_getcheck_func_BILL, item_getcheck_func_WOOD_STATUE, item_getcheck_func_IRIAS_PENDANT, item_getcheck_func_HORSE_FLUTE, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_RAFRELS_MEMO, item_getcheck_func_ASHS_SCRIBBLING, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_CHUCHU_YELLOW2, item_getcheck_func_OIL_BOTTLE3, item_getcheck_func_SHOP_BEE_CHILD, item_getcheck_func_CHUCHU_BLACK, item_getcheck_func_LIGHT_DROP, item_getcheck_func_DROP_CONTAINER, item_getcheck_func_DROP_CONTAINER02, item_getcheck_func_DROP_CONTAINER03, item_getcheck_func_FILLED_CONTAINER, item_getcheck_func_MIRROR_PIECE_2, item_getcheck_func_MIRROR_PIECE_3, item_getcheck_func_MIRROR_PIECE_4, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_SMELL_YELIA_POUCH, item_getcheck_func_SMELL_PUMPKIN, item_getcheck_func_SMELL_POH, item_getcheck_func_SMELL_FISH, item_getcheck_func_SMELL_CHILDREN, item_getcheck_func_SMELL_MEDICINE, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_M_BEETLE, item_getcheck_func_F_BEETLE, item_getcheck_func_M_BUTTERFLY, item_getcheck_func_F_BUTTERFLY, item_getcheck_func_M_STAG_BEETLE, item_getcheck_func_F_STAG_BEETLE, item_getcheck_func_M_GRASSHOPPER, item_getcheck_func_F_GRASSHOPPER, item_getcheck_func_M_NANAFUSHI, item_getcheck_func_F_NANAFUSHI, item_getcheck_func_M_DANGOMUSHI, item_getcheck_func_F_DANGOMUSHI, item_getcheck_func_M_MANTIS, item_getcheck_func_F_MANTIS, item_getcheck_func_M_LADYBUG, item_getcheck_func_F_LADYBUG, item_getcheck_func_M_SNAIL, item_getcheck_func_F_SNAIL, item_getcheck_func_M_DRAGONFLY, item_getcheck_func_F_DRAGONFLY, item_getcheck_func_M_ANT, item_getcheck_func_F_ANT, item_getcheck_func_M_MAYFLY, item_getcheck_func_F_MAYFLY, item_getcheck_func_FUSED_SHADOW_1, item_getcheck_func_FUSED_SHADOW_2, item_getcheck_func_FUSED_SHADOW_3, item_getcheck_func_MIRROR_PIECE_1, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_POU_SPIRIT, item_getcheck_func_ENDING_BLOW, item_getcheck_func_SHIELD_ATTACK, item_getcheck_func_BACK_SLICE, item_getcheck_func_HELM_SPLITTER, item_getcheck_func_MORTAL_DRAW, item_getcheck_func_JUMP_STRIKE, item_getcheck_func_GREAT_SPIN, item_getcheck_func_noentry, item_getcheck_func_ANCIENT_DOCUMENT, item_getcheck_func_AIR_LETTER, item_getcheck_func_ANCIENT_DOCUMENT2, item_getcheck_func_LV7_DUNGEON_EXIT, item_getcheck_func_LINKS_SAVINGS, item_getcheck_func_SMALL_KEY2, item_getcheck_func_POU_FIRE1, item_getcheck_func_POU_FIRE2, item_getcheck_func_POU_FIRE3, item_getcheck_func_POU_FIRE4, item_getcheck_func_BOSSRIDER_KEY, item_getcheck_func_TOMATO_PUREE, item_getcheck_func_TASTE, item_getcheck_func_LV5_BOSS_KEY, item_getcheck_func_SURFBOARD, item_getcheck_func_KANTERA2, item_getcheck_func_L2_KEY_PIECES1, item_getcheck_func_L2_KEY_PIECES2, item_getcheck_func_L2_KEY_PIECES3, item_getcheck_func_KEY_OF_CARAVAN, item_getcheck_func_LV2_BOSS_KEY, item_getcheck_func_KEY_OF_FILONE, item_getcheck_func_noentry, }; #endif inline int getCheckItemFunc(u8 i_itemNo) { #if TARGET_PC return (randomizer_IsActive() ? item_getcheck_func_ptr_randomizer : item_getcheck_func_ptr)[i_itemNo](); #else return item_getcheck_func_ptr[i_itemNo](); #endif } int checkItemGet(u8 i_itemNo, int i_default) { #if TARGET_PC // Check special randomizer cases if (randomizer_IsActive()) { switch (i_itemNo) { case dItemNo_Randomizer_HYLIA_SHIELD_e: // Check if we are at Kakariko Malo mart and verify that we have not bought the shield. if (playerIsInRoomStage(3, allStages[Kakariko_Village_Interiors]) && !dComIfGs_isEventBit(BOUGHT_HYLIAN_SHIELD_AT_MALO_MART)) { // Return false so we can buy the shield. return 0; } break; case dItemNo_Randomizer_HAWK_EYE_e: // Check if we are at Kakariko Village and that the hawkeye is currently not for sale. if (getStageID() == Kakariko_Village && !dComIfGs_isSwitch(0x3E, 0)) { // Return false so we can buy the hawkeye. return 0; } break; case dItemNo_Randomizer_SHIELD_e: case dItemNo_Randomizer_WOOD_SHIELD_e: // Check if we are at Kakariko Malo mart and that the Wooden Shield has not been bought. if (playerIsInRoomStage(3, allStages[Kakariko_Village_Interiors]) && !dComIfGs_isSwitch(0x5, 3)) { // Return false so we can buy the shield. return 0; } break; case dItemNo_Randomizer_TOMATO_PUREE_e: case dItemNo_Randomizer_TASTE_e: // Check to see if currently in Snowpeak Ruins if (getStageID() == Snowpeak_Ruins) { // Return false so that yeta will give the map item no matter what. return 0; } break; case dItemNo_Randomizer_IRONBALL_e: // Check to see if currently in Snowpeak Ruins Darkhammer room if (getStageID() == Darkhammer) { return dComIfGs_isSwitch(0x5F, 51); // Picked up the Ball and Chain check. } } } #endif int result = getCheckItemFunc(i_itemNo); if (result == -1) { result = i_default; } return result; } void item_func_HEART() { dComIfGp_setItemLifeCount(4.0f, 0); } void item_func_GREEN_RUPEE() { dComIfGp_setItemRupeeCount(1); } void item_func_BLUE_RUPEE() { dComIfGp_setItemRupeeCount(5); } void item_func_YELLOW_RUPEE() { dComIfGp_setItemRupeeCount(10); } void item_func_RED_RUPEE() { dComIfGp_setItemRupeeCount(20); } void item_func_PURPLE_RUPEE() { dComIfGp_setItemRupeeCount(50); } void item_func_ORANGE_RUPEE() { dComIfGp_setItemRupeeCount(100); } void item_func_SILVER_RUPEE() { dComIfGp_setItemRupeeCount(200); } void item_func_S_MAGIC() { dComIfGp_setItemMagicCount(4); } void item_func_L_MAGIC() { dComIfGp_setItemMagicCount(8); } void item_func_BOMB_5() { addBombCount(dItemNo_NORMAL_BOMB_e, 5); } void item_func_BOMB_10() { addBombCount(dItemNo_NORMAL_BOMB_e, 10); } void item_func_BOMB_20() { addBombCount(dItemNo_NORMAL_BOMB_e, 20); } void item_func_BOMB_30() { addBombCount(dItemNo_NORMAL_BOMB_e, 30); } void item_func_ARROW_10() { dComIfGp_setItemArrowNumCount(10); } void item_func_ARROW_20() { dComIfGp_setItemArrowNumCount(20); } void item_func_ARROW_30() { dComIfGp_setItemArrowNumCount(30); } void item_func_ARROW_1() { dComIfGp_setItemArrowNumCount(1); } void item_func_PACHINKO_SHOT() { dComIfGp_setItemPachinkoNumCount(50); } #if TARGET_PC void item_func_FOOLISH_ITEM() { // Failsafe: Make sure the count does not somehow exceed 100 if (g_randomizerState.foolishItemCount < 100) { g_randomizerState.foolishItemCount += 1; } } void item_func_ORDON_PORTAL() { dComIfGs_onStageSwitch(0x0, 0x34); // Unlock Ordon Portal } void item_func_SOUTH_FARON_PORTAL() { dComIfGs_onStageSwitch(0x2, 0x47); // Unlock S Faron Portal } #endif void item_func_WATER_BOMB_5() { addBombCount(dItemNo_WATER_BOMB_e, 5); } void item_func_WATER_BOMB_10() { addBombCount(dItemNo_WATER_BOMB_e, 10); } void item_func_WATER_BOMB_20() { addBombCount(dItemNo_WATER_BOMB_e, 15); } void item_func_WATER_BOMB_30() { addBombCount(dItemNo_WATER_BOMB_e, 3); } void item_func_BOMB_INSECT_5() { addBombCount(dItemNo_POKE_BOMB_e, 5); } void item_func_BOMB_INSECT_10() { addBombCount(dItemNo_POKE_BOMB_e, 10); } void item_func_BOMB_INSECT_20() { addBombCount(dItemNo_POKE_BOMB_e, 3); } void item_func_BOMB_INSECT_30() {} void item_func_RECOVER_FAILY() { dComIfGp_setItemLifeCount(32.0f, 0); } void item_func_TRIPLE_HEART() {} void item_func_SMALL_KEY() { dComIfGp_setItemKeyNumCount(1); } void item_func_KAKERA_HEART() { dComIfGp_setItemMaxLifeCount(1); #if TARGET_PC if (randomizer_IsActive()) { // TODO rando /* Pasting rando code until the framework has been updated uint8_t maxLife = libtp::tp::d_com_inf_game::dComIfG_gameInfo.save.save_file.player.player_status_a.maxHealth + 1; // Check if we have enough hearts to break the barrier. randoPtr->checkSetHCBarrierFlag(rando::HC_Hearts, maxLife); // Check if we have enough hearts to unlock the BK check. randoPtr->checkSetHCBkFlag(rando::HC_BK_Hearts, maxLife); */ } #endif } void item_func_UTUWA_HEART() { dComIfGp_setItemMaxLifeCount(5); f32 max_life = dComIfGs_getMaxLifeGauge(); dComIfGp_setItemLifeCount(max_life, 0); stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); int tmp = dStage_stagInfo_GetSaveTbl(stag_info); dComIfGs_onStageLife(); #if TARGET_PC if (randomizer_IsActive()) { // TODO rando /* Pasting rando code until the framework has been updated uint8_t maxLife = libtp::tp::d_com_inf_game::dComIfG_gameInfo.save.save_file.player.player_status_a.maxHealth + 1; // Check if we have enough hearts to break the barrier. randoPtr->checkSetHCBarrierFlag(rando::HC_Hearts, maxLife); // Check if we have enough hearts to unlock the BK check. randoPtr->checkSetHCBkFlag(rando::HC_BK_Hearts, maxLife); */ } #endif } void item_func_MAP() { dComIfGs_onDungeonItemMap(); } void item_func_COMPUS() { dComIfGs_onDungeonItemCompass(); } void item_func_DUNGEON_EXIT() { dComIfGs_onDungeonItemWarp(); dComIfGs_setItem(SLOT_18, dItemNo_DUNGEON_EXIT_e); } void item_func_BOSS_KEY() { dComIfGs_onDungeonItemBossKey(); } void item_func_DUNGEON_BACK() { dComIfGs_setItem(SLOT_18, dItemNo_DUNGEON_BACK_e); } void item_func_SWORD() { dComIfGs_setCollectSword(COLLECT_ORDON_SWORD); dComIfGs_setSelectEquipSword(dItemNo_SWORD_e); } void item_func_MASTER_SWORD() { dComIfGs_setCollectSword(COLLECT_MASTER_SWORD); dComIfGs_setSelectEquipSword(dItemNo_MASTER_SWORD_e); } void item_func_WOOD_SHIELD() { dComIfGs_setCollectShield(COLLECT_WOODEN_SHIELD); dComIfGs_setSelectEquipShield(dItemNo_WOOD_SHIELD_e); } void item_func_SHIELD() {} void item_func_HYLIA_SHIELD() {} void item_func_TKS_LETTER() { dComIfGs_setItem(SLOT_18, dItemNo_TKS_LETTER_e); } void item_func_WEAR_CASUAL() { dComIfGs_setSelectEquipClothes(dItemNo_WEAR_CASUAL_e); } void item_func_WEAR_KOKIRI() { dComIfGs_setCollectClothes(KOKIRI_CLOTHES_FLAG); dComIfGs_setSelectEquipClothes(dItemNo_WEAR_KOKIRI_e); } void item_func_ARMOR() {} void item_func_WEAR_ZORA() {} void item_func_MAGIC_LV1() { #if TARGET_PC if (randomizer_IsActive()) { dComIfGs_onEventBit(0xD04); // Can transform at will dComIfGs_onEventBit(0x501); // Midna Charge Unlocked return; } #endif dComIfGp_setItemMagicCount(16); dComIfGp_setItemMaxMagicCount(16); } void item_func_DUNGEON_EXIT_2() { dComIfGs_setItem(SLOT_18, dItemNo_DUNGEON_EXIT_e); } void item_func_WALLET_LV1() { dComIfGs_setWalletSize(WALLET); } void item_func_WALLET_LV2() { dComIfGs_setWalletSize(BIG_WALLET); #if TARGET_PC if (randomizer_IsActive()) { // TODO rando // Putting rando code here until the framework gets built: /* Basically we fill the wallet if desired and then we change the color of the rupee icon to red libtp::tp::J2DWindow::J2DWindow* windowPtr = libtp::tp::d_meter2_info::g_meter2_info.mMeterClass->mpMeterDraw->mpBigHeart->mWindow; if (seedPtr->walletsAreAutoFilled()) { plrStatusAPtr->currentRupees = mod::user_patch::walletValues[seedPtr->getHeaderPtr()->getWalletSize()][1]; } if (!windowPtr) { return; } for (uint32_t rupee = 0x1038; rupee <= 0x1044; rupee += 0x4) { *reinterpret_cast(reinterpret_cast(windowPtr) + rupee) = 0xff0000ff; } */ } #endif } void item_func_WALLET_LV3() { dComIfGs_setWalletSize(GIANT_WALLET); #if TARGET_PC // TODO rando if (randomizer_IsActive()) { // Putting rando code here until the framework gets built: /* Basically we fill the wallet if desired and then we change the color of the rupee icon to red libtp::tp::J2DWindow::J2DWindow* windowPtr = libtp::tp::d_meter2_info::g_meter2_info.mMeterClass->mpMeterDraw->mpBigHeart->mWindow; if (seedPtr->walletsAreAutoFilled()) { plrStatusAPtr->currentRupees = mod::user_patch::walletValues[seedPtr->getHeaderPtr()->getWalletSize()][2]; } if (!windowPtr) { return; } for (uint32_t rupee = 0x1038; rupee <= 0x1044; rupee += 0x4) { *reinterpret_cast(reinterpret_cast(windowPtr) + rupee) = 0xff00ffff; } */ } #endif } #if TARGET_PC void item_func_UPPER_ZORAS_RIVER_PORTAL() { dComIfGs_onStageSwitch(0x4, 0x17); // Talked to Iza before portal dComIfGs_onStageSwitch(0x4, 0x37); // Talked to Iza after portal dComIfGs_onStageSwitch(0x4, 0x15); // Unlock UZR Portal dComIfGs_onEventBit(0xB80); // Declined to help Iza dComIfGs_onEventBit(0x1304); // Talked to Iza before UZR portal dComIfGs_onEventBit(0xB02); // Iza 1 Minigame Unlocked } void item_func_CASTLE_TOWN_PORTAL() { dComIfGs_onStageSwitch(0x6, 0x3); // Unlock Castle Town Portal } void item_func_GERUDO_DESERT_PORTAL() { dComIfGs_onStageSwitch(0xA, 0x15); // Unlock Desrt Portal } void item_func_NORTH_FARON_PORTAL() { dComIfGs_onStageSwitch(0x2, 0x2); // Unlock N Faron Portal } #endif void item_func_ZORAS_JEWEL() { if (item_getcheck_func_FISHING_ROD_1()) { dComIfGs_setRodTypeLevelUp(); } else { dComIfGs_setItem(SLOT_20, dItemNo_ZORAS_JEWEL_e); } } void item_func_HAWK_EYE() { dComIfGs_setItem(SLOT_5, dItemNo_HAWK_EYE_e); } void item_func_WOOD_STICK() { dComIfGs_setCollectSword(COLLECT_WOODEN_SWORD); dComIfGs_setSelectEquipSword(dItemNo_WOOD_STICK_e); #if TARGET_PC if (!randomizer_IsActive()) #endif dComIfGs_onSwitch(28, dComIfGp_roomControl_getStayNo()); } void item_func_BOOMERANG() { dComIfGs_setItem(SLOT_0, dItemNo_BOOMERANG_e); } void item_func_SPINNER() { dComIfGs_setItem(SLOT_2, dItemNo_SPINNER_e); } void item_func_IRONBALL() { dComIfGs_setItem(SLOT_6, dItemNo_IRONBALL_e); } void item_func_BOW() { dComIfGs_setItem(SLOT_4, dItemNo_BOW_e); dComIfGs_setArrowNum(30); dComIfGs_setArrowMax(30); } void item_func_HOOKSHOT() { dComIfGs_setItem(SLOT_9, dItemNo_HOOKSHOT_e); } void item_func_HVY_BOOTS() { dComIfGs_setItem(SLOT_3, dItemNo_HVY_BOOTS_e); } void item_func_COPY_ROD() { dComIfGs_setItem(SLOT_8, dItemNo_COPY_ROD_e); } void item_func_W_HOOKSHOT() { dComIfGs_setItem(SLOT_9, dItemNo_NONE_e); dComIfGs_setItem(SLOT_10, dItemNo_W_HOOKSHOT_e); } void item_func_KANTERA() { dComIfGs_setMaxOil(21600); dComIfGs_setOil(21600); dComIfGs_setItem(SLOT_1, dItemNo_KANTERA_e); } void item_func_LIGHT_SWORD() { dComIfGs_setCollectSword(COLLECT_LIGHT_SWORD); dMeter2Info_setSword(dItemNo_LIGHT_SWORD_e, false); } void item_func_FISHING_ROD_1() { dComIfGs_setItem(SLOT_20, dItemNo_FISHING_ROD_1_e); } void item_func_PACHINKO() { u8 pachinko_max = dComIfGs_getPachinkoMax(); dComIfGp_setItemPachinkoNumCount(pachinko_max); dComIfGs_setItem(SLOT_23, dItemNo_PACHINKO_e); } void item_func_COPY_ROD_2() { #if TARGET_PC if (randomizer_IsActive()) dComIfGs_onEventBit(0x2580); // Power up dominion rod else #endif dComIfGs_setItem(SLOT_8, dItemNo_COPY_ROD_e); } #if TARGET_PC void item_func_KAKARIKO_GORGE_PORTAL() { dComIfGs_onStageSwitch(0x6, 0x15); // Unlock Gorge Portal } void item_func_KAKARIKO_VILLAGE_PORTAL() { dComIfGs_onStageSwitch(0x3, 0x1F); // Unlock Kak Portal } #endif void item_func_BOMB_BAG_LV2() {} void item_func_BOMB_BAG_LV1() { dComIfGs_setEmptyBombBag(dItemNo_NORMAL_BOMB_e, 30); } void item_func_BOMB_IN_BAG() { dComIfGs_setEmptyBombBag(dItemNo_NORMAL_BOMB_e, 30); } #if TARGET_PC void item_func_DEATH_MOUNTAIN_PORTAL() { dComIfGs_onStageSwitch(0x3, 0x15); // Unlock DM Portal } #endif void item_func_LIGHT_ARROW() { dComIfGs_setItem(SLOT_4, dItemNo_LIGHT_ARROW_e); } void item_func_ARROW_LV1() { dComIfGs_setArrowNum(60); dComIfGs_setArrowMax(60); } void item_func_ARROW_LV2() { dComIfGs_setArrowNum(60); dComIfGs_setArrowMax(60); } void item_func_ARROW_LV3() { dComIfGs_setArrowNum(100); dComIfGs_setArrowMax(100); } #if TARGET_PC void item_func_ZORAS_DOMAIN_PORTAL() { dComIfGs_onStageSwitch(0x4, 0x2); // Unlock ZD Portal } #endif void item_func_LURE_ROD() {} void item_func_BOMB_ARROW() {} void item_func_HAWK_ARROW() {} void item_func_BEE_ROD() {} void item_func_JEWEL_ROD() {} void item_func_WORM_ROD() {} void item_func_JEWEL_BEE_ROD() {} void item_func_JEWEL_WORM_ROD() {} void item_func_EMPTY_BOTTLE() { dComIfGs_setEmptyBottle(); } void item_func_RED_BOTTLE() { dComIfGs_setEmptyBottleItemIn(dItemNo_RED_BOTTLE_e); } void item_func_GREEN_BOTTLE() { dComIfGs_setEmptyBottleItemIn(dItemNo_GREEN_BOTTLE_e); } void item_func_BLUE_BOTTLE() { dComIfGs_setEmptyBottleItemIn(dItemNo_BLUE_BOTTLE_e); } void item_func_MILK_BOTTLE() { dComIfGs_setEmptyBottleItemIn(dItemNo_MILK_BOTTLE_e); } void item_func_HALF_MILK_BOTTLE() { dComIfGs_setEmptyBottle(dItemNo_HALF_MILK_BOTTLE_e); } void item_func_OIL_BOTTLE() { dComIfGs_setEmptyBottleItemIn(dItemNo_OIL_BOTTLE_e); } void item_func_WATER_BOTTLE() { dComIfGs_setEmptyBottleItemIn(dItemNo_WATER_BOTTLE_e); } void item_func_OIL_BOTTLE2() { dComIfGs_setEmptyBottleItemIn(dItemNo_OIL_BOTTLE_e); } void item_func_RED_BOTTLE2() { dComIfGs_setEmptyBottleItemIn(dItemNo_RED_BOTTLE_e); } void item_func_UGLY_SOUP() { dComIfGs_setEmptyBottleItemIn(dItemNo_UGLY_SOUP_e); } void item_func_HOT_SPRING() { dComIfGs_setEmptyBottleItemIn(dItemNo_HOT_SPRING_e); } void item_func_FAIRY_BOTTLE() { dComIfGs_setEmptyBottleItemIn(dItemNo_FAIRY_e); } void item_func_HOT_SPRING2() { dComIfGs_setEmptyBottleItemIn(dItemNo_HOT_SPRING_e); } void item_func_OIL2() {} void item_func_OIL() {} void item_func_NORMAL_BOMB() { dComIfGs_setEmptyBombBag(dItemNo_NORMAL_BOMB_e, 60); } void item_func_WATER_BOMB() { dComIfGs_setEmptyBombBag(); dComIfGs_setEmptyBombBagItemIn(dItemNo_WATER_BOMB_e, true); } void item_func_POKE_BOMB() { dComIfGs_setEmptyBombBag(); dComIfGs_setEmptyBombBagItemIn(dItemNo_POKE_BOMB_e, true); } void item_func_FAIRY_DROP() { dComIfGs_setEmptyBottleItemIn(dItemNo_FAIRY_DROP_e); } void item_func_WORM() {} void item_func_DROP_BOTTLE() { dComIfGs_setEmptyBottle(dItemNo_FAIRY_DROP_e); } void item_func_BEE_CHILD() { int bottleIdx; int i; for (bottleIdx = 0xFF, i = 0; i < 4; i++) { u8 getItem = dComIfGs_getItem(i + SLOT_11, true); if (getItem == dItemNo_EMPTY_BOTTLE_e) { bottleIdx = i; break; } } if (bottleIdx != 0xff) { dComIfGs_setBottleNum(bottleIdx, 10); dComIfGs_setEmptyBottleItemIn(dItemNo_BEE_CHILD_e); } } void item_func_CHUCHU_RARE() { dComIfGs_setEmptyBottleItemIn(dItemNo_CHUCHU_RARE_e); } void item_func_CHUCHU_RED() { dComIfGs_setEmptyBottleItemIn(dItemNo_CHUCHU_RED_e); } void item_func_CHUCHU_BLUE() { dComIfGs_setEmptyBottleItemIn(dItemNo_CHUCHU_BLUE_e); } void item_func_CHUCHU_GREEN() { dComIfGs_setEmptyBottleItemIn(dItemNo_CHUCHU_GREEN_e); } void item_func_CHUCHU_YELLOW() { dComIfGs_setEmptyBottleItemIn(dItemNo_CHUCHU_YELLOW_e); } void item_func_CHUCHU_PURPLE() { dComIfGs_setEmptyBottleItemIn(dItemNo_CHUCHU_PURPLE_e); } void item_func_LV1_SOUP() { dComIfGs_setEmptyBottleItemIn(dItemNo_LV1_SOUP_e); } void item_func_LV2_SOUP() { dComIfGs_setEmptyBottleItemIn(dItemNo_LV2_SOUP_e); } void item_func_LV3_SOUP() { dComIfGs_setEmptyBottleItemIn(dItemNo_LV3_SOUP_e); } void item_func_LETTER() { #if TARGET_PC if (randomizer_IsActive()) { if (dComIfGs_getItem(SLOT_21, true) != dItemNo_Randomizer_HORSE_FLUTE_e) dComIfGs_setItem(SLOT_21, dItemNo_Randomizer_LETTER_e); } else #endif dComIfGs_setItem(SLOT_21, dItemNo_LETTER_e); } void item_func_BILL() { #if TARGET_PC if (randomizer_IsActive()) { if (dComIfGs_getItem(SLOT_21, true) != dItemNo_Randomizer_HORSE_FLUTE_e) dComIfGs_setItem(SLOT_21, dItemNo_Randomizer_BILL_e); } else #endif dComIfGs_setItem(SLOT_21, dItemNo_BILL_e); } void item_func_WOOD_STATUE() { /* dSv_event_flag_c::F_283 - Hyrule Field - Get wood carving */ dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[283]); #if TARGET_PC if (randomizer_IsActive()) { if (dComIfGs_getItem(SLOT_21, true) != dItemNo_Randomizer_HORSE_FLUTE_e) dComIfGs_setItem(SLOT_21, dItemNo_Randomizer_WOOD_STATUE_e); } else #endif dComIfGs_setItem(SLOT_21, dItemNo_WOOD_STATUE_e); } void item_func_IRIAS_PENDANT() { #if TARGET_PC if (randomizer_IsActive()) { if (dComIfGs_getItem(SLOT_21, true) != dItemNo_Randomizer_HORSE_FLUTE_e) dComIfGs_setItem(SLOT_21, dItemNo_Randomizer_IRIAS_PENDANT_e); } else #endif dComIfGs_setItem(SLOT_21, dItemNo_IRIAS_PENDANT_e); } void item_func_HORSE_FLUTE() { #if TARGET_PC if (randomizer_IsActive()) { if (dComIfGs_getItem(SLOT_21, true) != dItemNo_Randomizer_NONE_e) dComIfGs_setItem(SLOT_21, dItemNo_Randomizer_HORSE_FLUTE_e); } else #endif dComIfGs_setItem(SLOT_21, dItemNo_HORSE_FLUTE_e); } #if TARGET_PC void item_func_FOREST_SMALL_KEY() { u8 currentKeys = dComIfGs_getKeyNum(0x10); dComIfGs_setKeyNum(0x10, currentKeys + 1); } void item_func_MINES_SMALL_KEY() { u8 currentKeys = dComIfGs_getKeyNum(0x11); dComIfGs_setKeyNum(0x11, currentKeys + 1); } void item_func_LAKEBED_SMALL_KEY() { u8 currentKeys = dComIfGs_getKeyNum(0x12); dComIfGs_setKeyNum(0x12, currentKeys + 1); } void item_func_ARBITERS_SMALL_KEY() { u8 currentKeys = dComIfGs_getKeyNum(0x13); dComIfGs_setKeyNum(0x13, currentKeys + 1); } void item_func_SNOWPEAK_SMALL_KEY() { u8 currentKeys = dComIfGs_getKeyNum(0x14); dComIfGs_setKeyNum(0x14, currentKeys + 1); } void item_func_TEMPLE_OF_TIME_SMALL_KEY() { u8 currentKeys = dComIfGs_getKeyNum(0x15); dComIfGs_setKeyNum(0x15, currentKeys + 1); } void item_func_CITY_SMALL_KEY() { u8 currentKeys = dComIfGs_getKeyNum(0x16); dComIfGs_setKeyNum(0x16, currentKeys + 1); } void item_func_PALACE_SMALL_KEY() { u8 currentKeys = dComIfGs_getKeyNum(0x17); dComIfGs_setKeyNum(0x17, currentKeys + 1); } void item_func_HYRULE_SMALL_KEY() { u8 currentKeys = dComIfGs_getKeyNum(0x18); dComIfGs_setKeyNum(0x18, currentKeys + 1); } void item_func_CAMP_SMALL_KEY() { u8 currentKeys = dComIfGs_getKeyNum(0xA); dComIfGs_setKeyNum(0xA, currentKeys + 1); } void item_func_LAKE_HYLIA_PORTAL() { dComIfGs_onStageSwitch(0x4, 0xA); // Unlock Lake Portal } #endif void item_func_RAFRELS_MEMO() { #if TARGET_PC if (randomizer_IsActive()) dComIfGs_setItem(SLOT_7, dItemNo_Randomizer_RAFRELS_MEMO_e); else #endif dComIfGs_setItem(SLOT_19, dItemNo_RAFRELS_MEMO_e); } void item_func_ASHS_SCRIBBLING() { #if TARGET_PC if (randomizer_IsActive()) { if (!dComIfGs_isEventBit(0x3B80)) { // Got earring from Ralis dComIfGs_setItem(SLOT_19, dItemNo_Randomizer_ASHS_SCRIBBLING_e); } return; } #endif dComIfGs_setItem(SLOT_19, dItemNo_ASHS_SCRIBBLING_e); } #if TARGET_PC void item_func_FOREST_BOSS_KEY() { dComIfGs_onDungeonItemBossKey(0x10); } void item_func_LAKEBED_BOSS_KEY() { dComIfGs_onDungeonItemBossKey(0x12); } void item_func_ARBITERS_BOSS_KEY() { dComIfGs_onDungeonItemBossKey(0x13); } void item_func_TEMPLE_OF_TIME_BOSS_KEY() { dComIfGs_onDungeonItemBossKey(0x15); } void item_func_CITY_BOSS_KEY() { dComIfGs_onDungeonItemBossKey(0x16); } void item_func_PALACE_BOSS_KEY() { dComIfGs_onDungeonItemBossKey(0x17); } void item_func_HYRULE_BOSS_KEY() { dComIfGs_onDungeonItemBossKey(0x18); } void item_func_FOREST_COMPASS() { dComIfGs_onDungeonItemCompass(0x10); } void item_func_MINES_COMPASS() { dComIfGs_onDungeonItemCompass(0x11); } void item_func_LAKEBED_COMPASS() { dComIfGs_onDungeonItemCompass(0x12); } #endif void item_func_CHUCHU_YELLOW2() { dComIfGs_setEmptyBottleItemIn(dItemNo_CHUCHU_YELLOW_e); } void item_func_OIL_BOTTLE3() { dComIfGs_setEmptyBottle(dItemNo_OIL_BOTTLE_e); } void item_func_SHOP_BEE_CHILD() { item_func_BEE_CHILD(); } void item_func_CHUCHU_BLACK() { dComIfGs_setEmptyBottleItemIn(dItemNo_CHUCHU_BLACK_e); } void item_func_LIGHT_DROP() {} void item_func_DROP_CONTAINER() { dComIfGs_onLightDropGetFlag(FARON_VESSEL); } void item_func_DROP_CONTAINER02() { dComIfGs_onLightDropGetFlag(ELDIN_VESSEL); } void item_func_DROP_CONTAINER03() { dComIfGs_onLightDropGetFlag(LANAYRU_VESSEL); #if TARGET_PC if (randomizer_IsActive()) { dComIfGs_onEventBit(0x1E80); // Malo Mart Fundraising Starts } #endif } void item_func_FILLED_CONTAINER() {} void item_func_MIRROR_PIECE_2() { #if TARGET_PC if (randomizer_IsActive()) { dComIfGs_onCollectMirror(1); // TODO rando /* Adding rando code until framework is implemented // Check if the requirement for the HC barrier is set to shards, and if so, set the flag rando::gRandomizer->checkSetHCBarrierFlag(rando::HC_Mirror_Shards, 2); // Check if the requirement for the HC BK is set to shards, and if so, set the flag rando::gRandomizer->checkSetHCBkFlag(rando::HC_BK_Mirror_Shards, 2); */ } #endif } void item_func_MIRROR_PIECE_3() { #if TARGET_PC if (randomizer_IsActive()) { dComIfGs_onCollectMirror(2); // TODO rando /* Adding rando code until framework is implemented // Check if the requirement for the HC barrier is set to shards, and if so, set the flag rando::gRandomizer->checkSetHCBarrierFlag(rando::HC_Mirror_Shards, 3); // Check if the requirement for the HC BK is set to shards, and if so, set the flag rando::gRandomizer->checkSetHCBkFlag(rando::HC_BK_Mirror_Shards, 3); */ } #endif } void item_func_MIRROR_PIECE_4() { #if TARGET_PC if (randomizer_IsActive()) { dComIfGs_onCollectMirror(3); // TODO rando /* Adding rando code until framework is implemented // If the player has the palace requirement set to Mirror Shards. if (headerPtr->getPalaceRequirements() == rando::PalaceEntryRequirements::PoT_Mirror_Shards) { events::setSaveFileEventFlag(libtp::data::flags::FIXED_THE_MIRROR_OF_TWILIGHT); } // Check if the requirement for the HC barrier is set to shards, and if so, set the flag rando::gRandomizer->checkSetHCBarrierFlag(rando::HC_Mirror_Shards, 4); // Check if the requirement for the HC BK is set to shards, and if so, set the flag rando::gRandomizer->checkSetHCBkFlag(rando::HC_BK_Mirror_Shards, 4); */ } #endif } #if TARGET_PC void item_func_ARBITERS_COMPASS() { dComIfGs_onDungeonItemCompass(0x13); } void item_func_SNOWPEAK_COMPASS() { dComIfGs_onDungeonItemCompass(0x14); } void item_func_TEMPLE_OF_TIME_COMPASS() { dComIfGs_onDungeonItemCompass(0x15); } void item_func_CITY_COMPASS() { dComIfGs_onDungeonItemCompass(0x16); } void item_func_PALACE_COMPASS() { dComIfGs_onDungeonItemCompass(0x17); } void item_func_HYRULE_COMPASS() { dComIfGs_onDungeonItemCompass(0x18); } void item_func_MIRROR_CHAMBER_PORTAL() { dComIfGs_onStageSwitch(0xA, 0x28); // Unlock MC Portal } void item_func_SNOWPEAK_PORTAL() { dComIfGs_onStageSwitch(0x8, 0x15); // Unlock Snowpeak Portal } #endif void item_func_SMELL_YELIA_POUCH() {} void item_func_SMELL_PUMPKIN() {} void item_func_SMELL_POH() {} void item_func_SMELL_FISH() {} void item_func_SMELL_CHILDREN() {} void item_func_SMELL_MEDICINE() {} #if TARGET_PC void item_func_FOREST_MAP() { dComIfGs_onDungeonItemMap(0x10); } void item_func_MINES_MAP() { dComIfGs_onDungeonItemMap(0x11); } void item_func_LAKEBED_MAP() { dComIfGs_onDungeonItemMap(0x12); } void item_func_ARBITERS_MAP() { dComIfGs_onDungeonItemMap(0x13); } void item_func_SNOWPEAK_MAP() { dComIfGs_onDungeonItemMap(0x14); } void item_func_TEMPLE_OF_TIME_MAP() { dComIfGs_onDungeonItemMap(0x15); } void item_func_CITY_MAP() { dComIfGs_onDungeonItemMap(0x16); } void item_func_PALACE_MAP() { dComIfGs_onDungeonItemMap(0x17); } void item_func_HYRULE_MAP() { dComIfGs_onDungeonItemMap(0x18); } void item_func_SACRED_GROVE_PORTAL() { dComIfGs_onStageSwitch(0x7, 0x64); // Unlock Grove Portal } #endif void item_func_M_BEETLE() {} void item_func_F_BEETLE() {} void item_func_M_BUTTERFLY() {} void item_func_F_BUTTERFLY() {} void item_func_M_STAG_BEETLE() {} void item_func_F_STAG_BEETLE() {} void item_func_M_GRASSHOPPER() {} void item_func_F_GRASSHOPPER() {} void item_func_M_NANAFUSHI() {} void item_func_F_NANAFUSHI() {} void item_func_M_DANGOMUSHI() {} void item_func_F_DANGOMUSHI() {} void item_func_M_MANTIS() {} void item_func_F_MANTIS() {} void item_func_M_LADYBUG() {} void item_func_F_LADYBUG() {} void item_func_M_SNAIL() {} void item_func_F_SNAIL() {} void item_func_M_DRAGONFLY() {} void item_func_F_DRAGONFLY() {} void item_func_M_ANT() {} void item_func_F_ANT() {} void item_func_M_MAYFLY() {} void item_func_F_MAYFLY() {} #if TARGET_PC void item_func_FUSED_SHADOW_1() { dComIfGs_onCollectCrystal(0); /* Adding rando code until framework is implemented // Check if the requirement for the HC barrier is set to shadows, and if so, set the flag rando::gRandomizer->checkSetHCBarrierFlag(rando::HC_Fused_Shadows, 1); // Check if the requirement for the HC BK is set to shadows, and if so, set the flag rando::gRandomizer->checkSetHCBkFlag(rando::HC_BK_Fused_Shadows, 1); */ } void item_func_FUSED_SHADOW_2() { if (randomizer_IsActive()) { dComIfGs_onCollectCrystal(1); /* Adding rando code until framework is implemented // Check if the requirement for the HC barrier is set to shadows, and if so, set the flag rando::gRandomizer->checkSetHCBarrierFlag(rando::HC_Fused_Shadows, 2); // Check if the requirement for the HC BK is set to shadows, and if so, set the flag rando::gRandomizer->checkSetHCBkFlag(rando::HC_BK_Fused_Shadows, 2); */ } } void item_func_FUSED_SHADOW_3() { if (randomizer_IsActive()) { dComIfGs_onCollectCrystal(2); /* Adding rando code until framework is implemented // If the player has the palace requirement set to Fused Shadows. if (headerPtr->getPalaceRequirements() == rando::PalaceEntryRequirements::PoT_Fused_Shadows) { events::setSaveFileEventFlag(libtp::data::flags::FIXED_THE_MIRROR_OF_TWILIGHT); } // Check if the requirement for the HC barrier is set to shadows, and if so, set the flag rando::gRandomizer->checkSetHCBarrierFlag(rando::HC_Fused_Shadows, 3); // Check if the requirement for the HC BK is set to shadows, and if so, set the flag rando::gRandomizer->checkSetHCBkFlag(rando::HC_BK_Fused_Shadows, 3); */ } } void item_func_MIRROR_PIECE_1() { if (randomizer_IsActive()) { dComIfGs_onCollectMirror(0); // TODO rando /* Adding rando code until framework is implemented // Check if the requirement for the HC barrier is set to shards, and if so, set the flag rando::gRandomizer->checkSetHCBarrierFlag(rando::HC_Mirror_Shards, 1); // Check if the requirement for the HC BK is set to shards, and if so, set the flag rando::gRandomizer->checkSetHCBkFlag(rando::HC_BK_Mirror_Shards, 1); */ } } #endif void item_func_POU_SPIRIT() { #if TARGET_PC if (randomizer_IsActive()) { dComIfGs_addPohSpiritNum(); // TODO rando /* Adding rando code until framework is implemented // Check if the HC barrier requires poes and if we have enough poe souls to set the flag. randoPtr->checkSetHCBarrierFlag(rando::HC_Poe_Souls, *poeCountPtr); // Check if the HC bk check requires poes and if we have enough poe souls to unlock the check. randoPtr->checkSetHCBkFlag(rando::HC_BK_Poe_Souls, *poeCountPtr); */ } #endif } #if TARGET_PC void item_func_ENDING_BLOW() { dComIfGs_onEventBit(0x2904); } void item_func_SHIELD_ATTACK() { dComIfGs_onEventBit(0x2908); } void item_func_BACK_SLICE() { dComIfGs_onEventBit(0x2902); } void item_func_HELM_SPLITTER() { dComIfGs_onEventBit(0x2901); } void item_func_MORTAL_DRAW() { dComIfGs_onEventBit(0x2A80); } void item_func_JUMP_STRIKE() { dComIfGs_onEventBit(0x29A40); } void item_func_GREAT_SPIN() { dComIfGs_onEventBit(0x2A20); } void item_func_ELDIN_BRIDGE_PORTAL() { dComIfGs_onStageSwitch(0x6, 0x63); // Unlock Eldin Bridge Portal } #endif void item_func_ANCIENT_DOCUMENT() { dComIfGs_setItem(SLOT_22, dItemNo_ANCIENT_DOCUMENT_e); } void item_func_AIR_LETTER() { #if TARGET_PC if (randomizer_IsActive()) { u8 letterCount = dComIfGs_getAncientDocumentNum(); dComIfGs_setAncientDocumentNum(letterCount + 1); } else #endif dComIfGs_setItem(SLOT_22, dItemNo_AIR_LETTER_e); } void item_func_ANCIENT_DOCUMENT2() { #if TARGET_PC if (randomizer_IsActive()) { dComIfGs_onEventBit(0x3B08); // Repaired Cannon at Lake dComIfGs_setAncientDocumentNum(6); } #endif dComIfGs_setItem(SLOT_22, dItemNo_ANCIENT_DOCUMENT2_e); } void item_func_LV7_DUNGEON_EXIT() { dComIfGs_setItem(SLOT_18, dItemNo_LV7_DUNGEON_EXIT_e); } void item_func_LINKS_SAVINGS() { dComIfGp_setItemRupeeCount(50); } void item_func_SMALL_KEY2() { #if TARGET_PC if (randomizer_IsActive()) dComIfGs_onStageSwitch(0x2, 0x14); // Unlock North Faron Gate else #endif dComIfGp_setItemKeyNumCount(1); } void item_func_POU_FIRE1() {} void item_func_POU_FIRE2() {} void item_func_POU_FIRE3() {} void item_func_POU_FIRE4() {} void item_func_BOSSRIDER_KEY() { #if TARGET_PC if (randomizer_IsActive()) { dComIfGs_onStageSwitch(0x3, 0x69); // Started Escort dComIfGs_onStageSwitch(0x3, 0x65); // Followed Rutella to Graveyard dComIfGs_onEventBit(0x840); // Started Zora Escort dComIfGs_onEventBit(0x810); // Completed Zora Escort } #endif } void item_func_TOMATO_PUREE() { #if TARGET_PC if (randomizer_IsActive()) { dComIfGs_onEventBit(0x480); // Told Yeta about Pumpkin dComIfGs_onEventBit(0x2); // Yeto put Pumpkin in Soup dComIfGs_onEventBit(0x1440); // SPR Lobby Door Unlocked dComIfGs_onStageSwitch(0x14, 0x12); // Unlock North Door } #endif } void item_func_TASTE() { #if TARGET_PC if (randomizer_IsActive()) { dComIfGs_onEventBit(0x120); // Told Yeta about Cheese dComIfGs_onEventBit(0x1); // Yeto put Pumpkin in Soup dComIfGs_onEventBit(0x1420); // SPR Lobby west Door Unlocked dComIfGs_onStageSwitch(0x14, 0x13); // Unlock West Door } #endif } void item_func_LV5_BOSS_KEY() { #if TARGET_PC if (randomizer_IsActive()) dComIfGs_onDungeonItemBossKey(0x14); else #endif dComIfGs_onDungeonItemBossKey(); } void item_func_SURFBOARD() {} void item_func_KANTERA2() {} void item_func_L2_KEY_PIECES1() {} void item_func_L2_KEY_PIECES2() {} void item_func_L2_KEY_PIECES3() {} void item_func_KEY_OF_CARAVAN() {} void item_func_LV2_BOSS_KEY() { #if TARGET_PC if (randomizer_IsActive()) { dComIfGs_onDungeonItemBossKey(0x11); execItemGet(dItemNo_Randomizer_L2_KEY_PIECES3_e); } else #endif dComIfGs_onDungeonItemBossKey(); } void item_func_KEY_OF_FILONE() { #if TARGET_PC if (randomizer_IsActive()) dComIfGs_onStageSwitch(0x2, 0xC); // Unlock Coro Gate else #endif dComIfGp_setItemKeyNumCount(1); } void item_func_noentry() {} int item_getcheck_func_noentry() { return -1; } int item_getcheck_func_HEART() { return -1; } int item_getcheck_func_GREEN_RUPEE() { return dComIfGs_isItemFirstBit(dItemNo_GREEN_RUPEE_e); } int item_getcheck_func_BLUE_RUPEE() { return dComIfGs_isItemFirstBit(dItemNo_BLUE_RUPEE_e); } int item_getcheck_func_YELLOW_RUPEE() { return dComIfGs_isItemFirstBit(dItemNo_YELLOW_RUPEE_e); } int item_getcheck_func_RED_RUPEE() { return dComIfGs_isItemFirstBit(dItemNo_RED_RUPEE_e); } int item_getcheck_func_PURPLE_RUPEE() { return dComIfGs_isItemFirstBit(dItemNo_PURPLE_RUPEE_e); } int item_getcheck_func_ORANGE_RUPEE() { return dComIfGs_isItemFirstBit(dItemNo_ORANGE_RUPEE_e); } int item_getcheck_func_SILVER_RUPEE() { return dComIfGs_isItemFirstBit(dItemNo_SILVER_RUPEE_e); } int item_getcheck_func_S_MAGIC() { return -1; } int item_getcheck_func_L_MAGIC() { return -1; } int item_getcheck_func_BOMB_5() { return dComIfGs_isItemFirstBit(dItemNo_BOMB_5_e); } int item_getcheck_func_BOMB_10() { return dComIfGs_isItemFirstBit(dItemNo_BOMB_10_e); } int item_getcheck_func_BOMB_20() { return dComIfGs_isItemFirstBit(dItemNo_BOMB_20_e); } int item_getcheck_func_BOMB_30() { return dComIfGs_isItemFirstBit(dItemNo_BOMB_30_e); } int item_getcheck_func_ARROW_10() { return dComIfGs_isItemFirstBit(dItemNo_ARROW_10_e); } int item_getcheck_func_ARROW_20() { return dComIfGs_isItemFirstBit(dItemNo_ARROW_20_e); } int item_getcheck_func_ARROW_30() { return dComIfGs_isItemFirstBit(dItemNo_ARROW_30_e); } int item_getcheck_func_ARROW_1() { return dComIfGs_isItemFirstBit(dItemNo_ARROW_1_e); } int item_getcheck_func_PACHINKO_SHOT() { return dComIfGs_isItemFirstBit(dItemNo_PACHINKO_SHOT_e); } int item_getcheck_func_WATER_BOMB_5() { return -1; } int item_getcheck_func_WATER_BOMB_10() { return -1; } int item_getcheck_func_WATER_BOMB_20() { return -1; } int item_getcheck_func_WATER_BOMB_30() { return -1; } int item_getcheck_func_BOMB_INSECT_5() { return -1; } int item_getcheck_func_BOMB_INSECT_10() { return dComIfGs_isItemFirstBit(dItemNo_BOMB_INSECT_10_e); } int item_getcheck_func_BOMB_INSECT_20() { return dComIfGs_isItemFirstBit(dItemNo_BOMB_INSECT_20_e); } int item_getcheck_func_BOMB_INSECT_30() { return dComIfGs_isItemFirstBit(dItemNo_BOMB_INSECT_30_e); } int item_getcheck_func_RECOVER_FAILY() { return -1; } int item_getcheck_func_TRIPLE_HEART() { return -1; } int item_getcheck_func_SMALL_KEY() { return -1; } int item_getcheck_func_KAKERA_HEART() { return -1; } int item_getcheck_func_UTUWA_HEART() { return -1; } int item_getcheck_func_MAP() { return dComIfGs_isDungeonItemMap(); } int item_getcheck_func_COMPUS() { return -1; } int item_getcheck_func_DUNGEON_EXIT() { return dComIfGs_getItem(SLOT_18, true) == dItemNo_DUNGEON_EXIT_e ? TRUE : FALSE; } int item_getcheck_func_BOSS_KEY() { return dComIfGs_isDungeonItemBossKey(); } int item_getcheck_func_DUNGEON_BACK() { return dComIfGs_getItem(SLOT_18, true) == dItemNo_DUNGEON_BACK_e ? TRUE : FALSE; } int item_getcheck_func_SWORD() { return dComIfGs_isCollectSword(COLLECT_ORDON_SWORD); } int item_getcheck_func_MASTER_SWORD() { return dComIfGs_isCollectSword(COLLECT_MASTER_SWORD); } int item_getcheck_func_WOOD_SHIELD() { return dComIfGs_isItemFirstBit(dItemNo_WOOD_SHIELD_e); } int item_getcheck_func_SHIELD() { return dComIfGs_isItemFirstBit(dItemNo_SHIELD_e); } int item_getcheck_func_HYLIA_SHIELD() { return dComIfGs_isItemFirstBit(dItemNo_HYLIA_SHIELD_e); } int item_getcheck_func_TKS_LETTER() { return dComIfGs_getItem(SLOT_18, true) == dItemNo_TKS_LETTER_e ? TRUE : FALSE; } int item_getcheck_func_WEAR_CASUAL() { return dComIfGs_isItemFirstBit(dItemNo_WEAR_CASUAL_e); } int item_getcheck_func_WEAR_KOKIRI() { return dComIfGs_isCollectClothing(KOKIRI_CLOTHES_FLAG); } int item_getcheck_func_ARMOR() { return dComIfGs_isItemFirstBit(dItemNo_ARMOR_e); } int item_getcheck_func_WEAR_ZORA() { return dComIfGs_isItemFirstBit(dItemNo_WEAR_ZORA_e); } int item_getcheck_func_MAGIC_LV1() { #if TARGET_PC if (randomizer_IsActive()) return dComIfGs_isItemFirstBit(dItemNo_Randomizer_MAGIC_LV1_e); #endif return -1; } int item_getcheck_func_DUNGEON_EXIT_2() { return dComIfGs_getItem(SLOT_18, true) == dItemNo_DUNGEON_EXIT_e ? TRUE : FALSE; } int item_getcheck_func_WALLET_LV1() { return -1; } int item_getcheck_func_WALLET_LV2() { #if TARGET_PC if (randomizer_IsActive()) return dComIfGs_isItemFirstBit(dItemNo_Randomizer_WALLET_LV2_e); #endif return -1; } int item_getcheck_func_WALLET_LV3() { #if TARGET_PC if (randomizer_IsActive()) return dComIfGs_isItemFirstBit(dItemNo_Randomizer_WALLET_LV3_e); #endif return -1; } int item_getcheck_func_ZORAS_JEWEL() { return dComIfGs_getItem(SLOT_20, true) == dItemNo_ZORAS_JEWEL_e ? TRUE : FALSE; } int item_getcheck_func_HAWK_EYE() { return dComIfGs_isItemFirstBit(dItemNo_HAWK_EYE_e); } int item_getcheck_func_WOOD_STICK() { return dComIfGs_isItemFirstBit(dItemNo_WOOD_STICK_e); } int item_getcheck_func_BOOMERANG() { return dComIfGs_getItem(SLOT_0, true) == dItemNo_BOOMERANG_e ? TRUE : FALSE; } int item_getcheck_func_SPINNER() { return dComIfGs_getItem(SLOT_2, true) == dItemNo_SPINNER_e ? TRUE : FALSE; } int item_getcheck_func_IRONBALL() { return dComIfGs_getItem(SLOT_6, true) == dItemNo_IRONBALL_e ? TRUE : FALSE; } int item_getcheck_func_BOW() { return dComIfGs_getItem(SLOT_4, false) == dItemNo_BOW_e ? TRUE : FALSE; } int item_getcheck_func_HOOKSHOT() { return dComIfGs_getItem(SLOT_9, true) == dItemNo_HOOKSHOT_e ? TRUE : FALSE; } int item_getcheck_func_HVY_BOOTS() { return dComIfGs_getItem(SLOT_3, true) == dItemNo_HVY_BOOTS_e ? TRUE : FALSE; } int item_getcheck_func_COPY_ROD() { return dComIfGs_getItem(SLOT_8, true) == dItemNo_COPY_ROD_e ? TRUE : FALSE; } int item_getcheck_func_W_HOOKSHOT() { return dComIfGs_getItem(SLOT_10, true) == dItemNo_W_HOOKSHOT_e ? TRUE : FALSE; } int item_getcheck_func_KANTERA() { return dComIfGs_getItem(SLOT_1, true) == dItemNo_KANTERA_e ? TRUE : FALSE; } int item_getcheck_func_LIGHT_SWORD() { return dComIfGs_isCollectSword(COLLECT_LIGHT_SWORD); } int item_getcheck_func_FISHING_ROD_1() { return (dComIfGs_getItem(SLOT_20, true) == dItemNo_FISHING_ROD_1_e || dComIfGs_getItem(SLOT_20, true) == dItemNo_BEE_ROD_e || dComIfGs_getItem(SLOT_20, true) == dItemNo_WORM_ROD_e || dComIfGs_getItem(SLOT_20, true) == dItemNo_JEWEL_ROD_e || dComIfGs_getItem(SLOT_20, true) == dItemNo_JEWEL_BEE_ROD_e || dComIfGs_getItem(SLOT_20, true) == dItemNo_JEWEL_WORM_ROD_e) ? TRUE : FALSE; } int item_getcheck_func_PACHINKO() { return dComIfGs_getItem(SLOT_23, true) == dItemNo_PACHINKO_e ? TRUE : FALSE; } int item_getcheck_func_COPY_ROD_2() { return -1; } int item_getcheck_func_BOMB_BAG_LV2() { return dComIfGs_isItemFirstBit(dItemNo_BOMB_BAG_LV2_e); } int item_getcheck_func_BOMB_BAG_LV1() { return dComIfGs_isItemFirstBit(dItemNo_BOMB_BAG_LV1_e); } int item_getcheck_func_BOMB_IN_BAG() { return dComIfGs_isItemFirstBit(dItemNo_BOMB_IN_BAG_e); } int item_getcheck_func_LIGHT_ARROW() { return dComIfGs_isItemFirstBit(dItemNo_LIGHT_ARROW_e); } int item_getcheck_func_ARROW_LV1() { return (dComIfGs_getItem(SLOT_4, false) == dItemNo_BOW_e && dComIfGs_getArrowMax() >= 30) ? TRUE : FALSE; } int item_getcheck_func_ARROW_LV2() { return (dComIfGs_getItem(SLOT_4, false) == dItemNo_BOW_e && dComIfGs_getArrowMax() >= 60) ? TRUE : FALSE; } int item_getcheck_func_ARROW_LV3() { return (dComIfGs_getItem(SLOT_4, false) == dItemNo_BOW_e && dComIfGs_getArrowMax() >= 100) ? TRUE : FALSE; } int item_getcheck_func_LURE_ROD() { return -1; } int item_getcheck_func_BOMB_ARROW() { return -1; } int item_getcheck_func_HAWK_ARROW() { return -1; } int item_getcheck_func_BEE_ROD() { return item_getcheck_func_FISHING_ROD_1(); } int item_getcheck_func_JEWEL_ROD() { return item_getcheck_func_FISHING_ROD_1(); } int item_getcheck_func_WORM_ROD() { return item_getcheck_func_FISHING_ROD_1(); } int item_getcheck_func_JEWEL_BEE_ROD() { return item_getcheck_func_FISHING_ROD_1(); } int item_getcheck_func_JEWEL_WORM_ROD() { return item_getcheck_func_FISHING_ROD_1(); } int item_getcheck_func_EMPTY_BOTTLE() { return dComIfGs_checkBottle(dItemNo_EMPTY_BOTTLE_e); } int item_getcheck_func_RED_BOTTLE() { return dComIfGs_checkBottle(dItemNo_RED_BOTTLE_e); } int item_getcheck_func_GREEN_BOTTLE() { return dComIfGs_checkBottle(dItemNo_GREEN_BOTTLE_e); } int item_getcheck_func_BLUE_BOTTLE() { return dComIfGs_checkBottle(dItemNo_BLUE_BOTTLE_e); } int item_getcheck_func_MILK_BOTTLE() { return dComIfGs_checkBottle(dItemNo_MILK_BOTTLE_e); } int item_getcheck_func_HALF_MILK_BOTTLE() { return dComIfGs_checkBottle(dItemNo_HALF_MILK_BOTTLE_e); } int item_getcheck_func_OIL_BOTTLE() { return dComIfGs_checkBottle(dItemNo_OIL_BOTTLE_e); } int item_getcheck_func_WATER_BOTTLE() { return dComIfGs_checkBottle(dItemNo_WATER_BOTTLE_e); } int item_getcheck_func_OIL_BOTTLE2() { return dComIfGs_checkBottle(dItemNo_OIL_BOTTLE_2_e); } int item_getcheck_func_RED_BOTTLE2() { return dComIfGs_checkBottle(dItemNo_RED_BOTTLE_2_e); } int item_getcheck_func_UGLY_SOUP() { return dComIfGs_checkBottle(dItemNo_UGLY_SOUP_e); } int item_getcheck_func_HOT_SPRING() { return dComIfGs_checkBottle(dItemNo_HOT_SPRING_e); } int item_getcheck_func_FAIRY_BOTTLE() { return dComIfGs_checkBottle(dItemNo_FAIRY_e); } int item_getcheck_func_HOT_SPRING2() { return dComIfGs_checkBottle(dItemNo_HOT_SPRING_e); } int item_getcheck_func_OIL2() { return dComIfGs_checkBottle(dItemNo_OIL2_e); } int item_getcheck_func_OIL() { return dComIfGs_checkBottle(dItemNo_OIL_e); } int item_getcheck_func_NORMAL_BOMB() { return dComIfGs_isItemFirstBit(dItemNo_NORMAL_BOMB_e); } int item_getcheck_func_WATER_BOMB() { return dComIfGs_isItemFirstBit(dItemNo_WATER_BOMB_e); } int item_getcheck_func_POKE_BOMB() { return dComIfGs_isItemFirstBit(dItemNo_POKE_BOMB_e); } int item_getcheck_func_FAIRY_DROP() { return dComIfGs_checkBottle(dItemNo_FAIRY_DROP_e); } int item_getcheck_func_WORM() { return dComIfGs_checkBottle(dItemNo_WORM_e); } int item_getcheck_func_DROP_BOTTLE() { return dComIfGs_isItemFirstBit(dItemNo_DROP_BOTTLE_e); } int item_getcheck_func_BEE_CHILD() { return -1; } int item_getcheck_func_CHUCHU_RARE() { return dComIfGs_checkBottle(dItemNo_CHUCHU_RARE_e); } int item_getcheck_func_CHUCHU_RED() { return dComIfGs_checkBottle(dItemNo_CHUCHU_RED_e); } int item_getcheck_func_CHUCHU_BLUE() { return dComIfGs_checkBottle(dItemNo_CHUCHU_BLUE_e); } int item_getcheck_func_CHUCHU_GREEN() { return dComIfGs_checkBottle(dItemNo_CHUCHU_GREEN_e); } int item_getcheck_func_CHUCHU_YELLOW() { return dComIfGs_checkBottle(dItemNo_CHUCHU_YELLOW_e); } int item_getcheck_func_CHUCHU_PURPLE() { return dComIfGs_checkBottle(dItemNo_CHUCHU_PURPLE_e); } int item_getcheck_func_LV1_SOUP() { return dComIfGs_isItemFirstBit(dItemNo_LV1_SOUP_e); } int item_getcheck_func_LV2_SOUP() { return dComIfGs_isItemFirstBit(dItemNo_LV2_SOUP_e); } int item_getcheck_func_LV3_SOUP() { return dComIfGs_isItemFirstBit(dItemNo_LV3_SOUP_e); } int item_getcheck_func_LETTER() { #if TARGET_PC if (randomizer_IsActive()) return dComIfGs_isItemFirstBit(dItemNo_Randomizer_LETTER_e); #endif return dComIfGs_getItem(SLOT_21, true) == dItemNo_LETTER_e ? TRUE : FALSE; } int item_getcheck_func_BILL() { #if TARGET_PC if (randomizer_IsActive()) return dComIfGs_isItemFirstBit(dItemNo_Randomizer_BILL_e); #endif return dComIfGs_getItem(SLOT_21, true) == dItemNo_BILL_e ? TRUE : FALSE; } int item_getcheck_func_WOOD_STATUE() { #if TARGET_PC if (randomizer_IsActive()) return dComIfGs_isItemFirstBit(dItemNo_Randomizer_WOOD_STATUE_e); #endif return dComIfGs_getItem(SLOT_21, true) == dItemNo_WOOD_STATUE_e ? TRUE : FALSE; } int item_getcheck_func_IRIAS_PENDANT() { #if TARGET_PC if (randomizer_IsActive()) return dComIfGs_isItemFirstBit(dItemNo_Randomizer_IRIAS_PENDANT_e); #endif return dComIfGs_getItem(SLOT_21, true) == dItemNo_IRIAS_PENDANT_e ? TRUE : FALSE; } int item_getcheck_func_HORSE_FLUTE() { #if TARGET_PC if (randomizer_IsActive()) return dComIfGs_isItemFirstBit(dItemNo_Randomizer_HORSE_FLUTE_e); #endif return dComIfGs_getItem(SLOT_22, true) == dItemNo_HORSE_FLUTE_e ? TRUE : FALSE; } #if TARGET_PC int item_getcheck_func_CAMP_SMALL_KEY() { return dComIfGs_isItemFirstBit(dItemNo_Randomizer_CAMP_SMALL_KEY_e); } #endif int item_getcheck_func_RAFRELS_MEMO() { return dComIfGs_getItem(SLOT_19, true) == dItemNo_RAFRELS_MEMO_e ? TRUE : FALSE; } int item_getcheck_func_ASHS_SCRIBBLING() { return dComIfGs_getItem(SLOT_19, true) == dItemNo_ASHS_SCRIBBLING_e ? TRUE : FALSE; } int item_getcheck_func_CHUCHU_YELLOW2() { return dComIfGs_checkBottle(dItemNo_CHUCHU_YELLOW2_e); } int item_getcheck_func_OIL_BOTTLE3() { return -1; } int item_getcheck_func_SHOP_BEE_CHILD() { return -1; } int item_getcheck_func_CHUCHU_BLACK() { return dComIfGs_checkBottle(dItemNo_CHUCHU_BLACK_e); } int item_getcheck_func_LIGHT_DROP() { return dComIfGs_isItemFirstBit(dItemNo_LIGHT_DROP_e); } int item_getcheck_func_DROP_CONTAINER() { return dComIfGs_isLightDropGetFlag(FARON_VESSEL); } int item_getcheck_func_DROP_CONTAINER02() { return dComIfGs_isLightDropGetFlag(ELDIN_VESSEL); } int item_getcheck_func_DROP_CONTAINER03() { return dComIfGs_isLightDropGetFlag(LANAYRU_VESSEL); } int item_getcheck_func_FILLED_CONTAINER() { return -1; } int item_getcheck_func_MIRROR_PIECE_2() { #if TARGET_PC if (randomizer_IsActive()) return dComIfGs_isItemFirstBit(dItemNo_Randomizer_MIRROR_PIECE_2_e); #endif return -1; } int item_getcheck_func_MIRROR_PIECE_3() { #if TARGET_PC if (randomizer_IsActive()) return dComIfGs_isItemFirstBit(dItemNo_Randomizer_MIRROR_PIECE_3_e); #endif return -1; } int item_getcheck_func_MIRROR_PIECE_4() { #if TARGET_PC if (randomizer_IsActive()) return dComIfGs_isItemFirstBit(dItemNo_Randomizer_MIRROR_PIECE_4_e); #endif return -1; } int item_getcheck_func_SMELL_YELIA_POUCH() { return dComIfGs_getCollectSmell() == dItemNo_SMELL_YELIA_POUCH_e ? TRUE : FALSE; } int item_getcheck_func_SMELL_PUMPKIN() { return -1; } int item_getcheck_func_SMELL_POH() { return dComIfGs_getCollectSmell() == dItemNo_SMELL_POH_e ? TRUE : FALSE; } int item_getcheck_func_SMELL_FISH() { return dComIfGs_getCollectSmell() == dItemNo_SMELL_FISH_e ? TRUE : FALSE; } int item_getcheck_func_SMELL_CHILDREN() { return dComIfGs_getCollectSmell() == dItemNo_SMELL_CHILDREN_e ? TRUE : FALSE; } int item_getcheck_func_SMELL_MEDICINE() { return dComIfGs_getCollectSmell() == dItemNo_SMELL_MEDICINE_e ? TRUE : FALSE; } int item_getcheck_func_M_BEETLE() { return dComIfGs_isItemFirstBit(dItemNo_M_BEETLE_e); } int item_getcheck_func_F_BEETLE() { return dComIfGs_isItemFirstBit(dItemNo_F_BEETLE_e); } int item_getcheck_func_M_BUTTERFLY() { return dComIfGs_isItemFirstBit(dItemNo_M_BUTTERFLY_e); } int item_getcheck_func_F_BUTTERFLY() { return dComIfGs_isItemFirstBit(dItemNo_F_BUTTERFLY_e); } int item_getcheck_func_M_STAG_BEETLE() { return dComIfGs_isItemFirstBit(dItemNo_M_STAG_BEETLE_e); } int item_getcheck_func_F_STAG_BEETLE() { return dComIfGs_isItemFirstBit(dItemNo_F_STAG_BEETLE_e); } int item_getcheck_func_M_GRASSHOPPER() { return dComIfGs_isItemFirstBit(dItemNo_M_GRASSHOPPER_e); } int item_getcheck_func_F_GRASSHOPPER() { return dComIfGs_isItemFirstBit(dItemNo_F_GRASSHOPPER_e); } int item_getcheck_func_M_NANAFUSHI() { return dComIfGs_isItemFirstBit(dItemNo_M_NANAFUSHI_e); } int item_getcheck_func_F_NANAFUSHI() { return dComIfGs_isItemFirstBit(dItemNo_F_NANAFUSHI_e); } int item_getcheck_func_M_DANGOMUSHI() { return dComIfGs_isItemFirstBit(dItemNo_M_DANGOMUSHI_e); } int item_getcheck_func_F_DANGOMUSHI() { return dComIfGs_isItemFirstBit(dItemNo_F_DANGOMUSHI_e); } int item_getcheck_func_M_MANTIS() { return dComIfGs_isItemFirstBit(dItemNo_M_MANTIS_e); } int item_getcheck_func_F_MANTIS() { return dComIfGs_isItemFirstBit(dItemNo_F_MANTIS_e); } int item_getcheck_func_M_LADYBUG() { return dComIfGs_isItemFirstBit(dItemNo_M_LADYBUG_e); } int item_getcheck_func_F_LADYBUG() { return dComIfGs_isItemFirstBit(dItemNo_F_LADYBUG_e); } int item_getcheck_func_M_SNAIL() { return dComIfGs_isItemFirstBit(dItemNo_M_SNAIL_e); } int item_getcheck_func_F_SNAIL() { return dComIfGs_isItemFirstBit(dItemNo_F_SNAIL_e); } int item_getcheck_func_M_DRAGONFLY() { return dComIfGs_isItemFirstBit(dItemNo_M_DRAGONFLY_e); } int item_getcheck_func_F_DRAGONFLY() { return dComIfGs_isItemFirstBit(dItemNo_F_DRAGONFLY_e); } int item_getcheck_func_M_ANT() { return dComIfGs_isItemFirstBit(dItemNo_M_ANT_e); } int item_getcheck_func_F_ANT() { return dComIfGs_isItemFirstBit(dItemNo_F_ANT_e); } int item_getcheck_func_M_MAYFLY() { return dComIfGs_isItemFirstBit(dItemNo_M_MAYFLY_e); } int item_getcheck_func_F_MAYFLY() { return dComIfGs_isItemFirstBit(dItemNo_F_MAYFLY_e); } #if TARGET_PC int item_getcheck_func_FUSED_SHADOW_1() { return dComIfGs_isItemFirstBit(dItemNo_Randomizer_FUSED_SHADOW_1_e); } int item_getcheck_func_FUSED_SHADOW_2() { return dComIfGs_isItemFirstBit(dItemNo_Randomizer_FUSED_SHADOW_2_e); } int item_getcheck_func_FUSED_SHADOW_3() { return dComIfGs_isItemFirstBit(dItemNo_Randomizer_FUSED_SHADOW_3_e); } int item_getcheck_func_MIRROR_PIECE_1() { return dComIfGs_isItemFirstBit(dItemNo_Randomizer_MIRROR_PIECE_1_e); } #endif int item_getcheck_func_POU_SPIRIT() { return dComIfGs_getPohSpiritNum(); } #if TARGET_PC int item_getcheck_func_ENDING_BLOW() { return dComIfGs_isItemFirstBit(dItemNo_Randomizer_ENDING_BLOW_e); } int item_getcheck_func_SHIELD_ATTACK() { return dComIfGs_isItemFirstBit(dItemNo_Randomizer_SHIELD_ATTACK_e); } int item_getcheck_func_BACK_SLICE() { return dComIfGs_isItemFirstBit(dItemNo_Randomizer_BACK_SLICE_e); } int item_getcheck_func_HELM_SPLITTER() { return dComIfGs_isItemFirstBit(dItemNo_Randomizer_HELM_SPLITTER_e); } int item_getcheck_func_MORTAL_DRAW() { return dComIfGs_isItemFirstBit(dItemNo_Randomizer_MORTAL_DRAW_e); } int item_getcheck_func_JUMP_STRIKE() { return dComIfGs_isItemFirstBit(dItemNo_Randomizer_JUMP_STRIKE_e); } int item_getcheck_func_GREAT_SPIN() { return dComIfGs_isItemFirstBit(dItemNo_Randomizer_GREAT_SPIN_e); } #endif int item_getcheck_func_ANCIENT_DOCUMENT() { return dComIfGs_getItem(SLOT_22, true) == dItemNo_ANCIENT_DOCUMENT_e ? TRUE : FALSE; } int item_getcheck_func_AIR_LETTER() { return dComIfGs_getItem(SLOT_22, true) == dItemNo_AIR_LETTER_e ? TRUE : FALSE; } int item_getcheck_func_ANCIENT_DOCUMENT2() { return dComIfGs_getItem(SLOT_22, true) == dItemNo_ANCIENT_DOCUMENT2_e ? TRUE : FALSE; } int item_getcheck_func_LV7_DUNGEON_EXIT() { return dComIfGs_getItem(SLOT_18, true) == dItemNo_LV7_DUNGEON_EXIT_e ? TRUE : FALSE; } int item_getcheck_func_LINKS_SAVINGS() { return -1; } int item_getcheck_func_SMALL_KEY2() { return -1; } int item_getcheck_func_POU_FIRE1() { return -1; } int item_getcheck_func_POU_FIRE2() { return -1; } int item_getcheck_func_POU_FIRE3() { return -1; } int item_getcheck_func_POU_FIRE4() { return -1; } int item_getcheck_func_BOSSRIDER_KEY() { #if TARGET_PC if (randomizer_IsActive()) return dComIfGs_isItemFirstBit(dItemNo_Randomizer_BOSSRIDER_KEY_e); #endif return -1; } int item_getcheck_func_TOMATO_PUREE() { return dComIfGs_isItemFirstBit(dItemNo_TOMATO_PUREE_e); } int item_getcheck_func_TASTE() { return dComIfGs_isItemFirstBit(dItemNo_TASTE_e); } int item_getcheck_func_LV5_BOSS_KEY() { return dComIfGs_isDungeonItemBossKey(); } int item_getcheck_func_SURFBOARD() { return -1; } int item_getcheck_func_KANTERA2() { return -1; } int item_getcheck_func_L2_KEY_PIECES1() { return dComIfGs_isItemFirstBit(dItemNo_L2_KEY_PIECES1_e); } int item_getcheck_func_L2_KEY_PIECES2() { return dComIfGs_isItemFirstBit(dItemNo_L2_KEY_PIECES2_e); } int item_getcheck_func_L2_KEY_PIECES3() { return dComIfGs_isItemFirstBit(dItemNo_L2_KEY_PIECES3_e); } int item_getcheck_func_KEY_OF_CARAVAN() { return dComIfGs_isItemFirstBit(dItemNo_KEY_OF_CARAVAN_e); } int item_getcheck_func_LV2_BOSS_KEY() { return dComIfGs_isDungeonItemBossKey(); } int item_getcheck_func_KEY_OF_FILONE() { return dComIfGs_getKeyNum(); } int isBomb(u8 i_itemNo) { int is_bomb = false; if (i_itemNo == dItemNo_BOMB_5_e || i_itemNo == dItemNo_BOMB_10_e || i_itemNo == dItemNo_BOMB_20_e || i_itemNo == dItemNo_BOMB_30_e || i_itemNo == dItemNo_NORMAL_BOMB_e | i_itemNo == dItemNo_WATER_BOMB_e || i_itemNo == dItemNo_POKE_BOMB_e) { is_bomb = true; } return is_bomb; } int isArrow(u8 i_itemNo) { int is_arrow = false; if (i_itemNo == dItemNo_ARROW_1_e || i_itemNo == dItemNo_ARROW_10_e || i_itemNo == dItemNo_ARROW_20_e || i_itemNo == dItemNo_ARROW_30_e) { is_arrow = true; } return is_arrow; } BOOL isBottleItem(u8 i_itemNo) { switch (i_itemNo) { case dItemNo_OIL_BOTTLE3_e: case dItemNo_EMPTY_BOTTLE_e: case dItemNo_RED_BOTTLE_e: case dItemNo_GREEN_BOTTLE_e: case dItemNo_BLUE_BOTTLE_e: case dItemNo_MILK_BOTTLE_e: case dItemNo_HALF_MILK_BOTTLE_e: case dItemNo_OIL_BOTTLE_e: case dItemNo_WATER_BOTTLE_e: case dItemNo_OIL_BOTTLE_2_e: case dItemNo_RED_BOTTLE_2_e: case dItemNo_UGLY_SOUP_e: case dItemNo_HOT_SPRING_e: case dItemNo_FAIRY_e: case dItemNo_FAIRY_DROP_e: case dItemNo_WORM_e: case dItemNo_BEE_CHILD_e: case dItemNo_CHUCHU_RARE_e: case dItemNo_CHUCHU_RED_e: case dItemNo_CHUCHU_BLUE_e: case dItemNo_CHUCHU_GREEN_e: case dItemNo_CHUCHU_YELLOW_e: case dItemNo_CHUCHU_PURPLE_e: case dItemNo_LV1_SOUP_e: case dItemNo_LV2_SOUP_e: case dItemNo_LV3_SOUP_e: case dItemNo_CHUCHU_BLACK_e: case dItemNo_POU_FIRE1_e: case dItemNo_POU_FIRE2_e: case dItemNo_POU_FIRE3_e: case dItemNo_POU_FIRE4_e: return TRUE; default: return FALSE; } } BOOL isHeart(u8 i_itemNo) { BOOL is_heart = false; if (i_itemNo == dItemNo_HEART_e || i_itemNo == dItemNo_TRIPLE_HEART_e) { is_heart = true; } return is_heart; } BOOL isInsect(u8 i_itemNo) { BOOL is_insect = false; switch (i_itemNo) { case dItemNo_M_BEETLE_e: case dItemNo_F_BEETLE_e: case dItemNo_M_BUTTERFLY_e: case dItemNo_F_BUTTERFLY_e: case dItemNo_M_STAG_BEETLE_e: case dItemNo_F_STAG_BEETLE_e: case dItemNo_M_GRASSHOPPER_e: case dItemNo_F_GRASSHOPPER_e: case dItemNo_M_NANAFUSHI_e: case dItemNo_F_NANAFUSHI_e: case dItemNo_M_DANGOMUSHI_e: case dItemNo_F_DANGOMUSHI_e: case dItemNo_M_MANTIS_e: case dItemNo_F_MANTIS_e: case dItemNo_M_LADYBUG_e: case dItemNo_F_LADYBUG_e: case dItemNo_M_SNAIL_e: case dItemNo_F_SNAIL_e: case dItemNo_M_DRAGONFLY_e: case dItemNo_F_DRAGONFLY_e: case dItemNo_M_ANT_e: case dItemNo_F_ANT_e: case dItemNo_M_MAYFLY_e: case dItemNo_F_MAYFLY_e: is_insect = true; } return is_insect; } u8 check_itemno(int i_itemNo) { if (!dComIfGs_isGetMagicUseFlag() && (i_itemNo == dItemNo_S_MAGIC_e || i_itemNo == dItemNo_L_MAGIC_e)) { return dItemNo_GREEN_RUPEE_e; } if (i_itemNo == dItemNo_ARROW_1_e) { if (!dComIfGs_isItemFirstBit(dItemNo_BOW_e)) { return dItemNo_GREEN_RUPEE_e; } } else { if (isArrow(i_itemNo)) { if (!dComIfGs_isItemFirstBit(dItemNo_BOW_e)) { return dItemNo_GREEN_RUPEE_e; } if (g_dComIfG_gameInfo.play.getLayerNo(0) == 0xD || g_dComIfG_gameInfo.play.getLayerNo(0) == 0xE) { const char* stage_name = dComIfGp_getStartStageName(); // D_MN08: Palace of Twilight if (strncmp(stage_name, "D_MN08", 6)) { return dItemNo_GREEN_RUPEE_e; } } } } if (!dComIfGs_isItemFirstBit(dItemNo_BOMB_BAG_LV1_e) && isBomb(i_itemNo)) { return dItemNo_GREEN_RUPEE_e; } else { if (i_itemNo == dItemNo_TRIPLE_HEART_e) { i_itemNo = dItemNo_HEART_e; } if (!checkItemGet(dItemNo_PACHINKO_e, 1) && i_itemNo == dItemNo_PACHINKO_SHOT_e) { i_itemNo = dItemNo_GREEN_RUPEE_e; } if (i_itemNo == dItemNo_S_MAGIC_e || i_itemNo == dItemNo_L_MAGIC_e) { i_itemNo = dItemNo_GREEN_RUPEE_e; } } return i_itemNo; } int addBombCount(u8 i_bombType, u8 i_addNum) { u8 bombType[3]; int bombNum[3]; for (u8 i = 0; i < 3; i++) { bombType[i] = dComIfGs_getItem(i + SLOT_15, false); if (bombType[i] == dItemNo_BOMB_BAG_LV1_e) { bombNum[i] = 0; } else if (bombType[i] == i_bombType) { bombNum[i] = dComIfGs_getBombNum(i); } else { bombNum[i] = -1; } } for (u8 i = 0; i < 3; i++) { int bombIdx = -1; int var_r22 = -1; for (u8 j = 0; j < 3; j++) { if (bombNum[j] == 0) { bombIdx = j; var_r22 = 0; } } for (u8 k = 0; k < 3; k++) { if (bombNum[k] > 0 && bombNum[k] > var_r22 && bombNum[k] != dComIfGs_getBombMax(bombType[k])) { bombIdx = k; var_r22 = bombNum[k]; } } if (bombIdx == -1) { return i_addNum; } else if (var_r22 == 0) { if (dComIfGs_getBombMax(i_bombType) >= i_addNum) { dComIfGs_setEmptyBombBagItemIn(i_bombType, i_addNum, true); return 0; } else { dComIfGs_setEmptyBombBagItemIn(i_bombType, i_addNum, true); i_addNum = i_addNum - dComIfGs_getBombMax(i_bombType); } } else { if (dComIfGs_getBombMax(bombType[bombIdx]) >= var_r22 + i_addNum) { dComIfGp_setItemBombNumCount(bombIdx, i_addNum); return 0; } else { dComIfGp_setItemBombNumCount(bombIdx, i_addNum); i_addNum = i_addNum - (dComIfGs_getBombMax(bombType[bombIdx]) - var_r22); } } bombNum[bombIdx] = dComIfGs_getBombMax(bombType[bombIdx]); } return i_addNum; } u8* dEnemyItem_c::mData;