Files
2026-09-01 02:04:27 -04:00

494 lines
10 KiB
C

#ifndef GUARD_CONSTANTS_ITEMS_H
#define GUARD_CONSTANTS_ITEMS_H
enum {
ITEM_NONE,
// Balls
// Note: If moving ball IDs around, updating FIRST_BALL/LAST_BALL is not sufficient
// Several places expect the ball IDs to be first and contiguous (e.g. gBattlescriptsForBallThrow and MON_DATA_POKEBALL)
ITEM_MASTER_BALL,
ITEM_ULTRA_BALL,
ITEM_GREAT_BALL,
ITEM_POKE_BALL,
ITEM_SAFARI_BALL,
ITEM_NET_BALL,
ITEM_DIVE_BALL,
ITEM_NEST_BALL,
ITEM_REPEAT_BALL,
ITEM_TIMER_BALL,
ITEM_LUXURY_BALL,
ITEM_PREMIER_BALL,
// Pokémon Items
// Only items from this point through to the end of the berries may be considered valid for use on a pokémon.
// Items outside this range will show the "It won't have any effect" message when attemping to use them this way (see ITEM_HAS_EFFECT).
ITEM_POTION,
ITEM_ANTIDOTE,
ITEM_BURN_HEAL,
ITEM_ICE_HEAL,
ITEM_AWAKENING,
ITEM_PARALYZE_HEAL,
ITEM_FULL_RESTORE,
ITEM_MAX_POTION,
ITEM_HYPER_POTION,
ITEM_SUPER_POTION,
ITEM_FULL_HEAL,
ITEM_REVIVE,
ITEM_MAX_REVIVE,
ITEM_FRESH_WATER,
ITEM_SODA_POP,
ITEM_LEMONADE,
ITEM_MOOMOO_MILK,
ITEM_ENERGY_POWDER,
ITEM_ENERGY_ROOT,
ITEM_HEAL_POWDER,
ITEM_REVIVAL_HERB,
ITEM_ETHER,
ITEM_MAX_ETHER,
ITEM_ELIXIR,
ITEM_MAX_ELIXIR,
ITEM_LAVA_COOKIE,
ITEM_BLUE_FLUTE,
ITEM_YELLOW_FLUTE,
ITEM_RED_FLUTE,
ITEM_BLACK_FLUTE,
ITEM_WHITE_FLUTE,
ITEM_BERRY_JUICE,
ITEM_SACRED_ASH,
ITEM_SHOAL_SALT,
ITEM_SHOAL_SHELL,
ITEM_RED_SHARD,
ITEM_BLUE_SHARD,
ITEM_YELLOW_SHARD,
ITEM_GREEN_SHARD,
ITEM_034,
ITEM_035,
ITEM_036,
ITEM_037,
ITEM_038,
ITEM_039,
ITEM_03A,
ITEM_03B,
ITEM_03C,
ITEM_03D,
ITEM_03E,
ITEM_HP_UP,
ITEM_PROTEIN,
ITEM_IRON,
ITEM_CARBOS,
ITEM_CALCIUM,
ITEM_RARE_CANDY,
ITEM_PP_UP,
ITEM_ZINC,
ITEM_PP_MAX,
ITEM_048,
ITEM_GUARD_SPEC,
ITEM_DIRE_HIT,
ITEM_X_ATTACK,
ITEM_X_DEFEND,
ITEM_X_SPEED,
ITEM_X_ACCURACY,
ITEM_X_SPECIAL,
ITEM_POKE_DOLL,
ITEM_FLUFFY_TAIL,
ITEM_052,
ITEM_SUPER_REPEL,
ITEM_MAX_REPEL,
ITEM_ESCAPE_ROPE,
ITEM_REPEL,
ITEM_057,
ITEM_058,
ITEM_059,
ITEM_05A,
ITEM_05B,
ITEM_05C,
ITEM_SUN_STONE,
ITEM_MOON_STONE,
ITEM_FIRE_STONE,
ITEM_THUNDER_STONE,
ITEM_WATER_STONE,
ITEM_LEAF_STONE,
ITEM_063,
ITEM_064,
ITEM_065,
ITEM_066,
// Unusable
ITEM_TINY_MUSHROOM,
ITEM_BIG_MUSHROOM,
ITEM_069,
ITEM_PEARL,
ITEM_BIG_PEARL,
ITEM_STARDUST,
ITEM_STAR_PIECE,
ITEM_NUGGET,
ITEM_HEART_SCALE,
ITEM_070,
ITEM_071,
ITEM_072,
ITEM_073,
ITEM_074,
ITEM_075,
ITEM_076,
ITEM_077,
ITEM_078,
// Mails
ITEM_ORANGE_MAIL,
ITEM_HARBOR_MAIL,
ITEM_GLITTER_MAIL,
ITEM_MECH_MAIL,
ITEM_WOOD_MAIL,
ITEM_WAVE_MAIL,
ITEM_BEAD_MAIL,
ITEM_SHADOW_MAIL,
ITEM_TROPIC_MAIL,
ITEM_DREAM_MAIL,
ITEM_FAB_MAIL,
ITEM_RETRO_MAIL,
// Berries
ITEM_CHERI_BERRY,
ITEM_CHESTO_BERRY,
ITEM_PECHA_BERRY,
ITEM_RAWST_BERRY,
ITEM_ASPEAR_BERRY,
ITEM_LEPPA_BERRY,
ITEM_ORAN_BERRY,
ITEM_PERSIM_BERRY,
ITEM_LUM_BERRY,
ITEM_SITRUS_BERRY,
ITEM_FIGY_BERRY,
ITEM_WIKI_BERRY,
ITEM_MAGO_BERRY,
ITEM_AGUAV_BERRY,
ITEM_IAPAPA_BERRY,
ITEM_RAZZ_BERRY,
ITEM_BLUK_BERRY,
ITEM_NANAB_BERRY,
ITEM_WEPEAR_BERRY,
ITEM_PINAP_BERRY,
ITEM_POMEG_BERRY,
ITEM_KELPSY_BERRY,
ITEM_QUALOT_BERRY,
ITEM_HONDEW_BERRY,
ITEM_GREPA_BERRY,
ITEM_TAMATO_BERRY,
ITEM_CORNN_BERRY,
ITEM_MAGOST_BERRY,
ITEM_RABUTA_BERRY,
ITEM_NOMEL_BERRY,
ITEM_SPELON_BERRY,
ITEM_PAMTRE_BERRY,
ITEM_WATMEL_BERRY,
ITEM_DURIN_BERRY,
ITEM_BELUE_BERRY,
ITEM_LIECHI_BERRY,
ITEM_GANLON_BERRY,
ITEM_SALAC_BERRY,
ITEM_PETAYA_BERRY,
ITEM_APICOT_BERRY,
ITEM_LANSAT_BERRY,
ITEM_STARF_BERRY,
ITEM_ENIGMA_BERRY,
ITEM_UNUSED_BERRY_1,
ITEM_UNUSED_BERRY_2,
ITEM_UNUSED_BERRY_3,
// Battle Held items
ITEM_BRIGHT_POWDER,
ITEM_WHITE_HERB,
ITEM_MACHO_BRACE,
ITEM_EXP_SHARE,
ITEM_QUICK_CLAW,
ITEM_SOOTHE_BELL,
ITEM_MENTAL_HERB,
ITEM_CHOICE_BAND,
ITEM_KINGS_ROCK,
ITEM_SILVER_POWDER,
ITEM_AMULET_COIN,
ITEM_CLEANSE_TAG,
ITEM_SOUL_DEW,
ITEM_DEEP_SEA_TOOTH,
ITEM_DEEP_SEA_SCALE,
ITEM_SMOKE_BALL,
ITEM_EVERSTONE,
ITEM_FOCUS_BAND,
ITEM_LUCKY_EGG,
ITEM_SCOPE_LENS,
ITEM_METAL_COAT,
ITEM_LEFTOVERS,
ITEM_DRAGON_SCALE,
ITEM_LIGHT_BALL,
ITEM_SOFT_SAND,
ITEM_HARD_STONE,
ITEM_MIRACLE_SEED,
ITEM_BLACK_GLASSES,
ITEM_BLACK_BELT,
ITEM_MAGNET,
ITEM_MYSTIC_WATER,
ITEM_SHARP_BEAK,
ITEM_POISON_BARB,
ITEM_NEVER_MELT_ICE,
ITEM_SPELL_TAG,
ITEM_TWISTED_SPOON,
ITEM_CHARCOAL,
ITEM_DRAGON_FANG,
ITEM_SILK_SCARF,
ITEM_UP_GRADE,
ITEM_SHELL_BELL,
ITEM_SEA_INCENSE,
ITEM_LAX_INCENSE,
ITEM_LUCKY_PUNCH,
ITEM_METAL_POWDER,
ITEM_THICK_CLUB,
ITEM_STICK,
ITEM_0E2,
ITEM_0E3,
ITEM_0E4,
ITEM_0E5,
ITEM_0E6,
ITEM_0E7,
ITEM_0E8,
ITEM_0E9,
ITEM_0EA,
ITEM_0EB,
ITEM_0EC,
ITEM_0ED,
ITEM_0EE,
ITEM_0EF,
ITEM_0F0,
ITEM_0F1,
ITEM_0F2,
ITEM_0F3,
ITEM_0F4,
ITEM_0F5,
ITEM_0F6,
ITEM_0F7,
ITEM_0F8,
ITEM_0F9,
ITEM_0FA,
ITEM_0FB,
ITEM_0FC,
ITEM_0FD,
// Contest held items
ITEM_RED_SCARF,
ITEM_BLUE_SCARF,
ITEM_PINK_SCARF,
ITEM_GREEN_SCARF,
ITEM_YELLOW_SCARF,
// Key Items
ITEM_MACH_BIKE,
ITEM_COIN_CASE,
ITEM_ITEMFINDER,
ITEM_OLD_ROD,
ITEM_GOOD_ROD,
ITEM_SUPER_ROD,
ITEM_SS_TICKET,
ITEM_CONTEST_PASS,
ITEM_10B,
ITEM_WAILMER_PAIL,
ITEM_DEVON_GOODS,
ITEM_SOOT_SACK,
ITEM_BASEMENT_KEY,
ITEM_ACRO_BIKE,
ITEM_POKEBLOCK_CASE,
ITEM_LETTER,
ITEM_EON_TICKET,
ITEM_RED_ORB,
ITEM_BLUE_ORB,
ITEM_SCANNER,
ITEM_GO_GOGGLES,
ITEM_METEORITE,
ITEM_ROOM_1_KEY,
ITEM_ROOM_2_KEY,
ITEM_ROOM_4_KEY,
ITEM_ROOM_6_KEY,
ITEM_STORAGE_KEY,
ITEM_ROOT_FOSSIL,
ITEM_CLAW_FOSSIL,
ITEM_DEVON_SCOPE,
// TMs/HMs
ITEM_TM01,
ITEM_TM02,
ITEM_TM03,
ITEM_TM04,
ITEM_TM05,
ITEM_TM06,
ITEM_TM07,
ITEM_TM08,
ITEM_TM09,
ITEM_TM10,
ITEM_TM11,
ITEM_TM12,
ITEM_TM13,
ITEM_TM14,
ITEM_TM15,
ITEM_TM16,
ITEM_TM17,
ITEM_TM18,
ITEM_TM19,
ITEM_TM20,
ITEM_TM21,
ITEM_TM22,
ITEM_TM23,
ITEM_TM24,
ITEM_TM25,
ITEM_TM26,
ITEM_TM27,
ITEM_TM28,
ITEM_TM29,
ITEM_TM30,
ITEM_TM31,
ITEM_TM32,
ITEM_TM33,
ITEM_TM34,
ITEM_TM35,
ITEM_TM36,
ITEM_TM37,
ITEM_TM38,
ITEM_TM39,
ITEM_TM40,
ITEM_TM41,
ITEM_TM42,
ITEM_TM43,
ITEM_TM44,
ITEM_TM45,
ITEM_TM46,
ITEM_TM47,
ITEM_TM48,
ITEM_TM49,
ITEM_TM50,
ITEM_HM01,
ITEM_HM02,
ITEM_HM03,
ITEM_HM04,
ITEM_HM05,
ITEM_HM06,
ITEM_HM07,
ITEM_HM08,
// Unknown
ITEM_15B,
ITEM_15C,
// FireRed/LeafGreen
ITEM_OAKS_PARCEL,
ITEM_POKE_FLUTE,
ITEM_SECRET_KEY,
ITEM_BIKE_VOUCHER,
ITEM_GOLD_TEETH,
ITEM_OLD_AMBER,
ITEM_CARD_KEY,
ITEM_LIFT_KEY,
ITEM_HELIX_FOSSIL,
ITEM_DOME_FOSSIL,
ITEM_SILPH_SCOPE,
ITEM_BICYCLE,
ITEM_TOWN_MAP,
ITEM_VS_SEEKER,
ITEM_FAME_CHECKER,
ITEM_TM_CASE,
ITEM_BERRY_POUCH,
ITEM_TEACHY_TV,
ITEM_TRI_PASS,
ITEM_RAINBOW_PASS,
ITEM_TEA,
ITEM_MYSTIC_TICKET,
ITEM_AURORA_TICKET,
ITEM_POWDER_JAR,
ITEM_RUBY,
ITEM_SAPPHIRE,
// Emerald
ITEM_MAGMA_EMBLEM,
ITEM_OLD_SEA_MAP,
ITEMS_COUNT
};
// A special item id associated with "Cancel"/"Exit" etc. in a list of items or decorations
// Its icon is defined at ITEMS_COUNT as the "return to field" arrow
#define ITEM_LIST_END 0xFFFF
#define FIRST_BALL ITEM_MASTER_BALL
#define LAST_BALL ITEM_PREMIER_BALL
#define FIRST_MAIL_INDEX ITEM_ORANGE_MAIL
#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY
#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY
#define MAX_BERRY_INDEX ITEM_UNUSED_BERRY_3
// Range of berries given out by various NPCS
#define FIRST_BERRY_MASTER_BERRY ITEM_POMEG_BERRY
#define LAST_BERRY_MASTER_BERRY ITEM_NOMEL_BERRY
#define FIRST_BERRY_MASTER_WIFE_BERRY ITEM_CHERI_BERRY
#define LAST_BERRY_MASTER_WIFE_BERRY ITEM_SITRUS_BERRY
#define FIRST_KIRI_BERRY ITEM_POMEG_BERRY
#define LAST_KIRI_BERRY ITEM_NOMEL_BERRY
#define FIRST_ROUTE_114_MAN_BERRY ITEM_RAZZ_BERRY
#define LAST_ROUTE_114_MAN_BERRY ITEM_PINAP_BERRY
#define NUM_BERRY_MASTER_BERRIES (LAST_BERRY_MASTER_BERRY - FIRST_BERRY_MASTER_BERRY + 1)
#define NUM_BERRY_MASTER_BERRIES_SKIPPED (FIRST_BERRY_MASTER_BERRY - FIRST_BERRY_INDEX)
#define NUM_BERRY_MASTER_WIFE_BERRIES (LAST_BERRY_MASTER_WIFE_BERRY - FIRST_BERRY_MASTER_WIFE_BERRY + 1)
#define NUM_KIRI_BERRIES (LAST_KIRI_BERRY - FIRST_KIRI_BERRY + 1)
#define NUM_KIRI_BERRIES_SKIPPED (FIRST_KIRI_BERRY - FIRST_BERRY_INDEX)
#define NUM_ROUTE_114_MAN_BERRIES (LAST_ROUTE_114_MAN_BERRY - FIRST_ROUTE_114_MAN_BERRY + 1)
#define NUM_ROUTE_114_MAN_BERRIES_SKIPPED (FIRST_ROUTE_114_MAN_BERRY - FIRST_BERRY_INDEX)
#define ITEM_TO_BERRY(itemId) (((itemId) - FIRST_BERRY_INDEX) + 1)
#define ITEM_TO_MAIL(itemId) ((itemId) - FIRST_MAIL_INDEX)
#define MAIL_NONE 0xFF
#define NUM_TECHNICAL_MACHINES 50
#define NUM_HIDDEN_MACHINES 8
#define MAX_BAG_ITEM_CAPACITY 99
#define MAX_PC_ITEM_CAPACITY 999
#define MAX_BERRY_CAPACITY 999
#define BAG_ITEM_CAPACITY_DIGITS 2
#define BERRY_CAPACITY_DIGITS 3
#define MAX_ITEM_DIGITS BERRY_CAPACITY_DIGITS
// Secondary IDs for rods
enum {
OLD_ROD,
GOOD_ROD,
SUPER_ROD,
};
// Secondary IDs for bikes
enum {
MACH_BIKE,
ACRO_BIKE,
};
// Item type IDs (used to determine the exit callback)
enum {
ITEM_USE_MAIL,
ITEM_USE_PARTY_MENU,
ITEM_USE_FIELD,
ITEM_USE_PBLOCK_CASE,
ITEM_USE_BAG_MENU, // No exit callback, stays in bag menu
};
// Item battle usage IDs (only checked to see if nonzero)
enum {
ITEM_B_USE_NONE,
ITEM_B_USE_MEDICINE,
ITEM_B_USE_OTHER,
};
// Check if the item is one that can be used on a Pokémon.
#define ITEM_HAS_EFFECT(item) ((item) >= ITEM_POTION && (item) <= MAX_BERRY_INDEX)
#endif // GUARD_CONSTANTS_ITEMS_H