mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-05 02:37:50 -04:00
3489 lines
94 KiB
C++
3489 lines
94 KiB
C++
/**
|
|
* 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 <cstring>
|
|
|
|
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<uint32_t*>(reinterpret_cast<uint32_t>(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<uint32_t*>(reinterpret_cast<uint32_t>(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;
|