diff options
Diffstat (limited to 'include')
237 files changed, 61130 insertions, 6723 deletions
diff --git a/include/abilities.h b/include/abilities.h deleted file mode 100644 index 4c47025f8..000000000 --- a/include/abilities.h +++ /dev/null @@ -1,81 +0,0 @@ -enum -{ - ABILITY_NONE, - ABILITY_STENCH, - ABILITY_DRIZZLE, - ABILITY_SPEED_BOOST, - ABILITY_BATTLE_ARMOR, - ABILITY_STURDY, - ABILITY_DAMP, - ABILITY_LIMBER, - ABILITY_SAND_VEIL, - ABILITY_STATIC, - ABILITY_VOLT_ABSORB, - ABILITY_WATER_ABSORB, - ABILITY_OBLIVIOUS, - ABILITY_CLOUD_NINE, - ABILITY_COMPOUND_EYES, - ABILITY_INSOMNIA, - ABILITY_COLOR_CHANGE, - ABILITY_IMMUNITY, - ABILITY_FLASH_FIRE, - ABILITY_SHIELD_DUST, - ABILITY_OWN_TEMPO, - ABILITY_SUCTION_CUPS, - ABILITY_INTIMIDATE, - ABILITY_SHADOW_TAG, - ABILITY_ROUGH_SKIN, - ABILITY_WONDER_GUARD, - ABILITY_LEVITATE, - ABILITY_EFFECT_SPORE, - ABILITY_SYNCHRONIZE, - ABILITY_CLEAR_BODY, - ABILITY_NATURAL_CURE, - ABILITY_LIGHTNING_ROD, - ABILITY_SERENE_GRACE, - ABILITY_SWIFT_SWIM, - ABILITY_CHLOROPHYLL, - ABILITY_ILLUMINATE, - ABILITY_TRACE, - ABILITY_HUGE_POWER, - ABILITY_POISON_POINT, - ABILITY_INNER_FOCUS, - ABILITY_MAGMA_ARMOR, - ABILITY_WATER_VEIL, - ABILITY_MAGNET_PULL, - ABILITY_SOUNDPROOF, - ABILITY_RAIN_DISH, - ABILITY_SAND_STREAM, - ABILITY_PRESSURE, - ABILITY_THICK_FAT, - ABILITY_EARLY_BIRD, - ABILITY_FLAME_BODY, - ABILITY_RUN_AWAY, - ABILITY_KEEN_EYE, - ABILITY_HYPER_CUTTER, - ABILITY_PICKUP, - ABILITY_TRUANT, - ABILITY_HUSTLE, - ABILITY_CUTE_CHARM, - ABILITY_PLUS, - ABILITY_MINUS, - ABILITY_FORECAST, - ABILITY_STICKY_HOLD, - ABILITY_SHED_SKIN, - ABILITY_GUTS, - ABILITY_MARVEL_SCALE, - ABILITY_LIQUID_OOZE, - ABILITY_OVERGROW, - ABILITY_BLAZE, - ABILITY_TORRENT, - ABILITY_SWARM, - ABILITY_ROCK_HEAD, - ABILITY_DROUGHT, - ABILITY_ARENA_TRAP, - ABILITY_VITAL_SPIRIT, - ABILITY_WHITE_SMOKE, - ABILITY_PURE_POWER, - ABILITY_SHELL_ARMOR, - ABILITY_CACOPHONY, - ABILITY_AIR_LOCK -};
\ No newline at end of file diff --git a/include/agb_flash.h b/include/agb_flash.h new file mode 100644 index 000000000..27e45e8fa --- /dev/null +++ b/include/agb_flash.h @@ -0,0 +1,12 @@ +#ifndef GUARD_AGB_FLASH_H +#define GUARD_AGB_FLASH_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void)); + +#endif //GUARD_AGB_FLASH_H diff --git a/include/bard_music.h b/include/bard_music.h index 7d9ca633e..9d3d0ad22 100644 --- a/include/bard_music.h +++ b/include/bard_music.h @@ -9,7 +9,7 @@ struct BardSound /*0x00*/ u8 var00; /*0x01*/ s8 var01; /*0x02*/ u16 var02; - /*0x04*/ u16 volume; + /*0x04*/ s16 volume; /*0x06*/ u16 var06; }; @@ -39,5 +39,7 @@ struct BardSong // Exported ROM declarations extern const u16 gUnknown_085F5490; +const struct BardSound *GetWordSounds(u16 word); +void GetWordPhonemes(struct BardSong *song, u16 word); #endif //GUARD_BARD_MUSIC_H diff --git a/include/battle.h b/include/battle.h index 0939c92b6..fae21908b 100644 --- a/include/battle.h +++ b/include/battle.h @@ -2,235 +2,51 @@ #define GUARD_BATTLE_H // should they be included here or included individually by every file? +#include "constants/battle.h" +#include "battle_main.h" +#include "battle_message.h" #include "battle_util.h" #include "battle_script_commands.h" -#include "battle_2.h" #include "battle_ai_switch_items.h" #include "battle_gfx_sfx_util.h" #include "battle_util2.h" - -/* - Banks are a name given to what could be called a 'battlerId' or 'monControllerId'. - Each bank has a value consisting of two bits. - 0x1 bit is responsible for the side, 0 = player's side, 1 = opponent's side. - 0x2 bit is responsible for the id of sent out pokemon. 0 means it's the first sent out pokemon, 1 it's the second one. (Triple battle didn't exist at the time yet.) -*/ - -#define BATTLE_BANKS_COUNT 4 - -#define IDENTITY_PLAYER_MON1 0 -#define IDENTITY_OPPONENT_MON1 1 -#define IDENTITY_PLAYER_MON2 2 -#define IDENTITY_OPPONENT_MON2 3 - -#define SIDE_PLAYER 0x0 -#define SIDE_OPPONENT 0x1 - -#define BIT_SIDE 0x1 -#define BIT_MON 0x2 - -#define GET_BANK_IDENTITY(bank)((gBanksByIdentity[bank])) -#define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & BIT_SIDE)) -#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE)) - -#define BATTLE_TYPE_DOUBLE 0x0001 -#define BATTLE_TYPE_LINK 0x0002 -#define BATTLE_TYPE_WILD 0x0004 -#define BATTLE_TYPE_TRAINER 0x0008 -#define BATTLE_TYPE_FIRST_BATTLE 0x0010 -#define BATTLE_TYPE_20 0x0020 -#define BATTLE_TYPE_MULTI 0x0040 -#define BATTLE_TYPE_SAFARI 0x0080 -#define BATTLE_TYPE_BATTLE_TOWER 0x0100 -#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200 -#define BATTLE_TYPE_ROAMER 0x0400 -#define BATTLE_TYPE_EREADER_TRAINER 0x0800 -#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 -#define BATTLE_TYPE_LEGENDARY 0x2000 -#define BATTLE_TYPE_REGI 0x4000 -#define BATTLE_TYPE_TWO_OPPONENTS 0x8000 -#define BATTLE_TYPE_DOME 0x10000 -#define BATTLE_TYPE_PALACE 0x20000 -#define BATTLE_TYPE_ARENA 0x40000 -#define BATTLE_TYPE_FACTORY 0x80000 -#define BATTLE_TYPE_x100000 0x100000 -#define BATTLE_TYPE_PYRAMID 0x200000 -#define BATTLE_TYPE_INGAME_PARTNER 0x400000 -#define BATTLE_TYPE_x800000 0x800000 -#define BATTLE_TYPE_RECORDED 0x1000000 -#define BATTLE_TYPE_x2000000 0x2000000 -#define BATTLE_TYPE_x4000000 0x4000000 -#define BATTLE_TYPE_SECRET_BASE 0x8000000 -#define BATTLE_TYPE_GROUDON 0x10000000 -#define BATTLE_TYPE_KYORGE 0x20000000 -#define BATTLE_TYPE_RAYQUAZA 0x40000000 -#define BATTLE_TYPE_x80000000 0x80000000 - -#define TRAINER_OPPONENT_3FE 0x3FE -#define TRAINER_OPPONENT_C00 0xC00 -#define TRAINER_OPPONENT_800 0x800 -#define STEVEN_PARTNER_ID 0xC03 -#define SECRET_BASE_OPPONENT 0x400 - -#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID) -#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000) - -#define BATTLE_WON 0x1 -#define BATTLE_LOST 0x2 -#define BATTLE_DREW 0x3 -#define BATTLE_RAN 0x4 -#define BATTLE_PLAYER_TELEPORTED 0x5 -#define BATTLE_POKE_FLED 0x6 -#define BATTLE_CAUGHT 0x7 -#define BATTLE_SAFARI_OUT_OF_BALLS 0x8 -#define BATTLE_FORFEITED 0x9 -#define BATTLE_OPPONENT_TELEPORTED 0xA - -#define BATTLE_OUTCOME_BIT_x80 0x80 - -#define STATUS_SLEEP 0x7 -#define STATUS_POISON 0x8 -#define STATUS_BURN 0x10 -#define STATUS_FREEZE 0x20 -#define STATUS_PARALYSIS 0x40 -#define STATUS_TOXIC_POISON 0x80 -#define STATUS_TOXIC_COUNTER 0xF00 - -#define STATUS_PSN_ANY ((STATUS_POISON | STATUS_TOXIC_POISON)) -#define STATUS_ANY ((STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) - -#define STATUS2_CONFUSION 0x00000007 -#define STATUS2_FLINCHED 0x00000008 -#define STATUS2_UPROAR 0x00000070 -#define STATUS2_BIDE 0x00000300 // two bits 0x100, 0x200 -#define STATUS2_LOCK_CONFUSE 0x00000C00 -#define STATUS2_MULTIPLETURNS 0x00001000 -#define STATUS2_WRAPPED 0x0000E000 -#define STATUS2_INFATUATION 0x000F0000 // 4 bits, one for every bank -#define STATUS2_INFATUATED_WITH(bank)((gBitTable[bank] << 16)) -#define STATUS2_FOCUS_ENERGY 0x00100000 -#define STATUS2_TRANSFORMED 0x00200000 -#define STATUS2_RECHARGE 0x00400000 -#define STATUS2_RAGE 0x00800000 -#define STATUS2_SUBSTITUTE 0x01000000 -#define STATUS2_DESTINY_BOND 0x02000000 -#define STATUS2_ESCAPE_PREVENTION 0x04000000 -#define STATUS2_NIGHTMARE 0x08000000 -#define STATUS2_CURSED 0x10000000 -#define STATUS2_FORESIGHT 0x20000000 -#define STATUS2_DEFENSE_CURL 0x40000000 -#define STATUS2_TORMENT 0x80000000 - -#define STATUS3_LEECHSEED_BANK 0x3 -#define STATUS3_LEECHSEED 0x4 -#define STATUS3_ALWAYS_HITS 0x18 // two bits -#define STATUS3_PERISH_SONG 0x20 -#define STATUS3_ON_AIR 0x40 -#define STATUS3_UNDERGROUND 0x80 -#define STATUS3_MINIMIZED 0x100 -#define STATUS3_ROOTED 0x400 -#define STATUS3_CHARGED_UP 0x200 -#define STATUS3_YAWN 0x1800 // two bits -#define STATUS3_IMPRISONED_OTHERS 0x2000 -#define STATUS3_GRUDGE 0x4000 -#define STATUS3_CANT_SCORE_A_CRIT 0x8000 -#define STATUS3_MUDSPORT 0x10000 -#define STATUS3_WATERSPORT 0x20000 -#define STATUS3_UNDERWATER 0x40000 -#define STATUS3_INTIMIDATE_POKES 0x80000 -#define STATUS3_TRACE 0x100000 - -#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)) - -#define HITMARKER_x10 0x00000010 -#define HITMARKER_x20 0x00000020 -#define HITMARKER_DESTINYBOND 0x00000040 -#define HITMARKER_NO_ANIMATIONS 0x00000080 -#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100 -#define HITMARKER_NO_ATTACKSTRING 0x00000200 -#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400 -#define HITMARKER_NO_PPDEDUCT 0x00000800 -#define HITMARKER_PURSUIT_TRAP 0x00001000 -#define HITMARKER_IGNORE_SAFEGUARD 0x00002000 -#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000 -#define HITMARKER_RUN 0x00008000 -#define HITMARKER_IGNORE_ON_AIR 0x00010000 -#define HITMARKER_IGNORE_UNDERGROUND 0x00020000 -#define HITMARKER_IGNORE_UNDERWATER 0x00040000 -#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000 -#define HITMARKER_x100000 0x00100000 -#define HITMARKER_x200000 0x00200000 -#define HITMARKER_x400000 0x00400000 -#define HITMARKER_x800000 0x00800000 -#define HITMARKER_GRUDGE 0x01000000 -#define HITMARKER_OBEYS 0x02000000 -#define HITMARKER_x4000000 0x04000000 -#define HITMARKER_x8000000 0x08000000 -#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C)) -#define HITMARKER_UNK(bank) ((0x10000000 << bank)) - -#define SIDE_STATUS_REFLECT (1 << 0) -#define SIDE_STATUS_LIGHTSCREEN (1 << 1) -#define SIDE_STATUS_X4 (1 << 2) -#define SIDE_STATUS_SPIKES (1 << 4) -#define SIDE_STATUS_SAFEGUARD (1 << 5) -#define SIDE_STATUS_FUTUREATTACK (1 << 6) -#define SIDE_STATUS_MIST (1 << 8) -#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9) - -#define ACTION_USE_MOVE 0 -#define ACTION_USE_ITEM 1 -#define ACTION_SWITCH 2 -#define ACTION_RUN 3 -#define ACTION_WATCHES_CAREFULLY 4 -#define ACTION_SAFARI_ZONE_BALL 5 -#define ACTION_POKEBLOCK_CASE 6 -#define ACTION_GO_NEAR 7 -#define ACTION_SAFARI_ZONE_RUN 8 -#define ACTION_9 9 -#define ACTION_RUN_BATTLESCRIPT 10 // when executing an action -#define ACTION_CANCEL_PARTNER 12 // when choosing an action -#define ACTION_FINISHED 12 // when executing an action -#define ACTION_NOTHING_FAINTED 13 // when choosing an action -#define ACTION_INIT_VALUE 0xFF - -#define MOVESTATUS_MISSED (1 << 0) -#define MOVESTATUS_SUPEREFFECTIVE (1 << 1) -#define MOVESTATUS_NOTVERYEFFECTIVE (1 << 2) -#define MOVESTATUS_NOTAFFECTED (1 << 3) -#define MOVESTATUS_ONEHITKO (1 << 4) -#define MOVESTATUS_FAILED (1 << 5) -#define MOVESTATUS_ENDURED (1 << 6) -#define MOVESTATUS_HUNGON (1 << 7) - -#define MOVESTATUS_NOEFFECT ((MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)) +#include "battle_bg.h" + +#define GET_BATTLER_POSITION(battler) (gBattlerPositions[battler]) +#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE) +#define GET_BATTLER_SIDE2(battler) (GET_BATTLER_POSITION(battler) & BIT_SIDE) + +// Battle Actions +// These determine what each battler will do in a turn +#define B_ACTION_USE_MOVE 0 +#define B_ACTION_USE_ITEM 1 +#define B_ACTION_SWITCH 2 +#define B_ACTION_RUN 3 +#define B_ACTION_SAFARI_WATCH_CAREFULLY 4 +#define B_ACTION_SAFARI_BALL 5 +#define B_ACTION_SAFARI_POKEBLOCK 6 +#define B_ACTION_SAFARI_GO_NEAR 7 +#define B_ACTION_SAFARI_RUN 8 +// The exact purposes of these are unclear +#define B_ACTION_WALLY_THROW 9 +#define B_ACTION_EXEC_SCRIPT 10 // when executing an action +#define B_ACTION_CANCEL_PARTNER 12 // when choosing an action +#define B_ACTION_FINISHED 12 // when executing an action +#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action +#define B_ACTION_NONE 0xFF #define MAX_TRAINER_ITEMS 4 #define MAX_MON_MOVES 4 -#define WEATHER_RAIN_TEMPORARY (1 << 0) -#define WEATHER_RAIN_DOWNPOUR (1 << 1) -#define WEATHER_RAIN_PERMANENT (1 << 2) -#define WEATHER_RAIN_ANY ((WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT)) -#define WEATHER_SANDSTORM_TEMPORARY (1 << 3) -#define WEATHER_SANDSTORM_PERMANENT (1 << 4) -#define WEATHER_SANDSTORM_ANY ((WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT)) -#define WEATHER_SUN_TEMPORARY (1 << 5) -#define WEATHER_SUN_PERMANENT (1 << 6) -#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)) -#define WEATHER_HAIL (1 << 7) -#define WEATHER_HAIL_ANY ((WEATHER_HAIL)) -#define WEATHER_ANY ((WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY)) - #define BATTLE_TERRAIN_GRASS 0 #define BATTLE_TERRAIN_LONG_GRASS 1 #define BATTLE_TERRAIN_SAND 2 #define BATTLE_TERRAIN_UNDERWATER 3 #define BATTLE_TERRAIN_WATER 4 #define BATTLE_TERRAIN_POND 5 -#define BATTLE_TERRAIN_ROCK 6 +#define BATTLE_TERRAIN_MOUNTAIN 6 #define BATTLE_TERRAIN_CAVE 7 -#define BATTLE_TERRAIN_INSIDE 8 +#define BATTLE_TERRAIN_BUILDING 8 #define BATTLE_TERRAIN_PLAIN 9 // array entries for battle communication @@ -245,48 +61,16 @@ #define MSG_DISPLAY 0x7 #define BATTLE_COMMUNICATION_ENTRIES_COUNT 0x8 -#define MOVE_TARGET_SELECTED 0x0 -#define MOVE_TARGET_DEPENDS 0x1 -#define MOVE_TARGET_USER 0x2 -#define MOVE_TARGET_RANDOM 0x4 -#define MOVE_TARGET_x10 0x10 -#define MOVE_TARGET_BOTH 0x8 -#define MOVE_TARGET_FOES_AND_ALLY 0x20 -#define MOVE_TARGET_OPPONENTS_FIELD 0x40 - -// defines for the u8 array gTypeEffectiveness -#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0])) -#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1])) -#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2])) - -// defines for the gTypeEffectiveness multipliers -#define TYPE_MUL_NO_EFFECT 0 -#define TYPE_MUL_NOT_EFFECTIVE 5 -#define TYPE_MUL_NORMAL 10 -#define TYPE_MUL_SUPER_EFFECTIVE 20 - -// special type table Ids -#define TYPE_FORESIGHT 0xFE -#define TYPE_ENDTABLE 0xFF - -#define BS_GET_TARGET 0 -#define BS_GET_ATTACKER 1 -#define BS_GET_EFFECT_BANK 2 -#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update -#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability -#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability -#define BS_GET_SCRIPTING_BANK 10 -#define BS_GET_OPPONENT1 12 -#define BS_GET_PLAYER2 13 -#define BS_GET_OPPONENT2 14 - -// for battle script commands -#define CMP_EQUAL 0x0 -#define CMP_NOT_EQUAL 0x1 -#define CMP_GREATER_THAN 0x2 -#define CMP_LESS_THAN 0x3 -#define CMP_COMMON_BITS 0x4 -#define CMP_NO_COMMON_BITS 0x5 +#define MOVE_TARGET_SELECTED 0x0 +#define MOVE_TARGET_DEPENDS 0x1 +#define MOVE_TARGET_USER_OR_SELECTED 0x2 +#define MOVE_TARGET_RANDOM 0x4 +#define MOVE_TARGET_BOTH 0x8 +#define MOVE_TARGET_USER 0x10 +#define MOVE_TARGET_FOES_AND_ALLY 0x20 +#define MOVE_TARGET_OPPONENTS_FIELD 0x40 + +#define BATTLE_BUFFER_LINK_SIZE 0x1000 struct TrainerMonNoItemDefaultMoves { @@ -295,9 +79,6 @@ struct TrainerMonNoItemDefaultMoves u16 species; }; -u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); -u8 GetBankSide(u8 bank); - struct TrainerMonItemDefaultMoves { u16 iv; @@ -325,10 +106,10 @@ struct TrainerMonItemCustomMoves union TrainerMonPtr { - struct TrainerMonNoItemDefaultMoves* NoItemDefaultMoves; - struct TrainerMonNoItemCustomMoves* NoItemCustomMoves; - struct TrainerMonItemDefaultMoves* ItemDefaultMoves; - struct TrainerMonItemCustomMoves* ItemCustomMoves; + const struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves; + const struct TrainerMonNoItemCustomMoves *NoItemCustomMoves; + const struct TrainerMonItemDefaultMoves *ItemDefaultMoves; + const struct TrainerMonItemCustomMoves *ItemCustomMoves; }; struct Trainer @@ -345,9 +126,6 @@ struct Trainer /*0x24*/ union TrainerMonPtr party; }; -#define PARTY_FLAG_CUSTOM_MOVES 0x1 -#define PARTY_FLAG_HAS_ITEM 0x2 - extern const struct Trainer gTrainers[]; #define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) @@ -367,41 +145,39 @@ struct DisableStruct /*0x08*/ u8 protectUses; /*0x09*/ u8 stockpileCounter; /*0x0A*/ u8 substituteHP; - /*0x0B*/ u8 disableTimer1 : 4; - /*0x0B*/ u8 disableTimer2 : 4; + /*0x0B*/ u8 disableTimer1:4; + /*0x0B*/ u8 disableTimer2:4; /*0x0C*/ u8 encoredMovePos; /*0x0D*/ u8 unkD; - /*0x0E*/ u8 encoreTimer1 : 4; - /*0x0E*/ u8 encoreTimer2 : 4; - /*0x0F*/ u8 perishSongTimer1 : 4; - /*0x0F*/ u8 perishSongTimer2 : 4; + /*0x0E*/ u8 encoreTimer1:4; + /*0x0E*/ u8 encoreTimer2:4; + /*0x0F*/ u8 perishSongTimer1:4; + /*0x0F*/ u8 perishSongTimer2:4; /*0x10*/ u8 furyCutterCounter; - /*0x11*/ u8 rolloutCounter1 : 4; - /*0x11*/ u8 rolloutCounter2 : 4; - /*0x12*/ u8 chargeTimer1 : 4; - /*0x12*/ u8 chargeTimer2 : 4; + /*0x11*/ u8 rolloutCounter1:4; + /*0x11*/ u8 rolloutCounter2:4; + /*0x12*/ u8 chargeTimer1:4; + /*0x12*/ u8 chargeTimer2:4; /*0x13*/ u8 tauntTimer1:4; /*0x13*/ u8 tauntTimer2:4; - /*0x14*/ u8 bankPreventingEscape; - /*0x15*/ u8 bankWithSureHit; + /*0x14*/ u8 battlerPreventingEscape; + /*0x15*/ u8 battlerWithSureHit; /*0x16*/ u8 isFirstTurn; /*0x17*/ u8 unk17; - /*0x18*/ u8 truantCounter : 1; - /*0x18*/ u8 truantUnknownBit : 1; - /*0x18*/ u8 unk18_a_2 : 2; - /*0x18*/ u8 unk18_b : 4; + /*0x18*/ u8 truantCounter:1; + /*0x18*/ u8 truantUnknownBit:1; + /*0x18*/ u8 unk18_a_2:2; + /*0x18*/ u8 unk18_b:4; /*0x19*/ u8 rechargeCounter; /*0x1A*/ u8 unk1A[2]; }; -extern struct DisableStruct gDisableStructs[BATTLE_BANKS_COUNT]; - struct ProtectStruct { /* field_0 */ u32 protected:1; u32 endured:1; - u32 onlyStruggle:1; + u32 noValidMoves:1; u32 helpingHand:1; u32 bounceMove:1; u32 stealMove:1; @@ -420,76 +196,68 @@ struct ProtectStruct u32 flag2Unknown:1; // 0x2 u32 flinchImmobility:1; // 0x4 u32 notFirstStrike:1; // 0x8 - u32 flag_x10 : 1; // 0x10 - u32 flag_x20 : 1; // 0x20 - u32 flag_x40 : 1; // 0x40 - u32 flag_x80 : 1; // 0x80 + u32 flag_x10:1; // 0x10 + u32 flag_x20:1; // 0x20 + u32 flag_x40:1; // 0x40 + u32 flag_x80:1; // 0x80 /* field_3 */ - u32 field3 : 8; + u32 field3:8; /* field_4 */ u32 physicalDmg; /* field_8 */ u32 specialDmg; - /* field_C */ u8 physicalBank; - /* field_D */ u8 specialBank; + /* field_C */ u8 physicalBattlerId; + /* field_D */ u8 specialBattlerId; /* field_E */ u16 fieldE; }; -extern struct ProtectStruct gProtectStructs[BATTLE_BANKS_COUNT]; - struct SpecialStatus { - u8 statLowered : 1; // 0x1 - u8 lightningRodRedirected : 1; // 0x2 - u8 restoredBankSprite: 1; // 0x4 - u8 intimidatedPoke : 1; // 0x8 - u8 traced : 1; // 0x10 - u8 flag20 : 1; - u8 flag40 : 1; - u8 focusBanded : 1; + u8 statLowered:1; // 0x1 + u8 lightningRodRedirected:1; // 0x2 + u8 restoredBattlerSprite: 1; // 0x4 + u8 intimidatedMon:1; // 0x8 + u8 traced:1; // 0x10 + u8 flag20:1; + u8 flag40:1; + u8 focusBanded:1; u8 field1[3]; - s32 moveturnLostHP; - s32 moveturnLostHP_physical; - s32 moveturnLostHP_special; - u8 moveturnPhysicalBank; - u8 moveturnSpecialBank; + s32 dmg; + s32 physicalDmg; + s32 specialDmg; + u8 physicalBattlerId; + u8 specialBattlerId; u8 field12; u8 field13; }; -extern struct SpecialStatus gSpecialStatuses[BATTLE_BANKS_COUNT]; - struct SideTimer { /*0x00*/ u8 reflectTimer; - /*0x01*/ u8 reflectBank; + /*0x01*/ u8 reflectBattlerId; /*0x02*/ u8 lightscreenTimer; - /*0x03*/ u8 lightscreenBank; + /*0x03*/ u8 lightscreenBattlerId; /*0x04*/ u8 mistTimer; - /*0x05*/ u8 mistBank; + /*0x05*/ u8 mistBattlerId; /*0x06*/ u8 safeguardTimer; - /*0x07*/ u8 safeguardBank; + /*0x07*/ u8 safeguardBattlerId; /*0x08*/ u8 followmeTimer; /*0x09*/ u8 followmeTarget; /*0x0A*/ u8 spikesAmount; /*0x0B*/ u8 fieldB; }; -extern struct SideTimer gSideTimers[]; - struct WishFutureKnock { - u8 futureSightCounter[BATTLE_BANKS_COUNT]; - u8 futureSightAttacker[BATTLE_BANKS_COUNT]; - s32 futureSightDmg[BATTLE_BANKS_COUNT]; - u16 futureSightMove[BATTLE_BANKS_COUNT]; - u8 wishCounter[BATTLE_BANKS_COUNT]; - u8 wishUserID[BATTLE_BANKS_COUNT]; + u8 futureSightCounter[MAX_BATTLERS_COUNT]; + u8 futureSightAttacker[MAX_BATTLERS_COUNT]; + s32 futureSightDmg[MAX_BATTLERS_COUNT]; + u16 futureSightMove[MAX_BATTLERS_COUNT]; + u8 wishCounter[MAX_BATTLERS_COUNT]; + u8 wishMonId[MAX_BATTLERS_COUNT]; u8 weatherDuration; u8 knockedOffPokes[2]; }; -extern struct WishFutureKnock gWishFutureKnock; - struct AI_ThinkingStruct { u8 aiState; @@ -506,16 +274,16 @@ struct AI_ThinkingStruct struct UsedMoves { - u16 moves[BATTLE_BANKS_COUNT]; - u16 unknown[BATTLE_BANKS_COUNT]; + u16 moves[MAX_BATTLERS_COUNT]; + u16 unknown[MAX_BATTLERS_COUNT]; }; struct BattleHistory { - struct UsedMoves usedMoves[BATTLE_BANKS_COUNT]; - u8 abilities[BATTLE_BANKS_COUNT]; - u8 itemEffects[BATTLE_BANKS_COUNT]; - u16 trainerItems[BATTLE_BANKS_COUNT]; + struct UsedMoves usedMoves[MAX_BATTLERS_COUNT]; + u8 abilities[MAX_BATTLERS_COUNT]; + u8 itemEffects[MAX_BATTLERS_COUNT]; + u16 trainerItems[MAX_BATTLERS_COUNT]; u8 itemsNo; }; @@ -553,12 +321,6 @@ struct BattleResources struct BattleScriptsStack *AI_ScriptsStack; }; -extern struct BattleResources* gBattleResources; - -#define BATTLESCRIPTS_STACK (gBattleResources->battleScriptsStack) -#define BATTLE_CALLBACKS_STACK (gBattleResources->battleCallbackStack) -#define BATTLE_LVLUP_STATS (gBattleResources->statsBeforeLvlUp) - struct BattleResults { u8 playerFaintCounter; // 0x0 @@ -569,34 +331,117 @@ struct BattleResults u8 unk5_0:1; // 0x5 u8 usedMasterBall:1; // 0x5 u8 caughtMonBall:4; // 0x5 - u8 unk5_6:1; // 0x5 + u8 shinyWildMon:1; // 0x5 u8 unk5_7:1; // 0x5 u16 playerMon1Species; // 0x6 - u8 playerMon1Name[11]; // 0x8 + u8 playerMon1Name[POKEMON_NAME_LENGTH + 1]; // 0x8 u8 battleTurnCounter; // 0x13 - u8 playerMon2Name[11]; // 0x14 - u8 field_1F; // 0x1F + u8 playerMon2Name[POKEMON_NAME_LENGTH + 1]; // 0x14 + u8 pokeblockThrows; // 0x1F u16 lastOpponentSpecies; // 0x20 u16 lastUsedMovePlayer; // 0x22 u16 lastUsedMoveOpponent; // 0x24 u16 playerMon2Species; // 0x26 u16 caughtMonSpecies; // 0x28 - u8 caughtMonNick[10]; // 0x2A - u8 filler34[2]; + u8 caughtMonNick[POKEMON_NAME_LENGTH + 1]; // 0x2A + u8 filler35[1]; // 0x35 u8 catchAttempts[11]; // 0x36 }; -extern struct BattleResults gBattleResults; +struct BattleTv_Side +{ + u32 spikesMonId:3; + u32 reflectMonId:3; + u32 lightScreenMonId:3; + u32 safeguardMonId:3; + u32 mistMonId:3; + u32 futureSightMonId:3; + u32 doomDesireMonId:3; + u32 perishSongMonId:3; + u32 wishMonId:3; + u32 grudgeMonId:3; + u32 usedMoveSlot:2; + u32 spikesMoveSlot:2; + u32 reflectMoveSlot:2; + u32 lightScreenMoveSlot:2; + u32 safeguardMoveSlot:2; + u32 mistMoveSlot:2; + u32 futureSightMoveSlot:2; + u32 doomDesireMoveSlot:2; + u32 perishSongMoveSlot:2; + u32 wishMoveSlot:2; + u32 grudgeMoveSlot:2; + u32 destinyBondMonId:3; + u32 destinyBondMoveSlot:2; + u32 faintCause:4; + u32 faintCauseMonId:3; + u32 explosion:1; + u32 explosionMoveSlot:2; + u32 explosionMonId:3; + u32 perishSong:1; +}; + +struct BattleTv_Position +{ + u32 curseMonId:3; + u32 leechSeedMonId:3; + u32 nightmareMonId:3; + u32 wrapMonId:3; + u32 attractMonId:3; + u32 confusionMonId:3; + u32 curseMoveSlot:2; + u32 leechSeedMoveSlot:2; + u32 nightmareMoveSlot:2; + u32 wrapMoveSlot:2; + u32 attractMoveSlot:2; + u32 confusionMoveSlot:2; + u32 waterSportMoveSlot:2; + u32 waterSportMonId:3; + u32 mudSportMonId:3; + u32 mudSportMoveSlot:2; + u32 ingrainMonId:3; + u32 ingrainMoveSlot:2; + u32 attackedByMonId:3; + u32 attackedByMoveSlot:2; +}; + +struct BattleTv_Mon +{ + u32 psnMonId:3; + u32 badPsnMonId:3; + u32 brnMonId:3; + u32 prlzMonId:3; + u32 slpMonId:3; + u32 frzMonId:3; + u32 psnMoveSlot:2; + u32 badPsnMoveSlot:2; + u32 brnMoveSlot:2; + u32 prlzMoveSlot:2; + u32 slpMoveSlot:2; + u32 frzMoveSlot:2; +}; + +struct BattleTv +{ + struct BattleTv_Mon mon[2][PARTY_SIZE]; // [side][partyId] + struct BattleTv_Position pos[2][2]; // [side][flank] + struct BattleTv_Side side[2]; // [side] +}; + +struct BattleTvMovePoints +{ + s16 points[2][PARTY_SIZE * 4]; +}; struct BattleStruct { u8 turnEffectsTracker; - u8 turnEffectsBank; + u8 turnEffectsBattlerId; u8 filler2; - u8 turncountersTracker; + u8 turnCountersTracker; u8 wrappedMove[8]; // ask gamefreak why they declared it that way u8 moveTarget[4]; - u8 expGetterId; + u8 expGetterMonId; u8 field_11; u8 wildVictorySong; u8 dynamicMoveType; @@ -610,33 +455,33 @@ struct BattleStruct u8 field_45; u8 field_46; u8 field_47; - u8 focusPunchBank; - u8 field_49; + u8 focusPunchBattlerId; + u8 battlerPreventingSwitchout; u8 moneyMultiplier; - u8 field_4B; + u8 savedTurnActionNumber; u8 switchInAbilitiesCounter; - u8 field_4D; - u8 field_4E; + u8 faintedActionsState; + u8 faintedActionsBattlerId; u8 field_4F; u16 expValue; u8 field_52; u8 sentInPokes; - bool8 selectionScriptFinished[BATTLE_BANKS_COUNT]; + bool8 selectionScriptFinished[MAX_BATTLERS_COUNT]; u8 field_58[4]; - u8 monToSwitchIntoId[BATTLE_BANKS_COUNT]; + u8 monToSwitchIntoId[MAX_BATTLERS_COUNT]; u8 field_60[4][3]; u8 runTries; u8 caughtMonNick[11]; u8 field_78; - u8 field_79; - u8 field_7A; - u8 field_7B; - u8 field_7C; + u8 safariGoNearCounter; + u8 safariPkblThrowCounter; + u8 safariEscapeFactor; + u8 safariCatchFactor; u8 field_7D; u8 field_7E; u8 formToChangeInto; - u8 chosenMovePositions[BATTLE_BANKS_COUNT]; - u8 stateIdAfterSelScript[BATTLE_BANKS_COUNT]; + u8 chosenMovePositions[MAX_BATTLERS_COUNT]; + u8 stateIdAfterSelScript[MAX_BATTLERS_COUNT]; u8 field_88; u8 field_89; u8 field_8A; @@ -644,7 +489,7 @@ struct BattleStruct u8 field_8C; u8 field_8D; u8 stringMoveType; - u8 expGetterBank; + u8 expGetterBattlerId; u8 field_90; u8 field_91; u8 field_92; @@ -664,53 +509,44 @@ struct BattleStruct u8 field_A7; u16 hpOnSwitchout[2]; u32 savedBattleTypeFlags; - u8 field_B0; + u8 abilityPreventingSwitchout; u8 hpScale; u8 synchronizeMoveEffect; - u8 field_B3; + bool8 anyMonHasTransformed; void (*savedCallback)(void); - u16 usedHeldItems[BATTLE_BANKS_COUNT]; + u16 usedHeldItems[MAX_BATTLERS_COUNT]; u8 chosenItem[4]; // why is this an u8? u8 AI_itemType[2]; u8 AI_itemFlags[2]; - u16 choicedMove[BATTLE_BANKS_COUNT]; - u16 changedItems[BATTLE_BANKS_COUNT]; - u8 intimidateBank; + u16 choicedMove[MAX_BATTLERS_COUNT]; + u16 changedItems[MAX_BATTLERS_COUNT]; + u8 intimidateBattler; u8 switchInItemsCounter; u8 field_DA; u8 turnSideTracker; u8 fillerDC[0xDF-0xDC]; u8 field_DF; u8 mirrorMoveArrays[32]; - u16 castformPalette[BATTLE_BANKS_COUNT][16]; + u16 castformPalette[MAX_BATTLERS_COUNT][16]; u8 field_180; u8 field_181; u8 field_182; u8 field_183; struct BattleEnigmaBerry battleEnigmaBerry; - u8 field_1A0; - u8 field_1A1; + u8 wishPerishSongState; + u8 wishPerishSongBattlerId; bool8 overworldWeatherDone; u8 atkCancellerTracker; - u8 field_1A4[96]; - u8 field_204[104]; - u8 field_26C[40]; - u8 AI_monToSwitchIntoId[BATTLE_BANKS_COUNT]; + struct BattleTvMovePoints tvMovePoints; + struct BattleTv tv; + u8 notSureWhatFieldLol[0x28]; + u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT]; u8 field_298[8]; u8 field_2A0; u8 field_2A1; u8 field_2A2; }; -extern struct BattleStruct* gBattleStruct; - -#define MEME_ACCESS_U8(structName, structPtr, arrayId, offsetField, value) \ -{ \ - u8* var2 = (u8*)((u32)(arrayId)); \ - var2 = (u32)(structPtr) + var2; \ - var2[offsetof(struct structName, offsetField)] = value; \ -} - #define GET_MOVE_TYPE(move, typeArg) \ { \ if (gBattleStruct->dynamicMoveType) \ @@ -719,124 +555,26 @@ extern struct BattleStruct* gBattleStruct; typeArg = gBattleMoves[move].type; \ } -#define MOVE_EFFECT_SLEEP 0x1 -#define MOVE_EFFECT_POISON 0x2 -#define MOVE_EFFECT_BURN 0x3 -#define MOVE_EFFECT_FREEZE 0x4 -#define MOVE_EFFECT_PARALYSIS 0x5 -#define MOVE_EFFECT_TOXIC 0x6 -#define MOVE_EFFECT_CONFUSION 0x7 -#define MOVE_EFFECT_FLINCH 0x8 -#define MOVE_EFFECT_TRI_ATTACK 0x9 -#define MOVE_EFFECT_UPROAR 0xA -#define MOVE_EFFECT_PAYDAY 0xB -#define MOVE_EFFECT_CHARGING 0xC -#define MOVE_EFFECT_WRAP 0xD -#define MOVE_EFFECT_RECOIL_25 0xE -#define MOVE_EFFECT_ATK_PLUS_1 0xF -#define MOVE_EFFECT_DEF_PLUS_1 0x10 -#define MOVE_EFFECT_SPD_PLUS_1 0x11 -#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12 -#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13 -#define MOVE_EFFECT_ACC_PLUS_1 0x14 -#define MOVE_EFFECT_EVS_PLUS_1 0x15 -#define MOVE_EFFECT_ATK_MINUS_1 0x16 -#define MOVE_EFFECT_DEF_MINUS_1 0x17 -#define MOVE_EFFECT_SPD_MINUS_1 0x18 -#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19 -#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A -#define MOVE_EFFECT_ACC_MINUS_1 0x1B -#define MOVE_EFFECT_EVS_MINUS_1 0x1C -#define MOVE_EFFECT_RECHARGE 0x1D -#define MOVE_EFFECT_RAGE 0x1E -#define MOVE_EFFECT_STEAL_ITEM 0x1F -#define MOVE_EFFECT_PREVENT_ESCAPE 0x20 -#define MOVE_EFFECT_NIGHTMARE 0x21 -#define MOVE_EFFECT_ALL_STATS_UP 0x22 -#define MOVE_EFFECT_RAPIDSPIN 0x23 -#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24 -#define MOVE_EFFECT_ATK_DEF_DOWN 0x25 -#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26 -#define MOVE_EFFECT_ATK_PLUS_2 0x27 -#define MOVE_EFFECT_DEF_PLUS_2 0x28 -#define MOVE_EFFECT_SPD_PLUS_2 0x29 -#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A -#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B -#define MOVE_EFFECT_ACC_PLUS_2 0x2C -#define MOVE_EFFECT_EVS_PLUS_2 0x2D -#define MOVE_EFFECT_ATK_MINUS_2 0x2E -#define MOVE_EFFECT_DEF_MINUS_2 0x2F -#define MOVE_EFFECT_SPD_MINUS_2 0x30 -#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31 -#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32 -#define MOVE_EFFECT_ACC_MINUS_2 0x33 -#define MOVE_EFFECT_EVS_MINUS_2 0x34 -#define MOVE_EFFECT_THRASH 0x35 -#define MOVE_EFFECT_KNOCK_OFF 0x36 -#define MOVE_EFFECT_NOTHING_37 0x37 -#define MOVE_EFFECT_NOTHING_38 0x38 -#define MOVE_EFFECT_NOTHING_39 0x39 -#define MOVE_EFFECT_NOTHING_3A 0x3A -#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B -#define MOVE_EFFECT_NOTHING_3C 0x3C -#define MOVE_EFFECT_NOTHING_3D 0x3D -#define MOVE_EFFECT_NOTHING_3E 0x3E -#define MOVE_EFFECT_NOTHING_3F 0x3F -#define MOVE_EFFECT_AFFECTS_USER 0x40 -#define MOVE_EFFECT_CERTAIN 0x80 - -// table ids for general animations -#define B_ANIM_CASTFORM_CHANGE 0x0 -#define B_ANIM_STATS_CHANGE 0x1 -#define B_ANIM_SUBSTITUTE_FADE 0x2 -#define B_ANIM_SUBSTITUTE_APPEAR 0x3 -#define B_ANIM_x4 0x4 -#define B_ANIM_ITEM_KNOCKOFF 0x5 -#define B_ANIM_TURN_TRAP 0x6 -#define B_ANIM_ITEM_EFFECT 0x7 -#define B_ANIM_SMOKEBALL_ESCAPE 0x8 -#define B_ANIM_HANGED_ON 0x9 -#define B_ANIM_RAIN_CONTINUES 0xA -#define B_ANIM_SUN_CONTINUES 0xB -#define B_ANIM_SANDSTORM_CONTINUES 0xC -#define B_ANIM_HAIL_CONTINUES 0xD -#define B_ANIM_LEECH_SEED_DRAIN 0xE -#define B_ANIM_MON_HIT 0xF -#define B_ANIM_ITEM_STEAL 0x10 -#define B_ANIM_SNATCH_MOVE 0x11 -#define B_ANIM_FUTURE_SIGHT_HIT 0x12 -#define B_ANIM_x13 0x13 -#define B_ANIM_x14 0x14 -#define B_ANIM_INGRAIN_HEAL 0x15 -#define B_ANIM_WISH_HEAL 0x16 - -// special animations table -#define B_ANIM_LVL_UP 0x0 -#define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1 -#define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2 -#define B_ANIM_BALL_THROW 0x3 -#define B_ANIM_SAFARI_BALL_THROW 0x4 -#define B_ANIM_SUBSTITUTE_TO_MON 0x5 -#define B_ANIM_MON_TO_SUBSTITUTE 0x6 - -// status animation table -#define B_ANIM_STATUS_PSN 0x0 -#define B_ANIM_STATUS_CONFUSION 0x1 -#define B_ANIM_STATUS_BRN 0x2 -#define B_ANIM_STATUS_INFATUATION 0x3 -#define B_ANIM_STATUS_SLP 0x4 -#define B_ANIM_STATUS_PRZ 0x5 -#define B_ANIM_STATUS_FRZ 0x6 -#define B_ANIM_STATUS_CURSED 0x7 -#define B_ANIM_STATUS_NIGHTMARE 0x8 -#define B_ANIM_STATUS_WRAPPED 0x9 +#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY) +#define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY) + +#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0)) + +#define IS_BATTLER_OF_TYPE(battlerId, type)((gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type)) +#define SET_BATTLER_TYPE(battlerId, type) \ +{ \ + gBattleMons[battlerId].type1 = type; \ + gBattleMons[battlerId].type2 = type; \ +} #define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8 +#define GET_STAT_BUFF_VALUE2(n)((n & 0xF0)) #define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40 #define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit -#define SET_STAT_BUFF_ID(n)((n & 0xF)) -#define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0)) +#define SET_STAT_BUFF_VALUE(n)((((n) << 4) & 0xF0)) + +#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7)) struct BattleScripting { @@ -844,19 +582,18 @@ struct BattleScripting s32 bideDmg; u8 multihitString[6]; u8 dmgMultiplier; - u8 field_F; + u8 twoTurnsMoveStringId; u8 animArg1; u8 animArg2; - u8 field_12; - u8 field_13; + u16 tripleKickPower; u8 atk49_state; - u8 field_15; - u8 field_16; - u8 bank; + u8 battlerWithAbility; + u8 multihitMoveEffect; + u8 battler; u8 animTurn; u8 animTargetsHit; u8 statChanger; - u8 field_1B; + bool8 statAnimPlayed; u8 atk23_state; u8 battleStyle; u8 atk6C_state; @@ -865,46 +602,22 @@ struct BattleScripting u8 reshowMainState; u8 reshowHelperState; u8 field_23; - u8 field_24; + u8 windowsType; // 0 - normal, 1 - battle arena u8 multiplayerId; }; -extern struct BattleScripting gBattleScripting; - -// functions - -// battle_1 -void LoadBattleTextboxAndBackground(void); -void LoadBattleEntryBackground(void); -void ApplyPlayerChosenFrameToBattleMenu(void); -bool8 LoadChosenBattleElement(u8 caseId); -void DrawMainBattleBackground(void); -void task00_0800F6FC(u8 taskId); - -enum -{ - BACK_PIC_BRENDAN, - BACK_PIC_MAY, - BACK_PIC_RED, - BACK_PIC_LEAF, - BACK_PIC_RS_BRENDAN, - BACK_PIC_RS_MAY, - BACK_PIC_WALLY, - BACK_PIC_STEVEN -}; - // rom_80A5C6C -u8 GetBankSide(u8 bank); -u8 GetBankIdentity(u8 bank); -u8 GetBankByIdentity(u8 bank); +u8 GetBattlerSide(u8 battler); +u8 GetBattlerPosition(u8 battler); +u8 GetBattlerAtPosition(u8 battler); struct BattleSpriteInfo { - u16 invisible : 1; // 0x1 - u16 lowHpSong : 1; // 0x2 - u16 behindSubstitute : 1; // 0x4 - u16 flag_x8 : 1; // 0x8 - u16 hpNumbersNoBars : 1; // 0x10 + u16 invisible:1; // 0x1 + u16 lowHpSong:1; // 0x2 + u16 behindSubstitute:1; // 0x4 + u16 flag_x8:1; // 0x8 + u16 hpNumbersNoBars:1; // 0x10 u16 transformSpecies; }; @@ -918,12 +631,12 @@ struct BattleAnimationInfo u8 field_6; u8 field_7; u8 ballThrowCaseId; - u8 field_9_x1 : 1; - u8 field_9_x2 : 1; - u8 field_9_x1C : 3; - u8 field_9_x20 : 1; - u8 field_9_x40 : 1; - u8 field_9_x80 : 1; + u8 field_9_x1:1; + u8 field_9_x2:1; + u8 field_9_x1C:3; + u8 field_9_x20:1; + u8 field_9_x40:1; + u8 field_9_x80:1; u8 field_A; u8 field_B; u8 field_C; @@ -934,21 +647,21 @@ struct BattleAnimationInfo struct BattleHealthboxInfo { - u8 flag_x1 : 1; - u8 flag_x2 : 1; - u8 flag_x4 : 1; - u8 flag_x8 : 1; - u8 statusAnimActive : 1; // x10 - u8 animFromTableActive : 1; // x20 - u8 specialAnimActive : 1; //x40 - u8 flag_x80 : 1; - u8 field_1_x1 : 1; - u8 field_1_x1E : 4; - u8 field_1_x20 : 1; - u8 field_1_x40 : 1; - u8 field_1_x80 : 1; - u8 field_2; - u8 field_3; + u8 partyStatusSummaryShown:1; + u8 healthboxIsBouncing:1; + u8 battlerIsBouncing:1; + u8 ballAnimActive:1; // 0x8 + u8 statusAnimActive:1; // x10 + u8 animFromTableActive:1; // x20 + u8 specialAnimActive:1; // x40 + u8 flag_x80:1; + u8 field_1_x1:1; + u8 field_1_x1E:4; + u8 field_1_x20:1; + u8 field_1_x40:1; + u8 field_1_x80:1; + u8 healthboxBounceSpriteId; + u8 battlerBounceSpriteId; u8 animationState; u8 field_5; u8 field_6; @@ -963,31 +676,19 @@ struct BattleBarInfo { u8 healthboxSpriteId; s32 maxValue; - s32 currentValue; + s32 oldValue; s32 receivedValue; - s32 field_10; + s32 currValue; }; struct BattleSpriteData { - struct BattleSpriteInfo *bankData; + struct BattleSpriteInfo *battlerData; struct BattleHealthboxInfo *healthBoxesData; struct BattleAnimationInfo *animationData; struct BattleBarInfo *battleBars; }; -extern struct BattleSpriteData *gBattleSpritesDataPtr; - -#define BATTLE_BUFFER_LINK_SIZE 0x1000 - -extern u8 *gLinkBattleSendBuffer; -extern u8 *gLinkBattleRecvBuffer; - -extern u8 *gUnknown_0202305C; -extern u8 *gUnknown_02023060; - -// Move this somewhere else - #include "sprite.h" struct MonSpritesGfx @@ -1002,11 +703,110 @@ struct MonSpritesGfx void *field_17C; }; -extern struct BattleSpritesGfx* gMonSpritesGfx; -extern u8 gBattleOutcome; -extern u16 gLastUsedItem; +// All battle variables are declared in battle_main.c +extern u8 gDisplayedStringBattle[300]; +extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT]; +extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT]; +extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT]; extern u32 gBattleTypeFlags; -extern struct MonSpritesGfx* gMonSpritesGfxPtr; -extern u16 gTrainerBattleOpponent_A; +extern u8 gBattleTerrain; +extern u32 gUnknown_02022FF4; +extern u8 *gUnknown_0202305C; +extern u8 *gUnknown_02023060; +extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200]; +extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200]; +extern u8 gActiveBattler; +extern u32 gBattleControllerExecFlags; +extern u8 gBattlersCount; +extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT]; +extern u8 gBattlerPositions[MAX_BATTLERS_COUNT]; +extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; +extern u8 gBattlerByTurnOrder[MAX_BATTLERS_COUNT]; +extern u8 gCurrentTurnActionNumber; +extern u8 gCurrentActionFuncId; +extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT]; +extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT]; +extern u8 gCurrMovePos; +extern u8 gChosenMovePos; +extern u16 gCurrentMove; +extern u16 gChosenMove; +extern u16 gRandomMove; +extern s32 gBattleMoveDamage; +extern s32 gHpDealt; +extern s32 gTakenDmg[MAX_BATTLERS_COUNT]; +extern u16 gLastUsedItem; +extern u8 gLastUsedAbility; +extern u8 gBattlerAttacker; +extern u8 gBattlerTarget; +extern u8 gBattlerFainted; +extern u8 gEffectBattler; +extern u8 gPotentialItemEffectBattler; +extern u8 gAbsentBattlerFlags; +extern u8 gCritMultiplier; +extern u8 gMultiHitCounter; +extern const u8 *gBattlescriptCurrInstr; +extern u32 gUnusedBattleMainVar; +extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT]; +extern const u8 *gSelectionBattleScripts[MAX_BATTLERS_COUNT]; +extern const u8 *gPalaceSelectionBattleScripts[MAX_BATTLERS_COUNT]; +extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; +extern u16 gLastMoves[MAX_BATTLERS_COUNT]; +extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT]; +extern u16 gLastHitByType[MAX_BATTLERS_COUNT]; +extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT]; +extern u16 gLockedMoves[MAX_BATTLERS_COUNT]; +extern u8 gLastHitBy[MAX_BATTLERS_COUNT]; +extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT]; +extern u8 gMoveResultFlags; +extern u32 gHitMarker; +extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT]; +extern u8 gUnknown_0202428C; +extern u16 gSideStatuses[2]; +extern struct SideTimer gSideTimers[2]; +extern u32 gStatuses3[MAX_BATTLERS_COUNT]; +extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT]; +extern u16 gPauseCounterBattle; +extern u16 gPaydayMoney; +extern u16 gRandomTurnNumber; +extern u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT]; +extern u8 gBattleOutcome; +extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT]; +extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT]; +extern u16 gBattleWeather; +extern struct WishFutureKnock gWishFutureKnock; +extern u16 gIntroSlideFlags; +extern u8 gSentPokesToOpponent[2]; +extern u16 gDynamicBasePower; +extern u16 gExpShareExp; +extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT]; +extern struct BattleScripting gBattleScripting; +extern struct BattleStruct *gBattleStruct; +extern u8 *gLinkBattleSendBuffer; +extern u8 *gLinkBattleRecvBuffer; +extern struct BattleResources *gBattleResources; +extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT]; +extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT]; +extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT]; +extern u8 gBattlerInMenuId; +extern bool8 gDoingBattleAnim; +extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT]; +extern u8 gPlayerDpadHoldFrames; +extern struct BattleSpriteData *gBattleSpritesDataPtr; +extern struct MonSpritesGfx *gMonSpritesGfxPtr; +extern struct BattleHealthboxInfo *gUnknown_020244D8; +extern struct BattleHealthboxInfo *gUnknown_020244DC; +extern u16 gBattleMovePower; +extern u16 gMoveToLearn; +extern u8 gBattleMonForms[MAX_BATTLERS_COUNT]; + +extern void (*gPreBattleCallback1)(void); +extern void (*gBattleMainFunc)(void); +extern struct BattleResults gBattleResults; +extern u8 gLeveledUpInBattle; +extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void); +extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT]; +extern u8 gMultiUsePlayerCursor; +extern u8 gNumberOfMovesToChoose; +extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h index 5fb422b41..d23ad048a 100644 --- a/include/battle_ai_script_commands.h +++ b/include/battle_ai_script_commands.h @@ -1,13 +1,18 @@ #ifndef GUARD_BATTLE_AI_SCRIPT_COMMANDS_H #define GUARD_BATTLE_AI_SCRIPT_COMMANDS_H +// return values for BattleAI_ChooseMoveOrAction +// 0 - 3 are move idx +#define AI_CHOICE_FLEE 4 +#define AI_CHOICE_WATCH 5 + void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves); void BattleAI_SetupAIData(u8 defaultScoreMoves); u8 BattleAI_ChooseMoveOrAction(void); -void ClearBankMoveHistory(u8 bank); -void RecordAbilityBattle(u8 bank, u8 abilityId); -void ClearBankAbilityHistory(u8 bank); -void RecordItemEffectBattle(u8 bank, u8 itemEffect); -void ClearBankItemEffectHistory(u8 bank); +void ClearBattlerMoveHistory(u8 battlerId); +void RecordAbilityBattle(u8 battlerId, u8 abilityId); +void ClearBattlerAbilityHistory(u8 battlerId); +void RecordItemEffectBattle(u8 battlerId, u8 itemEffect); +void ClearBattlerItemEffectHistory(u8 battlerId); #endif // GUARD_BATTLE_AI_SCRIPT_COMMANDS_H diff --git a/include/battle_anim.h b/include/battle_anim.h index c055e94fa..d6d4c05d6 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -3,14 +3,6 @@ enum { - ANIM_BANK_ATTACKER, - ANIM_BANK_TARGET, - ANIM_BANK_ATK_PARTNER, - ANIM_BANK_DEF_PARTNER, -}; - -enum -{ BG_ANIM_SCREEN_SIZE, BG_ANIM_AREA_OVERFLOW_MODE, BG_ANIM2, @@ -53,9 +45,9 @@ extern u8 gAnimFriendship; extern u16 gWeatherMoveAnim; extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT]; extern u8 gAnimMoveTurn; -extern u8 gAnimBankAttacker; -extern u8 gAnimBankTarget; -extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT]; +extern u8 gBattleAnimAttacker; +extern u8 gBattleAnimTarget; +extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT]; extern u8 gUnknown_02038440; void ClearBattleAnimationVars(void); @@ -64,12 +56,12 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo void DestroyAnimSprite(struct Sprite *sprite); void DestroyAnimVisualTask(u8 taskId); void DestroyAnimSoundTask(u8 taskId); -bool8 IsAnimBankSpriteVisible(u8 bank); -void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible); +bool8 IsBattlerSpriteVisible(u8 battlerId); +void sub_80A438C(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible); bool8 IsContest(void); s8 BattleAnimAdjustPanning(s8 pan); s8 BattleAnimAdjustPanning2(s8 pan); -s16 sub_80A52EC(s16 a); +s16 KeepPanInRange(s16 a); s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); // battle_anim_80FE840.s @@ -79,24 +71,40 @@ void HandleIntroSlide(u8 terrainId); // battle_anim_80A5C6C.s void sub_80A6EEC(struct Sprite *sprite); +void sub_80A68D4(struct Sprite *sprite); +void sub_80A6F3C(struct Sprite *sprite); void sub_80A8278(void); void sub_80A6B30(struct UnknownAnimStruct2*); void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); -u8 sub_80A82E4(u8 bank); -u8 sub_80A5C6C(u8 bank, u8 attributeId); -bool8 IsBankSpritePresent(u8 bank); +u8 sub_80A82E4(u8 battlerId); +bool8 AnimateBallThrow(struct Sprite *sprite); + +enum +{ + BANK_X_POS, + BANK_Y_POS, +}; + +u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId); + +bool8 IsBattlerSpritePresent(u8 battlerId); void sub_80A6C68(u8 arg0); -u8 GetAnimBankSpriteId(u8 wantedBank); +u8 GetAnimBattlerSpriteId(u8 wantedBattler); bool8 IsDoubleBattle(void); u8 sub_80A6D94(void); u8 sub_80A8364(u8); void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*)); void oamt_add_pos2_onto_pos1(struct Sprite *sprite); -u8 GetBankSpriteDefault_Y(u8 bank); -u8 sub_80A82E4(u8 bank); -u8 GetSubstituteSpriteDefault_Y(u8 bank); +u8 GetBattlerSpriteDefault_Y(u8 battlerId); +u8 sub_80A82E4(u8 battlerId); +u8 GetSubstituteSpriteDefault_Y(u8 battlerId); // battle_anim_80A9C70.s -void LaunchStatusAnimation(u8 bank, u8 statusAnimId); +void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId); + +// battle_anim_8170478.s +u8 ItemIdToBallId(u16 itemId); +u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); +u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); #endif // GUARD_BATTLE_ANIM_H diff --git a/include/battle_bg.h b/include/battle_bg.h new file mode 100644 index 000000000..dac41c992 --- /dev/null +++ b/include/battle_bg.h @@ -0,0 +1,13 @@ +#ifndef GUARD_BATTLE_BG_H +#define GUARD_BATTLE_BG_H + +void BattleInitBgsAndWindows(void); +void sub_80356D0(void); +void LoadBattleMenuWindowGfx(void); +void DrawMainBattleBackground(void); +void LoadBattleTextboxAndBackground(void); +void sub_8035D74(u8 taskId); +void DrawBattleEntryBackground(void); +bool8 LoadChosenBattleElement(u8 caseId); + +#endif // GUARD_BATTLE_BG_H diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 973a723e0..ff5a629af 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -65,6 +65,8 @@ enum REQUEST_TOUGH_RIBBON_BATTLE, }; +// Special arguments for Battle Controller functions. + #define RESET_ACTION_MOVE_SELECTION 0 #define RESET_ACTION_SELECTION 1 #define RESET_MOVE_SELECTION 2 @@ -76,14 +78,15 @@ enum #define BALL_3_SHAKES_SUCCESS 4 #define BALL_TRAINER_BLOCK 5 -#define RET_VALUE_LEVELLED_UP 11 - #define INSTANT_HP_BAR_DROP 32767 +// Special return values in gBattleBufferB from Battle Controller functions. +#define RET_VALUE_LEVELED_UP 11 + struct UnusedControllerStruct { - u8 field_0 : 7; - u8 flag_x80 : 1; + u8 field_0:7; + u8 flag_x80:1; }; struct HpAndStatus @@ -160,8 +163,8 @@ enum CONTROLLER_INTROSLIDE, CONTROLLER_INTROTRAINERBALLTHROW, CONTROLLER_DRAWPARTYSTATUSSUMMARY, - CONTROLLER_49, - CONTROLLER_50, + CONTROLLER_HIDEPARTYSTATUSSUMMARY, + CONTROLLER_ENDBOUNCE, CONTROLLER_SPRITEINVISIBILITY, CONTROLLER_BATTLEANIMATION, CONTROLLER_LINKSTANDBYMSG, @@ -181,62 +184,62 @@ void sub_8033648(void); void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data); // emitters -void EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck); -void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused -void EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data); -void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused -void EmitLoadMonSprite(u8 bufferId); -void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); -void EmitReturnMonToBall(u8 bufferId, u8 arg1); -void EmitDrawTrainerPic(u8 bufferId); -void EmitTrainerSlide(u8 bufferId); -void EmitTrainerSlideBack(u8 bufferId); -void EmitFaintAnimation(u8 bufferId); -void EmitPaletteFade(u8 bufferId); // unused -void EmitSuccessBallThrowAnim(u8 bufferId); // unused -void EmitBallThrowAnim(u8 bufferId, u8 caseId); -void EmitPause(u8 bufferId, u8 toWait, void *data); // unused -void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit); -void EmitPrintString(u8 bufferId, u16 stringId); -void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId); -void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); -void EmitUnknownYesNoBox(u8 bufferId); -void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); -void EmitChooseItem(u8 bufferId, u8* arg1); -void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4); -void EmitCmd23(u8 bufferId); // unused -void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); -void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); -void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); -void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); -void EmitStatusXor(u8 bufferId, u8 b); // unused -void EmitDataTransfer(u8 bufferId, u16 size, void *data); -void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused -void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused -void EmitCmd32(u8 bufferId, u16 size, void *c); // unused -void EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2); -void EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c); -void EmitOneReturnValue(u8 bufferId, u16 arg1); -void EmitOneReturnValue_Duplicate(u8 bufferId, u16 b); -void EmitCmd37(u8 bufferId); // unused -void EmitCmd38(u8 bufferId, u8 b); // unused -void EmitCmd39(u8 bufferId); // unused -void EmitCmd40(u8 bufferId); // unused -void EmitHitAnimation(u8 bufferId); -void EmitCmd42(u8 bufferId); -void EmitEffectivenessSound(u8 bufferId, u16 songId); -void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM); -void EmitFaintingCry(u8 bufferId); -void EmitIntroSlide(u8 bufferId, u8 terrainId); -void EmitIntroTrainerBallThrow(u8 bufferId); -void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); -void EmitCmd49(u8 bufferId); -void EmitCmd50(u8 bufferId); -void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); -void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); -void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2); -void EmitResetActionMoveSelection(u8 bufferId, u8 caseId); -void EmitCmd55(u8 bufferId, u8 arg1); +void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck); +void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused +void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data); +void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused +void BtlController_EmitLoadMonSprite(u8 bufferId); +void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); +void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1); +void BtlController_EmitDrawTrainerPic(u8 bufferId); +void BtlController_EmitTrainerSlide(u8 bufferId); +void BtlController_EmitTrainerSlideBack(u8 bufferId); +void BtlController_EmitFaintAnimation(u8 bufferId); +void BtlController_EmitPaletteFade(u8 bufferId); // unused +void BtlController_EmitSuccessBallThrowAnim(u8 bufferId); // unused +void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId); +void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data); // unused +void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit); +void BtlController_EmitPrintString(u8 bufferId, u16 stringId); +void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId); +void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); +void BtlController_EmitUnknownYesNoBox(u8 bufferId); +void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); +void BtlController_EmitChooseItem(u8 bufferId, u8* arg1); +void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4); +void BtlController_EmitCmd23(u8 bufferId); // unused +void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue); +void BtlController_EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); +void BtlController_EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); +void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); +void BtlController_EmitStatusXor(u8 bufferId, u8 b); // unused +void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data); +void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused +void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused +void BtlController_EmitCmd32(u8 bufferId, u16 size, void *c); // unused +void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2); +void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c); +void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1); +void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b); +void BtlController_EmitCmd37(u8 bufferId); // unused +void BtlController_EmitCmd38(u8 bufferId, u8 b); // unused +void BtlController_EmitCmd39(u8 bufferId); // unused +void BtlController_EmitCmd40(u8 bufferId); // unused +void BtlController_EmitHitAnimation(u8 bufferId); +void BtlController_EmitCmd42(u8 bufferId); +void BtlController_EmitPlaySE(u8 bufferId, u16 songId); +void BtlController_EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM); +void BtlController_EmitFaintingCry(u8 bufferId); +void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId); +void BtlController_EmitIntroTrainerBallThrow(u8 bufferId); +void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); +void BtlController_EmitHidePartyStatusSummary(u8 bufferId); +void BtlController_EmitEndBounceEffect(u8 bufferId); +void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); +void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); +void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2); +void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId); +void BtlController_EmitCmd55(u8 bufferId, u8 battleOutcome); // player controller void SetControllerToPlayer(void); diff --git a/include/battle_frontier_1.h b/include/battle_frontier_1.h new file mode 100644 index 000000000..b9c633efc --- /dev/null +++ b/include/battle_frontier_1.h @@ -0,0 +1,8 @@ +#ifndef GUARD_BATTLE_FRONTIER_1_H +#define GUARD_BATTLE_FRONTIER_1_H + +bool32 sub_8196094(void); +void sub_8197080(u8 *); +void sub_8196080(const u8 *str); + +#endif // GUARD_BATTLE_FRONTIER_1_H diff --git a/include/battle_frontier_2.h b/include/battle_frontier_2.h index 4f37248cc..d410749b9 100644 --- a/include/battle_frontier_2.h +++ b/include/battle_frontier_2.h @@ -5,5 +5,11 @@ void sub_81A8934(u8); void sub_81A895C(void); u16 sub_81A89A0(u8); void sub_81A8AF8(void); +bool8 InBattlePike(void); +void sub_819FA50(void); +void sub_81AA078(u16*, u8); +void sub_81A4C30(void); +void sub_819A4F8(void); +void sub_819DC00(void); #endif // GUARD_BATTLE_FRONTIER_2_H diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h index 313a29811..16253e760 100644 --- a/include/battle_gfx_sfx_util.h +++ b/include/battle_gfx_sfx_util.h @@ -8,43 +8,43 @@ void sub_805D714(struct Sprite *sprite); void sub_805D770(struct Sprite *sprite, bool8 arg1); void sub_805D7AC(struct Sprite *sprite); void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status); -bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId, u16 argument); -void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId); +bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattlerId, u8 attacker, u8 target, u8 tableId, u16 argument); +void InitAndLaunchSpecialAnimation(u8 activeBattlerId, u8 attacker, u8 target, u8 tableId); bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn); -bool8 mplay_80342A4(u8 bank); -void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank); -void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank); +bool8 mplay_80342A4(u8 battlerId); +void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId); +void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId); void nullsub_23(void); void nullsub_24(u16 species); -void DecompressTrainerFrontPic(u16 frontPicId, u8 bank); -void DecompressTrainerBackPic(u16 backPicId, u8 bank); +void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId); +void DecompressTrainerBackPic(u16 backPicId, u8 battlerId); void nullsub_25(u8 arg0); void FreeTrainerFrontPicPalette(u16 frontPicId); void sub_805DFFC(void); bool8 BattleLoadAllHealthBoxesGfx(u8 state); void LoadBattleBarGfx(u8 arg0); -bool8 BattleInitAllSprites(u8 *state1, u8 *bank); +bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId); void ClearSpritesHealthboxAnimData(void); void CopyAllBattleSpritesInvisibilities(void); -void CopyBattleSpriteInvisibility(u8 bank); -void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform); -void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite); -void LoadBattleMonGfxAndAnimate(u8 bank, bool8 loadMonSprite, u8 spriteId); -void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move); -void ClearBehindSubstituteBit(u8 bank); -void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank); +void CopyBattleSpriteInvisibility(u8 battlerId); +void HandleSpeciesGfxDataChange(u8 attacker, u8 target, bool8 notTransform); +void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite); +void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId); +void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move); +void ClearBehindSubstituteBit(u8 battlerId); +void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId); void BattleStopLowHpSound(void); u8 GetMonHPBarLevel(struct Pokemon *mon); -void sub_805EAE8(void); +void HandleBattleLowHpMusicChange(void); void sub_805EB9C(u8 affineMode); void LoadAndCreateEnemyShadowSprites(void); void SpriteCB_SetInvisible(struct Sprite *sprite); -void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species); -void EnemyShadowCallbackToSetInvisible(u8 bank); +void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species); +void HideBattlerShadowSprite(u8 battlerId); void sub_805EF14(void); -void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute); +void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute); void AllocateMonSpritesGfx(void); void FreeMonSpritesGfx(void); -bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon); +bool32 ShouldPlayNormalMonCry(struct Pokemon *mon); #endif // GUARD_BATTLE_GFX_SFX_UTIL diff --git a/include/battle_interface.h b/include/battle_interface.h index b2d3b1b97..2d93811f1 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -29,12 +29,18 @@ enum #define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701 #define TAG_HEALTHBOX_OPPONENT2_TILE 0xD702 +#define TAG_HEALTHBAR_PLAYER1_TILE 0xD704 +#define TAG_HEALTHBAR_OPPONENT1_TILE 0xD705 +#define TAG_HEALTHBAR_PLAYER2_TILE 0xD706 +#define TAG_HEALTHBAR_OPPONENT2_TILE 0xD707 + #define TAG_HEALTHBOX_SAFARI_TILE 0xD70B #define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C #define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714 #define TAG_HEALTHBOX_PAL 0xD6FF +#define TAG_HEALTHBAR_PAL 0xD704 #define TAG_STATUS_SUMMARY_BAR_PAL 0xD710 #define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712 @@ -54,7 +60,7 @@ enum HEALTHBOX_SAFARI_BALLS_TEXT }; -u8 CreateBankHealthboxSprites(u8 bank); +u8 CreateBattlerHealthboxSprites(u8 bank); u8 CreateSafariPlayerHealthboxSprites(void); void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue); void SetHealthboxSpriteInvisible(u8 healthboxSpriteId); @@ -62,13 +68,13 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId); void DestoryHealthboxSprite(u8 healthboxSpriteId); void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); void UpdateOamPriorityInAllHealthboxes(u8 priority); -void SetBankHealthboxSpritePos(u8 bank); +void InitBattlerHealthboxCoords(u8 bank); void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); void SwapHpBarsWithHpText(void); u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart); -void sub_8073C30(u8 taskId); +void Task_HidePartyStatusSummary(u8 taskId); void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId); -s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3); +s32 MoveBattleBar(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3); u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); u8 GetHPBarLevel(s16 hp, s16 maxhp); diff --git a/include/battle_link_817C95C.h b/include/battle_link_817C95C.h deleted file mode 100644 index 815c1f058..000000000 --- a/include/battle_link_817C95C.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef GUARD_BATTLE_LINK_817C95C_H -#define GUARD_BATTLE_LINK_817C95C_H - -void sub_817C95C(u16 stringId); -void sub_817E0FC(u16 move, u16 weatherFlags, struct DisableStruct *disableStructPtr); -void sub_817E32C(u8 animationId); -void sub_817E3F4(void); -void sub_817F2A8(void); -u8 GetBankMoveSlotId(u8 bank, u16 move); - -#endif // GUARD_BATTLE_LINK_817C95C_H diff --git a/include/battle_2.h b/include/battle_main.h index ee61efd9b..27e61c8fc 100644 --- a/include/battle_2.h +++ b/include/battle_main.h @@ -1,5 +1,33 @@ -#ifndef GUARD_BATTLE_2_H -#define GUARD_BATTLE_2_H +#ifndef GUARD_BATTLE_MAIN_H +#define GUARD_BATTLE_MAIN_H + +struct TrainerMoney +{ + u8 classId; + u8 value; +}; + +#define TYPE_NAME_LENGTH 6 +#define ABILITY_NAME_LENGTH 12 + +// defines for the u8 array gTypeEffectiveness +#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0])) +#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1])) +#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2])) + +// defines for the gTypeEffectiveness multipliers +#define TYPE_MUL_NO_EFFECT 0 +#define TYPE_MUL_NOT_EFFECTIVE 5 +#define TYPE_MUL_NORMAL 10 +#define TYPE_MUL_SUPER_EFFECTIVE 20 + +// special type table Ids +#define TYPE_FORESIGHT 0xFE +#define TYPE_ENDTABLE 0xFF + +// defines for the 'DoBounceEffect' function +#define BOUNCE_MON 0x0 +#define BOUNCE_HEALTHBOX 0x1 void CB2_InitBattle(void); void BattleMainCB2(void); @@ -14,15 +42,15 @@ u32 sub_80391E0(u8 arrayId, u8 caseId); u32 sub_80397C4(u32 setId, u32 tableId); void oac_poke_opponent(struct Sprite *sprite); void SpriteCallbackDummy_2(struct Sprite *sprite); -void sub_8039934(struct Sprite *sprite); +void SpriteCB_FaintOpponentMon(struct Sprite *sprite); void sub_8039AD8(struct Sprite *sprite); void sub_8039B2C(struct Sprite *sprite); void sub_8039B58(struct Sprite *sprite); void sub_8039BB4(struct Sprite *sprite); void sub_80105DC(struct Sprite *sprite); void sub_8039C00(struct Sprite *sprite); -void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d); -void dp11b_obj_free(u8 bank, bool8 b); +void DoBounceEffect(u8 battlerId, u8 b, s8 c, s8 d); +void EndBounceEffect(u8 battlerId, bool8 b); void sub_8039E44(struct Sprite *sprite); void sub_8039E60(struct Sprite *sprite); void sub_8039E84(struct Sprite *sprite); @@ -35,12 +63,18 @@ void sub_803B3AC(void); // unused void sub_803B598(void); // unused void BattleTurnPassed(void); u8 IsRunningFromBattleImpossible(void); -void sub_803BDA0(u8 bank); +void sub_803BDA0(u8 battlerId); void SwapTurnOrder(u8 id1, u8 id2); -u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves); +u8 GetWhoStrikesFirst(u8 battlerId1, u8 battlerId2, bool8 ignoreChosenMoves); void RunBattleScriptCommands_PopCallbacksStack(void); void RunBattleScriptCommands(void); -bool8 TryRunFromBattle(u8 bank); +bool8 TryRunFromBattle(u8 battlerId); + +extern const u8 gTypeEffectiveness[336]; +extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1]; +extern const struct TrainerMoney gTrainerMoneyTable[]; +extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1]; +extern const u8 *const gAbilityDescriptionPointers[]; extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; @@ -50,6 +84,6 @@ extern const u8 gStatusConditionString_IceJpn[8]; extern const u8 gStatusConditionString_ConfusionJpn[8]; extern const u8 gStatusConditionString_LoveJpn[8]; -extern const u8 * const gStatusConditionStringsTable[7][2]; +extern const u8 *const gStatusConditionStringsTable[7][2]; -#endif // GUARD_BATTLE_2_H +#endif // GUARD_BATTLE_MAIN_H diff --git a/include/battle_message.h b/include/battle_message.h index 3f9b38cad..147bfa501 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -1,8 +1,9 @@ #ifndef GUARD_BATTLE_MESSAGE_H #define GUARD_BATTLE_MESSAGE_H -// for 0xFD +#define TEXT_BUFF_ARRAY_COUNT 16 +// for 0xFD #define B_TXT_BUFF1 0x0 #define B_TXT_BUFF2 0x1 #define B_TXT_COPY_VAR_1 0x2 @@ -67,13 +68,21 @@ #define B_BUFF_STAT 5 #define B_BUFF_SPECIES 6 #define B_BUFF_MON_NICK 7 -#define B_BUFF_NEGATIVE_FLAVOUR 8 +#define B_BUFF_NEGATIVE_FLAVOR 8 #define B_BUFF_ABILITY 9 #define B_BUFF_ITEM 10 #define B_BUFF_PLACEHOLDER_BEGIN 0xFD #define B_BUFF_EOS 0xFF +#define PREPARE_FLAVOR_BUFFER(textVar, flavorId) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_NEGATIVE_FLAVOR; \ + textVar[2] = flavorId; \ + textVar[3] = B_BUFF_EOS; \ +} + #define PREPARE_STAT_BUFFER(textVar, statId) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ @@ -186,34 +195,29 @@ textVar[4] = B_BUFF_EOS; \ } -struct StringInfoBattle +struct BattleMsgData { u16 currentMove; - u16 lastMove; + u16 originallyUsedMove; u16 lastItem; u8 lastAbility; u8 scrActive; u8 unk1605E; u8 hpScale; - u8 StringBank; + u8 itemEffectBattler; u8 moveType; - u8 abilities[4]; - u8 textBuffs[3][0x10]; + u8 abilities[MAX_BATTLERS_COUNT]; + u8 textBuffs[3][TEXT_BUFF_ARRAY_COUNT]; }; void BufferStringBattle(u16 stringID); u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src); u32 BattleStringExpandPlaceholders(const u8* src, u8* dst); -void BattleHandleAddTextPrinter(const u8* text, u8 arg1); +void BattlePutTextOnWindow(const u8* text, u8 arg1); void SetPpNumbersPaletteInMoveSelection(void); u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp); -#define TEXT_BUFF_ARRAY_COUNT 16 - -extern u8 gDisplayedStringBattle[300]; -extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT]; -extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT]; -extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT]; +extern struct BattleMsgData *gBattleMsgDataPtr; extern const u8* const gBattleStringsTable[]; extern const u8* const gStatNamesTable[]; @@ -221,6 +225,70 @@ extern const u8* const gPokeblockWasTooXStringTable[]; extern const u8* const gRefereeStringsTable[]; extern const u8* const gStatNamesTable2[]; +extern const u8 gText_PkmnIsEvolving[]; +extern const u8 gText_CongratsPkmnEvolved[]; +extern const u8 gText_PkmnStoppedEvolving[]; +extern const u8 gText_EllipsisQuestionMark[]; +extern const u8 gText_WhatWillPkmnDo[]; +extern const u8 gText_WhatWillPkmnDo2[]; +extern const u8 gText_WhatWillWallyDo[]; +extern const u8 gText_LinkStandby[]; +extern const u8 gText_BattleMenu[]; +extern const u8 gText_SafariZoneMenu[]; +extern const u8 gText_MoveInterfacePP[]; +extern const u8 gText_MoveInterfaceType[]; +extern const u8 gText_MoveInterfacePpType[]; +extern const u8 gText_MoveInterfaceDynamicColors[]; +extern const u8 gText_WhichMoveToForget4[]; +extern const u8 gText_BattleYesNoChoice[]; +extern const u8 gText_BattleSwitchWhich[]; +extern const u8 gText_BattleSwitchWhich2[]; +extern const u8 gText_BattleSwitchWhich3[]; +extern const u8 gText_BattleSwitchWhich4[]; +extern const u8 gText_BattleSwitchWhich5[]; +extern const u8 gText_SafariBalls[]; +extern const u8 gText_SafariBallLeft[]; +extern const u8 gText_Sleep[]; +extern const u8 gText_Poison[]; +extern const u8 gText_Burn[]; +extern const u8 gText_Paralysis[]; +extern const u8 gText_Ice[]; +extern const u8 gText_Confusion[]; +extern const u8 gText_Love[]; +extern const u8 gText_SpaceAndSpace[]; +extern const u8 gText_CommaSpace[]; +extern const u8 gText_Space2[]; +extern const u8 gText_ScrollTextUp[]; +extern const u8 gText_NewLine[]; +extern const u8 gText_Are[]; +extern const u8 gText_Are2[]; +extern const u8 gText_BadEgg[]; +extern const u8 gText_BattleWallyName[]; +extern const u8 gText_Win[]; +extern const u8 gText_Loss[]; +extern const u8 gText_Draw[]; +extern const u8 gText_StatRose[]; +extern const u8 gText_PkmnsStatChanged2[]; +extern const u8 gText_PkmnGettingPumped[]; +extern const u8 gText_PkmnShroudedInMist[]; +extern const u8 gText_PkmnsXPreventsSwitching[]; +extern const u8 gText_TheGreatNewHope[]; +extern const u8 gText_WillChampinshipDreamComeTrue[]; +extern const u8 gText_AFormerChampion[]; +extern const u8 gText_ThePreviousChampion[]; +extern const u8 gText_TheUnbeatenChampion[]; +extern const u8 gText_PlayerMon1Name[]; +extern const u8 gText_Vs[]; +extern const u8 gText_OpponentMon1Name[]; +extern const u8 gText_Mind[]; +extern const u8 gText_Skill[]; +extern const u8 gText_Body[]; +extern const u8 gText_Judgement[]; +extern const u8 gText_EmptyString3[]; +extern const u8 gText_RecordBattleToPass[]; +extern const u8 gText_BattleRecordedOnPass[]; +extern const u8 gText_BattleTourney[]; + extern const u16 gMissStringIds[]; extern const u16 gTrappingMoves[]; diff --git a/include/battle_move_effects.h b/include/battle_move_effects.h deleted file mode 100644 index 4a9415379..000000000 --- a/include/battle_move_effects.h +++ /dev/null @@ -1,222 +0,0 @@ -#ifndef GUARD_BATTLE_MOVE_EFFECTS_H -#define GUARD_BATTLE_MOVE_EFFECTS_H - -enum -{ - EFFECT_HIT, - EFFECT_SLEEP, - EFFECT_POISON_HIT, - EFFECT_ABSORB, - EFFECT_BURN_HIT, - EFFECT_FREEZE_HIT, - EFFECT_PARALYZE_HIT, - EFFECT_EXPLOSION, - EFFECT_DREAM_EATER, - EFFECT_MIRROR_MOVE, - EFFECT_ATTACK_UP, - EFFECT_DEFENSE_UP, - EFFECT_SPEED_UP, - EFFECT_SPECIAL_ATTACK_UP, - EFFECT_SPECIAL_DEFENSE_UP, - EFFECT_ACCURACY_UP, - EFFECT_EVASION_UP, - EFFECT_ALWAYS_HIT, - EFFECT_ATTACK_DOWN, - EFFECT_DEFENSE_DOWN, - EFFECT_SPEED_DOWN, - EFFECT_SPECIAL_ATTACK_DOWN, // unused - EFFECT_SPECIAL_DEFENSE_DOWN, // unused - EFFECT_ACCURACY_DOWN, - EFFECT_EVASION_DOWN, - EFFECT_HAZE, - EFFECT_BIDE, - EFFECT_RAMPAGE, - EFFECT_ROAR, - EFFECT_MULTI_HIT, - EFFECT_CONVERSION, - EFFECT_FLINCH_HIT, - EFFECT_RESTORE_HP, - EFFECT_TOXIC, - EFFECT_PAY_DAY, - EFFECT_LIGHT_SCREEN, - EFFECT_TRI_ATTACK, - EFFECT_REST, - EFFECT_OHKO, - EFFECT_RAZOR_WIND, - EFFECT_SUPER_FANG, - EFFECT_DRAGON_RAGE, - EFFECT_TRAP, - EFFECT_HIGH_CRITICAL, - EFFECT_DOUBLE_HIT, - EFFECT_RECOIL_IF_MISS, - EFFECT_MIST, - EFFECT_FOCUS_ENERGY, - EFFECT_RECOIL, - EFFECT_CONFUSE, - EFFECT_ATTACK_UP_2, - EFFECT_DEFENSE_UP_2, - EFFECT_SPEED_UP_2, - EFFECT_SPECIAL_ATTACK_UP_2, - EFFECT_SPECIAL_DEFENSE_UP_2, - EFFECT_ACCURACY_UP_2, - EFFECT_EVASION_UP_2, - EFFECT_TRANSFORM, - EFFECT_ATTACK_DOWN_2, - EFFECT_DEFENSE_DOWN_2, - EFFECT_SPEED_DOWN_2, - EFFECT_SPECIAL_ATTACK_DOWN_2, - EFFECT_SPECIAL_DEFENSE_DOWN_2, - EFFECT_ACCURACY_DOWN_2, - EFFECT_EVASION_DOWN_2, - EFFECT_REFLECT, - EFFECT_POISON, - EFFECT_PARALYZE, - EFFECT_ATTACK_DOWN_HIT, - EFFECT_DEFENSE_DOWN_HIT, - EFFECT_SPEED_DOWN_HIT, - EFFECT_SPECIAL_ATTACK_DOWN_HIT, - EFFECT_SPECIAL_DEFENSE_DOWN_HIT, - EFFECT_ACCURACY_DOWN_HIT, - EFFECT_EVASION_DOWN_HIT, - EFFECT_SKY_ATTACK, - EFFECT_CONFUSE_HIT, - EFFECT_TWINEEDLE, - EFFECT_VITAL_THROW, - EFFECT_SUBSTITUTE, - EFFECT_RECHARGE, - EFFECT_RAGE, - EFFECT_MIMIC, - EFFECT_METRONOME, - EFFECT_LEECH_SEED, - EFFECT_SPLASH, - EFFECT_DISABLE, - EFFECT_LEVEL_DAMAGE, - EFFECT_PSYWAVE, - EFFECT_COUNTER, - EFFECT_ENCORE, - EFFECT_PAIN_SPLIT, - EFFECT_SNORE, - EFFECT_CONVERSION_2, - EFFECT_LOCK_ON, - EFFECT_SKETCH, - EFFECT_UNUSED_60, // thaw - EFFECT_SLEEP_TALK, - EFFECT_DESTINY_BOND, - EFFECT_FLAIL, - EFFECT_SPITE, - EFFECT_FALSE_SWIPE, - EFFECT_HEAL_BELL, - EFFECT_QUICK_ATTACK, - EFFECT_TRIPLE_KICK, - EFFECT_THIEF, - EFFECT_MEAN_LOOK, - EFFECT_NIGHTMARE, - EFFECT_MINIMIZE, - EFFECT_CURSE, - EFFECT_UNUSED_6E, - EFFECT_PROTECT, - EFFECT_SPIKES, - EFFECT_FORESIGHT, - EFFECT_PERISH_SONG, - EFFECT_SANDSTORM, - EFFECT_ENDURE, - EFFECT_ROLLOUT, - EFFECT_SWAGGER, - EFFECT_FURY_CUTTER, - EFFECT_ATTRACT, - EFFECT_RETURN, - EFFECT_PRESENT, - EFFECT_FRUSTRATION, - EFFECT_SAFEGUARD, - EFFECT_THAW_HIT, - EFFECT_MAGNITUDE, - EFFECT_BATON_PASS, - EFFECT_PURSUIT, - EFFECT_RAPID_SPIN, - EFFECT_SONICBOOM, - EFFECT_UNUSED_83, - EFFECT_MORNING_SUN, - EFFECT_SYNTHESIS, - EFFECT_MOONLIGHT, - EFFECT_HIDDEN_POWER, - EFFECT_RAIN_DANCE, - EFFECT_SUNNY_DAY, - EFFECT_DEFENSE_UP_HIT, - EFFECT_ATTACK_UP_HIT, - EFFECT_ALL_STATS_UP_HIT, - EFFECT_UNUSED_8D, // incomplete fake out in gen 2 - EFFECT_BELLY_DRUM, - EFFECT_PSYCH_UP, - EFFECT_MIRROR_COAT, - EFFECT_SKULL_BASH, - EFFECT_TWISTER, - EFFECT_EARTHQUAKE, - EFFECT_FUTURE_SIGHT, - EFFECT_GUST, - EFFECT_FLINCH_HIT_2, // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM - EFFECT_SOLARBEAM, - EFFECT_THUNDER, - EFFECT_TELEPORT, - EFFECT_BEAT_UP, - EFFECT_FLY, - EFFECT_DEFENSE_CURL, - EFFECT_SOFTBOILED, - EFFECT_FAKE_OUT, - EFFECT_UPROAR, - EFFECT_STOCKPILE, - EFFECT_SPIT_UP, - EFFECT_SWALLOW, - EFFECT_UNUSED_A3, - EFFECT_HAIL, - EFFECT_TORMENT, - EFFECT_FLATTER, - EFFECT_WILL_O_WISP, - EFFECT_MEMENTO, - EFFECT_FACADE, - EFFECT_FOCUS_PUNCH, - EFFECT_SMELLINGSALT, - EFFECT_FOLLOW_ME, - EFFECT_NATURE_POWER, - EFFECT_CHARGE, - EFFECT_TAUNT, - EFFECT_HELPING_HAND, - EFFECT_TRICK, - EFFECT_ROLE_PLAY, - EFFECT_WISH, - EFFECT_ASSIST, - EFFECT_INGRAIN, - EFFECT_SUPERPOWER, - EFFECT_MAGIC_COAT, - EFFECT_RECYCLE, - EFFECT_REVENGE, - EFFECT_BRICK_BREAK, - EFFECT_YAWN, - EFFECT_KNOCK_OFF, - EFFECT_ENDEAVOR, - EFFECT_ERUPTION, - EFFECT_SKILL_SWAP, - EFFECT_IMPRISON, - EFFECT_REFRESH, - EFFECT_GRUDGE, - EFFECT_SNATCH, - EFFECT_LOW_KICK, - EFFECT_SECRET_POWER, - EFFECT_DOUBLE_EDGE, - EFFECT_TEETER_DANCE, - EFFECT_BLAZE_KICK, - EFFECT_MUD_SPORT, - EFFECT_POISON_FANG, - EFFECT_WEATHER_BALL, - EFFECT_OVERHEAT, - EFFECT_TICKLE, - EFFECT_COSMIC_POWER, - EFFECT_SKY_UPPERCUT, - EFFECT_BULK_UP, - EFFECT_POISON_TAIL, - EFFECT_WATER_SPORT, - EFFECT_CALM_MIND, - EFFECT_DRAGON_DANCE, - EFFECT_CAMOUFLAGE, -}; - -#endif // GUARD_BATTLE_MOVE_EFFECTS_H diff --git a/include/battle_records.h b/include/battle_records.h new file mode 100644 index 000000000..88ff6adc9 --- /dev/null +++ b/include/battle_records.h @@ -0,0 +1,12 @@ +#ifndef GUARD_BATTLE_RECORDS_H +#define GUARD_BATTLE_RECORDS_H + +extern u8 gRecordsWindowId; + +void ClearPlayerLinkBattleRecords(void); +void UpdatePlayerLinkBattleRecords(s32 battlerId); +void ShowLinkBattleRecords(void); +void RemoveRecordsWindow(void); +void ShowTrainerHillRecords(void); + +#endif // GUARD_BATTLE_RECORDS_H diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index ebfeabccc..142ac1f7b 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -1,60 +1,19 @@ #ifndef GUARD_BATTLE_SCRIPT_COMMANDS_H #define GUARD_BATTLE_SCRIPT_COMMANDS_H -#define CMP_EQUAL 0x0 -#define CMP_NOT_EQUAL 0x1 -#define CMP_GREATER_THAN 0x2 -#define CMP_LESS_THAN 0x3 -#define CMP_COMMON_BITS 0x4 -#define CMP_NO_COMMON_BITS 0x5 - -#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update -#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability -#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability - -#define ATK48_STAT_NEGATIVE 0x1 -#define ATK48_STAT_BY_TWO 0x2 -#define ATK48_BIT_x4 0x4 -#define ATK48_LOWER_FAIL_CHECK 0x8 - -#define ATK4F_DONT_CHECK_STATUSES 0x80 - -#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 -#define VARIOUS_SET_MAGIC_COAT_TARGET 1 -#define VARIOUS_CAN_RUN_FROM_BATTLE 2 -#define VARIOUS_GET_MOVE_TARGET 3 -#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 -#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 -#define VARIOUS_EMIT_YESNOBOX 13 -#define VARIOUS_WAIT_CRY 18 -#define VARIOUS_RETURN_OPPONENT_MON1 19 -#define VARIOUS_RETURN_OPPONENT_MON2 20 -#define VARIOUS_SET_TELEPORT_OUTCOME 25 -#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 - -#define ATK80_DMG_CHANGE_SIGN 0 -#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1 -#define ATK80_DMG_DOUBLED 2 - -#define STAT_CHANGE_BS_PTR 0x1 -#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20 - -#define STAT_CHANGE_WORKED 0 -#define STAT_CHANGE_DIDNT_WORK 1 - #define WINDOW_CLEAR 0x1 #define WINDOW_x80 0x80 -void AI_CalcDmg(u8 bankAtk, u8 bankDef); -u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); +void AI_CalcDmg(u8 battlerIdAtk, u8 battlerIdDef); +u8 TypeCalc(u16 move, u8 battlerIdAtk, u8 battlerIdDef); u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility); -u8 BankGetTurnOrder(u8 bank); +u8 GetBattlerTurnOrderNum(u8 battlerId); void SetMoveEffect(bool8 primary, u8 certain); void BattleDestroyYesNoCursorAt(u8 cursorPosition); void BattleCreateYesNoCursorAt(u8 cursorPosition); void BufferMoveToLearnIntoBattleTextBuff2(void); void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); -bool8 UproarWakeUpCheck(u8 bank); +bool8 UproarWakeUpCheck(u8 battlerId); extern void (* const gBattleScriptingCommandsTable[])(void); extern const u8 gUnknown_0831C494[][4]; diff --git a/include/battle_scripts.h b/include/battle_scripts.h new file mode 100644 index 000000000..ffd999660 --- /dev/null +++ b/include/battle_scripts.h @@ -0,0 +1,290 @@ +#ifndef GUARD_BATTLE_SCRIPTS_H +#define GUARD_BATTLE_SCRIPTS_H + +extern const u8 BattleScript_HitFromCritCalc[]; +extern const u8 BattleScript_MoveEnd[]; +extern const u8 BattleScript_MakeMoveMissed[]; +extern const u8 BattleScript_PrintMoveMissed[]; +extern const u8 BattleScript_MoveMissedPause[]; +extern const u8 BattleScript_MoveMissed[]; +extern const u8 BattleScript_ButItFailed[]; +extern const u8 BattleScript_StatUp[]; +extern const u8 BattleScript_StatDown[]; +extern const u8 BattleScript_AlreadyAtFullHp[]; +extern const u8 BattleScript_PresentHealTarget[]; +extern const u8 BattleScript_MoveUsedMustRecharge[]; +extern const u8 BattleScript_FaintAttacker[]; +extern const u8 BattleScript_FaintTarget[]; +extern const u8 BattleScript_GiveExp[]; +extern const u8 BattleScript_HandleFaintedMon[]; +extern const u8 BattleScript_LocalTrainerBattleWon[]; +extern const u8 BattleScript_LocalTwoTrainersDefeated[]; +extern const u8 BattleScript_LocalBattleWonLoseTexts[]; +extern const u8 BattleScript_LocalBattleWonReward[]; +extern const u8 BattleScript_PayDayMoneyAndPickUpItems[]; +extern const u8 BattleScript_LocalBattleLost[]; +extern const u8 BattleScript_LocalBattleLostPrintWhiteOut[]; +extern const u8 BattleScript_LocalBattleLostEnd[]; +extern const u8 BattleScript_CheckDomeDrew[]; +extern const u8 BattleScript_82DAA0B[]; +extern const u8 BattleScript_82DAA31[]; +extern const u8 BattleScript_LinkBattleWonOrLost[]; +extern const u8 BattleScript_82DAA5C[]; +extern const u8 BattleScript_82DAA83[]; +extern const u8 BattleScript_FrontierTrainerBattleWon[]; +extern const u8 BattleScript_82DAAAB[]; +extern const u8 BattleScript_82DAAAE[]; +extern const u8 BattleScript_82DAACB[]; +extern const u8 BattleScript_82DAADA[]; +extern const u8 BattleScript_SmokeBallEscape[]; +extern const u8 BattleScript_RanAwayUsingMonAbility[]; +extern const u8 BattleScript_GotAwaySafely[]; +extern const u8 BattleScript_WildMonFled[]; +extern const u8 BattleScript_PrintCantRunFromTrainer[]; +extern const u8 BattleScript_PrintFailedToRunString[]; +extern const u8 BattleScript_PrintCantEscapeFromBattle[]; +extern const u8 BattleScript_PrintFullBox[]; +extern const u8 BattleScript_ActionSwitch[]; +extern const u8 BattleScript_82DAB35[]; +extern const u8 BattleScript_82DAB37[]; +extern const u8 BattleScript_82DAB44[]; +extern const u8 BattleScript_82DAB77[]; +extern const u8 BattleScript_82DABB8[]; +extern const u8 BattleScript_Pausex20[]; +extern const u8 BattleScript_LevelUp[]; +extern const u8 BattleScript_RainContinuesOrEnds[]; +extern const u8 BattleScript_DamagingWeatherContinues[]; +extern const u8 BattleScript_SandStormHailEnds[]; +extern const u8 BattleScript_SunlightContinues[]; +extern const u8 BattleScript_SunlightFaded[]; +extern const u8 BattleScript_OverworldWeatherStarts[]; +extern const u8 BattleScript_SideStatusWoreOff[]; +extern const u8 BattleScript_SafeguardProtected[]; +extern const u8 BattleScript_SafeguardEnds[]; +extern const u8 BattleScript_LeechSeedTurnDrain[]; +extern const u8 BattleScript_82DAD47[]; +extern const u8 BattleScript_82DAD4D[]; +extern const u8 BattleScript_BideStoringEnergy[]; +extern const u8 BattleScript_BideAttack[]; +extern const u8 BattleScript_BideNoEnergyToAttack[]; +extern const u8 BattleScript_SuccessForceOut[]; +extern const u8 BattleScript_82DADF1[]; +extern const u8 BattleScript_MistProtected[]; +extern const u8 BattleScript_RageIsBuilding[]; +extern const u8 BattleScript_MoveUsedIsDisabled[]; +extern const u8 BattleScript_SelectingDisabledMove[]; +extern const u8 BattleScript_DisabledNoMore[]; +extern const u8 BattleScript_SelectingDisabledMoveInPalace[]; +extern const u8 BattleScript_SelectingUnusableMoveInPalace[]; +extern const u8 BattleScript_EncoredNoMore[]; +extern const u8 BattleScript_DestinyBondTakesLife[]; +extern const u8 BattleScript_SpikesOnAttacker[]; +extern const u8 BattleScript_82DAE7A[]; +extern const u8 BattleScript_SpikesOnTarget[]; +extern const u8 BattleScript_82DAEB1[]; +extern const u8 BattleScript_SpikesOnFaintedBattler[]; +extern const u8 BattleScript_82DAEE8[]; +extern const u8 BattleScript_82DAEFE[]; +extern const u8 BattleScript_PerishSongTakesLife[]; +extern const u8 BattleScript_PerishSongCountGoesDown[]; +extern const u8 BattleScript_AllStatsUp[]; +extern const u8 BattleScript_82DAF54[]; +extern const u8 BattleScript_82DAF72[]; +extern const u8 BattleScript_82DAF86[]; +extern const u8 BattleScript_82DAF9A[]; +extern const u8 BattleScript_82DAFAE[]; +extern const u8 BattleScript_82DAFC2[]; +extern const u8 BattleScript_RapidSpinAway[]; +extern const u8 BattleScript_WrapFree[]; +extern const u8 BattleScript_LeechSeedFree[]; +extern const u8 BattleScript_SpikesFree[]; +extern const u8 BattleScript_MonTookFutureAttack[]; +extern const u8 BattleScript_82DB001[]; +extern const u8 BattleScript_82DB008[]; +extern const u8 BattleScript_82DB020[]; +extern const u8 BattleScript_82DB027[]; +extern const u8 BattleScript_82DB03F[]; +extern const u8 BattleScript_82DB058[]; +extern const u8 BattleScript_NoMovesLeft[]; +extern const u8 BattleScript_SelectingMoveWithNoPP[]; +extern const u8 BattleScript_NoPPForMove[]; +extern const u8 BattleScript_SelectingTormentedMove[]; +extern const u8 BattleScript_MoveUsedIsTormented[]; +extern const u8 BattleScript_SelectingTormentedMoveInPalace[]; +extern const u8 BattleScript_SelectingNotAllowedMoveTaunt[]; +extern const u8 BattleScript_MoveUsedIsTaunted[]; +extern const u8 BattleScript_SelectingNotAllowedMoveTauntInPalace[]; +extern const u8 BattleScript_WishComesTrue[]; +extern const u8 BattleScript_IngrainTurnHeal[]; +extern const u8 BattleScript_AtkDefDown[]; +extern const u8 BattleScript_82DB144[]; +extern const u8 BattleScript_82DB167[]; +extern const u8 BattleScript_KnockedOff[]; +extern const u8 BattleScript_MoveUsedIsImprisoned[]; +extern const u8 BattleScript_SelectingImprisionedMove[]; +extern const u8 BattleScript_SelectingImprisionedMoveInPalace[]; +extern const u8 BattleScript_GrudgeTakesPp[]; +extern const u8 BattleScript_MagicCoatBounce[]; +extern const u8 BattleScript_SnatchedMove[]; +extern const u8 BattleScript_EnduredMsg[]; +extern const u8 BattleScript_OneHitKOMsg[]; +extern const u8 BattleScript_SAtkDown2[]; +extern const u8 BattleScript_82DB1FE[]; +extern const u8 BattleScript_FocusPunchSetUp[]; +extern const u8 BattleScript_MoveUsedIsAsleep[]; +extern const u8 BattleScript_MoveUsedWokeUp[]; +extern const u8 BattleScript_MonWokeUpInUproar[]; +extern const u8 BattleScript_PoisonTurnDmg[]; +extern const u8 BattleScript_82DB243[]; +extern const u8 BattleScript_82DB245[]; +extern const u8 BattleScript_82DB25E[]; +extern const u8 BattleScript_BurnTurnDmg[]; +extern const u8 BattleScript_MoveUsedIsFrozen[]; +extern const u8 BattleScript_MoveUsedUnfroze[]; +extern const u8 BattleScript_DefrostedViaFireMove[]; +extern const u8 BattleScript_MoveUsedIsParalyzed[]; +extern const u8 BattleScript_MoveUsedFlinched[]; +extern const u8 BattleScript_PrintUproarOverTurns[]; +extern const u8 BattleScript_ThrashConfuses[]; +extern const u8 BattleScript_MoveUsedIsConfused[]; +extern const u8 BattleScript_82DB2D4[]; +extern const u8 BattleScript_82DB2FF[]; +extern const u8 BattleScript_MoveUsedIsConfusedNoMore[]; +extern const u8 BattleScript_PrintPayDayMoneyString[]; +extern const u8 BattleScript_WrapTurnDmg[]; +extern const u8 BattleScript_WrapEnds[]; +extern const u8 BattleScript_MoveUsedIsInLove[]; +extern const u8 BattleScript_MoveUsedIsParalyzedCantAttack[]; +extern const u8 BattleScript_NightmareTurnDmg[]; +extern const u8 BattleScript_CurseTurnDmg[]; +extern const u8 BattleScript_TargetPRLZHeal[]; +extern const u8 BattleScript_MoveEffectSleep[]; +extern const u8 BattleScript_82DB374[]; +extern const u8 BattleScript_YawnMakesAsleep[]; +extern const u8 BattleScript_MoveEffectPoison[]; +extern const u8 BattleScript_MoveEffectBurn[]; +extern const u8 BattleScript_MoveEffectFreeze[]; +extern const u8 BattleScript_MoveEffectParalysis[]; +extern const u8 BattleScript_MoveEffectUproar[]; +extern const u8 BattleScript_MoveEffectToxic[]; +extern const u8 BattleScript_MoveEffectPayDay[]; +extern const u8 BattleScript_MoveEffectWrap[]; +extern const u8 BattleScript_MoveEffectConfusion[]; +extern const u8 BattleScript_MoveEffectRecoil33[]; +extern const u8 BattleScript_DoRecoil33[]; +extern const u8 BattleScript_Recoil33End[]; +extern const u8 BattleScript_ItemSteal[]; +extern const u8 BattleScript_DrizzleActivates[]; +extern const u8 BattleScript_SpeedBoostActivates[]; +extern const u8 BattleScript_TraceActivates[]; +extern const u8 BattleScript_RainDishActivates[]; +extern const u8 BattleScript_SandstreamActivates[]; +extern const u8 BattleScript_ShedSkinActivates[]; +extern const u8 BattleScript_WeatherFormChanges[]; +extern const u8 BattleScript_WeatherFormChangesLoop[]; +extern const u8 BattleScript_CastformChange[]; +extern const u8 BattleScript_82DB4AF[]; +extern const u8 BattleScript_82DB4B8[]; +extern const u8 BattleScript_82DB4BE[]; +extern const u8 BattleScript_82DB4C1[]; +extern const u8 BattleScript_82DB4CD[]; +extern const u8 BattleScript_82DB510[]; +extern const u8 BattleScript_82DB51B[]; +extern const u8 BattleScript_82DB51C[]; +extern const u8 BattleScript_DroughtActivates[]; +extern const u8 BattleScript_TookAttack[]; +extern const u8 BattleScript_SturdyPreventsOHKO[]; +extern const u8 BattleScript_DampStopsExplosion[]; +extern const u8 BattleScript_MoveHPDrain_PPLoss[]; +extern const u8 BattleScript_MoveHPDrain[]; +extern const u8 BattleScript_MonMadeMoveUseless_PPLoss[]; +extern const u8 BattleScript_MonMadeMoveUseless[]; +extern const u8 BattleScript_FlashFireBoost_PPLoss[]; +extern const u8 BattleScript_FlashFireBoost[]; +extern const u8 BattleScript_AbilityNoStatLoss[]; +extern const u8 BattleScript_BRNPrevention[]; +extern const u8 BattleScript_PRLZPrevention[]; +extern const u8 BattleScript_PSNPrevention[]; +extern const u8 BattleScript_ObliviousPreventsAttraction[]; +extern const u8 BattleScript_FlinchPrevention[]; +extern const u8 BattleScript_OwnTempoPrevents[]; +extern const u8 BattleScript_SoundproofProtected[]; +extern const u8 BattleScript_AbilityNoSpecificStatLoss[]; +extern const u8 BattleScript_StickyHoldActivates[]; +extern const u8 BattleScript_ColorChangeActivates[]; +extern const u8 BattleScript_RoughSkinActivates[]; +extern const u8 BattleScript_CuteCharmActivates[]; +extern const u8 BattleScript_ApplySecondaryEffect[]; +extern const u8 BattleScript_SynchronizeActivates[]; +extern const u8 BattleScript_NoItemSteal[]; +extern const u8 BattleScript_AbilityCuredStatus[]; +extern const u8 BattleScript_82DB695[]; +extern const u8 BattleScript_IgnoresAndUsesRandomMove[]; +extern const u8 BattleScript_MoveUsedLoafingAround[]; +extern const u8 BattleScript_82DB6C7[]; +extern const u8 BattleScript_IgnoresAndFallsAsleep[]; +extern const u8 BattleScript_82DB6F0[]; +extern const u8 BattleScript_SubstituteFade[]; +extern const u8 BattleScript_BerryCurePrlzEnd2[]; +extern const u8 BattleScript_BerryCureParRet[]; +extern const u8 BattleScript_BerryCurePsnEnd2[]; +extern const u8 BattleScript_BerryCurePsnRet[]; +extern const u8 BattleScript_BerryCureBrnEnd2[]; +extern const u8 BattleScript_BerryCureBrnRet[]; +extern const u8 BattleScript_BerryCureFrzEnd2[]; +extern const u8 BattleScript_BerryCureFrzRet[]; +extern const u8 BattleScript_BerryCureSlpEnd2[]; +extern const u8 BattleScript_BerryCureSlpRet[]; +extern const u8 BattleScript_BerryCureConfusionEnd2[]; +extern const u8 BattleScript_BerryCureConfusionRet[]; +extern const u8 BattleScript_BerryCureChosenStatusEnd2[]; +extern const u8 BattleScript_BerryCureChosenStatusRet[]; +extern const u8 BattleScript_WhiteHerbEnd2[]; +extern const u8 BattleScript_WhiteHerbRet[]; +extern const u8 BattleScript_ItemHealHP_RemoveItem[]; +extern const u8 BattleScript_BerryPPHealEnd2[]; +extern const u8 BattleScript_ItemHealHP_End2[]; +extern const u8 BattleScript_ItemHealHP_Ret[]; +extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[]; +extern const u8 BattleScript_HangedOnMsg[]; +extern const u8 BattleScript_BerryConfuseHealEnd2[]; +extern const u8 BattleScript_BerryStatRaiseEnd2[]; +extern const u8 BattleScript_82DB85B[]; +extern const u8 BattleScript_BerryFocusEnergyEnd2[]; +extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[]; +extern const u8 BattleScript_82DB87D[]; +extern const u8 BattleScript_82DB881[]; +extern const u8 BattleScript_82DB887[]; +extern const u8 BattleScript_82DB89D[]; +extern const u8 BattleScript_82DB8BE[]; +extern const u8 BattleScript_82DB8E0[]; +extern const u8 BattleScript_82DB8F3[]; +extern const u8 BattleScript_82DB973[]; +extern const u8 BattleScript_82DB992[]; +extern const u8 BattleScript_AskIfWantsToForfeitMatch[]; +extern const u8 BattleScript_PrintPlayerForfeited[]; +extern const u8 BattleScript_PrintPlayerForfeitedLinkBattle[]; +extern const u8 BattleScript_BallThrow[]; +extern const u8 BattleScript_BallThrowByWally[]; +extern const u8 BattleScript_SafariBallThrow[]; +extern const u8 BattleScript_SuccessBallThrow[]; +extern const u8 BattleScript_82DBD92[]; +extern const u8 BattleScript_82DBDA5[]; +extern const u8 BattleScript_82DBDC2[]; +extern const u8 BattleScript_82DBDC3[]; +extern const u8 BattleScript_WallyBallThrow[]; +extern const u8 BattleScript_ShakeBallThrow[]; +extern const u8 BattleScript_82DBE01[]; +extern const u8 BattleScript_TrainerBallBlock[]; +extern const u8 BattleScript_82DBE12[]; +extern const u8 BattleScript_82DBE1C[]; +extern const u8 BattleScript_82DBE4B[]; +extern const u8 BattleScript_82DBE6F[]; +extern const u8 BattleScript_82DBE91[]; +extern const u8 BattleScript_RunByUsingItem[]; +extern const u8 BattleScript_ActionWatchesCarefully[]; +extern const u8 BattleScript_ActionGetNear[]; +extern const u8 BattleScript_ActionThrowPokeblock[]; +extern const u8 BattleScript_82DBEE3[]; + +#endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_setup.h b/include/battle_setup.h index 0168022cc..0caa3df27 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -1,18 +1,85 @@ #ifndef GUARD_BATTLE_SETUP_H #define GUARD_BATTLE_SETUP_H -void BattleSetup_StartScriptedWildBattle(void); -u8 BattleSetup_GetTerrainId(void); -u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); -void BattleSetup_StartBattlePikeWildBattle(void); +enum +{ + TRAINER_BATTLE_NORMAL, + TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, + TRAINER_BATTLE_CONTINUE_SCRIPT, + TRAINER_BATTLE_NORMAL_NO_INTRO_TEXT, + TRAINER_BATTLE_DOUBLE, + TRAINER_BATTLE_REMATCH, + TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE, + TRAINER_BATTLE_REMATCH_DOUBLE, + TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC, + TRAINER_BATTLE_9, + TRAINER_BATTLE_SET_TRAINER_A, + TRAINER_BATTLE_SET_TRAINER_B, + TRAINER_BATTLE_12, +}; + +#define REMATCHES_COUNT 5 +#define REMATCH_TABLE_ENTRIES 78 +#define REMATCH_WALLY_ENTRY 64 +#define REMATCH_ELITE_FOUR_ENTRIES 73 + +struct RematchTrainer +{ + u16 trainerIds[REMATCHES_COUNT]; + u16 mapGroup; + u16 mapNum; +}; + +extern const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES]; + +extern u16 gTrainerBattleOpponent_A; +extern u16 gTrainerBattleOpponent_B; +extern u16 gPartnerTrainerId; + void BattleSetup_StartWildBattle(void); +void BattleSetup_StartBattlePikeWildBattle(void); void BattleSetup_StartRoamerBattle(void); - -u8 HasTrainerAlreadyBeenFought(u16); -void trainer_flag_set(u16); -void trainer_flag_clear(u16); +void StartWallyTutorialBattle(void); +void BattleSetup_StartScriptedWildBattle(void); +void BattleSetup_StartLatiBattle(void); +void BattleSetup_StartLegendaryBattle(void); +void StartGroudonKyogreBattle(void); +void StartRegiBattle(void); +u8 BattleSetup_GetTerrainId(void); +u8 sub_80B100C(s32 arg0); +void ChooseStarter(void); +void ResetTrainerOpponentIds(void); +void SetMapVarsToTrainer(void); +const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); +void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerScript); +void ConfigureTwoTrainersBattle(u8 trainerEventObjId, const u8 *trainerScript); +void SetUpTwoTrainersBattle(void); +bool32 GetTrainerFlagFromScriptPointer(const u8 *data); +void sub_80B16D8(void); +u8 GetTrainerBattleMode(void); +bool8 GetTrainerFlag(void); +bool8 HasTrainerBeenFought(u16 trainerId); +void SetTrainerFlag(u16 trainerId); +void ClearTrainerFlag(u16 trainerId); void BattleSetup_StartTrainerBattle(void); -u8 *BattleSetup_GetScriptAddrAfterBattle(void); -u8 *BattleSetup_GetTrainerPostBattleScript(void); +void BattleSetup_StartRematchBattle(void); +void ShowTrainerIntroSpeech(void); +const u8 *BattleSetup_GetScriptAddrAfterBattle(void); +const u8 *BattleSetup_GetTrainerPostBattleScript(void); +void ShowTrainerCantBattleSpeech(void); +void SetUpTrainerEncounterMusic(void); +const u8 *GetTrainerALoseText(void); +const u8 *GetTrainerBLoseText(void); +const u8 *GetTrainerWonSpeech(void); +void UpdateRematchIfDefeated(s32 rematchTableId); +void IncrementRematchStepCounter(void); +void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum); +bool32 DoesSomeoneWantRematchIn(u16 mapGroup, u16 mapNum); +bool32 IsRematchTrainerIn(u16 mapGroup, u16 mapNum); +u16 GetLastBeatenRematchTrainerId(u16 trainerId); +bool8 ShouldTryRematchBattle(void); +bool8 IsTrainerReadyForRematch(void); +void ShouldTryGetTrainerScript(void); +u16 CountBattledRematchTeams(u16 trainerId); #endif // GUARD_BATTLE_SETUP_H diff --git a/include/battle_tower.h b/include/battle_tower.h index 25b439c1b..d8a3dc9a8 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -1,6 +1,46 @@ #ifndef GUARD_BATTLE_TOWER_H #define GUARD_BATTLE_TOWER_H +struct RSBattleTowerRecord +{ + /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100 + /*0x01*/ u8 trainerClass; + /*0x02*/ u16 winStreak; + /*0x04*/ u8 name[8]; + /*0x0C*/ u8 trainerId[4]; + /*0x10*/ struct { + u16 easyChat[6]; + } greeting; + /*0x1C*/ struct UnknownPokemonStruct party[3]; + /*0xA0*/ u32 checksum; + /*0xA4*/ u16 unk_11c8; +}; + +union BattleTowerRecord +{ + struct RSBattleTowerRecord ruby_sapphire; + struct EmeraldBattleTowerRecord emerald; +}; + +struct BattleFrontierTrainer +{ + u32 trainerClass; + u8 trainerName[8]; + u16 speechBefore[6]; + u16 speechWin[6]; + u16 speechLose[6]; + u16 *btMonPool; +}; + +extern struct BattleFrontierTrainer *gUnknown_0203BC88; + u16 sub_8164FCC(u8, u8); +void sub_81659DC(struct RSBattleTowerRecord *a0, struct RSBattleTowerRecord *a1); +bool32 sub_816587C(union BattleTowerRecord *, union BattleTowerRecord *); +void CalcEmeraldBattleTowerChecksum(struct EmeraldBattleTowerRecord *); +void sub_81628A0(union BattleTowerRecord *); +void sub_8162614(u16 trainerId, u8); +void ConvertBattleFrontierTrainerSpeechToString(u16 *words); +void GetFrontierTrainerName(u8 *dest, u16 trainerIdx); #endif //GUARD_BATTLE_TOWER_H diff --git a/include/battle_transition.h b/include/battle_transition.h index 1603f5c93..0d6ef3c83 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -1,6 +1,72 @@ #ifndef GUARD_BATTLE_TRANSITION_H #define GUARD_BATTLE_TRANSITION_H -void sub_8149DFC(u8 a1); +void TestBattleTransition(u8 transitionId); +void BattleTransition_StartOnField(u8 transitionId); +void BattleTransition_Start(u8 transitionId); +bool8 IsBattleTransitionDone(void); +bool8 FldEff_Pokeball(void); +void TransitionPhase1_Task_RunFuncs(u8 taskId); +void sub_8149F58(u16 **a0, u16 **a1); + +extern const struct SpritePalette gFieldEffectObjectPaletteInfo10; + +enum // TRANSITION_MUGSHOT +{ + MUGSHOT_SYDNEY, + MUGSHOT_PHOEBE, + MUGSHOT_GLACIA, + MUGSHOT_DRAKE, + MUGSHOT_CHAMPION, + MUGSHOTS_COUNT +}; + +// credits for the names go to Dyskinesia, Tetrable and Farore +// names are naturally subject to change + +#define B_TRANSITION_BLUR 0 +#define B_TRANSITION_SWIRL 1 +#define B_TRANSITION_SHUFFLE 2 +#define B_TRANSITION_BIG_POKEBALL 3 +#define B_TRANSITION_POKEBALLS_TRAIL 4 +#define B_TRANSITION_CLOCKWISE_BLACKFADE 5 +#define B_TRANSITION_RIPPLE 6 +#define B_TRANSITION_WAVE 7 +#define B_TRANSITION_SLICE 8 +#define B_TRANSITION_WHITEFADE 9 +#define B_TRANSITION_GRID_SQUARES 10 +#define B_TRANSITION_SHARDS 11 +#define B_TRANSITION_SYDNEY 12 +#define B_TRANSITION_PHOEBE 13 +#define B_TRANSITION_GLACIA 14 +#define B_TRANSITION_DRAKE 15 +#define B_TRANSITION_CHAMPION 16 +// added in Emerald +#define B_TRANSITION_AQUA 17 +#define B_TRANSITION_MAGMA 18 +#define B_TRANSITION_REGICE 19 +#define B_TRANSITION_REGISTEEL 20 +#define B_TRANSITION_REGIROCK 21 +#define B_TRANSITION_KYOGRE 22 +#define B_TRANSITION_GROUDON 23 +#define B_TRANSITION_RAYQUAZA 24 +#define B_TRANSITION_SHRED_SPLIT 25 +#define B_TRANSITION_BLACKHOLE1 26 +#define B_TRANSITION_BLACKHOLE2 27 +#define B_TRANSITION_RECTANGULAR_SPIRAL 28 +#define B_TRANSITION_29 29 +#define B_TRANSITION_30 30 +#define B_TRANSITION_31 31 +#define B_TRANSITION_32 32 +#define B_TRANSITION_33 33 +#define B_TRANSITION_34 34 +#define B_TRANSITION_35 35 +#define B_TRANSITION_36 36 +#define B_TRANSITION_37 37 +#define B_TRANSITION_38 38 +#define B_TRANSITION_39 39 +#define B_TRANSITION_40 40 +#define B_TRANSITION_41 41 +#define B_TRANSITION_COUNT 42 #endif // GUARD_BATTLE_TRANSITION_H diff --git a/include/battle_tv.h b/include/battle_tv.h new file mode 100644 index 000000000..72466d73b --- /dev/null +++ b/include/battle_tv.h @@ -0,0 +1,11 @@ +#ifndef GUARD_BATTLE_TV_H +#define GUARD_BATTLE_TV_H + +void BattleTv_SetDataBasedOnString(u16 stringId); +void BattleTv_SetDataBasedOnMove(u16 move, u16 weatherFlags, struct DisableStruct *disableStructPtr); +void BattleTv_SetDataBasedOnAnimation(u8 animationId); +void TryPutLinkBattleTvShowOnAir(void); +void BattleTv_ClearExplosionFaintCause(void); +u8 GetBattlerMoveSlotId(u8 battlerId, u16 moveId); + +#endif // GUARD_BATTLE_TV_H diff --git a/include/battle_util.h b/include/battle_util.h index b21b250c4..be9b5f1fe 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -8,77 +8,72 @@ #define MOVE_LIMITATION_TAUNT (1 << 4) #define MOVE_LIMITATION_IMPRISION (1 << 5) -#define ABILITYEFFECT_ON_SWITCHIN 0x0 -#define ABILITYEFFECT_ENDTURN 0x1 -#define ABILITYEFFECT_MOVES_BLOCK 0x2 -#define ABILITYEFFECT_ABSORBING 0x3 -#define ABILITYEFFECT_CONTACT 0x4 -#define ABILITYEFFECT_IMMUNITY 0x5 -#define ABILITYEFFECT_FORECAST 0x6 -#define ABILITYEFFECT_SYNCHRONIZE 0x7 -#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8 -#define ABILITYEFFECT_INTIMIDATE1 0x9 -#define ABILITYEFFECT_INTIMIDATE2 0xA -#define ABILITYEFFECT_TRACE 0xB -#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC -#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD -#define ABILITYEFFECT_FIELD_SPORT 0xE -#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF -#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10 -#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11 -#define ABILITYEFFECT_COUNT_ON_FIELD 0x12 -#define ABILITYEFFECT_CHECK_ON_FIELD 0x13 -#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF +#define ABILITYEFFECT_ON_SWITCHIN 0x0 +#define ABILITYEFFECT_ENDTURN 0x1 +#define ABILITYEFFECT_MOVES_BLOCK 0x2 +#define ABILITYEFFECT_ABSORBING 0x3 +#define ABILITYEFFECT_CONTACT 0x4 +#define ABILITYEFFECT_IMMUNITY 0x5 +#define ABILITYEFFECT_FORECAST 0x6 +#define ABILITYEFFECT_SYNCHRONIZE 0x7 +#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8 +#define ABILITYEFFECT_INTIMIDATE1 0x9 +#define ABILITYEFFECT_INTIMIDATE2 0xA +#define ABILITYEFFECT_TRACE 0xB +#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC +#define ABILITYEFFECT_CHECK_BATTLER_SIDE 0xD +#define ABILITYEFFECT_FIELD_SPORT 0xE +#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 0xF +#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10 +#define ABILITYEFFECT_COUNT_BATTLER_SIDE 0x11 +#define ABILITYEFFECT_COUNT_ON_FIELD 0x12 +#define ABILITYEFFECT_CHECK_ON_FIELD 0x13 +#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF -#define ITEMEFFECT_ON_SWITCH_IN 0x0 +#define ABILITY_ON_OPPOSING_FIELD(battlerId, abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battlerId, abilityId, 0, 0)) +#define ABILITY_ON_FIELD(abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0)) +#define ABILITY_ON_FIELD2(abilityId)(AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0)) -#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) -#define WEATHER_HAS_EFFECT2 ((!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0))) +#define ITEMEFFECT_ON_SWITCH_IN 0x0 -#define BS_GET_TARGET 0 -#define BS_GET_ATTACKER 1 -#define BS_GET_EFFECT_BANK 2 -#define BS_GET_SCRIPTING_BANK 10 -#define BS_GET_PLAYER1 11 -#define BS_GET_OPPONENT1 12 -#define BS_GET_PLAYER2 13 -#define BS_GET_OPPONENT2 14 +#define WEATHER_HAS_EFFECT ((!ABILITY_ON_FIELD(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD(ABILITY_AIR_LOCK))) +#define WEATHER_HAS_EFFECT2 ((!ABILITY_ON_FIELD2(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD2(ABILITY_AIR_LOCK))) -u8 GetBattleBank(u8 caseId); +u8 GetBattlerForBattleScript(u8 caseId); void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move); void PressurePPLoseOnUsingPerishSong(u8 bankAtk); void PressurePPLoseOnUsingImprision(u8 bankAtk); -void MarkAllBufferBanksForExecution(void); // unused -void MarkBufferBankForExecution(u8 bank); +void MarkAllBattlersForControllerExec(void); // unused +void MarkBattlerForControllerExec(u8 battlerId); void sub_803F850(u8 arg0); -void CancelMultiTurnMoves(u8 bank); -bool8 WasUnableToUseMove(u8 bank); -void PrepareStringBattle(u16 stringId, u8 bank); +void CancelMultiTurnMoves(u8 battlerId); +bool8 WasUnableToUseMove(u8 battlerId); +void PrepareStringBattle(u16 stringId, u8 battlerId); void ResetSentPokesToOpponentValue(void); -void sub_803F9EC(u8 bank); -void sub_803FA70(u8 bank); +void sub_803F9EC(u8 battlerId); +void sub_803FA70(u8 battlerId); void BattleScriptPush(const u8* bsPtr); void BattleScriptPushCursor(void); void BattleScriptPop(void); u8 TrySetCantSelectMoveBattleScript(void); -u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); +u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check); bool8 AreAllMovesUnusable(void); -u8 GetImprisonedMovesCount(u8 bank, u16 move); -u8 UpdateTurnCounters(void); -u8 TurnBasedEffects(void); -bool8 sub_8041364(void); -bool8 sub_8041728(void); +u8 GetImprisonedMovesCount(u8 battlerId, u16 move); +u8 DoFieldEndTurnEffects(void); +u8 DoBattlerEndTurnEffects(void); +bool8 HandleWishPerishSongOnTurnEnd(void); +bool8 HandleFaintedMonActions(void); void TryClearRageStatuses(void); u8 AtkCanceller_UnableToUseMove(void); -bool8 sub_80423F4(u8 bank, u8 r1, u8 r2); -u8 CastformDataTypeChange(u8 bank); -u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); +bool8 HasNoMonsToSwitch(u8 battlerId, u8 r1, u8 r2); +u8 CastformDataTypeChange(u8 battlerId); +u8 AbilityBattleEffects(u8 caseID, u8 battlerId, u8 ability, u8 special, u16 moveArg); void BattleScriptExecute(const u8* BS_ptr); void BattleScriptPushCursorAndCallback(const u8* BS_ptr); -u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); -void ClearFuryCutterDestinyBondGrudge(u8 bank); +u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn); +void ClearFuryCutterDestinyBondGrudge(u8 battlerId); void HandleAction_RunBattleScript(void); -u8 GetMoveTarget(u16 move, u8 useMoveTarget); -u8 IsPokeDisobedient(void); +u8 GetMoveTarget(u16 move, u8 setTarget); +u8 IsMonDisobedient(void); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/berry.h b/include/berry.h index f51503d41..1a8b7fa25 100644 --- a/include/berry.h +++ b/include/berry.h @@ -11,11 +11,21 @@ enum BERRY_FIRMNESS_SUPER_HARD, }; +enum +{ + FLAVOR_SPICY, + FLAVOR_DRY, + FLAVOR_SWEET, + FLAVOR_BITTER, + FLAVOR_SOUR, + FLAVOR_COUNT +}; + #define NUM_BERRIES 44 -extern const u8 *const gBerryTreeFieldObjectGraphicsIdTablePointers[NUM_BERRIES]; -extern const struct SpriteFrameImage *const gBerryTreePicTablePointers[NUM_BERRIES]; -extern const u8 *const gBerryTreePaletteSlotTablePointers[NUM_BERRIES]; +extern const u8 *const gBerryTreeEventObjectGraphicsIdTablePointers[]; +extern const struct SpriteFrameImage *const gBerryTreePicTablePointers[]; +extern const u8 *const gBerryTreePaletteSlotTablePointers[]; void ClearEnigmaBerries(void); void SetEnigmaBerry(u8 *src); @@ -23,7 +33,7 @@ u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry); bool32 IsEnigmaBerryValid(void); const struct Berry *GetBerryInfo(u8 berry); struct BerryTree *GetBerryTreeInfo(u8 id); -bool32 FieldObjectInteractionWaterBerryTree(void); +bool32 EventObjectInteractionWaterBerryTree(void); bool8 IsPlayerFacingPlantedBerryTree(void); bool8 TryToWaterBerryTree(void); void ClearBerryTrees(void); @@ -44,10 +54,10 @@ u8 CalcBerryYield(struct BerryTree *tree); u8 GetBerryCountByBerryTreeId(u8 id); u16 GetStageDurationByBerryType(u8); void Bag_ChooseBerry(void); -void FieldObjectInteractionGetBerryTreeData(void); -void FieldObjectInteractionPlantBerryTree(void); -void FieldObjectInteractionPickBerryTree(void); -void FieldObjectInteractionRemoveBerryTree(void); +void EventObjectInteractionGetBerryTreeData(void); +void EventObjectInteractionPlantBerryTree(void); +void EventObjectInteractionPickBerryTree(void); +void EventObjectInteractionRemoveBerryTree(void); u8 PlayerHasBerries(void); void ResetBerryTreeSparkleFlags(void); diff --git a/include/berry_blender.h b/include/berry_blender.h new file mode 100644 index 000000000..fb62e3fa3 --- /dev/null +++ b/include/berry_blender.h @@ -0,0 +1,8 @@ +#ifndef GUARD_BERRY_BLENDER_H +#define GUARD_BERRY_BLENDER_H + +void DoBerryBlending(void); +u16 GetBlenderArrowPosition(void); +void ShowBerryBlenderRecordWindow(void); + +#endif // GUARD_BERRY_BLENDER_H diff --git a/include/berry_fix_program.h b/include/berry_fix_program.h new file mode 100644 index 000000000..6c31a0c8b --- /dev/null +++ b/include/berry_fix_program.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BERRY_FIX_PROGRAM_H +#define GUARD_BERRY_FIX_PROGRAM_H + +void CB2_InitBerryFixProgram(void); + +#endif // GUARD_BERRY_FIX_PROGRAM_H diff --git a/include/berry_tag_screen.h b/include/berry_tag_screen.h new file mode 100644 index 000000000..26664bea6 --- /dev/null +++ b/include/berry_tag_screen.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BERRY_TAG_SCREEN_H +#define GUARD_BERRY_TAG_SCREEN_H + +void DoBerryTagScreen(void); + +#endif // GUARD_BERRY_TAG_SCREEN_H diff --git a/include/bg.h b/include/bg.h index 0c6b4ac26..ea84c1573 100644 --- a/include/bg.h +++ b/include/bg.h @@ -68,9 +68,9 @@ void UnsetBgTilemapBuffer(u8 bg); void* GetBgTilemapBuffer(u8 bg); void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset); void CopyBgTilemapBufferToVram(u8 bg); -void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height); +void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height); void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette); -void CopyRectToBgTilemapBufferRect(u8 bg, void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2); +void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2); void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height); void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette); void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta); diff --git a/include/bike.h b/include/bike.h new file mode 100644 index 000000000..46b668169 --- /dev/null +++ b/include/bike.h @@ -0,0 +1,82 @@ +#ifndef GUARD_BIKE_H +#define GUARD_BIKE_H + +// the struct below is used for checking button combinations of the last input so that the acro can potentially perform a side/turn jump. +// its possible that at some point Game Freak intended for the acro bike to have more complex tricks: but only the acro jump combinations can be seen in the final ROM. +struct BikeHistoryInputInfo +{ + u32 dirHistoryMatch; // the direction you need to press + u32 abStartSelectHistoryMatch; // the button you need to press + u32 dirHistoryMask; // mask applied so that way only the recent nybble (the recent input) is checked + u32 abStartSelectHistoryMask; // mask applied so that way only the recent nybble (the recent input) is checked + const u8 *dirTimerHistoryList; // list of timers to check for direction before the button+dir combination can be verified. + const u8 *abStartSelectHistoryList; // list of timers to check for buttons before the button+dir combination can be verified. + u32 direction; // direction to jump +}; + +// Player speeds +enum +{ + SPEED_STANDING, + SPEED_NORMAL, + SPEED_FAST, + SPEED_FASTER, + SPEED_FASTEST, +}; + +// mach bike transitions enum +enum +{ + MACH_TRANS_FACE_DIRECTION, + MACH_TRANS_TURN_DIRECTION, + MACH_TRANS_KEEP_MOVING, + MACH_TRANS_START_MOVING +}; + +// Acro bike states +enum +{ + ACRO_STATE_NORMAL, + ACRO_STATE_TURNING, + ACRO_STATE_WHEELIE_STANDING, + ACRO_STATE_BUNNY_HOP, + ACRO_STATE_WHEELIE_MOVING, + ACRO_STATE_SIDE_JUMP, + ACRO_STATE_TURN_JUMP, +}; + +// Acro bike transitions +enum +{ + ACRO_TRANS_FACE_DIRECTION, + ACRO_TRANS_TURN_DIRECTION, + ACRO_TRANS_MOVING, + ACRO_TRANS_NORMAL_TO_WHEELIE, + ACRO_TRANS_WHEELIE_TO_NORMAL, + ACRO_TRANS_WHEELIE_IDLE, + ACRO_TRANS_WHEELIE_HOPPING_STANDING, + ACRO_TRANS_WHEELIE_HOPPING_MOVING, + ACRO_TRANS_SIDE_JUMP, + ACRO_TRANS_TURN_JUMP, + ACRO_TRANS_WHEELIE_MOVING, + ACRO_TRANS_WHEELIE_RISING_MOVING, + ACRO_TRANS_WHEELIE_LOWERING_MOVING, +}; + +// Exported RAM declarations +extern bool8 gUnusedBikeCameraAheadPanback; + +// Exported ROM declarations +void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys); +void Bike_TryAcroBikeHistoryUpdate(u16 newKeys, u16 heldKeys); +bool8 RS_IsRunningDisallowed(u8 tile); +bool8 IsBikingDisallowedByPlayer(void); +bool8 player_should_look_direction_be_enforced_upon_movement(void); +void GetOnOffBike(u8 transitionFlags); +void BikeClearState(int newDirHistory, int newAbStartHistory); +void Bike_UpdateBikeCounterSpeed(u8 counter); +s16 GetPlayerSpeed(void); +void Bike_HandleBumpySlopeJump(void); +bool32 IsRunningDisallowed(u8 metatile); + +#endif // GUARD_BIKE_H diff --git a/include/blend_palette.h b/include/blend_palette.h index 1db3f4eb0..a00847bc3 100644 --- a/include/blend_palette.h +++ b/include/blend_palette.h @@ -1,12 +1,6 @@ #ifndef GUARD_BLEND_PALETTE_H #define GUARD_BLEND_PALETTE_H -// Exported type declarations +void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); -// Exported RAM declarations - -// Exported ROM declarations - -void BlendPalette(u16, u16, u8, u16); - -#endif //GUARD_BLEND_PALETTE_H +#endif // GUARD_BLEND_PALETTE_H diff --git a/include/blit.h b/include/blit.h new file mode 100644 index 000000000..e7f384cc8 --- /dev/null +++ b/include/blit.h @@ -0,0 +1,10 @@ +#ifndef GUARD_BLIT_H +#define GUARD_BLIT_H + +void BlitBitmapRect4BitWithoutColorKey(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height); +void BlitBitmapRect4Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey); +void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue); +void BlitBitmapRect4BitTo8Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset); +void FillBitmapRect8Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue); + +#endif // GUARD_BLIT_H diff --git a/include/braille_puzzles.h b/include/braille_puzzles.h new file mode 100644 index 000000000..d4c5a24d8 --- /dev/null +++ b/include/braille_puzzles.h @@ -0,0 +1,11 @@ +#ifndef GUARD_BRAILLE_PUZZLES_H +#define GUARD_BRAILLE_PUZZLES_H + +bool8 ShouldDoBrailleFlyEffect(void); +bool8 ShouldDoBrailleStrengthEffect(void); +bool8 ShouldDoBrailleDigEffect(void); +void DoBrailleDigEffect(void); +void sub_8179918(void); +void sub_8179834(void); + +#endif // GUARD_BRAILLE_PUZZLES_H diff --git a/include/cable_club.h b/include/cable_club.h new file mode 100644 index 000000000..734a4f070 --- /dev/null +++ b/include/cable_club.h @@ -0,0 +1,15 @@ +#ifndef GUARD_CABLE_CLUB_H +#define GUARD_CABLE_CLUB_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +void sub_80B37D4(TaskFunc taskFunc); +u8 sub_80B3050(void); +void sub_80B360C(void); +bool32 sub_80B2AF4(u16 *arg0, u16 *arg1); + +#endif //GUARD_CABLE_CLUB_H diff --git a/include/calculate_base_damage.h b/include/calculate_base_damage.h deleted file mode 100644 index e9146c188..000000000 --- a/include/calculate_base_damage.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef GUARD_CALCULATE_BASE_DAMAGE_H -#define GUARD_CALCULATE_BASE_DAMAGE_H - -s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef); - -#endif // GUARD_CALCULATE_BASE_DAMAGE_H diff --git a/include/clear_save_data_menu.h b/include/clear_save_data_menu.h new file mode 100644 index 000000000..86ba99849 --- /dev/null +++ b/include/clear_save_data_menu.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CLEAR_SAVE_DATA_MENU_H +#define GUARD_CLEAR_SAVE_DATA_MENU_H + +void CB2_InitClearSaveDataScreen(void); + +#endif // GUARD_CLEAR_SAVE_DATA_MENU_H diff --git a/include/clock.h b/include/clock.h index 4e6560c91..aa179bf6f 100644 --- a/include/clock.h +++ b/include/clock.h @@ -5,4 +5,4 @@ void DoTimeBasedEvents(void); -#endif +#endif // GUARD_CLOCK_H diff --git a/include/config.h b/include/config.h index 162af3143..318ed39d8 100644 --- a/include/config.h +++ b/include/config.h @@ -1,6 +1,23 @@ #ifndef GUARD_CONFIG_H #define GUARD_CONFIG_H +// In the Generation 3 games, Asserts were used in various debug builds. +// Ruby/Sapphire and Emerald do not have these asserts while Fire Red +// still has them in the ROM. This is because the developers forgot +// to define NDEBUG before release, however this has been changed as +// Ruby's actual debug build does not use the AGBPrint features. +#define NDEBUG + +// To enable print debugging, comment out "#define NDEBUG". This allows +// the various AGBPrint functions to be used. (See include/gba/isagbprint.h). +// Some emulators support a debug console window: uncomment NoCashGBAPrint() +// and NoCashGBAPrintf() in libisagbprn.c to use no$gba's own proprietary +// printing system. Use NoCashGBAPrint() and NoCashGBAPrintf() like you +// would normally use AGBPrint() and AGBPrintf(). + +// NOTE: Don't try to enable assert right now as many pointers +// still exist in defines and WILL likely result in a broken ROM. + #define ENGLISH #ifdef ENGLISH diff --git a/include/constants/abilities.h b/include/constants/abilities.h new file mode 100644 index 000000000..4ad54c86f --- /dev/null +++ b/include/constants/abilities.h @@ -0,0 +1,85 @@ +#ifndef GUARD_CONSTANTS_ABILITIES_H +#define GUARD_CONSTANTS_ABILITIES_H + +#define ABILITY_NONE 0 +#define ABILITY_STENCH 1 +#define ABILITY_DRIZZLE 2 +#define ABILITY_SPEED_BOOST 3 +#define ABILITY_BATTLE_ARMOR 4 +#define ABILITY_STURDY 5 +#define ABILITY_DAMP 6 +#define ABILITY_LIMBER 7 +#define ABILITY_SAND_VEIL 8 +#define ABILITY_STATIC 9 +#define ABILITY_VOLT_ABSORB 10 +#define ABILITY_WATER_ABSORB 11 +#define ABILITY_OBLIVIOUS 12 +#define ABILITY_CLOUD_NINE 13 +#define ABILITY_COMPOUND_EYES 14 +#define ABILITY_INSOMNIA 15 +#define ABILITY_COLOR_CHANGE 16 +#define ABILITY_IMMUNITY 17 +#define ABILITY_FLASH_FIRE 18 +#define ABILITY_SHIELD_DUST 19 +#define ABILITY_OWN_TEMPO 20 +#define ABILITY_SUCTION_CUPS 21 +#define ABILITY_INTIMIDATE 22 +#define ABILITY_SHADOW_TAG 23 +#define ABILITY_ROUGH_SKIN 24 +#define ABILITY_WONDER_GUARD 25 +#define ABILITY_LEVITATE 26 +#define ABILITY_EFFECT_SPORE 27 +#define ABILITY_SYNCHRONIZE 28 +#define ABILITY_CLEAR_BODY 29 +#define ABILITY_NATURAL_CURE 30 +#define ABILITY_LIGHTNING_ROD 31 +#define ABILITY_SERENE_GRACE 32 +#define ABILITY_SWIFT_SWIM 33 +#define ABILITY_CHLOROPHYLL 34 +#define ABILITY_ILLUMINATE 35 +#define ABILITY_TRACE 36 +#define ABILITY_HUGE_POWER 37 +#define ABILITY_POISON_POINT 38 +#define ABILITY_INNER_FOCUS 39 +#define ABILITY_MAGMA_ARMOR 40 +#define ABILITY_WATER_VEIL 41 +#define ABILITY_MAGNET_PULL 42 +#define ABILITY_SOUNDPROOF 43 +#define ABILITY_RAIN_DISH 44 +#define ABILITY_SAND_STREAM 45 +#define ABILITY_PRESSURE 46 +#define ABILITY_THICK_FAT 47 +#define ABILITY_EARLY_BIRD 48 +#define ABILITY_FLAME_BODY 49 +#define ABILITY_RUN_AWAY 50 +#define ABILITY_KEEN_EYE 51 +#define ABILITY_HYPER_CUTTER 52 +#define ABILITY_PICKUP 53 +#define ABILITY_TRUANT 54 +#define ABILITY_HUSTLE 55 +#define ABILITY_CUTE_CHARM 56 +#define ABILITY_PLUS 57 +#define ABILITY_MINUS 58 +#define ABILITY_FORECAST 59 +#define ABILITY_STICKY_HOLD 60 +#define ABILITY_SHED_SKIN 61 +#define ABILITY_GUTS 62 +#define ABILITY_MARVEL_SCALE 63 +#define ABILITY_LIQUID_OOZE 64 +#define ABILITY_OVERGROW 65 +#define ABILITY_BLAZE 66 +#define ABILITY_TORRENT 67 +#define ABILITY_SWARM 68 +#define ABILITY_ROCK_HEAD 69 +#define ABILITY_DROUGHT 70 +#define ABILITY_ARENA_TRAP 71 +#define ABILITY_VITAL_SPIRIT 72 +#define ABILITY_WHITE_SMOKE 73 +#define ABILITY_PURE_POWER 74 +#define ABILITY_SHELL_ARMOR 75 +#define ABILITY_CACOPHONY 76 +#define ABILITY_AIR_LOCK 77 + +#define ABILITIES_COUNT 78 + +#endif // GUARD_CONSTANTS_ABILITIES_H diff --git a/include/constants/battle.h b/include/constants/battle.h new file mode 100644 index 000000000..b3f9d919a --- /dev/null +++ b/include/constants/battle.h @@ -0,0 +1,284 @@ +#ifndef GUARD_CONSTANTS_BATTLE_H +#define GUARD_CONSTANTS_BATTLE_H + +/* + * A battler may be in one of four positions on the field. The first bit determines + * what side the battler is on, either the player's side or the opponent's side. + * The second bit determines what flank the battler is on, either the left or right. + * Note that the opponent's flanks are drawn corresponding to their perspective, so + * their right mon appears on the left, and their left mon appears on the right. + * The battler ID is usually the same as the position, except in the case of link battles. + * + * + ------------------------- + + * | Opponent's side | + * | Right Left | + * | 3 1 | + * | | + * | Player's side | + * | Left Right | + * | 0 2 | + * ----------------------------+ + * | | + * | | + * +---------------------------+ + */ + +#define MAX_BATTLERS_COUNT 4 + +#define B_POSITION_PLAYER_LEFT 0 +#define B_POSITION_OPPONENT_LEFT 1 +#define B_POSITION_PLAYER_RIGHT 2 +#define B_POSITION_OPPONENT_RIGHT 3 + +// These macros can be used with either battler ID or positions to get the partner or the opposite mon +#define BATTLE_OPPOSITE(id) ((id) ^ 1) +#define BATTLE_PARTNER(id) ((id) ^ 2) + +#define B_SIDE_PLAYER 0 +#define B_SIDE_OPPONENT 1 + +#define B_FLANK_LEFT 0 +#define B_FLANK_RIGHT 1 + +#define BIT_SIDE 1 +#define BIT_FLANK 2 + +// Battle Type Flags +#define BATTLE_TYPE_DOUBLE 0x0001 +#define BATTLE_TYPE_LINK 0x0002 +#define BATTLE_TYPE_WILD 0x0004 +#define BATTLE_TYPE_TRAINER 0x0008 +#define BATTLE_TYPE_FIRST_BATTLE 0x0010 +#define BATTLE_TYPE_20 0x0020 +#define BATTLE_TYPE_MULTI 0x0040 +#define BATTLE_TYPE_SAFARI 0x0080 +#define BATTLE_TYPE_BATTLE_TOWER 0x0100 +#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200 +#define BATTLE_TYPE_ROAMER 0x0400 +#define BATTLE_TYPE_EREADER_TRAINER 0x0800 +#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 +#define BATTLE_TYPE_LEGENDARY 0x2000 +#define BATTLE_TYPE_REGI 0x4000 +#define BATTLE_TYPE_TWO_OPPONENTS 0x8000 +#define BATTLE_TYPE_DOME 0x10000 +#define BATTLE_TYPE_PALACE 0x20000 +#define BATTLE_TYPE_ARENA 0x40000 +#define BATTLE_TYPE_FACTORY 0x80000 +#define BATTLE_TYPE_PIKE 0x100000 +#define BATTLE_TYPE_PYRAMID 0x200000 +#define BATTLE_TYPE_INGAME_PARTNER 0x400000 +#define BATTLE_TYPE_x800000 0x800000 +#define BATTLE_TYPE_RECORDED 0x1000000 +#define BATTLE_TYPE_x2000000 0x2000000 +#define BATTLE_TYPE_x4000000 0x4000000 +#define BATTLE_TYPE_SECRET_BASE 0x8000000 +#define BATTLE_TYPE_GROUDON 0x10000000 +#define BATTLE_TYPE_KYOGRE 0x20000000 +#define BATTLE_TYPE_RAYQUAZA 0x40000000 +#define BATTLE_TYPE_x80000000 0x80000000 +#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID) +#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE) + +// Battle Outcome defines +#define B_OUTCOME_WON 0x1 +#define B_OUTCOME_LOST 0x2 +#define B_OUTCOME_DREW 0x3 +#define B_OUTCOME_RAN 0x4 +#define B_OUTCOME_PLAYER_TELEPORTED 0x5 +#define B_OUTCOME_MON_FLED 0x6 +#define B_OUTCOME_CAUGHT 0x7 +#define B_OUTCOME_NO_SAFARI_BALLS 0x8 +#define B_OUTCOME_FORFEITED 0x9 +#define B_OUTCOME_MON_TELEPORTED 0xA +#define B_OUTCOME_LINK_BATTLE_RAN 0x80 + +// Non-volatile status conditions +// These persist remain outside of battle and after switching out +#define STATUS1_NONE 0x0 +#define STATUS1_SLEEP 0x7 +#define STATUS1_POISON 0x8 +#define STATUS1_BURN 0x10 +#define STATUS1_FREEZE 0x20 +#define STATUS1_PARALYSIS 0x40 +#define STATUS1_TOXIC_POISON 0x80 +#define STATUS1_TOXIC_COUNTER 0xF00 +#define STATUS1_PSN_ANY (STATUS1_POISON | STATUS1_TOXIC_POISON) +#define STATUS1_ANY (STATUS1_SLEEP | STATUS1_POISON | STATUS1_BURN | STATUS1_FREEZE | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON) + +// Volatile status ailments +// These are removed after exiting the battle or switching out +#define STATUS2_CONFUSION 0x00000007 +#define STATUS2_FLINCHED 0x00000008 +#define STATUS2_UPROAR 0x00000070 +#define STATUS2_BIDE 0x00000300 // two bits 0x100, 0x200 +#define STATUS2_LOCK_CONFUSE 0x00000C00 +#define STATUS2_MULTIPLETURNS 0x00001000 +#define STATUS2_WRAPPED 0x0000E000 +#define STATUS2_INFATUATION 0x000F0000 // 4 bits, one for every battler +#define STATUS2_INFATUATED_WITH(battler) (gBitTable[battler] << 16) +#define STATUS2_FOCUS_ENERGY 0x00100000 +#define STATUS2_TRANSFORMED 0x00200000 +#define STATUS2_RECHARGE 0x00400000 +#define STATUS2_RAGE 0x00800000 +#define STATUS2_SUBSTITUTE 0x01000000 +#define STATUS2_DESTINY_BOND 0x02000000 +#define STATUS2_ESCAPE_PREVENTION 0x04000000 +#define STATUS2_NIGHTMARE 0x08000000 +#define STATUS2_CURSED 0x10000000 +#define STATUS2_FORESIGHT 0x20000000 +#define STATUS2_DEFENSE_CURL 0x40000000 +#define STATUS2_TORMENT 0x80000000 + +// Seems like per-battler statuses. Not quite sure how to categorize these +#define STATUS3_LEECHSEED_BATTLER 0x3 +#define STATUS3_LEECHSEED 0x4 +#define STATUS3_ALWAYS_HITS 0x18 // two bits +#define STATUS3_PERISH_SONG 0x20 +#define STATUS3_ON_AIR 0x40 +#define STATUS3_UNDERGROUND 0x80 +#define STATUS3_MINIMIZED 0x100 +#define STATUS3_ROOTED 0x400 +#define STATUS3_CHARGED_UP 0x200 +#define STATUS3_YAWN 0x1800 // two bits +#define STATUS3_IMPRISONED_OTHERS 0x2000 +#define STATUS3_GRUDGE 0x4000 +#define STATUS3_CANT_SCORE_A_CRIT 0x8000 +#define STATUS3_MUDSPORT 0x10000 +#define STATUS3_WATERSPORT 0x20000 +#define STATUS3_UNDERWATER 0x40000 +#define STATUS3_INTIMIDATE_POKES 0x80000 +#define STATUS3_TRACE 0x100000 +#define STATUS3_SEMI_INVULNERABLE (STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER) + +// Not really sure what a "hitmarker" is. +#define HITMARKER_x10 0x00000010 +#define HITMARKER_x20 0x00000020 +#define HITMARKER_DESTINYBOND 0x00000040 +#define HITMARKER_NO_ANIMATIONS 0x00000080 +#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100 +#define HITMARKER_NO_ATTACKSTRING 0x00000200 +#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400 +#define HITMARKER_NO_PPDEDUCT 0x00000800 +#define HITMARKER_SWAP_ATTACKER_TARGET 0x00001000 +#define HITMARKER_IGNORE_SAFEGUARD 0x00002000 +#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000 +#define HITMARKER_RUN 0x00008000 +#define HITMARKER_IGNORE_ON_AIR 0x00010000 +#define HITMARKER_IGNORE_UNDERGROUND 0x00020000 +#define HITMARKER_IGNORE_UNDERWATER 0x00040000 +#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000 +#define HITMARKER_x100000 0x00100000 +#define HITMARKER_x200000 0x00200000 +#define HITMARKER_x400000 0x00400000 +#define HITMARKER_x800000 0x00800000 +#define HITMARKER_GRUDGE 0x01000000 +#define HITMARKER_OBEYS 0x02000000 +#define HITMARKER_x4000000 0x04000000 +#define HITMARKER_x8000000 0x08000000 +#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 0x1C) +#define HITMARKER_UNK(battler) (0x10000000 << battler) + +// Per-side statuses that affect an entire party +#define SIDE_STATUS_REFLECT (1 << 0) +#define SIDE_STATUS_LIGHTSCREEN (1 << 1) +#define SIDE_STATUS_X4 (1 << 2) +#define SIDE_STATUS_SPIKES (1 << 4) +#define SIDE_STATUS_SAFEGUARD (1 << 5) +#define SIDE_STATUS_FUTUREATTACK (1 << 6) +#define SIDE_STATUS_MIST (1 << 8) +#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9) + +// Flags describing move's result +#define MOVE_RESULT_MISSED (1 << 0) +#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1) +#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2) +#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3) +#define MOVE_RESULT_ONE_HIT_KO (1 << 4) +#define MOVE_RESULT_FAILED (1 << 5) +#define MOVE_RESULT_FOE_ENDURED (1 << 6) +#define MOVE_RESULT_FOE_HUNG_ON (1 << 7) +#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED) + +// Battle Weather flags +#define WEATHER_RAIN_TEMPORARY (1 << 0) +#define WEATHER_RAIN_DOWNPOUR (1 << 1) // unused +#define WEATHER_RAIN_PERMANENT (1 << 2) +#define WEATHER_RAIN_ANY (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT) +#define WEATHER_SANDSTORM_TEMPORARY (1 << 3) +#define WEATHER_SANDSTORM_PERMANENT (1 << 4) +#define WEATHER_SANDSTORM_ANY (WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT) +#define WEATHER_SUN_TEMPORARY (1 << 5) +#define WEATHER_SUN_PERMANENT (1 << 6) +#define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT) +#define WEATHER_HAIL (1 << 7) +#define WEATHER_HAIL_ANY (WEATHER_HAIL) +#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY) + +// Move Effects +#define MOVE_EFFECT_SLEEP 0x1 +#define MOVE_EFFECT_POISON 0x2 +#define MOVE_EFFECT_BURN 0x3 +#define MOVE_EFFECT_FREEZE 0x4 +#define MOVE_EFFECT_PARALYSIS 0x5 +#define MOVE_EFFECT_TOXIC 0x6 +#define MOVE_EFFECT_CONFUSION 0x7 +#define MOVE_EFFECT_FLINCH 0x8 +#define MOVE_EFFECT_TRI_ATTACK 0x9 +#define MOVE_EFFECT_UPROAR 0xA +#define MOVE_EFFECT_PAYDAY 0xB +#define MOVE_EFFECT_CHARGING 0xC +#define MOVE_EFFECT_WRAP 0xD +#define MOVE_EFFECT_RECOIL_25 0xE +#define MOVE_EFFECT_ATK_PLUS_1 0xF +#define MOVE_EFFECT_DEF_PLUS_1 0x10 +#define MOVE_EFFECT_SPD_PLUS_1 0x11 +#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12 +#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13 +#define MOVE_EFFECT_ACC_PLUS_1 0x14 +#define MOVE_EFFECT_EVS_PLUS_1 0x15 +#define MOVE_EFFECT_ATK_MINUS_1 0x16 +#define MOVE_EFFECT_DEF_MINUS_1 0x17 +#define MOVE_EFFECT_SPD_MINUS_1 0x18 +#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19 +#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A +#define MOVE_EFFECT_ACC_MINUS_1 0x1B +#define MOVE_EFFECT_EVS_MINUS_1 0x1C +#define MOVE_EFFECT_RECHARGE 0x1D +#define MOVE_EFFECT_RAGE 0x1E +#define MOVE_EFFECT_STEAL_ITEM 0x1F +#define MOVE_EFFECT_PREVENT_ESCAPE 0x20 +#define MOVE_EFFECT_NIGHTMARE 0x21 +#define MOVE_EFFECT_ALL_STATS_UP 0x22 +#define MOVE_EFFECT_RAPIDSPIN 0x23 +#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24 +#define MOVE_EFFECT_ATK_DEF_DOWN 0x25 +#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26 +#define MOVE_EFFECT_ATK_PLUS_2 0x27 +#define MOVE_EFFECT_DEF_PLUS_2 0x28 +#define MOVE_EFFECT_SPD_PLUS_2 0x29 +#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A +#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B +#define MOVE_EFFECT_ACC_PLUS_2 0x2C +#define MOVE_EFFECT_EVS_PLUS_2 0x2D +#define MOVE_EFFECT_ATK_MINUS_2 0x2E +#define MOVE_EFFECT_DEF_MINUS_2 0x2F +#define MOVE_EFFECT_SPD_MINUS_2 0x30 +#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31 +#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32 +#define MOVE_EFFECT_ACC_MINUS_2 0x33 +#define MOVE_EFFECT_EVS_MINUS_2 0x34 +#define MOVE_EFFECT_THRASH 0x35 +#define MOVE_EFFECT_KNOCK_OFF 0x36 +#define MOVE_EFFECT_NOTHING_37 0x37 +#define MOVE_EFFECT_NOTHING_38 0x38 +#define MOVE_EFFECT_NOTHING_39 0x39 +#define MOVE_EFFECT_NOTHING_3A 0x3A +#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B +#define MOVE_EFFECT_NOTHING_3C 0x3C +#define MOVE_EFFECT_NOTHING_3D 0x3D +#define MOVE_EFFECT_NOTHING_3E 0x3E +#define MOVE_EFFECT_NOTHING_3F 0x3F +#define MOVE_EFFECT_AFFECTS_USER 0x40 +#define MOVE_EFFECT_CERTAIN 0x80 + +#endif // GUARD_CONSTANTS_BATTLE_H diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h new file mode 100644 index 000000000..7d2c70307 --- /dev/null +++ b/include/constants/battle_ai.h @@ -0,0 +1,52 @@ +#ifndef GUARD_CONSTANTS_BATTLE_AI_H +#define GUARD_CONSTANTS_BATTLE_AI_H + +// battlers +#define AI_TARGET 0 +#define AI_USER 1 +#define AI_TARGET_PARTNER 2 +#define AI_USER_PARTNER 3 + +// get_type command +#define AI_TYPE1_TARGET 0 +#define AI_TYPE1_USER 1 +#define AI_TYPE2_TARGET 2 +#define AI_TYPE2_USER 3 +#define AI_TYPE_MOVE 4 + +// type effectiveness +#define AI_EFFECTIVENESS_x4 160 +#define AI_EFFECTIVENESS_x2 80 +#define AI_EFFECTIVENESS_x1 40 +#define AI_EFFECTIVENESS_x0_5 20 +#define AI_EFFECTIVENESS_x0_25 10 +#define AI_EFFECTIVENESS_x0 0 + +// ai weather +#define AI_WEATHER_SUN 0 +#define AI_WEATHER_RAIN 1 +#define AI_WEATHER_SANDSTORM 2 +#define AI_WEATHER_HAIL 3 + +// get_how_powerful_move_is +#define MOVE_POWER_DISCOURAGED 0 +#define MOVE_NOT_MOST_POWERFUL 1 +#define MOVE_MOST_POWERFUL 2 + +// script's table id to bit +#define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0) +#define AI_SCRIPT_CHECK_VIABILITY (1 << 1) +#define AI_SCRIPT_TRY_TO_FAINT (1 << 2) +#define AI_SCRIPT_SETUP_FIRST_TURN (1 << 3) +#define AI_SCRIPT_RISKY (1 << 4) +#define AI_SCRIPT_PREFER_STRONGEST_MOVE (1 << 5) +#define AI_SCRIPT_PREFER_BATON_PASS (1 << 6) +#define AI_SCRIPT_DOUBLE_BATTLE (1 << 7) +#define AI_SCRIPT_HP_AWARE (1 << 8) +#define AI_SCRIPT_UNKNOWN (1 << 9) +// 10 - 28 are not used +#define AI_SCRIPT_ROAMING (1 << 29) +#define AI_SCRIPT_SAFARI (1 << 30) +#define AI_SCRIPT_FIRST_BATTLE (1 << 31) + +#endif // GUARD_CONSTANTS_BATTLE_AI_H diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h new file mode 100644 index 000000000..270ac55e0 --- /dev/null +++ b/include/constants/battle_anim.h @@ -0,0 +1,85 @@ +#ifndef GUARD_CONSTANTS_BATTLE_ANIM_H +#define GUARD_CONSTANTS_BATTLE_ANIM_H + +// battlers +#define ANIM_ATTACKER 0 +#define ANIM_TARGET 1 +#define ANIM_ATK_PARTNER 2 +#define ANIM_DEF_PARTNER 3 + +// move background ids +#define BG_DARK_ 0 // the same as BG_DARK but is unused +#define BG_DARK 1 +#define BG_GHOST 2 +#define BG_PSYCHIC 3 +#define BG_IMPACT_OPPONENT 4 +#define BG_IMPACT_PLAYER 5 +#define BG_IMPACT_CONTESTS 6 +#define BG_DRILL 7 +#define BG_DRILL_CONTESTS 8 +#define BG_HIGHSPEED_OPPONENT 9 +#define BG_HIGHSPEED_PLAYER 10 +#define BG_THUNDER 11 +#define BG_GUILLOTINE_OPPONENT 12 +#define BG_GUILLOTINE_PLAYER 13 +#define BG_GUILLOTINE_CONTESTS 14 +#define BG_ICE 15 +#define BG_COSMIC 16 +#define BG_SEISMICTOSS_SKUUPPERCUT 17 +#define BG_FLYING 18 +#define BG_FLYING_CONTESTS 19 +#define BG_AURORABEAM 20 +#define BG_FISSURE 21 +#define BG_BUG_OPPONENT 22 +#define BG_BUG_PLAYER 23 +#define BG_SOLARBEAM_OPPONENT 24 +#define BG_SOLARBEAM_PLAYER 25 +#define BG_SOLARBEAM_CONTESTS 26 + +// table ids for general animations +#define B_ANIM_CASTFORM_CHANGE 0x0 +#define B_ANIM_STATS_CHANGE 0x1 +#define B_ANIM_SUBSTITUTE_FADE 0x2 +#define B_ANIM_SUBSTITUTE_APPEAR 0x3 +#define B_ANIM_x4 0x4 +#define B_ANIM_ITEM_KNOCKOFF 0x5 +#define B_ANIM_TURN_TRAP 0x6 +#define B_ANIM_ITEM_EFFECT 0x7 +#define B_ANIM_SMOKEBALL_ESCAPE 0x8 +#define B_ANIM_HANGED_ON 0x9 +#define B_ANIM_RAIN_CONTINUES 0xA +#define B_ANIM_SUN_CONTINUES 0xB +#define B_ANIM_SANDSTORM_CONTINUES 0xC +#define B_ANIM_HAIL_CONTINUES 0xD +#define B_ANIM_LEECH_SEED_DRAIN 0xE +#define B_ANIM_MON_HIT 0xF +#define B_ANIM_ITEM_STEAL 0x10 +#define B_ANIM_SNATCH_MOVE 0x11 +#define B_ANIM_FUTURE_SIGHT_HIT 0x12 +#define B_ANIM_DOOM_DESIRE_HIT 0x13 +#define B_ANIM_x14 0x14 +#define B_ANIM_INGRAIN_HEAL 0x15 +#define B_ANIM_WISH_HEAL 0x16 + +// special animations table +#define B_ANIM_LVL_UP 0x0 +#define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1 +#define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2 +#define B_ANIM_BALL_THROW 0x3 +#define B_ANIM_SAFARI_BALL_THROW 0x4 +#define B_ANIM_SUBSTITUTE_TO_MON 0x5 +#define B_ANIM_MON_TO_SUBSTITUTE 0x6 + +// status animation table +#define B_ANIM_STATUS_PSN 0x0 +#define B_ANIM_STATUS_CONFUSION 0x1 +#define B_ANIM_STATUS_BRN 0x2 +#define B_ANIM_STATUS_INFATUATION 0x3 +#define B_ANIM_STATUS_SLP 0x4 +#define B_ANIM_STATUS_PRZ 0x5 +#define B_ANIM_STATUS_FRZ 0x6 +#define B_ANIM_STATUS_CURSED 0x7 +#define B_ANIM_STATUS_NIGHTMARE 0x8 +#define B_ANIM_STATUS_WRAPPED 0x9 // does not actually exist + +#endif // GUARD_CONSTANTS_BATTLE_ANIM_H diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h new file mode 100644 index 000000000..4145805c4 --- /dev/null +++ b/include/constants/battle_frontier.h @@ -0,0 +1,13 @@ +#ifndef GUARD_CONSTANTS_BATTLE_FRONTIER_H +#define GUARD_CONSTANTS_BATTLE_FRONTIER_H + +// Battle Frontier facility ids. +#define FRONTIER_FACILITY_TOWER 0 +#define FRONTIER_FACILITY_DOME 1 +#define FRONTIER_FACILITY_PALACE 2 +#define FRONTIER_FACILITY_ARENA 3 +#define FRONTIER_FACILITY_FACTORY 4 +#define FRONTIER_FACILITY_PIKE 5 +#define FRONTIER_FACILITY_PYRAMID 6 + +#endif // GUARD_CONSTANTS_BATTLE_FRONTIER_H diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h new file mode 100644 index 000000000..b54f01353 --- /dev/null +++ b/include/constants/battle_move_effects.h @@ -0,0 +1,219 @@ +#ifndef GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H +#define GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H + +#define EFFECT_HIT 0 +#define EFFECT_SLEEP 1 +#define EFFECT_POISON_HIT 2 +#define EFFECT_ABSORB 3 +#define EFFECT_BURN_HIT 4 +#define EFFECT_FREEZE_HIT 5 +#define EFFECT_PARALYZE_HIT 6 +#define EFFECT_EXPLOSION 7 +#define EFFECT_DREAM_EATER 8 +#define EFFECT_MIRROR_MOVE 9 +#define EFFECT_ATTACK_UP 10 +#define EFFECT_DEFENSE_UP 11 +#define EFFECT_SPEED_UP 12 +#define EFFECT_SPECIAL_ATTACK_UP 13 +#define EFFECT_SPECIAL_DEFENSE_UP 14 +#define EFFECT_ACCURACY_UP 15 +#define EFFECT_EVASION_UP 16 +#define EFFECT_ALWAYS_HIT 17 +#define EFFECT_ATTACK_DOWN 18 +#define EFFECT_DEFENSE_DOWN 19 +#define EFFECT_SPEED_DOWN 20 +#define EFFECT_SPECIAL_ATTACK_DOWN 21 // unused +#define EFFECT_SPECIAL_DEFENSE_DOWN 22 // unused +#define EFFECT_ACCURACY_DOWN 23 +#define EFFECT_EVASION_DOWN 24 +#define EFFECT_HAZE 25 +#define EFFECT_BIDE 26 +#define EFFECT_RAMPAGE 27 +#define EFFECT_ROAR 28 +#define EFFECT_MULTI_HIT 29 +#define EFFECT_CONVERSION 30 +#define EFFECT_FLINCH_HIT 31 +#define EFFECT_RESTORE_HP 32 +#define EFFECT_TOXIC 33 +#define EFFECT_PAY_DAY 34 +#define EFFECT_LIGHT_SCREEN 35 +#define EFFECT_TRI_ATTACK 36 +#define EFFECT_REST 37 +#define EFFECT_OHKO 38 +#define EFFECT_RAZOR_WIND 39 +#define EFFECT_SUPER_FANG 40 +#define EFFECT_DRAGON_RAGE 41 +#define EFFECT_TRAP 42 +#define EFFECT_HIGH_CRITICAL 43 +#define EFFECT_DOUBLE_HIT 44 +#define EFFECT_RECOIL_IF_MISS 45 +#define EFFECT_MIST 46 +#define EFFECT_FOCUS_ENERGY 47 +#define EFFECT_RECOIL 48 +#define EFFECT_CONFUSE 49 +#define EFFECT_ATTACK_UP_2 50 +#define EFFECT_DEFENSE_UP_2 51 +#define EFFECT_SPEED_UP_2 52 +#define EFFECT_SPECIAL_ATTACK_UP_2 53 +#define EFFECT_SPECIAL_DEFENSE_UP_2 54 +#define EFFECT_ACCURACY_UP_2 55 +#define EFFECT_EVASION_UP_2 56 +#define EFFECT_TRANSFORM 57 +#define EFFECT_ATTACK_DOWN_2 58 +#define EFFECT_DEFENSE_DOWN_2 59 +#define EFFECT_SPEED_DOWN_2 60 +#define EFFECT_SPECIAL_ATTACK_DOWN_2 61 +#define EFFECT_SPECIAL_DEFENSE_DOWN_2 62 +#define EFFECT_ACCURACY_DOWN_2 63 +#define EFFECT_EVASION_DOWN_2 64 +#define EFFECT_REFLECT 65 +#define EFFECT_POISON 66 +#define EFFECT_PARALYZE 67 +#define EFFECT_ATTACK_DOWN_HIT 68 +#define EFFECT_DEFENSE_DOWN_HIT 69 +#define EFFECT_SPEED_DOWN_HIT 70 +#define EFFECT_SPECIAL_ATTACK_DOWN_HIT 71 +#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT 72 +#define EFFECT_ACCURACY_DOWN_HIT 73 +#define EFFECT_EVASION_DOWN_HIT 74 +#define EFFECT_SKY_ATTACK 75 +#define EFFECT_CONFUSE_HIT 76 +#define EFFECT_TWINEEDLE 77 +#define EFFECT_VITAL_THROW 78 +#define EFFECT_SUBSTITUTE 79 +#define EFFECT_RECHARGE 80 +#define EFFECT_RAGE 81 +#define EFFECT_MIMIC 82 +#define EFFECT_METRONOME 83 +#define EFFECT_LEECH_SEED 84 +#define EFFECT_SPLASH 85 +#define EFFECT_DISABLE 86 +#define EFFECT_LEVEL_DAMAGE 87 +#define EFFECT_PSYWAVE 88 +#define EFFECT_COUNTER 89 +#define EFFECT_ENCORE 90 +#define EFFECT_PAIN_SPLIT 91 +#define EFFECT_SNORE 92 +#define EFFECT_CONVERSION_2 93 +#define EFFECT_LOCK_ON 94 +#define EFFECT_SKETCH 95 +#define EFFECT_UNUSED_60 96 // thaw +#define EFFECT_SLEEP_TALK 97 +#define EFFECT_DESTINY_BOND 98 +#define EFFECT_FLAIL 99 +#define EFFECT_SPITE 100 +#define EFFECT_FALSE_SWIPE 101 +#define EFFECT_HEAL_BELL 102 +#define EFFECT_QUICK_ATTACK 103 +#define EFFECT_TRIPLE_KICK 104 +#define EFFECT_THIEF 105 +#define EFFECT_MEAN_LOOK 106 +#define EFFECT_NIGHTMARE 107 +#define EFFECT_MINIMIZE 108 +#define EFFECT_CURSE 109 +#define EFFECT_UNUSED_6E 110 +#define EFFECT_PROTECT 111 +#define EFFECT_SPIKES 112 +#define EFFECT_FORESIGHT 113 +#define EFFECT_PERISH_SONG 114 +#define EFFECT_SANDSTORM 115 +#define EFFECT_ENDURE 116 +#define EFFECT_ROLLOUT 117 +#define EFFECT_SWAGGER 118 +#define EFFECT_FURY_CUTTER 119 +#define EFFECT_ATTRACT 120 +#define EFFECT_RETURN 121 +#define EFFECT_PRESENT 122 +#define EFFECT_FRUSTRATION 123 +#define EFFECT_SAFEGUARD 124 +#define EFFECT_THAW_HIT 125 +#define EFFECT_MAGNITUDE 126 +#define EFFECT_BATON_PASS 127 +#define EFFECT_PURSUIT 128 +#define EFFECT_RAPID_SPIN 129 +#define EFFECT_SONICBOOM 130 +#define EFFECT_UNUSED_83 131 +#define EFFECT_MORNING_SUN 132 +#define EFFECT_SYNTHESIS 133 +#define EFFECT_MOONLIGHT 134 +#define EFFECT_HIDDEN_POWER 135 +#define EFFECT_RAIN_DANCE 136 +#define EFFECT_SUNNY_DAY 137 +#define EFFECT_DEFENSE_UP_HIT 138 +#define EFFECT_ATTACK_UP_HIT 139 +#define EFFECT_ALL_STATS_UP_HIT 140 +#define EFFECT_UNUSED_8D 141 // incomplete fake out in gen 2 +#define EFFECT_BELLY_DRUM 142 +#define EFFECT_PSYCH_UP 143 +#define EFFECT_MIRROR_COAT 144 +#define EFFECT_SKULL_BASH 145 +#define EFFECT_TWISTER 146 +#define EFFECT_EARTHQUAKE 147 +#define EFFECT_FUTURE_SIGHT 148 +#define EFFECT_GUST 149 +#define EFFECT_FLINCH_MINIMIZE_HIT 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM +#define EFFECT_SOLARBEAM 151 +#define EFFECT_THUNDER 152 +#define EFFECT_TELEPORT 153 +#define EFFECT_BEAT_UP 154 +#define EFFECT_SEMI_INVULNERABLE 155 +#define EFFECT_DEFENSE_CURL 156 +#define EFFECT_SOFTBOILED 157 +#define EFFECT_FAKE_OUT 158 +#define EFFECT_UPROAR 159 +#define EFFECT_STOCKPILE 160 +#define EFFECT_SPIT_UP 161 +#define EFFECT_SWALLOW 162 +#define EFFECT_UNUSED_A3 163 +#define EFFECT_HAIL 164 +#define EFFECT_TORMENT 165 +#define EFFECT_FLATTER 166 +#define EFFECT_WILL_O_WISP 167 +#define EFFECT_MEMENTO 168 +#define EFFECT_FACADE 169 +#define EFFECT_FOCUS_PUNCH 170 +#define EFFECT_SMELLINGSALT 171 +#define EFFECT_FOLLOW_ME 172 +#define EFFECT_NATURE_POWER 173 +#define EFFECT_CHARGE 174 +#define EFFECT_TAUNT 175 +#define EFFECT_HELPING_HAND 176 +#define EFFECT_TRICK 177 +#define EFFECT_ROLE_PLAY 178 +#define EFFECT_WISH 179 +#define EFFECT_ASSIST 180 +#define EFFECT_INGRAIN 181 +#define EFFECT_SUPERPOWER 182 +#define EFFECT_MAGIC_COAT 183 +#define EFFECT_RECYCLE 184 +#define EFFECT_REVENGE 185 +#define EFFECT_BRICK_BREAK 186 +#define EFFECT_YAWN 187 +#define EFFECT_KNOCK_OFF 188 +#define EFFECT_ENDEAVOR 189 +#define EFFECT_ERUPTION 190 +#define EFFECT_SKILL_SWAP 191 +#define EFFECT_IMPRISON 192 +#define EFFECT_REFRESH 193 +#define EFFECT_GRUDGE 194 +#define EFFECT_SNATCH 195 +#define EFFECT_LOW_KICK 196 +#define EFFECT_SECRET_POWER 197 +#define EFFECT_DOUBLE_EDGE 198 +#define EFFECT_TEETER_DANCE 199 +#define EFFECT_BLAZE_KICK 200 +#define EFFECT_MUD_SPORT 201 +#define EFFECT_POISON_FANG 202 +#define EFFECT_WEATHER_BALL 203 +#define EFFECT_OVERHEAT 204 +#define EFFECT_TICKLE 205 +#define EFFECT_COSMIC_POWER 206 +#define EFFECT_SKY_UPPERCUT 207 +#define EFFECT_BULK_UP 208 +#define EFFECT_POISON_TAIL 209 +#define EFFECT_WATER_SPORT 210 +#define EFFECT_CALM_MIND 211 +#define EFFECT_DRAGON_DANCE 212 +#define EFFECT_CAMOUFLAGE 213 + +#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h new file mode 100644 index 000000000..84ec9d512 --- /dev/null +++ b/include/constants/battle_script_commands.h @@ -0,0 +1,106 @@ +#ifndef GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H +#define GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H + +// Battle Scripting and BattleCommunication addresses +#define sPAINSPLIT_HP gBattleScripting +#define sBIDE_DMG gBattleScripting + 4 +#define sMULTIHIT_STRING gBattleScripting + 8 +#define sDMG_MULTIPLIER gBattleScripting + 0xE +#define sTWOTURN_STRINGID gBattleScripting + 0xF +#define sB_ANIM_ARG1 gBattleScripting + 0x10 +#define sB_ANIM_ARG2 gBattleScripting + 0x11 +#define sTRIPLE_KICK_POWER gBattleScripting + 0x12 +#define sMOVEEND_STATE gBattleScripting + 0x14 +#define sBANK_WITH_ABILITY gBattleScripting + 0x15 +#define sMULTIHIT_EFFECT gBattleScripting + 0x16 +#define sBANK gBattleScripting + 0x17 +#define sB_ANIM_TURN gBattleScripting + 0x18 +#define sB_ANIM_TARGETS_HIT gBattleScripting + 0x19 +#define sSTATCHANGER gBattleScripting + 0x1A +#define sSTAT_ANIM_PLAYED gBattleScripting + 0x1B +#define sGIVEEXP_STATE gBattleScripting + 0x1C +#define sBATTLE_STYLE gBattleScripting + 0x1D +#define sLVLBOX_STATE gBattleScripting + 0x1E +#define sLEARNMOVE_STATE gBattleScripting + 0x1F +#define sFIELD_20 gBattleScripting + 0x20 +#define sRESHOW_MAIN_STATE gBattleScripting + 0x21 +#define sRESHOW_HELPER_STATE gBattleScripting + 0x22 +#define sFIELD_23 gBattleScripting + 0x23 +#define sFIELD_24 gBattleScripting + 0x24 +#define sMULTIPLAYER_ID gBattleScripting + 0x25 + +#define cEFFECT_CHOOSER gBattleCommunication + 3 +#define cMULTISTRING_CHOOSER gBattleCommunication + 5 + +// Battle Script defines for getting the wanted battler +#define BS_TARGET 0 +#define BS_ATTACKER 1 +#define BS_EFFECT_BATTLER 2 +#define BS_FAINTED 3 +#define BS_BATTLER_0 7 +#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update +#define BS_ATTACKER_SIDE 8 // for atk1E_jumpifability +#define BS_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability +#define BS_SCRIPTING 10 +#define BS_PLAYER1 11 +#define BS_OPPONENT1 12 +#define BS_PLAYER2 13 +#define BS_OPPONENT2 14 + +// atk 01, accuracy calc +#define NO_ACC_CALC 0xFFFE +#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF +#define ACC_CURR_MOVE 0 + +// compare operands +#define CMP_EQUAL 0x0 +#define CMP_NOT_EQUAL 0x1 +#define CMP_GREATER_THAN 0x2 +#define CMP_LESS_THAN 0x3 +#define CMP_COMMON_BITS 0x4 +#define CMP_NO_COMMON_BITS 0x5 + +// atk76, various +#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 +#define VARIOUS_SET_MAGIC_COAT_TARGET 1 +#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 +#define VARIOUS_GET_MOVE_TARGET 3 +#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 +#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 +#define VARIOUS_EMIT_YESNOBOX 13 +#define VARIOUS_WAIT_CRY 18 +#define VARIOUS_RETURN_OPPONENT_MON1 19 +#define VARIOUS_RETURN_OPPONENT_MON2 20 +#define VARIOUS_SET_TELEPORT_OUTCOME 25 +#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 + +// atk80, dmg manipulation +#define ATK80_DMG_CHANGE_SIGN 0 +#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1 +#define ATK80_DMG_DOUBLED 2 + +// atk4F, a flag used for the jumpifcantswitch command +#define ATK4F_DONT_CHECK_STATUSES 0x80 + +// statchange defines +#define STAT_CHANGE_BS_PTR 0x1 +#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20 +#define STAT_CHANGE_WORKED 0 +#define STAT_CHANGE_DIDNT_WORK 1 + +// atk48 +#define ATK48_STAT_NEGATIVE 0x1 +#define ATK48_STAT_BY_TWO 0x2 +#define ATK48_ONLY_MULTIPLE 0x4 +#define ATK48_DONT_CHECK_LOWER 0x8 + +#define BIT_HP 0x1 +#define BIT_ATK 0x2 +#define BIT_DEF 0x4 +#define BIT_SPEED 0x8 +#define BIT_SPATK 0x10 +#define BIT_SPDEF 0x20 +#define BIT_ACC 0x40 +#define BIT_EVASION 0x80 + +#endif // GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H diff --git a/include/battle_string_ids.h b/include/constants/battle_string_ids.h index f242284b0..db9ed59bd 100644 --- a/include/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -1,5 +1,5 @@ -#ifndef GUARD_BATTLE_STRING_IDS_H -#define GUARD_BATTLE_STRING_IDS_H +#ifndef GUARD_CONSTANTS_BATTLE_STRING_IDS_H +#define GUARD_CONSTANTS_BATTLE_STRING_IDS_H #define BATTLESTRINGS_COUNT 369 @@ -12,7 +12,6 @@ #define STRINGID_USEDMOVE 4 #define STRINGID_BATTLEEND 5 - // todo: make some of those names less vague: attacker/target vs pkmn, etc. #define STRINGID_TRAINER1LOSETEXT 12 #define STRINGID_PKMNGAINEDEXP 13 @@ -384,4 +383,4 @@ #define STRINGID_TRAINER1WINTEXT 379 #define STRINGID_TRAINER2WINTEXT 380 -#endif // GUARD_BATTLE_STRING_IDS_H +#endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H diff --git a/include/constants/bg_event_constants.h b/include/constants/bg_event_constants.h new file mode 100755 index 000000000..a915bc509 --- /dev/null +++ b/include/constants/bg_event_constants.h @@ -0,0 +1,13 @@ +#ifndef GUARD_CONSTANTS_BG_EVENT_H +#define GUARD_CONSTANTS_BG_EVENT_H + +#define BG_EVENT_PLAYER_FACING_ANY 0 +#define BG_EVENT_PLAYER_FACING_NORTH 1 +#define BG_EVENT_PLAYER_FACING_SOUTH 2 +#define BG_EVENT_PLAYER_FACING_EAST 3 +#define BG_EVENT_PLAYER_FACING_WEST 4 + +#define BG_EVENT_HIDDEN_ITEM 7 +#define BG_EVENT_SECRET_BASE 8 + +#endif // GUARD_CONSTANTS_BG_EVENT_H diff --git a/include/constants/decorations.h b/include/constants/decorations.h new file mode 100644 index 000000000..b9f626d24 --- /dev/null +++ b/include/constants/decorations.h @@ -0,0 +1,127 @@ +#ifndef GUARD_CONSTANTS_DECORATIONS_H +#define GUARD_CONSTANTS_DECORATIONS_H + +#define DECOR_NONE 0 +#define DECOR_SMALL_DESK 1 +#define DECOR_POKEMON_DESK 2 +#define DECOR_HEAVY_DESK 3 +#define DECOR_RAGGED_DESK 4 +#define DECOR_COMFORT_DESK 5 +#define DECOR_PRETTY_DESK 6 +#define DECOR_BRICK_DESK 7 +#define DECOR_CAMP_DESK 8 +#define DECOR_HARD_DESK 9 +#define DECOR_SMALL_CHAIR 10 +#define DECOR_POKEMON_CHAIR 11 +#define DECOR_HEAVY_CHAIR 12 +#define DECOR_PRETTY_CHAIR 13 +#define DECOR_COMFORT_CHAIR 14 +#define DECOR_RAGGED_CHAIR 15 +#define DECOR_BRICK_CHAIR 16 +#define DECOR_CAMP_CHAIR 17 +#define DECOR_HARD_CHAIR 18 +#define DECOR_RED_PLANT 19 +#define DECOR_TROPICAL_PLANT 20 +#define DECOR_PRETTY_FLOWERS 21 +#define DECOR_COLORFUL_PLANT 22 +#define DECOR_BIG_PLANT 23 +#define DECOR_GORGEOUS_PLANT 24 +#define DECOR_RED_BRICK 25 +#define DECOR_YELLOW_BRICK 26 +#define DECOR_BLUE_BRICK 27 +#define DECOR_RED_BALLOON 28 +#define DECOR_BLUE_BALLOON 29 +#define DECOR_YELLOW_BALLOON 30 +#define DECOR_RED_TENT 31 +#define DECOR_BLUE_TENT 32 +#define DECOR_SOLID_BOARD 33 +#define DECOR_SLIDE 34 +#define DECOR_FENCE_LENGTH 35 +#define DECOR_FENCE_WIDTH 36 +#define DECOR_TIRE 37 +#define DECOR_STAND 38 +#define DECOR_MUD_BALL 39 +#define DECOR_BREAKABLE_DOOR 40 +#define DECOR_SAND_ORNAMENT 41 +#define DECOR_SILVER_SHIELD 42 +#define DECOR_GOLD_SHIELD 43 +#define DECOR_GLASS_ORNAMENT 44 +#define DECOR_TV 45 +#define DECOR_ROUND_TV 46 +#define DECOR_CUTE_TV 47 +#define DECOR_GLITTER_MAT 48 +#define DECOR_JUMP_MAT 49 +#define DECOR_SPIN_MAT 50 +#define DECOR_C_LOW_NOTE_MAT 51 +#define DECOR_D_NOTE_MAT 52 +#define DECOR_E_NOTE_MAT 53 +#define DECOR_F_NOTE_MAT 54 +#define DECOR_G_NOTE_MAT 55 +#define DECOR_A_NOTE_MAT 56 +#define DECOR_B_NOTE_MAT 57 +#define DECOR_C_HIGH_NOTE_MAT 58 +#define DECOR_SURF_MAT 59 +#define DECOR_THUNDER_MAT 60 +#define DECOR_FIRE_BLAST_MAT 61 +#define DECOR_POWDER_SNOW_MAT 62 +#define DECOR_ATTRACT_MAT 63 +#define DECOR_FISSURE_MAT 64 +#define DECOR_SPIKES_MAT 65 +#define DECOR_BALL_POSTER 66 +#define DECOR_GREEN_POSTER 67 +#define DECOR_RED_POSTER 68 +#define DECOR_BLUE_POSTER 69 +#define DECOR_CUTE_POSTER 70 +#define DECOR_PIKA_POSTER 71 +#define DECOR_LONG_POSTER 72 +#define DECOR_SEA_POSTER 73 +#define DECOR_SKY_POSTER 74 +#define DECOR_KISS_POSTER 75 +#define DECOR_PICHU_DOLL 76 +#define DECOR_PIKACHU_DOLL 77 +#define DECOR_MARILL_DOLL 78 +#define DECOR_TOGEPI_DOLL 79 +#define DECOR_CYNDAQUIL_DOLL 80 +#define DECOR_CHIKORITA_DOLL 81 +#define DECOR_TOTODILE_DOLL 82 +#define DECOR_JIGGLYPUFF_DOLL 83 +#define DECOR_MEOWTH_DOLL 84 +#define DECOR_CLEFAIRY_DOLL 85 +#define DECOR_DITTO_DOLL 86 +#define DECOR_SMOOCHUM_DOLL 87 +#define DECOR_TREECKO_DOLL 88 +#define DECOR_TORCHIC_DOLL 89 +#define DECOR_MUDKIP_DOLL 90 +#define DECOR_DUSKULL_DOLL 91 +#define DECOR_WYNAUT_DOLL 92 +#define DECOR_BALTOY_DOLL 93 +#define DECOR_KECLEON_DOLL 94 +#define DECOR_AZURILL_DOLL 95 +#define DECOR_SKITTY_DOLL 96 +#define DECOR_SWABLU_DOLL 97 +#define DECOR_GULPIN_DOLL 98 +#define DECOR_LOTAD_DOLL 99 +#define DECOR_SEEDOT_DOLL 100 +#define DECOR_PIKA_CUSHION 101 +#define DECOR_ROUND_CUSHION 102 +#define DECOR_KISS_CUSHION 103 +#define DECOR_ZIGZAG_CUSHION 104 +#define DECOR_SPIN_CUSHION 105 +#define DECOR_DIAMOND_CUSHION 106 +#define DECOR_BALL_CUSHION 107 +#define DECOR_GRASS_CUSHION 108 +#define DECOR_FIRE_CUSHION 109 +#define DECOR_WATER_CUSHION 110 +#define DECOR_SNORLAX_DOLL 111 +#define DECOR_RHYDON_DOLL 112 +#define DECOR_LAPRAS_DOLL 113 +#define DECOR_VENUSAUR_DOLL 114 +#define DECOR_CHARIZARD_DOLL 115 +#define DECOR_BLASTOISE_DOLL 116 +#define DECOR_WAILMER_DOLL 117 +#define DECOR_REGIROCK_DOLL 118 +#define DECOR_REGICE_DOLL 119 +#define DECOR_REGISTEEL_DOLL 120 +#define NUM_DECORATIONS DECOR_REGISTEEL_DOLL + +#endif // GUARD_CONSTANTS_DECORATIONS_H diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h new file mode 100644 index 000000000..2c437c88e --- /dev/null +++ b/include/constants/easy_chat.h @@ -0,0 +1,1079 @@ +#ifndef GUARD_CONSTANTS_EASY_CHAT_H +#define GUARD_CONSTANTS_EASY_CHAT_H + +#define EC_GROUP_POKEMON 0x0 +#define EC_GROUP_TRAINER 0x1 +#define EC_GROUP_STATUS 0x2 +#define EC_GROUP_BATTLE 0x3 +#define EC_GROUP_GREETINGS 0x4 +#define EC_GROUP_PEOPLE 0x5 +#define EC_GROUP_VOICES 0x6 +#define EC_GROUP_SPEECH 0x7 +#define EC_GROUP_ENDINGS 0x8 +#define EC_GROUP_FEELINGS 0x9 +#define EC_GROUP_CONDITIONS 0xa +#define EC_GROUP_ACTIONS 0xb +#define EC_GROUP_LIFESTYLE 0xc +#define EC_GROUP_HOBBIES 0xd +#define EC_GROUP_TIME 0xe +#define EC_GROUP_MISC 0xf +#define EC_GROUP_ADJECTIVES 0x10 +#define EC_GROUP_EVENTS 0x11 +#define EC_GROUP_MOVE_1 0x12 +#define EC_GROUP_MOVE_2 0x13 +#define EC_GROUP_TRENDY_SAYING 0x14 +#define EC_GROUP_POKEMON_2 0x15 + +// TRAINER +#define EC_WORD_I_CHOOSE_YOU (EC_GROUP_TRAINER << 9) | 0x0 +#define EC_WORD_GOTCHA (EC_GROUP_TRAINER << 9) | 0x1 +#define EC_WORD_TRADE (EC_GROUP_TRAINER << 9) | 0x2 +#define EC_WORD_SAPPHIRE (EC_GROUP_TRAINER << 9) | 0x3 +#define EC_WORD_EVOLVE (EC_GROUP_TRAINER << 9) | 0x4 +#define EC_WORD_ENCYCLOPEDIA (EC_GROUP_TRAINER << 9) | 0x5 +#define EC_WORD_NATURE (EC_GROUP_TRAINER << 9) | 0x6 +#define EC_WORD_CENTER (EC_GROUP_TRAINER << 9) | 0x7 +#define EC_WORD_EGG (EC_GROUP_TRAINER << 9) | 0x8 +#define EC_WORD_LINK (EC_GROUP_TRAINER << 9) | 0x9 +#define EC_WORD_SP_ABILITY (EC_GROUP_TRAINER << 9) | 0xa +#define EC_WORD_TRAINER (EC_GROUP_TRAINER << 9) | 0xb +#define EC_WORD_VERSION (EC_GROUP_TRAINER << 9) | 0xc +#define EC_WORD_POKENAV (EC_GROUP_TRAINER << 9) | 0xd +#define EC_WORD_POKEMON (EC_GROUP_TRAINER << 9) | 0xe +#define EC_WORD_GET (EC_GROUP_TRAINER << 9) | 0xf +#define EC_WORD_POKEDEX (EC_GROUP_TRAINER << 9) | 0x10 +#define EC_WORD_RUBY (EC_GROUP_TRAINER << 9) | 0x11 +#define EC_WORD_LEVEL (EC_GROUP_TRAINER << 9) | 0x12 +#define EC_WORD_RED (EC_GROUP_TRAINER << 9) | 0x13 +#define EC_WORD_GREEN (EC_GROUP_TRAINER << 9) | 0x14 +#define EC_WORD_BAG (EC_GROUP_TRAINER << 9) | 0x15 +#define EC_WORD_FLAME (EC_GROUP_TRAINER << 9) | 0x16 +#define EC_WORD_GOLD (EC_GROUP_TRAINER << 9) | 0x17 +#define EC_WORD_LEAF (EC_GROUP_TRAINER << 9) | 0x18 +#define EC_WORD_SILVER (EC_GROUP_TRAINER << 9) | 0x19 +#define EC_WORD_EMERALD (EC_GROUP_TRAINER << 9) | 0x1a + +// STATUS +#define EC_WORD_DARK (EC_GROUP_STATUS << 9) | 0x0 +#define EC_WORD_STENCH (EC_GROUP_STATUS << 9) | 0x1 +#define EC_WORD_THICK_FAT (EC_GROUP_STATUS << 9) | 0x2 +#define EC_WORD_RAIN_DISH (EC_GROUP_STATUS << 9) | 0x3 +#define EC_WORD_DRIZZLE (EC_GROUP_STATUS << 9) | 0x4 +#define EC_WORD_ARENA_TRAP (EC_GROUP_STATUS << 9) | 0x5 +#define EC_WORD_INTIMIDATE (EC_GROUP_STATUS << 9) | 0x6 +#define EC_WORD_ROCK_HEAD (EC_GROUP_STATUS << 9) | 0x7 +#define EC_WORD_COLOR (EC_GROUP_STATUS << 9) | 0x8 +#define EC_WORD_ALT_COLOR (EC_GROUP_STATUS << 9) | 0x9 +#define EC_WORD_ROCK (EC_GROUP_STATUS << 9) | 0xa +#define EC_WORD_BEAUTIFUL (EC_GROUP_STATUS << 9) | 0xb +#define EC_WORD_BEAUTY (EC_GROUP_STATUS << 9) | 0xc +#define EC_WORD_AIR_LOCK (EC_GROUP_STATUS << 9) | 0xd +#define EC_WORD_PSYCHIC (EC_GROUP_STATUS << 9) | 0xe +#define EC_WORD_HYPER_CUTTER (EC_GROUP_STATUS << 9) | 0xf +#define EC_WORD_FIGHTING (EC_GROUP_STATUS << 9) | 0x10 +#define EC_WORD_SHADOW_TAG (EC_GROUP_STATUS << 9) | 0x11 +#define EC_WORD_SMART (EC_GROUP_STATUS << 9) | 0x12 +#define EC_WORD_SMARTNESS (EC_GROUP_STATUS << 9) | 0x13 +#define EC_WORD_SPEED_BOOST (EC_GROUP_STATUS << 9) | 0x14 +#define EC_WORD_COOL (EC_GROUP_STATUS << 9) | 0x15 +#define EC_WORD_COOLNESS (EC_GROUP_STATUS << 9) | 0x16 +#define EC_WORD_BATTLE_ARMOR (EC_GROUP_STATUS << 9) | 0x17 +#define EC_WORD_CUTE (EC_GROUP_STATUS << 9) | 0x18 +#define EC_WORD_CUTENESS (EC_GROUP_STATUS << 9) | 0x19 +#define EC_WORD_STURDY (EC_GROUP_STATUS << 9) | 0x1a +#define EC_WORD_SUCTION_CUPS (EC_GROUP_STATUS << 9) | 0x1b +#define EC_WORD_GRASS (EC_GROUP_STATUS << 9) | 0x1c +#define EC_WORD_CLEAR_BODY (EC_GROUP_STATUS << 9) | 0x1d +#define EC_WORD_TORRENT (EC_GROUP_STATUS << 9) | 0x1e +#define EC_WORD_GHOST (EC_GROUP_STATUS << 9) | 0x1f +#define EC_WORD_ICE (EC_GROUP_STATUS << 9) | 0x20 +#define EC_WORD_GUTS (EC_GROUP_STATUS << 9) | 0x21 +#define EC_WORD_ROUGH_SKIN (EC_GROUP_STATUS << 9) | 0x22 +#define EC_WORD_SHELL_ARMOR (EC_GROUP_STATUS << 9) | 0x23 +#define EC_WORD_NATURAL_CURE (EC_GROUP_STATUS << 9) | 0x24 +#define EC_WORD_DAMP (EC_GROUP_STATUS << 9) | 0x25 +#define EC_WORD_GROUND (EC_GROUP_STATUS << 9) | 0x26 +#define EC_WORD_LIMBER (EC_GROUP_STATUS << 9) | 0x27 +#define EC_WORD_MAGNET_PULL (EC_GROUP_STATUS << 9) | 0x28 +#define EC_WORD_WHITE_SMOKE (EC_GROUP_STATUS << 9) | 0x29 +#define EC_WORD_SYNCHRONIZE (EC_GROUP_STATUS << 9) | 0x2a +#define EC_WORD_OVERGROW (EC_GROUP_STATUS << 9) | 0x2b +#define EC_WORD_SWIFT_SWIM (EC_GROUP_STATUS << 9) | 0x2c +#define EC_WORD_SAND_STREAM (EC_GROUP_STATUS << 9) | 0x2d +#define EC_WORD_SAND_VEIL (EC_GROUP_STATUS << 9) | 0x2e +#define EC_WORD_KEEN_EYE (EC_GROUP_STATUS << 9) | 0x2f +#define EC_WORD_INNER_FOCUS (EC_GROUP_STATUS << 9) | 0x30 +#define EC_WORD_STATIC (EC_GROUP_STATUS << 9) | 0x31 +#define EC_WORD_TYPE (EC_GROUP_STATUS << 9) | 0x32 +#define EC_WORD_TOUGH (EC_GROUP_STATUS << 9) | 0x33 +#define EC_WORD_TOUGHNESS (EC_GROUP_STATUS << 9) | 0x34 +#define EC_WORD_SHED_SKIN (EC_GROUP_STATUS << 9) | 0x35 +#define EC_WORD_HUGE_POWER (EC_GROUP_STATUS << 9) | 0x36 +#define EC_WORD_VOLT_ABSORB (EC_GROUP_STATUS << 9) | 0x37 +#define EC_WORD_WATER_ABSORB (EC_GROUP_STATUS << 9) | 0x38 +#define EC_WORD_ELECTRIC (EC_GROUP_STATUS << 9) | 0x39 +#define EC_WORD_FORECAST (EC_GROUP_STATUS << 9) | 0x3a +#define EC_WORD_SERENE_GRACE (EC_GROUP_STATUS << 9) | 0x3b +#define EC_WORD_POISON (EC_GROUP_STATUS << 9) | 0x3c +#define EC_WORD_POISON_POINT (EC_GROUP_STATUS << 9) | 0x3d +#define EC_WORD_DRAGON (EC_GROUP_STATUS << 9) | 0x3e +#define EC_WORD_TRACE (EC_GROUP_STATUS << 9) | 0x3f +#define EC_WORD_OBLIVIOUS (EC_GROUP_STATUS << 9) | 0x40 +#define EC_WORD_TRUANT (EC_GROUP_STATUS << 9) | 0x41 +#define EC_WORD_RUN_AWAY (EC_GROUP_STATUS << 9) | 0x42 +#define EC_WORD_STICKY_HOLD (EC_GROUP_STATUS << 9) | 0x43 +#define EC_WORD_CLOUD_NINE (EC_GROUP_STATUS << 9) | 0x44 +#define EC_WORD_NORMAL (EC_GROUP_STATUS << 9) | 0x45 +#define EC_WORD_STEEL (EC_GROUP_STATUS << 9) | 0x46 +#define EC_WORD_ILLUMINATE (EC_GROUP_STATUS << 9) | 0x47 +#define EC_WORD_EARLY_BIRD (EC_GROUP_STATUS << 9) | 0x48 +#define EC_WORD_HUSTLE (EC_GROUP_STATUS << 9) | 0x49 +#define EC_WORD_SHINE (EC_GROUP_STATUS << 9) | 0x4a +#define EC_WORD_FLYING (EC_GROUP_STATUS << 9) | 0x4b +#define EC_WORD_DROUGHT (EC_GROUP_STATUS << 9) | 0x4c +#define EC_WORD_LIGHTNINGROD (EC_GROUP_STATUS << 9) | 0x4d +#define EC_WORD_COMPOUNDEYES (EC_GROUP_STATUS << 9) | 0x4e +#define EC_WORD_MARVEL_SCALE (EC_GROUP_STATUS << 9) | 0x4f +#define EC_WORD_WONDER_GUARD (EC_GROUP_STATUS << 9) | 0x50 +#define EC_WORD_INSOMNIA (EC_GROUP_STATUS << 9) | 0x51 +#define EC_WORD_LEVITATE (EC_GROUP_STATUS << 9) | 0x52 +#define EC_WORD_PLUS (EC_GROUP_STATUS << 9) | 0x53 +#define EC_WORD_PRESSURE (EC_GROUP_STATUS << 9) | 0x54 +#define EC_WORD_LIQUID_OOZE (EC_GROUP_STATUS << 9) | 0x55 +#define EC_WORD_COLOR_CHANGE (EC_GROUP_STATUS << 9) | 0x56 +#define EC_WORD_SOUNDPROOF (EC_GROUP_STATUS << 9) | 0x57 +#define EC_WORD_EFFECT_SPORE (EC_GROUP_STATUS << 9) | 0x58 +#define EC_WORD_PKRS (EC_GROUP_STATUS << 9) | 0x59 +#define EC_WORD_FIRE (EC_GROUP_STATUS << 9) | 0x5a +#define EC_WORD_FLAME_BODY (EC_GROUP_STATUS << 9) | 0x5b +#define EC_WORD_MINUS (EC_GROUP_STATUS << 9) | 0x5c +#define EC_WORD_OWN_TEMPO (EC_GROUP_STATUS << 9) | 0x5d +#define EC_WORD_MAGMA_ARMOR (EC_GROUP_STATUS << 9) | 0x5e +#define EC_WORD_WATER (EC_GROUP_STATUS << 9) | 0x5f +#define EC_WORD_WATER_VEIL (EC_GROUP_STATUS << 9) | 0x60 +#define EC_WORD_BUG (EC_GROUP_STATUS << 9) | 0x61 +#define EC_WORD_SWARM (EC_GROUP_STATUS << 9) | 0x62 +#define EC_WORD_CUTE_CHARM (EC_GROUP_STATUS << 9) | 0x63 +#define EC_WORD_IMMUNITY (EC_GROUP_STATUS << 9) | 0x64 +#define EC_WORD_BLAZE (EC_GROUP_STATUS << 9) | 0x65 +#define EC_WORD_PICKUP (EC_GROUP_STATUS << 9) | 0x66 +#define EC_WORD_PATTERN (EC_GROUP_STATUS << 9) | 0x67 +#define EC_WORD_FLASH_FIRE (EC_GROUP_STATUS << 9) | 0x68 +#define EC_WORD_VITAL_SPIRIT (EC_GROUP_STATUS << 9) | 0x69 +#define EC_WORD_CHLOROPHYLL (EC_GROUP_STATUS << 9) | 0x6a +#define EC_WORD_PURE_POWER (EC_GROUP_STATUS << 9) | 0x6b +#define EC_WORD_SHIELD_DUST (EC_GROUP_STATUS << 9) | 0x6c + +// BATTLE +#define EC_WORD_MATCH_UP (EC_GROUP_BATTLE << 9) | 0x0 +#define EC_WORD_GO (EC_GROUP_BATTLE << 9) | 0x1 +#define EC_WORD_NO_1 (EC_GROUP_BATTLE << 9) | 0x2 +#define EC_WORD_DECIDE (EC_GROUP_BATTLE << 9) | 0x3 +#define EC_WORD_LET_ME_WIN (EC_GROUP_BATTLE << 9) | 0x4 +#define EC_WORD_WINS (EC_GROUP_BATTLE << 9) | 0x5 +#define EC_WORD_WIN (EC_GROUP_BATTLE << 9) | 0x6 +#define EC_WORD_WON (EC_GROUP_BATTLE << 9) | 0x7 +#define EC_WORD_IF_I_WIN (EC_GROUP_BATTLE << 9) | 0x8 +#define EC_WORD_WHEN_I_WIN (EC_GROUP_BATTLE << 9) | 0x9 +#define EC_WORD_CAN_T_WIN (EC_GROUP_BATTLE << 9) | 0xa +#define EC_WORD_CAN_WIN (EC_GROUP_BATTLE << 9) | 0xb +#define EC_WORD_NO_MATCH (EC_GROUP_BATTLE << 9) | 0xc +#define EC_WORD_SPIRIT (EC_GROUP_BATTLE << 9) | 0xd +#define EC_WORD_DECIDED (EC_GROUP_BATTLE << 9) | 0xe +#define EC_WORD_TRUMP_CARD (EC_GROUP_BATTLE << 9) | 0xf +#define EC_WORD_TAKE_THAT (EC_GROUP_BATTLE << 9) | 0x10 +#define EC_WORD_COME_ON (EC_GROUP_BATTLE << 9) | 0x11 +#define EC_WORD_ATTACK (EC_GROUP_BATTLE << 9) | 0x12 +#define EC_WORD_SURRENDER (EC_GROUP_BATTLE << 9) | 0x13 +#define EC_WORD_GUTSY (EC_GROUP_BATTLE << 9) | 0x14 +#define EC_WORD_TALENT (EC_GROUP_BATTLE << 9) | 0x15 +#define EC_WORD_STRATEGY (EC_GROUP_BATTLE << 9) | 0x16 +#define EC_WORD_SMITE (EC_GROUP_BATTLE << 9) | 0x17 +#define EC_WORD_MATCH (EC_GROUP_BATTLE << 9) | 0x18 +#define EC_WORD_VICTORY (EC_GROUP_BATTLE << 9) | 0x19 +#define EC_WORD_OFFENSIVE (EC_GROUP_BATTLE << 9) | 0x1a +#define EC_WORD_SENSE (EC_GROUP_BATTLE << 9) | 0x1b +#define EC_WORD_VERSUS (EC_GROUP_BATTLE << 9) | 0x1c +#define EC_WORD_FIGHTS (EC_GROUP_BATTLE << 9) | 0x1d +#define EC_WORD_POWER (EC_GROUP_BATTLE << 9) | 0x1e +#define EC_WORD_CHALLENGE (EC_GROUP_BATTLE << 9) | 0x1f +#define EC_WORD_STRONG (EC_GROUP_BATTLE << 9) | 0x20 +#define EC_WORD_TOO_STRONG (EC_GROUP_BATTLE << 9) | 0x21 +#define EC_WORD_GO_EASY (EC_GROUP_BATTLE << 9) | 0x22 +#define EC_WORD_FOE (EC_GROUP_BATTLE << 9) | 0x23 +#define EC_WORD_GENIUS (EC_GROUP_BATTLE << 9) | 0x24 +#define EC_WORD_LEGEND (EC_GROUP_BATTLE << 9) | 0x25 +#define EC_WORD_ESCAPE (EC_GROUP_BATTLE << 9) | 0x26 +#define EC_WORD_AIM (EC_GROUP_BATTLE << 9) | 0x27 +#define EC_WORD_BATTLE (EC_GROUP_BATTLE << 9) | 0x28 +#define EC_WORD_FIGHT (EC_GROUP_BATTLE << 9) | 0x29 +#define EC_WORD_RESUSCITATE (EC_GROUP_BATTLE << 9) | 0x2a +#define EC_WORD_POINTS (EC_GROUP_BATTLE << 9) | 0x2b +#define EC_WORD_SERIOUS (EC_GROUP_BATTLE << 9) | 0x2c +#define EC_WORD_GIVE_UP (EC_GROUP_BATTLE << 9) | 0x2d +#define EC_WORD_LOSS (EC_GROUP_BATTLE << 9) | 0x2e +#define EC_WORD_IF_I_LOSE (EC_GROUP_BATTLE << 9) | 0x2f +#define EC_WORD_LOST (EC_GROUP_BATTLE << 9) | 0x30 +#define EC_WORD_LOSE (EC_GROUP_BATTLE << 9) | 0x31 +#define EC_WORD_GUARD (EC_GROUP_BATTLE << 9) | 0x32 +#define EC_WORD_PARTNER (EC_GROUP_BATTLE << 9) | 0x33 +#define EC_WORD_REJECT (EC_GROUP_BATTLE << 9) | 0x34 +#define EC_WORD_ACCEPT (EC_GROUP_BATTLE << 9) | 0x35 +#define EC_WORD_INVINCIBLE (EC_GROUP_BATTLE << 9) | 0x36 +#define EC_WORD_RECEIVED (EC_GROUP_BATTLE << 9) | 0x37 +#define EC_WORD_EASY (EC_GROUP_BATTLE << 9) | 0x38 +#define EC_WORD_WEAK (EC_GROUP_BATTLE << 9) | 0x39 +#define EC_WORD_TOO_WEAK (EC_GROUP_BATTLE << 9) | 0x3a +#define EC_WORD_PUSHOVER (EC_GROUP_BATTLE << 9) | 0x3b +#define EC_WORD_LEADER (EC_GROUP_BATTLE << 9) | 0x3c +#define EC_WORD_RULE (EC_GROUP_BATTLE << 9) | 0x3d +#define EC_WORD_MOVE (EC_GROUP_BATTLE << 9) | 0x3e + +// GREETINGS +#define EC_WORD_THANKS (EC_GROUP_GREETINGS << 9) | 0x0 +#define EC_WORD_YES (EC_GROUP_GREETINGS << 9) | 0x1 +#define EC_WORD_HERE_GOES (EC_GROUP_GREETINGS << 9) | 0x2 +#define EC_WORD_HERE_I_COME (EC_GROUP_GREETINGS << 9) | 0x3 +#define EC_WORD_HERE_IT_IS (EC_GROUP_GREETINGS << 9) | 0x4 +#define EC_WORD_YEAH (EC_GROUP_GREETINGS << 9) | 0x5 +#define EC_WORD_WELCOME (EC_GROUP_GREETINGS << 9) | 0x6 +#define EC_WORD_OI (EC_GROUP_GREETINGS << 9) | 0x7 +#define EC_WORD_HOW_DO (EC_GROUP_GREETINGS << 9) | 0x8 +#define EC_WORD_CONGRATS (EC_GROUP_GREETINGS << 9) | 0x9 +#define EC_WORD_GIVE_ME (EC_GROUP_GREETINGS << 9) | 0xa +#define EC_WORD_SORRY (EC_GROUP_GREETINGS << 9) | 0xb +#define EC_WORD_APOLOGIZE (EC_GROUP_GREETINGS << 9) | 0xc +#define EC_WORD_FORGIVE (EC_GROUP_GREETINGS << 9) | 0xd +#define EC_WORD_HEY_THERE (EC_GROUP_GREETINGS << 9) | 0xe +#define EC_WORD_HELLO (EC_GROUP_GREETINGS << 9) | 0xf +#define EC_WORD_GOOD_BYE (EC_GROUP_GREETINGS << 9) | 0x10 +#define EC_WORD_THANK_YOU (EC_GROUP_GREETINGS << 9) | 0x11 +#define EC_WORD_I_VE_ARRIVED (EC_GROUP_GREETINGS << 9) | 0x12 +#define EC_WORD_PARDON (EC_GROUP_GREETINGS << 9) | 0x13 +#define EC_WORD_EXCUSE (EC_GROUP_GREETINGS << 9) | 0x14 +#define EC_WORD_SEE_YA (EC_GROUP_GREETINGS << 9) | 0x15 +#define EC_WORD_EXCUSE_ME (EC_GROUP_GREETINGS << 9) | 0x16 +#define EC_WORD_WELL_THEN (EC_GROUP_GREETINGS << 9) | 0x17 +#define EC_WORD_GO_AHEAD (EC_GROUP_GREETINGS << 9) | 0x18 +#define EC_WORD_APPRECIATE (EC_GROUP_GREETINGS << 9) | 0x19 +#define EC_WORD_HEY_QUES (EC_GROUP_GREETINGS << 9) | 0x1a +#define EC_WORD_WHAT_S_UP_QUES (EC_GROUP_GREETINGS << 9) | 0x1b +#define EC_WORD_HUH_QUES (EC_GROUP_GREETINGS << 9) | 0x1c +#define EC_WORD_NO (EC_GROUP_GREETINGS << 9) | 0x1d +#define EC_WORD_HI (EC_GROUP_GREETINGS << 9) | 0x1e +#define EC_WORD_YEAH_YEAH (EC_GROUP_GREETINGS << 9) | 0x1f +#define EC_WORD_BYE_BYE (EC_GROUP_GREETINGS << 9) | 0x20 +#define EC_WORD_MEET_YOU (EC_GROUP_GREETINGS << 9) | 0x21 +#define EC_WORD_HEY (EC_GROUP_GREETINGS << 9) | 0x22 +#define EC_WORD_SMELL (EC_GROUP_GREETINGS << 9) | 0x23 +#define EC_WORD_LISTENING (EC_GROUP_GREETINGS << 9) | 0x24 +#define EC_WORD_HOO_HAH (EC_GROUP_GREETINGS << 9) | 0x25 +#define EC_WORD_YAHOO (EC_GROUP_GREETINGS << 9) | 0x26 +#define EC_WORD_YO (EC_GROUP_GREETINGS << 9) | 0x27 +#define EC_WORD_COME_OVER (EC_GROUP_GREETINGS << 9) | 0x28 +#define EC_WORD_COUNT_ON (EC_GROUP_GREETINGS << 9) | 0x29 + +// PEOPLE +#define EC_WORD_OPPONENT (EC_GROUP_PEOPLE << 9) | 0x0 +#define EC_WORD_I (EC_GROUP_PEOPLE << 9) | 0x1 +#define EC_WORD_YOU (EC_GROUP_PEOPLE << 9) | 0x2 +#define EC_WORD_YOURS (EC_GROUP_PEOPLE << 9) | 0x3 +#define EC_WORD_SON (EC_GROUP_PEOPLE << 9) | 0x4 +#define EC_WORD_YOUR (EC_GROUP_PEOPLE << 9) | 0x5 +#define EC_WORD_YOU_RE (EC_GROUP_PEOPLE << 9) | 0x6 +#define EC_WORD_YOU_VE (EC_GROUP_PEOPLE << 9) | 0x7 +#define EC_WORD_MOTHER (EC_GROUP_PEOPLE << 9) | 0x8 +#define EC_WORD_GRANDFATHER (EC_GROUP_PEOPLE << 9) | 0x9 +#define EC_WORD_UNCLE (EC_GROUP_PEOPLE << 9) | 0xa +#define EC_WORD_FATHER (EC_GROUP_PEOPLE << 9) | 0xb +#define EC_WORD_BOY (EC_GROUP_PEOPLE << 9) | 0xc +#define EC_WORD_ADULT (EC_GROUP_PEOPLE << 9) | 0xd +#define EC_WORD_BROTHER (EC_GROUP_PEOPLE << 9) | 0xe +#define EC_WORD_SISTER (EC_GROUP_PEOPLE << 9) | 0xf +#define EC_WORD_GRANDMOTHER (EC_GROUP_PEOPLE << 9) | 0x10 +#define EC_WORD_AUNT (EC_GROUP_PEOPLE << 9) | 0x11 +#define EC_WORD_PARENT (EC_GROUP_PEOPLE << 9) | 0x12 +#define EC_WORD_MAN (EC_GROUP_PEOPLE << 9) | 0x13 +#define EC_WORD_ME (EC_GROUP_PEOPLE << 9) | 0x14 +#define EC_WORD_GIRL (EC_GROUP_PEOPLE << 9) | 0x15 +#define EC_WORD_BABE (EC_GROUP_PEOPLE << 9) | 0x16 +#define EC_WORD_FAMILY (EC_GROUP_PEOPLE << 9) | 0x17 +#define EC_WORD_HER (EC_GROUP_PEOPLE << 9) | 0x18 +#define EC_WORD_HIM (EC_GROUP_PEOPLE << 9) | 0x19 +#define EC_WORD_HE (EC_GROUP_PEOPLE << 9) | 0x1a +#define EC_WORD_PLACE (EC_GROUP_PEOPLE << 9) | 0x1b +#define EC_WORD_DAUGHTER (EC_GROUP_PEOPLE << 9) | 0x1c +#define EC_WORD_HIS (EC_GROUP_PEOPLE << 9) | 0x1d +#define EC_WORD_HE_S (EC_GROUP_PEOPLE << 9) | 0x1e +#define EC_WORD_AREN_T (EC_GROUP_PEOPLE << 9) | 0x1f +#define EC_WORD_SIBLINGS (EC_GROUP_PEOPLE << 9) | 0x20 +#define EC_WORD_KID (EC_GROUP_PEOPLE << 9) | 0x21 +#define EC_WORD_CHILDREN (EC_GROUP_PEOPLE << 9) | 0x22 +#define EC_WORD_MR (EC_GROUP_PEOPLE << 9) | 0x23 +#define EC_WORD_MRS (EC_GROUP_PEOPLE << 9) | 0x24 +#define EC_WORD_MYSELF (EC_GROUP_PEOPLE << 9) | 0x25 +#define EC_WORD_I_WAS (EC_GROUP_PEOPLE << 9) | 0x26 +#define EC_WORD_TO_ME (EC_GROUP_PEOPLE << 9) | 0x27 +#define EC_WORD_MY (EC_GROUP_PEOPLE << 9) | 0x28 +#define EC_WORD_I_AM (EC_GROUP_PEOPLE << 9) | 0x29 +#define EC_WORD_I_VE (EC_GROUP_PEOPLE << 9) | 0x2a +#define EC_WORD_WHO (EC_GROUP_PEOPLE << 9) | 0x2b +#define EC_WORD_SOMEONE (EC_GROUP_PEOPLE << 9) | 0x2c +#define EC_WORD_WHO_WAS (EC_GROUP_PEOPLE << 9) | 0x2d +#define EC_WORD_TO_WHOM (EC_GROUP_PEOPLE << 9) | 0x2e +#define EC_WORD_WHOSE (EC_GROUP_PEOPLE << 9) | 0x2f +#define EC_WORD_WHO_IS (EC_GROUP_PEOPLE << 9) | 0x30 +#define EC_WORD_IT_S (EC_GROUP_PEOPLE << 9) | 0x31 +#define EC_WORD_LADY (EC_GROUP_PEOPLE << 9) | 0x32 +#define EC_WORD_FRIEND (EC_GROUP_PEOPLE << 9) | 0x33 +#define EC_WORD_ALLY (EC_GROUP_PEOPLE << 9) | 0x34 +#define EC_WORD_PERSON (EC_GROUP_PEOPLE << 9) | 0x35 +#define EC_WORD_DUDE (EC_GROUP_PEOPLE << 9) | 0x36 +#define EC_WORD_THEY (EC_GROUP_PEOPLE << 9) | 0x37 +#define EC_WORD_THEY_WERE (EC_GROUP_PEOPLE << 9) | 0x38 +#define EC_WORD_TO_THEM (EC_GROUP_PEOPLE << 9) | 0x39 +#define EC_WORD_THEIR (EC_GROUP_PEOPLE << 9) | 0x3a +#define EC_WORD_THEY_RE (EC_GROUP_PEOPLE << 9) | 0x3b +#define EC_WORD_THEY_VE (EC_GROUP_PEOPLE << 9) | 0x3c +#define EC_WORD_WE (EC_GROUP_PEOPLE << 9) | 0x3d +#define EC_WORD_BEEN (EC_GROUP_PEOPLE << 9) | 0x3e +#define EC_WORD_TO_US (EC_GROUP_PEOPLE << 9) | 0x3f +#define EC_WORD_OUR (EC_GROUP_PEOPLE << 9) | 0x40 +#define EC_WORD_WE_RE (EC_GROUP_PEOPLE << 9) | 0x41 +#define EC_WORD_RIVAL (EC_GROUP_PEOPLE << 9) | 0x42 +#define EC_WORD_WE_VE (EC_GROUP_PEOPLE << 9) | 0x43 +#define EC_WORD_WOMAN (EC_GROUP_PEOPLE << 9) | 0x44 +#define EC_WORD_SHE (EC_GROUP_PEOPLE << 9) | 0x45 +#define EC_WORD_SHE_WAS (EC_GROUP_PEOPLE << 9) | 0x46 +#define EC_WORD_TO_HER (EC_GROUP_PEOPLE << 9) | 0x47 +#define EC_WORD_HERS (EC_GROUP_PEOPLE << 9) | 0x48 +#define EC_WORD_SHE_IS (EC_GROUP_PEOPLE << 9) | 0x49 +#define EC_WORD_SOME (EC_GROUP_PEOPLE << 9) | 0x4a + +// VOICES +#define EC_WORD_EXCL (EC_GROUP_VOICES << 9) | 0x0 +#define EC_WORD_EXCL_EXCL (EC_GROUP_VOICES << 9) | 0x1 +#define EC_WORD_QUES_EXCL (EC_GROUP_VOICES << 9) | 0x2 +#define EC_WORD_QUES (EC_GROUP_VOICES << 9) | 0x3 +#define EC_WORD_ELLIPSIS (EC_GROUP_VOICES << 9) | 0x4 +#define EC_WORD_ELLIPSIS_EXCL (EC_GROUP_VOICES << 9) | 0x5 +#define EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS (EC_GROUP_VOICES << 9) | 0x6 +#define EC_WORD_DASH (EC_GROUP_VOICES << 9) | 0x7 +#define EC_WORD_DASH_DASH_DASH (EC_GROUP_VOICES << 9) | 0x8 +#define EC_WORD_UH_OH (EC_GROUP_VOICES << 9) | 0x9 +#define EC_WORD_WAAAH (EC_GROUP_VOICES << 9) | 0xa +#define EC_WORD_AHAHA (EC_GROUP_VOICES << 9) | 0xb +#define EC_WORD_OH_QUES (EC_GROUP_VOICES << 9) | 0xc +#define EC_WORD_NOPE (EC_GROUP_VOICES << 9) | 0xd +#define EC_WORD_URGH (EC_GROUP_VOICES << 9) | 0xe +#define EC_WORD_HMM (EC_GROUP_VOICES << 9) | 0xf +#define EC_WORD_WHOAH (EC_GROUP_VOICES << 9) | 0x10 +#define EC_WORD_WROOOAAR_EXCL (EC_GROUP_VOICES << 9) | 0x11 +#define EC_WORD_WOW (EC_GROUP_VOICES << 9) | 0x12 +#define EC_WORD_GIGGLE (EC_GROUP_VOICES << 9) | 0x13 +#define EC_WORD_SIGH (EC_GROUP_VOICES << 9) | 0x14 +#define EC_WORD_UNBELIEVABLE (EC_GROUP_VOICES << 9) | 0x15 +#define EC_WORD_CRIES (EC_GROUP_VOICES << 9) | 0x16 +#define EC_WORD_AGREE (EC_GROUP_VOICES << 9) | 0x17 +#define EC_WORD_EH_QUES (EC_GROUP_VOICES << 9) | 0x18 +#define EC_WORD_CRY (EC_GROUP_VOICES << 9) | 0x19 +#define EC_WORD_EHEHE (EC_GROUP_VOICES << 9) | 0x1a +#define EC_WORD_OI_OI_OI (EC_GROUP_VOICES << 9) | 0x1b +#define EC_WORD_OH_YEAH (EC_GROUP_VOICES << 9) | 0x1c +#define EC_WORD_OH (EC_GROUP_VOICES << 9) | 0x1d +#define EC_WORD_OOPS (EC_GROUP_VOICES << 9) | 0x1e +#define EC_WORD_SHOCKED (EC_GROUP_VOICES << 9) | 0x1f +#define EC_WORD_EEK (EC_GROUP_VOICES << 9) | 0x20 +#define EC_WORD_GRAAAH (EC_GROUP_VOICES << 9) | 0x21 +#define EC_WORD_GWAHAHAHA (EC_GROUP_VOICES << 9) | 0x22 +#define EC_WORD_WAY (EC_GROUP_VOICES << 9) | 0x23 +#define EC_WORD_TCH (EC_GROUP_VOICES << 9) | 0x24 +#define EC_WORD_HEHE (EC_GROUP_VOICES << 9) | 0x25 +#define EC_WORD_HAH (EC_GROUP_VOICES << 9) | 0x26 +#define EC_WORD_YUP (EC_GROUP_VOICES << 9) | 0x27 +#define EC_WORD_HAHAHA (EC_GROUP_VOICES << 9) | 0x28 +#define EC_WORD_AIYEEH (EC_GROUP_VOICES << 9) | 0x29 +#define EC_WORD_HIYAH (EC_GROUP_VOICES << 9) | 0x2a +#define EC_WORD_FUFUFU (EC_GROUP_VOICES << 9) | 0x2b +#define EC_WORD_LOL (EC_GROUP_VOICES << 9) | 0x2c +#define EC_WORD_SNORT (EC_GROUP_VOICES << 9) | 0x2d +#define EC_WORD_HUMPH (EC_GROUP_VOICES << 9) | 0x2e +#define EC_WORD_HEHEHE (EC_GROUP_VOICES << 9) | 0x2f +#define EC_WORD_HEH (EC_GROUP_VOICES << 9) | 0x30 +#define EC_WORD_HOHOHO (EC_GROUP_VOICES << 9) | 0x31 +#define EC_WORD_UH_HUH (EC_GROUP_VOICES << 9) | 0x32 +#define EC_WORD_OH_DEAR (EC_GROUP_VOICES << 9) | 0x33 +#define EC_WORD_ARRGH (EC_GROUP_VOICES << 9) | 0x34 +#define EC_WORD_MUFUFU (EC_GROUP_VOICES << 9) | 0x35 +#define EC_WORD_MMM (EC_GROUP_VOICES << 9) | 0x36 +#define EC_WORD_OH_KAY (EC_GROUP_VOICES << 9) | 0x37 +#define EC_WORD_OKAY (EC_GROUP_VOICES << 9) | 0x38 +#define EC_WORD_LALALA (EC_GROUP_VOICES << 9) | 0x39 +#define EC_WORD_YAY (EC_GROUP_VOICES << 9) | 0x3a +#define EC_WORD_AWW (EC_GROUP_VOICES << 9) | 0x3b +#define EC_WORD_WOWEE (EC_GROUP_VOICES << 9) | 0x3c +#define EC_WORD_GWAH (EC_GROUP_VOICES << 9) | 0x3d +#define EC_WORD_WAHAHAHA (EC_GROUP_VOICES << 9) | 0x3e + +// SPEECH +#define EC_WORD_LISTEN (EC_GROUP_SPEECH << 9) | 0x0 +#define EC_WORD_NOT_VERY (EC_GROUP_SPEECH << 9) | 0x1 +#define EC_WORD_MEAN (EC_GROUP_SPEECH << 9) | 0x2 +#define EC_WORD_LIE (EC_GROUP_SPEECH << 9) | 0x3 +#define EC_WORD_LAY (EC_GROUP_SPEECH << 9) | 0x4 +#define EC_WORD_RECOMMEND (EC_GROUP_SPEECH << 9) | 0x5 +#define EC_WORD_NITWIT (EC_GROUP_SPEECH << 9) | 0x6 +#define EC_WORD_QUITE (EC_GROUP_SPEECH << 9) | 0x7 +#define EC_WORD_FROM (EC_GROUP_SPEECH << 9) | 0x8 +#define EC_WORD_FEELING (EC_GROUP_SPEECH << 9) | 0x9 +#define EC_WORD_BUT (EC_GROUP_SPEECH << 9) | 0xa +#define EC_WORD_HOWEVER (EC_GROUP_SPEECH << 9) | 0xb +#define EC_WORD_CASE (EC_GROUP_SPEECH << 9) | 0xc +#define EC_WORD_THE (EC_GROUP_SPEECH << 9) | 0xd +#define EC_WORD_MISS (EC_GROUP_SPEECH << 9) | 0xe +#define EC_WORD_HOW (EC_GROUP_SPEECH << 9) | 0xf +#define EC_WORD_HIT (EC_GROUP_SPEECH << 9) | 0x10 +#define EC_WORD_ENOUGH (EC_GROUP_SPEECH << 9) | 0x11 +#define EC_WORD_A_LOT (EC_GROUP_SPEECH << 9) | 0x12 +#define EC_WORD_A_LITTLE (EC_GROUP_SPEECH << 9) | 0x13 +#define EC_WORD_ABSOLUTELY (EC_GROUP_SPEECH << 9) | 0x14 +#define EC_WORD_AND (EC_GROUP_SPEECH << 9) | 0x15 +#define EC_WORD_ONLY (EC_GROUP_SPEECH << 9) | 0x16 +#define EC_WORD_AROUND (EC_GROUP_SPEECH << 9) | 0x17 +#define EC_WORD_PROBABLY (EC_GROUP_SPEECH << 9) | 0x18 +#define EC_WORD_IF (EC_GROUP_SPEECH << 9) | 0x19 +#define EC_WORD_VERY (EC_GROUP_SPEECH << 9) | 0x1a +#define EC_WORD_A_TINY_BIT (EC_GROUP_SPEECH << 9) | 0x1b +#define EC_WORD_WILD (EC_GROUP_SPEECH << 9) | 0x1c +#define EC_WORD_THAT_S (EC_GROUP_SPEECH << 9) | 0x1d +#define EC_WORD_JUST (EC_GROUP_SPEECH << 9) | 0x1e +#define EC_WORD_EVEN_SO (EC_GROUP_SPEECH << 9) | 0x1f +#define EC_WORD_MUST_BE (EC_GROUP_SPEECH << 9) | 0x20 +#define EC_WORD_NATURALLY (EC_GROUP_SPEECH << 9) | 0x21 +#define EC_WORD_FOR_NOW (EC_GROUP_SPEECH << 9) | 0x22 +#define EC_WORD_UNDERSTOOD (EC_GROUP_SPEECH << 9) | 0x23 +#define EC_WORD_JOKING (EC_GROUP_SPEECH << 9) | 0x24 +#define EC_WORD_READY (EC_GROUP_SPEECH << 9) | 0x25 +#define EC_WORD_SOMETHING (EC_GROUP_SPEECH << 9) | 0x26 +#define EC_WORD_SOMEHOW (EC_GROUP_SPEECH << 9) | 0x27 +#define EC_WORD_ALTHOUGH (EC_GROUP_SPEECH << 9) | 0x28 +#define EC_WORD_ALSO (EC_GROUP_SPEECH << 9) | 0x29 +#define EC_WORD_PERFECT (EC_GROUP_SPEECH << 9) | 0x2a +#define EC_WORD_AS_MUCH_AS (EC_GROUP_SPEECH << 9) | 0x2b +#define EC_WORD_REALLY (EC_GROUP_SPEECH << 9) | 0x2c +#define EC_WORD_TRULY (EC_GROUP_SPEECH << 9) | 0x2d +#define EC_WORD_SERIOUSLY (EC_GROUP_SPEECH << 9) | 0x2e +#define EC_WORD_TOTALLY (EC_GROUP_SPEECH << 9) | 0x2f +#define EC_WORD_UNTIL (EC_GROUP_SPEECH << 9) | 0x30 +#define EC_WORD_AS_IF (EC_GROUP_SPEECH << 9) | 0x31 +#define EC_WORD_MOOD (EC_GROUP_SPEECH << 9) | 0x32 +#define EC_WORD_RATHER (EC_GROUP_SPEECH << 9) | 0x33 +#define EC_WORD_AWFULLY (EC_GROUP_SPEECH << 9) | 0x34 +#define EC_WORD_MODE (EC_GROUP_SPEECH << 9) | 0x35 +#define EC_WORD_MORE (EC_GROUP_SPEECH << 9) | 0x36 +#define EC_WORD_TOO_LATE (EC_GROUP_SPEECH << 9) | 0x37 +#define EC_WORD_FINALLY (EC_GROUP_SPEECH << 9) | 0x38 +#define EC_WORD_ANY (EC_GROUP_SPEECH << 9) | 0x39 +#define EC_WORD_INSTEAD (EC_GROUP_SPEECH << 9) | 0x3a +#define EC_WORD_FANTASTIC (EC_GROUP_SPEECH << 9) | 0x3b + +// ENDINGS +#define EC_WORD_WILL (EC_GROUP_ENDINGS << 9) | 0x0 +#define EC_WORD_WILL_BE_HERE (EC_GROUP_ENDINGS << 9) | 0x1 +#define EC_WORD_OR (EC_GROUP_ENDINGS << 9) | 0x2 +#define EC_WORD_TIMES (EC_GROUP_ENDINGS << 9) | 0x3 +#define EC_WORD_WONDER (EC_GROUP_ENDINGS << 9) | 0x4 +#define EC_WORD_IS_IT_QUES (EC_GROUP_ENDINGS << 9) | 0x5 +#define EC_WORD_BE (EC_GROUP_ENDINGS << 9) | 0x6 +#define EC_WORD_GIMME (EC_GROUP_ENDINGS << 9) | 0x7 +#define EC_WORD_COULD (EC_GROUP_ENDINGS << 9) | 0x8 +#define EC_WORD_LIKELY_TO (EC_GROUP_ENDINGS << 9) | 0x9 +#define EC_WORD_WOULD (EC_GROUP_ENDINGS << 9) | 0xa +#define EC_WORD_IS (EC_GROUP_ENDINGS << 9) | 0xb +#define EC_WORD_ISN_T_IT_QUES (EC_GROUP_ENDINGS << 9) | 0xc +#define EC_WORD_LET_S (EC_GROUP_ENDINGS << 9) | 0xd +#define EC_WORD_OTHER (EC_GROUP_ENDINGS << 9) | 0xe +#define EC_WORD_ARE (EC_GROUP_ENDINGS << 9) | 0xf +#define EC_WORD_WAS (EC_GROUP_ENDINGS << 9) | 0x10 +#define EC_WORD_WERE (EC_GROUP_ENDINGS << 9) | 0x11 +#define EC_WORD_THOSE (EC_GROUP_ENDINGS << 9) | 0x12 +#define EC_WORD_ISN_T (EC_GROUP_ENDINGS << 9) | 0x13 +#define EC_WORD_WON_T (EC_GROUP_ENDINGS << 9) | 0x14 +#define EC_WORD_CAN_T (EC_GROUP_ENDINGS << 9) | 0x15 +#define EC_WORD_CAN (EC_GROUP_ENDINGS << 9) | 0x16 +#define EC_WORD_DON_T (EC_GROUP_ENDINGS << 9) | 0x17 +#define EC_WORD_DO (EC_GROUP_ENDINGS << 9) | 0x18 +#define EC_WORD_DOES (EC_GROUP_ENDINGS << 9) | 0x19 +#define EC_WORD_WHOM (EC_GROUP_ENDINGS << 9) | 0x1a +#define EC_WORD_WHICH (EC_GROUP_ENDINGS << 9) | 0x1b +#define EC_WORD_WASN_T (EC_GROUP_ENDINGS << 9) | 0x1c +#define EC_WORD_WEREN_T (EC_GROUP_ENDINGS << 9) | 0x1d +#define EC_WORD_HAVE (EC_GROUP_ENDINGS << 9) | 0x1e +#define EC_WORD_HAVEN_T (EC_GROUP_ENDINGS << 9) | 0x1f +#define EC_WORD_A (EC_GROUP_ENDINGS << 9) | 0x20 +#define EC_WORD_AN (EC_GROUP_ENDINGS << 9) | 0x21 +#define EC_WORD_NOT (EC_GROUP_ENDINGS << 9) | 0x22 +#define EC_WORD_THERE (EC_GROUP_ENDINGS << 9) | 0x23 +#define EC_WORD_OK_QUES (EC_GROUP_ENDINGS << 9) | 0x24 +#define EC_WORD_SO (EC_GROUP_ENDINGS << 9) | 0x25 +#define EC_WORD_MAYBE (EC_GROUP_ENDINGS << 9) | 0x26 +#define EC_WORD_ABOUT (EC_GROUP_ENDINGS << 9) | 0x27 +#define EC_WORD_OVER (EC_GROUP_ENDINGS << 9) | 0x28 +#define EC_WORD_IT (EC_GROUP_ENDINGS << 9) | 0x29 +#define EC_WORD_ALL (EC_GROUP_ENDINGS << 9) | 0x2a +#define EC_WORD_FOR (EC_GROUP_ENDINGS << 9) | 0x2b +#define EC_WORD_ON (EC_GROUP_ENDINGS << 9) | 0x2c +#define EC_WORD_OFF (EC_GROUP_ENDINGS << 9) | 0x2d +#define EC_WORD_AS (EC_GROUP_ENDINGS << 9) | 0x2e +#define EC_WORD_TO (EC_GROUP_ENDINGS << 9) | 0x2f +#define EC_WORD_WITH (EC_GROUP_ENDINGS << 9) | 0x30 +#define EC_WORD_BETTER (EC_GROUP_ENDINGS << 9) | 0x31 +#define EC_WORD_EVER (EC_GROUP_ENDINGS << 9) | 0x32 +#define EC_WORD_SINCE (EC_GROUP_ENDINGS << 9) | 0x33 +#define EC_WORD_OF (EC_GROUP_ENDINGS << 9) | 0x34 +#define EC_WORD_BELONGS_TO (EC_GROUP_ENDINGS << 9) | 0x35 +#define EC_WORD_AT (EC_GROUP_ENDINGS << 9) | 0x36 +#define EC_WORD_IN (EC_GROUP_ENDINGS << 9) | 0x37 +#define EC_WORD_OUT (EC_GROUP_ENDINGS << 9) | 0x38 +#define EC_WORD_TOO (EC_GROUP_ENDINGS << 9) | 0x39 +#define EC_WORD_LIKE (EC_GROUP_ENDINGS << 9) | 0x3a +#define EC_WORD_DID (EC_GROUP_ENDINGS << 9) | 0x3b +#define EC_WORD_DIDN_T (EC_GROUP_ENDINGS << 9) | 0x3c +#define EC_WORD_DOESN_T (EC_GROUP_ENDINGS << 9) | 0x3d +#define EC_WORD_WITHOUT (EC_GROUP_ENDINGS << 9) | 0x3e +#define EC_WORD_AFTER (EC_GROUP_ENDINGS << 9) | 0x3f +#define EC_WORD_BEFORE (EC_GROUP_ENDINGS << 9) | 0x40 +#define EC_WORD_WHILE (EC_GROUP_ENDINGS << 9) | 0x41 +#define EC_WORD_THAN (EC_GROUP_ENDINGS << 9) | 0x42 +#define EC_WORD_ONCE (EC_GROUP_ENDINGS << 9) | 0x43 +#define EC_WORD_ANYWHERE (EC_GROUP_ENDINGS << 9) | 0x44 + +// FEELINGS +#define EC_WORD_MEET (EC_GROUP_FEELINGS << 9) | 0x0 +#define EC_WORD_PLAY (EC_GROUP_FEELINGS << 9) | 0x1 +#define EC_WORD_HURRIED (EC_GROUP_FEELINGS << 9) | 0x2 +#define EC_WORD_GOES (EC_GROUP_FEELINGS << 9) | 0x3 +#define EC_WORD_GIDDY (EC_GROUP_FEELINGS << 9) | 0x4 +#define EC_WORD_HAPPY (EC_GROUP_FEELINGS << 9) | 0x5 +#define EC_WORD_HAPPINESS (EC_GROUP_FEELINGS << 9) | 0x6 +#define EC_WORD_EXCITE (EC_GROUP_FEELINGS << 9) | 0x7 +#define EC_WORD_IMPORTANT (EC_GROUP_FEELINGS << 9) | 0x8 +#define EC_WORD_FUNNY (EC_GROUP_FEELINGS << 9) | 0x9 +#define EC_WORD_GOT (EC_GROUP_FEELINGS << 9) | 0xa +#define EC_WORD_GO_HOME (EC_GROUP_FEELINGS << 9) | 0xb +#define EC_WORD_DISAPPOINTED (EC_GROUP_FEELINGS << 9) | 0xc +#define EC_WORD_DISAPPOINTS (EC_GROUP_FEELINGS << 9) | 0xd +#define EC_WORD_SAD (EC_GROUP_FEELINGS << 9) | 0xe +#define EC_WORD_TRY (EC_GROUP_FEELINGS << 9) | 0xf +#define EC_WORD_TRIES (EC_GROUP_FEELINGS << 9) | 0x10 +#define EC_WORD_HEARS (EC_GROUP_FEELINGS << 9) | 0x11 +#define EC_WORD_THINK (EC_GROUP_FEELINGS << 9) | 0x12 +#define EC_WORD_HEAR (EC_GROUP_FEELINGS << 9) | 0x13 +#define EC_WORD_WANTS (EC_GROUP_FEELINGS << 9) | 0x14 +#define EC_WORD_MISHEARD (EC_GROUP_FEELINGS << 9) | 0x15 +#define EC_WORD_DISLIKE (EC_GROUP_FEELINGS << 9) | 0x16 +#define EC_WORD_ANGRY (EC_GROUP_FEELINGS << 9) | 0x17 +#define EC_WORD_ANGER (EC_GROUP_FEELINGS << 9) | 0x18 +#define EC_WORD_SCARY (EC_GROUP_FEELINGS << 9) | 0x19 +#define EC_WORD_LONESOME (EC_GROUP_FEELINGS << 9) | 0x1a +#define EC_WORD_DISAPPOINT (EC_GROUP_FEELINGS << 9) | 0x1b +#define EC_WORD_JOY (EC_GROUP_FEELINGS << 9) | 0x1c +#define EC_WORD_GETS (EC_GROUP_FEELINGS << 9) | 0x1d +#define EC_WORD_NEVER (EC_GROUP_FEELINGS << 9) | 0x1e +#define EC_WORD_DARN (EC_GROUP_FEELINGS << 9) | 0x1f +#define EC_WORD_DOWNCAST (EC_GROUP_FEELINGS << 9) | 0x20 +#define EC_WORD_INCREDIBLE (EC_GROUP_FEELINGS << 9) | 0x21 +#define EC_WORD_LIKES (EC_GROUP_FEELINGS << 9) | 0x22 +#define EC_WORD_DISLIKES (EC_GROUP_FEELINGS << 9) | 0x23 +#define EC_WORD_BORING (EC_GROUP_FEELINGS << 9) | 0x24 +#define EC_WORD_CARE (EC_GROUP_FEELINGS << 9) | 0x25 +#define EC_WORD_CARES (EC_GROUP_FEELINGS << 9) | 0x26 +#define EC_WORD_ALL_RIGHT (EC_GROUP_FEELINGS << 9) | 0x27 +#define EC_WORD_ADORE (EC_GROUP_FEELINGS << 9) | 0x28 +#define EC_WORD_DISASTER (EC_GROUP_FEELINGS << 9) | 0x29 +#define EC_WORD_ENJOY (EC_GROUP_FEELINGS << 9) | 0x2a +#define EC_WORD_ENJOYS (EC_GROUP_FEELINGS << 9) | 0x2b +#define EC_WORD_EAT (EC_GROUP_FEELINGS << 9) | 0x2c +#define EC_WORD_LACKING (EC_GROUP_FEELINGS << 9) | 0x2d +#define EC_WORD_BAD (EC_GROUP_FEELINGS << 9) | 0x2e +#define EC_WORD_HARD (EC_GROUP_FEELINGS << 9) | 0x2f +#define EC_WORD_TERRIBLE (EC_GROUP_FEELINGS << 9) | 0x30 +#define EC_WORD_SHOULD (EC_GROUP_FEELINGS << 9) | 0x31 +#define EC_WORD_NICE (EC_GROUP_FEELINGS << 9) | 0x32 +#define EC_WORD_DRINK (EC_GROUP_FEELINGS << 9) | 0x33 +#define EC_WORD_SURPRISE (EC_GROUP_FEELINGS << 9) | 0x34 +#define EC_WORD_FEAR (EC_GROUP_FEELINGS << 9) | 0x35 +#define EC_WORD_WANT (EC_GROUP_FEELINGS << 9) | 0x36 +#define EC_WORD_WAIT (EC_GROUP_FEELINGS << 9) | 0x37 +#define EC_WORD_SATISFIED (EC_GROUP_FEELINGS << 9) | 0x38 +#define EC_WORD_SEE (EC_GROUP_FEELINGS << 9) | 0x39 +#define EC_WORD_RARE (EC_GROUP_FEELINGS << 9) | 0x3a +#define EC_WORD_NEGATIVE (EC_GROUP_FEELINGS << 9) | 0x3b +#define EC_WORD_DONE (EC_GROUP_FEELINGS << 9) | 0x3c +#define EC_WORD_DANGER (EC_GROUP_FEELINGS << 9) | 0x3d +#define EC_WORD_DEFEATED (EC_GROUP_FEELINGS << 9) | 0x3e +#define EC_WORD_BEAT (EC_GROUP_FEELINGS << 9) | 0x3f +#define EC_WORD_GREAT (EC_GROUP_FEELINGS << 9) | 0x40 +#define EC_WORD_ROMANTIC (EC_GROUP_FEELINGS << 9) | 0x41 +#define EC_WORD_QUESTION (EC_GROUP_FEELINGS << 9) | 0x42 +#define EC_WORD_UNDERSTAND (EC_GROUP_FEELINGS << 9) | 0x43 +#define EC_WORD_UNDERSTANDS (EC_GROUP_FEELINGS << 9) | 0x44 + +// CONDITIONS +#define EC_WORD_HOT (EC_GROUP_CONDITIONS << 9) | 0x0 +#define EC_WORD_EXISTS (EC_GROUP_CONDITIONS << 9) | 0x1 +#define EC_WORD_EXCESS (EC_GROUP_CONDITIONS << 9) | 0x2 +#define EC_WORD_APPROVED (EC_GROUP_CONDITIONS << 9) | 0x3 +#define EC_WORD_HAS (EC_GROUP_CONDITIONS << 9) | 0x4 +#define EC_WORD_GOOD (EC_GROUP_CONDITIONS << 9) | 0x5 +#define EC_WORD_LESS (EC_GROUP_CONDITIONS << 9) | 0x6 +#define EC_WORD_MOMENTUM (EC_GROUP_CONDITIONS << 9) | 0x7 +#define EC_WORD_GOING (EC_GROUP_CONDITIONS << 9) | 0x8 +#define EC_WORD_WEIRD (EC_GROUP_CONDITIONS << 9) | 0x9 +#define EC_WORD_BUSY (EC_GROUP_CONDITIONS << 9) | 0xa +#define EC_WORD_TOGETHER (EC_GROUP_CONDITIONS << 9) | 0xb +#define EC_WORD_FULL (EC_GROUP_CONDITIONS << 9) | 0xc +#define EC_WORD_ABSENT (EC_GROUP_CONDITIONS << 9) | 0xd +#define EC_WORD_BEING (EC_GROUP_CONDITIONS << 9) | 0xe +#define EC_WORD_NEED (EC_GROUP_CONDITIONS << 9) | 0xf +#define EC_WORD_TASTY (EC_GROUP_CONDITIONS << 9) | 0x10 +#define EC_WORD_SKILLED (EC_GROUP_CONDITIONS << 9) | 0x11 +#define EC_WORD_NOISY (EC_GROUP_CONDITIONS << 9) | 0x12 +#define EC_WORD_BIG (EC_GROUP_CONDITIONS << 9) | 0x13 +#define EC_WORD_LATE (EC_GROUP_CONDITIONS << 9) | 0x14 +#define EC_WORD_CLOSE (EC_GROUP_CONDITIONS << 9) | 0x15 +#define EC_WORD_DOCILE (EC_GROUP_CONDITIONS << 9) | 0x16 +#define EC_WORD_AMUSING (EC_GROUP_CONDITIONS << 9) | 0x17 +#define EC_WORD_ENTERTAINING (EC_GROUP_CONDITIONS << 9) | 0x18 +#define EC_WORD_PERFECTION (EC_GROUP_CONDITIONS << 9) | 0x19 +#define EC_WORD_PRETTY (EC_GROUP_CONDITIONS << 9) | 0x1a +#define EC_WORD_HEALTHY (EC_GROUP_CONDITIONS << 9) | 0x1b +#define EC_WORD_EXCELLENT (EC_GROUP_CONDITIONS << 9) | 0x1c +#define EC_WORD_UPSIDE_DOWN (EC_GROUP_CONDITIONS << 9) | 0x1d +#define EC_WORD_COLD (EC_GROUP_CONDITIONS << 9) | 0x1e +#define EC_WORD_REFRESHING (EC_GROUP_CONDITIONS << 9) | 0x1f +#define EC_WORD_UNAVOIDABLE (EC_GROUP_CONDITIONS << 9) | 0x20 +#define EC_WORD_MUCH (EC_GROUP_CONDITIONS << 9) | 0x21 +#define EC_WORD_OVERWHELMING (EC_GROUP_CONDITIONS << 9) | 0x22 +#define EC_WORD_FABULOUS (EC_GROUP_CONDITIONS << 9) | 0x23 +#define EC_WORD_ELSE (EC_GROUP_CONDITIONS << 9) | 0x24 +#define EC_WORD_EXPENSIVE (EC_GROUP_CONDITIONS << 9) | 0x25 +#define EC_WORD_CORRECT (EC_GROUP_CONDITIONS << 9) | 0x26 +#define EC_WORD_IMPOSSIBLE (EC_GROUP_CONDITIONS << 9) | 0x27 +#define EC_WORD_SMALL (EC_GROUP_CONDITIONS << 9) | 0x28 +#define EC_WORD_DIFFERENT (EC_GROUP_CONDITIONS << 9) | 0x29 +#define EC_WORD_TIRED (EC_GROUP_CONDITIONS << 9) | 0x2a +#define EC_WORD_SKILL (EC_GROUP_CONDITIONS << 9) | 0x2b +#define EC_WORD_TOP (EC_GROUP_CONDITIONS << 9) | 0x2c +#define EC_WORD_NON_STOP (EC_GROUP_CONDITIONS << 9) | 0x2d +#define EC_WORD_PREPOSTEROUS (EC_GROUP_CONDITIONS << 9) | 0x2e +#define EC_WORD_NONE (EC_GROUP_CONDITIONS << 9) | 0x2f +#define EC_WORD_NOTHING (EC_GROUP_CONDITIONS << 9) | 0x30 +#define EC_WORD_NATURAL (EC_GROUP_CONDITIONS << 9) | 0x31 +#define EC_WORD_BECOMES (EC_GROUP_CONDITIONS << 9) | 0x32 +#define EC_WORD_LUKEWARM (EC_GROUP_CONDITIONS << 9) | 0x33 +#define EC_WORD_FAST (EC_GROUP_CONDITIONS << 9) | 0x34 +#define EC_WORD_LOW (EC_GROUP_CONDITIONS << 9) | 0x35 +#define EC_WORD_AWFUL (EC_GROUP_CONDITIONS << 9) | 0x36 +#define EC_WORD_ALONE (EC_GROUP_CONDITIONS << 9) | 0x37 +#define EC_WORD_BORED (EC_GROUP_CONDITIONS << 9) | 0x38 +#define EC_WORD_SECRET (EC_GROUP_CONDITIONS << 9) | 0x39 +#define EC_WORD_MYSTERY (EC_GROUP_CONDITIONS << 9) | 0x3a +#define EC_WORD_LACKS (EC_GROUP_CONDITIONS << 9) | 0x3b +#define EC_WORD_BEST (EC_GROUP_CONDITIONS << 9) | 0x3c +#define EC_WORD_LOUSY (EC_GROUP_CONDITIONS << 9) | 0x3d +#define EC_WORD_MISTAKE (EC_GROUP_CONDITIONS << 9) | 0x3e +#define EC_WORD_KIND (EC_GROUP_CONDITIONS << 9) | 0x3f +#define EC_WORD_WELL (EC_GROUP_CONDITIONS << 9) | 0x40 +#define EC_WORD_WEAKENED (EC_GROUP_CONDITIONS << 9) | 0x41 +#define EC_WORD_SIMPLE (EC_GROUP_CONDITIONS << 9) | 0x42 +#define EC_WORD_SEEMS (EC_GROUP_CONDITIONS << 9) | 0x43 +#define EC_WORD_BADLY (EC_GROUP_CONDITIONS << 9) | 0x44 + +// ACTIONS +#define EC_WORD_MEETS (EC_GROUP_ACTIONS << 9) | 0x0 +#define EC_WORD_CONCEDE (EC_GROUP_ACTIONS << 9) | 0x1 +#define EC_WORD_GIVE (EC_GROUP_ACTIONS << 9) | 0x2 +#define EC_WORD_GIVES (EC_GROUP_ACTIONS << 9) | 0x3 +#define EC_WORD_PLAYED (EC_GROUP_ACTIONS << 9) | 0x4 +#define EC_WORD_PLAYS (EC_GROUP_ACTIONS << 9) | 0x5 +#define EC_WORD_COLLECT (EC_GROUP_ACTIONS << 9) | 0x6 +#define EC_WORD_WALKING (EC_GROUP_ACTIONS << 9) | 0x7 +#define EC_WORD_WALKS (EC_GROUP_ACTIONS << 9) | 0x8 +#define EC_WORD_SAYS (EC_GROUP_ACTIONS << 9) | 0x9 +#define EC_WORD_WENT (EC_GROUP_ACTIONS << 9) | 0xa +#define EC_WORD_SAID (EC_GROUP_ACTIONS << 9) | 0xb +#define EC_WORD_WAKE_UP (EC_GROUP_ACTIONS << 9) | 0xc +#define EC_WORD_WAKES_UP (EC_GROUP_ACTIONS << 9) | 0xd +#define EC_WORD_ANGERS (EC_GROUP_ACTIONS << 9) | 0xe +#define EC_WORD_TEACH (EC_GROUP_ACTIONS << 9) | 0xf +#define EC_WORD_TEACHES (EC_GROUP_ACTIONS << 9) | 0x10 +#define EC_WORD_PLEASE (EC_GROUP_ACTIONS << 9) | 0x11 +#define EC_WORD_LEARN (EC_GROUP_ACTIONS << 9) | 0x12 +#define EC_WORD_CHANGE (EC_GROUP_ACTIONS << 9) | 0x13 +#define EC_WORD_STORY (EC_GROUP_ACTIONS << 9) | 0x14 +#define EC_WORD_TRUST (EC_GROUP_ACTIONS << 9) | 0x15 +#define EC_WORD_LAVISH (EC_GROUP_ACTIONS << 9) | 0x16 +#define EC_WORD_LISTENS (EC_GROUP_ACTIONS << 9) | 0x17 +#define EC_WORD_HEARING (EC_GROUP_ACTIONS << 9) | 0x18 +#define EC_WORD_TRAINS (EC_GROUP_ACTIONS << 9) | 0x19 +#define EC_WORD_CHOOSE (EC_GROUP_ACTIONS << 9) | 0x1a +#define EC_WORD_COME (EC_GROUP_ACTIONS << 9) | 0x1b +#define EC_WORD_CAME (EC_GROUP_ACTIONS << 9) | 0x1c +#define EC_WORD_SEARCH (EC_GROUP_ACTIONS << 9) | 0x1d +#define EC_WORD_MAKE (EC_GROUP_ACTIONS << 9) | 0x1e +#define EC_WORD_CAUSE (EC_GROUP_ACTIONS << 9) | 0x1f +#define EC_WORD_KNOW (EC_GROUP_ACTIONS << 9) | 0x20 +#define EC_WORD_KNOWS (EC_GROUP_ACTIONS << 9) | 0x21 +#define EC_WORD_REFUSE (EC_GROUP_ACTIONS << 9) | 0x22 +#define EC_WORD_STORES (EC_GROUP_ACTIONS << 9) | 0x23 +#define EC_WORD_BRAG (EC_GROUP_ACTIONS << 9) | 0x24 +#define EC_WORD_IGNORANT (EC_GROUP_ACTIONS << 9) | 0x25 +#define EC_WORD_THINKS (EC_GROUP_ACTIONS << 9) | 0x26 +#define EC_WORD_BELIEVE (EC_GROUP_ACTIONS << 9) | 0x27 +#define EC_WORD_SLIDE (EC_GROUP_ACTIONS << 9) | 0x28 +#define EC_WORD_EATS (EC_GROUP_ACTIONS << 9) | 0x29 +#define EC_WORD_USE (EC_GROUP_ACTIONS << 9) | 0x2a +#define EC_WORD_USES (EC_GROUP_ACTIONS << 9) | 0x2b +#define EC_WORD_USING (EC_GROUP_ACTIONS << 9) | 0x2c +#define EC_WORD_COULDN_T (EC_GROUP_ACTIONS << 9) | 0x2d +#define EC_WORD_CAPABLE (EC_GROUP_ACTIONS << 9) | 0x2e +#define EC_WORD_DISAPPEAR (EC_GROUP_ACTIONS << 9) | 0x2f +#define EC_WORD_APPEAR (EC_GROUP_ACTIONS << 9) | 0x30 +#define EC_WORD_THROW (EC_GROUP_ACTIONS << 9) | 0x31 +#define EC_WORD_WORRY (EC_GROUP_ACTIONS << 9) | 0x32 +#define EC_WORD_SLEPT (EC_GROUP_ACTIONS << 9) | 0x33 +#define EC_WORD_SLEEP (EC_GROUP_ACTIONS << 9) | 0x34 +#define EC_WORD_RELEASE (EC_GROUP_ACTIONS << 9) | 0x35 +#define EC_WORD_DRINKS (EC_GROUP_ACTIONS << 9) | 0x36 +#define EC_WORD_RUNS (EC_GROUP_ACTIONS << 9) | 0x37 +#define EC_WORD_RUN (EC_GROUP_ACTIONS << 9) | 0x38 +#define EC_WORD_WORKS (EC_GROUP_ACTIONS << 9) | 0x39 +#define EC_WORD_WORKING (EC_GROUP_ACTIONS << 9) | 0x3a +#define EC_WORD_TALKING (EC_GROUP_ACTIONS << 9) | 0x3b +#define EC_WORD_TALK (EC_GROUP_ACTIONS << 9) | 0x3c +#define EC_WORD_SINK (EC_GROUP_ACTIONS << 9) | 0x3d +#define EC_WORD_SMACK (EC_GROUP_ACTIONS << 9) | 0x3e +#define EC_WORD_PRETEND (EC_GROUP_ACTIONS << 9) | 0x3f +#define EC_WORD_PRAISE (EC_GROUP_ACTIONS << 9) | 0x40 +#define EC_WORD_OVERDO (EC_GROUP_ACTIONS << 9) | 0x41 +#define EC_WORD_SHOW (EC_GROUP_ACTIONS << 9) | 0x42 +#define EC_WORD_LOOKS (EC_GROUP_ACTIONS << 9) | 0x43 +#define EC_WORD_SEES (EC_GROUP_ACTIONS << 9) | 0x44 +#define EC_WORD_SEEK (EC_GROUP_ACTIONS << 9) | 0x45 +#define EC_WORD_OWN (EC_GROUP_ACTIONS << 9) | 0x46 +#define EC_WORD_TAKE (EC_GROUP_ACTIONS << 9) | 0x47 +#define EC_WORD_ALLOW (EC_GROUP_ACTIONS << 9) | 0x48 +#define EC_WORD_FORGET (EC_GROUP_ACTIONS << 9) | 0x49 +#define EC_WORD_FORGETS (EC_GROUP_ACTIONS << 9) | 0x4a +#define EC_WORD_APPEARS (EC_GROUP_ACTIONS << 9) | 0x4b +#define EC_WORD_FAINT (EC_GROUP_ACTIONS << 9) | 0x4c +#define EC_WORD_FAINTED (EC_GROUP_ACTIONS << 9) | 0x4d + +// LIFESTYLE +#define EC_WORD_CHORES (EC_GROUP_LIFESTYLE << 9) | 0x0 +#define EC_WORD_HOME (EC_GROUP_LIFESTYLE << 9) | 0x1 +#define EC_WORD_MONEY (EC_GROUP_LIFESTYLE << 9) | 0x2 +#define EC_WORD_ALLOWANCE (EC_GROUP_LIFESTYLE << 9) | 0x3 +#define EC_WORD_BATH (EC_GROUP_LIFESTYLE << 9) | 0x4 +#define EC_WORD_CONVERSATION (EC_GROUP_LIFESTYLE << 9) | 0x5 +#define EC_WORD_SCHOOL (EC_GROUP_LIFESTYLE << 9) | 0x6 +#define EC_WORD_COMMEMORATE (EC_GROUP_LIFESTYLE << 9) | 0x7 +#define EC_WORD_HABIT (EC_GROUP_LIFESTYLE << 9) | 0x8 +#define EC_WORD_GROUP (EC_GROUP_LIFESTYLE << 9) | 0x9 +#define EC_WORD_WORD (EC_GROUP_LIFESTYLE << 9) | 0xa +#define EC_WORD_STORE (EC_GROUP_LIFESTYLE << 9) | 0xb +#define EC_WORD_SERVICE (EC_GROUP_LIFESTYLE << 9) | 0xc +#define EC_WORD_WORK (EC_GROUP_LIFESTYLE << 9) | 0xd +#define EC_WORD_SYSTEM (EC_GROUP_LIFESTYLE << 9) | 0xe +#define EC_WORD_TRAIN (EC_GROUP_LIFESTYLE << 9) | 0xf +#define EC_WORD_CLASS (EC_GROUP_LIFESTYLE << 9) | 0x10 +#define EC_WORD_LESSONS (EC_GROUP_LIFESTYLE << 9) | 0x11 +#define EC_WORD_INFORMATION (EC_GROUP_LIFESTYLE << 9) | 0x12 +#define EC_WORD_LIVING (EC_GROUP_LIFESTYLE << 9) | 0x13 +#define EC_WORD_TEACHER (EC_GROUP_LIFESTYLE << 9) | 0x14 +#define EC_WORD_TOURNAMENT (EC_GROUP_LIFESTYLE << 9) | 0x15 +#define EC_WORD_LETTER (EC_GROUP_LIFESTYLE << 9) | 0x16 +#define EC_WORD_EVENT (EC_GROUP_LIFESTYLE << 9) | 0x17 +#define EC_WORD_DIGITAL (EC_GROUP_LIFESTYLE << 9) | 0x18 +#define EC_WORD_TEST (EC_GROUP_LIFESTYLE << 9) | 0x19 +#define EC_WORD_DEPT_STORE (EC_GROUP_LIFESTYLE << 9) | 0x1a +#define EC_WORD_TELEVISION (EC_GROUP_LIFESTYLE << 9) | 0x1b +#define EC_WORD_PHONE (EC_GROUP_LIFESTYLE << 9) | 0x1c +#define EC_WORD_ITEM (EC_GROUP_LIFESTYLE << 9) | 0x1d +#define EC_WORD_NAME (EC_GROUP_LIFESTYLE << 9) | 0x1e +#define EC_WORD_NEWS (EC_GROUP_LIFESTYLE << 9) | 0x1f +#define EC_WORD_POPULAR (EC_GROUP_LIFESTYLE << 9) | 0x20 +#define EC_WORD_PARTY (EC_GROUP_LIFESTYLE << 9) | 0x21 +#define EC_WORD_STUDY (EC_GROUP_LIFESTYLE << 9) | 0x22 +#define EC_WORD_MACHINE (EC_GROUP_LIFESTYLE << 9) | 0x23 +#define EC_WORD_MAIL (EC_GROUP_LIFESTYLE << 9) | 0x24 +#define EC_WORD_MESSAGE (EC_GROUP_LIFESTYLE << 9) | 0x25 +#define EC_WORD_PROMISE (EC_GROUP_LIFESTYLE << 9) | 0x26 +#define EC_WORD_DREAM (EC_GROUP_LIFESTYLE << 9) | 0x27 +#define EC_WORD_KINDERGARTEN (EC_GROUP_LIFESTYLE << 9) | 0x28 +#define EC_WORD_LIFE (EC_GROUP_LIFESTYLE << 9) | 0x29 +#define EC_WORD_RADIO (EC_GROUP_LIFESTYLE << 9) | 0x2a +#define EC_WORD_RENTAL (EC_GROUP_LIFESTYLE << 9) | 0x2b +#define EC_WORD_WORLD (EC_GROUP_LIFESTYLE << 9) | 0x2c + +// HOBBIES +#define EC_WORD_IDOL (EC_GROUP_HOBBIES << 9) | 0x0 +#define EC_WORD_ANIME (EC_GROUP_HOBBIES << 9) | 0x1 +#define EC_WORD_SONG (EC_GROUP_HOBBIES << 9) | 0x2 +#define EC_WORD_MOVIE (EC_GROUP_HOBBIES << 9) | 0x3 +#define EC_WORD_SWEETS (EC_GROUP_HOBBIES << 9) | 0x4 +#define EC_WORD_CHAT (EC_GROUP_HOBBIES << 9) | 0x5 +#define EC_WORD_CHILD_S_PLAY (EC_GROUP_HOBBIES << 9) | 0x6 +#define EC_WORD_TOYS (EC_GROUP_HOBBIES << 9) | 0x7 +#define EC_WORD_MUSIC (EC_GROUP_HOBBIES << 9) | 0x8 +#define EC_WORD_CARDS (EC_GROUP_HOBBIES << 9) | 0x9 +#define EC_WORD_SHOPPING (EC_GROUP_HOBBIES << 9) | 0xa +#define EC_WORD_CAMERA (EC_GROUP_HOBBIES << 9) | 0xb +#define EC_WORD_VIEWING (EC_GROUP_HOBBIES << 9) | 0xc +#define EC_WORD_SPECTATOR (EC_GROUP_HOBBIES << 9) | 0xd +#define EC_WORD_GOURMET (EC_GROUP_HOBBIES << 9) | 0xe +#define EC_WORD_GAME (EC_GROUP_HOBBIES << 9) | 0xf +#define EC_WORD_RPG (EC_GROUP_HOBBIES << 9) | 0x10 +#define EC_WORD_COLLECTION (EC_GROUP_HOBBIES << 9) | 0x11 +#define EC_WORD_COMPLETE (EC_GROUP_HOBBIES << 9) | 0x12 +#define EC_WORD_MAGAZINE (EC_GROUP_HOBBIES << 9) | 0x13 +#define EC_WORD_WALK (EC_GROUP_HOBBIES << 9) | 0x14 +#define EC_WORD_BIKE (EC_GROUP_HOBBIES << 9) | 0x15 +#define EC_WORD_HOBBY (EC_GROUP_HOBBIES << 9) | 0x16 +#define EC_WORD_SPORTS (EC_GROUP_HOBBIES << 9) | 0x17 +#define EC_WORD_SOFTWARE (EC_GROUP_HOBBIES << 9) | 0x18 +#define EC_WORD_SONGS (EC_GROUP_HOBBIES << 9) | 0x19 +#define EC_WORD_DIET (EC_GROUP_HOBBIES << 9) | 0x1a +#define EC_WORD_TREASURE (EC_GROUP_HOBBIES << 9) | 0x1b +#define EC_WORD_TRAVEL (EC_GROUP_HOBBIES << 9) | 0x1c +#define EC_WORD_DANCE (EC_GROUP_HOBBIES << 9) | 0x1d +#define EC_WORD_CHANNEL (EC_GROUP_HOBBIES << 9) | 0x1e +#define EC_WORD_MAKING (EC_GROUP_HOBBIES << 9) | 0x1f +#define EC_WORD_FISHING (EC_GROUP_HOBBIES << 9) | 0x20 +#define EC_WORD_DATE (EC_GROUP_HOBBIES << 9) | 0x21 +#define EC_WORD_DESIGN (EC_GROUP_HOBBIES << 9) | 0x22 +#define EC_WORD_LOCOMOTIVE (EC_GROUP_HOBBIES << 9) | 0x23 +#define EC_WORD_PLUSH_DOLL (EC_GROUP_HOBBIES << 9) | 0x24 +#define EC_WORD_PC (EC_GROUP_HOBBIES << 9) | 0x25 +#define EC_WORD_FLOWERS (EC_GROUP_HOBBIES << 9) | 0x26 +#define EC_WORD_HERO (EC_GROUP_HOBBIES << 9) | 0x27 +#define EC_WORD_NAP (EC_GROUP_HOBBIES << 9) | 0x28 +#define EC_WORD_HEROINE (EC_GROUP_HOBBIES << 9) | 0x29 +#define EC_WORD_FASHION (EC_GROUP_HOBBIES << 9) | 0x2a +#define EC_WORD_ADVENTURE (EC_GROUP_HOBBIES << 9) | 0x2b +#define EC_WORD_BOARD (EC_GROUP_HOBBIES << 9) | 0x2c +#define EC_WORD_BALL (EC_GROUP_HOBBIES << 9) | 0x2d +#define EC_WORD_BOOK (EC_GROUP_HOBBIES << 9) | 0x2e +#define EC_WORD_FESTIVAL (EC_GROUP_HOBBIES << 9) | 0x2f +#define EC_WORD_COMICS (EC_GROUP_HOBBIES << 9) | 0x30 +#define EC_WORD_HOLIDAY (EC_GROUP_HOBBIES << 9) | 0x31 +#define EC_WORD_PLANS (EC_GROUP_HOBBIES << 9) | 0x32 +#define EC_WORD_TRENDY (EC_GROUP_HOBBIES << 9) | 0x33 +#define EC_WORD_VACATION (EC_GROUP_HOBBIES << 9) | 0x34 +#define EC_WORD_LOOK (EC_GROUP_HOBBIES << 9) | 0x35 + +// TIME +#define EC_WORD_FALL (EC_GROUP_TIME << 9) | 0x0 +#define EC_WORD_MORNING (EC_GROUP_TIME << 9) | 0x1 +#define EC_WORD_TOMORROW (EC_GROUP_TIME << 9) | 0x2 +#define EC_WORD_LAST (EC_GROUP_TIME << 9) | 0x3 +#define EC_WORD_DAY (EC_GROUP_TIME << 9) | 0x4 +#define EC_WORD_SOMETIME (EC_GROUP_TIME << 9) | 0x5 +#define EC_WORD_ALWAYS (EC_GROUP_TIME << 9) | 0x6 +#define EC_WORD_CURRENT (EC_GROUP_TIME << 9) | 0x7 +#define EC_WORD_FOREVER (EC_GROUP_TIME << 9) | 0x8 +#define EC_WORD_DAYS (EC_GROUP_TIME << 9) | 0x9 +#define EC_WORD_END (EC_GROUP_TIME << 9) | 0xa +#define EC_WORD_TUESDAY (EC_GROUP_TIME << 9) | 0xb +#define EC_WORD_YESTERDAY (EC_GROUP_TIME << 9) | 0xc +#define EC_WORD_TODAY (EC_GROUP_TIME << 9) | 0xd +#define EC_WORD_FRIDAY (EC_GROUP_TIME << 9) | 0xe +#define EC_WORD_MONDAY (EC_GROUP_TIME << 9) | 0xf +#define EC_WORD_LATER (EC_GROUP_TIME << 9) | 0x10 +#define EC_WORD_EARLIER (EC_GROUP_TIME << 9) | 0x11 +#define EC_WORD_ANOTHER (EC_GROUP_TIME << 9) | 0x12 +#define EC_WORD_TIME (EC_GROUP_TIME << 9) | 0x13 +#define EC_WORD_FINISH (EC_GROUP_TIME << 9) | 0x14 +#define EC_WORD_WEDNESDAY (EC_GROUP_TIME << 9) | 0x15 +#define EC_WORD_SOON (EC_GROUP_TIME << 9) | 0x16 +#define EC_WORD_START (EC_GROUP_TIME << 9) | 0x17 +#define EC_WORD_MONTH (EC_GROUP_TIME << 9) | 0x18 +#define EC_WORD_STOP (EC_GROUP_TIME << 9) | 0x19 +#define EC_WORD_NOW (EC_GROUP_TIME << 9) | 0x1a +#define EC_WORD_FINAL (EC_GROUP_TIME << 9) | 0x1b +#define EC_WORD_NEXT (EC_GROUP_TIME << 9) | 0x1c +#define EC_WORD_AGE (EC_GROUP_TIME << 9) | 0x1d +#define EC_WORD_SATURDAY (EC_GROUP_TIME << 9) | 0x1e +#define EC_WORD_SUMMER (EC_GROUP_TIME << 9) | 0x1f +#define EC_WORD_SUNDAY (EC_GROUP_TIME << 9) | 0x20 +#define EC_WORD_BEGINNING (EC_GROUP_TIME << 9) | 0x21 +#define EC_WORD_SPRING (EC_GROUP_TIME << 9) | 0x22 +#define EC_WORD_DAYTIME (EC_GROUP_TIME << 9) | 0x23 +#define EC_WORD_WINTER (EC_GROUP_TIME << 9) | 0x24 +#define EC_WORD_DAILY (EC_GROUP_TIME << 9) | 0x25 +#define EC_WORD_OLDEN (EC_GROUP_TIME << 9) | 0x26 +#define EC_WORD_ALMOST (EC_GROUP_TIME << 9) | 0x27 +#define EC_WORD_NEARLY (EC_GROUP_TIME << 9) | 0x28 +#define EC_WORD_THURSDAY (EC_GROUP_TIME << 9) | 0x29 +#define EC_WORD_NIGHTTIME (EC_GROUP_TIME << 9) | 0x2a +#define EC_WORD_NIGHT (EC_GROUP_TIME << 9) | 0x2b +#define EC_WORD_WEEK (EC_GROUP_TIME << 9) | 0x2c + +// MISC +#define EC_WORD_HIGHS (EC_GROUP_MISC << 9) | 0x0 +#define EC_WORD_LOWS (EC_GROUP_MISC << 9) | 0x1 +#define EC_WORD_UM (EC_GROUP_MISC << 9) | 0x2 +#define EC_WORD_REAR (EC_GROUP_MISC << 9) | 0x3 +#define EC_WORD_THINGS (EC_GROUP_MISC << 9) | 0x4 +#define EC_WORD_THING (EC_GROUP_MISC << 9) | 0x5 +#define EC_WORD_BELOW (EC_GROUP_MISC << 9) | 0x6 +#define EC_WORD_ABOVE (EC_GROUP_MISC << 9) | 0x7 +#define EC_WORD_BACK (EC_GROUP_MISC << 9) | 0x8 +#define EC_WORD_HIGH (EC_GROUP_MISC << 9) | 0x9 +#define EC_WORD_HERE (EC_GROUP_MISC << 9) | 0xa +#define EC_WORD_INSIDE (EC_GROUP_MISC << 9) | 0xb +#define EC_WORD_OUTSIDE (EC_GROUP_MISC << 9) | 0xc +#define EC_WORD_BESIDE (EC_GROUP_MISC << 9) | 0xd +#define EC_WORD_THIS_IS_IT_EXCL (EC_GROUP_MISC << 9) | 0xe +#define EC_WORD_THIS (EC_GROUP_MISC << 9) | 0xf +#define EC_WORD_EVERY (EC_GROUP_MISC << 9) | 0x10 +#define EC_WORD_THESE (EC_GROUP_MISC << 9) | 0x11 +#define EC_WORD_THESE_WERE (EC_GROUP_MISC << 9) | 0x12 +#define EC_WORD_DOWN (EC_GROUP_MISC << 9) | 0x13 +#define EC_WORD_THAT (EC_GROUP_MISC << 9) | 0x14 +#define EC_WORD_THOSE_ARE (EC_GROUP_MISC << 9) | 0x15 +#define EC_WORD_THOSE_WERE (EC_GROUP_MISC << 9) | 0x16 +#define EC_WORD_THAT_S_IT_EXCL (EC_GROUP_MISC << 9) | 0x17 +#define EC_WORD_AM (EC_GROUP_MISC << 9) | 0x18 +#define EC_WORD_THAT_WAS (EC_GROUP_MISC << 9) | 0x19 +#define EC_WORD_FRONT (EC_GROUP_MISC << 9) | 0x1a +#define EC_WORD_UP (EC_GROUP_MISC << 9) | 0x1b +#define EC_WORD_CHOICE (EC_GROUP_MISC << 9) | 0x1c +#define EC_WORD_FAR (EC_GROUP_MISC << 9) | 0x1d +#define EC_WORD_AWAY (EC_GROUP_MISC << 9) | 0x1e +#define EC_WORD_NEAR (EC_GROUP_MISC << 9) | 0x1f +#define EC_WORD_WHERE (EC_GROUP_MISC << 9) | 0x20 +#define EC_WORD_WHEN (EC_GROUP_MISC << 9) | 0x21 +#define EC_WORD_WHAT (EC_GROUP_MISC << 9) | 0x22 +#define EC_WORD_DEEP (EC_GROUP_MISC << 9) | 0x23 +#define EC_WORD_SHALLOW (EC_GROUP_MISC << 9) | 0x24 +#define EC_WORD_WHY (EC_GROUP_MISC << 9) | 0x25 +#define EC_WORD_CONFUSED (EC_GROUP_MISC << 9) | 0x26 +#define EC_WORD_OPPOSITE (EC_GROUP_MISC << 9) | 0x27 +#define EC_WORD_LEFT (EC_GROUP_MISC << 9) | 0x28 +#define EC_WORD_RIGHT (EC_GROUP_MISC << 9) | 0x29 + +// ADJECTIVES +#define EC_WORD_WANDERING (EC_GROUP_ADJECTIVES << 9) | 0x0 +#define EC_WORD_RICKETY (EC_GROUP_ADJECTIVES << 9) | 0x1 +#define EC_WORD_ROCK_SOLID (EC_GROUP_ADJECTIVES << 9) | 0x2 +#define EC_WORD_HUNGRY (EC_GROUP_ADJECTIVES << 9) | 0x3 +#define EC_WORD_TIGHT (EC_GROUP_ADJECTIVES << 9) | 0x4 +#define EC_WORD_TICKLISH (EC_GROUP_ADJECTIVES << 9) | 0x5 +#define EC_WORD_TWIRLING (EC_GROUP_ADJECTIVES << 9) | 0x6 +#define EC_WORD_SPIRALING (EC_GROUP_ADJECTIVES << 9) | 0x7 +#define EC_WORD_THIRSTY (EC_GROUP_ADJECTIVES << 9) | 0x8 +#define EC_WORD_LOLLING (EC_GROUP_ADJECTIVES << 9) | 0x9 +#define EC_WORD_SILKY (EC_GROUP_ADJECTIVES << 9) | 0xa +#define EC_WORD_SADLY (EC_GROUP_ADJECTIVES << 9) | 0xb +#define EC_WORD_HOPELESS (EC_GROUP_ADJECTIVES << 9) | 0xc +#define EC_WORD_USELESS (EC_GROUP_ADJECTIVES << 9) | 0xd +#define EC_WORD_DROOLING (EC_GROUP_ADJECTIVES << 9) | 0xe +#define EC_WORD_EXCITING (EC_GROUP_ADJECTIVES << 9) | 0xf +#define EC_WORD_THICK (EC_GROUP_ADJECTIVES << 9) | 0x10 +#define EC_WORD_SMOOTH (EC_GROUP_ADJECTIVES << 9) | 0x11 +#define EC_WORD_SLIMY (EC_GROUP_ADJECTIVES << 9) | 0x12 +#define EC_WORD_THIN (EC_GROUP_ADJECTIVES << 9) | 0x13 +#define EC_WORD_BREAK (EC_GROUP_ADJECTIVES << 9) | 0x14 +#define EC_WORD_VORACIOUS (EC_GROUP_ADJECTIVES << 9) | 0x15 +#define EC_WORD_SCATTER (EC_GROUP_ADJECTIVES << 9) | 0x16 +#define EC_WORD_AWESOME (EC_GROUP_ADJECTIVES << 9) | 0x17 +#define EC_WORD_WIMPY (EC_GROUP_ADJECTIVES << 9) | 0x18 +#define EC_WORD_WOBBLY (EC_GROUP_ADJECTIVES << 9) | 0x19 +#define EC_WORD_SHAKY (EC_GROUP_ADJECTIVES << 9) | 0x1a +#define EC_WORD_RIPPED (EC_GROUP_ADJECTIVES << 9) | 0x1b +#define EC_WORD_SHREDDED (EC_GROUP_ADJECTIVES << 9) | 0x1c +#define EC_WORD_INCREASING (EC_GROUP_ADJECTIVES << 9) | 0x1d +#define EC_WORD_YET (EC_GROUP_ADJECTIVES << 9) | 0x1e +#define EC_WORD_DESTROYED (EC_GROUP_ADJECTIVES << 9) | 0x1f +#define EC_WORD_FIERY (EC_GROUP_ADJECTIVES << 9) | 0x20 +#define EC_WORD_LOVEY_DOVEY (EC_GROUP_ADJECTIVES << 9) | 0x21 +#define EC_WORD_HAPPILY (EC_GROUP_ADJECTIVES << 9) | 0x22 +#define EC_WORD_ANTICIPATION (EC_GROUP_ADJECTIVES << 9) | 0x23 + +// EVENTS +#define EC_WORD_APPEAL (EC_GROUP_EVENTS << 9) | 0x0 +#define EC_WORD_EVENTS (EC_GROUP_EVENTS << 9) | 0x1 +#define EC_WORD_STAY_AT_HOME (EC_GROUP_EVENTS << 9) | 0x2 +#define EC_WORD_BERRY (EC_GROUP_EVENTS << 9) | 0x3 +#define EC_WORD_CONTEST (EC_GROUP_EVENTS << 9) | 0x4 +#define EC_WORD_MC (EC_GROUP_EVENTS << 9) | 0x5 +#define EC_WORD_JUDGE (EC_GROUP_EVENTS << 9) | 0x6 +#define EC_WORD_SUPER (EC_GROUP_EVENTS << 9) | 0x7 +#define EC_WORD_STAGE (EC_GROUP_EVENTS << 9) | 0x8 +#define EC_WORD_HALL_OF_FAME (EC_GROUP_EVENTS << 9) | 0x9 +#define EC_WORD_EVOLUTION (EC_GROUP_EVENTS << 9) | 0xa +#define EC_WORD_HYPER (EC_GROUP_EVENTS << 9) | 0xb +#define EC_WORD_BATTLE_TOWER (EC_GROUP_EVENTS << 9) | 0xc +#define EC_WORD_LEADERS (EC_GROUP_EVENTS << 9) | 0xd +#define EC_WORD_BATTLE_ROOM (EC_GROUP_EVENTS << 9) | 0xe +#define EC_WORD_HIDDEN (EC_GROUP_EVENTS << 9) | 0xf +#define EC_WORD_SECRET_BASE (EC_GROUP_EVENTS << 9) | 0x10 +#define EC_WORD_BLEND (EC_GROUP_EVENTS << 9) | 0x11 +#define EC_WORD_POKEBLOCK (EC_GROUP_EVENTS << 9) | 0x12 +#define EC_WORD_MASTER (EC_GROUP_EVENTS << 9) | 0x13 +#define EC_WORD_RANK (EC_GROUP_EVENTS << 9) | 0x14 +#define EC_WORD_RIBBON (EC_GROUP_EVENTS << 9) | 0x15 +#define EC_WORD_CRUSH (EC_GROUP_EVENTS << 9) | 0x16 +#define EC_WORD_DIRECT (EC_GROUP_EVENTS << 9) | 0x17 +#define EC_WORD_TOWER (EC_GROUP_EVENTS << 9) | 0x18 +#define EC_WORD_UNION (EC_GROUP_EVENTS << 9) | 0x19 +#define EC_WORD_ROOM (EC_GROUP_EVENTS << 9) | 0x1a +#define EC_WORD_WIRELESS (EC_GROUP_EVENTS << 9) | 0x1b +#define EC_WORD_FRONTIER (EC_GROUP_EVENTS << 9) | 0x1c + +// TRENDY_SAYING +#define EC_WORD_KTHX_BYE (EC_GROUP_TRENDY_SAYING << 9) | 0x0 +#define EC_WORD_YES_SIR_EXCL (EC_GROUP_TRENDY_SAYING << 9) | 0x1 +#define EC_WORD_AVANT_GARDE (EC_GROUP_TRENDY_SAYING << 9) | 0x2 +#define EC_WORD_COUPLE (EC_GROUP_TRENDY_SAYING << 9) | 0x3 +#define EC_WORD_MUCH_OBLIGED (EC_GROUP_TRENDY_SAYING << 9) | 0x4 +#define EC_WORD_YEEHAW_EXCL (EC_GROUP_TRENDY_SAYING << 9) | 0x5 +#define EC_WORD_MEGA (EC_GROUP_TRENDY_SAYING << 9) | 0x6 +#define EC_WORD_1_HIT_KO_EXCL (EC_GROUP_TRENDY_SAYING << 9) | 0x7 +#define EC_WORD_DESTINY (EC_GROUP_TRENDY_SAYING << 9) | 0x8 +#define EC_WORD_CANCEL (EC_GROUP_TRENDY_SAYING << 9) | 0x9 +#define EC_WORD_NEW (EC_GROUP_TRENDY_SAYING << 9) | 0xa +#define EC_WORD_FLATTEN (EC_GROUP_TRENDY_SAYING << 9) | 0xb +#define EC_WORD_KIDDING (EC_GROUP_TRENDY_SAYING << 9) | 0xc +#define EC_WORD_LOSER (EC_GROUP_TRENDY_SAYING << 9) | 0xd +#define EC_WORD_LOSING (EC_GROUP_TRENDY_SAYING << 9) | 0xe +#define EC_WORD_HAPPENING (EC_GROUP_TRENDY_SAYING << 9) | 0xf +#define EC_WORD_HIP_AND (EC_GROUP_TRENDY_SAYING << 9) | 0x10 +#define EC_WORD_SHAKE (EC_GROUP_TRENDY_SAYING << 9) | 0x11 +#define EC_WORD_SHADY (EC_GROUP_TRENDY_SAYING << 9) | 0x12 +#define EC_WORD_UPBEAT (EC_GROUP_TRENDY_SAYING << 9) | 0x13 +#define EC_WORD_MODERN (EC_GROUP_TRENDY_SAYING << 9) | 0x14 +#define EC_WORD_SMELL_YA (EC_GROUP_TRENDY_SAYING << 9) | 0x15 +#define EC_WORD_BANG (EC_GROUP_TRENDY_SAYING << 9) | 0x16 +#define EC_WORD_KNOCKOUT (EC_GROUP_TRENDY_SAYING << 9) | 0x17 +#define EC_WORD_HASSLE (EC_GROUP_TRENDY_SAYING << 9) | 0x18 +#define EC_WORD_WINNER (EC_GROUP_TRENDY_SAYING << 9) | 0x19 +#define EC_WORD_FEVER (EC_GROUP_TRENDY_SAYING << 9) | 0x1a +#define EC_WORD_WANNABE (EC_GROUP_TRENDY_SAYING << 9) | 0x1b +#define EC_WORD_BABY (EC_GROUP_TRENDY_SAYING << 9) | 0x1c +#define EC_WORD_HEART (EC_GROUP_TRENDY_SAYING << 9) | 0x1d +#define EC_WORD_OLD (EC_GROUP_TRENDY_SAYING << 9) | 0x1e +#define EC_WORD_YOUNG (EC_GROUP_TRENDY_SAYING << 9) | 0x1f +#define EC_WORD_UGLY (EC_GROUP_TRENDY_SAYING << 9) | 0x20 + +#define EC_POKEMON(mon) ((EC_GROUP_POKEMON << 9) | SPECIES_##mon) +#define EC_POKEMON2(mon) ((EC_GROUP_POKEMON_2 << 9) | SPECIES_##mon) +#define EC_MOVE(move) ((EC_GROUP_MOVE_1 << 9) | MOVE_##move) +#define EC_MOVE2(move) ((EC_GROUP_MOVE_2 << 9) | MOVE_##move) + +#define EC_GROUP(word) ((word) >> 9) +#define EC_INDEX(word) ((word) & 0x1FF) + +#endif // GUARD_CONSTANTS_EASY_CHAT_H diff --git a/include/constants/event_object_movement_constants.h b/include/constants/event_object_movement_constants.h new file mode 100755 index 000000000..2a80f9a09 --- /dev/null +++ b/include/constants/event_object_movement_constants.h @@ -0,0 +1,245 @@ +#ifndef GUARD_CONSTANTS_EVENTOBJMV_H +#define GUARD_CONSTANTS_EVENTOBJMV_H + +#define MOVEMENT_TYPE_NONE 0x0 +#define MOVEMENT_TYPE_LOOK_AROUND 0x1 +#define MOVEMENT_TYPE_WANDER_AROUND 0x2 +#define MOVEMENT_TYPE_WANDER_UP_AND_DOWN 0x3 +#define MOVEMENT_TYPE_WANDER_DOWN_AND_UP 0x4 +#define MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT 0x5 +#define MOVEMENT_TYPE_WANDER_RIGHT_AND_LEFT 0x6 +#define MOVEMENT_TYPE_FACE_UP 0x7 +#define MOVEMENT_TYPE_FACE_DOWN 0x8 +#define MOVEMENT_TYPE_FACE_LEFT 0x9 +#define MOVEMENT_TYPE_FACE_RIGHT 0xA +#define MOVEMENT_TYPE_PLAYER 0xB +#define MOVEMENT_TYPE_BERRY_TREE_GROWTH 0xC +#define MOVEMENT_TYPE_FACE_DOWN_AND_UP 0xD +#define MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT 0xE +#define MOVEMENT_TYPE_FACE_UP_AND_LEFT 0xF +#define MOVEMENT_TYPE_FACE_UP_AND_RIGHT 0x10 +#define MOVEMENT_TYPE_FACE_DOWN_AND_LEFT 0x11 +#define MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT 0x12 +#define MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT 0x13 +#define MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT 0x14 +#define MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT 0x15 +#define MOVEMENT_TYPE_FACE_DOWN_LEFT_AND_RIGHT 0x16 +#define MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE 0x17 +#define MOVEMENT_TYPE_ROTATE_CLOCKWISE 0x18 +#define MOVEMENT_TYPE_WALK_UP_AND_DOWN 0x19 +#define MOVEMENT_TYPE_WALK_DOWN_AND_UP 0x1A +#define MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT 0x1B +#define MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT 0x1C +#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_LEFT_DOWN 0x1D +#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_DOWN_UP 0x1E +#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_RIGHT_LEFT 0x1F +#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_UP_RIGHT 0x20 +#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_RIGHT_DOWN 0x21 +#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_DOWN_UP 0x22 +#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_LEFT_RIGHT 0x23 +#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_UP_LEFT 0x24 +#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_DOWN_RIGHT 0x25 +#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_RIGHT_LEFT 0x26 +#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_UP_DOWN 0x27 +#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP 0x28 +#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_DOWN_LEFT 0x29 +#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_LEFT_RIGHT 0x2A +#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_UP_DOWN 0x2B +#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_RIGHT_UP 0x2C +#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_DOWN_RIGHT 0x2D +#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT 0x2E +#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP 0x2F +#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_LEFT_DOWN 0x30 +#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_DOWN_LEFT 0x31 +#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT 0x32 +#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN 0x33 +#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP 0x34 +#define MOVEMENT_TYPE_COPY_PLAYER 0x35 +#define MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE 0x36 +#define MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE 0x37 +#define MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE 0x38 +#define MOVEMENT_TYPE_TREE_DISGUISE 0x39 +#define MOVEMENT_TYPE_MOUNTAIN_DISGUISE 0x3A +#define MOVEMENT_TYPE_COPY_PLAYER_IN_GRASS 0x3B +#define MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS 0x3C +#define MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS 0x3D +#define MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS 0x3E +#define MOVEMENT_TYPE_HIDDEN 0x3F +#define MOVEMENT_TYPE_WALK_IN_PLACE_DOWN 0x40 +#define MOVEMENT_TYPE_WALK_IN_PLACE_UP 0x41 +#define MOVEMENT_TYPE_WALK_IN_PLACE_LEFT 0x42 +#define MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT 0x43 +#define MOVEMENT_TYPE_JOG_IN_PLACE_DOWN 0x44 +#define MOVEMENT_TYPE_JOG_IN_PLACE_UP 0x45 +#define MOVEMENT_TYPE_JOG_IN_PLACE_LEFT 0x46 +#define MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT 0x47 +#define MOVEMENT_TYPE_RUN_IN_PLACE_DOWN 0x48 +#define MOVEMENT_TYPE_RUN_IN_PLACE_UP 0x49 +#define MOVEMENT_TYPE_RUN_IN_PLACE_LEFT 0x4A +#define MOVEMENT_TYPE_RUN_IN_PLACE_RIGHT 0x4B +#define MOVEMENT_TYPE_INVISIBLE 0x4C +#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN 0x4D +#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP 0x4E +#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT 0x4F +#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT 0x50 + +#define MOVEMENT_ACTION_FACE_DOWN 0x0 +#define MOVEMENT_ACTION_FACE_UP 0x1 +#define MOVEMENT_ACTION_FACE_LEFT 0x2 +#define MOVEMENT_ACTION_FACE_RIGHT 0x3 +#define MOVEMENT_ACTION_WALK_SLOW_DOWN 0x4 +#define MOVEMENT_ACTION_WALK_SLOW_UP 0x5 +#define MOVEMENT_ACTION_WALK_SLOW_LEFT 0x6 +#define MOVEMENT_ACTION_WALK_SLOW_RIGHT 0x7 +#define MOVEMENT_ACTION_WALK_NORMAL_DOWN 0x8 +#define MOVEMENT_ACTION_WALK_NORMAL_UP 0x9 +#define MOVEMENT_ACTION_WALK_NORMAL_LEFT 0xA +#define MOVEMENT_ACTION_WALK_NORMAL_RIGHT 0xB +#define MOVEMENT_ACTION_JUMP_2_DOWN 0xC +#define MOVEMENT_ACTION_JUMP_2_UP 0xD +#define MOVEMENT_ACTION_JUMP_2_LEFT 0xE +#define MOVEMENT_ACTION_JUMP_2_RIGHT 0xF +#define MOVEMENT_ACTION_DELAY_1 0x10 +#define MOVEMENT_ACTION_DELAY_2 0x11 +#define MOVEMENT_ACTION_DELAY_4 0x12 +#define MOVEMENT_ACTION_DELAY_8 0x13 +#define MOVEMENT_ACTION_DELAY_16 0x14 +#define MOVEMENT_ACTION_WALK_FAST_DOWN 0x15 +#define MOVEMENT_ACTION_WALK_FAST_UP 0x16 +#define MOVEMENT_ACTION_WALK_FAST_LEFT 0x17 +#define MOVEMENT_ACTION_WALK_FAST_RIGHT 0x18 +#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN 0x19 +#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP 0x1A +#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT 0x1B +#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT 0x1C +#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN 0x1D +#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP 0x1E +#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT 0x1F +#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT 0x20 +#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN 0x21 +#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP 0x22 +#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT 0x23 +#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT 0x24 +#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN 0x25 +#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP 0x26 +#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT 0x27 +#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT 0x28 +#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN 0x29 +#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP 0x2A +#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT 0x2B +#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT 0x2C +#define MOVEMENT_ACTION_WALK_FASTEST_DOWN 0x2D +#define MOVEMENT_ACTION_WALK_FASTEST_UP 0x2E +#define MOVEMENT_ACTION_WALK_FASTEST_LEFT 0x2F +#define MOVEMENT_ACTION_WALK_FASTEST_RIGHT 0x30 +#define MOVEMENT_ACTION_SLIDE_DOWN 0x31 +#define MOVEMENT_ACTION_SLIDE_UP 0x32 +#define MOVEMENT_ACTION_SLIDE_LEFT 0x33 +#define MOVEMENT_ACTION_SLIDE_RIGHT 0x34 +#define MOVEMENT_ACTION_PLAYER_RUN_DOWN 0x35 +#define MOVEMENT_ACTION_PLAYER_RUN_UP 0x36 +#define MOVEMENT_ACTION_PLAYER_RUN_LEFT 0x37 +#define MOVEMENT_ACTION_PLAYER_RUN_RIGHT 0x38 +#define MOVEMENT_ACTION_START_ANIM_IN_DIRECTION 0x39 +#define MOVEMENT_ACTION_JUMP_SPECIAL_DOWN 0x3A +#define MOVEMENT_ACTION_JUMP_SPECIAL_UP 0x3B +#define MOVEMENT_ACTION_JUMP_SPECIAL_LEFT 0x3C +#define MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT 0x3D +#define MOVEMENT_ACTION_FACE_PLAYER 0x3E +#define MOVEMENT_ACTION_FACE_AWAY_PLAYER 0x3F +#define MOVEMENT_ACTION_LOCK_FACING_DIRECTION 0x40 +#define MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION 0x41 +#define MOVEMENT_ACTION_JUMP_DOWN 0x42 +#define MOVEMENT_ACTION_JUMP_UP 0x43 +#define MOVEMENT_ACTION_JUMP_LEFT 0x44 +#define MOVEMENT_ACTION_JUMP_RIGHT 0x45 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN 0x46 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP 0x47 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT 0x48 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT 0x49 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP 0x4A +#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN 0x4B +#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT 0x4C +#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT 0x4D +#define MOVEMENT_ACTION_FACE_ORIGINAL_DIRECTION 0x4E +#define MOVEMENT_ACTION_NURSE_JOY_BOW_DOWN 0x4F +#define MOVEMENT_ACTION_ENABLE_JUMP_LANDING_GROUND_EFFECT 0x50 +#define MOVEMENT_ACTION_DISABLE_JUMP_LANDING_GROUND_EFFECT 0x51 +#define MOVEMENT_ACTION_DISABLE_ANIMATION 0x52 +#define MOVEMENT_ACTION_RESTORE_ANIMATION 0x53 +#define MOVEMENT_ACTION_SET_INVISIBLE 0x54 +#define MOVEMENT_ACTION_SET_VISIBLE 0x55 +#define MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK 0x56 +#define MOVEMENT_ACTION_EMOTE_QUESTION_MARK 0x57 +#define MOVEMENT_ACTION_EMOTE_HEART 0x58 +#define MOVEMENT_ACTION_REVEAL_TRAINER 0x59 +#define MOVEMENT_ACTION_ROCK_SMASH_BREAK 0x5A +#define MOVEMENT_ACTION_CUT_TREE 0x5B +#define MOVEMENT_ACTION_SET_FIXED_PRIORITY 0x5C +#define MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY 0x5D +#define MOVEMENT_ACTION_INIT_AFFINE_ANIM 0x5E +#define MOVEMENT_ACTION_CLEAR_AFFINE_ANIM 0x5F +#define MOVEMENT_ACTION_UNKNOWN1 0x60 +#define MOVEMENT_ACTION_UNKNOWN2 0x61 +#define MOVEMENT_ACTION_WALK_DOWN_START_AFFINE 0x62 +#define MOVEMENT_ACTION_WALK_DOWN_AFFINE 0x63 +#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN 0x64 +#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP 0x65 +#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT 0x66 +#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT 0x67 +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN 0x68 +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP 0x69 +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT 0x6A +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT 0x6B +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN 0x6C +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP 0x6D +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT 0x6E +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT 0x6F +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN 0x70 +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP 0x71 +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT 0x72 +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT 0x73 +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN 0x74 +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP 0x75 +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT 0x76 +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT 0x77 +#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN 0x78 +#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP 0x79 +#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT 0x7A +#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT 0x7B +#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN 0x7C +#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP 0x7D +#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT 0x7E +#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT 0x7F +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN 0x80 +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP 0x81 +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT 0x82 +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT 0x83 +#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN 0x84 +#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP 0x85 +#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT 0x86 +#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT 0x87 +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN 0x88 +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP 0x89 +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT 0x8A +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT 0x8B +#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_LEFT 0x8C +#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_RIGHT 0x8D +#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_LEFT 0x8E +#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_RIGHT 0x8F +#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_LEFT 0x90 +#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT 0x91 +#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT 0x92 +#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT 0x93 +#define MOVEMENT_ACTION_STORE_AND_LOCK_ANIM 0x94 +#define MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM 0x95 +#define MOVEMENT_ACTION_WALK_LEFT_AFFINE 0x96 +#define MOVEMENT_ACTION_WALK_RIGHT_AFFINE 0x97 +#define MOVEMENT_ACTION_LEVITATE 0x98 +#define MOVEMENT_ACTION_STOP_LEVITATE 0x99 +#define MOVEMENT_ACTION_DESTROY_EXTRA_TASK_IF_AT_TOP 0x9A +#define MOVEMENT_ACTION_FIGURE_8 0x9B +#define MOVEMENT_ACTION_FLY_UP 0x9C +#define MOVEMENT_ACTION_FLY_DOWN 0x9D + +#endif // GUARD_CONSTANTS_EVENTOBJMV_H diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h new file mode 100644 index 000000000..d04f0a1f9 --- /dev/null +++ b/include/constants/event_objects.h @@ -0,0 +1,263 @@ +#ifndef GUARD_CONSTANTS_EVENT_OBJECTS_H +#define GUARD_CONSTANTS_EVENT_OBJECTS_H + +#define EVENT_OBJ_GFX_BRENDAN_NORMAL 0 +#define EVENT_OBJ_GFX_BRENDAN_MACH_BIKE 1 +#define EVENT_OBJ_GFX_BRENDAN_SURFING 2 +#define EVENT_OBJ_GFX_BRENDAN_FIELD_MOVE 3 +#define EVENT_OBJ_GFX_QUINTY_PLUMP 4 +#define EVENT_OBJ_GFX_LITTLE_BOY_1 5 +#define EVENT_OBJ_GFX_LITTLE_GIRL_1 6 +#define EVENT_OBJ_GFX_BOY_1 7 +#define EVENT_OBJ_GFX_GIRL_1 8 +#define EVENT_OBJ_GFX_BOY_2 9 +#define EVENT_OBJ_GFX_GIRL_2 10 +#define EVENT_OBJ_GFX_LITTLE_BOY_2 11 +#define EVENT_OBJ_GFX_LITTLE_GIRL_2 12 +#define EVENT_OBJ_GFX_BOY_3 13 +#define EVENT_OBJ_GFX_GIRL_3 14 +#define EVENT_OBJ_GFX_BOY_4 15 +#define EVENT_OBJ_GFX_WOMAN_1 16 +#define EVENT_OBJ_GFX_FAT_MAN 17 +#define EVENT_OBJ_GFX_WOMAN_2 18 +#define EVENT_OBJ_GFX_MAN_1 19 +#define EVENT_OBJ_GFX_WOMAN_3 20 +#define EVENT_OBJ_GFX_OLD_MAN_1 21 +#define EVENT_OBJ_GFX_OLD_WOMAN_1 22 +#define EVENT_OBJ_GFX_MAN_2 23 +#define EVENT_OBJ_GFX_WOMAN_4 24 +#define EVENT_OBJ_GFX_MAN_3 25 +#define EVENT_OBJ_GFX_WOMAN_5 26 +#define EVENT_OBJ_GFX_COOK 27 +#define EVENT_OBJ_GFX_WOMAN_6 28 +#define EVENT_OBJ_GFX_OLD_MAN_2 29 +#define EVENT_OBJ_GFX_OLD_WOMAN_2 30 +#define EVENT_OBJ_GFX_CAMPER 31 +#define EVENT_OBJ_GFX_PICNICKER 32 +#define EVENT_OBJ_GFX_MAN_4 33 +#define EVENT_OBJ_GFX_WOMAN_7 34 +#define EVENT_OBJ_GFX_YOUNGSTER 35 +#define EVENT_OBJ_GFX_BUG_CATCHER 36 +#define EVENT_OBJ_GFX_PSYCHIC_M 37 +#define EVENT_OBJ_GFX_SCHOOL_KID_M 38 +#define EVENT_OBJ_GFX_MANIAC 39 +#define EVENT_OBJ_GFX_HEX_MANIAC 40 +#define EVENT_OBJ_GFX_RAYQUAZA_1 41 +#define EVENT_OBJ_GFX_SWIMMER_M 42 +#define EVENT_OBJ_GFX_SWIMMER_F 43 +#define EVENT_OBJ_GFX_BLACK_BELT 44 +#define EVENT_OBJ_GFX_BEAUTY 45 +#define EVENT_OBJ_GFX_SCIENTIST_1 46 +#define EVENT_OBJ_GFX_LASS 47 +#define EVENT_OBJ_GFX_GENTLEMAN 48 +#define EVENT_OBJ_GFX_SAILOR 49 +#define EVENT_OBJ_GFX_FISHERMAN 50 +#define EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M 51 +#define EVENT_OBJ_GFX_RUNNING_TRIATHLETE_F 52 +#define EVENT_OBJ_GFX_TUBER_F 53 +#define EVENT_OBJ_GFX_TUBER_M 54 +#define EVENT_OBJ_GFX_HIKER 55 +#define EVENT_OBJ_GFX_CYCLING_TRIATHLETE_M 56 +#define EVENT_OBJ_GFX_CYCLING_TRIATHLETE_F 57 +#define EVENT_OBJ_GFX_NURSE 58 +#define EVENT_OBJ_GFX_ITEM_BALL 59 +#define EVENT_OBJ_GFX_BERRY_TREE 60 +#define EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES 61 +#define EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES 62 +#define EVENT_OBJ_GFX_BRENDAN_ACRO_BIKE 63 +#define EVENT_OBJ_GFX_PROF_BIRCH 64 +#define EVENT_OBJ_GFX_MAN_5 65 +#define EVENT_OBJ_GFX_MAN_6 66 +#define EVENT_OBJ_GFX_REPORTER_M 67 +#define EVENT_OBJ_GFX_REPORTER_F 68 +#define EVENT_OBJ_GFX_BARD 69 +#define EVENT_OBJ_GFX_ANABEL 70 +#define EVENT_OBJ_GFX_TUCKER 71 +#define EVENT_OBJ_GFX_GRETA 72 +#define EVENT_OBJ_GFX_SPENSER 73 +#define EVENT_OBJ_GFX_NOLAND 74 +#define EVENT_OBJ_GFX_LUCY 75 +#define EVENT_OBJ_GFX_UNUSED_NATU_DOLL 76 +#define EVENT_OBJ_GFX_UNUSED_MAGNEMITE_DOLL 77 +#define EVENT_OBJ_GFX_UNUSED_SQUIRTLE_DOLL 78 +#define EVENT_OBJ_GFX_UNUSED_WOOPER_DOLL 79 +#define EVENT_OBJ_GFX_UNUSED_PIKACHU_DOLL 80 +#define EVENT_OBJ_GFX_UNUSED_PORYGON2_DOLL 81 +#define EVENT_OBJ_GFX_CUTTABLE_TREE 82 +#define EVENT_OBJ_GFX_MART_EMPLOYEE 83 +#define EVENT_OBJ_GFX_ROOFTOP_SALE_WOMAN 84 +#define EVENT_OBJ_GFX_TEALA 85 +#define EVENT_OBJ_GFX_BREAKABLE_ROCK 86 +#define EVENT_OBJ_GFX_PUSHABLE_BOULDER 87 +#define EVENT_OBJ_GFX_MR_BRINEYS_BOAT 88 +#define EVENT_OBJ_GFX_MAY_NORMAL 89 +#define EVENT_OBJ_GFX_MAY_MACH_BIKE 90 +#define EVENT_OBJ_GFX_MAY_ACRO_BIKE 91 +#define EVENT_OBJ_GFX_MAY_SURFING 92 +#define EVENT_OBJ_GFX_MAY_FIELD_MOVE 93 +#define EVENT_OBJ_GFX_TRUCK 94 +#define EVENT_OBJ_GFX_VIGAROTH_CARRYING_BOX 95 +#define EVENT_OBJ_GFX_VIGAROTH_FACING_AWAY 96 +#define EVENT_OBJ_GFX_BIRCHS_BAG 97 +#define EVENT_OBJ_GFX_ZIGZAGOON_1 98 +#define EVENT_OBJ_GFX_ARTIST 99 +#define EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL 100 +#define EVENT_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE 101 +#define EVENT_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE 102 +#define EVENT_OBJ_GFX_RIVAL_BRENDAN_SURFING 103 +#define EVENT_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE 104 +#define EVENT_OBJ_GFX_RIVAL_MAY_NORMAL 105 +#define EVENT_OBJ_GFX_RIVAL_MAY_MACH_BIKE 106 +#define EVENT_OBJ_GFX_RIVAL_MAY_ACRO_BIKE 107 +#define EVENT_OBJ_GFX_RIVAL_MAY_SURFING 108 +#define EVENT_OBJ_GFX_RIVAL_MAY_FIELD_MOVE 109 +#define EVENT_OBJ_GFX_CAMERAMAN 110 +#define EVENT_OBJ_GFX_BRENDAN_UNDERWATER 111 +#define EVENT_OBJ_GFX_MAY_UNDERWATER 112 +#define EVENT_OBJ_GFX_MOVING_BOX 113 +#define EVENT_OBJ_GFX_CABLE_CAR 114 +#define EVENT_OBJ_GFX_SCIENTIST_2 115 +#define EVENT_OBJ_GFX_MAN_7 116 +#define EVENT_OBJ_GFX_AQUA_MEMBER_M 117 +#define EVENT_OBJ_GFX_AQUA_MEMBER_F 118 +#define EVENT_OBJ_GFX_MAGMA_MEMBER_M 119 +#define EVENT_OBJ_GFX_MAGMA_MEMBER_F 120 +#define EVENT_OBJ_GFX_SIDNEY 121 +#define EVENT_OBJ_GFX_PHOEBE 122 +#define EVENT_OBJ_GFX_GLACIA 123 +#define EVENT_OBJ_GFX_DRAKE 124 +#define EVENT_OBJ_GFX_ROXANNE 125 +#define EVENT_OBJ_GFX_BRAWLY 126 +#define EVENT_OBJ_GFX_WATTSON 127 +#define EVENT_OBJ_GFX_FLANNERY 128 +#define EVENT_OBJ_GFX_NORMAN 129 +#define EVENT_OBJ_GFX_WINONA 130 +#define EVENT_OBJ_GFX_LIZA 131 +#define EVENT_OBJ_GFX_TATE 132 +#define EVENT_OBJ_GFX_WALLACE 133 +#define EVENT_OBJ_GFX_STEVEN 134 +#define EVENT_OBJ_GFX_WALLY 135 +#define EVENT_OBJ_GFX_LITTLE_BOY_3 136 +#define EVENT_OBJ_GFX_BRENDAN_FISHING 137 +#define EVENT_OBJ_GFX_MAY_FISHING 138 +#define EVENT_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN 139 +#define EVENT_OBJ_GFX_SS_TIDAL 140 +#define EVENT_OBJ_GFX_SUBMARINE_SHADOW 141 +#define EVENT_OBJ_GFX_PICHU_DOLL 142 +#define EVENT_OBJ_GFX_PIKACHU_DOLL 143 +#define EVENT_OBJ_GFX_MARILL_DOLL 144 +#define EVENT_OBJ_GFX_TOGEPI_DOLL 145 +#define EVENT_OBJ_GFX_CYNDAQUIL_DOLL 146 +#define EVENT_OBJ_GFX_CHIKORITA_DOLL 147 +#define EVENT_OBJ_GFX_TOTODILE_DOLL 148 +#define EVENT_OBJ_GFX_JIGGLYPUFF_DOLL 149 +#define EVENT_OBJ_GFX_MEOWTH_DOLL 150 +#define EVENT_OBJ_GFX_CLEFAIRY_DOLL 151 +#define EVENT_OBJ_GFX_DITTO_DOLL 152 +#define EVENT_OBJ_GFX_SMOOCHUM_DOLL 153 +#define EVENT_OBJ_GFX_TREECKO_DOLL 154 +#define EVENT_OBJ_GFX_TORCHIC_DOLL 155 +#define EVENT_OBJ_GFX_MUDKIP_DOLL 156 +#define EVENT_OBJ_GFX_DUSKULL_DOLL 157 +#define EVENT_OBJ_GFX_WYNAUT_DOLL 158 +#define EVENT_OBJ_GFX_BALTOY_DOLL 159 +#define EVENT_OBJ_GFX_KECLEON_DOLL 160 +#define EVENT_OBJ_GFX_AZURILL_DOLL 161 +#define EVENT_OBJ_GFX_SKITTY_DOLL 162 +#define EVENT_OBJ_GFX_SWABLU_DOLL 163 +#define EVENT_OBJ_GFX_GULPIN_DOLL 164 +#define EVENT_OBJ_GFX_LOTAD_DOLL 165 +#define EVENT_OBJ_GFX_SEEDOT_DOLL 166 +#define EVENT_OBJ_GFX_PIKA_CUSHION 167 +#define EVENT_OBJ_GFX_ROUND_CUSHION 168 +#define EVENT_OBJ_GFX_KISS_CUSHION 169 +#define EVENT_OBJ_GFX_ZIGZAG_CUSHION 170 +#define EVENT_OBJ_GFX_SPIN_CUSHION 171 +#define EVENT_OBJ_GFX_DIAMOND_CUSHION 172 +#define EVENT_OBJ_GFX_BALL_CUSHION 173 +#define EVENT_OBJ_GFX_GRASS_CUSHION 174 +#define EVENT_OBJ_GFX_FIRE_CUSHION 175 +#define EVENT_OBJ_GFX_WATER_CUSHION 176 +#define EVENT_OBJ_GFX_BIG_SNORLAX_DOLL 177 +#define EVENT_OBJ_GFX_BIG_RHYDON_DOLL 178 +#define EVENT_OBJ_GFX_BIG_LAPRAS_DOLL 179 +#define EVENT_OBJ_GFX_BIG_VENUSAUR_DOLL 180 +#define EVENT_OBJ_GFX_BIG_CHARIZARD_DOLL 181 +#define EVENT_OBJ_GFX_BIG_BLASTOISE_DOLL 182 +#define EVENT_OBJ_GFX_BIG_WAILMER_DOLL 183 +#define EVENT_OBJ_GFX_BIG_REGIROCK_DOLL 184 +#define EVENT_OBJ_GFX_BIG_REGICE_DOLL 185 +#define EVENT_OBJ_GFX_BIG_REGISTEEL_DOLL 186 +#define EVENT_OBJ_GFX_LATIAS 187 +#define EVENT_OBJ_GFX_LATIOS 188 +#define EVENT_OBJ_GFX_BOY_5 189 +#define EVENT_OBJ_GFX_CONTEST_JUDGE 190 +#define EVENT_OBJ_GFX_BRENDAN_WATERING 191 +#define EVENT_OBJ_GFX_MAY_WATERING 192 +#define EVENT_OBJ_GFX_BRENDAN_DECORATING 193 +#define EVENT_OBJ_GFX_MAY_DECORATING 194 +#define EVENT_OBJ_GFX_ARCHIE 195 +#define EVENT_OBJ_GFX_MAXIE 196 +#define EVENT_OBJ_GFX_KYOGRE_1 197 +#define EVENT_OBJ_GFX_GROUDON_1 198 +#define EVENT_OBJ_GFX_FOSSIL 199 +#define EVENT_OBJ_GFX_REGIROCK 200 +#define EVENT_OBJ_GFX_REGICE 201 +#define EVENT_OBJ_GFX_REGISTEEL 202 +#define EVENT_OBJ_GFX_SKITTY 203 +#define EVENT_OBJ_GFX_KECLEON_1 204 +#define EVENT_OBJ_GFX_KYOGRE_2 205 +#define EVENT_OBJ_GFX_GROUDON_2 206 +#define EVENT_OBJ_GFX_RAYQUAZA_2 207 +#define EVENT_OBJ_GFX_ZIGZAGOON_2 208 +#define EVENT_OBJ_GFX_PIKACHU 209 +#define EVENT_OBJ_GFX_AZUMARILL 210 +#define EVENT_OBJ_GFX_WINGULL 211 +#define EVENT_OBJ_GFX_KECLEON_2 212 +#define EVENT_OBJ_GFX_TUBER_M_SWIMMING 213 +#define EVENT_OBJ_GFX_AZURILL 214 +#define EVENT_OBJ_GFX_MOM 215 +#define EVENT_OBJ_GFX_LINK_BRENDAN 216 +#define EVENT_OBJ_GFX_LINK_MAY 217 +#define EVENT_OBJ_GFX_JUAN 218 +#define EVENT_OBJ_GFX_SCOTT 219 +#define EVENT_OBJ_GFX_POOCHYENA 220 +#define EVENT_OBJ_GFX_KYOGRE_3 221 +#define EVENT_OBJ_GFX_GROUDON_3 222 +#define EVENT_OBJ_GFX_MYSTERY_GIFT_MAN 223 +#define EVENT_OBJ_GFX_TRICK_HOUSE_STATUE 224 +#define EVENT_OBJ_GFX_KIRLIA 225 +#define EVENT_OBJ_GFX_DUSCLOPS 226 +#define EVENT_OBJ_GFX_UNION_ROOM_NURSE 227 +#define EVENT_OBJ_GFX_SUDOWOODO 228 +#define EVENT_OBJ_GFX_MEW 229 +#define EVENT_OBJ_GFX_RED 230 +#define EVENT_OBJ_GFX_LEAF 231 +#define EVENT_OBJ_GFX_DEOXYS 232 +#define EVENT_OBJ_GFX_DEOXYS_TRIANGLE 233 +#define EVENT_OBJ_GFX_BRANDON 234 +#define EVENT_OBJ_GFX_LINK_RS_BRENDAN 235 +#define EVENT_OBJ_GFX_LINK_RS_MAY 236 +#define EVENT_OBJ_GFX_LUGIA 237 +#define EVENT_OBJ_GFX_HOOH 238 +#define EVENT_OBJ_GFX_BARD_2 239 +#define EVENT_OBJ_GFX_HIPSTER 240 +#define EVENT_OBJ_GFX_TRADER 241 +#define EVENT_OBJ_GFX_STORYTELLER 242 +#define EVENT_OBJ_GFX_GIDDY 243 +#define EVENT_OBJ_GFX_PLACEHOLDER_1 244 +#define EVENT_OBJ_GFX_PLACEHOLDER_2 245 + +#define SHADOW_SIZE_S 0 +#define SHADOW_SIZE_M 1 +#define SHADOW_SIZE_L 2 +#define SHADOW_SIZE_XL 3 + +#define F_INANIMATE (1 << 6) +#define F_DISABLE_REFLECTION_PALETTE_LOAD (1 << 7) + +#define TRACKS_NONE 0 +#define TRACKS_FOOT 1 +#define TRACKS_BIKE_TIRE 2 + +#endif // GUARD_CONSTANTS_EVENT_OBJECTS_H diff --git a/include/constants/flags.h b/include/constants/flags.h new file mode 100644 index 000000000..641d74f19 --- /dev/null +++ b/include/constants/flags.h @@ -0,0 +1,1580 @@ +#ifndef GUARD_CONSTANTS_FLAGS_H +#define GUARD_CONSTANTS_FLAGS_H + +#define FLAG_0x001 0x1 +#define FLAG_0x002 0x2 +#define FLAG_0x003 0x3 +#define FLAG_0x004 0x4 +#define FLAG_0x005 0x5 +#define FLAG_0x006 0x6 +#define FLAG_0x007 0x7 +#define FLAG_0x008 0x8 +#define FLAG_0x009 0x9 +#define FLAG_0x00A 0xA +#define FLAG_0x00B 0xB +#define FLAG_0x00C 0xC +#define FLAG_0x00D 0xD +#define FLAG_0x00E 0xE +#define FLAG_0x00F 0xF +#define FLAG_0x010 0x10 +#define FLAG_0x011 0x11 +#define FLAG_0x012 0x12 +#define FLAG_0x013 0x13 +#define FLAG_0x014 0x14 +#define FLAG_0x015 0x15 +#define FLAG_0x016 0x16 +#define FLAG_0x017 0x17 +#define FLAG_0x018 0x18 +#define FLAG_0x019 0x19 +#define FLAG_0x01A 0x1A +#define FLAG_0x01B 0x1B +#define FLAG_0x01C 0x1C +#define FLAG_0x01D 0x1D +#define FLAG_0x01E 0x1E +#define FLAG_0x01F 0x1F +#define FLAG_0x020 0x20 +#define FLAG_0x021 0x21 +#define FLAG_0x022 0x22 +#define FLAG_0x023 0x23 +#define FLAG_0x024 0x24 +#define FLAG_0x025 0x25 +#define FLAG_0x026 0x26 +#define FLAG_0x027 0x27 +#define FLAG_0x028 0x28 +#define FLAG_0x029 0x29 +#define FLAG_0x02A 0x2A +#define FLAG_0x02B 0x2B +#define FLAG_0x02C 0x2C +#define FLAG_0x02D 0x2D +#define FLAG_0x02E 0x2E +#define FLAG_0x02F 0x2F +#define FLAG_0x030 0x30 +#define FLAG_0x031 0x31 +#define FLAG_0x032 0x32 +#define FLAG_0x033 0x33 +#define FLAG_0x034 0x34 +#define FLAG_0x035 0x35 +#define FLAG_0x036 0x36 +#define FLAG_0x037 0x37 +#define FLAG_0x038 0x38 +#define FLAG_0x039 0x39 +#define FLAG_0x03A 0x3A +#define FLAG_0x03B 0x3B +#define FLAG_0x03C 0x3C +#define FLAG_0x03D 0x3D +#define FLAG_0x03E 0x3E +#define FLAG_0x03F 0x3F +#define FLAG_0x040 0x40 +#define FLAG_0x041 0x41 +#define FLAG_0x042 0x42 +#define FLAG_0x043 0x43 +#define FLAG_0x044 0x44 +#define FLAG_0x045 0x45 +#define FLAG_0x046 0x46 +#define FLAG_0x047 0x47 +#define FLAG_0x048 0x48 +#define FLAG_0x049 0x49 +#define FLAG_0x04A 0x4A +#define FLAG_0x04B 0x4B +#define FLAG_0x04C 0x4C +#define FLAG_0x04D 0x4D +#define FLAG_0x04E 0x4E +#define FLAG_0x04F 0x4F +#define FLAG_0x050 0x50 +#define FLAG_0x051 0x51 +#define FLAG_0x052 0x52 +#define FLAG_LEGENDARIES_IN_SOOTOPOLIS 0x53 +#define FLAG_0x054 0x54 +#define FLAG_0x055 0x55 +#define FLAG_0x056 0x56 +#define FLAG_0x057 0x57 +#define FLAG_0x058 0x58 +#define FLAG_0x059 0x59 +#define FLAG_0x05A 0x5A +#define FLAG_WATTSON_REMATCH_AVAILABLE 0x5B +#define FLAG_0x05C 0x5C +#define FLAG_0x05D 0x5D +#define FLAG_0x05E 0x5E +#define FLAG_0x05F 0x5F +#define FLAG_0x060 0x60 +#define FLAG_0x061 0x61 +#define FLAG_0x062 0x62 +#define FLAG_0x063 0x63 +#define FLAG_0x064 0x64 +#define FLAG_0x065 0x65 +#define FLAG_0x066 0x66 +#define FLAG_0x067 0x67 +#define FLAG_0x068 0x68 +#define FLAG_0x069 0x69 +#define FLAG_0x06A 0x6A +#define FLAG_0x06B 0x6B +#define FLAG_0x06C 0x6C +#define FLAG_0x06D 0x6D +#define FLAG_0x06E 0x6E +#define FLAG_0x06F 0x6F +#define FLAG_0x070 0x70 +#define FLAG_0x071 0x71 +#define FLAG_0x072 0x72 +#define FLAG_0x073 0x73 +#define FLAG_0x074 0x74 +#define FLAG_0x075 0x75 +#define FLAG_0x076 0x76 +#define FLAG_0x077 0x77 +#define FLAG_LANDMARK_MIRAGE_TOWER 0x78 +#define FLAG_0x079 0x79 +#define FLAG_0x07A 0x7A +#define FLAG_0x07B 0x7B +#define FLAG_0x07C 0x7C +#define FLAG_0x07D 0x7D +#define FLAG_0x07E 0x7E +#define FLAG_0x07F 0x7F +#define FLAG_0x080 0x80 +#define FLAG_0x081 0x81 +#define FLAG_0x082 0x82 +#define FLAG_0x083 0x83 +#define FLAG_0x084 0x84 +#define FLAG_0x085 0x85 +#define FLAG_PENDING_DAYCARE_EGG 0x86 +#define FLAG_0x087 0x87 +#define FLAG_0x088 0x88 +#define FLAG_0x089 0x89 +#define FLAG_0x08A 0x8A +#define FLAG_0x08B 0x8B +#define FLAG_0x08C 0x8C +#define FLAG_0x08D 0x8D +#define FLAG_0x08E 0x8E +#define FLAG_0x08F 0x8F +#define FLAG_0x090 0x90 +#define FLAG_0x091 0x91 +#define FLAG_0x092 0x92 +#define FLAG_0x093 0x93 +#define FLAG_0x094 0x94 +#define FLAG_0x095 0x95 +#define FLAG_0x096 0x96 +#define FLAG_0x097 0x97 +#define FLAG_0x098 0x98 +#define FLAG_0x099 0x99 +#define FLAG_0x09A 0x9A +#define FLAG_0x09B 0x9B +#define FLAG_0x09C 0x9C +#define FLAG_0x09D 0x9D +#define FLAG_0x09E 0x9E +#define FLAG_0x09F 0x9F +#define FLAG_0x0A0 0xA0 +#define FLAG_0x0A1 0xA1 +#define FLAG_0x0A2 0xA2 +#define FLAG_0x0A3 0xA3 +#define FLAG_0x0A4 0xA4 +#define FLAG_0x0A5 0xA5 +#define FLAG_0x0A6 0xA6 +#define FLAG_0x0A7 0xA7 +#define FLAG_0x0A8 0xA8 +#define FLAG_0x0A9 0xA9 +#define FLAG_0x0AA 0xAA +#define FLAG_0x0AB 0xAB +#define FLAG_0x0AC 0xAC +#define FLAG_0x0AD 0xAD +#define FLAG_0x0AE 0xAE +#define FLAG_0x0AF 0xAF +#define FLAG_0x0B0 0xB0 +#define FLAG_0x0B1 0xB1 +#define FLAG_0x0B2 0xB2 +#define FLAG_0x0B3 0xB3 +#define FLAG_0x0B4 0xB4 +#define FLAG_0x0B5 0xB5 +#define FLAG_0x0B6 0xB6 +#define FLAG_0x0B7 0xB7 +#define FLAG_0x0B8 0xB8 +#define FLAG_0x0B9 0xB9 +#define FLAG_0x0BA 0xBA +#define FLAG_0x0BB 0xBB +#define FLAG_0x0BC 0xBC +#define FLAG_0x0BD 0xBD +#define FLAG_0x0BE 0xBE +#define FLAG_0x0BF 0xBF +#define FLAG_0x0C0 0xC0 +#define FLAG_0x0C1 0xC1 +#define FLAG_0x0C2 0xC2 +#define FLAG_0x0C3 0xC3 +#define FLAG_0x0C4 0xC4 +#define FLAG_0x0C5 0xC5 +#define FLAG_0x0C6 0xC6 +#define FLAG_0x0C7 0xC7 +#define FLAG_0x0C8 0xC8 +#define FLAG_0x0C9 0xC9 +#define FLAG_0x0CA 0xCA +#define FLAG_0x0CB 0xCB +#define FLAG_0x0CC 0xCC +#define FLAG_0x0CD 0xCD +#define FLAG_0x0CE 0xCE +#define FLAG_0x0CF 0xCF +#define FLAG_GOT_BASEMENT_KEY_FROM_WATTSON 0xD0 +#define FLAG_GOT_TM24_FROM_WATTSON 0xD1 +#define FLAG_0x0D2 0xD2 +#define FLAG_0x0D3 0xD3 +#define FLAG_0x0D4 0xD4 +#define FLAG_0x0D5 0xD5 +#define FLAG_0x0D6 0xD6 +#define FLAG_0x0D7 0xD7 +#define FLAG_0x0D8 0xD8 +#define FLAG_0x0D9 0xD9 +#define FLAG_0x0DA 0xDA +#define FLAG_0x0DB 0xDB +#define FLAG_0x0DC 0xDC +#define FLAG_0x0DD 0xDD +#define FLAG_0x0DE 0xDE +#define FLAG_0x0DF 0xDF +#define FLAG_0x0E0 0xE0 +#define FLAG_0x0E1 0xE1 +#define FLAG_0x0E2 0xE2 +#define FLAG_0x0E3 0xE3 +#define FLAG_0x0E4 0xE4 +#define FLAG_0x0E5 0xE5 +#define FLAG_0x0E6 0xE6 +#define FLAG_0x0E7 0xE7 +#define FLAG_0x0E8 0xE8 +#define FLAG_0x0E9 0xE9 +#define FLAG_0x0EA 0xEA +#define FLAG_0x0EB 0xEB +#define FLAG_0x0EC 0xEC +#define FLAG_0x0ED 0xED +#define FLAG_0x0EE 0xEE +#define FLAG_0x0EF 0xEF +#define FLAG_0x0F0 0xF0 +#define FLAG_0x0F1 0xF1 +#define FLAG_0x0F2 0xF2 +#define FLAG_0x0F3 0xF3 +#define FLAG_0x0F4 0xF4 +#define FLAG_0x0F5 0xF5 +#define FLAG_0x0F6 0xF6 +#define FLAG_0x0F7 0xF7 +#define FLAG_0x0F8 0xF8 +#define FLAG_0x0F9 0xF9 +#define FLAG_0x0FA 0xFA +#define FLAG_0x0FB 0xFB +#define FLAG_0x0FC 0xFC +#define FLAG_0x0FD 0xFD +#define FLAG_0x0FE 0xFE +#define FLAG_0x0FF 0xFF +#define FLAG_0x100 0x100 +#define FLAG_0x101 0x101 +#define FLAG_0x102 0x102 +#define FLAG_0x103 0x103 +#define FLAG_0x104 0x104 +#define FLAG_0x105 0x105 +#define FLAG_0x106 0x106 +#define FLAG_0x107 0x107 +#define FLAG_0x108 0x108 +#define FLAG_0x109 0x109 +#define FLAG_0x10A 0x10A +#define FLAG_0x10B 0x10B +#define FLAG_0x10C 0x10C +#define FLAG_0x10D 0x10D +#define FLAG_0x10E 0x10E +#define FLAG_0x10F 0x10F +#define FLAG_0x110 0x110 +#define FLAG_0x111 0x111 +#define FLAG_0x112 0x112 +#define FLAG_0x113 0x113 +#define FLAG_0x114 0x114 +#define FLAG_0x115 0x115 +#define FLAG_0x116 0x116 +#define FLAG_0x117 0x117 +#define FLAG_0x118 0x118 +#define FLAG_0x119 0x119 +#define FLAG_0x11A 0x11A +#define FLAG_0x11B 0x11B +#define FLAG_0x11C 0x11C +#define FLAG_0x11D 0x11D +#define FLAG_0x11E 0x11E +#define FLAG_0x11F 0x11F +#define FLAG_0x120 0x120 +#define FLAG_0x121 0x121 +#define FLAG_0x122 0x122 +#define FLAG_0x123 0x123 +#define FLAG_0x124 0x124 +#define FLAG_0x125 0x125 +#define FLAG_0x126 0x126 +#define FLAG_0x127 0x127 +#define FLAG_0x128 0x128 +#define FLAG_0x129 0x129 +#define FLAG_0x12A 0x12A +#define FLAG_0x12B 0x12B +#define FLAG_0x12C 0x12C +#define FLAG_0x12D 0x12D +#define FLAG_0x12E 0x12E +#define FLAG_HAS_MATCH_CALL 0x12F +#define FLAG_0x130 0x130 +#define FLAG_0x131 0x131 +#define FLAG_0x132 0x132 +#define FLAG_0x133 0x133 +#define FLAG_0x134 0x134 +#define FLAG_0x135 0x135 +#define FLAG_0x136 0x136 +#define FLAG_0x137 0x137 +#define FLAG_0x138 0x138 +#define FLAG_0x139 0x139 +#define FLAG_0x13A 0x13A +#define FLAG_0x13B 0x13B +#define FLAG_0x13C 0x13C +#define FLAG_0x13D 0x13D +#define FLAG_0x13E 0x13E +#define FLAG_0x13F 0x13F +#define FLAG_0x140 0x140 +#define FLAG_0x141 0x141 +#define FLAG_0x142 0x142 +#define FLAG_0x143 0x143 +#define FLAG_0x144 0x144 +#define FLAG_0x145 0x145 +#define FLAG_0x146 0x146 +#define FLAG_0x147 0x147 +#define FLAG_0x148 0x148 +#define FLAG_0x149 0x149 +#define FLAG_0x14A 0x14A +#define FLAG_0x14B 0x14B +#define FLAG_0x14C 0x14C +#define FLAG_0x14D 0x14D +#define FLAG_0x14E 0x14E +#define FLAG_0x14F 0x14F +#define FLAG_0x150 0x150 +#define FLAG_0x151 0x151 +#define FLAG_0x152 0x152 +#define FLAG_0x153 0x153 +#define FLAG_0x154 0x154 +#define FLAG_0x155 0x155 +#define FLAG_0x156 0x156 +#define FLAG_0x157 0x157 +#define FLAG_0x158 0x158 +#define FLAG_0x159 0x159 +#define FLAG_0x15A 0x15A +#define FLAG_0x15B 0x15B + +#define FLAG_MATCH_CALL_REGISTERED 0x15C +#define FLAG_0x15D 0x15D +#define FLAG_0x15E 0x15E +#define FLAG_0x15F 0x15F +#define FLAG_0x160 0x160 +#define FLAG_0x161 0x161 +#define FLAG_0x162 0x162 +#define FLAG_0x163 0x163 +#define FLAG_0x164 0x164 +#define FLAG_0x165 0x165 +#define FLAG_0x166 0x166 +#define FLAG_0x167 0x167 +#define FLAG_0x168 0x168 +#define FLAG_0x169 0x169 +#define FLAG_0x16A 0x16A +#define FLAG_0x16B 0x16B +#define FLAG_0x16C 0x16C +#define FLAG_0x16D 0x16D +#define FLAG_0x16E 0x16E +#define FLAG_0x16F 0x16F +#define FLAG_0x170 0x170 +#define FLAG_0x171 0x171 +#define FLAG_0x172 0x172 +#define FLAG_0x173 0x173 +#define FLAG_0x174 0x174 +#define FLAG_0x175 0x175 +#define FLAG_0x176 0x176 +#define FLAG_0x177 0x177 +#define FLAG_0x178 0x178 +#define FLAG_0x179 0x179 +#define FLAG_0x17A 0x17A +#define FLAG_0x17B 0x17B +#define FLAG_0x17C 0x17C +#define FLAG_0x17D 0x17D +#define FLAG_0x17E 0x17E +#define FLAG_0x17F 0x17F +#define FLAG_0x180 0x180 +#define FLAG_0x181 0x181 +#define FLAG_0x182 0x182 +#define FLAG_0x183 0x183 +#define FLAG_0x184 0x184 +#define FLAG_0x185 0x185 +#define FLAG_0x186 0x186 +#define FLAG_0x187 0x187 +#define FLAG_0x188 0x188 +#define FLAG_0x189 0x189 +#define FLAG_0x18A 0x18A +#define FLAG_0x18B 0x18B +#define FLAG_0x18C 0x18C +#define FLAG_0x18D 0x18D +#define FLAG_0x18E 0x18E +#define FLAG_0x18F 0x18F +#define FLAG_0x190 0x190 +#define FLAG_0x191 0x191 +#define FLAG_0x192 0x192 +#define FLAG_0x193 0x193 +#define FLAG_0x194 0x194 +#define FLAG_0x195 0x195 +#define FLAG_0x196 0x196 +#define FLAG_0x197 0x197 +#define FLAG_0x198 0x198 +#define FLAG_0x199 0x199 +#define FLAG_0x19A 0x19A +#define FLAG_0x19B 0x19B +#define FLAG_0x19C 0x19C +#define FLAG_0x19D 0x19D +#define FLAG_0x19E 0x19E +#define FLAG_0x19F 0x19F +#define FLAG_0x1A0 0x1A0 +#define FLAG_0x1A1 0x1A1 +#define FLAG_0x1A2 0x1A2 +#define FLAG_0x1A3 0x1A3 +#define FLAG_0x1A4 0x1A4 +#define FLAG_0x1A5 0x1A5 +#define FLAG_0x1A6 0x1A6 +#define FLAG_0x1A7 0x1A7 +#define FLAG_0x1A8 0x1A8 +#define FLAG_0x1A9 0x1A9 +#define FLAG_0x1AA 0x1AA +#define FLAG_0x1AB 0x1AB +#define FLAG_0x1AC 0x1AC +#define FLAG_0x1AD 0x1AD +#define FLAG_0x1AE 0x1AE +#define FLAG_0x1AF 0x1AF +#define FLAG_0x1B0 0x1B0 +#define FLAG_0x1B1 0x1B1 +#define FLAG_0x1B2 0x1B2 +#define FLAG_0x1B3 0x1B3 +#define FLAG_0x1B4 0x1B4 +#define FLAG_0x1B5 0x1B5 +#define FLAG_0x1B6 0x1B6 +#define FLAG_0x1B7 0x1B7 +#define FLAG_0x1B8 0x1B8 +#define FLAG_0x1B9 0x1B9 +#define FLAG_0x1BA 0x1BA +#define FLAG_0x1BB 0x1BB +#define FLAG_0x1BC 0x1BC +#define FLAG_0x1BD 0x1BD +#define FLAG_0x1BE 0x1BE +#define FLAG_0x1BF 0x1BF +#define FLAG_0x1C0 0x1C0 +#define FLAG_0x1C1 0x1C1 +#define FLAG_0x1C2 0x1C2 +#define FLAG_0x1C3 0x1C3 +#define FLAG_0x1C4 0x1C4 +#define FLAG_0x1C5 0x1C5 +#define FLAG_0x1C6 0x1C6 +#define FLAG_0x1C7 0x1C7 +#define FLAG_0x1C8 0x1C8 +#define FLAG_0x1C9 0x1C9 +#define FLAG_0x1CA 0x1CA +#define FLAG_0x1CB 0x1CB +#define FLAG_0x1CC 0x1CC +#define FLAG_0x1CD 0x1CD +#define FLAG_0x1CE 0x1CE +#define FLAG_0x1CF 0x1CF +#define FLAG_0x1D0 0x1D0 +#define FLAG_0x1D1 0x1D1 +#define FLAG_0x1D2 0x1D2 +#define FLAG_0x1D3 0x1D3 +#define FLAG_0x1D4 0x1D4 +#define FLAG_0x1D5 0x1D5 +#define FLAG_0x1D6 0x1D6 +#define FLAG_0x1D7 0x1D7 +#define FLAG_0x1D8 0x1D8 +#define FLAG_0x1D9 0x1D9 +#define FLAG_0x1DA 0x1DA +#define FLAG_0x1DB 0x1DB +#define FLAG_0x1DC 0x1DC +#define FLAG_0x1DD 0x1DD +#define FLAG_0x1DE 0x1DE +#define FLAG_0x1DF 0x1DF +#define FLAG_0x1E0 0x1E0 +#define FLAG_0x1E1 0x1E1 +#define FLAG_0x1E2 0x1E2 +#define FLAG_0x1E3 0x1E3 +#define FLAG_MYSTERY_EVENT_DONE 0x1E4 +#define FLAG_0x1E5 0x1E5 +#define FLAG_0x1E6 0x1E6 +#define FLAG_0x1E7 0x1E7 +#define FLAG_0x1E8 0x1E8 +#define FLAG_0x1E9 0x1E9 +#define FLAG_0x1EA 0x1EA +#define FLAG_0x1EB 0x1EB +#define FLAG_0x1EC 0x1EC +#define FLAG_0x1ED 0x1ED +#define FLAG_0x1EE 0x1EE +#define FLAG_0x1EF 0x1EF +#define FLAG_0x1F0 0x1F0 +#define FLAG_0x1F1 0x1F1 +#define FLAG_0x1F2 0x1F2 +#define FLAG_0x1F3 0x1F3 +#define FLAG_0x1F4 0x1F4 +#define FLAG_0x1F5 0x1F5 +#define FLAG_0x1F6 0x1F6 +#define FLAG_0x1F7 0x1F7 +#define FLAG_0x1F8 0x1F8 +#define FLAG_0x1F9 0x1F9 +#define FLAG_0x1FA 0x1FA +#define FLAG_0x1FB 0x1FB +#define FLAG_0x1FC 0x1FC +#define FLAG_0x1FD 0x1FD +#define FLAG_0x1FE 0x1FE +#define FLAG_0x1FF 0x1FF +#define FLAG_0x200 0x200 +#define FLAG_0x201 0x201 +#define FLAG_0x202 0x202 +#define FLAG_0x203 0x203 +#define FLAG_0x204 0x204 +#define FLAG_0x205 0x205 +#define FLAG_0x206 0x206 +#define FLAG_0x207 0x207 +#define FLAG_0x208 0x208 +#define FLAG_0x209 0x209 +#define FLAG_0x20A 0x20A +#define FLAG_0x20B 0x20B +#define FLAG_0x20C 0x20C +#define FLAG_0x20D 0x20D +#define FLAG_0x20E 0x20E +#define FLAG_0x20F 0x20F +#define FLAG_0x210 0x210 +#define FLAG_0x211 0x211 +#define FLAG_0x212 0x212 +#define FLAG_0x213 0x213 +#define FLAG_0x214 0x214 +#define FLAG_0x215 0x215 +#define FLAG_0x216 0x216 +#define FLAG_0x217 0x217 +#define FLAG_0x218 0x218 +#define FLAG_0x219 0x219 +#define FLAG_0x21A 0x21A +#define FLAG_0x21B 0x21B +#define FLAG_0x21C 0x21C +#define FLAG_0x21D 0x21D +#define FLAG_0x21E 0x21E +#define FLAG_0x21F 0x21F +#define FLAG_0x220 0x220 +#define FLAG_0x221 0x221 +#define FLAG_0x222 0x222 +#define FLAG_0x223 0x223 +#define FLAG_0x224 0x224 +#define FLAG_0x225 0x225 +#define FLAG_0x226 0x226 +#define FLAG_0x227 0x227 +#define FLAG_0x228 0x228 +#define FLAG_0x229 0x229 +#define FLAG_0x22A 0x22A +#define FLAG_0x22B 0x22B +#define FLAG_0x22C 0x22C +#define FLAG_0x22D 0x22D +#define FLAG_0x22E 0x22E +#define FLAG_0x22F 0x22F +#define FLAG_0x230 0x230 +#define FLAG_0x231 0x231 +#define FLAG_0x232 0x232 +#define FLAG_0x233 0x233 +#define FLAG_0x234 0x234 +#define FLAG_0x235 0x235 +#define FLAG_0x236 0x236 +#define FLAG_0x237 0x237 +#define FLAG_0x238 0x238 +#define FLAG_0x239 0x239 +#define FLAG_0x23A 0x23A +#define FLAG_0x23B 0x23B +#define FLAG_0x23C 0x23C +#define FLAG_0x23D 0x23D +#define FLAG_0x23E 0x23E +#define FLAG_0x23F 0x23F +#define FLAG_0x240 0x240 +#define FLAG_0x241 0x241 +#define FLAG_0x242 0x242 +#define FLAG_0x243 0x243 +#define FLAG_0x244 0x244 +#define FLAG_0x245 0x245 +#define FLAG_0x246 0x246 +#define FLAG_0x247 0x247 +#define FLAG_0x248 0x248 +#define FLAG_0x249 0x249 +#define FLAG_0x24A 0x24A +#define FLAG_0x24B 0x24B +#define FLAG_0x24C 0x24C +#define FLAG_0x24D 0x24D +#define FLAG_0x24E 0x24E +#define FLAG_0x24F 0x24F +#define FLAG_0x250 0x250 +#define FLAG_0x251 0x251 +#define FLAG_0x252 0x252 +#define FLAG_0x253 0x253 +#define FLAG_0x254 0x254 +#define FLAG_0x255 0x255 +#define FLAG_0x256 0x256 +#define FLAG_0x257 0x257 +#define FLAG_0x258 0x258 +#define FLAG_0x259 0x259 +#define FLAG_0x25A 0x25A +#define FLAG_0x25B 0x25B +#define FLAG_0x25C 0x25C +#define FLAG_0x25D 0x25D +#define FLAG_0x25E 0x25E +#define FLAG_0x25F 0x25F +#define FLAG_0x260 0x260 +#define FLAG_0x261 0x261 +#define FLAG_0x262 0x262 +#define FLAG_0x263 0x263 +#define FLAG_0x264 0x264 +#define FLAG_0x265 0x265 +#define FLAG_0x266 0x266 +#define FLAG_0x267 0x267 +#define FLAG_0x268 0x268 +#define FLAG_0x269 0x269 +#define FLAG_0x26A 0x26A +#define FLAG_0x26B 0x26B +#define FLAG_0x26C 0x26C +#define FLAG_0x26D 0x26D +#define FLAG_0x26E 0x26E +#define FLAG_0x26F 0x26F +#define FLAG_0x270 0x270 +#define FLAG_0x271 0x271 +#define FLAG_0x272 0x272 +#define FLAG_0x273 0x273 +#define FLAG_0x274 0x274 +#define FLAG_0x275 0x275 +#define FLAG_0x276 0x276 +#define FLAG_0x277 0x277 +#define FLAG_0x278 0x278 +#define FLAG_0x279 0x279 +#define FLAG_0x27A 0x27A +#define FLAG_0x27B 0x27B +#define FLAG_0x27C 0x27C +#define FLAG_0x27D 0x27D +#define FLAG_0x27E 0x27E +#define FLAG_0x27F 0x27F +#define FLAG_0x280 0x280 +#define FLAG_0x281 0x281 +#define FLAG_0x282 0x282 +#define FLAG_0x283 0x283 +#define FLAG_0x284 0x284 +#define FLAG_0x285 0x285 +#define FLAG_0x286 0x286 +#define FLAG_0x287 0x287 +#define FLAG_0x288 0x288 +#define FLAG_0x289 0x289 +#define FLAG_0x28A 0x28A +#define FLAG_0x28B 0x28B +#define FLAG_0x28C 0x28C +#define FLAG_0x28D 0x28D +#define FLAG_0x28E 0x28E +#define FLAG_0x28F 0x28F +#define FLAG_0x290 0x290 +#define FLAG_0x291 0x291 +#define FLAG_0x292 0x292 +#define FLAG_0x293 0x293 +#define FLAG_0x294 0x294 +#define FLAG_0x295 0x295 +#define FLAG_0x296 0x296 +#define FLAG_0x297 0x297 +#define FLAG_0x298 0x298 +#define FLAG_0x299 0x299 +#define FLAG_0x29A 0x29A +#define FLAG_0x29B 0x29B +#define FLAG_0x29C 0x29C +#define FLAG_0x29D 0x29D +#define FLAG_0x29E 0x29E +#define FLAG_0x29F 0x29F +#define FLAG_0x2A0 0x2A0 +#define FLAG_0x2A1 0x2A1 +#define FLAG_0x2A2 0x2A2 +#define FLAG_0x2A3 0x2A3 +#define FLAG_0x2A4 0x2A4 +#define FLAG_0x2A5 0x2A5 +#define FLAG_0x2A6 0x2A6 +#define FLAG_0x2A7 0x2A7 +#define FLAG_0x2A8 0x2A8 +#define FLAG_0x2A9 0x2A9 +#define FLAG_0x2AA 0x2AA +#define FLAG_0x2AB 0x2AB +#define FLAG_0x2AC 0x2AC +#define FLAG_0x2AD 0x2AD +#define FLAG_0x2AE 0x2AE +#define FLAG_0x2AF 0x2AF +#define FLAG_0x2B0 0x2B0 +#define FLAG_0x2B1 0x2B1 +#define FLAG_0x2B2 0x2B2 +#define FLAG_0x2B3 0x2B3 +#define FLAG_0x2B4 0x2B4 +#define FLAG_0x2B5 0x2B5 +#define FLAG_0x2B6 0x2B6 +#define FLAG_0x2B7 0x2B7 +#define FLAG_0x2B8 0x2B8 +#define FLAG_0x2B9 0x2B9 +#define FLAG_0x2BA 0x2BA +#define FLAG_0x2BB 0x2BB +#define FLAG_0x2BC 0x2BC +#define FLAG_0x2BD 0x2BD +#define FLAG_0x2BE 0x2BE +#define FLAG_0x2BF 0x2BF +#define FLAG_0x2C0 0x2C0 +#define FLAG_0x2C1 0x2C1 +#define FLAG_0x2C2 0x2C2 +#define FLAG_0x2C3 0x2C3 +#define FLAG_0x2C4 0x2C4 +#define FLAG_0x2C5 0x2C5 +#define FLAG_0x2C6 0x2C6 +#define FLAG_0x2C7 0x2C7 +#define FLAG_0x2C8 0x2C8 +#define FLAG_0x2C9 0x2C9 +#define FLAG_0x2CA 0x2CA +#define FLAG_0x2CB 0x2CB +#define FLAG_0x2CC 0x2CC +#define FLAG_0x2CD 0x2CD +#define FLAG_0x2CE 0x2CE +#define FLAG_0x2CF 0x2CF +#define FLAG_0x2D0 0x2D0 +#define FLAG_0x2D1 0x2D1 +#define FLAG_0x2D2 0x2D2 +#define FLAG_0x2D3 0x2D3 +#define FLAG_0x2D4 0x2D4 +#define FLAG_0x2D5 0x2D5 +#define FLAG_0x2D6 0x2D6 +#define FLAG_0x2D7 0x2D7 +#define FLAG_0x2D8 0x2D8 +#define FLAG_0x2D9 0x2D9 +#define FLAG_0x2DA 0x2DA +#define FLAG_0x2DB 0x2DB +#define FLAG_0x2DC 0x2DC +#define FLAG_0x2DD 0x2DD +#define FLAG_0x2DE 0x2DE +#define FLAG_0x2DF 0x2DF +#define FLAG_0x2E0 0x2E0 +#define FLAG_0x2E1 0x2E1 +#define FLAG_0x2E2 0x2E2 +#define FLAG_0x2E3 0x2E3 +#define FLAG_0x2E4 0x2E4 +#define FLAG_0x2E5 0x2E5 +#define FLAG_0x2E6 0x2E6 +#define FLAG_0x2E7 0x2E7 +#define FLAG_0x2E8 0x2E8 +#define FLAG_0x2E9 0x2E9 +#define FLAG_0x2EA 0x2EA +#define FLAG_0x2EB 0x2EB +#define FLAG_0x2EC 0x2EC +#define FLAG_0x2ED 0x2ED +#define FLAG_0x2EE 0x2EE +#define FLAG_0x2EF 0x2EF +#define FLAG_0x2F0 0x2F0 +#define FLAG_0x2F1 0x2F1 +#define FLAG_0x2F2 0x2F2 +#define FLAG_0x2F3 0x2F3 +#define FLAG_0x2F4 0x2F4 +#define FLAG_0x2F5 0x2F5 +#define FLAG_0x2F6 0x2F6 +#define FLAG_0x2F7 0x2F7 +#define FLAG_0x2F8 0x2F8 +#define FLAG_0x2F9 0x2F9 +#define FLAG_0x2FA 0x2FA +#define FLAG_0x2FB 0x2FB +#define FLAG_0x2FC 0x2FC +#define FLAG_0x2FD 0x2FD +#define FLAG_0x2FE 0x2FE +#define FLAG_0x2FF 0x2FF +#define FLAG_0x300 0x300 +#define FLAG_0x301 0x301 +#define FLAG_0x302 0x302 +#define FLAG_0x303 0x303 +#define FLAG_0x304 0x304 +#define FLAG_0x305 0x305 +#define FLAG_0x306 0x306 +#define FLAG_0x307 0x307 +#define FLAG_0x308 0x308 +#define FLAG_0x309 0x309 +#define FLAG_0x30A 0x30A +#define FLAG_0x30B 0x30B +#define FLAG_0x30C 0x30C +#define FLAG_0x30D 0x30D +#define FLAG_0x30E 0x30E +#define FLAG_0x30F 0x30F +#define FLAG_0x310 0x310 +#define FLAG_0x311 0x311 +#define FLAG_0x312 0x312 +#define FLAG_0x313 0x313 +#define FLAG_0x314 0x314 +#define FLAG_0x315 0x315 +#define FLAG_0x316 0x316 +#define FLAG_0x317 0x317 +#define FLAG_0x318 0x318 +#define FLAG_0x319 0x319 +#define FLAG_0x31A 0x31A +#define FLAG_0x31B 0x31B +#define FLAG_0x31C 0x31C +#define FLAG_0x31D 0x31D +#define FLAG_0x31E 0x31E +#define FLAG_0x31F 0x31F +#define FLAG_0x320 0x320 +#define FLAG_0x321 0x321 +#define FLAG_0x322 0x322 +#define FLAG_0x323 0x323 +#define FLAG_0x324 0x324 +#define FLAG_0x325 0x325 +#define FLAG_0x326 0x326 +#define FLAG_0x327 0x327 +#define FLAG_0x328 0x328 +#define FLAG_0x329 0x329 +#define FLAG_0x32A 0x32A +#define FLAG_0x32B 0x32B +#define FLAG_0x32C 0x32C +#define FLAG_0x32D 0x32D +#define FLAG_0x32E 0x32E +#define FLAG_0x32F 0x32F +#define FLAG_0x330 0x330 +#define FLAG_0x331 0x331 +#define FLAG_0x332 0x332 +#define FLAG_0x333 0x333 +#define FLAG_0x334 0x334 +#define FLAG_0x335 0x335 +#define FLAG_0x336 0x336 +#define FLAG_0x337 0x337 +#define FLAG_0x338 0x338 +#define FLAG_0x339 0x339 +#define FLAG_0x33A 0x33A +#define FLAG_0x33B 0x33B +#define FLAG_0x33C 0x33C +#define FLAG_0x33D 0x33D +#define FLAG_0x33E 0x33E +#define FLAG_0x33F 0x33F +#define FLAG_0x340 0x340 +#define FLAG_0x341 0x341 +#define FLAG_0x342 0x342 +#define FLAG_0x343 0x343 +#define FLAG_0x344 0x344 +#define FLAG_0x345 0x345 +#define FLAG_0x346 0x346 +#define FLAG_0x347 0x347 +#define FLAG_0x348 0x348 +#define FLAG_0x349 0x349 +#define FLAG_0x34A 0x34A +#define FLAG_0x34B 0x34B +#define FLAG_0x34C 0x34C +#define FLAG_0x34D 0x34D +#define FLAG_0x34E 0x34E +#define FLAG_0x34F 0x34F +#define FLAG_0x350 0x350 +#define FLAG_0x351 0x351 +#define FLAG_0x352 0x352 +#define FLAG_0x353 0x353 +#define FLAG_0x354 0x354 +#define FLAG_0x355 0x355 +#define FLAG_0x356 0x356 +#define FLAG_0x357 0x357 +#define FLAG_0x358 0x358 +#define FLAG_0x359 0x359 +#define FLAG_0x35A 0x35A +#define FLAG_0x35B 0x35B +#define FLAG_0x35C 0x35C +#define FLAG_0x35D 0x35D +#define FLAG_0x35E 0x35E +#define FLAG_0x35F 0x35F +#define FLAG_0x360 0x360 +#define FLAG_0x361 0x361 +#define FLAG_0x362 0x362 +#define FLAG_0x363 0x363 +#define FLAG_0x364 0x364 +#define FLAG_0x365 0x365 +#define FLAG_0x366 0x366 +#define FLAG_0x367 0x367 +#define FLAG_0x368 0x368 +#define FLAG_0x369 0x369 +#define FLAG_0x36A 0x36A +#define FLAG_0x36B 0x36B +#define FLAG_0x36C 0x36C +#define FLAG_0x36D 0x36D +#define FLAG_0x36E 0x36E +#define FLAG_0x36F 0x36F +#define FLAG_0x370 0x370 +#define FLAG_0x371 0x371 +#define FLAG_0x372 0x372 +#define FLAG_0x373 0x373 +#define FLAG_0x374 0x374 +#define FLAG_0x375 0x375 +#define FLAG_0x376 0x376 +#define FLAG_0x377 0x377 +#define FLAG_0x378 0x378 +#define FLAG_0x379 0x379 +#define FLAG_0x37A 0x37A +#define FLAG_0x37B 0x37B +#define FLAG_0x37C 0x37C +#define FLAG_0x37D 0x37D +#define FLAG_0x37E 0x37E +#define FLAG_0x37F 0x37F +#define FLAG_0x380 0x380 +#define FLAG_0x381 0x381 +#define FLAG_0x382 0x382 +#define FLAG_0x383 0x383 +#define FLAG_0x384 0x384 +#define FLAG_0x385 0x385 +#define FLAG_0x386 0x386 +#define FLAG_0x387 0x387 +#define FLAG_0x388 0x388 +#define FLAG_0x389 0x389 +#define FLAG_0x38A 0x38A +#define FLAG_0x38B 0x38B +#define FLAG_0x38C 0x38C +#define FLAG_0x38D 0x38D +#define FLAG_0x38E 0x38E +#define FLAG_0x38F 0x38F +#define FLAG_SPRITEVIS_MAUVILLE_CITY_WATTSON 0x390 +#define FLAG_SPRITEVIS_MAUVILLE_GYM_WATTSON 0x391 +#define FLAG_0x392 0x392 +#define FLAG_0x393 0x393 +#define FLAG_0x394 0x394 +#define FLAG_0x395 0x395 +#define FLAG_0x396 0x396 +#define FLAG_0x397 0x397 +#define FLAG_0x398 0x398 +#define FLAG_0x399 0x399 +#define FLAG_0x39A 0x39A +#define FLAG_0x39B 0x39B +#define FLAG_0x39C 0x39C +#define FLAG_0x39D 0x39D +#define FLAG_0x39E 0x39E +#define FLAG_0x39F 0x39F +#define FLAG_0x3A0 0x3A0 +#define FLAG_0x3A1 0x3A1 +#define FLAG_0x3A2 0x3A2 +#define FLAG_0x3A3 0x3A3 +#define FLAG_0x3A4 0x3A4 +#define FLAG_0x3A5 0x3A5 +#define FLAG_0x3A6 0x3A6 +#define FLAG_0x3A7 0x3A7 +#define FLAG_0x3A8 0x3A8 +#define FLAG_0x3A9 0x3A9 +#define FLAG_0x3AA 0x3AA +#define FLAG_0x3AB 0x3AB +#define FLAG_0x3AC 0x3AC +#define FLAG_0x3AD 0x3AD +#define FLAG_0x3AE 0x3AE +#define FLAG_0x3AF 0x3AF +#define FLAG_0x3B0 0x3B0 +#define FLAG_0x3B1 0x3B1 +#define FLAG_0x3B2 0x3B2 +#define FLAG_0x3B3 0x3B3 +#define FLAG_0x3B4 0x3B4 +#define FLAG_0x3B5 0x3B5 +#define FLAG_0x3B6 0x3B6 +#define FLAG_0x3B7 0x3B7 +#define FLAG_0x3B8 0x3B8 +#define FLAG_0x3B9 0x3B9 +#define FLAG_0x3BA 0x3BA +#define FLAG_0x3BB 0x3BB +#define FLAG_0x3BC 0x3BC +#define FLAG_0x3BD 0x3BD +#define FLAG_0x3BE 0x3BE +#define FLAG_0x3BF 0x3BF +#define FLAG_0x3C0 0x3C0 +#define FLAG_SPRITEVIS_SLATEPORT_MUSEUM_POPULATION 0x3C1 +#define FLAG_0x3C2 0x3C2 +#define FLAG_0x3C3 0x3C3 +#define FLAG_0x3C4 0x3C4 +#define FLAG_0x3C5 0x3C5 +#define FLAG_0x3C6 0x3C6 +#define FLAG_0x3C7 0x3C7 +#define FLAG_0x3C8 0x3C8 +#define FLAG_0x3C9 0x3C9 +#define FLAG_0x3CA 0x3CA +#define FLAG_0x3CB 0x3CB +#define FLAG_0x3CC 0x3CC +#define FLAG_0x3CD 0x3CD +#define FLAG_0x3CE 0x3CE +#define FLAG_0x3CF 0x3CF +#define FLAG_0x3D0 0x3D0 +#define FLAG_0x3D1 0x3D1 +#define FLAG_0x3D2 0x3D2 +#define FLAG_0x3D3 0x3D3 +#define FLAG_0x3D4 0x3D4 +#define FLAG_0x3D5 0x3D5 +#define FLAG_0x3D6 0x3D6 +#define FLAG_0x3D7 0x3D7 +#define FLAG_0x3D8 0x3D8 +#define FLAG_0x3D9 0x3D9 +#define FLAG_0x3DA 0x3DA +#define FLAG_0x3DB 0x3DB +#define FLAG_0x3DC 0x3DC +#define FLAG_0x3DD 0x3DD +#define FLAG_0x3DE 0x3DE +#define FLAG_0x3DF 0x3DF +#define FLAG_0x3E0 0x3E0 +#define FLAG_0x3E1 0x3E1 +#define FLAG_0x3E2 0x3E2 +#define FLAG_0x3E3 0x3E3 +#define FLAG_0x3E4 0x3E4 +#define FLAG_0x3E5 0x3E5 +#define FLAG_0x3E6 0x3E6 +#define FLAG_0x3E7 0x3E7 +#define FLAG_0x3E8 0x3E8 +#define FLAG_0x3E9 0x3E9 +#define FLAG_0x3EA 0x3EA +#define FLAG_0x3EB 0x3EB +#define FLAG_0x3EC 0x3EC +#define FLAG_0x3ED 0x3ED +#define FLAG_0x3EE 0x3EE +#define FLAG_0x3EF 0x3EF +#define FLAG_0x3F0 0x3F0 +#define FLAG_0x3F1 0x3F1 +#define FLAG_0x3F2 0x3F2 +#define FLAG_0x3F3 0x3F3 +#define FLAG_0x3F4 0x3F4 +#define FLAG_0x3F5 0x3F5 +#define FLAG_0x3F6 0x3F6 +#define FLAG_0x3F7 0x3F7 +#define FLAG_0x3F8 0x3F8 +#define FLAG_0x3F9 0x3F9 +#define FLAG_0x3FA 0x3FA +#define FLAG_0x3FB 0x3FB +#define FLAG_0x3FC 0x3FC +#define FLAG_0x3FD 0x3FD +#define FLAG_0x3FE 0x3FE +#define FLAG_0x3FF 0x3FF +#define FLAG_0x400 0x400 +#define FLAG_0x401 0x401 +#define FLAG_0x402 0x402 +#define FLAG_0x403 0x403 +#define FLAG_0x404 0x404 +#define FLAG_0x405 0x405 +#define FLAG_0x406 0x406 +#define FLAG_0x407 0x407 +#define FLAG_0x408 0x408 +#define FLAG_0x409 0x409 +#define FLAG_0x40A 0x40A +#define FLAG_0x40B 0x40B +#define FLAG_0x40C 0x40C +#define FLAG_0x40D 0x40D +#define FLAG_0x40E 0x40E +#define FLAG_0x40F 0x40F +#define FLAG_0x410 0x410 +#define FLAG_0x411 0x411 +#define FLAG_0x412 0x412 +#define FLAG_0x413 0x413 +#define FLAG_0x414 0x414 +#define FLAG_0x415 0x415 +#define FLAG_0x416 0x416 +#define FLAG_0x417 0x417 +#define FLAG_0x418 0x418 +#define FLAG_0x419 0x419 +#define FLAG_0x41A 0x41A +#define FLAG_0x41B 0x41B +#define FLAG_0x41C 0x41C +#define FLAG_0x41D 0x41D +#define FLAG_0x41E 0x41E +#define FLAG_0x41F 0x41F +#define FLAG_0x420 0x420 +#define FLAG_0x421 0x421 +#define FLAG_0x422 0x422 +#define FLAG_0x423 0x423 +#define FLAG_0x424 0x424 +#define FLAG_0x425 0x425 +#define FLAG_0x426 0x426 +#define FLAG_0x427 0x427 +#define FLAG_0x428 0x428 +#define FLAG_0x429 0x429 +#define FLAG_0x42A 0x42A +#define FLAG_0x42B 0x42B +#define FLAG_0x42C 0x42C +#define FLAG_0x42D 0x42D +#define FLAG_0x42E 0x42E +#define FLAG_0x42F 0x42F +#define FLAG_0x430 0x430 +#define FLAG_0x431 0x431 +#define FLAG_0x432 0x432 +#define FLAG_0x433 0x433 +#define FLAG_0x434 0x434 +#define FLAG_0x435 0x435 +#define FLAG_0x436 0x436 +#define FLAG_0x437 0x437 +#define FLAG_0x438 0x438 +#define FLAG_0x439 0x439 +#define FLAG_0x43A 0x43A +#define FLAG_0x43B 0x43B +#define FLAG_0x43C 0x43C +#define FLAG_0x43D 0x43D +#define FLAG_0x43E 0x43E +#define FLAG_0x43F 0x43F +#define FLAG_0x440 0x440 +#define FLAG_0x441 0x441 +#define FLAG_0x442 0x442 +#define FLAG_0x443 0x443 +#define FLAG_0x444 0x444 +#define FLAG_0x445 0x445 +#define FLAG_0x446 0x446 +#define FLAG_0x447 0x447 +#define FLAG_0x448 0x448 +#define FLAG_0x449 0x449 +#define FLAG_0x44A 0x44A +#define FLAG_0x44B 0x44B +#define FLAG_0x44C 0x44C +#define FLAG_0x44D 0x44D +#define FLAG_0x44E 0x44E +#define FLAG_0x44F 0x44F +#define FLAG_0x450 0x450 +#define FLAG_0x451 0x451 +#define FLAG_0x452 0x452 +#define FLAG_0x453 0x453 +#define FLAG_0x454 0x454 +#define FLAG_0x455 0x455 +#define FLAG_0x456 0x456 +#define FLAG_0x457 0x457 +#define FLAG_0x458 0x458 +#define FLAG_0x459 0x459 +#define FLAG_0x45A 0x45A +#define FLAG_0x45B 0x45B +#define FLAG_0x45C 0x45C +#define FLAG_0x45D 0x45D +#define FLAG_0x45E 0x45E +#define FLAG_0x45F 0x45F +#define FLAG_0x460 0x460 +#define FLAG_0x461 0x461 +#define FLAG_0x462 0x462 +#define FLAG_0x463 0x463 +#define FLAG_0x464 0x464 +#define FLAG_0x465 0x465 +#define FLAG_0x466 0x466 +#define FLAG_0x467 0x467 +#define FLAG_0x468 0x468 +#define FLAG_0x469 0x469 +#define FLAG_0x46A 0x46A +#define FLAG_0x46B 0x46B +#define FLAG_0x46C 0x46C +#define FLAG_0x46D 0x46D +#define FLAG_0x46E 0x46E +#define FLAG_0x46F 0x46F +#define FLAG_0x470 0x470 +#define FLAG_0x471 0x471 +#define FLAG_0x472 0x472 +#define FLAG_0x473 0x473 +#define FLAG_0x474 0x474 +#define FLAG_0x475 0x475 +#define FLAG_0x476 0x476 +#define FLAG_0x477 0x477 +#define FLAG_0x478 0x478 +#define FLAG_0x479 0x479 +#define FLAG_0x47A 0x47A +#define FLAG_0x47B 0x47B +#define FLAG_0x47C 0x47C +#define FLAG_0x47D 0x47D +#define FLAG_0x47E 0x47E +#define FLAG_0x47F 0x47F +#define FLAG_0x480 0x480 +#define FLAG_0x481 0x481 +#define FLAG_0x482 0x482 +#define FLAG_0x483 0x483 +#define FLAG_0x484 0x484 +#define FLAG_0x485 0x485 +#define FLAG_0x486 0x486 +#define FLAG_0x487 0x487 +#define FLAG_0x488 0x488 +#define FLAG_0x489 0x489 +#define FLAG_0x48A 0x48A +#define FLAG_0x48B 0x48B +#define FLAG_0x48C 0x48C +#define FLAG_0x48D 0x48D +#define FLAG_0x48E 0x48E +#define FLAG_0x48F 0x48F +#define FLAG_0x490 0x490 +#define FLAG_0x491 0x491 +#define FLAG_0x492 0x492 +#define FLAG_0x493 0x493 +#define FLAG_0x494 0x494 +#define FLAG_0x495 0x495 +#define FLAG_0x496 0x496 +#define FLAG_0x497 0x497 +#define FLAG_0x498 0x498 +#define FLAG_0x499 0x499 +#define FLAG_0x49A 0x49A +#define FLAG_0x49B 0x49B +#define FLAG_0x49C 0x49C +#define FLAG_0x49D 0x49D +#define FLAG_0x49E 0x49E +#define FLAG_0x49F 0x49F +#define FLAG_0x4A0 0x4A0 +#define FLAG_0x4A1 0x4A1 +#define FLAG_0x4A2 0x4A2 +#define FLAG_0x4A3 0x4A3 +#define FLAG_0x4A4 0x4A4 +#define FLAG_0x4A5 0x4A5 +#define FLAG_0x4A6 0x4A6 +#define FLAG_0x4A7 0x4A7 +#define FLAG_0x4A8 0x4A8 +#define FLAG_0x4A9 0x4A9 +#define FLAG_0x4AA 0x4AA +#define FLAG_0x4AB 0x4AB +#define FLAG_0x4AC 0x4AC +#define FLAG_0x4AD 0x4AD +#define FLAG_0x4AE 0x4AE +#define FLAG_0x4AF 0x4AF +#define FLAG_0x4B0 0x4B0 +#define FLAG_0x4B1 0x4B1 +#define FLAG_0x4B2 0x4B2 +#define FLAG_0x4B3 0x4B3 +#define FLAG_0x4B4 0x4B4 +#define FLAG_0x4B5 0x4B5 +#define FLAG_0x4B6 0x4B6 +#define FLAG_0x4B7 0x4B7 +#define FLAG_0x4B8 0x4B8 +#define FLAG_0x4B9 0x4B9 +#define FLAG_0x4BA 0x4BA +#define FLAG_0x4BB 0x4BB +#define FLAG_0x4BC 0x4BC +#define FLAG_0x4BD 0x4BD +#define FLAG_0x4BE 0x4BE +#define FLAG_0x4BF 0x4BF +#define FLAG_0x4C0 0x4C0 +#define FLAG_0x4C1 0x4C1 +#define FLAG_0x4C2 0x4C2 +#define FLAG_0x4C3 0x4C3 +#define FLAG_0x4C4 0x4C4 +#define FLAG_0x4C5 0x4C5 +#define FLAG_0x4C6 0x4C6 +#define FLAG_0x4C7 0x4C7 +#define FLAG_0x4C8 0x4C8 +#define FLAG_0x4C9 0x4C9 +#define FLAG_0x4CA 0x4CA +#define FLAG_0x4CB 0x4CB +#define FLAG_0x4CC 0x4CC +#define FLAG_0x4CD 0x4CD +#define FLAG_0x4CE 0x4CE +#define FLAG_0x4CF 0x4CF +#define FLAG_0x4D0 0x4D0 +#define FLAG_0x4D1 0x4D1 +#define FLAG_0x4D2 0x4D2 +#define FLAG_0x4D3 0x4D3 +#define FLAG_0x4D4 0x4D4 +#define FLAG_0x4D5 0x4D5 +#define FLAG_0x4D6 0x4D6 +#define FLAG_0x4D7 0x4D7 +#define FLAG_0x4D8 0x4D8 +#define FLAG_0x4D9 0x4D9 +#define FLAG_0x4DA 0x4DA +#define FLAG_0x4DB 0x4DB +#define FLAG_0x4DC 0x4DC +#define FLAG_0x4DD 0x4DD +#define FLAG_0x4DE 0x4DE +#define FLAG_0x4DF 0x4DF +#define FLAG_0x4E0 0x4E0 +#define FLAG_0x4E1 0x4E1 +#define FLAG_0x4E2 0x4E2 +#define FLAG_0x4E3 0x4E3 +#define FLAG_0x4E4 0x4E4 +#define FLAG_0x4E5 0x4E5 +#define FLAG_0x4E6 0x4E6 +#define FLAG_0x4E7 0x4E7 +#define FLAG_0x4E8 0x4E8 +#define FLAG_0x4E9 0x4E9 +#define FLAG_0x4EA 0x4EA +#define FLAG_0x4EB 0x4EB +#define FLAG_0x4EC 0x4EC +#define FLAG_0x4ED 0x4ED +#define FLAG_0x4EE 0x4EE +#define FLAG_0x4EF 0x4EF +#define FLAG_0x4F0 0x4F0 +#define FLAG_0x4F1 0x4F1 +#define FLAG_0x4F2 0x4F2 +#define FLAG_0x4F3 0x4F3 +#define FLAG_0x4F4 0x4F4 +#define FLAG_0x4F5 0x4F5 +#define FLAG_0x4F6 0x4F6 +#define FLAG_0x4F7 0x4F7 +#define FLAG_0x4F8 0x4F8 +#define FLAG_0x4F9 0x4F9 +#define FLAG_0x4FA 0x4FA +#define FLAG_0x4FB 0x4FB +#define FLAG_0x4FC 0x4FC +#define FLAG_0x4FD 0x4FD +#define FLAG_0x4FE 0x4FE +#define FLAG_0x4FF 0x4FF + +#define FLAG_TRAINER_FLAG_START 0x500 + +#define TRAINERS_FLAG_NO 0x356 +#define SYSTEM_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860 + +// SYSTEM FLAGS + +// 0x860 +#define FLAG_SYS_POKEMON_GET (SYSTEM_FLAGS + 0) +#define FLAG_SYS_POKEDEX_GET (SYSTEM_FLAGS + 1) +#define FLAG_SYS_POKENAV_GET (SYSTEM_FLAGS + 2) +// third one appears unused +#define FLAG_SYS_GAME_CLEAR (SYSTEM_FLAGS + 4) +#define FLAG_SYS_CHAT_USED (SYSTEM_FLAGS + 5) +#define FLAG_SYS_HIPSTER_MEET (SYSTEM_FLAGS + 6) + +// badges +#define FLAG_BADGE01_GET (SYSTEM_FLAGS + 7) +#define FLAG_BADGE02_GET (SYSTEM_FLAGS + 8) +#define FLAG_BADGE03_GET (SYSTEM_FLAGS + 9) +#define FLAG_BADGE04_GET (SYSTEM_FLAGS + 0xA) +#define FLAG_BADGE05_GET (SYSTEM_FLAGS + 0xB) +#define FLAG_BADGE06_GET (SYSTEM_FLAGS + 0xC) +#define FLAG_BADGE07_GET (SYSTEM_FLAGS + 0xD) +#define FLAG_BADGE08_GET (SYSTEM_FLAGS + 0xE) + +// cities and towns +#define FLAG_VISITED_LITTLEROOT_TOWN (SYSTEM_FLAGS + 0xF) +#define FLAG_VISITED_OLDALE_TOWN (SYSTEM_FLAGS + 0x10) +#define FLAG_VISITED_DEWFORD_TOWN (SYSTEM_FLAGS + 0x11) +#define FLAG_VISITED_LAVARIDGE_TOWN (SYSTEM_FLAGS + 0x12) +#define FLAG_VISITED_FALLARBOR_TOWN (SYSTEM_FLAGS + 0x13) +#define FLAG_VISITED_VERDANTURF_TOWN (SYSTEM_FLAGS + 0x14) +#define FLAG_VISITED_PACIFIDLOG_TOWN (SYSTEM_FLAGS + 0x15) +#define FLAG_VISITED_PETALBURG_CITY (SYSTEM_FLAGS + 0x16) +#define FLAG_VISITED_SLATEPORT_CITY (SYSTEM_FLAGS + 0x17) +#define FLAG_VISITED_MAUVILLE_CITY (SYSTEM_FLAGS + 0x18) +#define FLAG_VISITED_RUSTBORO_CITY (SYSTEM_FLAGS + 0x19) +#define FLAG_VISITED_FORTREE_CITY (SYSTEM_FLAGS + 0x1A) +#define FLAG_VISITED_LILYCOVE_CITY (SYSTEM_FLAGS + 0x1B) +#define FLAG_VISITED_MOSSDEEP_CITY (SYSTEM_FLAGS + 0x1C) +#define FLAG_VISITED_SOOTOPOLIS_CITY (SYSTEM_FLAGS + 0x1D) +#define FLAG_VISITED_EVER_GRANDE_CITY (SYSTEM_FLAGS + 0x1E) + +#define FLAG_0x87F (SYSTEM_FLAGS + 0x1F) +#define FLAG_0x880 (SYSTEM_FLAGS + 0x20) +#define FLAG_0x881 (SYSTEM_FLAGS + 0x21) +#define FLAG_0x882 (SYSTEM_FLAGS + 0x22) +#define FLAG_0x883 (SYSTEM_FLAGS + 0x23) +#define FLAG_0x884 (SYSTEM_FLAGS + 0x24) +#define FLAG_0x885 (SYSTEM_FLAGS + 0x25) +#define FLAG_0x886 (SYSTEM_FLAGS + 0x26) +#define FLAG_0x887 (SYSTEM_FLAGS + 0x27) + +#define FLAG_SYS_USE_FLASH (SYSTEM_FLAGS + 0x28) +#define FLAG_SYS_USE_STRENGTH (SYSTEM_FLAGS + 0x29) +#define FLAG_SYS_WEATHER_CTRL (SYSTEM_FLAGS + 0x2A) +#define FLAG_SYS_CYCLING_ROAD (SYSTEM_FLAGS + 0x2B) +#define FLAG_SYS_SAFARI_MODE (SYSTEM_FLAGS + 0x2C) +#define FLAG_SYS_CRUISE_MODE (SYSTEM_FLAGS + 0x2D) + +#define FLAG_0x88E (SYSTEM_FLAGS + 0x2E) +#define FLAG_0x88F (SYSTEM_FLAGS + 0x2F) + +#define FLAG_SYS_TV_HOME (SYSTEM_FLAGS + 0x30) +#define FLAG_SYS_TV_WATCH (SYSTEM_FLAGS + 0x31) +#define FLAG_SYS_TV_START (SYSTEM_FLAGS + 0x32) +#define FLAG_SYS_POPWORD_INPUT (SYSTEM_FLAGS + 0x33) +#define FLAG_SYS_MIX_RECORD (SYSTEM_FLAGS + 0x34) +#define FLAG_SYS_CLOCK_SET (SYSTEM_FLAGS + 0x35) +#define FLAG_SYS_NATIONAL_DEX (SYSTEM_FLAGS + 0x36) +#define FLAG_SYS_CAVE_SHIP (SYSTEM_FLAGS + 0x37) +#define FLAG_SYS_CAVE_WONDER (SYSTEM_FLAGS + 0x38) +#define FLAG_SYS_CAVE_BATTLE (SYSTEM_FLAGS + 0x39) +#define FLAG_SYS_SHOAL_TIDE (SYSTEM_FLAGS + 0x3A) +#define FLAG_SYS_RIBBON_GET (SYSTEM_FLAGS + 0x3B) + +#define FLAG_LANDMARK_FLOWER_SHOP (SYSTEM_FLAGS + 0x3C) +#define FLAG_LANDMARK_MR_BRINEY_HOUSE (SYSTEM_FLAGS + 0x3D) +#define FLAG_LANDMARK_ABANDONED_SHIP (SYSTEM_FLAGS + 0x3E) +#define FLAG_LANDMARK_SEASHORE_HOUSE (SYSTEM_FLAGS + 0x3F) +#define FLAG_LANDMARK_NEW_MAUVILLE (SYSTEM_FLAGS + 0x40) +#define FLAG_LANDMARK_OLD_LADY_REST_SHOP (SYSTEM_FLAGS + 0x41) +#define FLAG_LANDMARK_TRICK_HOUSE (SYSTEM_FLAGS + 0x42) +#define FLAG_LANDMARK_WINSTRATE_FAMILY (SYSTEM_FLAGS + 0x43) +#define FLAG_LANDMARK_GLASS_WORKSHOP (SYSTEM_FLAGS + 0x44) +#define FLAG_LANDMARK_LANETTES_HOUSE (SYSTEM_FLAGS + 0x45) +#define FLAG_LANDMARK_POKEMON_DAYCARE (SYSTEM_FLAGS + 0x46) +#define FLAG_LANDMARK_SEAFLOOR_CAVERN (SYSTEM_FLAGS + 0x47) +#define FLAG_LANDMARK_BATTLE_FRONTIER (SYSTEM_FLAGS + 0x48) +#define FLAG_LANDMARK_SOUTHERN_ISLAND (SYSTEM_FLAGS + 0x49) +#define FLAG_LANDMARK_FIERY_PATH (SYSTEM_FLAGS + 0x4A) + +#define FLAG_SYS_PC_LANETTE (SYSTEM_FLAGS + 0x4B) +#define FLAG_SYS_MYSTERY_EVENT_ENABLE (SYSTEM_FLAGS + 0x4C) +#define FLAG_SYS_ENC_UP_ITEM (SYSTEM_FLAGS + 0x4D) +#define FLAG_SYS_ENC_DOWN_ITEM (SYSTEM_FLAGS + 0x4E) +#define FLAG_SYS_BRAILLE_DIG (SYSTEM_FLAGS + 0x4F) +#define FLAG_SYS_BRAILLE_STRENGTH (SYSTEM_FLAGS + 0x50) +#define FLAG_SYS_BRAILLE_WAIT (SYSTEM_FLAGS + 0x51) +#define FLAG_SYS_BRAILLE_FLY (SYSTEM_FLAGS + 0x52) +#define FLAG_SYS_HAS_EON_TICKET (SYSTEM_FLAGS + 0x53) + +#define FLAG_LANDMARK_POKEMON_LEAGUE (SYSTEM_FLAGS + 0x54) + +#define FLAG_LANDMARK_ISLAND_CAVE (SYSTEM_FLAGS + 0x55) +#define FLAG_LANDMARK_DESERT_RUINS (SYSTEM_FLAGS + 0x56) +#define FLAG_LANDMARK_FOSSIL_MANIACS_HOUSE (SYSTEM_FLAGS + 0x57) +#define FLAG_LANDMARK_SCORCHED_SLAB (SYSTEM_FLAGS + 0x58) +#define FLAG_LANDMARK_ANCIENT_TOMB (SYSTEM_FLAGS + 0x59) +#define FLAG_LANDMARK_TUNNELERS_REST_HOUSE (SYSTEM_FLAGS + 0x5A) +#define FLAG_LANDMARK_HUNTERS_HOUSE (SYSTEM_FLAGS + 0x5B) +#define FLAG_LANDMARK_SEALED_CHAMBER (SYSTEM_FLAGS + 0x5C) + +#define FLAG_SYS_TV_LATI (SYSTEM_FLAGS + 0x5D) + +#define FLAG_LANDMARK_SKY_PILLAR (SYSTEM_FLAGS + 0x5E) + +#define FLAG_SYS_SHOAL_ITEM (SYSTEM_FLAGS + 0x5F) +#define FLAG_SYS_B_DASH (SYSTEM_FLAGS + 0x60) // got Running Shoes +#define FLAG_SYS_CTRL_OBJ_DELETE (SYSTEM_FLAGS + 0x61) +#define FLAG_SYS_RESET_RTC_ENABLE (SYSTEM_FLAGS + 0x62) + +#define FLAG_LANDMARK_BERRY_MASTERS_HOUSE (SYSTEM_FLAGS + 0x63) + +#define FLAG_SYS_TOWER_SILVER (SYSTEM_FLAGS + 0x64) +#define FLAG_SYS_TOWER_GOLD (SYSTEM_FLAGS + 0x65) +#define FLAG_SYS_DOME_SILVER (SYSTEM_FLAGS + 0x66) +#define FLAG_SYS_DOME_GOLD (SYSTEM_FLAGS + 0x67) +#define FLAG_SYS_PALACE_SILVER (SYSTEM_FLAGS + 0x68) +#define FLAG_SYS_PALACE_GOLD (SYSTEM_FLAGS + 0x69) +#define FLAG_SYS_ARENA_SILVER (SYSTEM_FLAGS + 0x6A) +#define FLAG_SYS_ARENA_GOLD (SYSTEM_FLAGS + 0x6B) +#define FLAG_SYS_FACTORY_SILVER (SYSTEM_FLAGS + 0x6C) +#define FLAG_SYS_FACTORY_GOLD (SYSTEM_FLAGS + 0x6D) +#define FLAG_SYS_PIKE_SILVER (SYSTEM_FLAGS + 0x6E) +#define FLAG_SYS_PIKE_GOLD (SYSTEM_FLAGS + 0x6F) +#define FLAG_SYS_PYRAMID_SILVER (SYSTEM_FLAGS + 0x70) +#define FLAG_SYS_PYRAMID_GOLD (SYSTEM_FLAGS + 0x71) +#define FLAG_SYS_FRONTIER_PASS (SYSTEM_FLAGS + 0x72) + +#define FLAG_0x8D3 (SYSTEM_FLAGS + 0x73) +#define FLAG_0x8D4 (SYSTEM_FLAGS + 0x74) +#define FLAG_0x8D5 (SYSTEM_FLAGS + 0x75) +#define FLAG_0x8D6 (SYSTEM_FLAGS + 0x76) + +#define FLAG_SYS_STORAGE_UNKNOWN_FLAG (SYSTEM_FLAGS + 0x77) + +#define FLAG_0x8D8 (SYSTEM_FLAGS + 0x78) +#define FLAG_0x8D9 (SYSTEM_FLAGS + 0x79) +#define FLAG_0x8DA (SYSTEM_FLAGS + 0x7A) + +#define FLAG_SYS_MYSTERY_GIFT_ENABLE (SYSTEM_FLAGS + 0x7B) + +#define FLAG_0x8DC (SYSTEM_FLAGS + 0x7C) +#define FLAG_LANDMARK_ALTERING_CAVE (SYSTEM_FLAGS + 0x7D) +#define FLAG_LANDMARK_DESERT_UNDERPASS (SYSTEM_FLAGS + 0x7E) +#define FLAG_0x8DF (SYSTEM_FLAGS + 0x7F) +#define FLAG_0x8E0 (SYSTEM_FLAGS + 0x80) +#define FLAG_0x8E1 (SYSTEM_FLAGS + 0x81) +#define FLAG_LANDMARK_TRAINER_HILL (SYSTEM_FLAGS + 0x82) + +#define FLAG_0x8E3 (SYSTEM_FLAGS + 0x83) +#define FLAG_0x8E4 (SYSTEM_FLAGS + 0x84) +#define FLAG_0x8E5 (SYSTEM_FLAGS + 0x85) +#define FLAG_0x8E6 (SYSTEM_FLAGS + 0x86) +#define FLAG_0x8E7 (SYSTEM_FLAGS + 0x87) +#define FLAG_0x8E8 (SYSTEM_FLAGS + 0x88) +#define FLAG_0x8E9 (SYSTEM_FLAGS + 0x89) +#define FLAG_0x8EA (SYSTEM_FLAGS + 0x8A) +#define FLAG_0x8EB (SYSTEM_FLAGS + 0x8B) +#define FLAG_0x8EC (SYSTEM_FLAGS + 0x8C) +#define FLAG_0x8ED (SYSTEM_FLAGS + 0x8D) +#define FLAG_0x8EE (SYSTEM_FLAGS + 0x8E) +#define FLAG_0x8EF (SYSTEM_FLAGS + 0x8F) +#define FLAG_0x8F0 (SYSTEM_FLAGS + 0x90) +#define FLAG_0x8F1 (SYSTEM_FLAGS + 0x91) +#define FLAG_0x8F2 (SYSTEM_FLAGS + 0x92) +#define FLAG_0x8F3 (SYSTEM_FLAGS + 0x93) +#define FLAG_0x8F4 (SYSTEM_FLAGS + 0x94) +#define FLAG_0x8F5 (SYSTEM_FLAGS + 0x95) +#define FLAG_0x8F6 (SYSTEM_FLAGS + 0x96) +#define FLAG_0x8F7 (SYSTEM_FLAGS + 0x97) +#define FLAG_0x8F8 (SYSTEM_FLAGS + 0x98) +#define FLAG_0x8F9 (SYSTEM_FLAGS + 0x99) +#define FLAG_0x8FA (SYSTEM_FLAGS + 0x9A) +#define FLAG_0x8FB (SYSTEM_FLAGS + 0x9B) +#define FLAG_0x8FC (SYSTEM_FLAGS + 0x9C) +#define FLAG_0x8FD (SYSTEM_FLAGS + 0x9D) +#define FLAG_0x8FE (SYSTEM_FLAGS + 0x9E) +#define FLAG_0x8FF (SYSTEM_FLAGS + 0x9F) +#define FLAG_0x900 (SYSTEM_FLAGS + 0xA0) +#define FLAG_0x901 (SYSTEM_FLAGS + 0xA1) +#define FLAG_0x902 (SYSTEM_FLAGS + 0xA2) +#define FLAG_0x903 (SYSTEM_FLAGS + 0xA3) +#define FLAG_0x904 (SYSTEM_FLAGS + 0xA4) +#define FLAG_0x905 (SYSTEM_FLAGS + 0xA5) +#define FLAG_0x906 (SYSTEM_FLAGS + 0xA6) +#define FLAG_0x907 (SYSTEM_FLAGS + 0xA7) +#define FLAG_0x908 (SYSTEM_FLAGS + 0xA8) +#define FLAG_0x909 (SYSTEM_FLAGS + 0xA9) +#define FLAG_0x90A (SYSTEM_FLAGS + 0xAA) +#define FLAG_0x90B (SYSTEM_FLAGS + 0xAB) +#define FLAG_0x90C (SYSTEM_FLAGS + 0xAC) +#define FLAG_0x90D (SYSTEM_FLAGS + 0xAD) +#define FLAG_0x90E (SYSTEM_FLAGS + 0xAE) +#define FLAG_0x90F (SYSTEM_FLAGS + 0xAF) +#define FLAG_0x910 (SYSTEM_FLAGS + 0xB0) +#define FLAG_0x911 (SYSTEM_FLAGS + 0xB1) +#define FLAG_0x912 (SYSTEM_FLAGS + 0xB2) +#define FLAG_0x913 (SYSTEM_FLAGS + 0xB3) +#define FLAG_0x914 (SYSTEM_FLAGS + 0xB4) +#define FLAG_0x915 (SYSTEM_FLAGS + 0xB5) +#define FLAG_0x916 (SYSTEM_FLAGS + 0xB6) +#define FLAG_0x917 (SYSTEM_FLAGS + 0xB7) +#define FLAG_0x918 (SYSTEM_FLAGS + 0xB8) +#define FLAG_0x919 (SYSTEM_FLAGS + 0xB9) +#define FLAG_0x91A (SYSTEM_FLAGS + 0xBA) +#define FLAG_0x91B (SYSTEM_FLAGS + 0xBB) +#define FLAG_0x91C (SYSTEM_FLAGS + 0xBC) +#define FLAG_0x91D (SYSTEM_FLAGS + 0xBD) +#define FLAG_0x91E (SYSTEM_FLAGS + 0xBE) +#define FLAG_0x91F (SYSTEM_FLAGS + 0xBF) +#define FLAG_0x920 (SYSTEM_FLAGS + 0xC0) +#define FLAG_0x921 (SYSTEM_FLAGS + 0xC1) +#define FLAG_0x922 (SYSTEM_FLAGS + 0xC2) +#define FLAG_0x923 (SYSTEM_FLAGS + 0xC3) +#define FLAG_0x924 (SYSTEM_FLAGS + 0xC4) +#define FLAG_0x925 (SYSTEM_FLAGS + 0xC5) +#define FLAG_0x926 (SYSTEM_FLAGS + 0xC6) +#define FLAG_0x927 (SYSTEM_FLAGS + 0xC7) +#define FLAG_0x928 (SYSTEM_FLAGS + 0xC8) +#define FLAG_0x929 (SYSTEM_FLAGS + 0xC9) +#define FLAG_0x92A (SYSTEM_FLAGS + 0xCA) +#define FLAG_0x92B (SYSTEM_FLAGS + 0xCB) +#define FLAG_0x92C (SYSTEM_FLAGS + 0xCC) +#define FLAG_0x92D (SYSTEM_FLAGS + 0xCD) +#define FLAG_0x92E (SYSTEM_FLAGS + 0xCE) +#define FLAG_0x92F (SYSTEM_FLAGS + 0xCF) +#define FLAG_0x930 (SYSTEM_FLAGS + 0xD0) +#define FLAG_0x931 (SYSTEM_FLAGS + 0xD1) +#define FLAG_0x932 (SYSTEM_FLAGS + 0xD2) +#define FLAG_0x933 (SYSTEM_FLAGS + 0xD3) +#define FLAG_0x934 (SYSTEM_FLAGS + 0xD4) +#define FLAG_0x935 (SYSTEM_FLAGS + 0xD5) +#define FLAG_0x936 (SYSTEM_FLAGS + 0xD6) +#define FLAG_0x937 (SYSTEM_FLAGS + 0xD7) +#define FLAG_0x938 (SYSTEM_FLAGS + 0xD8) +#define FLAG_0x939 (SYSTEM_FLAGS + 0xD9) +#define FLAG_0x93A (SYSTEM_FLAGS + 0xDA) +#define FLAG_0x93B (SYSTEM_FLAGS + 0xDB) +#define FLAG_0x93C (SYSTEM_FLAGS + 0xDC) +#define FLAG_0x93D (SYSTEM_FLAGS + 0xDD) +#define FLAG_0x93E (SYSTEM_FLAGS + 0xDE) +#define FLAG_0x93F (SYSTEM_FLAGS + 0xDF) +#define FLAG_0x940 (SYSTEM_FLAGS + 0xE0) +#define FLAG_0x941 (SYSTEM_FLAGS + 0xE1) +#define FLAG_0x942 (SYSTEM_FLAGS + 0xE2) +#define FLAG_0x943 (SYSTEM_FLAGS + 0xE3) +#define FLAG_0x944 (SYSTEM_FLAGS + 0xE4) +#define FLAG_0x945 (SYSTEM_FLAGS + 0xE5) +#define FLAG_0x946 (SYSTEM_FLAGS + 0xE6) +#define FLAG_0x947 (SYSTEM_FLAGS + 0xE7) +#define FLAG_0x948 (SYSTEM_FLAGS + 0xE8) +#define FLAG_0x949 (SYSTEM_FLAGS + 0xE9) +#define FLAG_0x94A (SYSTEM_FLAGS + 0xEA) +#define FLAG_0x94B (SYSTEM_FLAGS + 0xEB) +#define FLAG_0x94C (SYSTEM_FLAGS + 0xEC) +#define FLAG_0x94D (SYSTEM_FLAGS + 0xED) +#define FLAG_0x94E (SYSTEM_FLAGS + 0xEE) +#define FLAG_0x94F (SYSTEM_FLAGS + 0xEF) +#define FLAG_0x950 (SYSTEM_FLAGS + 0xF0) +#define FLAG_0x951 (SYSTEM_FLAGS + 0xF1) +#define FLAG_0x952 (SYSTEM_FLAGS + 0xF2) +#define FLAG_0x953 (SYSTEM_FLAGS + 0xF3) +#define FLAG_0x954 (SYSTEM_FLAGS + 0xF4) +#define FLAG_0x955 (SYSTEM_FLAGS + 0xF5) +#define FLAG_0x956 (SYSTEM_FLAGS + 0xF6) +#define FLAG_0x957 (SYSTEM_FLAGS + 0xF7) +#define FLAG_0x958 (SYSTEM_FLAGS + 0xF8) +#define FLAG_0x959 (SYSTEM_FLAGS + 0xF9) +#define FLAG_0x95A (SYSTEM_FLAGS + 0xFA) +#define FLAG_0x95B (SYSTEM_FLAGS + 0xFB) +#define FLAG_0x95C (SYSTEM_FLAGS + 0xFC) +#define FLAG_0x95D (SYSTEM_FLAGS + 0xFD) +#define FLAG_0x95E (SYSTEM_FLAGS + 0xFE) +#define FLAG_0x95F (SYSTEM_FLAGS + 0xFF) + +// SPECIAL FLAGS (unknown purpose) +#define FLAG_SPECIAL_FLAG_0x4000 0x4000 +#define FLAG_SPECIAL_FLAG_0x4001 0x4001 +#define FLAG_SPECIAL_FLAG_0x4002 0x4002 +#define FLAG_SPECIAL_FLAG_0x4003 0x4003 +#define FLAG_SPECIAL_FLAG_0x4004 0x4004 + +#endif // GUARD_CONSTANTS_FLAGS_H diff --git a/include/game_stat.h b/include/constants/game_stat.h index 5979c531c..7ebf3501b 100644 --- a/include/game_stat.h +++ b/include/constants/game_stat.h @@ -1,5 +1,5 @@ -#ifndef GUARD_GAME_STAT_H -#define GUARD_GAME_STAT_H +#ifndef GUARD_CONSTANTS_GAME_STAT_H +#define GUARD_CONSTANTS_GAME_STAT_H #define GAME_STAT_SAVED_GAME 0 #define GAME_STAT_FIRST_HOF_PLAY_TIME 1 @@ -51,12 +51,10 @@ #define GAME_STAT_USED_DAYCARE 47 #define GAME_STAT_RODE_CABLE_CAR 48 #define GAME_STAT_ENTERED_HOT_SPRINGS 49 +#define GAME_STAT_50 50 +#define GAME_STAT_51 51 -/*TODO: add new stats added in Emerald*/ - +#define NUM_USED_GAME_STATS 52 #define NUM_GAME_STATS 64 -void IncrementGameStat(u8); -u32 GetGameStat(u8); - -#endif // GUARD_GAME_STAT_H +#endif // GUARD_CONSTANTS_GAME_STAT_H diff --git a/include/hold_effects.h b/include/constants/hold_effects.h index b653f5a92..b653f5a92 100644 --- a/include/hold_effects.h +++ b/include/constants/hold_effects.h diff --git a/include/constants/items.h b/include/constants/items.h new file mode 100644 index 000000000..294499c8b --- /dev/null +++ b/include/constants/items.h @@ -0,0 +1,478 @@ +#ifndef GUARD_CONSTANTS_ITEMS_H +#define GUARD_CONSTANTS_ITEMS_H + +#define ITEM_NONE 0 + +// Balls +#define ITEM_MASTER_BALL 1 +#define ITEM_ULTRA_BALL 2 +#define ITEM_GREAT_BALL 3 +#define ITEM_POKE_BALL 4 +#define ITEM_SAFARI_BALL 5 +#define ITEM_NET_BALL 6 +#define ITEM_DIVE_BALL 7 +#define ITEM_NEST_BALL 8 +#define ITEM_REPEAT_BALL 9 +#define ITEM_TIMER_BALL 10 +#define ITEM_LUXURY_BALL 11 +#define ITEM_PREMIER_BALL 12 + +// Pokemon Items +#define ITEM_POTION 13 +#define ITEM_ANTIDOTE 14 +#define ITEM_BURN_HEAL 15 +#define ITEM_ICE_HEAL 16 +#define ITEM_AWAKENING 17 +#define ITEM_PARALYZE_HEAL 18 +#define ITEM_FULL_RESTORE 19 +#define ITEM_MAX_POTION 20 +#define ITEM_HYPER_POTION 21 +#define ITEM_SUPER_POTION 22 +#define ITEM_FULL_HEAL 23 +#define ITEM_REVIVE 24 +#define ITEM_MAX_REVIVE 25 +#define ITEM_FRESH_WATER 26 +#define ITEM_SODA_POP 27 +#define ITEM_LEMONADE 28 +#define ITEM_MOOMOO_MILK 29 +#define ITEM_ENERGY_POWDER 30 +#define ITEM_ENERGY_ROOT 31 +#define ITEM_HEAL_POWDER 32 +#define ITEM_REVIVAL_HERB 33 +#define ITEM_ETHER 34 +#define ITEM_MAX_ETHER 35 +#define ITEM_ELIXIR 36 +#define ITEM_MAX_ELIXIR 37 +#define ITEM_LAVA_COOKIE 38 +#define ITEM_BLUE_FLUTE 39 +#define ITEM_YELLOW_FLUTE 40 +#define ITEM_RED_FLUTE 41 +#define ITEM_BLACK_FLUTE 42 +#define ITEM_WHITE_FLUTE 43 +#define ITEM_BERRY_JUICE 44 +#define ITEM_SACRED_ASH 45 +#define ITEM_SHOAL_SALT 46 +#define ITEM_SHOAL_SHELL 47 +#define ITEM_RED_SHARD 48 +#define ITEM_BLUE_SHARD 49 +#define ITEM_YELLOW_SHARD 50 +#define ITEM_GREEN_SHARD 51 +#define ITEM_034 52 +#define ITEM_035 53 +#define ITEM_036 54 +#define ITEM_037 55 +#define ITEM_038 56 +#define ITEM_039 57 +#define ITEM_03A 58 +#define ITEM_03B 59 +#define ITEM_03C 60 +#define ITEM_03D 61 +#define ITEM_03E 62 +#define ITEM_HP_UP 63 +#define ITEM_PROTEIN 64 +#define ITEM_IRON 65 +#define ITEM_CARBOS 66 +#define ITEM_CALCIUM 67 +#define ITEM_RARE_CANDY 68 +#define ITEM_PP_UP 69 +#define ITEM_ZINC 70 +#define ITEM_PP_MAX 71 +#define ITEM_048 72 +#define ITEM_GUARD_SPEC 73 +#define ITEM_DIRE_HIT 74 +#define ITEM_X_ATTACK 75 +#define ITEM_X_DEFEND 76 +#define ITEM_X_SPEED 77 +#define ITEM_X_ACCURACY 78 +#define ITEM_X_SPECIAL 79 +#define ITEM_POKE_DOLL 80 +#define ITEM_FLUFFY_TAIL 81 +#define ITEM_052 82 +#define ITEM_SUPER_REPEL 83 +#define ITEM_MAX_REPEL 84 +#define ITEM_ESCAPE_ROPE 85 +#define ITEM_REPEL 86 +#define ITEM_057 87 +#define ITEM_058 88 +#define ITEM_059 89 +#define ITEM_05A 90 +#define ITEM_05B 91 +#define ITEM_05C 92 +#define ITEM_SUN_STONE 93 +#define ITEM_MOON_STONE 94 +#define ITEM_FIRE_STONE 95 +#define ITEM_THUNDER_STONE 96 +#define ITEM_WATER_STONE 97 +#define ITEM_LEAF_STONE 98 +#define ITEM_063 99 +#define ITEM_064 100 +#define ITEM_065 101 +#define ITEM_066 102 + +// Unusable +#define ITEM_TINY_MUSHROOM 103 +#define ITEM_BIG_MUSHROOM 104 +#define ITEM_069 105 +#define ITEM_PEARL 106 +#define ITEM_BIG_PEARL 107 +#define ITEM_STARDUST 108 +#define ITEM_STAR_PIECE 109 +#define ITEM_NUGGET 110 +#define ITEM_HEART_SCALE 111 +#define ITEM_070 112 +#define ITEM_071 113 +#define ITEM_072 114 +#define ITEM_073 115 +#define ITEM_074 116 +#define ITEM_075 117 +#define ITEM_076 118 +#define ITEM_077 119 +#define ITEM_078 120 + +// Mails +#define ITEM_ORANGE_MAIL 121 +#define ITEM_HARBOR_MAIL 122 +#define ITEM_GLITTER_MAIL 123 +#define ITEM_MECH_MAIL 124 +#define ITEM_WOOD_MAIL 125 +#define ITEM_WAVE_MAIL 126 +#define ITEM_BEAD_MAIL 127 +#define ITEM_SHADOW_MAIL 128 +#define ITEM_TROPIC_MAIL 129 +#define ITEM_DREAM_MAIL 130 +#define ITEM_FAB_MAIL 131 +#define ITEM_RETRO_MAIL 132 + +// Berries +#define ITEM_CHERI_BERRY 133 +#define ITEM_CHESTO_BERRY 134 +#define ITEM_PECHA_BERRY 135 +#define ITEM_RAWST_BERRY 136 +#define ITEM_ASPEAR_BERRY 137 +#define ITEM_LEPPA_BERRY 138 +#define ITEM_ORAN_BERRY 139 +#define ITEM_PERSIM_BERRY 140 +#define ITEM_LUM_BERRY 141 +#define ITEM_SITRUS_BERRY 142 +#define ITEM_FIGY_BERRY 143 +#define ITEM_WIKI_BERRY 144 +#define ITEM_MAGO_BERRY 145 +#define ITEM_AGUAV_BERRY 146 +#define ITEM_IAPAPA_BERRY 147 +#define ITEM_RAZZ_BERRY 148 +#define ITEM_BLUK_BERRY 149 +#define ITEM_NANAB_BERRY 150 +#define ITEM_WEPEAR_BERRY 151 +#define ITEM_PINAP_BERRY 152 +#define ITEM_POMEG_BERRY 153 +#define ITEM_KELPSY_BERRY 154 +#define ITEM_QUALOT_BERRY 155 +#define ITEM_HONDEW_BERRY 156 +#define ITEM_GREPA_BERRY 157 +#define ITEM_TAMATO_BERRY 158 +#define ITEM_CORNN_BERRY 159 +#define ITEM_MAGOST_BERRY 160 +#define ITEM_RABUTA_BERRY 161 +#define ITEM_NOMEL_BERRY 162 +#define ITEM_SPELON_BERRY 163 +#define ITEM_PAMTRE_BERRY 164 +#define ITEM_WATMEL_BERRY 165 +#define ITEM_DURIN_BERRY 166 +#define ITEM_BELUE_BERRY 167 +#define ITEM_LIECHI_BERRY 168 +#define ITEM_GANLON_BERRY 169 +#define ITEM_SALAC_BERRY 170 +#define ITEM_PETAYA_BERRY 171 +#define ITEM_APICOT_BERRY 172 +#define ITEM_LANSAT_BERRY 173 +#define ITEM_STARF_BERRY 174 +#define ITEM_ENIGMA_BERRY 175 +#define ITEM_0B0 176 +#define ITEM_0B1 177 +#define ITEM_0B2 178 + +// Battle Held items +#define ITEM_BRIGHT_POWDER 179 +#define ITEM_WHITE_HERB 180 +#define ITEM_MACHO_BRACE 181 +#define ITEM_EXP_SHARE 182 +#define ITEM_QUICK_CLAW 183 +#define ITEM_SOOTHE_BELL 184 +#define ITEM_MENTAL_HERB 185 +#define ITEM_CHOICE_BAND 186 +#define ITEM_KINGS_ROCK 187 +#define ITEM_SILVER_POWDER 188 +#define ITEM_AMULET_COIN 189 +#define ITEM_CLEANSE_TAG 190 +#define ITEM_SOUL_DEW 191 +#define ITEM_DEEP_SEA_TOOTH 192 +#define ITEM_DEEP_SEA_SCALE 193 +#define ITEM_SMOKE_BALL 194 +#define ITEM_EVERSTONE 195 +#define ITEM_FOCUS_BAND 196 +#define ITEM_LUCKY_EGG 197 +#define ITEM_SCOPE_LENS 198 +#define ITEM_METAL_COAT 199 +#define ITEM_LEFTOVERS 200 +#define ITEM_DRAGON_SCALE 201 +#define ITEM_LIGHT_BALL 202 +#define ITEM_SOFT_SAND 203 +#define ITEM_HARD_STONE 204 +#define ITEM_MIRACLE_SEED 205 +#define ITEM_BLACK_GLASSES 206 +#define ITEM_BLACK_BELT 207 +#define ITEM_MAGNET 208 +#define ITEM_MYSTIC_WATER 209 +#define ITEM_SHARP_BEAK 210 +#define ITEM_POISON_BARB 211 +#define ITEM_NEVER_MELT_ICE 212 +#define ITEM_SPELL_TAG 213 +#define ITEM_TWISTED_SPOON 214 +#define ITEM_CHARCOAL 215 +#define ITEM_DRAGON_FANG 216 +#define ITEM_SILK_SCARF 217 +#define ITEM_UP_GRADE 218 +#define ITEM_SHELL_BELL 219 +#define ITEM_SEA_INCENSE 220 +#define ITEM_LAX_INCENSE 221 +#define ITEM_LUCKY_PUNCH 222 +#define ITEM_METAL_POWDER 223 +#define ITEM_THICK_CLUB 224 +#define ITEM_STICK 225 +#define ITEM_0E2 226 +#define ITEM_0E3 227 +#define ITEM_0E4 228 +#define ITEM_0E5 229 +#define ITEM_0E6 230 +#define ITEM_0E7 231 +#define ITEM_0E8 232 +#define ITEM_0E9 233 +#define ITEM_0EA 234 +#define ITEM_0EB 235 +#define ITEM_0EC 236 +#define ITEM_0ED 237 +#define ITEM_0EE 238 +#define ITEM_0EF 239 +#define ITEM_0F0 240 +#define ITEM_0F1 241 +#define ITEM_0F2 242 +#define ITEM_0F3 243 +#define ITEM_0F4 244 +#define ITEM_0F5 245 +#define ITEM_0F6 246 +#define ITEM_0F7 247 +#define ITEM_0F8 248 +#define ITEM_0F9 249 +#define ITEM_0FA 250 +#define ITEM_0FB 251 +#define ITEM_0FC 252 +#define ITEM_0FD 253 + +// Contest held items +#define ITEM_RED_SCARF 254 +#define ITEM_BLUE_SCARF 255 +#define ITEM_PINK_SCARF 256 +#define ITEM_GREEN_SCARF 257 +#define ITEM_YELLOW_SCARF 258 + +// Key Items +#define ITEM_MACH_BIKE 259 +#define ITEM_COIN_CASE 260 +#define ITEM_ITEMFINDER 261 +#define ITEM_OLD_ROD 262 +#define ITEM_GOOD_ROD 263 +#define ITEM_SUPER_ROD 264 +#define ITEM_SS_TICKET 265 +#define ITEM_CONTEST_PASS 266 +#define ITEM_10B 267 +#define ITEM_WAILMER_PAIL 268 +#define ITEM_DEVON_GOODS 269 +#define ITEM_SOOT_SACK 270 +#define ITEM_BASEMENT_KEY 271 +#define ITEM_ACRO_BIKE 272 +#define ITEM_POKEBLOCK_CASE 273 +#define ITEM_LETTER 274 +#define ITEM_EON_TICKET 275 +#define ITEM_RED_ORB 276 +#define ITEM_BLUE_ORB 277 +#define ITEM_SCANNER 278 +#define ITEM_GO_GOGGLES 279 +#define ITEM_METEORITE 280 +#define ITEM_ROOM_1_KEY 281 +#define ITEM_ROOM_2_KEY 282 +#define ITEM_ROOM_4_KEY 283 +#define ITEM_ROOM_6_KEY 284 +#define ITEM_STORAGE_KEY 285 +#define ITEM_ROOT_FOSSIL 286 +#define ITEM_CLAW_FOSSIL 287 +#define ITEM_DEVON_SCOPE 288 + +// TMs/HMs +#define ITEM_TM01 289 +#define ITEM_TM02 290 +#define ITEM_TM03 291 +#define ITEM_TM04 292 +#define ITEM_TM05 293 +#define ITEM_TM06 294 +#define ITEM_TM07 295 +#define ITEM_TM08 296 +#define ITEM_TM09 297 +#define ITEM_TM10 298 +#define ITEM_TM11 299 +#define ITEM_TM12 300 +#define ITEM_TM13 301 +#define ITEM_TM14 302 +#define ITEM_TM15 303 +#define ITEM_TM16 304 +#define ITEM_TM17 305 +#define ITEM_TM18 306 +#define ITEM_TM19 307 +#define ITEM_TM20 308 +#define ITEM_TM21 309 +#define ITEM_TM22 310 +#define ITEM_TM23 311 +#define ITEM_TM24 312 +#define ITEM_TM25 313 +#define ITEM_TM26 314 +#define ITEM_TM27 315 +#define ITEM_TM28 316 +#define ITEM_TM29 317 +#define ITEM_TM30 318 +#define ITEM_TM31 319 +#define ITEM_TM32 320 +#define ITEM_TM33 321 +#define ITEM_TM34 322 +#define ITEM_TM35 323 +#define ITEM_TM36 324 +#define ITEM_TM37 325 +#define ITEM_TM38 326 +#define ITEM_TM39 327 +#define ITEM_TM40 328 +#define ITEM_TM41 329 +#define ITEM_TM42 330 +#define ITEM_TM43 331 +#define ITEM_TM44 332 +#define ITEM_TM45 333 +#define ITEM_TM46 334 +#define ITEM_TM47 335 +#define ITEM_TM48 336 +#define ITEM_TM49 337 +#define ITEM_TM50 338 +#define ITEM_HM01 339 +#define ITEM_HM02 340 +#define ITEM_HM03 341 +#define ITEM_HM04 342 +#define ITEM_HM05 343 +#define ITEM_HM06 344 +#define ITEM_HM07 345 +#define ITEM_HM08 346 + +#define ITEM_TM01_FOCUS_PUNCH ITEM_TM01 +#define ITEM_TM02_DRAGON_CLAW ITEM_TM02 +#define ITEM_TM03_WATER_PULSE ITEM_TM03 +#define ITEM_TM04_CALM_MIND ITEM_TM04 +#define ITEM_TM05_ROAR ITEM_TM05 +#define ITEM_TM06_TOXIC ITEM_TM06 +#define ITEM_TM07_HAIL ITEM_TM07 +#define ITEM_TM08_BULK_UP ITEM_TM08 +#define ITEM_TM09_BULLET_SEED ITEM_TM09 +#define ITEM_TM10_HIDDEN_POWER ITEM_TM10 +#define ITEM_TM11_SUNNY_DAY ITEM_TM11 +#define ITEM_TM12_TAUNT ITEM_TM12 +#define ITEM_TM13_ICE_BEAM ITEM_TM13 +#define ITEM_TM14_BLIZZARD ITEM_TM14 +#define ITEM_TM15_HYPER_BEAM ITEM_TM15 +#define ITEM_TM16_LIGHT_SCREEN ITEM_TM16 +#define ITEM_TM17_PROTECT ITEM_TM17 +#define ITEM_TM18_RAIN_DANCE ITEM_TM18 +#define ITEM_TM19_GIGA_DRAIN ITEM_TM19 +#define ITEM_TM20_SAFEGUARD ITEM_TM20 +#define ITEM_TM21_FRUSTRATION ITEM_TM21 +#define ITEM_TM22_SOLARBEAM ITEM_TM22 +#define ITEM_TM23_IRON_TAIL ITEM_TM23 +#define ITEM_TM24_THUNDERBOLT ITEM_TM24 +#define ITEM_TM25_THUNDER ITEM_TM25 +#define ITEM_TM26_EARTHQUAKE ITEM_TM26 +#define ITEM_TM27_RETURN ITEM_TM27 +#define ITEM_TM28_DIG ITEM_TM28 +#define ITEM_TM29_PSYCHIC ITEM_TM29 +#define ITEM_TM30_SHADOW_BALL ITEM_TM30 +#define ITEM_TM31_BRICK_BREAK ITEM_TM31 +#define ITEM_TM32_DOUBLE_TEAM ITEM_TM32 +#define ITEM_TM33_REFLECT ITEM_TM33 +#define ITEM_TM34_SHOCK_WAVE ITEM_TM34 +#define ITEM_TM35_FLAMETHROWER ITEM_TM35 +#define ITEM_TM36_SLUDGE_BOMB ITEM_TM36 +#define ITEM_TM37_SANDSTORM ITEM_TM37 +#define ITEM_TM38_FIRE_BLAST ITEM_TM38 +#define ITEM_TM39_ROCK_TOMB ITEM_TM39 +#define ITEM_TM40_AERIAL_ACE ITEM_TM40 +#define ITEM_TM41_TORMENT ITEM_TM41 +#define ITEM_TM42_FACADE ITEM_TM42 +#define ITEM_TM43_SECRET_POWER ITEM_TM43 +#define ITEM_TM44_REST ITEM_TM44 +#define ITEM_TM45_ATTRACT ITEM_TM45 +#define ITEM_TM46_THIEF ITEM_TM46 +#define ITEM_TM47_STEEL_WING ITEM_TM47 +#define ITEM_TM48_SKILL_SWAP ITEM_TM48 +#define ITEM_TM49_SNATCH ITEM_TM49 +#define ITEM_TM50_OVERHEAT ITEM_TM50 +#define ITEM_HM01_CUT ITEM_HM01 +#define ITEM_HM02_FLY ITEM_HM02 +#define ITEM_HM03_SURF ITEM_HM03 +#define ITEM_HM04_STRENGTH ITEM_HM04 +#define ITEM_HM05_FLASH ITEM_HM05 +#define ITEM_HM06_ROCK_SMASH ITEM_HM06 +#define ITEM_HM07_WATERFALL ITEM_HM07 +#define ITEM_HM08_DIVE ITEM_HM08 + +// Unknown +#define ITEM_15B 347 +#define ITEM_15C 348 + +// FireRed/LeafGreen +#define ITEM_OAKS_PARCEL 349 +#define ITEM_POKE_FLUTE 350 +#define ITEM_SECRET_KEY 351 +#define ITEM_BIKE_VOUCHER 352 +#define ITEM_GOLD_TEETH 353 +#define ITEM_OLD_AMBER 354 +#define ITEM_CARD_KEY 355 +#define ITEM_LIFT_KEY 356 +#define ITEM_HELIX_FOSSIL 357 +#define ITEM_DOME_FOSSIL 358 +#define ITEM_SILPH_SCOPE 359 +#define ITEM_BICYCLE 360 +#define ITEM_TOWN_MAP 361 +#define ITEM_VS_SEEKER 362 +#define ITEM_FAME_CHECKER 363 +#define ITEM_TM_CASE 364 +#define ITEM_BERRY_POUCH 365 +#define ITEM_TEACHY_TV 366 +#define ITEM_TRI_PASS 367 +#define ITEM_RAINBOW_PASS 368 +#define ITEM_TEA 369 +#define ITEM_MYSTIC_TICKET 370 +#define ITEM_AURORA_TICKET 371 +#define ITEM_POWDER_JAR 372 +#define ITEM_RUBY 373 +#define ITEM_SAPPHIRE 374 + +// Emerald +#define ITEM_MAGMA_EMBLEM 375 +#define ITEM_OLD_SEA_MAP 376 + +#define ITEMS_COUNT 377 +#define ITEM_FIELD_ARROW ITEMS_COUNT + +#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY +#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY +#define ITEM_TO_BERRY(itemId)(((itemId - FIRST_BERRY_INDEX) + 1)) + +#define NUM_TECHNICAL_MACHINES 50 +#define NUM_HIDDEN_MACHINES 8 + +// Check if the item is one that can be used on a Pokemon. +#define IS_POKEMON_ITEM(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2) + +#endif // GUARD_CONSTANTS_ITEMS_H diff --git a/include/constants/map_types.h b/include/constants/map_types.h new file mode 100755 index 000000000..504575859 --- /dev/null +++ b/include/constants/map_types.h @@ -0,0 +1,25 @@ +#ifndef GUARD_CONSTANTS_MAP_TYPES_H +#define GUARD_CONSTANTS_MAP_TYPES_H + +#define MAP_TYPE_0 0 +#define MAP_TYPE_TOWN 1 +#define MAP_TYPE_CITY 2 +#define MAP_TYPE_ROUTE 3 +#define MAP_TYPE_UNDERGROUND 4 +#define MAP_TYPE_UNDERWATER 5 +#define MAP_TYPE_6 6 +#define MAP_TYPE_7 7 +#define MAP_TYPE_INDOOR 8 +#define MAP_TYPE_SECRET_BASE 9 + +#define MAP_BATTLE_SCENE_NORMAL 0 +#define MAP_BATTLE_SCENE_GYM 1 +#define MAP_BATTLE_SCENE_MAGMA 2 +#define MAP_BATTLE_SCENE_AQUA 3 +#define MAP_BATTLE_SCENE_SIDNEY 4 +#define MAP_BATTLE_SCENE_PHOEBE 5 +#define MAP_BATTLE_SCENE_GLACIA 6 +#define MAP_BATTLE_SCENE_DRAKE 7 +#define MAP_BATTLE_SCENE_FRONTIER 8 + +#endif // GUARD_CONSTANTS_MAP_TYPES_H diff --git a/include/constants/maps.h b/include/constants/maps.h new file mode 100644 index 000000000..bcb778422 --- /dev/null +++ b/include/constants/maps.h @@ -0,0 +1,598 @@ +#ifndef GUARD_CONSTANTS_MAPS_H +#define GUARD_CONSTANTS_MAPS_H + +// Map Group 0 +#define MAP_PETALBURG_CITY (0 | (0 << 8)) +#define MAP_SLATEPORT_CITY (1 | (0 << 8)) +#define MAP_MAUVILLE_CITY (2 | (0 << 8)) +#define MAP_RUSTBORO_CITY (3 | (0 << 8)) +#define MAP_FORTREE_CITY (4 | (0 << 8)) +#define MAP_LILYCOVE_CITY (5 | (0 << 8)) +#define MAP_MOSSDEEP_CITY (6 | (0 << 8)) +#define MAP_SOOTOPOLIS_CITY (7 | (0 << 8)) +#define MAP_EVER_GRANDE_CITY (8 | (0 << 8)) +#define MAP_LITTLEROOT_TOWN (9 | (0 << 8)) +#define MAP_OLDALE_TOWN (10 | (0 << 8)) +#define MAP_DEWFORD_TOWN (11 | (0 << 8)) +#define MAP_LAVARIDGE_TOWN (12 | (0 << 8)) +#define MAP_FALLARBOR_TOWN (13 | (0 << 8)) +#define MAP_VERDANTURF_TOWN (14 | (0 << 8)) +#define MAP_PACIFIDLOG_TOWN (15 | (0 << 8)) +#define MAP_ROUTE101 (16 | (0 << 8)) +#define MAP_ROUTE102 (17 | (0 << 8)) +#define MAP_ROUTE103 (18 | (0 << 8)) +#define MAP_ROUTE104 (19 | (0 << 8)) +#define MAP_ROUTE105 (20 | (0 << 8)) +#define MAP_ROUTE106 (21 | (0 << 8)) +#define MAP_ROUTE107 (22 | (0 << 8)) +#define MAP_ROUTE108 (23 | (0 << 8)) +#define MAP_ROUTE109 (24 | (0 << 8)) +#define MAP_ROUTE110 (25 | (0 << 8)) +#define MAP_ROUTE111 (26 | (0 << 8)) +#define MAP_ROUTE112 (27 | (0 << 8)) +#define MAP_ROUTE113 (28 | (0 << 8)) +#define MAP_ROUTE114 (29 | (0 << 8)) +#define MAP_ROUTE115 (30 | (0 << 8)) +#define MAP_ROUTE116 (31 | (0 << 8)) +#define MAP_ROUTE117 (32 | (0 << 8)) +#define MAP_ROUTE118 (33 | (0 << 8)) +#define MAP_ROUTE119 (34 | (0 << 8)) +#define MAP_ROUTE120 (35 | (0 << 8)) +#define MAP_ROUTE121 (36 | (0 << 8)) +#define MAP_ROUTE122 (37 | (0 << 8)) +#define MAP_ROUTE123 (38 | (0 << 8)) +#define MAP_ROUTE124 (39 | (0 << 8)) +#define MAP_ROUTE125 (40 | (0 << 8)) +#define MAP_ROUTE126 (41 | (0 << 8)) +#define MAP_ROUTE127 (42 | (0 << 8)) +#define MAP_ROUTE128 (43 | (0 << 8)) +#define MAP_ROUTE129 (44 | (0 << 8)) +#define MAP_ROUTE130 (45 | (0 << 8)) +#define MAP_ROUTE131 (46 | (0 << 8)) +#define MAP_ROUTE132 (47 | (0 << 8)) +#define MAP_ROUTE133 (48 | (0 << 8)) +#define MAP_ROUTE134 (49 | (0 << 8)) +#define MAP_UNDERWATER1 (50 | (0 << 8)) +#define MAP_UNDERWATER2 (51 | (0 << 8)) +#define MAP_UNDERWATER3 (52 | (0 << 8)) +#define MAP_UNDERWATER4 (53 | (0 << 8)) +#define MAP_UNDERWATER5 (54 | (0 << 8)) +#define MAP_UNDERWATER6 (55 | (0 << 8)) +#define MAP_UNDERWATER7 (56 | (0 << 8)) + +// Map Group 1 +#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F (0 | (1 << 8)) +#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F (1 | (1 << 8)) +#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F (2 | (1 << 8)) +#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F (3 | (1 << 8)) +#define MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB (4 | (1 << 8)) + +// Map Group 2 +#define MAP_OLDALE_TOWN_HOUSE1 (0 | (2 << 8)) +#define MAP_OLDALE_TOWN_HOUSE2 (1 | (2 << 8)) +#define MAP_OLDALE_TOWN_POKEMON_CENTER_1F (2 | (2 << 8)) +#define MAP_OLDALE_TOWN_POKEMON_CENTER_2F (3 | (2 << 8)) +#define MAP_OLDALE_TOWN_MART (4 | (2 << 8)) + +// Map Group 3 +#define MAP_DEWFORD_TOWN_HOUSE1 (0 | (3 << 8)) +#define MAP_DEWFORD_TOWN_POKEMON_CENTER_1F (1 | (3 << 8)) +#define MAP_DEWFORD_TOWN_POKEMON_CENTER_2F (2 | (3 << 8)) +#define MAP_DEWFORD_TOWN_GYM (3 | (3 << 8)) +#define MAP_DEWFORD_TOWN_HALL (4 | (3 << 8)) +#define MAP_DEWFORD_TOWN_HOUSE2 (5 | (3 << 8)) + +// Map Group 4 +#define MAP_LAVARIDGE_TOWN_HERB_SHOP (0 | (4 << 8)) +#define MAP_LAVARIDGE_TOWN_GYM_1F (1 | (4 << 8)) +#define MAP_LAVARIDGE_TOWN_GYM_B1F (2 | (4 << 8)) +#define MAP_LAVARIDGE_TOWN_HOUSE (3 | (4 << 8)) +#define MAP_LAVARIDGE_TOWN_MART (4 | (4 << 8)) +#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F (5 | (4 << 8)) +#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_2F (6 | (4 << 8)) + +// Map Group 5 +#define MAP_FALLARBOR_TOWN_MART (0 | (5 << 8)) +#define MAP_FALLARBOR_TOWN_BATTLE_TENT_LOBBY (1 | (5 << 8)) +#define MAP_FALLARBOR_TOWN_BATTLE_TENT_CORRIDOR (2 | (5 << 8)) +#define MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM (3 | (5 << 8)) +#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F (4 | (5 << 8)) +#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_2F (5 | (5 << 8)) +#define MAP_FALLARBOR_TOWN_HOUSE1 (6 | (5 << 8)) +#define MAP_FALLARBOR_TOWN_HOUSE2 (7 | (5 << 8)) + +// Map Group 6 +#define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8)) +#define MAP_VERDANTURF_TOWN_BATTLE_TENT_CORRIDOR (1 | (6 << 8)) +#define MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM (2 | (6 << 8)) +#define MAP_VERDANTURF_TOWN_MART (3 | (6 << 8)) +#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F (4 | (6 << 8)) +#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_2F (5 | (6 << 8)) +#define MAP_VERDANTURF_TOWN_WANDAS_HOUSE (6 | (6 << 8)) +#define MAP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE (7 | (6 << 8)) +#define MAP_VERDANTURF_TOWN_HOUSE (8 | (6 << 8)) + +// Map Group 7 +#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F (0 | (7 << 8)) +#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F (1 | (7 << 8)) +#define MAP_PACIFIDLOG_TOWN_HOUSE1 (2 | (7 << 8)) +#define MAP_PACIFIDLOG_TOWN_HOUSE2 (3 | (7 << 8)) +#define MAP_PACIFIDLOG_TOWN_HOUSE3 (4 | (7 << 8)) +#define MAP_PACIFIDLOG_TOWN_HOUSE4 (5 | (7 << 8)) +#define MAP_PACIFIDLOG_TOWN_HOUSE5 (6 | (7 << 8)) + +// Map Group 8 +#define MAP_PETALBURG_CITY_WALLYS_HOUSE (0 | (8 << 8)) +#define MAP_PETALBURG_CITY_GYM (1 | (8 << 8)) +#define MAP_PETALBURG_CITY_HOUSE1 (2 | (8 << 8)) +#define MAP_PETALBURG_CITY_HOUSE2 (3 | (8 << 8)) +#define MAP_PETALBURG_CITY_POKEMON_CENTER_1F (4 | (8 << 8)) +#define MAP_PETALBURG_CITY_POKEMON_CENTER_2F (5 | (8 << 8)) +#define MAP_PETALBURG_CITY_MART (6 | (8 << 8)) + +// Map Group 9 +#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_1F (0 | (9 << 8)) +#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_2F (1 | (9 << 8)) +#define MAP_SLATEPORT_CITY_BATTLE_TENT_LOBBY (2 | (9 << 8)) +#define MAP_SLATEPORT_CITY_BATTLE_TENT_CORRIDOR (3 | (9 << 8)) +#define MAP_SLATEPORT_CITY_BATTLE_TENT_BATTLE_ROOM (4 | (9 << 8)) +#define MAP_SLATEPORT_CITY_HOUSE1 (5 | (9 << 8)) +#define MAP_SLATEPORT_CITY_POKEMON_FAN_CLUB (6 | (9 << 8)) +#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F (7 | (9 << 8)) +#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F (8 | (9 << 8)) +#define MAP_SLATEPORT_CITY_HARBOR (9 | (9 << 8)) +#define MAP_SLATEPORT_CITY_HOUSE2 (10 | (9 << 8)) +#define MAP_SLATEPORT_CITY_POKEMON_CENTER_1F (11 | (9 << 8)) +#define MAP_SLATEPORT_CITY_POKEMON_CENTER_2F (12 | (9 << 8)) +#define MAP_SLATEPORT_CITY_MART (13 | (9 << 8)) + +// Map Group 10 +#define MAP_MAUVILLE_CITY_GYM (0 | (10 << 8)) +#define MAP_MAUVILLE_CITY_BIKE_SHOP (1 | (10 << 8)) +#define MAP_MAUVILLE_CITY_HOUSE1 (2 | (10 << 8)) +#define MAP_MAUVILLE_CITY_GAME_CORNER (3 | (10 << 8)) +#define MAP_MAUVILLE_CITY_HOUSE2 (4 | (10 << 8)) +#define MAP_MAUVILLE_CITY_POKEMON_CENTER_1F (5 | (10 << 8)) +#define MAP_MAUVILLE_CITY_POKEMON_CENTER_2F (6 | (10 << 8)) +#define MAP_MAUVILLE_CITY_MART (7 | (10 << 8)) + +// Map Group 11 +#define MAP_RUSTBORO_CITY_DEVON_CORP_1F (0 | (11 << 8)) +#define MAP_RUSTBORO_CITY_DEVON_CORP_2F (1 | (11 << 8)) +#define MAP_RUSTBORO_CITY_DEVON_CORP_3F (2 | (11 << 8)) +#define MAP_RUSTBORO_CITY_GYM (3 | (11 << 8)) +#define MAP_RUSTBORO_CITY_POKEMON_SCHOOL (4 | (11 << 8)) +#define MAP_RUSTBORO_CITY_POKEMON_CENTER_1F (5 | (11 << 8)) +#define MAP_RUSTBORO_CITY_POKEMON_CENTER_2F (6 | (11 << 8)) +#define MAP_RUSTBORO_CITY_MART (7 | (11 << 8)) +#define MAP_RUSTBORO_CITY_FLAT1_1F (8 | (11 << 8)) +#define MAP_RUSTBORO_CITY_FLAT1_2F (9 | (11 << 8)) +#define MAP_RUSTBORO_CITY_HOUSE1 (10 | (11 << 8)) +#define MAP_RUSTBORO_CITY_CUTTERS_HOUSE (11 | (11 << 8)) +#define MAP_RUSTBORO_CITY_HOUSE2 (12 | (11 << 8)) +#define MAP_RUSTBORO_CITY_FLAT2_1F (13 | (11 << 8)) +#define MAP_RUSTBORO_CITY_FLAT2_2F (14 | (11 << 8)) +#define MAP_RUSTBORO_CITY_FLAT2_3F (15 | (11 << 8)) +#define MAP_RUSTBORO_CITY_HOUSE3 (16 | (11 << 8)) + +// Map Group 12 +#define MAP_FORTREE_CITY_HOUSE1 (0 | (12 << 8)) +#define MAP_FORTREE_CITY_GYM (1 | (12 << 8)) +#define MAP_FORTREE_CITY_POKEMON_CENTER_1F (2 | (12 << 8)) +#define MAP_FORTREE_CITY_POKEMON_CENTER_2F (3 | (12 << 8)) +#define MAP_FORTREE_CITY_MART (4 | (12 << 8)) +#define MAP_FORTREE_CITY_HOUSE2 (5 | (12 << 8)) +#define MAP_FORTREE_CITY_HOUSE3 (6 | (12 << 8)) +#define MAP_FORTREE_CITY_HOUSE4 (7 | (12 << 8)) +#define MAP_FORTREE_CITY_HOUSE5 (8 | (12 << 8)) +#define MAP_FORTREE_CITY_DECORATION_SHOP (9 | (12 << 8)) + +// Map Group 13 +#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F (0 | (13 << 8)) +#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F (1 | (13 << 8)) +#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F (2 | (13 << 8)) +#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F (3 | (13 << 8)) +#define MAP_LILYCOVE_CITY_CONTEST_LOBBY (4 | (13 << 8)) +#define MAP_LILYCOVE_CITY_CONTEST_HALL (5 | (13 << 8)) +#define MAP_LILYCOVE_CITY_POKEMON_CENTER_1F (6 | (13 << 8)) +#define MAP_LILYCOVE_CITY_POKEMON_CENTER_2F (7 | (13 << 8)) +#define MAP_LILYCOVE_CITY_UNUSED_MART (8 | (13 << 8)) +#define MAP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB (9 | (13 << 8)) +#define MAP_LILYCOVE_CITY_HARBOR (10 | (13 << 8)) +#define MAP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE (11 | (13 << 8)) +#define MAP_LILYCOVE_CITY_HOUSE1 (12 | (13 << 8)) +#define MAP_LILYCOVE_CITY_HOUSE2 (13 | (13 << 8)) +#define MAP_LILYCOVE_CITY_HOUSE3 (14 | (13 << 8)) +#define MAP_LILYCOVE_CITY_HOUSE4 (15 | (13 << 8)) +#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_1F (16 | (13 << 8)) +#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_2F (17 | (13 << 8)) +#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_3F (18 | (13 << 8)) +#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_4F (19 | (13 << 8)) +#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_5F (20 | (13 << 8)) +#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP (21 | (13 << 8)) +#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR (22 | (13 << 8)) + +// Map Group 14 +#define MAP_MOSSDEEP_CITY_GYM (0 | (14 << 8)) +#define MAP_MOSSDEEP_CITY_HOUSE1 (1 | (14 << 8)) +#define MAP_MOSSDEEP_CITY_HOUSE2 (2 | (14 << 8)) +#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F (3 | (14 << 8)) +#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_2F (4 | (14 << 8)) +#define MAP_MOSSDEEP_CITY_MART (5 | (14 << 8)) +#define MAP_MOSSDEEP_CITY_HOUSE3 (6 | (14 << 8)) +#define MAP_MOSSDEEP_CITY_STEVENS_HOUSE (7 | (14 << 8)) +#define MAP_MOSSDEEP_CITY_HOUSE4 (8 | (14 << 8)) +#define MAP_MOSSDEEP_CITY_SPACE_CENTER_1F (9 | (14 << 8)) +#define MAP_MOSSDEEP_CITY_SPACE_CENTER_2F (10 | (14 << 8)) +#define MAP_MOSSDEEP_CITY_GAME_CORNER_1F (11 | (14 << 8)) +#define MAP_MOSSDEEP_CITY_GAME_CORNER_B1F (12 | (14 << 8)) + +// Map Group 15 +#define MAP_SOOTOPOLIS_CITY_GYM_1F (0 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_GYM_B1F (1 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F (2 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F (3 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_MART (4 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_HOUSE1 (5 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_HOUSE2 (6 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_HOUSE3 (7 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_HOUSE4 (8 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_HOUSE5 (9 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_HOUSE6 (10 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_HOUSE7 (11 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_LOTAD_AND_SEEDOT_HOUSE (12 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F (13 | (15 << 8)) +#define MAP_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_B1F (14 | (15 << 8)) + +// Map Group 16 +#define MAP_EVER_GRANDE_CITY_SIDNEYS_ROOM (0 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_PHOEBES_ROOM (1 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_GLACIAS_ROOM (2 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_DRAKES_ROOM (3 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_CHAMPIONS_ROOM (4 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_HALL1 (5 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_HALL2 (6 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_HALL3 (7 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_HALL4 (8 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_HALL5 (9 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F (10 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_HALL_OF_FAME (11 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F (12 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_2F (13 | (16 << 8)) +#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F (14 | (16 << 8)) + +// Map Group 17 +#define MAP_ROUTE104_MR_BRINEYS_HOUSE (0 | (17 << 8)) +#define MAP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP (1 | (17 << 8)) + +// Map Group 18 +#define MAP_ROUTE111_WINSTRATE_FAMILYS_HOUSE (0 | (18 << 8)) +#define MAP_ROUTE111_OLD_LADYS_REST_STOP (1 | (18 << 8)) + +// Map Group 19 +#define MAP_ROUTE112_CABLE_CAR_STATION (0 | (19 << 8)) +#define MAP_MT_CHIMNEY_CABLE_CAR_STATION (1 | (19 << 8)) + +// Map Group 20 +#define MAP_ROUTE114_FOSSIL_MANIACS_HOUSE (0 | (20 << 8)) +#define MAP_ROUTE114_FOSSIL_MANIACS_TUNNEL (1 | (20 << 8)) +#define MAP_ROUTE114_LANETTES_HOUSE (2 | (20 << 8)) + +// Map Group 21 +#define MAP_ROUTE116_TUNNELERS_REST_HOUSE (0 | (21 << 8)) + +// Map Group 22 +#define MAP_ROUTE117_POKEMON_DAY_CARE (0 | (22 << 8)) + +// Map Group 23 +#define MAP_ROUTE121_SAFARI_ZONE_ENTRANCE (0 | (23 << 8)) + +// Map Group 24 +#define MAP_METEOR_FALLS_1F_1R (0 | (24 << 8)) +#define MAP_METEOR_FALLS_1F_2R (1 | (24 << 8)) +#define MAP_METEOR_FALLS_B1F_1R (2 | (24 << 8)) +#define MAP_METEOR_FALLS_B1F_2R (3 | (24 << 8)) +#define MAP_RUSTURF_TUNNEL (4 | (24 << 8)) +#define MAP_UNDERWATER_SOOTOPOLIS_CITY (5 | (24 << 8)) +#define MAP_DESERT_RUINS (6 | (24 << 8)) +#define MAP_GRANITE_CAVE_1F (7 | (24 << 8)) +#define MAP_GRANITE_CAVE_B1F (8 | (24 << 8)) +#define MAP_GRANITE_CAVE_B2F (9 | (24 << 8)) +#define MAP_GRANITE_CAVE_STEVENS_ROOM (10 | (24 << 8)) +#define MAP_PETALBURG_WOODS (11 | (24 << 8)) +#define MAP_MT_CHIMNEY (12 | (24 << 8)) +#define MAP_JAGGED_PASS (13 | (24 << 8)) +#define MAP_FIERY_PATH (14 | (24 << 8)) +#define MAP_MT_PYRE_1F (15 | (24 << 8)) +#define MAP_MT_PYRE_2F (16 | (24 << 8)) +#define MAP_MT_PYRE_3F (17 | (24 << 8)) +#define MAP_MT_PYRE_4F (18 | (24 << 8)) +#define MAP_MT_PYRE_5F (19 | (24 << 8)) +#define MAP_MT_PYRE_6F (20 | (24 << 8)) +#define MAP_MT_PYRE_EXTERIOR (21 | (24 << 8)) +#define MAP_MT_PYRE_SUMMIT (22 | (24 << 8)) +#define MAP_AQUA_HIDEOUT_1F (23 | (24 << 8)) +#define MAP_AQUA_HIDEOUT_B1F (24 | (24 << 8)) +#define MAP_AQUA_HIDEOUT_B2F (25 | (24 << 8)) +#define MAP_UNDERWATER_SEAFLOOR_CAVERN (26 | (24 << 8)) +#define MAP_SEAFLOOR_CAVERN_ENTRANCE (27 | (24 << 8)) +#define MAP_SEAFLOOR_CAVERN_ROOM1 (28 | (24 << 8)) +#define MAP_SEAFLOOR_CAVERN_ROOM2 (29 | (24 << 8)) +#define MAP_SEAFLOOR_CAVERN_ROOM3 (30 | (24 << 8)) +#define MAP_SEAFLOOR_CAVERN_ROOM4 (31 | (24 << 8)) +#define MAP_SEAFLOOR_CAVERN_ROOM5 (32 | (24 << 8)) +#define MAP_SEAFLOOR_CAVERN_ROOM6 (33 | (24 << 8)) +#define MAP_SEAFLOOR_CAVERN_ROOM7 (34 | (24 << 8)) +#define MAP_SEAFLOOR_CAVERN_ROOM8 (35 | (24 << 8)) +#define MAP_SEAFLOOR_CAVERN_ROOM9 (36 | (24 << 8)) +#define MAP_CAVE_OF_ORIGIN_ENTRANCE (37 | (24 << 8)) +#define MAP_CAVE_OF_ORIGIN_1F (38 | (24 << 8)) +#define MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1 (39 | (24 << 8)) // +#define MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2 (40 | (24 << 8)) // Ruby/Sapphire leftovers +#define MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3 (41 | (24 << 8)) // +#define MAP_CAVE_OF_ORIGIN_B1F (42 | (24 << 8)) +#define MAP_VICTORY_ROAD_1F (43 | (24 << 8)) +#define MAP_VICTORY_ROAD_B1F (44 | (24 << 8)) +#define MAP_VICTORY_ROAD_B2F (45 | (24 << 8)) +#define MAP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM (46 | (24 << 8)) +#define MAP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM (47 | (24 << 8)) +#define MAP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM (48 | (24 << 8)) +#define MAP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM (49 | (24 << 8)) +#define MAP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM (50 | (24 << 8)) +#define MAP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM (51 | (24 << 8)) +#define MAP_NEW_MAUVILLE_ENTRANCE (52 | (24 << 8)) +#define MAP_NEW_MAUVILLE_INSIDE (53 | (24 << 8)) +#define MAP_ABANDONED_SHIP_DECK (54 | (24 << 8)) +#define MAP_ABANDONED_SHIP_CORRIDORS_1F (55 | (24 << 8)) +#define MAP_ABANDONED_SHIP_ROOMS_1F (56 | (24 << 8)) +#define MAP_ABANDONED_SHIP_CORRIDORS_B1F (57 | (24 << 8)) +#define MAP_ABANDONED_SHIP_ROOMS_B1F (58 | (24 << 8)) +#define MAP_ABANDONED_SHIP_ROOMS2_B1F (59 | (24 << 8)) +#define MAP_ABANDONED_SHIP_UNDERWATER1 (60 | (24 << 8)) +#define MAP_ABANDONED_SHIP_ROOM_B1F (61 | (24 << 8)) +#define MAP_ABANDONED_SHIP_ROOMS2_1F (62 | (24 << 8)) +#define MAP_ABANDONED_SHIP_CAPTAINS_OFFICE (63 | (24 << 8)) +#define MAP_ABANDONED_SHIP_UNDERWATER2 (64 | (24 << 8)) +#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS (65 | (24 << 8)) +#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS (66 | (24 << 8)) +#define MAP_ISLAND_CAVE (67 | (24 << 8)) +#define MAP_ANCIENT_TOMB (68 | (24 << 8)) +#define MAP_UNDERWATER_ROUTE134 (69 | (24 << 8)) +#define MAP_UNDERWATER_SEALED_CHAMBER (70 | (24 << 8)) +#define MAP_SEALED_CHAMBER_OUTER_ROOM (71 | (24 << 8)) +#define MAP_SEALED_CHAMBER_INNER_ROOM (72 | (24 << 8)) +#define MAP_SCORCHED_SLAB (73 | (24 << 8)) +#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_1F (74 | (24 << 8)) // +#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_B1F (75 | (24 << 8)) // Ruby/Sapphire leftovers +#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_B2F (76 | (24 << 8)) // +#define MAP_SKY_PILLAR_ENTRANCE (77 | (24 << 8)) +#define MAP_SKY_PILLAR_OUTSIDE (78 | (24 << 8)) +#define MAP_SKY_PILLAR_1F (79 | (24 << 8)) +#define MAP_SKY_PILLAR_2F (80 | (24 << 8)) +#define MAP_SKY_PILLAR_3F (81 | (24 << 8)) +#define MAP_SKY_PILLAR_4F (82 | (24 << 8)) +#define MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM (83 | (24 << 8)) +#define MAP_SKY_PILLAR_5F (84 | (24 << 8)) +#define MAP_SKY_PILLAR_TOP (85 | (24 << 8)) +#define MAP_MAGMA_HIDEOUT_1F (86 | (24 << 8)) +#define MAP_MAGMA_HIDEOUT_2F_1R (87 | (24 << 8)) +#define MAP_MAGMA_HIDEOUT_2F_2R (88 | (24 << 8)) +#define MAP_MAGMA_HIDEOUT_3F_1R (89 | (24 << 8)) +#define MAP_MAGMA_HIDEOUT_3F_2R (90 | (24 << 8)) +#define MAP_MAGMA_HIDEOUT_4F (91 | (24 << 8)) +#define MAP_MAGMA_HIDEOUT_3F_3R (92 | (24 << 8)) +#define MAP_MAGMA_HIDEOUT_2F_3R (93 | (24 << 8)) +#define MAP_MIRAGE_TOWER_1F (94 | (24 << 8)) +#define MAP_MIRAGE_TOWER_2F (95 | (24 << 8)) +#define MAP_MIRAGE_TOWER_3F (96 | (24 << 8)) +#define MAP_MIRAGE_TOWER_4F (97 | (24 << 8)) +#define MAP_DESERT_UNDERPASS (98 | (24 << 8)) +#define MAP_ARTISAN_CAVE_B1F (99 | (24 << 8)) +#define MAP_ARTISAN_CAVE_1F (100 | (24 << 8)) +#define MAP_UNDERWATER_MARINE_CAVE (101 | (24 << 8)) +#define MAP_MARINE_CAVE_ENTRANCE (102 | (24 << 8)) +#define MAP_MARINE_CAVE_END (103 | (24 << 8)) +#define MAP_TERRA_CAVE_ENTRANCE (104 | (24 << 8)) +#define MAP_TERRA_CAVE_END (105 | (24 << 8)) +#define MAP_ALTERING_CAVE (106 | (24 << 8)) +#define MAP_METEOR_FALLS_STEVENS_CAVE (107 | (24 << 8)) + +// Map Group 25 +#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8)) +#define MAP_SECRET_BASE_BROWN_CAVE1 (1 | (25 << 8)) +#define MAP_SECRET_BASE_BLUE_CAVE1 (2 | (25 << 8)) +#define MAP_SECRET_BASE_YELLOW_CAVE1 (3 | (25 << 8)) +#define MAP_SECRET_BASE_TREE1 (4 | (25 << 8)) +#define MAP_SECRET_BASE_SHRUB1 (5 | (25 << 8)) +#define MAP_SECRET_BASE_RED_CAVE2 (6 | (25 << 8)) +#define MAP_SECRET_BASE_BROWN_CAVE2 (7 | (25 << 8)) +#define MAP_SECRET_BASE_BLUE_CAVE2 (8 | (25 << 8)) +#define MAP_SECRET_BASE_YELLOW_CAVE2 (9 | (25 << 8)) +#define MAP_SECRET_BASE_TREE2 (10 | (25 << 8)) +#define MAP_SECRET_BASE_SHRUB2 (11 | (25 << 8)) +#define MAP_SECRET_BASE_RED_CAVE3 (12 | (25 << 8)) +#define MAP_SECRET_BASE_BROWN_CAVE3 (13 | (25 << 8)) +#define MAP_SECRET_BASE_BLUE_CAVE3 (14 | (25 << 8)) +#define MAP_SECRET_BASE_YELLOW_CAVE3 (15 | (25 << 8)) +#define MAP_SECRET_BASE_TREE3 (16 | (25 << 8)) +#define MAP_SECRET_BASE_SHRUB3 (17 | (25 << 8)) +#define MAP_SECRET_BASE_RED_CAVE4 (18 | (25 << 8)) +#define MAP_SECRET_BASE_BROWN_CAVE4 (19 | (25 << 8)) +#define MAP_SECRET_BASE_BLUE_CAVE4 (20 | (25 << 8)) +#define MAP_SECRET_BASE_YELLOW_CAVE4 (21 | (25 << 8)) +#define MAP_SECRET_BASE_TREE4 (22 | (25 << 8)) +#define MAP_SECRET_BASE_SHRUB4 (23 | (25 << 8)) +#define MAP_SINGLE_BATTLE_COLOSSEUM (24 | (25 << 8)) +#define MAP_TRADE_CENTER (25 | (25 << 8)) +#define MAP_RECORD_CORNER (26 | (25 << 8)) +#define MAP_DOUBLE_BATTLE_COLOSSEUM (27 | (25 << 8)) +#define MAP_LINK_CONTEST_ROOM1 (28 | (25 << 8)) +#define MAP_UNKNOWN_MAP_25_29 (29 | (25 << 8)) +#define MAP_UNKNOWN_MAP_25_30 (30 | (25 << 8)) +#define MAP_UNKNOWN_MAP_25_31 (31 | (25 << 8)) +#define MAP_UNKNOWN_MAP_25_32 (32 | (25 << 8)) +#define MAP_UNKNOWN_MAP_25_33 (33 | (25 << 8)) +#define MAP_UNKNOWN_MAP_25_34 (34 | (25 << 8)) +#define MAP_LINK_CONTEST_ROOM2 (35 | (25 << 8)) +#define MAP_LINK_CONTEST_ROOM3 (36 | (25 << 8)) +#define MAP_LINK_CONTEST_ROOM4 (37 | (25 << 8)) +#define MAP_LINK_CONTEST_ROOM5 (38 | (25 << 8)) +#define MAP_LINK_CONTEST_ROOM6 (39 | (25 << 8)) +#define MAP_INSIDE_OF_TRUCK (40 | (25 << 8)) +#define MAP_SS_TIDAL_CORRIDOR (41 | (25 << 8)) +#define MAP_SS_TIDAL_LOWER_DECK (42 | (25 << 8)) +#define MAP_SS_TIDAL_ROOMS (43 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE01 (44 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE02 (45 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE03 (46 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE04 (47 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE05 (48 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE06 (49 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE07 (50 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE08 (51 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE09 (52 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE10 (53 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE11 (54 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE12 (55 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE13 (56 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE14 (57 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE15 (58 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE16 (59 | (25 << 8)) +#define MAP_UNION_ROOM (60 | (25 << 8)) + +// Map Group 26 +#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8)) +#define MAP_SAFARI_ZONE_NORTH (1 | (26 << 8)) +#define MAP_SAFARI_ZONE_SOUTHWEST (2 | (26 << 8)) +#define MAP_SAFARI_ZONE_SOUTH (3 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_OUTSIDE_WEST (4 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY (5 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR (6 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR (7 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM (8 | (26 << 8)) +#define MAP_SOUTHERN_ISLAND_EXTERIOR (9 | (26 << 8)) +#define MAP_SOUTHERN_ISLAND_INTERIOR (10 | (26 << 8)) +#define MAP_SAFARI_ZONE_REST_HOUSE (11 | (26 << 8)) +#define MAP_SAFARI_ZONE_NORTHEAST (12 | (26 << 8)) +#define MAP_SAFARI_ZONE_SOUTHEAST (13 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_OUTSIDE_EAST (14 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM (15 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 (16 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2 (17 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY (18 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR (19 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM (20 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM (21 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY (22 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR (23 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM (24 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY (25 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE (26 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP (27 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY (28 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR (29 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM (30 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY (31 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM (32 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM (33 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY (34 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR (35 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM (36 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM1 (37 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM2 (38 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3 (39 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_RANKING_HALL (40 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE1 (41 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_POINT_EXCHANGE_SERVICE_CORNER (42 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE2 (43 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE3 (44 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE4 (45 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_SCOTTS_HOUSE (46 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE5 (47 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE6 (48 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE7 (49 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_RECEPTION_GATE (50 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE8 (51 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE9 (52 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F (53 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_2F (54 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_MART (55 | (26 << 8)) +#define MAP_FARAWAY_ISLAND_ENTRANCE (56 | (26 << 8)) +#define MAP_FARAWAY_ISLAND_INTERIOR (57 | (26 << 8)) +#define MAP_BIRTH_ISLAND_EXTERIOR (58 | (26 << 8)) +#define MAP_BIRTH_ISLAND_HARBOR (59 | (26 << 8)) +#define MAP_TRAINER_HILL_ENTRANCE (60 | (26 << 8)) +#define MAP_TRAINER_HILL_1F (61 | (26 << 8)) +#define MAP_TRAINER_HILL_2F (62 | (26 << 8)) +#define MAP_TRAINER_HILL_3F (63 | (26 << 8)) +#define MAP_TRAINER_HILL_4F (64 | (26 << 8)) +#define MAP_TRAINER_HILL_ROOF (65 | (26 << 8)) +#define MAP_NAVEL_ROCK_EXTERIOR (66 | (26 << 8)) +#define MAP_NAVEL_ROCK_HARBOR (67 | (26 << 8)) +#define MAP_NAVEL_ROCK_ENTRANCE (68 | (26 << 8)) +#define MAP_NAVEL_ROCK_B1F (69 | (26 << 8)) +#define MAP_NAVEL_ROCK_FORK (70 | (26 << 8)) +#define MAP_NAVEL_ROCK_UP1 (71 | (26 << 8)) +#define MAP_NAVEL_ROCK_UP2 (72 | (26 << 8)) +#define MAP_NAVEL_ROCK_UP3 (73 | (26 << 8)) +#define MAP_NAVEL_ROCK_UP4 (74 | (26 << 8)) +#define MAP_NAVEL_ROCK_TOP (75 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN01 (76 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN02 (77 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN03 (78 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN04 (79 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN05 (80 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN06 (81 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN07 (82 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN08 (83 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN09 (84 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN10 (85 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN11 (86 | (26 << 8)) +#define MAP_NAVEL_ROCK_BOTTOM (87 | (26 << 8)) +#define MAP_TRAINER_HILL_ELEVATOR (88 | (26 << 8)) + +// Map Group 27 +#define MAP_ROUTE104_PROTOTYPE (0 | (27 << 8)) +#define MAP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP (1 | (27 << 8)) + +// Map Group 28 +#define MAP_ROUTE109_SEASHORE_HOUSE (0 | (28 << 8)) + +// Map Group 29 +#define MAP_ROUTE110_TRICK_HOUSE_ENTRANCE (0 | (29 << 8)) +#define MAP_ROUTE110_TRICK_HOUSE_END (1 | (29 << 8)) +#define MAP_ROUTE110_TRICK_HOUSE_CORRIDOR (2 | (29 << 8)) +#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE1 (3 | (29 << 8)) +#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE2 (4 | (29 << 8)) +#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE3 (5 | (29 << 8)) +#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE4 (6 | (29 << 8)) +#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE5 (7 | (29 << 8)) +#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE6 (8 | (29 << 8)) +#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE7 (9 | (29 << 8)) +#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE8 (10 | (29 << 8)) +#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE (11 | (29 << 8)) +#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE (12 | (29 << 8)) + +// Map Group 30 +#define MAP_ROUTE113_GLASS_WORKSHOP (0 | (30 << 8)) + +// Map Group 31 +#define MAP_ROUTE123_BERRY_MASTERS_HOUSE (0 | (31 << 8)) + +// Map Group 32 +#define MAP_ROUTE119_WEATHER_INSTITUTE_1F (0 | (32 << 8)) +#define MAP_ROUTE119_WEATHER_INSTITUTE_2F (1 | (32 << 8)) +#define MAP_ROUTE119_HOUSE (2 | (32 << 8)) + +// Map Group 33 +#define MAP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE (0 | (33 << 8)) + + +#define MAP_NONE (0x7F | (0x7F << 8)) +#define MAP_UNDEFINED (0xFF | (0xFF << 8)) + + +#define MAP_GROUP(map) (MAP_##map >> 8) +#define MAP_NUM(map) (MAP_##map & 0xFF) + +#endif // GUARD_CONSTANTS_MAPS_H diff --git a/include/constants/mauville_man.h b/include/constants/mauville_man.h new file mode 100644 index 000000000..b00e3a291 --- /dev/null +++ b/include/constants/mauville_man.h @@ -0,0 +1,10 @@ +#ifndef GUARD_CONSTANTS_MAUVILLE_MAN_H +#define GUARD_CONSTANTS_MAUVILLE_MAN_H + +#define MAUVILLE_MAN_BARD 0 +#define MAUVILLE_MAN_HIPSTER 1 +#define MAUVILLE_MAN_TRADER 2 +#define MAUVILLE_MAN_STORYTELLER 3 +#define MAUVILLE_MAN_GIDDY 4 + +#endif // GUARD_CONSTANTS_MAUVILLE_MAN_H diff --git a/include/constants/moves.h b/include/constants/moves.h new file mode 100644 index 000000000..85c02e3da --- /dev/null +++ b/include/constants/moves.h @@ -0,0 +1,362 @@ +#ifndef GUARD_CONSTANTS_MOVES_H +#define GUARD_CONSTANTS_MOVES_H + +#define MOVE_NONE 0 +#define MOVE_POUND 1 +#define MOVE_KARATE_CHOP 2 +#define MOVE_DOUBLE_SLAP 3 +#define MOVE_COMET_PUNCH 4 +#define MOVE_MEGA_PUNCH 5 +#define MOVE_PAY_DAY 6 +#define MOVE_FIRE_PUNCH 7 +#define MOVE_ICE_PUNCH 8 +#define MOVE_THUNDER_PUNCH 9 +#define MOVE_SCRATCH 10 +#define MOVE_VICE_GRIP 11 +#define MOVE_GUILLOTINE 12 +#define MOVE_RAZOR_WIND 13 +#define MOVE_SWORDS_DANCE 14 +#define MOVE_CUT 15 +#define MOVE_GUST 16 +#define MOVE_WING_ATTACK 17 +#define MOVE_WHIRLWIND 18 +#define MOVE_FLY 19 +#define MOVE_BIND 20 +#define MOVE_SLAM 21 +#define MOVE_VINE_WHIP 22 +#define MOVE_STOMP 23 +#define MOVE_DOUBLE_KICK 24 +#define MOVE_MEGA_KICK 25 +#define MOVE_JUMP_KICK 26 +#define MOVE_ROLLING_KICK 27 +#define MOVE_SAND_ATTACK 28 +#define MOVE_HEADBUTT 29 +#define MOVE_HORN_ATTACK 30 +#define MOVE_FURY_ATTACK 31 +#define MOVE_HORN_DRILL 32 +#define MOVE_TACKLE 33 +#define MOVE_BODY_SLAM 34 +#define MOVE_WRAP 35 +#define MOVE_TAKE_DOWN 36 +#define MOVE_THRASH 37 +#define MOVE_DOUBLE_EDGE 38 +#define MOVE_TAIL_WHIP 39 +#define MOVE_POISON_STING 40 +#define MOVE_TWINEEDLE 41 +#define MOVE_PIN_MISSILE 42 +#define MOVE_LEER 43 +#define MOVE_BITE 44 +#define MOVE_GROWL 45 +#define MOVE_ROAR 46 +#define MOVE_SING 47 +#define MOVE_SUPERSONIC 48 +#define MOVE_SONIC_BOOM 49 +#define MOVE_DISABLE 50 +#define MOVE_ACID 51 +#define MOVE_EMBER 52 +#define MOVE_FLAMETHROWER 53 +#define MOVE_MIST 54 +#define MOVE_WATER_GUN 55 +#define MOVE_HYDRO_PUMP 56 +#define MOVE_SURF 57 +#define MOVE_ICE_BEAM 58 +#define MOVE_BLIZZARD 59 +#define MOVE_PSYBEAM 60 +#define MOVE_BUBBLE_BEAM 61 +#define MOVE_AURORA_BEAM 62 +#define MOVE_HYPER_BEAM 63 +#define MOVE_PECK 64 +#define MOVE_DRILL_PECK 65 +#define MOVE_SUBMISSION 66 +#define MOVE_LOW_KICK 67 +#define MOVE_COUNTER 68 +#define MOVE_SEISMIC_TOSS 69 +#define MOVE_STRENGTH 70 +#define MOVE_ABSORB 71 +#define MOVE_MEGA_DRAIN 72 +#define MOVE_LEECH_SEED 73 +#define MOVE_GROWTH 74 +#define MOVE_RAZOR_LEAF 75 +#define MOVE_SOLAR_BEAM 76 +#define MOVE_POISON_POWDER 77 +#define MOVE_STUN_SPORE 78 +#define MOVE_SLEEP_POWDER 79 +#define MOVE_PETAL_DANCE 80 +#define MOVE_STRING_SHOT 81 +#define MOVE_DRAGON_RAGE 82 +#define MOVE_FIRE_SPIN 83 +#define MOVE_THUNDER_SHOCK 84 +#define MOVE_THUNDERBOLT 85 +#define MOVE_THUNDER_WAVE 86 +#define MOVE_THUNDER 87 +#define MOVE_ROCK_THROW 88 +#define MOVE_EARTHQUAKE 89 +#define MOVE_FISSURE 90 +#define MOVE_DIG 91 +#define MOVE_TOXIC 92 +#define MOVE_CONFUSION 93 +#define MOVE_PSYCHIC 94 +#define MOVE_HYPNOSIS 95 +#define MOVE_MEDITATE 96 +#define MOVE_AGILITY 97 +#define MOVE_QUICK_ATTACK 98 +#define MOVE_RAGE 99 +#define MOVE_TELEPORT 100 +#define MOVE_NIGHT_SHADE 101 +#define MOVE_MIMIC 102 +#define MOVE_SCREECH 103 +#define MOVE_DOUBLE_TEAM 104 +#define MOVE_RECOVER 105 +#define MOVE_HARDEN 106 +#define MOVE_MINIMIZE 107 +#define MOVE_SMOKESCREEN 108 +#define MOVE_CONFUSE_RAY 109 +#define MOVE_WITHDRAW 110 +#define MOVE_DEFENSE_CURL 111 +#define MOVE_BARRIER 112 +#define MOVE_LIGHT_SCREEN 113 +#define MOVE_HAZE 114 +#define MOVE_REFLECT 115 +#define MOVE_FOCUS_ENERGY 116 +#define MOVE_BIDE 117 +#define MOVE_METRONOME 118 +#define MOVE_MIRROR_MOVE 119 +#define MOVE_SELF_DESTRUCT 120 +#define MOVE_EGG_BOMB 121 +#define MOVE_LICK 122 +#define MOVE_SMOG 123 +#define MOVE_SLUDGE 124 +#define MOVE_BONE_CLUB 125 +#define MOVE_FIRE_BLAST 126 +#define MOVE_WATERFALL 127 +#define MOVE_CLAMP 128 +#define MOVE_SWIFT 129 +#define MOVE_SKULL_BASH 130 +#define MOVE_SPIKE_CANNON 131 +#define MOVE_CONSTRICT 132 +#define MOVE_AMNESIA 133 +#define MOVE_KINESIS 134 +#define MOVE_SOFT_BOILED 135 +#define MOVE_HI_JUMP_KICK 136 +#define MOVE_GLARE 137 +#define MOVE_DREAM_EATER 138 +#define MOVE_POISON_GAS 139 +#define MOVE_BARRAGE 140 +#define MOVE_LEECH_LIFE 141 +#define MOVE_LOVELY_KISS 142 +#define MOVE_SKY_ATTACK 143 +#define MOVE_TRANSFORM 144 +#define MOVE_BUBBLE 145 +#define MOVE_DIZZY_PUNCH 146 +#define MOVE_SPORE 147 +#define MOVE_FLASH 148 +#define MOVE_PSYWAVE 149 +#define MOVE_SPLASH 150 +#define MOVE_ACID_ARMOR 151 +#define MOVE_CRABHAMMER 152 +#define MOVE_EXPLOSION 153 +#define MOVE_FURY_SWIPES 154 +#define MOVE_BONEMERANG 155 +#define MOVE_REST 156 +#define MOVE_ROCK_SLIDE 157 +#define MOVE_HYPER_FANG 158 +#define MOVE_SHARPEN 159 +#define MOVE_CONVERSION 160 +#define MOVE_TRI_ATTACK 161 +#define MOVE_SUPER_FANG 162 +#define MOVE_SLASH 163 +#define MOVE_SUBSTITUTE 164 +#define MOVE_STRUGGLE 165 +#define MOVE_SKETCH 166 +#define MOVE_TRIPLE_KICK 167 +#define MOVE_THIEF 168 +#define MOVE_SPIDER_WEB 169 +#define MOVE_MIND_READER 170 +#define MOVE_NIGHTMARE 171 +#define MOVE_FLAME_WHEEL 172 +#define MOVE_SNORE 173 +#define MOVE_CURSE 174 +#define MOVE_FLAIL 175 +#define MOVE_CONVERSION_2 176 +#define MOVE_AEROBLAST 177 +#define MOVE_COTTON_SPORE 178 +#define MOVE_REVERSAL 179 +#define MOVE_SPITE 180 +#define MOVE_POWDER_SNOW 181 +#define MOVE_PROTECT 182 +#define MOVE_MACH_PUNCH 183 +#define MOVE_SCARY_FACE 184 +#define MOVE_FAINT_ATTACK 185 +#define MOVE_SWEET_KISS 186 +#define MOVE_BELLY_DRUM 187 +#define MOVE_SLUDGE_BOMB 188 +#define MOVE_MUD_SLAP 189 +#define MOVE_OCTAZOOKA 190 +#define MOVE_SPIKES 191 +#define MOVE_ZAP_CANNON 192 +#define MOVE_FORESIGHT 193 +#define MOVE_DESTINY_BOND 194 +#define MOVE_PERISH_SONG 195 +#define MOVE_ICY_WIND 196 +#define MOVE_DETECT 197 +#define MOVE_BONE_RUSH 198 +#define MOVE_LOCK_ON 199 +#define MOVE_OUTRAGE 200 +#define MOVE_SANDSTORM 201 +#define MOVE_GIGA_DRAIN 202 +#define MOVE_ENDURE 203 +#define MOVE_CHARM 204 +#define MOVE_ROLLOUT 205 +#define MOVE_FALSE_SWIPE 206 +#define MOVE_SWAGGER 207 +#define MOVE_MILK_DRINK 208 +#define MOVE_SPARK 209 +#define MOVE_FURY_CUTTER 210 +#define MOVE_STEEL_WING 211 +#define MOVE_MEAN_LOOK 212 +#define MOVE_ATTRACT 213 +#define MOVE_SLEEP_TALK 214 +#define MOVE_HEAL_BELL 215 +#define MOVE_RETURN 216 +#define MOVE_PRESENT 217 +#define MOVE_FRUSTRATION 218 +#define MOVE_SAFEGUARD 219 +#define MOVE_PAIN_SPLIT 220 +#define MOVE_SACRED_FIRE 221 +#define MOVE_MAGNITUDE 222 +#define MOVE_DYNAMIC_PUNCH 223 +#define MOVE_MEGAHORN 224 +#define MOVE_DRAGON_BREATH 225 +#define MOVE_BATON_PASS 226 +#define MOVE_ENCORE 227 +#define MOVE_PURSUIT 228 +#define MOVE_RAPID_SPIN 229 +#define MOVE_SWEET_SCENT 230 +#define MOVE_IRON_TAIL 231 +#define MOVE_METAL_CLAW 232 +#define MOVE_VITAL_THROW 233 +#define MOVE_MORNING_SUN 234 +#define MOVE_SYNTHESIS 235 +#define MOVE_MOONLIGHT 236 +#define MOVE_HIDDEN_POWER 237 +#define MOVE_CROSS_CHOP 238 +#define MOVE_TWISTER 239 +#define MOVE_RAIN_DANCE 240 +#define MOVE_SUNNY_DAY 241 +#define MOVE_CRUNCH 242 +#define MOVE_MIRROR_COAT 243 +#define MOVE_PSYCH_UP 244 +#define MOVE_EXTREME_SPEED 245 +#define MOVE_ANCIENT_POWER 246 +#define MOVE_SHADOW_BALL 247 +#define MOVE_FUTURE_SIGHT 248 +#define MOVE_ROCK_SMASH 249 +#define MOVE_WHIRLPOOL 250 +#define MOVE_BEAT_UP 251 +#define MOVE_FAKE_OUT 252 +#define MOVE_UPROAR 253 +#define MOVE_STOCKPILE 254 +#define MOVE_SPIT_UP 255 +#define MOVE_SWALLOW 256 +#define MOVE_HEAT_WAVE 257 +#define MOVE_HAIL 258 +#define MOVE_TORMENT 259 +#define MOVE_FLATTER 260 +#define MOVE_WILL_O_WISP 261 +#define MOVE_MEMENTO 262 +#define MOVE_FACADE 263 +#define MOVE_FOCUS_PUNCH 264 +#define MOVE_SMELLING_SALT 265 +#define MOVE_FOLLOW_ME 266 +#define MOVE_NATURE_POWER 267 +#define MOVE_CHARGE 268 +#define MOVE_TAUNT 269 +#define MOVE_HELPING_HAND 270 +#define MOVE_TRICK 271 +#define MOVE_ROLE_PLAY 272 +#define MOVE_WISH 273 +#define MOVE_ASSIST 274 +#define MOVE_INGRAIN 275 +#define MOVE_SUPERPOWER 276 +#define MOVE_MAGIC_COAT 277 +#define MOVE_RECYCLE 278 +#define MOVE_REVENGE 279 +#define MOVE_BRICK_BREAK 280 +#define MOVE_YAWN 281 +#define MOVE_KNOCK_OFF 282 +#define MOVE_ENDEAVOR 283 +#define MOVE_ERUPTION 284 +#define MOVE_SKILL_SWAP 285 +#define MOVE_IMPRISON 286 +#define MOVE_REFRESH 287 +#define MOVE_GRUDGE 288 +#define MOVE_SNATCH 289 +#define MOVE_SECRET_POWER 290 +#define MOVE_DIVE 291 +#define MOVE_ARM_THRUST 292 +#define MOVE_CAMOUFLAGE 293 +#define MOVE_TAIL_GLOW 294 +#define MOVE_LUSTER_PURGE 295 +#define MOVE_MIST_BALL 296 +#define MOVE_FEATHER_DANCE 297 +#define MOVE_TEETER_DANCE 298 +#define MOVE_BLAZE_KICK 299 +#define MOVE_MUD_SPORT 300 +#define MOVE_ICE_BALL 301 +#define MOVE_NEEDLE_ARM 302 +#define MOVE_SLACK_OFF 303 +#define MOVE_HYPER_VOICE 304 +#define MOVE_POISON_FANG 305 +#define MOVE_CRUSH_CLAW 306 +#define MOVE_BLAST_BURN 307 +#define MOVE_HYDRO_CANNON 308 +#define MOVE_METEOR_MASH 309 +#define MOVE_ASTONISH 310 +#define MOVE_WEATHER_BALL 311 +#define MOVE_AROMATHERAPY 312 +#define MOVE_FAKE_TEARS 313 +#define MOVE_AIR_CUTTER 314 +#define MOVE_OVERHEAT 315 +#define MOVE_ODOR_SLEUTH 316 +#define MOVE_ROCK_TOMB 317 +#define MOVE_SILVER_WIND 318 +#define MOVE_METAL_SOUND 319 +#define MOVE_GRASS_WHISTLE 320 +#define MOVE_TICKLE 321 +#define MOVE_COSMIC_POWER 322 +#define MOVE_WATER_SPOUT 323 +#define MOVE_SIGNAL_BEAM 324 +#define MOVE_SHADOW_PUNCH 325 +#define MOVE_EXTRASENSORY 326 +#define MOVE_SKY_UPPERCUT 327 +#define MOVE_SAND_TOMB 328 +#define MOVE_SHEER_COLD 329 +#define MOVE_MUDDY_WATER 330 +#define MOVE_BULLET_SEED 331 +#define MOVE_AERIAL_ACE 332 +#define MOVE_ICICLE_SPEAR 333 +#define MOVE_IRON_DEFENSE 334 +#define MOVE_BLOCK 335 +#define MOVE_HOWL 336 +#define MOVE_DRAGON_CLAW 337 +#define MOVE_FRENZY_PLANT 338 +#define MOVE_BULK_UP 339 +#define MOVE_BOUNCE 340 +#define MOVE_MUD_SHOT 341 +#define MOVE_POISON_TAIL 342 +#define MOVE_COVET 343 +#define MOVE_VOLT_TACKLE 344 +#define MOVE_MAGICAL_LEAF 345 +#define MOVE_WATER_SPORT 346 +#define MOVE_CALM_MIND 347 +#define MOVE_LEAF_BLADE 348 +#define MOVE_DRAGON_DANCE 349 +#define MOVE_ROCK_BLAST 350 +#define MOVE_SHOCK_WAVE 351 +#define MOVE_WATER_PULSE 352 +#define MOVE_DOOM_DESIRE 353 +#define MOVE_PSYCHO_BOOST 354 + +#define MOVES_COUNT 355 + +#endif // GUARD_CONSTANTS_MOVES_H diff --git a/include/constants/opponents.h b/include/constants/opponents.h new file mode 100644 index 000000000..9f74baf67 --- /dev/null +++ b/include/constants/opponents.h @@ -0,0 +1,862 @@ +#ifndef GUARD_CONSTANTS_OPPONENTS_H +#define GUARD_CONSTANTS_OPPONENTS_H + +#define TRAINER_NONE 0 +#define TRAINER_SAWYER_1 1 +#define TRAINER_GRUNT_1 2 +#define TRAINER_GRUNT_2 3 +#define TRAINER_GRUNT_3 4 +#define TRAINER_GRUNT_4 5 +#define TRAINER_GRUNT_5 6 +#define TRAINER_GRUNT_6 7 +#define TRAINER_GRUNT_7 8 +#define TRAINER_GABRIELLE_1 9 +#define TRAINER_GRUNT_8 10 +#define TRAINER_MARCEL 11 +#define TRAINER_ALBERTO 12 +#define TRAINER_ED 13 +#define TRAINER_GRUNT_9 14 +#define TRAINER_DECLAN 15 +#define TRAINER_GRUNT_10 16 +#define TRAINER_GRUNT_11 17 +#define TRAINER_GRUNT_12 18 +#define TRAINER_GRUNT_13 19 +#define TRAINER_GRUNT_14 20 +#define TRAINER_GRUNT_15 21 +#define TRAINER_GRUNT_16 22 +#define TRAINER_GRUNT_17 23 +#define TRAINER_GRUNT_18 24 +#define TRAINER_GRUNT_19 25 +#define TRAINER_GRUNT_20 26 +#define TRAINER_GRUNT_21 27 +#define TRAINER_GRUNT_22 28 +#define TRAINER_FREDRICK 29 +#define TRAINER_MATT 30 +#define TRAINER_ZANDER 31 +#define TRAINER_SHELLY_1 32 +#define TRAINER_SHELLY_2 33 +#define TRAINER_ARCHIE 34 +#define TRAINER_LEAH 35 +#define TRAINER_DAISY 36 +#define TRAINER_ROSE_1 37 +#define TRAINER_FELIX 38 +#define TRAINER_VIOLET 39 +#define TRAINER_ROSE_2 40 +#define TRAINER_ROSE_3 41 +#define TRAINER_ROSE_4 42 +#define TRAINER_ROSE_5 43 +#define TRAINER_DUSTY_1 44 +#define TRAINER_CHIP 45 +#define TRAINER_FOSTER 46 +#define TRAINER_DUSTY_2 47 +#define TRAINER_DUSTY_3 48 +#define TRAINER_DUSTY_4 49 +#define TRAINER_DUSTY_5 50 +#define TRAINER_GABBY_AND_TY_1 51 +#define TRAINER_GABBY_AND_TY_2 52 +#define TRAINER_GABBY_AND_TY_3 53 +#define TRAINER_GABBY_AND_TY_4 54 +#define TRAINER_GABBY_AND_TY_5 55 +#define TRAINER_GABBY_AND_TY_6 56 +#define TRAINER_LOLA_1 57 +#define TRAINER_AUSTINA 58 +#define TRAINER_GWEN 59 +#define TRAINER_LOLA_2 60 +#define TRAINER_LOLA_3 61 +#define TRAINER_LOLA_4 62 +#define TRAINER_LOLA_5 63 +#define TRAINER_RICKY_1 64 +#define TRAINER_SIMON 65 +#define TRAINER_CHARLIE 66 +#define TRAINER_RICKY_2 67 +#define TRAINER_RICKY_3 68 +#define TRAINER_RICKY_4 69 +#define TRAINER_RICKY_5 70 +#define TRAINER_RANDALL 71 +#define TRAINER_PARKER 72 +#define TRAINER_GEORGE 73 +#define TRAINER_BERKE 74 +#define TRAINER_BRAXTON 75 +#define TRAINER_VINCENT 76 +#define TRAINER_LEROY 77 +#define TRAINER_WILTON_1 78 +#define TRAINER_EDGAR 79 +#define TRAINER_ALBERT 80 +#define TRAINER_SAMUEL 81 +#define TRAINER_VITO 82 +#define TRAINER_OWEN 83 +#define TRAINER_WILTON_2 84 +#define TRAINER_WILTON_3 85 +#define TRAINER_WILTON_4 86 +#define TRAINER_WILTON_5 87 +#define TRAINER_WARREN 88 +#define TRAINER_MARY 89 +#define TRAINER_ALEXIA 90 +#define TRAINER_JODY 91 +#define TRAINER_WENDY 92 +#define TRAINER_KEIRA 93 +#define TRAINER_BROOKE_1 94 +#define TRAINER_JENNIFER 95 +#define TRAINER_HOPE 96 +#define TRAINER_SHANNON 97 +#define TRAINER_MICHELLE 98 +#define TRAINER_CAROLINE 99 +#define TRAINER_JULIE 100 +#define TRAINER_BROOKE_2 101 +#define TRAINER_BROOKE_3 102 +#define TRAINER_BROOKE_4 103 +#define TRAINER_BROOKE_5 104 +#define TRAINER_PATRICIA 105 +#define TRAINER_KINDRA 106 +#define TRAINER_TAMMY 107 +#define TRAINER_VALERIE_1 108 +#define TRAINER_TASHA 109 +#define TRAINER_VALERIE_2 110 +#define TRAINER_VALERIE_3 111 +#define TRAINER_VALERIE_4 112 +#define TRAINER_VALERIE_5 113 +#define TRAINER_CINDY_1 114 +#define TRAINER_DAPHNE 115 +#define TRAINER_GRUNT_23 116 +#define TRAINER_CINDY_2 117 +#define TRAINER_BRIANNA 118 +#define TRAINER_NAOMI 119 +#define TRAINER_CINDY_3 120 +#define TRAINER_CINDY_4 121 +#define TRAINER_CINDY_5 122 +#define TRAINER_CINDY_6 123 +#define TRAINER_MELISSA 124 +#define TRAINER_SHEILA 125 +#define TRAINER_SHIRLEY 126 +#define TRAINER_JESSICA_1 127 +#define TRAINER_CONNIE 128 +#define TRAINER_BRIDGET 129 +#define TRAINER_OLIVIA 130 +#define TRAINER_TIFFANY 131 +#define TRAINER_JESSICA_2 132 +#define TRAINER_JESSICA_3 133 +#define TRAINER_JESSICA_4 134 +#define TRAINER_JESSICA_5 135 +#define TRAINER_WINSTON_1 136 +#define TRAINER_MOLLIE 137 +#define TRAINER_GARRET 138 +#define TRAINER_WINSTON_2 139 +#define TRAINER_WINSTON_3 140 +#define TRAINER_WINSTON_4 141 +#define TRAINER_WINSTON_5 142 +#define TRAINER_STEVE_1 143 +#define TRAINER_THALIA_1 144 +#define TRAINER_MARK 145 +#define TRAINER_GRUNT_24 146 +#define TRAINER_STEVE_2 147 +#define TRAINER_STEVE_3 148 +#define TRAINER_STEVE_4 149 +#define TRAINER_STEVE_5 150 +#define TRAINER_LUIS 151 +#define TRAINER_DOMINIK 152 +#define TRAINER_DOUGLAS 153 +#define TRAINER_DARRIN 154 +#define TRAINER_TONY_1 155 +#define TRAINER_JEROME 156 +#define TRAINER_MATTHEW 157 +#define TRAINER_DAVID 158 +#define TRAINER_SPENCER 159 +#define TRAINER_ROLAND 160 +#define TRAINER_NOLEN 161 +#define TRAINER_STAN 162 +#define TRAINER_BARRY 163 +#define TRAINER_DEAN 164 +#define TRAINER_RODNEY 165 +#define TRAINER_RICHARD 166 +#define TRAINER_HERMAN 167 +#define TRAINER_SANTIAGO 168 +#define TRAINER_GILBERT 169 +#define TRAINER_FRANKLIN 170 +#define TRAINER_KEVIN 171 +#define TRAINER_JACK 172 +#define TRAINER_DUDLEY 173 +#define TRAINER_CHAD 174 +#define TRAINER_TONY_2 175 +#define TRAINER_TONY_3 176 +#define TRAINER_TONY_4 177 +#define TRAINER_TONY_5 178 +#define TRAINER_TAKAO 179 +#define TRAINER_HITOSHI 180 +#define TRAINER_KIYO 181 +#define TRAINER_KOICHI 182 +#define TRAINER_NOB_1 183 +#define TRAINER_NOB_2 184 +#define TRAINER_NOB_3 185 +#define TRAINER_NOB_4 186 +#define TRAINER_NOB_5 187 +#define TRAINER_YUJI 188 +#define TRAINER_DAISUKE 189 +#define TRAINER_ATSUSHI 190 +#define TRAINER_KIRK 191 +#define TRAINER_GRUNT_25 192 +#define TRAINER_GRUNT_26 193 +#define TRAINER_SHAWN 194 +#define TRAINER_FERNANDO_1 195 +#define TRAINER_DALTON_1 196 +#define TRAINER_DALTON_2 197 +#define TRAINER_DALTON_3 198 +#define TRAINER_DALTON_4 199 +#define TRAINER_DALTON_5 200 +#define TRAINER_COLE 201 +#define TRAINER_JEFF 202 +#define TRAINER_AXLE 203 +#define TRAINER_JACE 204 +#define TRAINER_KEEGAN 205 +#define TRAINER_BERNIE_1 206 +#define TRAINER_BERNIE_2 207 +#define TRAINER_BERNIE_3 208 +#define TRAINER_BERNIE_4 209 +#define TRAINER_BERNIE_5 210 +#define TRAINER_DREW 211 +#define TRAINER_BEAU 212 +#define TRAINER_LARRY 213 +#define TRAINER_SHANE 214 +#define TRAINER_JUSTIN 215 +#define TRAINER_ETHAN_1 216 +#define TRAINER_AUTUMN 217 +#define TRAINER_TRAVIS 218 +#define TRAINER_ETHAN_2 219 +#define TRAINER_ETHAN_3 220 +#define TRAINER_ETHAN_4 221 +#define TRAINER_ETHAN_5 222 +#define TRAINER_BRENT 223 +#define TRAINER_DONALD 224 +#define TRAINER_TAYLOR 225 +#define TRAINER_JEFFREY_1 226 +#define TRAINER_DEREK 227 +#define TRAINER_JEFFREY_2 228 +#define TRAINER_JEFFREY_3 229 +#define TRAINER_JEFFREY_4 230 +#define TRAINER_JEFFREY_5 231 +#define TRAINER_EDWARD 232 +#define TRAINER_PRESTON 233 +#define TRAINER_VIRGIL 234 +#define TRAINER_BLAKE 235 +#define TRAINER_WILLIAM 236 +#define TRAINER_JOSHUA 237 +#define TRAINER_CAMERON_1 238 +#define TRAINER_CAMERON_2 239 +#define TRAINER_CAMERON_3 240 +#define TRAINER_CAMERON_4 241 +#define TRAINER_CAMERON_5 242 +#define TRAINER_JACLYN 243 +#define TRAINER_HANNAH 244 +#define TRAINER_SAMANTHA 245 +#define TRAINER_MAURA 246 +#define TRAINER_KAYLA 247 +#define TRAINER_ALEXIS 248 +#define TRAINER_JACKI_1 249 +#define TRAINER_JACKI_2 250 +#define TRAINER_JACKI_3 251 +#define TRAINER_JACKI_4 252 +#define TRAINER_JACKI_5 253 +#define TRAINER_WALTER_1 254 +#define TRAINER_MICAH 255 +#define TRAINER_THOMAS 256 +#define TRAINER_WALTER_2 257 +#define TRAINER_WALTER_3 258 +#define TRAINER_WALTER_4 259 +#define TRAINER_WALTER_5 260 +#define TRAINER_SIDNEY 261 +#define TRAINER_PHOEBE 262 +#define TRAINER_GLACIA 263 +#define TRAINER_DRAKE 264 +#define TRAINER_ROXANNE_1 265 +#define TRAINER_BRAWLY_1 266 +#define TRAINER_WATTSON_1 267 +#define TRAINER_FLANNERY_1 268 +#define TRAINER_NORMAN_1 269 +#define TRAINER_WINONA_1 270 +#define TRAINER_TATE_AND_LIZA_1 271 +#define TRAINER_JUAN_1 272 +#define TRAINER_JERRY_1 273 +#define TRAINER_TED 274 +#define TRAINER_PAUL 275 +#define TRAINER_JERRY_2 276 +#define TRAINER_JERRY_3 277 +#define TRAINER_JERRY_4 278 +#define TRAINER_JERRY_5 279 +#define TRAINER_KAREN_1 280 +#define TRAINER_GEORGIA 281 +#define TRAINER_KAREN_2 282 +#define TRAINER_KAREN_3 283 +#define TRAINER_KAREN_4 284 +#define TRAINER_KAREN_5 285 +#define TRAINER_KATE_AND_JOY 286 +#define TRAINER_ANNA_AND_MEG_1 287 +#define TRAINER_ANNA_AND_MEG_2 288 +#define TRAINER_ANNA_AND_MEG_3 289 +#define TRAINER_ANNA_AND_MEG_4 290 +#define TRAINER_ANNA_AND_MEG_5 291 +#define TRAINER_VICTOR 292 +#define TRAINER_MIGUEL_1 293 +#define TRAINER_COLTON 294 +#define TRAINER_MIGUEL_2 295 +#define TRAINER_MIGUEL_3 296 +#define TRAINER_MIGUEL_4 297 +#define TRAINER_MIGUEL_5 298 +#define TRAINER_VICTORIA 299 +#define TRAINER_VANESSA 300 +#define TRAINER_BETHANY 301 +#define TRAINER_ISABEL_1 302 +#define TRAINER_ISABEL_2 303 +#define TRAINER_ISABEL_3 304 +#define TRAINER_ISABEL_4 305 +#define TRAINER_ISABEL_5 306 +#define TRAINER_TIMOTHY_1 307 +#define TRAINER_TIMOTHY_2 308 +#define TRAINER_TIMOTHY_3 309 +#define TRAINER_TIMOTHY_4 310 +#define TRAINER_TIMOTHY_5 311 +#define TRAINER_VICKY 312 +#define TRAINER_SHELBY_1 313 +#define TRAINER_SHELBY_2 314 +#define TRAINER_SHELBY_3 315 +#define TRAINER_SHELBY_4 316 +#define TRAINER_SHELBY_5 317 +#define TRAINER_CALVIN_1 318 +#define TRAINER_BILLY 319 +#define TRAINER_JOSH 320 +#define TRAINER_TOMMY 321 +#define TRAINER_JOEY 322 +#define TRAINER_BEN 323 +#define TRAINER_QUINCY 324 +#define TRAINER_KATELYNN 325 +#define TRAINER_JAYLEN 326 +#define TRAINER_DILLON 327 +#define TRAINER_CALVIN_2 328 +#define TRAINER_CALVIN_3 329 +#define TRAINER_CALVIN_4 330 +#define TRAINER_CALVIN_5 331 +#define TRAINER_EDDIE 332 +#define TRAINER_ALLEN 333 +#define TRAINER_TIMMY 334 +#define TRAINER_WALLACE 335 +#define TRAINER_ANDREW 336 +#define TRAINER_IVAN 337 +#define TRAINER_CLAUDE 338 +#define TRAINER_ELLIOT_1 339 +#define TRAINER_NED 340 +#define TRAINER_DALE 341 +#define TRAINER_NOLAN 342 +#define TRAINER_BARNY 343 +#define TRAINER_WADE 344 +#define TRAINER_CARTER 345 +#define TRAINER_ELLIOT_2 346 +#define TRAINER_ELLIOT_3 347 +#define TRAINER_ELLIOT_4 348 +#define TRAINER_ELLIOT_5 349 +#define TRAINER_RONALD 350 +#define TRAINER_JACOB 351 +#define TRAINER_ANTHONY 352 +#define TRAINER_BENJAMIN_1 353 +#define TRAINER_BENJAMIN_2 354 +#define TRAINER_BENJAMIN_3 355 +#define TRAINER_BENJAMIN_4 356 +#define TRAINER_BENJAMIN_5 357 +#define TRAINER_ABIGAIL_1 358 +#define TRAINER_JASMINE 359 +#define TRAINER_ABIGAIL_2 360 +#define TRAINER_ABIGAIL_3 361 +#define TRAINER_ABIGAIL_4 362 +#define TRAINER_ABIGAIL_5 363 +#define TRAINER_DYLAN_1 364 +#define TRAINER_DYLAN_2 365 +#define TRAINER_DYLAN_3 366 +#define TRAINER_DYLAN_4 367 +#define TRAINER_DYLAN_5 368 +#define TRAINER_MARIA_1 369 +#define TRAINER_MARIA_2 370 +#define TRAINER_MARIA_3 371 +#define TRAINER_MARIA_4 372 +#define TRAINER_MARIA_5 373 +#define TRAINER_CAMDEN 374 +#define TRAINER_DEMETRIUS 375 +#define TRAINER_ISAIAH_1 376 +#define TRAINER_PABLO_1 377 +#define TRAINER_CHASE 378 +#define TRAINER_ISAIAH_2 379 +#define TRAINER_ISAIAH_3 380 +#define TRAINER_ISAIAH_4 381 +#define TRAINER_ISAIAH_5 382 +#define TRAINER_ISOBEL 383 +#define TRAINER_DONNY 384 +#define TRAINER_TALIA 385 +#define TRAINER_KATELYN_1 386 +#define TRAINER_ALLISON 387 +#define TRAINER_KATELYN_2 388 +#define TRAINER_KATELYN_3 389 +#define TRAINER_KATELYN_4 390 +#define TRAINER_KATELYN_5 391 +#define TRAINER_NICOLAS_1 392 +#define TRAINER_NICOLAS_2 393 +#define TRAINER_NICOLAS_3 394 +#define TRAINER_NICOLAS_4 395 +#define TRAINER_NICOLAS_5 396 +#define TRAINER_AARON 397 +#define TRAINER_PERRY 398 +#define TRAINER_HUGH 399 +#define TRAINER_PHIL 400 +#define TRAINER_JARED 401 +#define TRAINER_HUMBERTO 402 +#define TRAINER_PRESLEY 403 +#define TRAINER_EDWARDO 404 +#define TRAINER_COLIN 405 +#define TRAINER_ROBERT_1 406 +#define TRAINER_BENNY 407 +#define TRAINER_CHESTER 408 +#define TRAINER_ROBERT_2 409 +#define TRAINER_ROBERT_3 410 +#define TRAINER_ROBERT_4 411 +#define TRAINER_ROBERT_5 412 +#define TRAINER_ALEX 413 +#define TRAINER_BECK 414 +#define TRAINER_YASU 415 +#define TRAINER_TAKASHI 416 +#define TRAINER_DIANNE 417 +#define TRAINER_JANI 418 +#define TRAINER_LAO_1 419 +#define TRAINER_LUNG 420 +#define TRAINER_LAO_2 421 +#define TRAINER_LAO_3 422 +#define TRAINER_LAO_4 423 +#define TRAINER_LAO_5 424 +#define TRAINER_JOCELYN 425 +#define TRAINER_LAURA 426 +#define TRAINER_CYNDY_1 427 +#define TRAINER_CORA 428 +#define TRAINER_PAULA 429 +#define TRAINER_CYNDY_2 430 +#define TRAINER_CYNDY_3 431 +#define TRAINER_CYNDY_4 432 +#define TRAINER_CYNDY_5 433 +#define TRAINER_MADELINE_1 434 +#define TRAINER_CLARISSA 435 +#define TRAINER_ANGELICA 436 +#define TRAINER_MADELINE_2 437 +#define TRAINER_MADELINE_3 438 +#define TRAINER_MADELINE_4 439 +#define TRAINER_MADELINE_5 440 +#define TRAINER_BEVERLY 441 +#define TRAINER_IMANI 442 +#define TRAINER_KYLA 443 +#define TRAINER_DENISE 444 +#define TRAINER_BETH 445 +#define TRAINER_TARA 446 +#define TRAINER_MISSY 447 +#define TRAINER_ALICE 448 +#define TRAINER_JENNY_1 449 +#define TRAINER_GRACE 450 +#define TRAINER_TANYA 451 +#define TRAINER_SHARON 452 +#define TRAINER_NIKKI 453 +#define TRAINER_BRENDA 454 +#define TRAINER_KATIE 455 +#define TRAINER_SUSIE 456 +#define TRAINER_KARA 457 +#define TRAINER_DANA 458 +#define TRAINER_SIENNA 459 +#define TRAINER_DEBRA 460 +#define TRAINER_LINDA 461 +#define TRAINER_KAYLEE 462 +#define TRAINER_LAUREL 463 +#define TRAINER_CARLEE 464 +#define TRAINER_JENNY_2 465 +#define TRAINER_JENNY_3 466 +#define TRAINER_JENNY_4 467 +#define TRAINER_JENNY_5 468 +#define TRAINER_HEIDI 469 +#define TRAINER_BECKY 470 +#define TRAINER_CAROL 471 +#define TRAINER_NANCY 472 +#define TRAINER_MARTHA 473 +#define TRAINER_DIANA_1 474 +#define TRAINER_CEDRIC 475 +#define TRAINER_IRENE 476 +#define TRAINER_DIANA_2 477 +#define TRAINER_DIANA_3 478 +#define TRAINER_DIANA_4 479 +#define TRAINER_DIANA_5 480 +#define TRAINER_AMY_AND_LIV_1 481 +#define TRAINER_AMY_AND_LIV_2 482 +#define TRAINER_GINA_AND_MIA_1 483 +#define TRAINER_MIU_AND_YUKI 484 +#define TRAINER_AMY_AND_LIV_3 485 +#define TRAINER_GINA_AND_MIA_2 486 +#define TRAINER_AMY_AND_LIV_4 487 +#define TRAINER_AMY_AND_LIV_5 488 +#define TRAINER_AMY_AND_LIV_6 489 +#define TRAINER_HUEY 490 +#define TRAINER_EDMOND 491 +#define TRAINER_ERNEST_1 492 +#define TRAINER_DWAYNE 493 +#define TRAINER_PHILLIP 494 +#define TRAINER_LEONARD 495 +#define TRAINER_DUNCAN 496 +#define TRAINER_ERNEST_2 497 +#define TRAINER_ERNEST_3 498 +#define TRAINER_ERNEST_4 499 +#define TRAINER_ERNEST_5 500 +#define TRAINER_ELI 501 +#define TRAINER_ANNIKA 502 +#define TRAINER_JAZMYN 503 +#define TRAINER_JONAS 504 +#define TRAINER_KAYLEY 505 +#define TRAINER_AURON 506 +#define TRAINER_KELVIN 507 +#define TRAINER_MARLEY 508 +#define TRAINER_REYNA 509 +#define TRAINER_HUDSON 510 +#define TRAINER_CONOR 511 +#define TRAINER_EDWIN_1 512 +#define TRAINER_HECTOR 513 +#define TRAINER_TABITHA_1 514 +#define TRAINER_EDWIN_2 515 +#define TRAINER_EDWIN_3 516 +#define TRAINER_EDWIN_4 517 +#define TRAINER_EDWIN_5 518 +#define TRAINER_WALLY_1 519 +#define TRAINER_BRENDAN_1 520 +#define TRAINER_BRENDAN_2 521 +#define TRAINER_BRENDAN_3 522 +#define TRAINER_BRENDAN_4 523 +#define TRAINER_BRENDAN_5 524 +#define TRAINER_BRENDAN_6 525 +#define TRAINER_BRENDAN_7 526 +#define TRAINER_BRENDAN_8 527 +#define TRAINER_BRENDAN_9 528 +#define TRAINER_MAY_1 529 +#define TRAINER_MAY_2 530 +#define TRAINER_MAY_3 531 +#define TRAINER_MAY_4 532 +#define TRAINER_MAY_5 533 +#define TRAINER_MAY_6 534 +#define TRAINER_MAY_7 535 +#define TRAINER_MAY_8 536 +#define TRAINER_MAY_9 537 +#define TRAINER_ISAAC_1 538 +#define TRAINER_DAVIS 539 +#define TRAINER_MITCHELL 540 +#define TRAINER_ISAAC_2 541 +#define TRAINER_ISAAC_3 542 +#define TRAINER_ISAAC_4 543 +#define TRAINER_ISAAC_5 544 +#define TRAINER_LYDIA_1 545 +#define TRAINER_HALLE 546 +#define TRAINER_GARRISON 547 +#define TRAINER_LYDIA_2 548 +#define TRAINER_LYDIA_3 549 +#define TRAINER_LYDIA_4 550 +#define TRAINER_LYDIA_5 551 +#define TRAINER_JACKSON_1 552 +#define TRAINER_LORENZO 553 +#define TRAINER_SEBASTIAN 554 +#define TRAINER_JACKSON_2 555 +#define TRAINER_JACKSON_3 556 +#define TRAINER_JACKSON_4 557 +#define TRAINER_JACKSON_5 558 +#define TRAINER_CATHERINE_1 559 +#define TRAINER_JENNA 560 +#define TRAINER_SOPHIA 561 +#define TRAINER_CATHERINE_2 562 +#define TRAINER_CATHERINE_3 563 +#define TRAINER_CATHERINE_4 564 +#define TRAINER_CATHERINE_5 565 +#define TRAINER_JULIO 566 +#define TRAINER_GRUNT_27 567 +#define TRAINER_GRUNT_28 568 +#define TRAINER_GRUNT_29 569 +#define TRAINER_GRUNT_30 570 +#define TRAINER_MARC 571 +#define TRAINER_BRENDEN 572 +#define TRAINER_LILITH 573 +#define TRAINER_CRISTIAN 574 +#define TRAINER_SYLVIA 575 +#define TRAINER_LEONARDO 576 +#define TRAINER_ATHENA 577 +#define TRAINER_HARRISON 578 +#define TRAINER_GRUNT_31 579 +#define TRAINER_CLARENCE 580 +#define TRAINER_TERRY 581 +#define TRAINER_NATE 582 +#define TRAINER_KATHLEEN 583 +#define TRAINER_CLIFFORD 584 +#define TRAINER_NICHOLAS 585 +#define TRAINER_GRUNT_32 586 +#define TRAINER_GRUNT_33 587 +#define TRAINER_GRUNT_34 588 +#define TRAINER_GRUNT_35 589 +#define TRAINER_GRUNT_36 590 +#define TRAINER_MACEY 591 +#define TRAINER_BRENDAN_10 592 +#define TRAINER_BRENDAN_11 593 +#define TRAINER_PAXTON 594 +#define TRAINER_ISABELLA 595 +#define TRAINER_GRUNT_37 596 +#define TRAINER_TABITHA_2 597 +#define TRAINER_JONATHAN 598 +#define TRAINER_BRENDAN_12 599 +#define TRAINER_MAY_10 600 +#define TRAINER_MAXIE_1 601 +#define TRAINER_MAXIE_2 602 +#define TRAINER_TIANA 603 +#define TRAINER_HALEY_1 604 +#define TRAINER_JANICE 605 +#define TRAINER_VIVI 606 +#define TRAINER_HALEY_2 607 +#define TRAINER_HALEY_3 608 +#define TRAINER_HALEY_4 609 +#define TRAINER_HALEY_5 610 +#define TRAINER_SALLY 611 +#define TRAINER_ROBIN 612 +#define TRAINER_ANDREA 613 +#define TRAINER_CRISSY 614 +#define TRAINER_RICK 615 +#define TRAINER_LYLE 616 +#define TRAINER_JOSE 617 +#define TRAINER_DOUG 618 +#define TRAINER_GREG 619 +#define TRAINER_KENT 620 +#define TRAINER_JAMES_1 621 +#define TRAINER_JAMES_2 622 +#define TRAINER_JAMES_3 623 +#define TRAINER_JAMES_4 624 +#define TRAINER_JAMES_5 625 +#define TRAINER_BRICE 626 +#define TRAINER_TRENT_1 627 +#define TRAINER_LENNY 628 +#define TRAINER_LUCAS_1 629 +#define TRAINER_ALAN 630 +#define TRAINER_CLARK 631 +#define TRAINER_ERIC 632 +#define TRAINER_LUCAS_2 633 +#define TRAINER_MIKE_1 634 +#define TRAINER_MIKE_2 635 +#define TRAINER_TRENT_2 636 +#define TRAINER_TRENT_3 637 +#define TRAINER_TRENT_4 638 +#define TRAINER_TRENT_5 639 +#define TRAINER_DEZ_AND_LUKE 640 +#define TRAINER_LEA_AND_JED 641 +#define TRAINER_KIRA_AND_DAN_1 642 +#define TRAINER_KIRA_AND_DAN_2 643 +#define TRAINER_KIRA_AND_DAN_3 644 +#define TRAINER_KIRA_AND_DAN_4 645 +#define TRAINER_KIRA_AND_DAN_5 646 +#define TRAINER_JOHANNA 647 +#define TRAINER_GERALD 648 +#define TRAINER_VIVIAN 649 +#define TRAINER_DANIELLE 650 +#define TRAINER_HIDEO 651 +#define TRAINER_KEIGO 652 +#define TRAINER_RILEY 653 +#define TRAINER_FLINT 654 +#define TRAINER_ASHLEY 655 +#define TRAINER_WALLY_2 656 +#define TRAINER_WALLY_3 657 +#define TRAINER_WALLY_4 658 +#define TRAINER_WALLY_5 659 +#define TRAINER_WALLY_6 660 +#define TRAINER_BRENDAN_13 661 +#define TRAINER_BRENDAN_14 662 +#define TRAINER_BRENDAN_15 663 +#define TRAINER_MAY_11 664 +#define TRAINER_MAY_12 665 +#define TRAINER_MAY_13 666 +#define TRAINER_JONAH 667 +#define TRAINER_HENRY 668 +#define TRAINER_ROGER 669 +#define TRAINER_ALEXA 670 +#define TRAINER_RUBEN 671 +#define TRAINER_KOJI_1 672 +#define TRAINER_WAYNE 673 +#define TRAINER_AIDAN 674 +#define TRAINER_REED 675 +#define TRAINER_TISHA 676 +#define TRAINER_TORI_AND_TIA 677 +#define TRAINER_KIM_AND_IRIS 678 +#define TRAINER_TYRA_AND_IVY 679 +#define TRAINER_MEL_AND_PAUL 680 +#define TRAINER_JOHN_AND_JAY_1 681 +#define TRAINER_JOHN_AND_JAY_2 682 +#define TRAINER_JOHN_AND_JAY_3 683 +#define TRAINER_JOHN_AND_JAY_4 684 +#define TRAINER_JOHN_AND_JAY_5 685 +#define TRAINER_RELI_AND_IAN 686 +#define TRAINER_LILA_AND_ROY_1 687 +#define TRAINER_LILA_AND_ROY_2 688 +#define TRAINER_LILA_AND_ROY_3 689 +#define TRAINER_LILA_AND_ROY_4 690 +#define TRAINER_LILA_AND_ROY_5 691 +#define TRAINER_LISA_AND_RAY 692 +#define TRAINER_CHRIS 693 +#define TRAINER_DAWSON 694 +#define TRAINER_SARAH 695 +#define TRAINER_DARIAN 696 +#define TRAINER_HAILEY 697 +#define TRAINER_CHANDLER 698 +#define TRAINER_KALEB 699 +#define TRAINER_JOSEPH 700 +#define TRAINER_ALYSSA 701 +#define TRAINER_MARCOS 702 +#define TRAINER_RHETT 703 +#define TRAINER_TYRON 704 +#define TRAINER_CELINA 705 +#define TRAINER_BIANCA 706 +#define TRAINER_HAYDEN 707 +#define TRAINER_SOPHIE 708 +#define TRAINER_COBY 709 +#define TRAINER_LAWRENCE 710 +#define TRAINER_WYATT 711 +#define TRAINER_ANGELINA 712 +#define TRAINER_KAI 713 +#define TRAINER_CHARLOTTE 714 +#define TRAINER_DEANDRE 715 +#define TRAINER_GRUNT_38 716 +#define TRAINER_GRUNT_39 717 +#define TRAINER_GRUNT_40 718 +#define TRAINER_GRUNT_41 719 +#define TRAINER_GRUNT_42 720 +#define TRAINER_GRUNT_43 721 +#define TRAINER_GRUNT_44 722 +#define TRAINER_GRUNT_45 723 +#define TRAINER_GRUNT_46 724 +#define TRAINER_GRUNT_47 725 +#define TRAINER_GRUNT_48 726 +#define TRAINER_GRUNT_49 727 +#define TRAINER_GRUNT_50 728 +#define TRAINER_GRUNT_51 729 +#define TRAINER_GRUNT_52 730 +#define TRAINER_GRUNT_53 731 +#define TRAINER_TABITHA_3 732 +#define TRAINER_DARCY 733 +#define TRAINER_MAXIE_3 734 +#define TRAINER_PETE 735 +#define TRAINER_ISABELLE 736 +#define TRAINER_ANDRES_1 737 +#define TRAINER_JOSUE 738 +#define TRAINER_CAMRON 739 +#define TRAINER_CORY_1 740 +#define TRAINER_CAROLINA 741 +#define TRAINER_ELIJAH 742 +#define TRAINER_CELIA 743 +#define TRAINER_BRYAN 744 +#define TRAINER_BRANDEN 745 +#define TRAINER_BRYANT 746 +#define TRAINER_SHAYLA 747 +#define TRAINER_KYRA 748 +#define TRAINER_JAIDEN 749 +#define TRAINER_ALIX 750 +#define TRAINER_HELENE 751 +#define TRAINER_MARLENE 752 +#define TRAINER_DEVAN 753 +#define TRAINER_JOHNSON 754 +#define TRAINER_MELINA 755 +#define TRAINER_BRANDI 756 +#define TRAINER_AISHA 757 +#define TRAINER_MAKAYLA 758 +#define TRAINER_FABIAN 759 +#define TRAINER_DAYTON 760 +#define TRAINER_RACHEL 761 +#define TRAINER_LEONEL 762 +#define TRAINER_CALLIE 763 +#define TRAINER_CALE 764 +#define TRAINER_MYLES 765 +#define TRAINER_PAT 766 +#define TRAINER_CRISTIN_1 767 +#define TRAINER_MAY_14 768 +#define TRAINER_MAY_15 769 +#define TRAINER_ROXANNE_2 770 +#define TRAINER_ROXANNE_3 771 +#define TRAINER_ROXANNE_4 772 +#define TRAINER_ROXANNE_5 773 +#define TRAINER_BRAWLY_2 774 +#define TRAINER_BRAWLY_3 775 +#define TRAINER_BRAWLY_4 776 +#define TRAINER_BRAWLY_5 777 +#define TRAINER_WATTSON_2 778 +#define TRAINER_WATTSON_3 779 +#define TRAINER_WATTSON_4 780 +#define TRAINER_WATTSON_5 781 +#define TRAINER_FLANNERY_2 782 +#define TRAINER_FLANNERY_3 783 +#define TRAINER_FLANNERY_4 784 +#define TRAINER_FLANNERY_5 785 +#define TRAINER_NORMAN_2 786 +#define TRAINER_NORMAN_3 787 +#define TRAINER_NORMAN_4 788 +#define TRAINER_NORMAN_5 789 +#define TRAINER_WINONA_2 790 +#define TRAINER_WINONA_3 791 +#define TRAINER_WINONA_4 792 +#define TRAINER_WINONA_5 793 +#define TRAINER_TATE_AND_LIZA_2 794 +#define TRAINER_TATE_AND_LIZA_3 795 +#define TRAINER_TATE_AND_LIZA_4 796 +#define TRAINER_TATE_AND_LIZA_5 797 +#define TRAINER_JUAN_2 798 +#define TRAINER_JUAN_3 799 +#define TRAINER_JUAN_4 800 +#define TRAINER_JUAN_5 801 +#define TRAINER_ANGELO 802 +#define TRAINER_DARIUS 803 +#define TRAINER_STEVEN 804 +#define TRAINER_ANABEL 805 +#define TRAINER_TUCKER 806 +#define TRAINER_SPENSER 807 +#define TRAINER_GRETA 808 +#define TRAINER_NOLAND 809 +#define TRAINER_LUCY 810 +#define TRAINER_BRANDON 811 +#define TRAINER_ANDRES_2 812 +#define TRAINER_ANDRES_3 813 +#define TRAINER_ANDRES_4 814 +#define TRAINER_ANDRES_5 815 +#define TRAINER_CORY_2 816 +#define TRAINER_CORY_3 817 +#define TRAINER_CORY_4 818 +#define TRAINER_CORY_5 819 +#define TRAINER_PABLO_2 820 +#define TRAINER_PABLO_3 821 +#define TRAINER_PABLO_4 822 +#define TRAINER_PABLO_5 823 +#define TRAINER_KOJI_2 824 +#define TRAINER_KOJI_3 825 +#define TRAINER_KOJI_4 826 +#define TRAINER_KOJI_5 827 +#define TRAINER_CRISTIN_2 828 +#define TRAINER_CRISTIN_3 829 +#define TRAINER_CRISTIN_4 830 +#define TRAINER_CRISTIN_5 831 +#define TRAINER_FERNANDO_2 832 +#define TRAINER_FERNANDO_3 833 +#define TRAINER_FERNANDO_4 834 +#define TRAINER_FERNANDO_5 835 +#define TRAINER_SAWYER_2 836 +#define TRAINER_SAWYER_3 837 +#define TRAINER_SAWYER_4 838 +#define TRAINER_SAWYER_5 839 +#define TRAINER_GABRIELLE_2 840 +#define TRAINER_GABRIELLE_3 841 +#define TRAINER_GABRIELLE_4 842 +#define TRAINER_GABRIELLE_5 843 +#define TRAINER_THALIA_2 844 +#define TRAINER_THALIA_3 845 +#define TRAINER_THALIA_4 846 +#define TRAINER_THALIA_5 847 +#define TRAINER_MARIELA 848 +#define TRAINER_ALVARO 849 +#define TRAINER_EVERETT 850 +#define TRAINER_RED 851 +#define TRAINER_LEAF 852 +#define TRAINER_BRENDAN_16 853 +#define TRAINER_MAY_16 854 + +#define TRAINERS_COUNT 855 + +#endif // GUARD_CONSTANTS_OPPONENTS_H diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h new file mode 100644 index 000000000..78c1583b4 --- /dev/null +++ b/include/constants/pokemon.h @@ -0,0 +1,80 @@ +#ifndef GUARD_CONSTANTS_POKEMON_H +#define GUARD_CONSTANTS_POKEMON_H + +// Pokemon types +#define TYPE_NORMAL 0x00 +#define TYPE_FIGHTING 0x01 +#define TYPE_FLYING 0x02 +#define TYPE_POISON 0x03 +#define TYPE_GROUND 0x04 +#define TYPE_ROCK 0x05 +#define TYPE_BUG 0x06 +#define TYPE_GHOST 0x07 +#define TYPE_STEEL 0x08 +#define TYPE_MYSTERY 0x09 +#define TYPE_FIRE 0x0a +#define TYPE_WATER 0x0b +#define TYPE_GRASS 0x0c +#define TYPE_ELECTRIC 0x0d +#define TYPE_PSYCHIC 0x0e +#define TYPE_ICE 0x0f +#define TYPE_DRAGON 0x10 +#define TYPE_DARK 0x11 +#define NUMBER_OF_MON_TYPES 0x12 + +// Pokemon egg groups +#define EGG_GROUP_NONE 0 +#define EGG_GROUP_MONSTER 1 +#define EGG_GROUP_WATER_1 2 +#define EGG_GROUP_BUG 3 +#define EGG_GROUP_FLYING 4 +#define EGG_GROUP_FIELD 5 +#define EGG_GROUP_FAIRY 6 +#define EGG_GROUP_GRASS 7 +#define EGG_GROUP_HUMAN_LIKE 8 +#define EGG_GROUP_WATER_3 9 +#define EGG_GROUP_MINERAL 10 +#define EGG_GROUP_AMORPHOUS 11 +#define EGG_GROUP_WATER_2 12 +#define EGG_GROUP_DITTO 13 +#define EGG_GROUP_DRAGON 14 +#define EGG_GROUP_UNDISCOVERED 15 + +// Pokemon natures +#define NATURE_HARDY 0 +#define NATURE_LONELY 1 +#define NATURE_BRAVE 2 +#define NATURE_ADAMANT 3 +#define NATURE_NAUGHTY 4 +#define NATURE_BOLD 5 +#define NATURE_DOCILE 6 +#define NATURE_RELAXED 7 +#define NATURE_IMPISH 8 +#define NATURE_LAX 9 +#define NATURE_TIMID 10 +#define NATURE_HASTY 11 +#define NATURE_SERIOUS 12 +#define NATURE_JOLLY 13 +#define NATURE_NAIVE 14 +#define NATURE_MODEST 15 +#define NATURE_MILD 16 +#define NATURE_QUIET 17 +#define NATURE_BASHFUL 18 +#define NATURE_RASH 19 +#define NATURE_CALM 20 +#define NATURE_GENTLE 21 +#define NATURE_SASSY 22 +#define NATURE_CAREFUL 23 +#define NATURE_QUIRKY 24 + +// Pokemon Stats +#define STAT_HP 0 +#define STAT_ATK 1 +#define STAT_DEF 2 +#define STAT_SPEED 3 +#define STAT_SPATK 4 +#define STAT_SPDEF 5 +#define STAT_ACC 6 // only in battles +#define STAT_EVASION 7 // only in battles + +#endif // GUARD_CONSTANTS_POKEMON_H diff --git a/include/constants/region_map_sections.h b/include/constants/region_map_sections.h new file mode 100644 index 000000000..b9c518b1b --- /dev/null +++ b/include/constants/region_map_sections.h @@ -0,0 +1,219 @@ +#ifndef GUARD_REGIONMAPSEC_H +#define GUARD_REGIONMAPSEC_H + +#define MAPSEC_LITTLEROOT_TOWN 0x00 +#define MAPSEC_OLDALE_TOWN 0x01 +#define MAPSEC_DEWFORD_TOWN 0x02 +#define MAPSEC_LAVARIDGE_TOWN 0x03 +#define MAPSEC_FALLARBOR_TOWN 0x04 +#define MAPSEC_VERDANTURF_TOWN 0x05 +#define MAPSEC_PACIFIDLOG_TOWN 0x06 +#define MAPSEC_PETALBURG_CITY 0x07 +#define MAPSEC_SLATEPORT_CITY 0x08 +#define MAPSEC_MAUVILLE_CITY 0x09 +#define MAPSEC_RUSTBORO_CITY 0x0A +#define MAPSEC_FORTREE_CITY 0x0B +#define MAPSEC_LILYCOVE_CITY 0x0C +#define MAPSEC_MOSSDEEP_CITY 0x0D +#define MAPSEC_SOOTOPOLIS_CITY 0x0E +#define MAPSEC_EVER_GRANDE_CITY 0x0F +#define MAPSEC_ROUTE_101 0x10 +#define MAPSEC_ROUTE_102 0x11 +#define MAPSEC_ROUTE_103 0x12 +#define MAPSEC_ROUTE_104 0x13 +#define MAPSEC_ROUTE_105 0x14 +#define MAPSEC_ROUTE_106 0x15 +#define MAPSEC_ROUTE_107 0x16 +#define MAPSEC_ROUTE_108 0x17 +#define MAPSEC_ROUTE_109 0x18 +#define MAPSEC_ROUTE_110 0x19 +#define MAPSEC_ROUTE_111 0x1A +#define MAPSEC_ROUTE_112 0x1B +#define MAPSEC_ROUTE_113 0x1C +#define MAPSEC_ROUTE_114 0x1D +#define MAPSEC_ROUTE_115 0x1E +#define MAPSEC_ROUTE_116 0x1F +#define MAPSEC_ROUTE_117 0x20 +#define MAPSEC_ROUTE_118 0x21 +#define MAPSEC_ROUTE_119 0x22 +#define MAPSEC_ROUTE_120 0x23 +#define MAPSEC_ROUTE_121 0x24 +#define MAPSEC_ROUTE_122 0x25 +#define MAPSEC_ROUTE_123 0x26 +#define MAPSEC_ROUTE_124 0x27 +#define MAPSEC_ROUTE_125 0x28 +#define MAPSEC_ROUTE_126 0x29 +#define MAPSEC_ROUTE_127 0x2A +#define MAPSEC_ROUTE_128 0x2B +#define MAPSEC_ROUTE_129 0x2C +#define MAPSEC_ROUTE_130 0x2D +#define MAPSEC_ROUTE_131 0x2E +#define MAPSEC_ROUTE_132 0x2F +#define MAPSEC_ROUTE_133 0x30 +#define MAPSEC_ROUTE_134 0x31 +#define MAPSEC_UNDERWATER_124 0x32 +#define MAPSEC_UNDERWATER_125 0x33 +#define MAPSEC_UNDERWATER_126 0x34 +#define MAPSEC_UNDERWATER_127 0x35 +#define MAPSEC_UNDERWATER_SOOTOPOLIS 0x36 +#define MAPSEC_GRANITE_CAVE 0x37 +#define MAPSEC_MT_CHIMNEY 0x38 +#define MAPSEC_SAFARI_ZONE 0x39 +#define MAPSEC_BATTLE_FRONTIER 0x3A +#define MAPSEC_PETALBURG_WOODS 0x3B +#define MAPSEC_RUSTURF_TUNNEL 0x3C +#define MAPSEC_ABANDONED_SHIP 0x3D +#define MAPSEC_NEW_MAUVILLE 0x3E +#define MAPSEC_METEOR_FALLS 0x3F +#define MAPSEC_METEOR_FALLS2 0x40 +#define MAPSEC_MT_PYRE 0x41 +#define MAPSEC_AQUA_HIDEOUT_OLD 0x42 +#define MAPSEC_SHOAL_CAVE 0x43 +#define MAPSEC_SEAFLOOR_CAVERN 0x44 +#define MAPSEC_UNDERWATER_128 0x45 +#define MAPSEC_VICTORY_ROAD 0x46 +#define MAPSEC_MIRAGE_ISLAND 0x47 +#define MAPSEC_CAVE_OF_ORIGIN 0x48 +#define MAPSEC_SOUTHERN_ISLAND 0x49 +#define MAPSEC_FIERY_PATH 0x4A +#define MAPSEC_FIERY_PATH2 0x4B +#define MAPSEC_JAGGED_PASS 0x4C +#define MAPSEC_JAGGED_PASS2 0x4D +#define MAPSEC_SEALED_CHAMBER 0x4E +#define MAPSEC_UNDERWATER_SEALED_CHAMBER 0x4F +#define MAPSEC_SCORCHED_SLAB 0x50 +#define MAPSEC_ISLAND_CAVE 0x51 +#define MAPSEC_DESERT_RUINS 0x52 +#define MAPSEC_ANCIENT_TOMB 0x53 +#define MAPSEC_INSIDE_OF_TRUCK 0x54 +#define MAPSEC_SKY_PILLAR 0x55 +#define MAPSEC_SECRET_BASE 0x56 +#define MAPSEC_DYNAMIC 0x57 +#define MAPSEC_PALLET_TOWN 0x58 +#define MAPSEC_VIRIDIAN_CITY 0x59 +#define MAPSEC_PEWTER_CITY 0x5A +#define MAPSEC_CERULEAN_CITY 0x5B +#define MAPSEC_LAVENDER_TOWN 0x5C +#define MAPSEC_VERMILION_CITY 0x5D +#define MAPSEC_CELADON_CITY 0x5E +#define MAPSEC_FUCHSIA_CITY 0x5F +#define MAPSEC_CINNABAR_ISLAND 0x60 +#define MAPSEC_INDIGO_PLATEAU 0x61 +#define MAPSEC_SAFFRON_CITY 0x62 +#define MAPSEC_ROUTE_4_FLYDUP 0x63 +#define MAPSEC_ROUTE_10_FLYDUP 0x64 +#define MAPSEC_ROUTE_1 0x65 +#define MAPSEC_ROUTE_2 0x66 +#define MAPSEC_ROUTE_3 0x67 +#define MAPSEC_ROUTE_4 0x68 +#define MAPSEC_ROUTE_5 0x69 +#define MAPSEC_ROUTE_6 0x6A +#define MAPSEC_ROUTE_7 0x6B +#define MAPSEC_ROUTE_8 0x6C +#define MAPSEC_ROUTE_9 0x6D +#define MAPSEC_ROUTE_10 0x6E +#define MAPSEC_ROUTE_11 0x6F +#define MAPSEC_ROUTE_12 0x70 +#define MAPSEC_ROUTE_13 0x71 +#define MAPSEC_ROUTE_14 0x72 +#define MAPSEC_ROUTE_15 0x73 +#define MAPSEC_ROUTE_16 0x74 +#define MAPSEC_ROUTE_17 0x75 +#define MAPSEC_ROUTE_18 0x76 +#define MAPSEC_ROUTE_19 0x77 +#define MAPSEC_ROUTE_20 0x78 +#define MAPSEC_ROUTE_21 0x79 +#define MAPSEC_ROUTE_22 0x7A +#define MAPSEC_ROUTE_23 0x7B +#define MAPSEC_ROUTE_24 0x7C +#define MAPSEC_ROUTE_25 0x7D +#define MAPSEC_VIRIDIAN_FOREST 0x7E +#define MAPSEC_MT_MOON 0x7F +#define MAPSEC_S_S_ANNE 0x80 +#define MAPSEC_UNDERGROUND_PATH 0x81 +#define MAPSEC_UNDERGROUND_PATH_2 0x82 +#define MAPSEC_DIGLETTS_CAVE 0x83 +#define MAPSEC_KANTO_VICTORY_ROAD 0x84 +#define MAPSEC_ROCKET_HIDEOUT 0x85 +#define MAPSEC_SILPH_CO 0x86 +#define MAPSEC_POKEMON_MANSION 0x87 +#define MAPSEC_KANTO_SAFARI_ZONE 0x88 +#define MAPSEC_POKEMON_LEAGUE 0x89 +#define MAPSEC_ROCK_TUNNEL 0x8A +#define MAPSEC_SEAFOAM_ISLANDS 0x8B +#define MAPSEC_POKEMON_TOWER 0x8C +#define MAPSEC_CERULEAN_CAVE 0x8D +#define MAPSEC_POWER_PLANT 0x8E +#define MAPSEC_ONE_ISLAND 0x8F +#define MAPSEC_TWO_ISLAND 0x90 +#define MAPSEC_THREE_ISLAND 0x91 +#define MAPSEC_FOUR_ISLAND 0x92 +#define MAPSEC_FIVE_ISLAND 0x93 +#define MAPSEC_SEVEN_ISLAND 0x94 +#define MAPSEC_SIX_ISLAND 0x95 +#define MAPSEC_KINDLE_ROAD 0x96 +#define MAPSEC_TREASURE_BEACH 0x97 +#define MAPSEC_CAPE_BRINK 0x98 +#define MAPSEC_BOND_BRIDGE 0x99 +#define MAPSEC_THREE_ISLE_PORT 0x9A +#define MAPSEC_SEVII_ISLE_6 0x9B +#define MAPSEC_SEVII_ISLE_7 0x9C +#define MAPSEC_SEVII_ISLE_8 0x9D +#define MAPSEC_SEVII_ISLE_9 0x9E +#define MAPSEC_RESORT_GORGEOUS 0x9F +#define MAPSEC_WATER_LABYRINTH 0xA0 +#define MAPSEC_FIVE_ISLE_MEADOW 0xA1 +#define MAPSEC_MEMORIAL_PILLAR 0xA2 +#define MAPSEC_OUTCAST_ISLAND 0xA3 +#define MAPSEC_GREEN_PATH 0xA4 +#define MAPSEC_WATER_PATH 0xA5 +#define MAPSEC_RUIN_VALLEY 0xA6 +#define MAPSEC_TRAINER_TOWER 0xA7 +#define MAPSEC_CANYON_ENTRANCE 0xA8 +#define MAPSEC_SEVAULT_CANYON 0xA9 +#define MAPSEC_TANOBY_RUINS 0xAA +#define MAPSEC_SEVII_ISLE_22 0xAB +#define MAPSEC_SEVII_ISLE_23 0xAC +#define MAPSEC_SEVII_ISLE_24 0xAD +#define MAPSEC_NAVEL_ROCK 0xAE +#define MAPSEC_MT_EMBER 0xAF +#define MAPSEC_BERRY_FOREST 0xB0 +#define MAPSEC_ICEFALL_CAVE 0xB1 +#define MAPSEC_ROCKET_WAREHOUSE 0xB2 +#define MAPSEC_TRAINER_TOWER_2 0xB3 +#define MAPSEC_DOTTED_HOLE 0xB4 +#define MAPSEC_LOST_CAVE 0xB5 +#define MAPSEC_PATTERN_BUSH 0xB6 +#define MAPSEC_ALTERING_CAVE 0xB7 +#define MAPSEC_TANOBY_CHAMBERS 0xB8 +#define MAPSEC_THREE_ISLE_PATH 0xB9 +#define MAPSEC_TANOBY_KEY 0xBA +#define MAPSEC_BIRTH_ISLAND 0xBB +#define MAPSEC_MONEAN_CHAMBER 0xBC +#define MAPSEC_LIPTOO_CHAMBER 0xBD +#define MAPSEC_WEEPTH_CHAMBER 0xBE +#define MAPSEC_DILFORD_CHAMBER 0xBF +#define MAPSEC_SCUFIB_CHAMBER 0xC0 +#define MAPSEC_RIXY_CHAMBER 0xC1 +#define MAPSEC_VIAPOIS_CHAMBER 0xC2 +#define MAPSEC_EMBER_SPA 0xC3 +#define MAPSEC_SPECIAL_AREA 0xC4 +#define MAPSEC_AQUA_HIDEOUT 0xC5 +#define MAPSEC_MAGMA_HIDEOUT 0xC6 +#define MAPSEC_MIRAGE_TOWER 0xC7 +#define MAPSEC_BIRTH_ISLAND_2 0xC8 +#define MAPSEC_FARAWAY_ISLAND 0xC9 +#define MAPSEC_ARTISAN_CAVE 0xCA +#define MAPSEC_MARINE_CAVE 0xCB +#define MAPSEC_UNDERWATER_MARINE_CAVE 0xCC +#define MAPSEC_TERRA_CAVE 0xCD +#define MAPSEC_UNDERWATER_TERRA_CAVE 0xCE +#define MAPSEC_UNDERWATER_UNK1 0xCF +#define MAPSEC_UNDERWATER_129 0xD0 +#define MAPSEC_DESERT_UNDERPASS 0xD1 +#define MAPSEC_ALTERING_CAVE_2 0xD2 +#define MAPSEC_NAVEL_ROCK2 0xD3 +#define MAPSEC_TRAINER_HILL 0xD4 +#define MAPSEC_NONE 0xD5 + +#endif //GUARD_REGIONMAPSEC_H diff --git a/include/constants/rgb.h b/include/constants/rgb.h new file mode 100644 index 000000000..fd9c5c5a7 --- /dev/null +++ b/include/constants/rgb.h @@ -0,0 +1,17 @@ +#ifndef GUARD_RGB_H +#define GUARD_RGB_H + +#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) +#define _RGB(r, g, b) ((((b) & 0x1F) << 10) + (((g) & 0x1F) << 5) + ((r) & 0x1F)) + +#define RGB_BLACK RGB(0, 0, 0) +#define RGB_WHITE RGB(31, 31, 31) +#define RGB_RED RGB(31, 0, 0) +#define RGB_GREEN RGB(0, 31, 0) +#define RGB_BLUE RGB(0, 0, 31) +#define RGB_YELLOW RGB(31, 31, 0) +#define RGB_MAGENTA RGB(31, 0, 31) +#define RGB_CYAN RGB(0, 31, 31) +#define RGB_WHITEALPHA RGB_WHITE | 0x8000 + +#endif // GUARD_RGB_H diff --git a/include/constants/secret_bases.h b/include/constants/secret_bases.h new file mode 100755 index 000000000..0f51054a8 --- /dev/null +++ b/include/constants/secret_bases.h @@ -0,0 +1,110 @@ +#ifndef GUARD_CONSTANTS_SECRET_BASES_H +#define GUARD_CONSTANTS_SECRET_BASES_H + +// Each secret base location is assigned an identifier value. +// The secret base's map is determined by (id / 10). The ones +// digit is used to differentiate secret bases using the same map. +// Therefore, each secret base map can be used by up to 10 different +// secret bases in the game. These ids are 1-based, but there is no +// apparent reason for that. + +#define SECRET_BASE_RED_CAVE1_1 1 +#define SECRET_BASE_RED_CAVE1_2 2 +#define SECRET_BASE_RED_CAVE1_3 3 + +#define SECRET_BASE_RED_CAVE2_1 11 +#define SECRET_BASE_RED_CAVE2_2 12 +#define SECRET_BASE_RED_CAVE2_3 13 + +#define SECRET_BASE_RED_CAVE3_1 21 +#define SECRET_BASE_RED_CAVE3_2 22 +#define SECRET_BASE_RED_CAVE3_3 23 + +#define SECRET_BASE_RED_CAVE4_1 31 +#define SECRET_BASE_RED_CAVE4_2 32 +#define SECRET_BASE_RED_CAVE4_3 33 + +#define SECRET_BASE_BROWN_CAVE1_1 41 +#define SECRET_BASE_BROWN_CAVE1_2 42 +#define SECRET_BASE_BROWN_CAVE1_3 43 + +#define SECRET_BASE_BROWN_CAVE2_1 51 +#define SECRET_BASE_BROWN_CAVE2_2 52 +#define SECRET_BASE_BROWN_CAVE2_3 53 + +#define SECRET_BASE_BROWN_CAVE3_1 61 +#define SECRET_BASE_BROWN_CAVE3_2 62 +#define SECRET_BASE_BROWN_CAVE3_3 63 + +#define SECRET_BASE_BROWN_CAVE4_1 71 +#define SECRET_BASE_BROWN_CAVE4_2 72 +#define SECRET_BASE_BROWN_CAVE4_3 73 + +#define SECRET_BASE_BLUE_CAVE1_1 81 +#define SECRET_BASE_BLUE_CAVE1_2 82 +#define SECRET_BASE_BLUE_CAVE1_3 83 + +#define SECRET_BASE_BLUE_CAVE2_1 91 +#define SECRET_BASE_BLUE_CAVE2_2 92 +#define SECRET_BASE_BLUE_CAVE2_3 93 + +#define SECRET_BASE_BLUE_CAVE3_1 101 +#define SECRET_BASE_BLUE_CAVE3_2 102 +#define SECRET_BASE_BLUE_CAVE3_3 103 + +#define SECRET_BASE_BLUE_CAVE4_1 111 +#define SECRET_BASE_BLUE_CAVE4_2 112 +#define SECRET_BASE_BLUE_CAVE4_3 113 + +#define SECRET_BASE_YELLOW_CAVE1_1 121 +#define SECRET_BASE_YELLOW_CAVE1_2 122 +#define SECRET_BASE_YELLOW_CAVE1_3 123 + +#define SECRET_BASE_YELLOW_CAVE2_1 131 +#define SECRET_BASE_YELLOW_CAVE2_2 132 +#define SECRET_BASE_YELLOW_CAVE2_3 133 + +#define SECRET_BASE_YELLOW_CAVE3_1 141 +#define SECRET_BASE_YELLOW_CAVE3_2 142 +#define SECRET_BASE_YELLOW_CAVE3_3 143 + +#define SECRET_BASE_YELLOW_CAVE4_1 151 +#define SECRET_BASE_YELLOW_CAVE4_2 152 +#define SECRET_BASE_YELLOW_CAVE4_3 153 + +#define SECRET_BASE_TREE1_1 161 +#define SECRET_BASE_TREE1_2 162 +#define SECRET_BASE_TREE1_3 163 +#define SECRET_BASE_TREE1_4 164 + +#define SECRET_BASE_TREE2_1 171 +#define SECRET_BASE_TREE2_2 172 +#define SECRET_BASE_TREE2_3 173 +#define SECRET_BASE_TREE2_4 174 + +#define SECRET_BASE_TREE3_1 181 +#define SECRET_BASE_TREE3_2 182 +#define SECRET_BASE_TREE3_3 183 + +#define SECRET_BASE_TREE4_1 191 +#define SECRET_BASE_TREE4_2 192 +#define SECRET_BASE_TREE4_3 193 + +#define SECRET_BASE_SHRUB1_1 201 +#define SECRET_BASE_SHRUB1_2 202 +#define SECRET_BASE_SHRUB1_3 203 +#define SECRET_BASE_SHRUB1_4 204 + +#define SECRET_BASE_SHRUB2_1 211 +#define SECRET_BASE_SHRUB2_2 212 +#define SECRET_BASE_SHRUB2_3 213 + +#define SECRET_BASE_SHRUB3_1 221 +#define SECRET_BASE_SHRUB3_2 222 +#define SECRET_BASE_SHRUB3_3 223 + +#define SECRET_BASE_SHRUB4_1 231 +#define SECRET_BASE_SHRUB4_2 232 +#define SECRET_BASE_SHRUB4_3 233 + +#endif // GUARD_CONSTANTS_SECRET_BASES_H diff --git a/include/constants/songs.h b/include/constants/songs.h new file mode 100644 index 000000000..58a8e725c --- /dev/null +++ b/include/constants/songs.h @@ -0,0 +1,541 @@ +#ifndef GUARD_CONSTANTS_SONGS_H +#define GUARD_CONSTANTS_SONGS_H + +#define MUS_DUMMY 0 +#define SE_KAIFUKU 1 // Healing Item +#define SE_PC_LOGIN 2 // PC Logon +#define SE_PC_OFF 3 // PC Shutdown +#define SE_PC_ON 4 // PC Startup +#define SE_SELECT 5 // Cursor Selection +#define SE_WIN_OPEN 6 // Start Menu +#define SE_WALL_HIT 7 // Wall Bump +#define SE_DOOR 8 // Opening Door +#define SE_KAIDAN 9 // Stairs +#define SE_DANSA 10 // Ledge +#define SE_JITENSYA 11 // Bicycle Bell +#define SE_KOUKA_L 12 // Not Very Effective +#define SE_KOUKA_M 13 // Normal Effectiveness +#define SE_KOUKA_H 14 // Super Effective +#define SE_BOWA2 15 // Pokémon Withdrawal +#define SE_POKE_DEAD 16 // Pokémon Fainted +#define SE_NIGERU 17 // Flee from Wild Battle +#define SE_JIDO_DOA 18 // Pokémon Center Door +#define SE_NAMINORI 19 // Briney's Ship +#define SE_BAN 20 // Bang +#define SE_PIN 21 // Exclamation Bubble +#define SE_BOO 22 // Contest Jam +#define SE_BOWA 23 // Giving Poké Ball to Nurse, Poké Ball Wiggle +#define SE_JYUNI 24 // Places in Contest Appearing +#define SE_A 25 // Bard A +#define SE_I 26 // Bard I +#define SE_U 27 // Bard U +#define SE_E 28 // Bard E +#define SE_O 29 // Bard O +#define SE_N 30 // Bard N +#define SE_SEIKAI 31 // Success +#define SE_HAZURE 32 // Failure +#define SE_EXP 33 // Exp. Bar +#define SE_JITE_PYOKO 34 // Bunny Hop +#define SE_MU_PACHI 35 +#define SE_TK_KASYA 36 // Mossdeep Gym/Trick House Switch +#define SE_FU_ZAKU 37 +#define SE_FU_ZAKU2 38 +#define SE_FU_ZUZUZU 39 // Lavaridge Gym Warp +#define SE_RU_GASHIN 40 // Sootopolis Gym - Stairs Appear +#define SE_RU_GASYAN 41 // Sootopolis Gym - Ice Breaking +#define SE_RU_BARI 42 // Sootopolis Gym - Walking on Ice +#define SE_RU_HYUU 43 // Falling Down +#define SE_KI_GASYAN 44 +#define SE_TK_WARPIN 45 // Warp In +#define SE_TK_WARPOUT 46 // Warp Out +#define SE_TU_SAA 47 // Repel +#define SE_HI_TURUN 48 // Moving Obstacle in Fortree Gym +#define SE_TRACK_MOVE 49 // Moving Truck +#define SE_TRACK_STOP 50 // Moving Truck Stop +#define SE_TRACK_HAIKI 51 // Moving Truck Unload +#define SE_TRACK_DOOR 52 // Moving Truck Door +#define SE_MOTER 53 +#define SE_CARD 54 +#define SE_SAVE 55 // Save +#define SE_KON 56 // Poké Ball Bounce 1 +#define SE_KON2 57 // Poké Ball Bounce 2 +#define SE_KON3 58 // Poké Ball Bounce 3 +#define SE_KON4 59 // Poké Ball Bounce 4 +#define SE_SUIKOMU 60 // Poké Ball Trade +#define SE_NAGERU 61 // Poké Ball Throw +#define SE_TOY_C 62 // Note C +#define SE_TOY_D 63 // Note D +#define SE_TOY_E 64 // Note E +#define SE_TOY_F 65 // Note F +#define SE_TOY_G 66 // Note G +#define SE_TOY_A 67 // Note A +#define SE_TOY_B 68 // Note B +#define SE_TOY_C1 69 // Note High C +#define SE_MIZU 70 // Puddle +#define SE_HASHI 71 // Boardwalk +#define SE_DAUGI 72 // Slots Credits +#define SE_PINPON 73 // Ding-dong! +#define SE_FUUSEN1 74 // Red Balloon +#define SE_FUUSEN2 75 // Blue Balloon +#define SE_FUUSEN3 76 // Yellow Balloon +#define SE_TOY_KABE 77 // Breakable Door +#define SE_TOY_DANGO 78 // Mud Ball +#define SE_DOKU 79 // Overworld Poison Damage +#define SE_ESUKA 80 // Escalator +#define SE_T_AME 81 // Rain +#define SE_T_AME_E 82 // Rain Stop +#define SE_T_OOAME 83 // Heavy Rain +#define SE_T_OOAME_E 84 // Heavy Rain Stop +#define SE_T_KOAME 85 // Light Rain +#define SE_T_KOAME_E 86 // Light Rain Stop +#define SE_T_KAMI 87 // Thunder +#define SE_T_KAMI2 88 // Thunder 2 +#define SE_ELEBETA 89 // Elevator +#define SE_HINSI 90 // Low Health +#define SE_EXPMAX 91 // Exp. Max +#define SE_TAMAKORO 92 // Roulette Ball +#define SE_TAMAKORO_E 93 // Roulette Ball 2 +#define SE_BASABASA 94 +#define SE_REGI 95 // Cash Register +#define SE_C_GAJI 96 // Contest Hearts +#define SE_C_MAKU_U 97 // Contest Curtain rise +#define SE_C_MAKU_D 98 // Contest Curtain fall +#define SE_C_PASI 99 +#define SE_C_SYU 100 +#define SE_C_PIKON 101 // Pokémon Appears in Contest +#define SE_REAPOKE 102 // Shiny Pokémon +#define SE_OP_BASYU 103 // Opening Movie -> Title Screen whoosh +#define SE_BT_START 104 // Battle Mugshot whoosh +#define SE_DENDOU 105 // Audience Cheering +#define SE_JIHANKI 106 // Vending Machine +#define SE_TAMA 107 // Orb Used +#define SE_Z_SCROLL 108 // Pokédex Scrolling +#define SE_Z_PAGE 109 // Pokédex Page +#define SE_PN_ON 110 // PokéNav On +#define SE_PN_OFF 111 // PokéNav Off +#define SE_Z_SEARCH 112 // Pokédex Search +#define SE_TAMAGO 113 // Egg hatch +#define SE_TB_START 114 // Battle - Poké Ball Tray slide in +#define SE_TB_KON 115 // Battle - Poké Ball Tray ball sound +#define SE_TB_KARA 116 // Battle - Poké Ball Tray slide out +#define SE_BIDORO 117 +#define SE_W085 118 // Thunderbolt +#define SE_W085B 119 // Thunderbolt 2 +#define SE_W231 120 // Harden +#define SE_W171 121 // Nightmare +#define SE_W233 122 // Vital Throw +#define SE_W233B 123 // Vital Throw 2 +#define SE_W145 124 // Bubble +#define SE_W145B 125 // Bubble 2 +#define SE_W145C 126 // Bubble 3 +#define SE_W240 127 // Rain Dance +#define SE_W015 128 // Cut +#define SE_W081 129 // String Shot +#define SE_W081B 130 // String Shot 2 +#define SE_W088 131 // Rock Throw +#define SE_W016 132 // Gust +#define SE_W016B 133 // Gust 2 +#define SE_W003 134 // DoubleSlap +#define SE_W104 135 // Double Team +#define SE_W013 136 // Razor Wind +#define SE_W196 137 // Icy Wind +#define SE_W086 138 // Thunder Wave +#define SE_W004 139 // Comet Punch +#define SE_W025 140 // Mega Kick +#define SE_W025B 141 // Mega Kick 2 +#define SE_W152 142 // Crabhammer +#define SE_W026 143 // Jump Kick +#define SE_W172 144 // Flame Wheel +#define SE_W172B 145 // Flame Wheel 2 +#define SE_W053 146 // Flamethrower +#define SE_W007 147 // Fire Punch +#define SE_W092 148 // Toxic +#define SE_W221 149 // Sacred Fire +#define SE_W221B 150 // Sacred Fire 2 +#define SE_W052 151 // Ember +#define SE_W036 152 // Take Down +#define SE_W059 153 // Blizzard +#define SE_W059B 154 // Blizzard 2 +#define SE_W010 155 // Scratch +#define SE_W011 156 // Vicegrip +#define SE_W017 157 // Wing Attack +#define SE_W019 158 // Fly +#define SE_W028 159 // Sand-Attack +#define SE_W013B 160 // Razor Wind 2 +#define SE_W044 161 // Bite +#define SE_W029 162 // Headbutt +#define SE_W057 163 // Surf +#define SE_W056 164 // Hydro Pump +#define SE_W250 165 // Whirlpool +#define SE_W030 166 // Horn Attack +#define SE_W039 167 // Tail Whip +#define SE_W054 168 // Mist +#define SE_W077 169 // PoisonPowder +#define SE_W020 170 // Bind +#define SE_W082 171 // Dragon Rage +#define SE_W047 172 // Sing +#define SE_W195 173 // Perish Song +#define SE_W006 174 // Pay Day +#define SE_W091 175 // Dig +#define SE_W146 176 // Dizzy Punch +#define SE_W120 177 // Self-Destruct +#define SE_W153 178 // Explosion +#define SE_W071B 179 // Absorb 2 +#define SE_W071 180 // Absorb +#define SE_W103 181 // Screech +#define SE_W062 182 // BubbleBeam +#define SE_W062B 183 // BubbleBeam 2 +#define SE_W048 184 // Supersonic +#define SE_W187 185 // Belly Drum +#define SE_W118 186 // Metronome +#define SE_W155 187 // Bonemerang +#define SE_W122 188 // Lick +#define SE_W060 189 // Psybeam +#define SE_W185 190 // Faint Attack +#define SE_W014 191 // Swords Dance +#define SE_W043 192 // Leer +#define SE_W207 193 // Swagger +#define SE_W207B 194 // Swagger 2 +#define SE_W215 195 // Heal Bell +#define SE_W109 196 // Confuse Ray +#define SE_W173 197 // Snore +#define SE_W280 198 // Brick Break +#define SE_W202 199 // Giga Drain +#define SE_W060B 200 // Psybeam 2 +#define SE_W076 201 // SolarBeam +#define SE_W080 202 // Petal Dance +#define SE_W100 203 // Teleport +#define SE_W107 204 // Minimize +#define SE_W166 205 // Sketch +#define SE_W129 206 // Swift +#define SE_W115 207 // Reflect +#define SE_W112 208 // Barrier +#define SE_W197 209 // Detect +#define SE_W199 210 // Lock-On +#define SE_W236 211 // Moonlight +#define SE_W204 212 // Charm +#define SE_W268 213 // Charge +#define SE_W070 214 // Strength +#define SE_W063 215 // Hyper Beam +#define SE_W127 216 // Waterfall +#define SE_W179 217 // Reversal +#define SE_W151 218 // Acid Armor +#define SE_W201 219 // Sandstorm +#define SE_W161 220 // Tri-Attack +#define SE_W161B 221 // Tri-Attack 2 +#define SE_W227 222 // Encore +#define SE_W227B 223 // Encore 2 +#define SE_W226 224 // Baton Pass +#define SE_W208 225 // Milk Drink +#define SE_W213 226 // Attract +#define SE_W213B 227 // Attract 2 +#define SE_W234 228 // Morning Sun +#define SE_W260 229 // Flatter +#define SE_W328 230 // Sand Tomb +#define SE_W320 231 // GrassWhistle +#define SE_W255 232 // Spit Up +#define SE_W291 233 // Dive +#define SE_W089 234 // Earthquake +#define SE_W239 235 // Twister +#define SE_W230 236 // Sweet Scent +#define SE_W281 237 // Yawn +#define SE_W327 238 // Sky Uppercut +#define SE_W287 239 // Stat Increased +#define SE_W257 240 // Heat Wave +#define SE_W253 241 // Uproar +#define SE_W258 242 // Hail +#define SE_W322 243 // Cosmic Power +#define SE_W298 244 // Teeter Dance +#define SE_W287B 245 // Stat Decreased +#define SE_W114 246 // Haze +#define SE_W063B 247 // Hyper Beam 2 +// FRLG SFX below +#define SE_RG_W_DOOR 248 // Door +#define SE_RG_CARD1 249 // Trainer Card 1 +#define SE_RG_CARD2 250 // Trainer Card 2 +#define SE_RG_CARD3 251 // Trainer Card 3 +#define SE_RG_BAG1 252 // Bag Scroll +#define SE_RG_BAG2 253 // Bag Pocket Change +#define SE_RG_GETTING 254 +#define SE_RG_SHOP 255 // Cash Register +#define SE_RG_KITEKI 256 // S.S. Anne Horn +#define SE_RG_HELP_OP 257 // Help Menu Open +#define SE_RG_HELP_CL 258 // Help Menu Close +#define SE_RG_HELP_NG 259 // Help Menu Error +#define SE_RG_DEOMOV 260 // Deoxys Moves +#define SE_RG_EXCELLENT 261 +#define SE_RG_NAWAMISS 262 +// end FRLG SFX +#define SE_TOREEYE 263 // Trainer's Eye Call +#define SE_TOREOFF 264 // Trainer's Eye Hang Up +#define SE_HANTEI1 265 // Battle Arena Time's Up 1 +#define SE_HANTEI2 266 // Battle Arena Time's Up 2 +#define SE_CURTAIN 267 // Battle Pike Curtain Open +#define SE_CURTAIN1 268 // Battle Pike Curtain Close +#define SE_USSOKI 269 // Sudowoodo + +#define MUS_TETSUJI 350 // Littleroot Town Test 'TETSUJI' +#define MUS_FIELD13 351 // GSC - Route 38 +#define MUS_KACHI22 352 // Wild Pokémon Defeated +#define MUS_KACHI2 353 // Wild Pokémon Defeated with Intro +#define MUS_KACHI3 354 // Gym Leader Defeated +#define MUS_KACHI5 355 // Victory! Elite Four +#define MUS_PCC 356 // Crystal - Pokémon Communication Center +#define MUS_NIBI 357 // GSC - Viridian/Saffron/Pewter/etc +#define MUS_SUIKUN 358 // Crystal - Battle! Legendary Beasts +#define MUS_DOORO1 359 // Route 101 +#define MUS_DOORO_X1 360 // Route 110 +#define MUS_DOORO_X3 361 // Route 120 +#define MUS_MACHI_S2 362 // Petalburg City +#define MUS_MACHI_S4 363 // Oldale/Lavaridge Town +#define MUS_GIM 364 // Gym +#define MUS_NAMINORI 365 // Surfing +#define MUS_DAN01 366 // Caves and Darkness +#define MUS_FANFA1 367 // Level Up! +#define MUS_ME_ASA 368 // Pokémon Healed +#define MUS_ME_BACHI 369 // Obtained a Badge! +#define MUS_FANFA4 370 // Obtained an Item! +#define MUS_FANFA5 371 // Your Pokémon Just Evolved! +#define MUS_ME_WAZA 372 // Obtained a TM/HM! +#define MUS_BIJYUTU 373 // Lilycove Museum +#define MUS_DOORO_X4 374 // Route 122/Intro +#define MUS_FUNE_KAN 375 // Slateport Museum +#define MUS_ME_SHINKA 376 // Evolution Intro +#define MUS_SHINKA 377 // Evolution +#define MUS_ME_WASURE 378 // Move Deleted/Messed Up Appeal +#define MUS_SYOUJOEYE 379 // Encounter! Tuber +#define MUS_BOYEYE 380 // Encounter! Boy +#define MUS_DAN02 381 // Abandoned Ship/Southern Island +#define MUS_MACHI_S3 382 // Fortree City/Pacifidlog Town +#define MUS_ODAMAKI 383 // Professor Birch's Lab +#define MUS_B_TOWER 384 // Battle Tower (RS) +#define MUS_SWIMEYE 385 // Encounter! Swimmer +#define MUS_DAN03 386 // Meteor Falls/Cave of Origin +#define MUS_ME_KINOMI 387 // Obtained a Berry! +#define MUS_ME_TAMA 388 // Awakening the Super-Ancient Pokémon +#define MUS_ME_B_BIG 389 // Slots Jackpot! +#define MUS_ME_B_SMALL 390 // Slots Victory! +#define MUS_ME_ZANNEN 391 // Too bad! +#define MUS_BD_TIME 392 // Roulette! +#define MUS_TEST1 393 // Contest Test 1 +#define MUS_TEST2 394 // Contest Test 2 +#define MUS_TEST3 395 // Contest Test 3 +#define MUS_TEST4 396 // Contest Test 4 +#define MUS_TEST 397 // Encounter! Gentleman +#define MUS_GOMACHI0 398 // Verdanturf Town +#define MUS_GOTOWN 399 // Rustboro/Mauville/Mossdeep City +#define MUS_POKECEN 400 // Pokémon Center +#define MUS_NEXTROAD 401 // Route 104 +#define MUS_GRANROAD 402 // Route 119 +#define MUS_CYCLING 403 // Cycling +#define MUS_FRIENDLY 404 // Pokémart +#define MUS_MISHIRO 405 // Littleroot Town +#define MUS_TOZAN 406 // Sky Pillar +#define MUS_GIRLEYE 407 // Encounter! Girl +#define MUS_MINAMO 408 // Lilycove City +#define MUS_ASHROAD 409 // Route 111 +#define MUS_EVENT0 410 // Help me! +#define MUS_DEEPDEEP 411 // Underwater +#define MUS_KACHI1 412 // Victory! Trainer +#define MUS_TITLE3 413 // Title Screen +#define MUS_DEMO1 414 // Opening Movie +#define MUS_GIRL_SUP 415 // Encounter! May +#define MUS_HAGESHII 416 // Encounter! Biker +#define MUS_KAKKOII 417 // Encounter! Electric Trainer +#define MUS_KAZANBAI 418 // Route 113 +#define MUS_AQA_0 419 // Encounter! Team Aqua +#define MUS_TSURETEK 420 // Follow Me! +#define MUS_BOY_SUP 421 // Encounter! Brendan +#define MUS_RAINBOW 422 // Ever Grande City +#define MUS_AYASII 423 // Encounter! Psychic +#define MUS_KACHI4 424 // Victory! Aqua/Magma Grunt +#define MUS_ROPEWAY 425 // Cable Car +#define MUS_CASINO 426 // Game Corner +#define MUS_HIGHTOWN 427 // Dewford Town +#define MUS_SAFARI 428 // Safari Zone +#define MUS_C_ROAD 429 // Victory Road +#define MUS_AJITO 430 // Aqua/Magma Hideout +#define MUS_M_BOAT 431 // Sailing +#define MUS_M_DUNGON 432 // Mt. Pyre (Inside) +#define MUS_FINECITY 433 // Slateport City +#define MUS_MACHUPI 434 // Mt. Pyre (Outside) +#define MUS_P_SCHOOL 435 // Pokémon Trainer's School +#define MUS_DENDOU 436 // You're the Champion! +#define MUS_TONEKUSA 437 // Fallarbor Town +#define MUS_MABOROSI 438 // Sealed Chamber +#define MUS_CON_FAN 439 // Obtained a Contest Ribbon! +#define MUS_CONTEST0 440 // Pokémon Contest +#define MUS_MGM0 441 // Encounter! Team Magma +#define MUS_T_BATTLE 442 // Opening Battle +#define MUS_OOAME 443 // The Flood +#define MUS_HIDERI 444 // The Drought +#define MUS_RUNECITY 445 // Sootopolis City +#define MUS_CON_K 446 // Contest/Berry Blending Results +#define MUS_EIKOU_R 447 // Hall of Fame +#define MUS_KARAKURI 448 // Trick House +#define MUS_HUTAGO 449 // Encounter! Kid +#define MUS_SITENNOU 450 // Encounter! Elite Four +#define MUS_YAMA_EYE 451 // Encounter! Hiker +#define MUS_CONLOBBY 452 // Contest Lobby +#define MUS_INTER_V 453 // Encounter! Gabby and Ty +#define MUS_DAIGO 454 // Encounter! Wallace +#define MUS_THANKFOR 455 // Credits +#define MUS_END 456 // The End +#define MUS_B_FRONTIER 457 // Battle Frontier +#define MUS_B_ARENA 458 // Battle Arena +#define MUS_ME_POINTGET 459 // Obtained Battle Points! +#define MUS_ME_TORE_EYE 460 // Registered Trainer! +#define MUS_PYRAMID 461 // Battle Pyramid +#define MUS_PYRAMID_TOP 462 // Top of the Battle Pyramid +#define MUS_B_PALACE 463 // Battle Palace +#define MUS_REKKUU_KOURIN 464 // Rayquaza Enters +#define MUS_SATTOWER 465 // Battle Tower (Emerald) +#define MUS_ME_SYMBOLGET 466 // Obtained a Frontier Symbol! +#define MUS_B_DOME 467 // Battle Dome +#define MUS_B_TUBE 468 // Battle Pike +#define MUS_B_FACTORY 469 // Battle Factory +#define MUS_VS_REKKU 470 // Battle! Legendary Pokémon +#define MUS_VS_FRONT 471 // Battle! Frontier Brain +#define MUS_VS_MEW 472 // Battle! Mew +#define MUS_B_DOME1 473 // Battle Dome Lobby +#define MUS_BATTLE27 474 // Battle! Wild Pokémon +#define MUS_BATTLE31 475 // Battle! Team Aqua/Magma +#define MUS_BATTLE20 476 // Battle! Trainer +#define MUS_BATTLE32 477 // Battle! Gym Leader +#define MUS_BATTLE33 478 // Battle! Champion +#define MUS_BATTLE36 479 // Battle! Regi Trio +#define MUS_BATTLE34 480 // Battle! Legendary Pokémon (dupe) +#define MUS_BATTLE35 481 // Battle! Rival +#define MUS_BATTLE38 482 // Battle! Elite Four +#define MUS_BATTLE30 483 // Battle! Archie/Maxie +// FRLG Music Below +#define MUS_RG_ANNAI 484 // Follow Me! +#define MUS_RG_SLOT 485 // Game Corner +#define MUS_RG_AJITO 486 // Rocket Hideout +#define MUS_RG_GYM 487 // Gym +#define MUS_RG_PURIN 488 // Jigglypuff's Song +#define MUS_RG_DEMO 489 // Opening Movie +#define MUS_RG_TITLE 490 // Title Screen +#define MUS_RG_GUREN 491 // Cinnabar Island +#define MUS_RG_SHION 492 // Lavender Town +#define MUS_RG_KAIHUKU 493 // RBY Pokémon Center Healing +#define MUS_RG_CYCLING 494 // Cycling +#define MUS_RG_ROCKET 495 // Encounter! Team Rocket +#define MUS_RG_SHOUJO 496 // Encounter! Girl +#define MUS_RG_SHOUNEN 497 // Encounter! Boy +#define MUS_RG_DENDOU 498 // You're the Champion! +#define MUS_RG_T_MORI 499 // Viridian Forest +#define MUS_RG_OTSUKIMI 500 // Mt. Moon +#define MUS_RG_POKEYASHI 501 // Pokémon Mansion +#define MUS_RG_ENDING 502 // Credits +#define MUS_RG_LOAD01 503 // Route 1 +#define MUS_RG_OPENING 504 // Route 24/Intro +#define MUS_RG_LOAD02 505 // Route 3 +#define MUS_RG_LOAD03 506 // Route 11 +#define MUS_RG_CHAMP_R 507 // Victory Road/Indigo Plateau +#define MUS_RG_VS_GYM 508 // Battle! Gym Leader/Elite Four +#define MUS_RG_VS_TORE 509 // Battle! Trainer +#define MUS_RG_VS_YASEI 510 // Battle! Wild Pokémon +#define MUS_RG_VS_LAST 511 // Battle! Champion +#define MUS_RG_MASARA 512 // Pallet Town +#define MUS_RG_KENKYU 513 // Professor Oak's Lab +#define MUS_RG_OHKIDO 514 // Professor Oak's Theme +#define MUS_RG_POKECEN 515 // Pokémon Center +#define MUS_RG_SANTOAN 516 // S.S. Anne +#define MUS_RG_NAMINORI 517 // Surfing +#define MUS_RG_P_TOWER 518 // Pokémon Tower +#define MUS_RG_SHIRUHU 519 // Silph Co. +#define MUS_RG_HANADA 520 // Cerulean/Fuschia City +#define MUS_RG_TAMAMUSI 521 // Celadon City +#define MUS_RG_WIN_TRE 522 // Victory! Trainer +#define MUS_RG_WIN_YASEI 523 // Victory! Wild Pokémon +#define MUS_RG_WIN_GYM 524 // Victory! Gym Leader +#define MUS_RG_KUCHIBA 525 // Vermillion City +#define MUS_RG_NIBI 526 // Viridian/Saffron/Pewter City +#define MUS_RG_RIVAL1 527 // Encounter! Rival +#define MUS_RG_RIVAL2 528 // Rival's Exit +#define MUS_RG_FAN2 529 // Fanfare 2 +#define MUS_RG_FAN5 530 // Obtained a Starter! +#define MUS_RG_FAN6 531 // Pokémon Caught! (Used in Emerald) +#define MUS_ME_RG_PHOTO 532 // Trainer Photo +#define MUS_RG_TITLEROG 533 // Game Freak +#define MUS_RG_GET_YASEI 534 // Pokémon Caught Victory Theme +#define MUS_RG_SOUSA 535 // Starting Tutorial +#define MUS_RG_SEKAIKAN 536 // Starting Tutorial 2 +#define MUS_RG_SEIBETU 537 // Starting Tutorial 3 +#define MUS_RG_JUMP 538 // Jumping Minigame +#define MUS_RG_UNION 539 // Union Room +#define MUS_RG_NETWORK 540 // Network Center +#define MUS_RG_OKURIMONO 541 // Mystery Gift +#define MUS_RG_KINOMIKUI 542 +#define MUS_RG_NANADUNGEON 543 // Sevii Caves/Altering Cave (Mt. Moon) +#define MUS_RG_OSHIE_TV 544 // Follow Me! +#define MUS_RG_NANASHIMA 545 // Sevii Islands Routes (Lake of Rage) +#define MUS_RG_NANAISEKI 546 // Sevii Forests (Viridian Forest) +#define MUS_RG_NANA123 547 // Sevii Islands 1-3 (Viridian/Saffron/Pewter) +#define MUS_RG_NANA45 548 // Sevii Islands 4-5 (Azalea Town) +#define MUS_RG_NANA67 549 // Sevii Islands 6-7 (Violet City) +#define MUS_RG_POKEFUE 550 // Poké Flute +#define MUS_RG_VS_DEO 551 // Battle! Deoxys +#define MUS_RG_VS_MYU2 552 // Battle! Mewtwo +#define MUS_RG_VS_DEN 553 // Battle! Legendary Birds +#define MUS_RG_EXEYE 554 // Encounter! Gym Leader +#define MUS_RG_DEOEYE 555 // Encounter! Deoxys +#define MUS_RG_T_TOWER 556 // Trainer Tower (Gym) +#define MUS_RG_SLOWMASARA 557 // Pallet Town (Hall of Fame remix) +#define MUS_RG_TVNOIZE 558 // Teachy TV +#define PH_TRAP_BLEND 559 +#define PH_TRAP_HELD 560 +#define PH_TRAP_SOLO 561 +#define PH_FACE_BLEND 562 +#define PH_FACE_HELD 563 +#define PH_FACE_SOLO 564 +#define PH_CLOTH_BLEND 565 +#define PH_CLOTH_HELD 566 +#define PH_CLOTH_SOLO 567 +#define PH_DRESS_BLEND 568 +#define PH_DRESS_HELD 569 +#define PH_DRESS_SOLO 570 +#define PH_FLEECE_BLEND 571 +#define PH_FLEECE_HELD 572 +#define PH_FLEECE_SOLO 573 +#define PH_KIT_BLEND 574 +#define PH_KIT_HELD 575 +#define PH_KIT_SOLO 576 +#define PH_PRICE_BLEND 577 +#define PH_PRICE_HELD 578 +#define PH_PRICE_SOLO 579 +#define PH_LOT_BLEND 580 +#define PH_LOT_HELD 581 +#define PH_LOT_SOLO 582 +#define PH_GOAT_BLEND 583 +#define PH_GOAT_HELD 584 +#define PH_GOAT_SOLO 585 +#define PH_THOUGHT_BLEND 586 +#define PH_THOUGHT_HELD 587 +#define PH_THOUGHT_SOLO 588 +#define PH_CHOICE_BLEND 589 +#define PH_CHOICE_HELD 590 +#define PH_CHOICE_SOLO 591 +#define PH_MOUTH_BLEND 592 +#define PH_MOUTH_HELD 593 +#define PH_MOUTH_SOLO 594 +#define PH_FOOT_BLEND 595 +#define PH_FOOT_HELD 596 +#define PH_FOOT_SOLO 597 +#define PH_GOOSE_BLEND 598 +#define PH_GOOSE_HELD 599 +#define PH_GOOSE_SOLO 600 +#define PH_STRUT_BLEND 601 +#define PH_STRUT_HELD 602 +#define PH_STRUT_SOLO 603 +#define PH_CURE_BLEND 604 +#define PH_CURE_HELD 605 +#define PH_CURE_SOLO 606 +#define PH_NURSE_BLEND 607 +#define PH_NURSE_HELD 608 +#define PH_NURSE_SOLO 609 + +#define MUS_ROUTE_118 0x7FFF // What is this for? + +#endif // GUARD_CONSTANTS_SONGS_H diff --git a/include/constants/species.h b/include/constants/species.h new file mode 100644 index 000000000..f698ada14 --- /dev/null +++ b/include/constants/species.h @@ -0,0 +1,450 @@ +#ifndef GUARD_CONSTANTS_SPECIES_H +#define GUARD_CONSTANTS_SPECIES_H + +#define SPECIES_NONE 0 +#define SPECIES_BULBASAUR 1 +#define SPECIES_IVYSAUR 2 +#define SPECIES_VENUSAUR 3 +#define SPECIES_CHARMANDER 4 +#define SPECIES_CHARMELEON 5 +#define SPECIES_CHARIZARD 6 +#define SPECIES_SQUIRTLE 7 +#define SPECIES_WARTORTLE 8 +#define SPECIES_BLASTOISE 9 +#define SPECIES_CATERPIE 10 +#define SPECIES_METAPOD 11 +#define SPECIES_BUTTERFREE 12 +#define SPECIES_WEEDLE 13 +#define SPECIES_KAKUNA 14 +#define SPECIES_BEEDRILL 15 +#define SPECIES_PIDGEY 16 +#define SPECIES_PIDGEOTTO 17 +#define SPECIES_PIDGEOT 18 +#define SPECIES_RATTATA 19 +#define SPECIES_RATICATE 20 +#define SPECIES_SPEAROW 21 +#define SPECIES_FEAROW 22 +#define SPECIES_EKANS 23 +#define SPECIES_ARBOK 24 +#define SPECIES_PIKACHU 25 +#define SPECIES_RAICHU 26 +#define SPECIES_SANDSHREW 27 +#define SPECIES_SANDSLASH 28 +#define SPECIES_NIDORAN_F 29 +#define SPECIES_NIDORINA 30 +#define SPECIES_NIDOQUEEN 31 +#define SPECIES_NIDORAN_M 32 +#define SPECIES_NIDORINO 33 +#define SPECIES_NIDOKING 34 +#define SPECIES_CLEFAIRY 35 +#define SPECIES_CLEFABLE 36 +#define SPECIES_VULPIX 37 +#define SPECIES_NINETALES 38 +#define SPECIES_JIGGLYPUFF 39 +#define SPECIES_WIGGLYTUFF 40 +#define SPECIES_ZUBAT 41 +#define SPECIES_GOLBAT 42 +#define SPECIES_ODDISH 43 +#define SPECIES_GLOOM 44 +#define SPECIES_VILEPLUME 45 +#define SPECIES_PARAS 46 +#define SPECIES_PARASECT 47 +#define SPECIES_VENONAT 48 +#define SPECIES_VENOMOTH 49 +#define SPECIES_DIGLETT 50 +#define SPECIES_DUGTRIO 51 +#define SPECIES_MEOWTH 52 +#define SPECIES_PERSIAN 53 +#define SPECIES_PSYDUCK 54 +#define SPECIES_GOLDUCK 55 +#define SPECIES_MANKEY 56 +#define SPECIES_PRIMEAPE 57 +#define SPECIES_GROWLITHE 58 +#define SPECIES_ARCANINE 59 +#define SPECIES_POLIWAG 60 +#define SPECIES_POLIWHIRL 61 +#define SPECIES_POLIWRATH 62 +#define SPECIES_ABRA 63 +#define SPECIES_KADABRA 64 +#define SPECIES_ALAKAZAM 65 +#define SPECIES_MACHOP 66 +#define SPECIES_MACHOKE 67 +#define SPECIES_MACHAMP 68 +#define SPECIES_BELLSPROUT 69 +#define SPECIES_WEEPINBELL 70 +#define SPECIES_VICTREEBEL 71 +#define SPECIES_TENTACOOL 72 +#define SPECIES_TENTACRUEL 73 +#define SPECIES_GEODUDE 74 +#define SPECIES_GRAVELER 75 +#define SPECIES_GOLEM 76 +#define SPECIES_PONYTA 77 +#define SPECIES_RAPIDASH 78 +#define SPECIES_SLOWPOKE 79 +#define SPECIES_SLOWBRO 80 +#define SPECIES_MAGNEMITE 81 +#define SPECIES_MAGNETON 82 +#define SPECIES_FARFETCHD 83 +#define SPECIES_DODUO 84 +#define SPECIES_DODRIO 85 +#define SPECIES_SEEL 86 +#define SPECIES_DEWGONG 87 +#define SPECIES_GRIMER 88 +#define SPECIES_MUK 89 +#define SPECIES_SHELLDER 90 +#define SPECIES_CLOYSTER 91 +#define SPECIES_GASTLY 92 +#define SPECIES_HAUNTER 93 +#define SPECIES_GENGAR 94 +#define SPECIES_ONIX 95 +#define SPECIES_DROWZEE 96 +#define SPECIES_HYPNO 97 +#define SPECIES_KRABBY 98 +#define SPECIES_KINGLER 99 +#define SPECIES_VOLTORB 100 +#define SPECIES_ELECTRODE 101 +#define SPECIES_EXEGGCUTE 102 +#define SPECIES_EXEGGUTOR 103 +#define SPECIES_CUBONE 104 +#define SPECIES_MAROWAK 105 +#define SPECIES_HITMONLEE 106 +#define SPECIES_HITMONCHAN 107 +#define SPECIES_LICKITUNG 108 +#define SPECIES_KOFFING 109 +#define SPECIES_WEEZING 110 +#define SPECIES_RHYHORN 111 +#define SPECIES_RHYDON 112 +#define SPECIES_CHANSEY 113 +#define SPECIES_TANGELA 114 +#define SPECIES_KANGASKHAN 115 +#define SPECIES_HORSEA 116 +#define SPECIES_SEADRA 117 +#define SPECIES_GOLDEEN 118 +#define SPECIES_SEAKING 119 +#define SPECIES_STARYU 120 +#define SPECIES_STARMIE 121 +#define SPECIES_MR_MIME 122 +#define SPECIES_SCYTHER 123 +#define SPECIES_JYNX 124 +#define SPECIES_ELECTABUZZ 125 +#define SPECIES_MAGMAR 126 +#define SPECIES_PINSIR 127 +#define SPECIES_TAUROS 128 +#define SPECIES_MAGIKARP 129 +#define SPECIES_GYARADOS 130 +#define SPECIES_LAPRAS 131 +#define SPECIES_DITTO 132 +#define SPECIES_EEVEE 133 +#define SPECIES_VAPOREON 134 +#define SPECIES_JOLTEON 135 +#define SPECIES_FLAREON 136 +#define SPECIES_PORYGON 137 +#define SPECIES_OMANYTE 138 +#define SPECIES_OMASTAR 139 +#define SPECIES_KABUTO 140 +#define SPECIES_KABUTOPS 141 +#define SPECIES_AERODACTYL 142 +#define SPECIES_SNORLAX 143 +#define SPECIES_ARTICUNO 144 +#define SPECIES_ZAPDOS 145 +#define SPECIES_MOLTRES 146 +#define SPECIES_DRATINI 147 +#define SPECIES_DRAGONAIR 148 +#define SPECIES_DRAGONITE 149 +#define SPECIES_MEWTWO 150 +#define SPECIES_MEW 151 +#define SPECIES_CHIKORITA 152 +#define SPECIES_BAYLEEF 153 +#define SPECIES_MEGANIUM 154 +#define SPECIES_CYNDAQUIL 155 +#define SPECIES_QUILAVA 156 +#define SPECIES_TYPHLOSION 157 +#define SPECIES_TOTODILE 158 +#define SPECIES_CROCONAW 159 +#define SPECIES_FERALIGATR 160 +#define SPECIES_SENTRET 161 +#define SPECIES_FURRET 162 +#define SPECIES_HOOTHOOT 163 +#define SPECIES_NOCTOWL 164 +#define SPECIES_LEDYBA 165 +#define SPECIES_LEDIAN 166 +#define SPECIES_SPINARAK 167 +#define SPECIES_ARIADOS 168 +#define SPECIES_CROBAT 169 +#define SPECIES_CHINCHOU 170 +#define SPECIES_LANTURN 171 +#define SPECIES_PICHU 172 +#define SPECIES_CLEFFA 173 +#define SPECIES_IGGLYBUFF 174 +#define SPECIES_TOGEPI 175 +#define SPECIES_TOGETIC 176 +#define SPECIES_NATU 177 +#define SPECIES_XATU 178 +#define SPECIES_MAREEP 179 +#define SPECIES_FLAAFFY 180 +#define SPECIES_AMPHAROS 181 +#define SPECIES_BELLOSSOM 182 +#define SPECIES_MARILL 183 +#define SPECIES_AZUMARILL 184 +#define SPECIES_SUDOWOODO 185 +#define SPECIES_POLITOED 186 +#define SPECIES_HOPPIP 187 +#define SPECIES_SKIPLOOM 188 +#define SPECIES_JUMPLUFF 189 +#define SPECIES_AIPOM 190 +#define SPECIES_SUNKERN 191 +#define SPECIES_SUNFLORA 192 +#define SPECIES_YANMA 193 +#define SPECIES_WOOPER 194 +#define SPECIES_QUAGSIRE 195 +#define SPECIES_ESPEON 196 +#define SPECIES_UMBREON 197 +#define SPECIES_MURKROW 198 +#define SPECIES_SLOWKING 199 +#define SPECIES_MISDREAVUS 200 +#define SPECIES_UNOWN 201 +#define SPECIES_WOBBUFFET 202 +#define SPECIES_GIRAFARIG 203 +#define SPECIES_PINECO 204 +#define SPECIES_FORRETRESS 205 +#define SPECIES_DUNSPARCE 206 +#define SPECIES_GLIGAR 207 +#define SPECIES_STEELIX 208 +#define SPECIES_SNUBBULL 209 +#define SPECIES_GRANBULL 210 +#define SPECIES_QWILFISH 211 +#define SPECIES_SCIZOR 212 +#define SPECIES_SHUCKLE 213 +#define SPECIES_HERACROSS 214 +#define SPECIES_SNEASEL 215 +#define SPECIES_TEDDIURSA 216 +#define SPECIES_URSARING 217 +#define SPECIES_SLUGMA 218 +#define SPECIES_MAGCARGO 219 +#define SPECIES_SWINUB 220 +#define SPECIES_PILOSWINE 221 +#define SPECIES_CORSOLA 222 +#define SPECIES_REMORAID 223 +#define SPECIES_OCTILLERY 224 +#define SPECIES_DELIBIRD 225 +#define SPECIES_MANTINE 226 +#define SPECIES_SKARMORY 227 +#define SPECIES_HOUNDOUR 228 +#define SPECIES_HOUNDOOM 229 +#define SPECIES_KINGDRA 230 +#define SPECIES_PHANPY 231 +#define SPECIES_DONPHAN 232 +#define SPECIES_PORYGON2 233 +#define SPECIES_STANTLER 234 +#define SPECIES_SMEARGLE 235 +#define SPECIES_TYROGUE 236 +#define SPECIES_HITMONTOP 237 +#define SPECIES_SMOOCHUM 238 +#define SPECIES_ELEKID 239 +#define SPECIES_MAGBY 240 +#define SPECIES_MILTANK 241 +#define SPECIES_BLISSEY 242 +#define SPECIES_RAIKOU 243 +#define SPECIES_ENTEI 244 +#define SPECIES_SUICUNE 245 +#define SPECIES_LARVITAR 246 +#define SPECIES_PUPITAR 247 +#define SPECIES_TYRANITAR 248 +#define SPECIES_LUGIA 249 +#define SPECIES_HO_OH 250 +#define SPECIES_CELEBI 251 + +#define SPECIES_OLD_UNOWN_B 252 +#define SPECIES_OLD_UNOWN_C 253 +#define SPECIES_OLD_UNOWN_D 254 +#define SPECIES_OLD_UNOWN_E 255 +#define SPECIES_OLD_UNOWN_F 256 +#define SPECIES_OLD_UNOWN_G 257 +#define SPECIES_OLD_UNOWN_H 258 +#define SPECIES_OLD_UNOWN_I 259 +#define SPECIES_OLD_UNOWN_J 260 +#define SPECIES_OLD_UNOWN_K 261 +#define SPECIES_OLD_UNOWN_L 262 +#define SPECIES_OLD_UNOWN_M 263 +#define SPECIES_OLD_UNOWN_N 264 +#define SPECIES_OLD_UNOWN_O 265 +#define SPECIES_OLD_UNOWN_P 266 +#define SPECIES_OLD_UNOWN_Q 267 +#define SPECIES_OLD_UNOWN_R 268 +#define SPECIES_OLD_UNOWN_S 269 +#define SPECIES_OLD_UNOWN_T 270 +#define SPECIES_OLD_UNOWN_U 271 +#define SPECIES_OLD_UNOWN_V 272 +#define SPECIES_OLD_UNOWN_W 273 +#define SPECIES_OLD_UNOWN_X 274 +#define SPECIES_OLD_UNOWN_Y 275 +#define SPECIES_OLD_UNOWN_Z 276 + +#define SPECIES_TREECKO 277 +#define SPECIES_GROVYLE 278 +#define SPECIES_SCEPTILE 279 +#define SPECIES_TORCHIC 280 +#define SPECIES_COMBUSKEN 281 +#define SPECIES_BLAZIKEN 282 +#define SPECIES_MUDKIP 283 +#define SPECIES_MARSHTOMP 284 +#define SPECIES_SWAMPERT 285 +#define SPECIES_POOCHYENA 286 +#define SPECIES_MIGHTYENA 287 +#define SPECIES_ZIGZAGOON 288 +#define SPECIES_LINOONE 289 +#define SPECIES_WURMPLE 290 +#define SPECIES_SILCOON 291 +#define SPECIES_BEAUTIFLY 292 +#define SPECIES_CASCOON 293 +#define SPECIES_DUSTOX 294 +#define SPECIES_LOTAD 295 +#define SPECIES_LOMBRE 296 +#define SPECIES_LUDICOLO 297 +#define SPECIES_SEEDOT 298 +#define SPECIES_NUZLEAF 299 +#define SPECIES_SHIFTRY 300 +#define SPECIES_NINCADA 301 +#define SPECIES_NINJASK 302 +#define SPECIES_SHEDINJA 303 +#define SPECIES_TAILLOW 304 +#define SPECIES_SWELLOW 305 +#define SPECIES_SHROOMISH 306 +#define SPECIES_BRELOOM 307 +#define SPECIES_SPINDA 308 +#define SPECIES_WINGULL 309 +#define SPECIES_PELIPPER 310 +#define SPECIES_SURSKIT 311 +#define SPECIES_MASQUERAIN 312 +#define SPECIES_WAILMER 313 +#define SPECIES_WAILORD 314 +#define SPECIES_SKITTY 315 +#define SPECIES_DELCATTY 316 +#define SPECIES_KECLEON 317 +#define SPECIES_BALTOY 318 +#define SPECIES_CLAYDOL 319 +#define SPECIES_NOSEPASS 320 +#define SPECIES_TORKOAL 321 +#define SPECIES_SABLEYE 322 +#define SPECIES_BARBOACH 323 +#define SPECIES_WHISCASH 324 +#define SPECIES_LUVDISC 325 +#define SPECIES_CORPHISH 326 +#define SPECIES_CRAWDAUNT 327 +#define SPECIES_FEEBAS 328 +#define SPECIES_MILOTIC 329 +#define SPECIES_CARVANHA 330 +#define SPECIES_SHARPEDO 331 +#define SPECIES_TRAPINCH 332 +#define SPECIES_VIBRAVA 333 +#define SPECIES_FLYGON 334 +#define SPECIES_MAKUHITA 335 +#define SPECIES_HARIYAMA 336 +#define SPECIES_ELECTRIKE 337 +#define SPECIES_MANECTRIC 338 +#define SPECIES_NUMEL 339 +#define SPECIES_CAMERUPT 340 +#define SPECIES_SPHEAL 341 +#define SPECIES_SEALEO 342 +#define SPECIES_WALREIN 343 +#define SPECIES_CACNEA 344 +#define SPECIES_CACTURNE 345 +#define SPECIES_SNORUNT 346 +#define SPECIES_GLALIE 347 +#define SPECIES_LUNATONE 348 +#define SPECIES_SOLROCK 349 +#define SPECIES_AZURILL 350 +#define SPECIES_SPOINK 351 +#define SPECIES_GRUMPIG 352 +#define SPECIES_PLUSLE 353 +#define SPECIES_MINUN 354 +#define SPECIES_MAWILE 355 +#define SPECIES_MEDITITE 356 +#define SPECIES_MEDICHAM 357 +#define SPECIES_SWABLU 358 +#define SPECIES_ALTARIA 359 +#define SPECIES_WYNAUT 360 +#define SPECIES_DUSKULL 361 +#define SPECIES_DUSCLOPS 362 +#define SPECIES_ROSELIA 363 +#define SPECIES_SLAKOTH 364 +#define SPECIES_VIGOROTH 365 +#define SPECIES_SLAKING 366 +#define SPECIES_GULPIN 367 +#define SPECIES_SWALOT 368 +#define SPECIES_TROPIUS 369 +#define SPECIES_WHISMUR 370 +#define SPECIES_LOUDRED 371 +#define SPECIES_EXPLOUD 372 +#define SPECIES_CLAMPERL 373 +#define SPECIES_HUNTAIL 374 +#define SPECIES_GOREBYSS 375 +#define SPECIES_ABSOL 376 +#define SPECIES_SHUPPET 377 +#define SPECIES_BANETTE 378 +#define SPECIES_SEVIPER 379 +#define SPECIES_ZANGOOSE 380 +#define SPECIES_RELICANTH 381 +#define SPECIES_ARON 382 +#define SPECIES_LAIRON 383 +#define SPECIES_AGGRON 384 +#define SPECIES_CASTFORM 385 +#define SPECIES_VOLBEAT 386 +#define SPECIES_ILLUMISE 387 +#define SPECIES_LILEEP 388 +#define SPECIES_CRADILY 389 +#define SPECIES_ANORITH 390 +#define SPECIES_ARMALDO 391 +#define SPECIES_RALTS 392 +#define SPECIES_KIRLIA 393 +#define SPECIES_GARDEVOIR 394 +#define SPECIES_BAGON 395 +#define SPECIES_SHELGON 396 +#define SPECIES_SALAMENCE 397 +#define SPECIES_BELDUM 398 +#define SPECIES_METANG 399 +#define SPECIES_METAGROSS 400 +#define SPECIES_REGIROCK 401 +#define SPECIES_REGICE 402 +#define SPECIES_REGISTEEL 403 +#define SPECIES_KYOGRE 404 +#define SPECIES_GROUDON 405 +#define SPECIES_RAYQUAZA 406 +#define SPECIES_LATIAS 407 +#define SPECIES_LATIOS 408 +#define SPECIES_JIRACHI 409 +#define SPECIES_DEOXYS 410 +#define SPECIES_CHIMECHO 411 +#define SPECIES_EGG 412 + +#define SPECIES_UNOWN_B 413 +#define SPECIES_UNOWN_C 414 +#define SPECIES_UNOWN_D 415 +#define SPECIES_UNOWN_E 416 +#define SPECIES_UNOWN_F 417 +#define SPECIES_UNOWN_G 418 +#define SPECIES_UNOWN_H 419 +#define SPECIES_UNOWN_I 420 +#define SPECIES_UNOWN_J 421 +#define SPECIES_UNOWN_K 422 +#define SPECIES_UNOWN_L 423 +#define SPECIES_UNOWN_M 424 +#define SPECIES_UNOWN_N 425 +#define SPECIES_UNOWN_O 426 +#define SPECIES_UNOWN_P 427 +#define SPECIES_UNOWN_Q 428 +#define SPECIES_UNOWN_R 429 +#define SPECIES_UNOWN_S 430 +#define SPECIES_UNOWN_T 431 +#define SPECIES_UNOWN_U 432 +#define SPECIES_UNOWN_V 433 +#define SPECIES_UNOWN_W 434 +#define SPECIES_UNOWN_X 435 +#define SPECIES_UNOWN_Y 436 +#define SPECIES_UNOWN_Z 437 +#define SPECIES_UNOWN_EMARK 438 +#define SPECIES_UNOWN_QMARK 439 + +#define NUM_SPECIES SPECIES_EGG + +#endif // GUARD_CONSTANTS_SPECIES_H diff --git a/include/constants/trainers.h b/include/constants/trainers.h new file mode 100644 index 000000000..57c7fd523 --- /dev/null +++ b/include/constants/trainers.h @@ -0,0 +1,289 @@ +#ifndef GUARD_TRAINERS_H +#define GUARD_TRAINERS_H + +#include "constants/opponents.h" + +// Special Trainer Ids. +#define TRAINER_FRONTIER_BRAIN 1022 +#define TRAINER_SECRET_BASE 1024 +#define TRAINER_LINK_OPPONENT 2048 +#define TRAINER_OPPONENT_C00 3072 +#define TRAINER_STEVEN_PARTNER 3075 + +#define TRAINER_PIC_HIKER 0 +#define TRAINER_PIC_AQUA_GRUNT_M 1 +#define TRAINER_PIC_POKEMON_BREEDER_F 2 +#define TRAINER_PIC_COOL_TRAINER_M 3 +#define TRAINER_PIC_BIRD_KEEPER 4 +#define TRAINER_PIC_COLLECTOR 5 +#define TRAINER_PIC_AQUA_GRUNT_F 6 +#define TRAINER_PIC_SWIMMER_M 7 +#define TRAINER_PIC_MAGMA_GRUNT_M 8 +#define TRAINER_PIC_EXPERT_M 9 +#define TRAINER_PIC_AQUA_ADMIN_M 10 +#define TRAINER_PIC_BLACK_BELT 11 +#define TRAINER_PIC_AQUA_ADMIN_F 12 +#define TRAINER_PIC_AQUA_LEADER_ARCHIE 13 +#define TRAINER_PIC_HEX_MANIAC 14 +#define TRAINER_PIC_AROMA_LADY 15 +#define TRAINER_PIC_RUIN_MANIAC 16 +#define TRAINER_PIC_INTERVIEWER 17 +#define TRAINER_PIC_TUBER_F 18 +#define TRAINER_PIC_TUBER_M 19 +#define TRAINER_PIC_COOL_TRAINER_F 20 +#define TRAINER_PIC_LADY 21 +#define TRAINER_PIC_BEAUTY 22 +#define TRAINER_PIC_RICH_BOY 23 +#define TRAINER_PIC_EXPERT_F 24 +#define TRAINER_PIC_POKEMANIAC 25 +#define TRAINER_PIC_MAGMA_GRUNT_F 26 +#define TRAINER_PIC_GUITARIST 27 +#define TRAINER_PIC_KINDLER 28 +#define TRAINER_PIC_CAMPER 29 +#define TRAINER_PIC_PICNICKER 30 +#define TRAINER_PIC_BUG_MANIAC 31 +#define TRAINER_PIC_POKEMON_BREEDER_M 32 +#define TRAINER_PIC_PSYCHIC_M 33 +#define TRAINER_PIC_PSYCHIC_F 34 +#define TRAINER_PIC_GENTLEMAN 35 +#define TRAINER_PIC_ELITE_FOUR_SIDNEY 36 +#define TRAINER_PIC_ELITE_FOUR_PHOEBE 37 +#define TRAINER_PIC_ELITE_FOUR_GLACIA 38 +#define TRAINER_PIC_ELITE_FOUR_DRAKE 39 +#define TRAINER_PIC_LEADER_ROXANNE 40 +#define TRAINER_PIC_LEADER_BRAWLY 41 +#define TRAINER_PIC_LEADER_WATTSON 42 +#define TRAINER_PIC_LEADER_FLANNERY 43 +#define TRAINER_PIC_LEADER_NORMAN 44 +#define TRAINER_PIC_LEADER_WINONA 45 +#define TRAINER_PIC_LEADER_TATE_AND_LIZA 46 +#define TRAINER_PIC_LEADER_JUAN 47 +#define TRAINER_PIC_SCHOOL_KID_M 48 +#define TRAINER_PIC_SCHOOL_KID_F 49 +#define TRAINER_PIC_SR_AND_JR 50 +#define TRAINER_PIC_WINSTRATE_M 51 +#define TRAINER_PIC_WINSTRATE_F 52 +#define TRAINER_PIC_YOUNGSTER 53 +#define TRAINER_PIC_CHAMPION_WALLACE 54 +#define TRAINER_PIC_FISHERMAN 55 +#define TRAINER_PIC_CYCLING_TRIATHLETE_M 56 +#define TRAINER_PIC_CYCLING_TRIATHLETE_F 57 +#define TRAINER_PIC_RUNNING_TRIATHLETE_M 58 +#define TRAINER_PIC_RUNNING_TRIATHLETE_F 59 +#define TRAINER_PIC_SWIMMING_TRIATHLETE_M 60 +#define TRAINER_PIC_SWIMMING_TRIATHLETE_F 61 +#define TRAINER_PIC_DRAGON_TAMER 62 +#define TRAINER_PIC_NINJA_BOY 63 +#define TRAINER_PIC_BATTLE_GIRL 64 +#define TRAINER_PIC_PARASOL_LADY 65 +#define TRAINER_PIC_SWIMMER_F 66 +#define TRAINER_PIC_TWINS 67 +#define TRAINER_PIC_SAILOR 68 +#define TRAINER_PIC_MAGMA_ADMIN 69 +#define TRAINER_PIC_WALLY 70 +#define TRAINER_PIC_BRENDAN 71 +#define TRAINER_PIC_MAY 72 +#define TRAINER_PIC_BUG_CATCHER 73 +#define TRAINER_PIC_POKEMON_RANGER_M 74 +#define TRAINER_PIC_POKEMON_RANGER_F 75 +#define TRAINER_PIC_MAGMA_LEADER_MAXIE 76 +#define TRAINER_PIC_LASS 77 +#define TRAINER_PIC_YOUNG_COUPLE 78 +#define TRAINER_PIC_OLD_COUPLE 79 +#define TRAINER_PIC_SIS_AND_BRO 80 +#define TRAINER_PIC_STEVEN 81 +#define TRAINER_PIC_SALON_MAIDEN_ANABEL 82 +#define TRAINER_PIC_DOME_ACE_TUCKER 83 +#define TRAINER_PIC_PALACE_MAVEN_SPENSER 84 +#define TRAINER_PIC_ARENA_TYCOON_GRETA 85 +#define TRAINER_PIC_FACTORY_HEAD_NOLAND 86 +#define TRAINER_PIC_PIKE_QUEEN_LUCY 87 +#define TRAINER_PIC_PYRAMID_KING_BRANDON 88 +#define TRAINER_PIC_RED 89 +#define TRAINER_PIC_LEAF 90 +#define TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN 91 +#define TRAINER_PIC_RUBY_SAPPHIRE_MAY 92 + +#define TRAINER_BACK_PIC_BRENDAN 0 +#define TRAINER_BACK_PIC_MAY 1 +#define TRAINER_BACK_PIC_RED 2 +#define TRAINER_BACK_PIC_LEAF 3 +#define TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN 4 +#define TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY 5 +#define TRAINER_BACK_PIC_WALLY 6 +#define TRAINER_BACK_PIC_STEVEN 7 + +#define FACILITY_CLASS_HIKER 0x0 +#define FACILITY_CLASS_TEAM_AQUA_1 0x1 +#define FACILITY_CLASS_PKMN_BREEDER_1 0x2 +#define FACILITY_CLASS_COOLTRAINER_M 0x3 +#define FACILITY_CLASS_BIRD_KEEPER 0x4 +#define FACILITY_CLASS_COLLECTOR 0x5 +#define FACILITY_CLASS_TEAM_AQUA_2 0x6 +#define FACILITY_CLASS_SWIMMER_M 0x7 +#define FACILITY_CLASS_TEAM_MAGMA_1 0x8 +#define FACILITY_CLASS_EXPERT_M 0x9 +#define FACILITY_CLASS_BLACK_BELT 0xa +#define FACILITY_CLASS_AQUA_LEADER 0xb +#define FACILITY_CLASS_HEX_MANIAC 0xc +#define FACILITY_CLASS_AROMA_LADY 0xd +#define FACILITY_CLASS_RUIN_MANIAC 0xe +#define FACILITY_CLASS_INTERVIEWER 0xf +#define FACILITY_CLASS_TUBER_1 0x10 +#define FACILITY_CLASS_TUBER_2 0x11 +#define FACILITY_CLASS_COOLTRAINER_F 0x12 +#define FACILITY_CLASS_LADY 0x13 +#define FACILITY_CLASS_BEAUTY 0x14 +#define FACILITY_CLASS_RICH_BOY 0x15 +#define FACILITY_CLASS_EXPERT_2 0x16 +#define FACILITY_CLASS_POKEMANIAC 0x17 +#define FACILITY_CLASS_TEAM_MAGMA_2 0x18 +#define FACILITY_CLASS_GUITARIST 0x19 +#define FACILITY_CLASS_KINDLER 0x1a +#define FACILITY_CLASS_CAMPER 0x1b +#define FACILITY_CLASS_PICNICKER 0x1c +#define FACILITY_CLASS_BUG_MANIAC 0x1d +#define FACILITY_CLASS_PSYCHIC_M 0x1e +#define FACILITY_CLASS_PSYCHIC_F 0x1f +#define FACILITY_CLASS_GENTLEMAN 0x20 +#define FACILITY_CLASS_ELITE_FOUR_1 0x21 +#define FACILITY_CLASS_ELITE_FOUR_2 0x22 +#define FACILITY_CLASS_LEADER_1 0x23 +#define FACILITY_CLASS_LEADER_2 0x24 +#define FACILITY_CLASS_LEADER_3 0x25 +#define FACILITY_CLASS_SCHOOL_KID_M 0x26 +#define FACILITY_CLASS_SCHOOL_KID_F 0x27 +#define FACILITY_CLASS_SR_AND_JR 0x28 +#define FACILITY_CLASS_POKEFAN_1 0x29 +#define FACILITY_CLASS_POKEFAN_2 0x2a +#define FACILITY_CLASS_YOUNGSTER 0x2b +#define FACILITY_CLASS_CHAMPION 0x2c +#define FACILITY_CLASS_FISHERMAN 0x2d +#define FACILITY_CLASS_TRIATHLETE_1 0x2e +#define FACILITY_CLASS_TRIATHLETE_2 0x2f +#define FACILITY_CLASS_TRIATHLETE_3 0x30 +#define FACILITY_CLASS_TRIATHLETE_4 0x31 +#define FACILITY_CLASS_TRIATHLETE_5 0x32 +#define FACILITY_CLASS_TRIATHLETE_6 0x33 +#define FACILITY_CLASS_DRAGON_TAMER 0x34 +#define FACILITY_CLASS_NINJA_BOY 0x35 +#define FACILITY_CLASS_BATTLE_GIRL 0x36 +#define FACILITY_CLASS_PARASOL_LADY 0x37 +#define FACILITY_CLASS_SWIMMER_F 0x38 +#define FACILITY_CLASS_TWINS 0x39 +#define FACILITY_CLASS_SAILOR 0x3a +#define FACILITY_CLASS_PKMN_TRAINER_1 0x3b +#define FACILITY_CLASS_PKMN_TRAINER_MAY 0x3c +#define FACILITY_CLASS_PKMN_TRAINER_3 0x3d +#define FACILITY_CLASS_PKMN_TRAINER_4 0x3e +#define FACILITY_CLASS_PKMN_TRAINER_BRENDAN 0x3f +#define FACILITY_CLASS_PKMN_TRAINER_6 0x40 +#define FACILITY_CLASS_PKMN_TRAINER_7 0x41 +#define FACILITY_CLASS_PKMN_BREEDER_2 0x42 +#define FACILITY_CLASS_BUG_CATCHER 0x43 +#define FACILITY_CLASS_PKMN_RANGER_M 0x44 +#define FACILITY_CLASS_PKMN_RANGER_F 0x45 +#define FACILITY_CLASS_MAGMA_LEADER 0x46 +#define FACILITY_CLASS_LASS 0x47 +#define FACILITY_CLASS_YOUNG_COUPLE 0x48 +#define FACILITY_CLASS_OLD_COUPLE 0x49 +#define FACILITY_CLASS_SIS_AND_BRO 0x4a +#define FACILITY_CLASS_PKMN_TRAINER_STEVEN 0x4b +#define FACILITY_CLASS_SALON_MAIDEN 0x4c +#define FACILITY_CLASS_DOME_ACE 0x4d +#define FACILITY_CLASS_PKMN_TRAINER_RED 0x4e +#define FACILITY_CLASS_PKMN_TRAINER_LEAF 0x4f +#define FACILITY_CLASS_PKMN_TRAINER_RS_BRENDAN 0x50 +#define FACILITY_CLASS_PKMN_TRAINER_RS_MAY 0x51 + +#define TRAINER_CLASS_PKMN_TRAINER_1 0x0 +#define TRAINER_CLASS_PKMN_TRAINER_2 0x1 +#define TRAINER_CLASS_HIKER 0x2 +#define TRAINER_CLASS_TEAM_AQUA 0x3 +#define TRAINER_CLASS_PKMN_BREEDER 0x4 +#define TRAINER_CLASS_COOLTRAINER_1 0x5 +#define TRAINER_CLASS_BIRD_KEEPER 0x6 +#define TRAINER_CLASS_COLLECTOR 0x7 +#define TRAINER_CLASS_SWIMMER_M 0x8 +#define TRAINER_CLASS_TEAM_MAGMA 0x9 +#define TRAINER_CLASS_EXPERT 0xa +#define TRAINER_CLASS_AQUA_ADMIN 0xb +#define TRAINER_CLASS_BLACK_BELT 0xc +#define TRAINER_CLASS_AQUA_LEADER 0xd +#define TRAINER_CLASS_HEX_MANIAC 0xe +#define TRAINER_CLASS_AROMA_LADY 0xf +#define TRAINER_CLASS_RUIN_MANIAC 0x10 +#define TRAINER_CLASS_INTERVIEWER 0x11 +#define TRAINER_CLASS_TUBER_1 0x12 +#define TRAINER_CLASS_TUBER_2 0x13 +#define TRAINER_CLASS_LADY 0x14 +#define TRAINER_CLASS_BEAUTY 0x15 +#define TRAINER_CLASS_RICH_BOY 0x16 +#define TRAINER_CLASS_POKEMANIAC 0x17 +#define TRAINER_CLASS_GUITARIST 0x18 +#define TRAINER_CLASS_KINDLER 0x19 +#define TRAINER_CLASS_CAMPER 0x1a +#define TRAINER_CLASS_PICNICKER 0x1b +#define TRAINER_CLASS_BUG_MANIAC 0x1c +#define TRAINER_CLASS_PSYCHIC 0x1d +#define TRAINER_CLASS_GENTLEMAN 0x1e +#define TRAINER_CLASS_ELITE_FOUR 0x1f +#define TRAINER_CLASS_LEADER 0x20 +#define TRAINER_CLASS_SCHOOL_KID 0x21 +#define TRAINER_CLASS_SR_AND_JR 0x22 +#define TRAINER_CLASS_WINSTRATE 0x23 +#define TRAINER_CLASS_POKEFAN 0x24 +#define TRAINER_CLASS_YOUNGSTER 0x25 +#define TRAINER_CLASS_CHAMPION 0x26 +#define TRAINER_CLASS_FISHERMAN 0x27 +#define TRAINER_CLASS_TRIATHLETE 0x28 +#define TRAINER_CLASS_DRAGON_TAMER 0x29 +#define TRAINER_CLASS_NINJA_BOY 0x2a +#define TRAINER_CLASS_BATTLE_GIRL 0x2b +#define TRAINER_CLASS_PARASOL_LADY 0x2c +#define TRAINER_CLASS_SWIMMER_F 0x2d +#define TRAINER_CLASS_TWINS 0x2e +#define TRAINER_CLASS_SAILOR 0x2f +#define TRAINER_CLASS_COOLTRAINER_2 0x30 +#define TRAINER_CLASS_MAGMA_ADMIN 0x31 +#define TRAINER_CLASS_PKMN_TRAINER_3 0x32 +#define TRAINER_CLASS_BUG_CATCHER 0x33 +#define TRAINER_CLASS_PKMN_RANGER 0x34 +#define TRAINER_CLASS_MAGMA_LEADER 0x35 +#define TRAINER_CLASS_LASS 0x36 +#define TRAINER_CLASS_YOUNG_COUPLE 0x37 +#define TRAINER_CLASS_OLD_COUPLE 0x38 +#define TRAINER_CLASS_SIS_AND_BRO 0x39 +#define TRAINER_CLASS_SALON_MAIDEN 0x3a +#define TRAINER_CLASS_DOME_ACE 0x3b +#define TRAINER_CLASS_PALACE_MAVEN 0x3c +#define TRAINER_CLASS_ARENA_TYCOON 0x3d +#define TRAINER_CLASS_FACTORY_HEAD 0x3e +#define TRAINER_CLASS_PIKE_QUEEN 0x3f +#define TRAINER_CLASS_PYRAMID_KING 0x40 +#define TRAINER_CLASS_PKMN_TRAINER_4 0x41 + +#define TRAINER_ENCOUNTER_MUSIC_MALE 0 // standard male encounter music +#define TRAINER_ENCOUNTER_MUSIC_FEMALE 1 // standard female encounter music +#define TRAINER_ENCOUNTER_MUSIC_GIRL 2 // used for male Tubers and Young Couples too +#define TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS 3 +#define TRAINER_ENCOUNTER_MUSIC_INTENSE 4 +#define TRAINER_ENCOUNTER_MUSIC_COOL 5 +#define TRAINER_ENCOUNTER_MUSIC_AQUA 6 +#define TRAINER_ENCOUNTER_MUSIC_MAGMA 7 +#define TRAINER_ENCOUNTER_MUSIC_SWIMMER 8 +#define TRAINER_ENCOUNTER_MUSIC_TWINS 9 // used for other trainer classes too +#define TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR 10 +#define TRAINER_ENCOUNTER_MUSIC_HIKER 11 // used for other trainer classes too +#define TRAINER_ENCOUNTER_MUSIC_INTERVIEWER 12 +#define TRAINER_ENCOUNTER_MUSIC_RICH 13 // Rich Boys and Gentlemen + +#define F_TRAINER_FEMALE (1 << 7) + +// All trainer parties specify the IV, level, and species for each Pokémon in the +// party. Some trainer parties also specify held items and custom moves for each +// Pokémon. +#define F_TRAINER_PARTY_CUSTOM_MOVESET (1 << 0) +#define F_TRAINER_PARTY_HELD_ITEM (1 << 1) + +#endif // GUARD_TRAINERS_H diff --git a/include/constants/vars.h b/include/constants/vars.h new file mode 100644 index 000000000..ed4a7797b --- /dev/null +++ b/include/constants/vars.h @@ -0,0 +1,300 @@ +#ifndef GUARD_CONSTANTS_VARS_H +#define GUARD_CONSTANTS_VARS_H + +#define VAR_0x3F20 0x3F20 + +#define VARS_START 0x4000 + +// temporary vars +// The first 0x10 vars are are temporary--they are cleared every time a map is loaded. +#define VAR_TEMP_0 0x4000 +#define VAR_TEMP_1 0x4001 +#define VAR_TEMP_2 0x4002 +#define VAR_TEMP_3 0x4003 +#define VAR_TEMP_4 0x4004 +#define VAR_TEMP_5 0x4005 +#define VAR_TEMP_6 0x4006 +#define VAR_TEMP_7 0x4007 +#define VAR_TEMP_8 0x4008 +#define VAR_TEMP_9 0x4009 +#define VAR_TEMP_A 0x400A +#define VAR_TEMP_B 0x400B +#define VAR_TEMP_C 0x400C +#define VAR_TEMP_D 0x400D +#define VAR_TEMP_E 0x400E +#define VAR_TEMP_F 0x400F + +// object gfx id vars +// These 0x10 vars are used to dynamically control a map object's sprite. +// For example, the rival's sprite id is dynamically set based on the player's gender. +// See VarGetEventObjectGraphicsId(). +#define VAR_OBJ_GFX_ID_0 0x4010 +#define VAR_OBJ_GFX_ID_1 0x4011 +#define VAR_OBJ_GFX_ID_2 0x4012 +#define VAR_OBJ_GFX_ID_3 0x4013 +#define VAR_OBJ_GFX_ID_4 0x4014 +#define VAR_OBJ_GFX_ID_5 0x4015 +#define VAR_OBJ_GFX_ID_6 0x4016 +#define VAR_OBJ_GFX_ID_7 0x4017 +#define VAR_OBJ_GFX_ID_8 0x4018 +#define VAR_OBJ_GFX_ID_9 0x4019 +#define VAR_OBJ_GFX_ID_A 0x401A +#define VAR_OBJ_GFX_ID_B 0x401B +#define VAR_OBJ_GFX_ID_C 0x401C +#define VAR_OBJ_GFX_ID_D 0x401D +#define VAR_OBJ_GFX_ID_E 0x401E +#define VAR_OBJ_GFX_ID_F 0x401F + +// general purpose vars +#define VAR_RECYCLE_GOODS 0x4020 +#define VAR_REPEL_STEP_COUNT 0x4021 +#define VAR_ICE_STEP_COUNT 0x4022 +#define VAR_FIRST_POKE 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip +#define VAR_MIRAGE_RND_H 0x4024 +#define VAR_MIRAGE_RND_L 0x4025 +#define VAR_SECRET_BASE_MAP 0x4026 +#define VAR_0x4027 0x4027 +#define VAR_0x4028 0x4028 +#define VAR_0x4029 0x4029 +#define VAR_HAPPINESS_STEP_COUNTER 0x402A +#define VAR_POISON_STEP_COUNTER 0x402B +#define VAR_RESET_RTC_ENABLE 0x402C +#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D +#define VAR_0x402E 0x402E + +#define VAR_FRONTIER_MANIAC_FACILITY 0x402F +#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030 +#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031 +#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032 +#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033 + +#define VAR_0x4034 0x4034 +#define VAR_0x4035 0x4035 +#define VAR_STORAGE_UNKNOWN 0x4036 +#define VAR_0x4037 0x4037 +#define VAR_0x4038 0x4038 +#define VAR_0x4039 0x4039 +#define VAR_0x403A 0x403A +#define VAR_0x403B 0x403B +#define VAR_0x403C 0x403C +#define VAR_0x403D 0x403D +#define VAR_ALTERING_CAVE_WILD_SET 0x403E +#define VAR_0x403F 0x403F +#define VAR_DAYS 0x4040 +#define VAR_0x4041 0x4041 +#define VAR_0x4042 0x4042 +#define VAR_DEPT_STORE_FLOOR 0x4043 +#define VAR_0x4044 0x4044 +#define VAR_POKELOT_PRIZE 0x4045 +#define VAR_NATIONAL_DEX 0x4046 +#define VAR_SEEDOT_SIZE_RECORD 0x4047 +#define VAR_ASH_GATHER_COUNT 0x4048 +#define VAR_BIRCH_STATE 0x4049 +#define VAR_CRUISE_STEP_COUNT 0x404A +#define VAR_POKELOT_RND1 0x404B +#define VAR_POKELOT_RND2 0x404C +#define VAR_0x404D 0x404D +#define VAR_0x404E 0x404E +#define VAR_LOTAD_SIZE_RECORD 0x404F +#define VAR_0x4050 0x4050 +#define VAR_0x4051 0x4051 +#define VAR_0x4052 0x4052 +#define VAR_0x4053 0x4053 +#define VAR_0x4054 0x4054 +#define VAR_0x4055 0x4055 +#define VAR_0x4056 0x4056 +#define VAR_0x4057 0x4057 +#define VAR_0x4058 0x4058 +#define VAR_0x4059 0x4059 +#define VAR_0x405A 0x405A +#define VAR_0x405B 0x405B +#define VAR_0x405C 0x405C +#define VAR_0x405D 0x405D +#define VAR_0x405E 0x405E +#define VAR_0x405F 0x405F +#define VAR_0x4060 0x4060 +#define VAR_0x4061 0x4061 +#define VAR_0x4062 0x4062 +#define VAR_0x4063 0x4063 +#define VAR_0x4064 0x4064 +#define VAR_0x4065 0x4065 +#define VAR_0x4066 0x4066 +#define VAR_0x4067 0x4067 +#define VAR_0x4068 0x4068 +#define VAR_0x4069 0x4069 +#define VAR_0x406A 0x406A +#define VAR_0x406B 0x406B +#define VAR_0x406C 0x406C +#define VAR_0x406D 0x406D +#define VAR_0x406E 0x406E +#define VAR_0x406F 0x406F +#define VAR_0x4070 0x4070 +#define VAR_0x4071 0x4071 +#define VAR_0x4072 0x4072 +#define VAR_0x4073 0x4073 +#define VAR_0x4074 0x4074 +#define VAR_0x4075 0x4075 +#define VAR_0x4076 0x4076 +#define VAR_0x4077 0x4077 +#define VAR_0x4078 0x4078 +#define VAR_0x4079 0x4079 +#define VAR_0x407A 0x407A +#define VAR_0x407B 0x407B +#define VAR_0x407C 0x407C +#define VAR_0x407D 0x407D +#define VAR_0x407E 0x407E +#define VAR_0x407F 0x407F +#define VAR_0x4080 0x4080 +#define VAR_0x4081 0x4081 +#define VAR_0x4082 0x4082 +#define VAR_0x4083 0x4083 +#define VAR_0x4084 0x4084 +#define VAR_0x4085 0x4085 +#define VAR_0x4086 0x4086 +#define VAR_0x4087 0x4087 +#define VAR_0x4088 0x4088 +#define VAR_0x4089 0x4089 +#define VAR_0x408A 0x408A +#define VAR_0x408B 0x408B +#define VAR_0x408C 0x408C +#define VAR_0x408D 0x408D +#define VAR_0x408E 0x408E +#define VAR_0x408F 0x408F +#define VAR_0x4090 0x4090 +#define VAR_0x4091 0x4091 +#define VAR_0x4092 0x4092 +#define VAR_0x4093 0x4093 +#define VAR_0x4094 0x4094 +#define VAR_0x4095 0x4095 +#define VAR_0x4096 0x4096 +#define VAR_0x4097 0x4097 +#define VAR_0x4098 0x4098 +#define VAR_0x4099 0x4099 +#define VAR_0x409A 0x409A +#define VAR_0x409B 0x409B +#define VAR_0x409C 0x409C +#define VAR_0x409D 0x409D +#define VAR_0x409E 0x409E +#define VAR_0x409F 0x409F +#define VAR_0x40A0 0x40A0 +#define VAR_0x40A1 0x40A1 +#define VAR_0x40A2 0x40A2 +#define VAR_0x40A3 0x40A3 +#define VAR_0x40A4 0x40A4 +#define VAR_0x40A5 0x40A5 +#define VAR_0x40A6 0x40A6 +#define VAR_0x40A7 0x40A7 +#define VAR_0x40A8 0x40A8 +#define VAR_0x40A9 0x40A9 +#define VAR_0x40AA 0x40AA +#define VAR_0x40AB 0x40AB +#define VAR_0x40AC 0x40AC +#define VAR_0x40AD 0x40AD +#define VAR_0x40AE 0x40AE +#define VAR_0x40AF 0x40AF +#define VAR_0x40B0 0x40B0 +#define VAR_0x40B1 0x40B1 +#define VAR_0x40B2 0x40B2 +#define VAR_WEATHER_INSTITUTE_STATE 0x40B3 +#define VAR_PORTHOLE 0x40B4 +#define VAR_0x40B5 0x40B5 +#define VAR_0x40B6 0x40B6 +#define VAR_0x40B7 0x40B7 +#define VAR_0x40B8 0x40B8 +#define VAR_0x40B9 0x40B9 +#define VAR_0x40BA 0x40BA +#define VAR_0x40BB 0x40BB +#define VAR_0x40BC 0x40BC +#define VAR_0x40BD 0x40BD +#define VAR_0x40BE 0x40BE +#define VAR_0x40BF 0x40BF +#define VAR_0x40C0 0x40C0 +#define VAR_0x40C1 0x40C1 +#define VAR_0x40C2 0x40C2 +#define VAR_0x40C3 0x40C3 +#define VAR_0x40C4 0x40C4 +#define VAR_0x40C5 0x40C5 +#define VAR_0x40C6 0x40C6 +#define VAR_0x40C7 0x40C7 +#define VAR_0x40C8 0x40C8 +#define VAR_0x40C9 0x40C9 +#define VAR_0x40CA 0x40CA +#define VAR_0x40CB 0x40CB +#define VAR_0x40CC 0x40CC +#define VAR_0x40CD 0x40CD +#define VAR_0x40CE 0x40CE +#define VAR_FRONTIER_FACILITY 0x40CF +#define VAR_0x40D0 0x40D0 +#define VAR_0x40D1 0x40D1 +#define VAR_0x40D2 0x40D2 +#define VAR_0x40D3 0x40D3 +#define VAR_0x40D4 0x40D4 +#define VAR_0x40D5 0x40D5 +#define VAR_0x40D6 0x40D6 +#define VAR_0x40D7 0x40D7 +#define VAR_0x40D8 0x40D8 +#define VAR_0x40D9 0x40D9 +#define VAR_0x40DA 0x40DA +#define VAR_0x40DB 0x40DB +#define VAR_0x40DC 0x40DC +#define VAR_EVENT_PICHU_SLOT 0x40DD +#define VAR_0x40DE 0x40DE +#define VAR_0x40DF 0x40DF +#define VAR_0x40E0 0x40E0 +#define VAR_0x40E1 0x40E1 +#define VAR_0x40E2 0x40E2 +#define VAR_0x40E3 0x40E3 +#define VAR_0x40E4 0x40E4 +#define VAR_0x40E5 0x40E5 +#define VAR_DAILY_SLOTS 0x40E6 +#define VAR_DAILY_WILDS 0x40E7 +#define VAR_DAILY_BLENDER 0x40E8 +#define VAR_DAILY_PLANTED_BERRIES 0x40E9 +#define VAR_DAILY_PICKED_BERRIES 0x40EA +#define VAR_DAILY_ROULETTE 0x40EB +#define VAR_0x40EC 0x40EC +#define VAR_0x40ED 0x40ED +#define VAR_0x40EE 0x40EE +#define VAR_0x40EF 0x40EF +#define VAR_0x40F0 0x40F0 +#define VAR_DAILY_BP 0x40F1 +#define VAR_0x40F2 0x40F2 +#define VAR_0x40F3 0x40F3 +#define VAR_0x40F4 0x40F4 +#define VAR_0x40F5 0x40F5 +#define VAR_0x40F6 0x40F6 +#define VAR_0x40F7 0x40F7 +#define VAR_0x40F8 0x40F8 +#define VAR_0x40F9 0x40F9 +#define VAR_0x40FA 0x40FA +#define VAR_0x40FB 0x40FB +#define VAR_0x40FC 0x40FC +#define VAR_0x40FD 0x40FD +#define VAR_0x40FE 0x40FE +#define VAR_0x40FF 0x40FF + +// special vars +// They are commonly used as parameters to commands, or return values from commands. +#define VAR_0x8000 0x8000 +#define VAR_0x8001 0x8001 +#define VAR_0x8002 0x8002 +#define VAR_0x8003 0x8003 +#define VAR_0x8004 0x8004 +#define VAR_0x8005 0x8005 +#define VAR_0x8006 0x8006 +#define VAR_0x8007 0x8007 +#define VAR_0x8008 0x8008 +#define VAR_0x8009 0x8009 +#define VAR_0x800A 0x800A +#define VAR_0x800B 0x800B +#define VAR_FACING 0x800C +#define VAR_RESULT 0x800D +#define VAR_ITEM_ID 0x800E +#define VAR_LAST_TALKED 0x800F +#define VAR_CONTEST_RANK 0x8010 +#define VAR_CONTEST_CATEGORY 0x8011 +#define VAR_MON_BOX_ID 0x8012 +#define VAR_MON_BOX_POS 0x8013 +#define VAR_0x8014 0x8014 + +#endif // GUARD_CONSTANTS_VARS_H diff --git a/include/constants/weather.h b/include/constants/weather.h new file mode 100644 index 000000000..953cc2753 --- /dev/null +++ b/include/constants/weather.h @@ -0,0 +1,39 @@ +#ifndef GUARD_CONSTANTS_WEATHER_H +#define GUARD_CONSTANTS_WEATHER_H + +#define WEATHER_NONE 0 +#define WEATHER_CLOUDS 1 +#define WEATHER_SUNNY 2 +#define WEATHER_RAIN_LIGHT 3 +#define WEATHER_SNOW 4 +#define WEATHER_RAIN_MED 5 +#define WEATHER_FOG_1 6 +#define WEATHER_ASH 7 +#define WEATHER_SANDSTORM 8 +#define WEATHER_FOG_2 9 +#define WEATHER_FOG_3 10 +#define WEATHER_SHADE 11 +#define WEATHER_DROUGHT 12 +#define WEATHER_RAIN_HEAVY 13 +#define WEATHER_BUBBLES 14 +#define WEATHER_ROUTE119_CYCLE 20 +#define WEATHER_ROUTE123_CYCLE 21 + +// These are used in maps' coord_weather_event entries. +// They are not a one-to-one mapping with the engine's +// internal weather constants above. +#define COORD_EVENT_WEATHER_CLOUDS 1 +#define COORD_EVENT_WEATHER_SUNNY 2 +#define COORD_EVENT_WEATHER_RAIN_LIGHT 3 +#define COORD_EVENT_WEATHER_SNOW 4 +#define COORD_EVENT_WEATHER_RAIN_MED 5 +#define COORD_EVENT_WEATHER_FOG_1 6 +#define COORD_EVENT_WEATHER_FOG_2 7 +#define COORD_EVENT_WEATHER_ASH 8 +#define COORD_EVENT_WEATHER_SANDSTORM 9 +#define COORD_EVENT_WEATHER_SHADE 10 +#define COORD_EVENT_WEATHER_DROUGHT 11 +#define COORD_EVENT_WEATHER_ROUTE119_CYCLE 20 +#define COORD_EVENT_WEATHER_ROUTE123_CYCLE 21 + +#endif // GUARD_CONSTANTS_WEATHER_H diff --git a/include/contest.h b/include/contest.h index d920117f3..c263882eb 100644 --- a/include/contest.h +++ b/include/contest.h @@ -1,6 +1,21 @@ #ifndef GUARD_CONTEST_H #define GUARD_CONTEST_H +struct ContestMove +{ + u8 effect; + u8 contestCategory:3; + u8 comboStarterId; + u8 comboMoves[4]; +}; + +struct ContestEffect +{ + u8 effectType; + u8 appeal; + u8 jam; +}; + struct ContestStruct_02039E00 { u16 unk_00; diff --git a/include/coord_event_weather.h b/include/coord_event_weather.h new file mode 100644 index 000000000..86fb48793 --- /dev/null +++ b/include/coord_event_weather.h @@ -0,0 +1,6 @@ +#ifndef GUARD_COORD_EVENT_WEATHER_H +#define GUARD_COORD_EVENT_WEATHER_H + +void DoCoordEventWeather(u8); + +#endif // GUARD_COORD_EVENT_WEATHER_H diff --git a/include/credits.h b/include/credits.h new file mode 100644 index 000000000..faad1058a --- /dev/null +++ b/include/credits.h @@ -0,0 +1,11 @@ +#ifndef GUARD_CREDITS_H +#define GUARD_CREDITS_H + +// Exported type declarations + +// Exported RAM declarations +extern EWRAM_DATA bool8 gHasHallOfFameRecords; + +// Exported ROM declarations + +#endif //GUARD_CREDITS_H diff --git a/include/crt0.h b/include/crt0.h new file mode 100644 index 000000000..3121eeaed --- /dev/null +++ b/include/crt0.h @@ -0,0 +1,11 @@ +#ifndef GUARD_CRT0_H +#define GUARD_CRT0_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations +extern u32 IntrMain[]; + +#endif //GUARD_CRT0_H diff --git a/include/data/bard_music/pokemon.h b/include/data/bard_music/pokemon.h index 7b4081a3c..693005360 100644 --- a/include/data/bard_music/pokemon.h +++ b/include/data/bard_music/pokemon.h @@ -1,6 +1,6 @@ #ifndef GUARD_DATA_BARD_MUSIC_POKEMON_H #define GUARD_DATA_BARD_MUSIC_POKEMON_H -#include "species.h" +#include "constants/species.h" const u16 gUnknown_085F5490 = NUM_SPECIES; diff --git a/include/data/battle_moves.h b/include/data/battle_moves.h new file mode 100644 index 000000000..00a6f7fdb --- /dev/null +++ b/include/data/battle_moves.h @@ -0,0 +1,3913 @@ +#ifndef GUARD_DATA_BATTLE_MOVES +#define GUARD_DATA_BATTLE_MOVES + +const struct BattleMove gBattleMoves[MOVES_COUNT] = +{ + { // MOVE_NONE + .effect = EFFECT_HIT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 0, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_POUND + .effect = EFFECT_HIT, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_KARATE_CHOP + .effect = EFFECT_HIGH_CRITICAL, + .power = 50, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DOUBLE_SLAP + .effect = EFFECT_MULTI_HIT, + .power = 15, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_COMET_PUNCH + .effect = EFFECT_MULTI_HIT, + .power = 18, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MEGA_PUNCH + .effect = EFFECT_HIT, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_PAY_DAY + .effect = EFFECT_PAY_DAY, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FIRE_PUNCH + .effect = EFFECT_BURN_HIT, + .power = 75, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ICE_PUNCH + .effect = EFFECT_FREEZE_HIT, + .power = 75, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_THUNDER_PUNCH + .effect = EFFECT_PARALYZE_HIT, + .power = 75, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SCRATCH + .effect = EFFECT_HIT, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_VICE_GRIP + .effect = EFFECT_HIT, + .power = 55, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_GUILLOTINE + .effect = EFFECT_OHKO, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 30, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_RAZOR_WIND + .effect = EFFECT_RAZOR_WIND, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SWORDS_DANCE + .effect = EFFECT_ATTACK_UP_2, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_CUT + .effect = EFFECT_HIT, + .power = 50, + .type = TYPE_NORMAL, + .accuracy = 95, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_GUST + .effect = EFFECT_GUST, + .power = 40, + .type = TYPE_FLYING, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_WING_ATTACK + .effect = EFFECT_HIT, + .power = 60, + .type = TYPE_FLYING, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_WHIRLWIND + .effect = EFFECT_ROAR, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = -6, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FLY + .effect = EFFECT_SEMI_INVULNERABLE, + .power = 70, + .type = TYPE_FLYING, + .accuracy = 95, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BIND + .effect = EFFECT_TRAP, + .power = 15, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SLAM + .effect = EFFECT_HIT, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_VINE_WHIP + .effect = EFFECT_HIT, + .power = 35, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_STOMP + .effect = EFFECT_FLINCH_MINIMIZE_HIT, + .power = 65, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DOUBLE_KICK + .effect = EFFECT_DOUBLE_HIT, + .power = 30, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MEGA_KICK + .effect = EFFECT_HIT, + .power = 120, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_JUMP_KICK + .effect = EFFECT_RECOIL_IF_MISS, + .power = 70, + .type = TYPE_FIGHTING, + .accuracy = 95, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ROLLING_KICK + .effect = EFFECT_FLINCH_HIT, + .power = 60, + .type = TYPE_FIGHTING, + .accuracy = 85, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SAND_ATTACK + .effect = EFFECT_ACCURACY_DOWN, + .power = 0, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HEADBUTT + .effect = EFFECT_FLINCH_HIT, + .power = 70, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HORN_ATTACK + .effect = EFFECT_HIT, + .power = 65, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FURY_ATTACK + .effect = EFFECT_MULTI_HIT, + .power = 15, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_HORN_DRILL + .effect = EFFECT_OHKO, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 30, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_TACKLE + .effect = EFFECT_HIT, + .power = 35, + .type = TYPE_NORMAL, + .accuracy = 95, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BODY_SLAM + .effect = EFFECT_PARALYZE_HIT, + .power = 85, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_WRAP + .effect = EFFECT_TRAP, + .power = 15, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_TAKE_DOWN + .effect = EFFECT_RECOIL, + .power = 90, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_THRASH + .effect = EFFECT_RAMPAGE, + .power = 90, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_RANDOM, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DOUBLE_EDGE + .effect = EFFECT_DOUBLE_EDGE, + .power = 120, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_TAIL_WHIP + .effect = EFFECT_DEFENSE_DOWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_POISON_STING + .effect = EFFECT_POISON_HIT, + .power = 15, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_TWINEEDLE + .effect = EFFECT_TWINEEDLE, + .power = 25, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PIN_MISSILE + .effect = EFFECT_MULTI_HIT, + .power = 14, + .type = TYPE_BUG, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_LEER + .effect = EFFECT_DEFENSE_DOWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BITE + .effect = EFFECT_FLINCH_HIT, + .power = 60, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_GROWL + .effect = EFFECT_ATTACK_DOWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ROAR + .effect = EFFECT_ROAR, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = -6, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SING + .effect = EFFECT_SLEEP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 55, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SUPERSONIC + .effect = EFFECT_CONFUSE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 55, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SONIC_BOOM + .effect = EFFECT_SONICBOOM, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DISABLE + .effect = EFFECT_DISABLE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 55, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ACID + .effect = EFFECT_DEFENSE_DOWN_HIT, + .power = 40, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_EMBER + .effect = EFFECT_BURN_HIT, + .power = 40, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FLAMETHROWER + .effect = EFFECT_BURN_HIT, + .power = 95, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MIST + .effect = EFFECT_MIST, + .power = 0, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_WATER_GUN + .effect = EFFECT_HIT, + .power = 40, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_HYDRO_PUMP + .effect = EFFECT_HIT, + .power = 120, + .type = TYPE_WATER, + .accuracy = 80, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SURF + .effect = EFFECT_HIT, + .power = 95, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ICE_BEAM + .effect = EFFECT_FREEZE_HIT, + .power = 95, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BLIZZARD + .effect = EFFECT_FREEZE_HIT, + .power = 120, + .type = TYPE_ICE, + .accuracy = 70, + .pp = 5, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PSYBEAM + .effect = EFFECT_CONFUSE_HIT, + .power = 65, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BUBBLE_BEAM + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 65, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_AURORA_BEAM + .effect = EFFECT_ATTACK_DOWN_HIT, + .power = 65, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HYPER_BEAM + .effect = EFFECT_RECHARGE, + .power = 150, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_PECK + .effect = EFFECT_HIT, + .power = 35, + .type = TYPE_FLYING, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DRILL_PECK + .effect = EFFECT_HIT, + .power = 80, + .type = TYPE_FLYING, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SUBMISSION + .effect = EFFECT_RECOIL, + .power = 80, + .type = TYPE_FIGHTING, + .accuracy = 80, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_LOW_KICK + .effect = EFFECT_LOW_KICK, + .power = 1, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_COUNTER + .effect = EFFECT_COUNTER, + .power = 1, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = -5, + .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SEISMIC_TOSS + .effect = EFFECT_LEVEL_DAMAGE, + .power = 1, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_STRENGTH + .effect = EFFECT_HIT, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ABSORB + .effect = EFFECT_ABSORB, + .power = 20, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MEGA_DRAIN + .effect = EFFECT_ABSORB, + .power = 40, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_LEECH_SEED + .effect = EFFECT_LEECH_SEED, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_GROWTH + .effect = EFFECT_SPECIAL_ATTACK_UP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_RAZOR_LEAF + .effect = EFFECT_HIGH_CRITICAL, + .power = 55, + .type = TYPE_GRASS, + .accuracy = 95, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SOLAR_BEAM + .effect = EFFECT_SOLARBEAM, + .power = 120, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_POISON_POWDER + .effect = EFFECT_POISON, + .power = 0, + .type = TYPE_POISON, + .accuracy = 75, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_STUN_SPORE + .effect = EFFECT_PARALYZE, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 75, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SLEEP_POWDER + .effect = EFFECT_SLEEP, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 75, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PETAL_DANCE + .effect = EFFECT_RAMPAGE, + .power = 70, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_RANDOM, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_STRING_SHOT + .effect = EFFECT_SPEED_DOWN, + .power = 0, + .type = TYPE_BUG, + .accuracy = 95, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DRAGON_RAGE + .effect = EFFECT_DRAGON_RAGE, + .power = 1, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FIRE_SPIN + .effect = EFFECT_TRAP, + .power = 15, + .type = TYPE_FIRE, + .accuracy = 70, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_THUNDER_SHOCK + .effect = EFFECT_PARALYZE_HIT, + .power = 40, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_THUNDERBOLT + .effect = EFFECT_PARALYZE_HIT, + .power = 95, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_THUNDER_WAVE + .effect = EFFECT_PARALYZE, + .power = 0, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_THUNDER + .effect = EFFECT_THUNDER, + .power = 120, + .type = TYPE_ELECTRIC, + .accuracy = 70, + .pp = 10, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ROCK_THROW + .effect = EFFECT_HIT, + .power = 50, + .type = TYPE_ROCK, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_EARTHQUAKE + .effect = EFFECT_EARTHQUAKE, + .power = 100, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_FOES_AND_ALLY, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FISSURE + .effect = EFFECT_OHKO, + .power = 1, + .type = TYPE_GROUND, + .accuracy = 30, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DIG + .effect = EFFECT_SEMI_INVULNERABLE, + .power = 60, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_TOXIC + .effect = EFFECT_TOXIC, + .power = 0, + .type = TYPE_POISON, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_CONFUSION + .effect = EFFECT_CONFUSE_HIT, + .power = 50, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PSYCHIC + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, + .power = 90, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HYPNOSIS + .effect = EFFECT_SLEEP, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 60, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MEDITATE + .effect = EFFECT_ATTACK_UP, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_AGILITY + .effect = EFFECT_SPEED_UP_2, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_QUICK_ATTACK + .effect = EFFECT_QUICK_ATTACK, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 1, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_RAGE + .effect = EFFECT_RAGE, + .power = 20, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_TELEPORT + .effect = EFFECT_TELEPORT, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_NIGHT_SHADE + .effect = EFFECT_LEVEL_DAMAGE, + .power = 1, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MIMIC + .effect = EFFECT_MIMIC, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_SCREECH + .effect = EFFECT_DEFENSE_DOWN_2, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DOUBLE_TEAM + .effect = EFFECT_EVASION_UP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_RECOVER + .effect = EFFECT_RESTORE_HP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_HARDEN + .effect = EFFECT_DEFENSE_UP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_MINIMIZE + .effect = EFFECT_MINIMIZE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_SMOKESCREEN + .effect = EFFECT_ACCURACY_DOWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_CONFUSE_RAY + .effect = EFFECT_CONFUSE, + .power = 0, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_WITHDRAW + .effect = EFFECT_DEFENSE_UP, + .power = 0, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_DEFENSE_CURL + .effect = EFFECT_DEFENSE_CURL, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_BARRIER + .effect = EFFECT_DEFENSE_UP_2, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_LIGHT_SCREEN + .effect = EFFECT_LIGHT_SCREEN, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_HAZE + .effect = EFFECT_HAZE, + .power = 0, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_REFLECT + .effect = EFFECT_REFLECT, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_FOCUS_ENERGY + .effect = EFFECT_FOCUS_ENERGY, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_BIDE + .effect = EFFECT_BIDE, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_METRONOME + .effect = EFFECT_METRONOME, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 0, + .flags = 0, + }, + { // MOVE_MIRROR_MOVE + .effect = EFFECT_MIRROR_MOVE, + .power = 0, + .type = TYPE_FLYING, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 0, + .flags = 0, + }, + { // MOVE_SELF_DESTRUCT + .effect = EFFECT_EXPLOSION, + .power = 200, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_FOES_AND_ALLY, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_EGG_BOMB + .effect = EFFECT_HIT, + .power = 100, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_LICK + .effect = EFFECT_PARALYZE_HIT, + .power = 20, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SMOG + .effect = EFFECT_POISON_HIT, + .power = 20, + .type = TYPE_POISON, + .accuracy = 70, + .pp = 20, + .secondaryEffectChance = 40, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SLUDGE + .effect = EFFECT_POISON_HIT, + .power = 65, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BONE_CLUB + .effect = EFFECT_FLINCH_HIT, + .power = 65, + .type = TYPE_GROUND, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FIRE_BLAST + .effect = EFFECT_BURN_HIT, + .power = 120, + .type = TYPE_FIRE, + .accuracy = 85, + .pp = 5, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_WATERFALL + .effect = EFFECT_HIT, + .power = 80, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_CLAMP + .effect = EFFECT_TRAP, + .power = 35, + .type = TYPE_WATER, + .accuracy = 75, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SWIFT + .effect = EFFECT_ALWAYS_HIT, + .power = 60, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SKULL_BASH + .effect = EFFECT_SKULL_BASH, + .power = 100, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SPIKE_CANNON + .effect = EFFECT_MULTI_HIT, + .power = 20, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_CONSTRICT + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_AMNESIA + .effect = EFFECT_SPECIAL_DEFENSE_UP_2, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_KINESIS + .effect = EFFECT_ACCURACY_DOWN, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 80, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SOFT_BOILED + .effect = EFFECT_SOFTBOILED, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HI_JUMP_KICK + .effect = EFFECT_RECOIL_IF_MISS, + .power = 85, + .type = TYPE_FIGHTING, + .accuracy = 90, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_GLARE + .effect = EFFECT_PARALYZE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DREAM_EATER + .effect = EFFECT_DREAM_EATER, + .power = 100, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_POISON_GAS + .effect = EFFECT_POISON, + .power = 0, + .type = TYPE_POISON, + .accuracy = 55, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BARRAGE + .effect = EFFECT_MULTI_HIT, + .power = 15, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_LEECH_LIFE + .effect = EFFECT_ABSORB, + .power = 20, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_LOVELY_KISS + .effect = EFFECT_SLEEP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SKY_ATTACK + .effect = EFFECT_SKY_ATTACK, + .power = 140, + .type = TYPE_FLYING, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_TRANSFORM + .effect = EFFECT_TRANSFORM, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_BUBBLE + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 20, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DIZZY_PUNCH + .effect = EFFECT_CONFUSE_HIT, + .power = 70, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SPORE + .effect = EFFECT_SLEEP, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FLASH + .effect = EFFECT_ACCURACY_DOWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 70, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PSYWAVE + .effect = EFFECT_PSYWAVE, + .power = 1, + .type = TYPE_PSYCHIC, + .accuracy = 80, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SPLASH + .effect = EFFECT_SPLASH, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_ACID_ARMOR + .effect = EFFECT_DEFENSE_UP_2, + .power = 0, + .type = TYPE_POISON, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_CRABHAMMER + .effect = EFFECT_HIGH_CRITICAL, + .power = 90, + .type = TYPE_WATER, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_EXPLOSION + .effect = EFFECT_EXPLOSION, + .power = 250, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_FOES_AND_ALLY, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FURY_SWIPES + .effect = EFFECT_MULTI_HIT, + .power = 18, + .type = TYPE_NORMAL, + .accuracy = 80, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BONEMERANG + .effect = EFFECT_DOUBLE_HIT, + .power = 50, + .type = TYPE_GROUND, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_REST + .effect = EFFECT_REST, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_ROCK_SLIDE + .effect = EFFECT_FLINCH_HIT, + .power = 75, + .type = TYPE_ROCK, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HYPER_FANG + .effect = EFFECT_FLINCH_HIT, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SHARPEN + .effect = EFFECT_ATTACK_UP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_CONVERSION + .effect = EFFECT_CONVERSION, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_TRI_ATTACK + .effect = EFFECT_TRI_ATTACK, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SUPER_FANG + .effect = EFFECT_SUPER_FANG, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SLASH + .effect = EFFECT_HIGH_CRITICAL, + .power = 70, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SUBSTITUTE + .effect = EFFECT_SUBSTITUTE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_STRUGGLE + .effect = EFFECT_RECOIL, + .power = 50, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 1, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SKETCH + .effect = EFFECT_SKETCH, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 1, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_TRIPLE_KICK + .effect = EFFECT_TRIPLE_KICK, + .power = 10, + .type = TYPE_FIGHTING, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_THIEF + .effect = EFFECT_THIEF, + .power = 40, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SPIDER_WEB + .effect = EFFECT_MEAN_LOOK, + .power = 0, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MIND_READER + .effect = EFFECT_LOCK_ON, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_NIGHTMARE + .effect = EFFECT_NIGHTMARE, + .power = 0, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FLAME_WHEEL + .effect = EFFECT_THAW_HIT, + .power = 60, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SNORE + .effect = EFFECT_SNORE, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_CURSE + .effect = EFFECT_CURSE, + .power = 0, + .type = TYPE_MYSTERY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_FLAIL + .effect = EFFECT_FLAIL, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_CONVERSION_2 + .effect = EFFECT_CONVERSION_2, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_AEROBLAST + .effect = EFFECT_HIGH_CRITICAL, + .power = 100, + .type = TYPE_FLYING, + .accuracy = 95, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_COTTON_SPORE + .effect = EFFECT_SPEED_DOWN_2, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 85, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_REVERSAL + .effect = EFFECT_FLAIL, + .power = 1, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SPITE + .effect = EFFECT_SPITE, + .power = 0, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_POWDER_SNOW + .effect = EFFECT_FREEZE_HIT, + .power = 40, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PROTECT + .effect = EFFECT_PROTECT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 3, + .flags = 0, + }, + { // MOVE_MACH_PUNCH + .effect = EFFECT_QUICK_ATTACK, + .power = 40, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 1, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SCARY_FACE + .effect = EFFECT_SPEED_DOWN_2, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FAINT_ATTACK + .effect = EFFECT_ALWAYS_HIT, + .power = 60, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SWEET_KISS + .effect = EFFECT_CONFUSE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BELLY_DRUM + .effect = EFFECT_BELLY_DRUM, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_SLUDGE_BOMB + .effect = EFFECT_POISON_HIT, + .power = 90, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MUD_SLAP + .effect = EFFECT_ACCURACY_DOWN_HIT, + .power = 20, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_OCTAZOOKA + .effect = EFFECT_ACCURACY_DOWN_HIT, + .power = 65, + .type = TYPE_WATER, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SPIKES + .effect = EFFECT_SPIKES, + .power = 0, + .type = TYPE_GROUND, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_OPPONENTS_FIELD, + .priority = 0, + .flags = 0, + }, + { // MOVE_ZAP_CANNON + .effect = EFFECT_PARALYZE_HIT, + .power = 100, + .type = TYPE_ELECTRIC, + .accuracy = 50, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FORESIGHT + .effect = EFFECT_FORESIGHT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DESTINY_BOND + .effect = EFFECT_DESTINY_BOND, + .power = 0, + .type = TYPE_GHOST, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_PERISH_SONG + .effect = EFFECT_PERISH_SONG, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_ICY_WIND + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 55, + .type = TYPE_ICE, + .accuracy = 95, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DETECT + .effect = EFFECT_PROTECT, + .power = 0, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 3, + .flags = 0, + }, + { // MOVE_BONE_RUSH + .effect = EFFECT_MULTI_HIT, + .power = 25, + .type = TYPE_GROUND, + .accuracy = 80, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_LOCK_ON + .effect = EFFECT_LOCK_ON, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_OUTRAGE + .effect = EFFECT_RAMPAGE, + .power = 90, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_RANDOM, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SANDSTORM + .effect = EFFECT_SANDSTORM, + .power = 0, + .type = TYPE_ROCK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_GIGA_DRAIN + .effect = EFFECT_ABSORB, + .power = 60, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ENDURE + .effect = EFFECT_ENDURE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 3, + .flags = 0, + }, + { // MOVE_CHARM + .effect = EFFECT_ATTACK_DOWN_2, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ROLLOUT + .effect = EFFECT_ROLLOUT, + .power = 30, + .type = TYPE_ROCK, + .accuracy = 90, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FALSE_SWIPE + .effect = EFFECT_FALSE_SWIPE, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SWAGGER + .effect = EFFECT_SWAGGER, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MILK_DRINK + .effect = EFFECT_SOFTBOILED, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_SNATCH_AFFECTED, + }, + { // MOVE_SPARK + .effect = EFFECT_PARALYZE_HIT, + .power = 65, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FURY_CUTTER + .effect = EFFECT_FURY_CUTTER, + .power = 10, + .type = TYPE_BUG, + .accuracy = 95, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_STEEL_WING + .effect = EFFECT_DEFENSE_UP_HIT, + .power = 70, + .type = TYPE_STEEL, + .accuracy = 90, + .pp = 25, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MEAN_LOOK + .effect = EFFECT_MEAN_LOOK, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ATTRACT + .effect = EFFECT_ATTRACT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SLEEP_TALK + .effect = EFFECT_SLEEP_TALK, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 0, + .flags = 0, + }, + { // MOVE_HEAL_BELL + .effect = EFFECT_HEAL_BELL, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_RETURN + .effect = EFFECT_RETURN, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_PRESENT + .effect = EFFECT_PRESENT, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FRUSTRATION + .effect = EFFECT_FRUSTRATION, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SAFEGUARD + .effect = EFFECT_SAFEGUARD, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_PAIN_SPLIT + .effect = EFFECT_PAIN_SPLIT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SACRED_FIRE + .effect = EFFECT_THAW_HIT, + .power = 100, + .type = TYPE_FIRE, + .accuracy = 95, + .pp = 5, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MAGNITUDE + .effect = EFFECT_MAGNITUDE, + .power = 1, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_FOES_AND_ALLY, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DYNAMIC_PUNCH + .effect = EFFECT_CONFUSE_HIT, + .power = 100, + .type = TYPE_FIGHTING, + .accuracy = 50, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MEGAHORN + .effect = EFFECT_HIT, + .power = 120, + .type = TYPE_BUG, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DRAGON_BREATH + .effect = EFFECT_PARALYZE_HIT, + .power = 60, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BATON_PASS + .effect = EFFECT_BATON_PASS, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_ENCORE + .effect = EFFECT_ENCORE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PURSUIT + .effect = EFFECT_PURSUIT, + .power = 40, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_RAPID_SPIN + .effect = EFFECT_RAPID_SPIN, + .power = 20, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SWEET_SCENT + .effect = EFFECT_EVASION_DOWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_IRON_TAIL + .effect = EFFECT_DEFENSE_DOWN_HIT, + .power = 100, + .type = TYPE_STEEL, + .accuracy = 75, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_METAL_CLAW + .effect = EFFECT_ATTACK_UP_HIT, + .power = 50, + .type = TYPE_STEEL, + .accuracy = 95, + .pp = 35, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_VITAL_THROW + .effect = EFFECT_VITAL_THROW, + .power = 70, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = -1, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MORNING_SUN + .effect = EFFECT_MORNING_SUN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_SYNTHESIS + .effect = EFFECT_SYNTHESIS, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_MOONLIGHT + .effect = EFFECT_MOONLIGHT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_HIDDEN_POWER + .effect = EFFECT_HIDDEN_POWER, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_CROSS_CHOP + .effect = EFFECT_HIGH_CRITICAL, + .power = 100, + .type = TYPE_FIGHTING, + .accuracy = 80, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_TWISTER + .effect = EFFECT_TWISTER, + .power = 40, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_RAIN_DANCE + .effect = EFFECT_RAIN_DANCE, + .power = 0, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_SUNNY_DAY + .effect = EFFECT_SUNNY_DAY, + .power = 0, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_CRUNCH + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, + .power = 80, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MIRROR_COAT + .effect = EFFECT_MIRROR_COAT, + .power = 1, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = -5, + .flags = FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PSYCH_UP + .effect = EFFECT_PSYCH_UP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_EXTREME_SPEED + .effect = EFFECT_QUICK_ATTACK, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 1, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ANCIENT_POWER + .effect = EFFECT_ALL_STATS_UP_HIT, + .power = 60, + .type = TYPE_ROCK, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SHADOW_BALL + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, + .power = 80, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FUTURE_SIGHT + .effect = EFFECT_FUTURE_SIGHT, + .power = 80, + .type = TYPE_PSYCHIC, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_ROCK_SMASH + .effect = EFFECT_DEFENSE_DOWN_HIT, + .power = 20, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_WHIRLPOOL + .effect = EFFECT_TRAP, + .power = 15, + .type = TYPE_WATER, + .accuracy = 70, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BEAT_UP + .effect = EFFECT_BEAT_UP, + .power = 10, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FAKE_OUT + .effect = EFFECT_FAKE_OUT, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 1, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_UPROAR + .effect = EFFECT_UPROAR, + .power = 50, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_RANDOM, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_STOCKPILE + .effect = EFFECT_STOCKPILE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_SPIT_UP + .effect = EFFECT_SPIT_UP, + .power = 100, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SWALLOW + .effect = EFFECT_SWALLOW, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_HEAT_WAVE + .effect = EFFECT_BURN_HIT, + .power = 100, + .type = TYPE_FIRE, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HAIL + .effect = EFFECT_HAIL, + .power = 0, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_TORMENT + .effect = EFFECT_TORMENT, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FLATTER + .effect = EFFECT_FLATTER, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_WILL_O_WISP + .effect = EFFECT_WILL_O_WISP, + .power = 0, + .type = TYPE_FIRE, + .accuracy = 75, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MEMENTO + .effect = EFFECT_MEMENTO, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FACADE + .effect = EFFECT_FACADE, + .power = 70, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FOCUS_PUNCH + .effect = EFFECT_FOCUS_PUNCH, + .power = 150, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = -3, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED, + }, + { // MOVE_SMELLING_SALT + .effect = EFFECT_SMELLINGSALT, + .power = 60, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FOLLOW_ME + .effect = EFFECT_FOLLOW_ME, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 3, + .flags = 0, + }, + { // MOVE_NATURE_POWER + .effect = EFFECT_NATURE_POWER, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 95, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 0, + .flags = 0, + }, + { // MOVE_CHARGE + .effect = EFFECT_CHARGE, + .power = 0, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_TAUNT + .effect = EFFECT_TAUNT, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_HELPING_HAND + .effect = EFFECT_HELPING_HAND, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 5, + .flags = 0, + }, + { // MOVE_TRICK + .effect = EFFECT_TRICK, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ROLE_PLAY + .effect = EFFECT_ROLE_PLAY, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_WISH + .effect = EFFECT_WISH, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_ASSIST + .effect = EFFECT_ASSIST, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 0, + .flags = 0, + }, + { // MOVE_INGRAIN + .effect = EFFECT_INGRAIN, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_SUPERPOWER + .effect = EFFECT_SUPERPOWER, + .power = 120, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MAGIC_COAT + .effect = EFFECT_MAGIC_COAT, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 4, + .flags = 0, + }, + { // MOVE_RECYCLE + .effect = EFFECT_RECYCLE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_REVENGE + .effect = EFFECT_REVENGE, + .power = 60, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = -4, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BRICK_BREAK + .effect = EFFECT_BRICK_BREAK, + .power = 75, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_YAWN + .effect = EFFECT_YAWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_KNOCK_OFF + .effect = EFFECT_KNOCK_OFF, + .power = 20, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ENDEAVOR + .effect = EFFECT_ENDEAVOR, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ERUPTION + .effect = EFFECT_ERUPTION, + .power = 150, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SKILL_SWAP + .effect = EFFECT_SKILL_SWAP, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_IMPRISON + .effect = EFFECT_IMPRISON, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_REFRESH + .effect = EFFECT_REFRESH, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_GRUDGE + .effect = EFFECT_GRUDGE, + .power = 0, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SNATCH + .effect = EFFECT_SNATCH, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 4, + .flags = FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SECRET_POWER + .effect = EFFECT_SECRET_POWER, + .power = 70, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DIVE + .effect = EFFECT_SEMI_INVULNERABLE, + .power = 60, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ARM_THRUST + .effect = EFFECT_MULTI_HIT, + .power = 15, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_CAMOUFLAGE + .effect = EFFECT_CAMOUFLAGE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_TAIL_GLOW + .effect = EFFECT_SPECIAL_ATTACK_UP_2, + .power = 0, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_LUSTER_PURGE + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, + .power = 70, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MIST_BALL + .effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT, + .power = 70, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FEATHER_DANCE + .effect = EFFECT_ATTACK_DOWN_2, + .power = 0, + .type = TYPE_FLYING, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_TEETER_DANCE + .effect = EFFECT_TEETER_DANCE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_FOES_AND_ALLY, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_BLAZE_KICK + .effect = EFFECT_BLAZE_KICK, + .power = 85, + .type = TYPE_FIRE, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MUD_SPORT + .effect = EFFECT_MUD_SPORT, + .power = 0, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_ICE_BALL + .effect = EFFECT_ROLLOUT, + .power = 30, + .type = TYPE_ICE, + .accuracy = 90, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_NEEDLE_ARM + .effect = EFFECT_FLINCH_MINIMIZE_HIT, + .power = 60, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SLACK_OFF + .effect = EFFECT_RESTORE_HP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_HYPER_VOICE + .effect = EFFECT_HIT, + .power = 90, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_POISON_FANG + .effect = EFFECT_POISON_FANG, + .power = 50, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_CRUSH_CLAW + .effect = EFFECT_DEFENSE_DOWN_HIT, + .power = 75, + .type = TYPE_NORMAL, + .accuracy = 95, + .pp = 10, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BLAST_BURN + .effect = EFFECT_RECHARGE, + .power = 150, + .type = TYPE_FIRE, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_HYDRO_CANNON + .effect = EFFECT_RECHARGE, + .power = 150, + .type = TYPE_WATER, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_METEOR_MASH + .effect = EFFECT_ATTACK_UP_HIT, + .power = 100, + .type = TYPE_STEEL, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ASTONISH + .effect = EFFECT_FLINCH_MINIMIZE_HIT, + .power = 30, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_WEATHER_BALL + .effect = EFFECT_WEATHER_BALL, + .power = 50, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_AROMATHERAPY + .effect = EFFECT_HEAL_BELL, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_FAKE_TEARS + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_AIR_CUTTER + .effect = EFFECT_HIGH_CRITICAL, + .power = 55, + .type = TYPE_FLYING, + .accuracy = 95, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_OVERHEAT + .effect = EFFECT_OVERHEAT, + .power = 140, + .type = TYPE_FIRE, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ODOR_SLEUTH + .effect = EFFECT_FORESIGHT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ROCK_TOMB + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 50, + .type = TYPE_ROCK, + .accuracy = 80, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SILVER_WIND + .effect = EFFECT_ALL_STATS_UP_HIT, + .power = 60, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_METAL_SOUND + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2, + .power = 0, + .type = TYPE_STEEL, + .accuracy = 85, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_GRASS_WHISTLE + .effect = EFFECT_SLEEP, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 55, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_TICKLE + .effect = EFFECT_TICKLE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_COSMIC_POWER + .effect = EFFECT_COSMIC_POWER, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_WATER_SPOUT + .effect = EFFECT_ERUPTION, + .power = 150, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SIGNAL_BEAM + .effect = EFFECT_CONFUSE_HIT, + .power = 75, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SHADOW_PUNCH + .effect = EFFECT_ALWAYS_HIT, + .power = 60, + .type = TYPE_GHOST, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_EXTRASENSORY + .effect = EFFECT_FLINCH_MINIMIZE_HIT, + .power = 80, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SKY_UPPERCUT + .effect = EFFECT_SKY_UPPERCUT, + .power = 85, + .type = TYPE_FIGHTING, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SAND_TOMB + .effect = EFFECT_TRAP, + .power = 15, + .type = TYPE_GROUND, + .accuracy = 70, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SHEER_COLD + .effect = EFFECT_OHKO, + .power = 1, + .type = TYPE_ICE, + .accuracy = 30, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MUDDY_WATER + .effect = EFFECT_ACCURACY_DOWN_HIT, + .power = 95, + .type = TYPE_WATER, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BULLET_SEED + .effect = EFFECT_MULTI_HIT, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_AERIAL_ACE + .effect = EFFECT_ALWAYS_HIT, + .power = 60, + .type = TYPE_FLYING, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ICICLE_SPEAR + .effect = EFFECT_MULTI_HIT, + .power = 10, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_IRON_DEFENSE + .effect = EFFECT_DEFENSE_UP_2, + .power = 0, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_BLOCK + .effect = EFFECT_MEAN_LOOK, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HOWL + .effect = EFFECT_ATTACK_UP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_DRAGON_CLAW + .effect = EFFECT_HIT, + .power = 80, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FRENZY_PLANT + .effect = EFFECT_RECHARGE, + .power = 150, + .type = TYPE_GRASS, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BULK_UP + .effect = EFFECT_BULK_UP, + .power = 0, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_BOUNCE + .effect = EFFECT_SEMI_INVULNERABLE, + .power = 85, + .type = TYPE_FLYING, + .accuracy = 85, + .pp = 5, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MUD_SHOT + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 55, + .type = TYPE_GROUND, + .accuracy = 95, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_POISON_TAIL + .effect = EFFECT_POISON_TAIL, + .power = 50, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_COVET + .effect = EFFECT_THIEF, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 40, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_VOLT_TACKLE + .effect = EFFECT_DOUBLE_EDGE, + .power = 120, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MAGICAL_LEAF + .effect = EFFECT_ALWAYS_HIT, + .power = 60, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_WATER_SPORT + .effect = EFFECT_WATER_SPORT, + .power = 0, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_CALM_MIND + .effect = EFFECT_CALM_MIND, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_LEAF_BLADE + .effect = EFFECT_HIGH_CRITICAL, + .power = 70, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DRAGON_DANCE + .effect = EFFECT_DRAGON_DANCE, + .power = 0, + .type = TYPE_DRAGON, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_ROCK_BLAST + .effect = EFFECT_MULTI_HIT, + .power = 25, + .type = TYPE_ROCK, + .accuracy = 80, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SHOCK_WAVE + .effect = EFFECT_ALWAYS_HIT, + .power = 60, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_WATER_PULSE + .effect = EFFECT_CONFUSE_HIT, + .power = 60, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DOOM_DESIRE + .effect = EFFECT_FUTURE_SIGHT, + .power = 120, + .type = TYPE_STEEL, + .accuracy = 85, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_PSYCHO_BOOST + .effect = EFFECT_OVERHEAT, + .power = 140, + .type = TYPE_PSYCHIC, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, +}; + +#endif // GUARD_DATA_BATTLE_MOVES diff --git a/include/data/decoration/tiles.h b/include/data/decoration/tiles.h index 9a3f8a222..6b3ed699f 100644 --- a/include/data/decoration/tiles.h +++ b/include/data/decoration/tiles.h @@ -464,183 +464,183 @@ const u16 DecorGfx_KISS_POSTER[] = { }; const u16 DecorGfx_PICHU_DOLL[] = { - MAP_OBJ_GFX_PICHU_DOLL + EVENT_OBJ_GFX_PICHU_DOLL }; const u16 DecorGfx_PIKACHU_DOLL[] = { - MAP_OBJ_GFX_PIKACHU_DOLL + EVENT_OBJ_GFX_PIKACHU_DOLL }; const u16 DecorGfx_MARILL_DOLL[] = { - MAP_OBJ_GFX_MARILL_DOLL + EVENT_OBJ_GFX_MARILL_DOLL }; const u16 DecorGfx_TOGEPI_DOLL[] = { - MAP_OBJ_GFX_TOGEPI_DOLL + EVENT_OBJ_GFX_TOGEPI_DOLL }; const u16 DecorGfx_CYNDAQUIL_DOLL[] = { - MAP_OBJ_GFX_CYNDAQUIL_DOLL + EVENT_OBJ_GFX_CYNDAQUIL_DOLL }; const u16 DecorGfx_CHIKORITA_DOLL[] = { - MAP_OBJ_GFX_CHIKORITA_DOLL + EVENT_OBJ_GFX_CHIKORITA_DOLL }; const u16 DecorGfx_TOTODILE_DOLL[] = { - MAP_OBJ_GFX_TOTODILE_DOLL + EVENT_OBJ_GFX_TOTODILE_DOLL }; const u16 DecorGfx_JIGGLYPUFF_DOLL[] = { - MAP_OBJ_GFX_JIGGLYPUFF_DOLL + EVENT_OBJ_GFX_JIGGLYPUFF_DOLL }; const u16 DecorGfx_MEOWTH_DOLL[] = { - MAP_OBJ_GFX_MEOWTH_DOLL + EVENT_OBJ_GFX_MEOWTH_DOLL }; const u16 DecorGfx_CLEFAIRY_DOLL[] = { - MAP_OBJ_GFX_CLEFAIRY_DOLL + EVENT_OBJ_GFX_CLEFAIRY_DOLL }; const u16 DecorGfx_DITTO_DOLL[] = { - MAP_OBJ_GFX_DITTO_DOLL + EVENT_OBJ_GFX_DITTO_DOLL }; const u16 DecorGfx_SMOOCHUM_DOLL[] = { - MAP_OBJ_GFX_SMOOCHUM_DOLL + EVENT_OBJ_GFX_SMOOCHUM_DOLL }; const u16 DecorGfx_TREECKO_DOLL[] = { - MAP_OBJ_GFX_TREECKO_DOLL + EVENT_OBJ_GFX_TREECKO_DOLL }; const u16 DecorGfx_TORCHIC_DOLL[] = { - MAP_OBJ_GFX_TORCHIC_DOLL + EVENT_OBJ_GFX_TORCHIC_DOLL }; const u16 DecorGfx_MUDKIP_DOLL[] = { - MAP_OBJ_GFX_MUDKIP_DOLL + EVENT_OBJ_GFX_MUDKIP_DOLL }; const u16 DecorGfx_DUSKULL_DOLL[] = { - MAP_OBJ_GFX_DUSKULL_DOLL + EVENT_OBJ_GFX_DUSKULL_DOLL }; const u16 DecorGfx_WYNAUT_DOLL[] = { - MAP_OBJ_GFX_WYNAUT_DOLL + EVENT_OBJ_GFX_WYNAUT_DOLL }; const u16 DecorGfx_BALTOY_DOLL[] = { - MAP_OBJ_GFX_BALTOY_DOLL + EVENT_OBJ_GFX_BALTOY_DOLL }; const u16 DecorGfx_KECLEON_DOLL[] = { - MAP_OBJ_GFX_KECLEON_DOLL + EVENT_OBJ_GFX_KECLEON_DOLL }; const u16 DecorGfx_AZURILL_DOLL[] = { - MAP_OBJ_GFX_AZURILL_DOLL + EVENT_OBJ_GFX_AZURILL_DOLL }; const u16 DecorGfx_SKITTY_DOLL[] = { - MAP_OBJ_GFX_SKITTY_DOLL + EVENT_OBJ_GFX_SKITTY_DOLL }; const u16 DecorGfx_SWABLU_DOLL[] = { - MAP_OBJ_GFX_SWABLU_DOLL + EVENT_OBJ_GFX_SWABLU_DOLL }; const u16 DecorGfx_GULPIN_DOLL[] = { - MAP_OBJ_GFX_GULPIN_DOLL + EVENT_OBJ_GFX_GULPIN_DOLL }; const u16 DecorGfx_LOTAD_DOLL[] = { - MAP_OBJ_GFX_LOTAD_DOLL + EVENT_OBJ_GFX_LOTAD_DOLL }; const u16 DecorGfx_SEEDOT_DOLL[] = { - MAP_OBJ_GFX_SEEDOT_DOLL + EVENT_OBJ_GFX_SEEDOT_DOLL }; const u16 DecorGfx_PIKA_CUSHION[] = { - MAP_OBJ_GFX_PIKA_CUSHION + EVENT_OBJ_GFX_PIKA_CUSHION }; const u16 DecorGfx_ROUND_CUSHION[] = { - MAP_OBJ_GFX_ROUND_CUSHION + EVENT_OBJ_GFX_ROUND_CUSHION }; const u16 DecorGfx_KISS_CUSHION[] = { - MAP_OBJ_GFX_KISS_CUSHION + EVENT_OBJ_GFX_KISS_CUSHION }; const u16 DecorGfx_ZIGZAG_CUSHION[] = { - MAP_OBJ_GFX_ZIGZAG_CUSHION + EVENT_OBJ_GFX_ZIGZAG_CUSHION }; const u16 DecorGfx_SPIN_CUSHION[] = { - MAP_OBJ_GFX_SPIN_CUSHION + EVENT_OBJ_GFX_SPIN_CUSHION }; const u16 DecorGfx_DIAMOND_CUSHION[] = { - MAP_OBJ_GFX_DIAMOND_CUSHION + EVENT_OBJ_GFX_DIAMOND_CUSHION }; const u16 DecorGfx_BALL_CUSHION[] = { - MAP_OBJ_GFX_BALL_CUSHION + EVENT_OBJ_GFX_BALL_CUSHION }; const u16 DecorGfx_GRASS_CUSHION[] = { - MAP_OBJ_GFX_GRASS_CUSHION + EVENT_OBJ_GFX_GRASS_CUSHION }; const u16 DecorGfx_FIRE_CUSHION[] = { - MAP_OBJ_GFX_FIRE_CUSHION + EVENT_OBJ_GFX_FIRE_CUSHION }; const u16 DecorGfx_WATER_CUSHION[] = { - MAP_OBJ_GFX_WATER_CUSHION + EVENT_OBJ_GFX_WATER_CUSHION }; const u16 DecorGfx_SNORLAX_DOLL[] = { - MAP_OBJ_GFX_BIG_SNORLAX_DOLL + EVENT_OBJ_GFX_BIG_SNORLAX_DOLL }; const u16 DecorGfx_RHYDON_DOLL[] = { - MAP_OBJ_GFX_BIG_RHYDON_DOLL + EVENT_OBJ_GFX_BIG_RHYDON_DOLL }; const u16 DecorGfx_LAPRAS_DOLL[] = { - MAP_OBJ_GFX_BIG_LAPRAS_DOLL + EVENT_OBJ_GFX_BIG_LAPRAS_DOLL }; const u16 DecorGfx_VENUSAUR_DOLL[] = { - MAP_OBJ_GFX_BIG_VENUSAUR_DOLL + EVENT_OBJ_GFX_BIG_VENUSAUR_DOLL }; const u16 DecorGfx_CHARIZARD_DOLL[] = { - MAP_OBJ_GFX_BIG_CHARIZARD_DOLL + EVENT_OBJ_GFX_BIG_CHARIZARD_DOLL }; const u16 DecorGfx_BLASTOISE_DOLL[] = { - MAP_OBJ_GFX_BIG_BLASTOISE_DOLL + EVENT_OBJ_GFX_BIG_BLASTOISE_DOLL }; const u16 DecorGfx_WAILMER_DOLL[] = { - MAP_OBJ_GFX_BIG_WAILMER_DOLL + EVENT_OBJ_GFX_BIG_WAILMER_DOLL }; const u16 DecorGfx_REGIROCK_DOLL[] = { - MAP_OBJ_GFX_BIG_REGIROCK_DOLL + EVENT_OBJ_GFX_BIG_REGIROCK_DOLL }; const u16 DecorGfx_REGICE_DOLL[] = { - MAP_OBJ_GFX_BIG_REGICE_DOLL + EVENT_OBJ_GFX_BIG_REGICE_DOLL }; const u16 DecorGfx_REGISTEEL_DOLL[] = { - MAP_OBJ_GFX_BIG_REGISTEEL_DOLL + EVENT_OBJ_GFX_BIG_REGISTEEL_DOLL }; #endif // GUARD_DATA_DECORATION_TILES diff --git a/include/data/item_icon_table.h b/include/data/item_icon_table.h new file mode 100644 index 000000000..0a24c0572 --- /dev/null +++ b/include/data/item_icon_table.h @@ -0,0 +1,414 @@ +#ifndef GUARD_DATA_ITEM_ICON_TABLE_H +#define GUARD_DATA_ITEM_ICON_TABLE_H + +#include "global.h" +#include "graphics.h" + +const u8 * const gItemIconTable[][2] = +{ + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Pokeballs + gItemIcon_MasterBall, gItemIconPalette_MasterBall, + gItemIcon_UltraBall, gItemIconPalette_UltraBall, + gItemIcon_GreatBall, gItemIconPalette_GreatBall, + gItemIcon_PokeBall, gItemIconPalette_PokeBall, + gItemIcon_SafariBall, gItemIconPalette_SafariBall, + gItemIcon_NetBall, gItemIconPalette_NetBall, + gItemIcon_DiveBall, gItemIconPalette_DiveBall, + gItemIcon_NestBall, gItemIconPalette_NestBall, + gItemIcon_RepeatBall, gItemIconPalette_RepeatBall, + gItemIcon_TimerBall, gItemIconPalette_RepeatBall, + gItemIcon_LuxuryBall, gItemIconPalette_LuxuryBall, + gItemIcon_PremierBall, gItemIconPalette_LuxuryBall, +// Medicine + gItemIcon_Potion, gItemIconPalette_Potion, + gItemIcon_Antidote, gItemIconPalette_Antidote, + gItemIcon_StatusHeal, gItemIconPalette_BurnHeal, + gItemIcon_StatusHeal, gItemIconPalette_IceHeal, + gItemIcon_StatusHeal, gItemIconPalette_Awakening, + gItemIcon_StatusHeal, gItemIconPalette_ParalyzeHeal, + gItemIcon_LargePotion, gItemIconPalette_FullRestore, + gItemIcon_LargePotion, gItemIconPalette_MaxPotion, + gItemIcon_Potion, gItemIconPalette_HyperPotion, + gItemIcon_Potion, gItemIconPalette_SuperPotion, + gItemIcon_FullHeal, gItemIconPalette_FullHeal, + gItemIcon_Revive, gItemIconPalette_Revive, + gItemIcon_MaxRevive, gItemIconPalette_Revive, + gItemIcon_FreshWater, gItemIconPalette_FreshWater, + gItemIcon_SodaPop, gItemIconPalette_SodaPop, + gItemIcon_Lemonade, gItemIconPalette_Lemonade, + gItemIcon_MoomooMilk, gItemIconPalette_MoomooMilk, + gItemIcon_Powder, gItemIconPalette_EnergyPowder, + gItemIcon_EnergyRoot, gItemIconPalette_EnergyRoot, + gItemIcon_Powder, gItemIconPalette_HealPowder, + gItemIcon_RevivalHerb, gItemIconPalette_RevivalHerb, + gItemIcon_Ether, gItemIconPalette_Ether, + gItemIcon_Ether, gItemIconPalette_MaxEther, + gItemIcon_Ether, gItemIconPalette_Elixir, + gItemIcon_Ether, gItemIconPalette_MaxElixir, + gItemIcon_LavaCookie, gItemIconPalette_LavaCookieAndLetter, + gItemIcon_Flute, gItemIconPalette_BlueFlute, + gItemIcon_Flute, gItemIconPalette_YellowFlute, + gItemIcon_Flute, gItemIconPalette_RedFlute, + gItemIcon_Flute, gItemIconPalette_BlackFlute, + gItemIcon_Flute, gItemIconPalette_WhiteFlute, + gItemIcon_BerryJuice, gItemIconPalette_BerryJuice, + gItemIcon_SacredAsh, gItemIconPalette_SacredAsh, +// Collectibles + gItemIcon_Powder, gItemIconPalette_ShoalSalt, + gItemIcon_ShoalShell, gItemIconPalette_Shell, + gItemIcon_Shard, gItemIconPalette_RedShard, + gItemIcon_Shard, gItemIconPalette_BlueShard, + gItemIcon_Shard, gItemIconPalette_YellowShard, + gItemIcon_Shard, gItemIconPalette_GreenShard, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Vitamins + gItemIcon_HPUp, gItemIconPalette_HPUp, + gItemIcon_Vitamin, gItemIconPalette_Protein, + gItemIcon_Vitamin, gItemIconPalette_Iron, + gItemIcon_Vitamin, gItemIconPalette_Carbos, + gItemIcon_Vitamin, gItemIconPalette_Calcium, + gItemIcon_RareCandy, gItemIconPalette_RareCandy, + gItemIcon_PPUp, gItemIconPalette_PPUp, + gItemIcon_Vitamin, gItemIconPalette_Zinc, + gItemIcon_PPMax, gItemIconPalette_PPMax, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Battle items + gItemIcon_BattleStatItem, gItemIconPalette_GuardSpec, + gItemIcon_BattleStatItem, gItemIconPalette_DireHit, + gItemIcon_BattleStatItem, gItemIconPalette_XAttack, + gItemIcon_BattleStatItem, gItemIconPalette_XDefend, + gItemIcon_BattleStatItem, gItemIconPalette_XSpeed, + gItemIcon_BattleStatItem, gItemIconPalette_XAccuracy, + gItemIcon_BattleStatItem, gItemIconPalette_XSpecial, + gItemIcon_PokeDoll, gItemIconPalette_PokeDoll, + gItemIcon_FluffyTail, gItemIconPalette_FluffyTail, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Field items + gItemIcon_Repel, gItemIconPalette_SuperRepel, + gItemIcon_Repel, gItemIconPalette_MaxRepel, + gItemIcon_EscapeRope, gItemIconPalette_EscapeRope, + gItemIcon_Repel, gItemIconPalette_Repel, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Evolution stones + gItemIcon_SunStone, gItemIconPalette_SunStone, + gItemIcon_MoonStone, gItemIconPalette_MoonStone, + gItemIcon_FireStone, gItemIconPalette_FireStone, + gItemIcon_ThunderStone, gItemIconPalette_ThunderStone, + gItemIcon_WaterStone, gItemIconPalette_WaterStone, + gItemIcon_LeafStone, gItemIconPalette_LeafStone, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Valuables + gItemIcon_TinyMushroom, gItemIconPalette_Mushroom, + gItemIcon_BigMushroom, gItemIconPalette_Mushroom, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_Pearl, gItemIconPalette_Pearl, + gItemIcon_BigPearl, gItemIconPalette_Pearl, + gItemIcon_Stardust, gItemIconPalette_Star, + gItemIcon_StarPiece, gItemIconPalette_Star, + gItemIcon_Nugget, gItemIconPalette_Nugget, + gItemIcon_HeartScale, gItemIconPalette_HeartScale, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Mail + gItemIcon_OrangeMail, gItemIconPalette_OrangeMail, + gItemIcon_HarborMail, gItemIconPalette_HarborMail, + gItemIcon_GlitterMail, gItemIconPalette_GlitterMail, + gItemIcon_MechMail, gItemIconPalette_MechMail, + gItemIcon_WoodMail, gItemIconPalette_WoodMail, + gItemIcon_WaveMail, gItemIconPalette_WaveMail, + gItemIcon_BeadMail, gItemIconPalette_BeadMail, + gItemIcon_ShadowMail, gItemIconPalette_ShadowMail, + gItemIcon_TropicMail, gItemIconPalette_TropicMail, + gItemIcon_DreamMail, gItemIconPalette_DreamMail, + gItemIcon_FabMail, gItemIconPalette_FabMail, + gItemIcon_RetroMail, gItemIconPalette_RetroMail, +// Berries + gItemIcon_CheriBerry, gItemIconPalette_CheriBerry, + gItemIcon_ChestoBerry, gItemIconPalette_ChestoBerry, + gItemIcon_PechaBerry, gItemIconPalette_PechaBerry, + gItemIcon_RawstBerry, gItemIconPalette_RawstBerry, + gItemIcon_AspearBerry, gItemIconPalette_AspearBerry, + gItemIcon_LeppaBerry, gItemIconPalette_LeppaBerry, + gItemIcon_OranBerry, gItemIconPalette_OranBerry, + gItemIcon_PersimBerry, gItemIconPalette_PersimBerry, + gItemIcon_LumBerry, gItemIconPalette_LumBerry, + gItemIcon_SitrusBerry, gItemIconPalette_SitrusBerry, + gItemIcon_FigyBerry, gItemIconPalette_FigyBerry, + gItemIcon_WikiBerry, gItemIconPalette_WikiBerry, + gItemIcon_MagoBerry, gItemIconPalette_MagoBerry, + gItemIcon_AguavBerry, gItemIconPalette_AguavBerry, + gItemIcon_IapapaBerry, gItemIconPalette_IapapaBerry, + gItemIcon_RazzBerry, gItemIconPalette_RazzBerry, + gItemIcon_BlukBerry, gItemIconPalette_BlukBerry, + gItemIcon_NanabBerry, gItemIconPalette_NanabBerry, + gItemIcon_WepearBerry, gItemIconPalette_WepearBerry, + gItemIcon_PinapBerry, gItemIconPalette_PinapBerry, + gItemIcon_PomegBerry, gItemIconPalette_PomegBerry, + gItemIcon_KelpsyBerry, gItemIconPalette_KelpsyBerry, + gItemIcon_QualotBerry, gItemIconPalette_QualotBerry, + gItemIcon_HondewBerry, gItemIconPalette_HondewBerry, + gItemIcon_GrepaBerry, gItemIconPalette_GrepaBerry, + gItemIcon_TamatoBerry, gItemIconPalette_TamatoBerry, + gItemIcon_CornnBerry, gItemIconPalette_CornnBerry, + gItemIcon_MagostBerry, gItemIconPalette_MagostBerry, + gItemIcon_RabutaBerry, gItemIconPalette_RabutaBerry, + gItemIcon_NomelBerry, gItemIconPalette_NomelBerry, + gItemIcon_SpelonBerry, gItemIconPalette_SpelonBerry, + gItemIcon_PamtreBerry, gItemIconPalette_PamtreBerry, + gItemIcon_WatmelBerry, gItemIconPalette_WatmelBerry, + gItemIcon_DurinBerry, gItemIconPalette_DurinBerry, + gItemIcon_BelueBerry, gItemIconPalette_BelueBerry, + gItemIcon_LiechiBerry, gItemIconPalette_LiechiBerry, + gItemIcon_GanlonBerry, gItemIconPalette_GanlonBerry, + gItemIcon_SalacBerry, gItemIconPalette_SalacBerry, + gItemIcon_PetayaBerry, gItemIconPalette_PetayaBerry, + gItemIcon_ApicotBerry, gItemIconPalette_ApicotBerry, + gItemIcon_LansatBerry, gItemIconPalette_LansatBerry, + gItemIcon_StarfBerry, gItemIconPalette_StarfBerry, + gItemIcon_EnigmaBerry, gItemIconPalette_EnigmaBerry, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Hold items + gItemIcon_BrightPowder, gItemIconPalette_BrightPowder, + gItemIcon_InBattleHerb, gItemIconPalette_WhiteHerb, + gItemIcon_MachoBrace, gItemIconPalette_MachoBrace, + gItemIcon_ExpShare, gItemIconPalette_ExpShare, + gItemIcon_QuickClaw, gItemIconPalette_QuickClaw, + gItemIcon_SootheBell, gItemIconPalette_SootheBell, + gItemIcon_InBattleHerb, gItemIconPalette_MentalHerb, + gItemIcon_ChoiceBand, gItemIconPalette_ChoiceBand, + gItemIcon_KingsRock, gItemIconPalette_KingsRock, + gItemIcon_SilverPowder, gItemIconPalette_SilverPowder, + gItemIcon_AmuletCoin, gItemIconPalette_AmuletCoin, + gItemIcon_CleanseTag, gItemIconPalette_CleanseTag, + gItemIcon_SoulDew, gItemIconPalette_SoulDew, + gItemIcon_DeepSeaTooth, gItemIconPalette_DeepSeaTooth, + gItemIcon_DeepSeaScale, gItemIconPalette_DeepSeaScale, + gItemIcon_SmokeBall, gItemIconPalette_SmokeBall, + gItemIcon_Everstone, gItemIconPalette_Everstone, + gItemIcon_FocusBand, gItemIconPalette_FocusBand, + gItemIcon_LuckyEgg, gItemIconPalette_LuckyEgg, + gItemIcon_ScopeLens, gItemIconPalette_ScopeLens, + gItemIcon_MetalCoat, gItemIconPalette_MetalCoat, + gItemIcon_Leftovers, gItemIconPalette_Leftovers, + gItemIcon_DragonScale, gItemIconPalette_DragonScale, + gItemIcon_LightBall, gItemIconPalette_LightBall, + gItemIcon_SoftSand, gItemIconPalette_SoftSand, + gItemIcon_HardStone, gItemIconPalette_HardStone, + gItemIcon_MiracleSeed, gItemIconPalette_MiracleSeed, + gItemIcon_BlackGlasses, gItemIconPalette_BlackTypeEnhancingItem, + gItemIcon_BlackBelt, gItemIconPalette_BlackTypeEnhancingItem, + gItemIcon_Magnet, gItemIconPalette_Magnet, + gItemIcon_MysticWater, gItemIconPalette_MysticWater, + gItemIcon_SharpBeak, gItemIconPalette_SharpBeak, + gItemIcon_PoisonBarb, gItemIconPalette_PoisonBarb, + gItemIcon_NeverMeltIce, gItemIconPalette_NeverMeltIce, + gItemIcon_SpellTag, gItemIconPalette_SpellTag, + gItemIcon_TwistedSpoon, gItemIconPalette_TwistedSpoon, + gItemIcon_Charcoal, gItemIconPalette_Charcoal, + gItemIcon_DragonFang, gItemIconPalette_DragonFang, + gItemIcon_SilkScarf, gItemIconPalette_SilkScarf, + gItemIcon_UpGrade, gItemIconPalette_UpGrade, + gItemIcon_ShellBell, gItemIconPalette_Shell, + gItemIcon_SeaIncense, gItemIconPalette_SeaIncense, + gItemIcon_LaxIncense, gItemIconPalette_LaxIncense, + gItemIcon_LuckyPunch, gItemIconPalette_LuckyPunch, + gItemIcon_MetalPowder, gItemIconPalette_MetalPowder, + gItemIcon_ThickClub, gItemIconPalette_ThickClub, + gItemIcon_Stick, gItemIconPalette_Stick, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Contest hold items + gItemIcon_Scarf, gItemIconPalette_RedScarf, + gItemIcon_Scarf, gItemIconPalette_BlueScarf, + gItemIcon_Scarf, gItemIconPalette_PinkScarf, + gItemIcon_Scarf, gItemIconPalette_GreenScarf, + gItemIcon_Scarf, gItemIconPalette_YellowScarf, +// Key items + gItemIcon_MachBike, gItemIconPalette_MachBike, + gItemIcon_CoinCase, gItemIconPalette_CoinCase, + gItemIcon_Itemfinder, gItemIconPalette_Itemfinder, + gItemIcon_OldRod, gItemIconPalette_OldRod, + gItemIcon_GoodRod, gItemIconPalette_GoodRod, + gItemIcon_SuperRod, gItemIconPalette_SuperRod, + gItemIcon_SSTicket, gItemIconPalette_SSTicket, + gItemIcon_ContestPass, gItemIconPalette_ContestPass, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_WailmerPail, gItemIconPalette_WailmerPail, + gItemIcon_DevonGoods, gItemIconPalette_DevonGoods, + gItemIcon_SootSack, gItemIconPalette_SootSack, + gItemIcon_BasementKey, gItemIconPalette_OldKey, + gItemIcon_AcroBike, gItemIconPalette_AcroBike, + gItemIcon_PokeblockCase, gItemIconPalette_PokeblockCase, + gItemIcon_Letter, gItemIconPalette_LavaCookieAndLetter, + gItemIcon_EonTicket, gItemIconPalette_EonTicket, + gItemIcon_Orb, gItemIconPalette_RedOrb, + gItemIcon_Orb, gItemIconPalette_BlueOrb, + gItemIcon_Scanner, gItemIconPalette_Scanner, + gItemIcon_GoGoggles, gItemIconPalette_GoGoggles, + gItemIcon_Meteorite, gItemIconPalette_Meteorite, + gItemIcon_Room1Key, gItemIconPalette_Key, + gItemIcon_Room2Key, gItemIconPalette_Key, + gItemIcon_Room4Key, gItemIconPalette_Key, + gItemIcon_Room6Key, gItemIconPalette_Key, + gItemIcon_StorageKey, gItemIconPalette_OldKey, + gItemIcon_RootFossil, gItemIconPalette_HoennFossil, + gItemIcon_ClawFossil, gItemIconPalette_HoennFossil, + gItemIcon_DevonScope, gItemIconPalette_DevonScope, +// TMs/HMs + gItemIcon_TM, gItemIconPalette_FightingTMHM, // TM01 + gItemIcon_TM, gItemIconPalette_DragonTMHM, // TM02 + gItemIcon_TM, gItemIconPalette_WaterTMHM, // TM03 + gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM04 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM05 + gItemIcon_TM, gItemIconPalette_PoisonTMHM, // TM06 + gItemIcon_TM, gItemIconPalette_IceTMHM, // TM07 + gItemIcon_TM, gItemIconPalette_FightingTMHM, // TM08 + gItemIcon_TM, gItemIconPalette_GrassTMHM, // TM09 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM10 + gItemIcon_TM, gItemIconPalette_FireTMHM, // TM11 + gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM12 + gItemIcon_TM, gItemIconPalette_IceTMHM, // TM13 + gItemIcon_TM, gItemIconPalette_IceTMHM, // TM14 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM15 + gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM16 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM17 + gItemIcon_TM, gItemIconPalette_WaterTMHM, // TM18 + gItemIcon_TM, gItemIconPalette_GrassTMHM, // TM19 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM20 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM21 + gItemIcon_TM, gItemIconPalette_GrassTMHM, // TM22 + gItemIcon_TM, gItemIconPalette_SteelTMHM, // TM23 + gItemIcon_TM, gItemIconPalette_ElectricTMHM, // TM24 + gItemIcon_TM, gItemIconPalette_ElectricTMHM, // TM25 + gItemIcon_TM, gItemIconPalette_GroundTMHM, // TM26 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM27 + gItemIcon_TM, gItemIconPalette_GroundTMHM, // TM28 + gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM29 + gItemIcon_TM, gItemIconPalette_GhostTMHM, // TM30 + gItemIcon_TM, gItemIconPalette_FightingTMHM, // TM31 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM32 + gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM33 + gItemIcon_TM, gItemIconPalette_ElectricTMHM, // TM34 + gItemIcon_TM, gItemIconPalette_FireTMHM, // TM35 + gItemIcon_TM, gItemIconPalette_PoisonTMHM, // TM36 + gItemIcon_TM, gItemIconPalette_RockTMHM, // TM37 + gItemIcon_TM, gItemIconPalette_FireTMHM, // TM38 + gItemIcon_TM, gItemIconPalette_RockTMHM, // TM39 + gItemIcon_TM, gItemIconPalette_FlyingTMHM, // TM40 + gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM41 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM42 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM43 + gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM44 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM45 + gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM46 + gItemIcon_TM, gItemIconPalette_SteelTMHM, // TM47 + gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM48 + gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM49 + gItemIcon_TM, gItemIconPalette_FireTMHM, // TM50 + gItemIcon_HM, gItemIconPalette_NormalTMHM, // HM01 + gItemIcon_HM, gItemIconPalette_FlyingTMHM, // HM02 + gItemIcon_HM, gItemIconPalette_WaterTMHM, // HM03 + gItemIcon_HM, gItemIconPalette_NormalTMHM, // HM04 + gItemIcon_HM, gItemIconPalette_NormalTMHM, // HM05 + gItemIcon_HM, gItemIconPalette_FightingTMHM, // HM06 + gItemIcon_HM, gItemIconPalette_WaterTMHM, // HM07 + gItemIcon_HM, gItemIconPalette_WaterTMHM, // HM08 +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// FireRed/LeafGreen key items + gItemIcon_OaksParcel, gItemIconPalette_OaksParcel, + gItemIcon_PokeFlute, gItemIconPalette_PokeFlute, + gItemIcon_SecretKey, gItemIconPalette_SecretKey, + gItemIcon_BikeVoucher, gItemIconPalette_BikeVoucher, + gItemIcon_GoldTeeth, gItemIconPalette_GoldTeeth, + gItemIcon_OldAmber, gItemIconPalette_OldAmber, + gItemIcon_CardKey, gItemIconPalette_CardKey, + gItemIcon_LiftKey, gItemIconPalette_Key, + gItemIcon_HelixFossil, gItemIconPalette_KantoFossil, + gItemIcon_DomeFossil, gItemIconPalette_KantoFossil, + gItemIcon_SilphScope, gItemIconPalette_SilphScope, + gItemIcon_Bicycle, gItemIconPalette_Bicycle, + gItemIcon_TownMap, gItemIconPalette_TownMap, + gItemIcon_VSSeeker, gItemIconPalette_VSSeeker, + gItemIcon_FameChecker, gItemIconPalette_FameChecker, + gItemIcon_TMCase, gItemIconPalette_TMCase, + gItemIcon_BerryPouch, gItemIconPalette_BerryPouch, + gItemIcon_TeachyTV, gItemIconPalette_TeachyTV, + gItemIcon_TriPass, gItemIconPalette_TriPass, + gItemIcon_RainbowPass, gItemIconPalette_RainbowPass, + gItemIcon_Tea, gItemIconPalette_Tea, + gItemIcon_MysticTicket, gItemIconPalette_MysticTicket, + gItemIcon_AuroraTicket, gItemIconPalette_AuroraTicket, + gItemIcon_PowderJar, gItemIconPalette_PowderJar, + gItemIcon_Gem, gItemIconPalette_Ruby, + gItemIcon_Gem, gItemIconPalette_Sapphire, +// Emerald-only key items + gItemIcon_MagmaEmblem, gItemIconPalette_MagmaEmblem, + gItemIcon_OldSeaMap, gItemIconPalette_OldSeaMap, +// Return to field arrow + gItemIcon_ReturnToFieldArrow, gItemIconPalette_ReturnToFieldArrow, +}; +#endif // GUARD_DATA_ITEM_ICON_TABLE_H diff --git a/include/data/items.h b/include/data/items.h new file mode 100644 index 000000000..49f981faf --- /dev/null +++ b/include/data/items.h @@ -0,0 +1,6079 @@ +const struct Item gItems[] = +{ + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Pokeballs + + { + .name = _("MASTER BALL"), + .itemId = ITEM_MASTER_BALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMasterBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 0, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 0, + }, + { + .name = _("ULTRA BALL"), + .itemId = ITEM_ULTRA_BALL, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gUltraBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 1, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 1, + }, + { + .name = _("GREAT BALL"), + .itemId = ITEM_GREAT_BALL, + .price = 600, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGreatBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 2, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 2, + }, + { + .name = _("POKé BALL"), + .itemId = ITEM_POKE_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPokeBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 3, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 3, + }, + { + .name = _("SAFARI BALL"), + .itemId = ITEM_SAFARI_BALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSafariBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 4, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 4, + }, + { + .name = _("NET BALL"), + .itemId = ITEM_NET_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gNetBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 5, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 5, + }, + { + .name = _("DIVE BALL"), + .itemId = ITEM_DIVE_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDiveBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 6, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 6, + }, + { + .name = _("NEST BALL"), + .itemId = ITEM_NEST_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gNestBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 7, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 7, + }, + { + .name = _("REPEAT BALL"), + .itemId = ITEM_REPEAT_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRepeatBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 8, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 8, + }, + { + .name = _("TIMER BALL"), + .itemId = ITEM_TIMER_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTimerBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 9, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 9, + }, + { + .name = _("LUXURY BALL"), + .itemId = ITEM_LUXURY_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gLuxuryBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 10, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 10, + }, + { + .name = _("PREMIER BALL"), + .itemId = ITEM_PREMIER_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPremierBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 11, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 11, + }, + +//Medicine + + { + .name = _("POTION"), + .itemId = ITEM_POTION, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 20, + .description = gPotionItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ANTIDOTE"), + .itemId = ITEM_ANTIDOTE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gAntidoteItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BURN HEAL"), + .itemId = ITEM_BURN_HEAL, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBurnHealItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ICE HEAL"), + .itemId = ITEM_ICE_HEAL, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gIceHealItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("AWAKENING"), + .itemId = ITEM_AWAKENING, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gAwakeningItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PARLYZ HEAL"), + .itemId = ITEM_PARALYZE_HEAL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gParalyzeHealItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FULL RESTORE"), + .itemId = ITEM_FULL_RESTORE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gFullRestoreItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MAX POTION"), + .itemId = ITEM_MAX_POTION, + .price = 2500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gMaxPotionItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HYPER POTION"), + .itemId = ITEM_HYPER_POTION, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 200, + .description = gHyperPotionItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SUPER POTION"), + .itemId = ITEM_SUPER_POTION, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gSuperPotionItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FULL HEAL"), + .itemId = ITEM_FULL_HEAL, + .price = 600, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gFullHealItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("REVIVE"), + .itemId = ITEM_REVIVE, + .price = 1500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gReviveItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MAX REVIVE"), + .itemId = ITEM_MAX_REVIVE, + .price = 4000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMaxReviveItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FRESH WATER"), + .itemId = ITEM_FRESH_WATER, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gFreshWaterItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SODA POP"), + .itemId = ITEM_SODA_POP, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 60, + .description = gSodaPopItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LEMONADE"), + .itemId = ITEM_LEMONADE, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 80, + .description = gLemonadeItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MOOMOO MILK"), + .itemId = ITEM_MOOMOO_MILK, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 100, + .description = gMoomooMilkItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ENERGYPOWDER"), + .itemId = ITEM_ENERGY_POWDER, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gEnergyPowderItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ENERGY ROOT"), + .itemId = ITEM_ENERGY_ROOT, + .price = 800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gEnergyRootItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HEAL POWDER"), + .itemId = ITEM_HEAL_POWDER, + .price = 450, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHealPowderItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("REVIVAL HERB"), + .itemId = ITEM_REVIVAL_HERB, + .price = 2800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRevivalHerbItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ETHER"), + .itemId = ITEM_ETHER, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 10, + .description = gEtherItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("MAX ETHER"), + .itemId = ITEM_MAX_ETHER, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gMaxEtherItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("ELIXIR"), + .itemId = ITEM_ELIXIR, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 10, + .description = gElixirItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("MAX ELIXIR"), + .itemId = ITEM_MAX_ELIXIR, + .price = 4500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gMaxElixirItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("LAVA COOKIE"), + .itemId = ITEM_LAVA_COOKIE, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gLavaCookieItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BLUE FLUTE"), + .itemId = ITEM_BLUE_FLUTE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBlueFluteItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("YELLOW FLUTE"), + .itemId = ITEM_YELLOW_FLUTE, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gYellowFluteItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("RED FLUTE"), + .itemId = ITEM_RED_FLUTE, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRedFluteItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BLACK FLUTE"), + .itemId = ITEM_BLACK_FLUTE, + .price = 400, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gBlackFluteItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WHITE FLUTE"), + .itemId = ITEM_WHITE_FLUTE, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 150, + .description = gWhiteFluteItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BERRY JUICE"), + .itemId = ITEM_BERRY_JUICE, + .price = 100, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 20, + .description = gBerryJuiceItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SACRED ASH"), + .itemId = ITEM_SACRED_ASH, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSacredAshItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_SacredAsh, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Collectibles + + { + .name = _("SHOAL SALT"), + .itemId = ITEM_SHOAL_SALT, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gShoalSaltItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHOAL SHELL"), + .itemId = ITEM_SHOAL_SHELL, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gShoalShellItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RED SHARD"), + .itemId = ITEM_RED_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRedShardItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUE SHARD"), + .itemId = ITEM_BLUE_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBlueShardItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("YELLOW SHARD"), + .itemId = ITEM_YELLOW_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gYellowShardItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GREEN SHARD"), + .itemId = ITEM_GREEN_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGreenShardItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Vitamins + + { + .name = _("HP UP"), + .itemId = ITEM_HP_UP, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHPUpItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PROTEIN"), + .itemId = ITEM_PROTEIN, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gProteinItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("IRON"), + .itemId = ITEM_IRON, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gIronItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CARBOS"), + .itemId = ITEM_CARBOS, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gCarbosItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CALCIUM"), + .itemId = ITEM_CALCIUM, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gCalciumItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RARE CANDY"), + .itemId = ITEM_RARE_CANDY, + .price = 4800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRareCandyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PP UP"), + .itemId = ITEM_PP_UP, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPPUpItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPUp, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ZINC"), + .itemId = ITEM_ZINC, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gZincItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PP MAX"), + .itemId = ITEM_PP_MAX, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPPMaxItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPUp, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Battle items + + { + .name = _("GUARD SPEC."), + .itemId = ITEM_GUARD_SPEC, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGuardSpecItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("DIRE HIT"), + .itemId = ITEM_DIRE_HIT, + .price = 650, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDireHitItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X ATTACK"), + .itemId = ITEM_X_ATTACK, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gXAttackItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X DEFEND"), + .itemId = ITEM_X_DEFEND, + .price = 550, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gXDefendItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X SPEED"), + .itemId = ITEM_X_SPEED, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gXSpeedItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X ACCURACY"), + .itemId = ITEM_X_ACCURACY, + .price = 950, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gXAccuracyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X SPECIAL"), + .itemId = ITEM_X_SPECIAL, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gXSpecialItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("POKé DOLL"), + .itemId = ITEM_POKE_DOLL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPokeDollItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_Escape, + .secondaryId = 0, + }, + { + .name = _("FLUFFY TAIL"), + .itemId = ITEM_FLUFFY_TAIL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gFluffyTailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_Escape, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Field items + + { + .name = _("SUPER REPEL"), + .itemId = ITEM_SUPER_REPEL, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 200, + .description = gSuperRepelItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAX REPEL"), + .itemId = ITEM_MAX_REPEL, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 250, + .description = gMaxRepelItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ESCAPE ROPE"), + .itemId = ITEM_ESCAPE_ROPE, + .price = 550, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gEscapeRopeItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_EscapeRope, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("REPEL"), + .itemId = ITEM_REPEL, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 100, + .description = gRepelItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Evolution stones + + { + .name = _("SUN STONE"), + .itemId = ITEM_SUN_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSunStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MOON STONE"), + .itemId = ITEM_MOON_STONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMoonStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FIRE STONE"), + .itemId = ITEM_FIRE_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gFireStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("THUNDERSTONE"), + .itemId = ITEM_THUNDER_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gThunderStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WATER STONE"), + .itemId = ITEM_WATER_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gWaterStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LEAF STONE"), + .itemId = ITEM_LEAF_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gLeafStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Valuable items + + { + .name = _("TINYMUSHROOM"), + .itemId = ITEM_TINY_MUSHROOM, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTinyMushroomItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BIG MUSHROOM"), + .itemId = ITEM_BIG_MUSHROOM, + .price = 5000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBigMushroomItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PEARL"), + .itemId = ITEM_PEARL, + .price = 1400, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPearlItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BIG PEARL"), + .itemId = ITEM_BIG_PEARL, + .price = 7500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBigPearlItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STARDUST"), + .itemId = ITEM_STARDUST, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gStardustItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STAR PIECE"), + .itemId = ITEM_STAR_PIECE, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gStarPieceItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NUGGET"), + .itemId = ITEM_NUGGET, + .price = 10000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gNuggetItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HEART SCALE"), + .itemId = ITEM_HEART_SCALE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHeartScaleItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Mail + { + .name = _("ORANGE MAIL"), + .itemId = ITEM_ORANGE_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gOrangeMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HARBOR MAIL"), + .itemId = ITEM_HARBOR_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHarborMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("GLITTER MAIL"), + .itemId = ITEM_GLITTER_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGlitterMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 2, + }, + { + .name = _("MECH MAIL"), + .itemId = ITEM_MECH_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMechMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 3, + }, + { + .name = _("WOOD MAIL"), + .itemId = ITEM_WOOD_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gWoodMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 4, + }, + { + .name = _("WAVE MAIL"), + .itemId = ITEM_WAVE_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gWaveMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 5, + }, + { + .name = _("BEAD MAIL"), + .itemId = ITEM_BEAD_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBeadMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 6, + }, + { + .name = _("SHADOW MAIL"), + .itemId = ITEM_SHADOW_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gShadowMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 7, + }, + { + .name = _("TROPIC MAIL"), + .itemId = ITEM_TROPIC_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTropicMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 8, + }, + { + .name = _("DREAM MAIL"), + .itemId = ITEM_DREAM_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDreamMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 9, + }, + { + .name = _("FAB MAIL"), + .itemId = ITEM_FAB_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gFabMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 10, + }, + { + .name = _("RETRO MAIL"), + .itemId = ITEM_RETRO_MAIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRetroMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 11, + }, + +//Berries + + { + .name = _("CHERI BERRY"), + .itemId = ITEM_CHERI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_PAR, + .holdEffectParam = 0, + .description = gCheriBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("CHESTO BERRY"), + .itemId = ITEM_CHESTO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_SLP, + .holdEffectParam = 0, + .description = gChestoBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PECHA BERRY"), + .itemId = ITEM_PECHA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_PSN, + .holdEffectParam = 0, + .description = gPechaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("RAWST BERRY"), + .itemId = ITEM_RAWST_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_BRN, + .holdEffectParam = 0, + .description = gRawstBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ASPEAR BERRY"), + .itemId = ITEM_ASPEAR_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_FRZ, + .holdEffectParam = 0, + .description = gAspearBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LEPPA BERRY"), + .itemId = ITEM_LEPPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_PP, + .holdEffectParam = 10, + .description = gLeppaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("ORAN BERRY"), + .itemId = ITEM_ORAN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 10, + .description = gOranBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PERSIM BERRY"), + .itemId = ITEM_PERSIM_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_CONFUSION, + .holdEffectParam = 0, + .description = gPersimBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LUM BERRY"), + .itemId = ITEM_LUM_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_STATUS, + .holdEffectParam = 0, + .description = gLumBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SITRUS BERRY"), + .itemId = ITEM_SITRUS_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 30, + .description = gSitrusBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FIGY BERRY"), + .itemId = ITEM_FIGY_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SPICY, + .holdEffectParam = 8, + .description = gFigyBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WIKI BERRY"), + .itemId = ITEM_WIKI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_DRY, + .holdEffectParam = 8, + .description = gWikiBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGO BERRY"), + .itemId = ITEM_MAGO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SWEET, + .holdEffectParam = 8, + .description = gMagoBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AGUAV BERRY"), + .itemId = ITEM_AGUAV_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_BITTER, + .holdEffectParam = 8, + .description = gAguavBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("IAPAPA BERRY"), + .itemId = ITEM_IAPAPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SOUR, + .holdEffectParam = 8, + .description = gIapapaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RAZZ BERRY"), + .itemId = ITEM_RAZZ_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRazzBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUK BERRY"), + .itemId = ITEM_BLUK_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBlukBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NANAB BERRY"), + .itemId = ITEM_NANAB_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gNanabBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WEPEAR BERRY"), + .itemId = ITEM_WEPEAR_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gWepearBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PINAP BERRY"), + .itemId = ITEM_PINAP_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPinapBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("POMEG BERRY"), + .itemId = ITEM_POMEG_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPomegBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KELPSY BERRY"), + .itemId = ITEM_KELPSY_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gKelpsyBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("QUALOT BERRY"), + .itemId = ITEM_QUALOT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gQualotBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HONDEW BERRY"), + .itemId = ITEM_HONDEW_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHondewBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GREPA BERRY"), + .itemId = ITEM_GREPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGrepaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TAMATO BERRY"), + .itemId = ITEM_TAMATO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTamatoBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CORNN BERRY"), + .itemId = ITEM_CORNN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gCornnBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGOST BERRY"), + .itemId = ITEM_MAGOST_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMagostBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RABUTA BERRY"), + .itemId = ITEM_RABUTA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRabutaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NOMEL BERRY"), + .itemId = ITEM_NOMEL_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gNomelBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SPELON BERRY"), + .itemId = ITEM_SPELON_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSpelonBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PAMTRE BERRY"), + .itemId = ITEM_PAMTRE_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPamtreBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WATMEL BERRY"), + .itemId = ITEM_WATMEL_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gWatmelBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DURIN BERRY"), + .itemId = ITEM_DURIN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDurinBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BELUE BERRY"), + .itemId = ITEM_BELUE_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBelueBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LIECHI BERRY"), + .itemId = ITEM_LIECHI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_ATTACK_UP, + .holdEffectParam = 4, + .description = gLiechiBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GANLON BERRY"), + .itemId = ITEM_GANLON_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_DEFENSE_UP, + .holdEffectParam = 4, + .description = gGanlonBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SALAC BERRY"), + .itemId = ITEM_SALAC_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SPEED_UP, + .holdEffectParam = 4, + .description = gSalacBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PETAYA BERRY"), + .itemId = ITEM_PETAYA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SP_ATTACK_UP, + .holdEffectParam = 4, + .description = gPetayaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("APICOT BERRY"), + .itemId = ITEM_APICOT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SP_DEFENSE_UP, + .holdEffectParam = 4, + .description = gApicotBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LANSAT BERRY"), + .itemId = ITEM_LANSAT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CRITICAL_UP, + .holdEffectParam = 4, + .description = gLansatBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STARF BERRY"), + .itemId = ITEM_STARF_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RANDOM_STAT_UP, + .holdEffectParam = 4, + .description = gStarfBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ENIGMA BERRY"), + .itemId = ITEM_ENIGMA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gEnigmaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_EnigmaBerry, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Hold items + + { + .name = _("BRIGHTPOWDER"), + .itemId = ITEM_BRIGHT_POWDER, + .price = 10, + .holdEffect = HOLD_EFFECT_EVASION_UP, + .holdEffectParam = 10, + .description = gBrightPowderItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WHITE HERB"), + .itemId = ITEM_WHITE_HERB, + .price = 100, + .holdEffect = HOLD_EFFECT_RESTORE_STATS, + .holdEffectParam = 0, + .description = gWhiteHerbItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MACHO BRACE"), + .itemId = ITEM_MACHO_BRACE, + .price = 3000, + .holdEffect = HOLD_EFFECT_MACHO_BRACE, + .holdEffectParam = 0, + .description = gMachoBraceItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EXP. SHARE"), + .itemId = ITEM_EXP_SHARE, + .price = 3000, + .holdEffect = HOLD_EFFECT_EXP_SHARE, + .holdEffectParam = 0, + .description = gExpShareItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("QUICK CLAW"), + .itemId = ITEM_QUICK_CLAW, + .price = 100, + .holdEffect = HOLD_EFFECT_QUICK_CLAW, + .holdEffectParam = 20, + .description = gQuickClawItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOOTHE BELL"), + .itemId = ITEM_SOOTHE_BELL, + .price = 100, + .holdEffect = HOLD_EFFECT_HAPPINESS_UP, + .holdEffectParam = 0, + .description = gSootheBellItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MENTAL HERB"), + .itemId = ITEM_MENTAL_HERB, + .price = 100, + .holdEffect = HOLD_EFFECT_CURE_ATTRACT, + .holdEffectParam = 0, + .description = gMentalHerbItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CHOICE BAND"), + .itemId = ITEM_CHOICE_BAND, + .price = 100, + .holdEffect = HOLD_EFFECT_CHOICE_BAND, + .holdEffectParam = 0, + .description = gChoiceBandItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KING’S ROCK"), + .itemId = ITEM_KINGS_ROCK, + .price = 100, + .holdEffect = HOLD_EFFECT_FLINCH, + .holdEffectParam = 10, + .description = gKingsRockItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SILVERPOWDER"), + .itemId = ITEM_SILVER_POWDER, + .price = 100, + .holdEffect = HOLD_EFFECT_BUG_POWER, + .holdEffectParam = 10, + .description = gSilverPowderItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AMULET COIN"), + .itemId = ITEM_AMULET_COIN, + .price = 100, + .holdEffect = HOLD_EFFECT_DOUBLE_PRIZE, + .holdEffectParam = 10, + .description = gAmuletCoinItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CLEANSE TAG"), + .itemId = ITEM_CLEANSE_TAG, + .price = 200, + .holdEffect = HOLD_EFFECT_REPEL, + .holdEffectParam = 0, + .description = gCleanseTagItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOUL DEW"), + .itemId = ITEM_SOUL_DEW, + .price = 200, + .holdEffect = HOLD_EFFECT_SOUL_DEW, + .holdEffectParam = 0, + .description = gSoulDewItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEEPSEATOOTH"), + .itemId = ITEM_DEEP_SEA_TOOTH, + .price = 200, + .holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH, + .holdEffectParam = 0, + .description = gDeepSeaToothItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEEPSEASCALE"), + .itemId = ITEM_DEEP_SEA_SCALE, + .price = 200, + .holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE, + .holdEffectParam = 0, + .description = gDeepSeaScaleItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SMOKE BALL"), + .itemId = ITEM_SMOKE_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_CAN_ALWAYS_RUN, + .holdEffectParam = 0, + .description = gSmokeBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EVERSTONE"), + .itemId = ITEM_EVERSTONE, + .price = 200, + .holdEffect = HOLD_EFFECT_PREVENT_EVOLVE, + .holdEffectParam = 0, + .description = gEverstoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FOCUS BAND"), + .itemId = ITEM_FOCUS_BAND, + .price = 200, + .holdEffect = HOLD_EFFECT_FOCUS_BAND, + .holdEffectParam = 10, + .description = gFocusBandItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LUCKY EGG"), + .itemId = ITEM_LUCKY_EGG, + .price = 200, + .holdEffect = HOLD_EFFECT_LUCKY_EGG, + .holdEffectParam = 0, + .description = gLuckyEggItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCOPE LENS"), + .itemId = ITEM_SCOPE_LENS, + .price = 200, + .holdEffect = HOLD_EFFECT_SCOPE_LENS, + .holdEffectParam = 0, + .description = gScopeLensItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METAL COAT"), + .itemId = ITEM_METAL_COAT, + .price = 100, + .holdEffect = HOLD_EFFECT_STEEL_POWER, + .holdEffectParam = 10, + .description = gMetalCoatItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LEFTOVERS"), + .itemId = ITEM_LEFTOVERS, + .price = 200, + .holdEffect = HOLD_EFFECT_LEFTOVERS, + .holdEffectParam = 10, + .description = gLeftoversItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DRAGON SCALE"), + .itemId = ITEM_DRAGON_SCALE, + .price = 2100, + .holdEffect = HOLD_EFFECT_DRAGON_SCALE, + .holdEffectParam = 10, + .description = gDragonScaleItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LIGHT BALL"), + .itemId = ITEM_LIGHT_BALL, + .price = 100, + .holdEffect = HOLD_EFFECT_LIGHT_BALL, + .holdEffectParam = 0, + .description = gLightBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOFT SAND"), + .itemId = ITEM_SOFT_SAND, + .price = 100, + .holdEffect = HOLD_EFFECT_GROUND_POWER, + .holdEffectParam = 10, + .description = gSoftSandItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HARD STONE"), + .itemId = ITEM_HARD_STONE, + .price = 100, + .holdEffect = HOLD_EFFECT_ROCK_POWER, + .holdEffectParam = 10, + .description = gHardStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MIRACLE SEED"), + .itemId = ITEM_MIRACLE_SEED, + .price = 100, + .holdEffect = HOLD_EFFECT_GRASS_POWER, + .holdEffectParam = 10, + .description = gMiracleSeedItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLACKGLASSES"), + .itemId = ITEM_BLACK_GLASSES, + .price = 100, + .holdEffect = HOLD_EFFECT_DARK_POWER, + .holdEffectParam = 10, + .description = gBlackGlassesItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLACK BELT"), + .itemId = ITEM_BLACK_BELT, + .price = 100, + .holdEffect = HOLD_EFFECT_FIGHTING_POWER, + .holdEffectParam = 10, + .description = gBlackBeltItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGNET"), + .itemId = ITEM_MAGNET, + .price = 100, + .holdEffect = HOLD_EFFECT_ELECTRIC_POWER, + .holdEffectParam = 10, + .description = gMagnetItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MYSTIC WATER"), + .itemId = ITEM_MYSTIC_WATER, + .price = 100, + .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffectParam = 10, + .description = gMysticWaterItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHARP BEAK"), + .itemId = ITEM_SHARP_BEAK, + .price = 100, + .holdEffect = HOLD_EFFECT_FLYING_POWER, + .holdEffectParam = 10, + .description = gSharpBeakItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("POISON BARB"), + .itemId = ITEM_POISON_BARB, + .price = 100, + .holdEffect = HOLD_EFFECT_POISON_POWER, + .holdEffectParam = 10, + .description = gPoisonBarbItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NEVERMELTICE"), + .itemId = ITEM_NEVER_MELT_ICE, + .price = 100, + .holdEffect = HOLD_EFFECT_ICE_POWER, + .holdEffectParam = 10, + .description = gNeverMeltIceItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SPELL TAG"), + .itemId = ITEM_SPELL_TAG, + .price = 100, + .holdEffect = HOLD_EFFECT_GHOST_POWER, + .holdEffectParam = 10, + .description = gSpellTagItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TWISTEDSPOON"), + .itemId = ITEM_TWISTED_SPOON, + .price = 100, + .holdEffect = HOLD_EFFECT_PSYCHIC_POWER, + .holdEffectParam = 10, + .description = gTwistedSpoonItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CHARCOAL"), + .itemId = ITEM_CHARCOAL, + .price = 9800, + .holdEffect = HOLD_EFFECT_FIRE_POWER, + .holdEffectParam = 10, + .description = gCharcoalItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DRAGON FANG"), + .itemId = ITEM_DRAGON_FANG, + .price = 100, + .holdEffect = HOLD_EFFECT_DRAGON_POWER, + .holdEffectParam = 10, + .description = gDragonFangItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SILK SCARF"), + .itemId = ITEM_SILK_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NORMAL_POWER, + .holdEffectParam = 10, + .description = gSilkScarfItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("UP-GRADE"), + .itemId = ITEM_UP_GRADE, + .price = 2100, + .holdEffect = HOLD_EFFECT_UP_GRADE, + .holdEffectParam = 0, + .description = gUpGradeItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHELL BELL"), + .itemId = ITEM_SHELL_BELL, + .price = 200, + .holdEffect = HOLD_EFFECT_SHELL_BELL, + .holdEffectParam = 8, + .description = gShellBellItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SEA INCENSE"), + .itemId = ITEM_SEA_INCENSE, + .price = 9600, + .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffectParam = 5, + .description = gSeaIncenseItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LAX INCENSE"), + .itemId = ITEM_LAX_INCENSE, + .price = 9600, + .holdEffect = HOLD_EFFECT_EVASION_UP, + .holdEffectParam = 5, + .description = gLaxIncenseItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LUCKY PUNCH"), + .itemId = ITEM_LUCKY_PUNCH, + .price = 10, + .holdEffect = HOLD_EFFECT_LUCKY_PUNCH, + .holdEffectParam = 0, + .description = gLuckyPunchItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METAL POWDER"), + .itemId = ITEM_METAL_POWDER, + .price = 10, + .holdEffect = HOLD_EFFECT_METAL_POWDER, + .holdEffectParam = 0, + .description = gMetalPowderItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("THICK CLUB"), + .itemId = ITEM_THICK_CLUB, + .price = 500, + .holdEffect = HOLD_EFFECT_THICK_CLUB, + .holdEffectParam = 0, + .description = gThickClubItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STICK"), + .itemId = ITEM_STICK, + .price = 200, + .holdEffect = HOLD_EFFECT_STICK, + .holdEffectParam = 0, + .description = gStickItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RED SCARF"), + .itemId = ITEM_RED_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRedScarfItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUE SCARF"), + .itemId = ITEM_BLUE_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBlueScarfItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PINK SCARF"), + .itemId = ITEM_PINK_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPinkScarfItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GREEN SCARF"), + .itemId = ITEM_GREEN_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGreenScarfItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("YELLOW SCARF"), + .itemId = ITEM_YELLOW_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gYellowScarfItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Key items + + { + .name = _("MACH BIKE"), + .itemId = ITEM_MACH_BIKE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMachBikeItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Bike, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("COIN CASE"), + .itemId = ITEM_COIN_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gCoinCaseItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CoinCase, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ITEMFINDER"), + .itemId = ITEM_ITEMFINDER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemfinderItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Itemfinder, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("OLD ROD"), + .itemId = ITEM_OLD_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gOldRodItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GOOD ROD"), + .itemId = ITEM_GOOD_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGoodRodItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("SUPER ROD"), + .itemId = ITEM_SUPER_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSuperRodItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 2, + }, + { + .name = _("S.S. TICKET"), + .itemId = ITEM_SS_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSSTicketItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CONTEST PASS"), + .itemId = ITEM_CONTEST_PASS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gContestPassItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WAILMER PAIL"), + .itemId = ITEM_WAILMER_PAIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gWailmerPailItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_WailmerPail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEVON GOODS"), + .itemId = ITEM_DEVON_GOODS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDevonGoodsItemDescription, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOOT SACK"), + .itemId = ITEM_SOOT_SACK, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSootSackItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BASEMENT KEY"), + .itemId = ITEM_BASEMENT_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBasementKeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ACRO BIKE"), + .itemId = ITEM_ACRO_BIKE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gAcroBikeItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Bike, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("{POKEBLOCK} CASE"), + .itemId = ITEM_POKEBLOCK_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPokeblockCaseItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 3, + .fieldUseFunc = ItemUseOutOfBattle_PokeblockCase, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LETTER"), + .itemId = ITEM_LETTER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gLetterItemDescription, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EON TICKET"), + .itemId = ITEM_EON_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gEonTicketItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("RED ORB"), + .itemId = ITEM_RED_ORB, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRedOrbItemDescription, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUE ORB"), + .itemId = ITEM_BLUE_ORB, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBlueOrbItemDescription, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCANNER"), + .itemId = ITEM_SCANNER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gScannerItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GO-GOGGLES"), + .itemId = ITEM_GO_GOGGLES, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGoGogglesItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METEORITE"), + .itemId = ITEM_METEORITE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMeteoriteItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 1 KEY"), + .itemId = ITEM_ROOM_1_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRoom1KeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 2 KEY"), + .itemId = ITEM_ROOM_2_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRoom2KeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 4 KEY"), + .itemId = ITEM_ROOM_4_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRoom4KeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 6 KEY"), + .itemId = ITEM_ROOM_6_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRoom6KeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STORAGE KEY"), + .itemId = ITEM_STORAGE_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gStorageKeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ROOT FOSSIL"), + .itemId = ITEM_ROOT_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRootFossilItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CLAW FOSSIL"), + .itemId = ITEM_CLAW_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gClawFossilItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEVON SCOPE"), + .itemId = ITEM_DEVON_SCOPE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDevonScopeItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//TMs/HMs + + { + .name = _("TM01"), + .itemId = ITEM_TM01_FOCUS_PUNCH, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM01ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM02"), + .itemId = ITEM_TM02_DRAGON_CLAW, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM02ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM03"), + .itemId = ITEM_TM03_WATER_PULSE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM03ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM04"), + .itemId = ITEM_TM04_CALM_MIND, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM04ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM05"), + .itemId = ITEM_TM05_ROAR, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM05ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM06"), + .itemId = ITEM_TM06_TOXIC, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM06ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM07"), + .itemId = ITEM_TM07_HAIL, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM07ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM08"), + .itemId = ITEM_TM08_BULK_UP, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM08ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM09"), + .itemId = ITEM_TM09_BULLET_SEED, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM09ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM10"), + .itemId = ITEM_TM10_HIDDEN_POWER, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM10ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM11"), + .itemId = ITEM_TM11_SUNNY_DAY, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM11ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM12"), + .itemId = ITEM_TM12_TAUNT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM12ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM13"), + .itemId = ITEM_TM13_ICE_BEAM, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM13ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM14"), + .itemId = ITEM_TM14_BLIZZARD, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM14ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM15"), + .itemId = ITEM_TM15_HYPER_BEAM, + .price = 7500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM15ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM16"), + .itemId = ITEM_TM16_LIGHT_SCREEN, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM16ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM17"), + .itemId = ITEM_TM17_PROTECT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM17ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM18"), + .itemId = ITEM_TM18_RAIN_DANCE, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM18ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM19"), + .itemId = ITEM_TM19_GIGA_DRAIN, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM19ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM20"), + .itemId = ITEM_TM20_SAFEGUARD, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM20ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM21"), + .itemId = ITEM_TM21_FRUSTRATION, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM21ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM22"), + .itemId = ITEM_TM22_SOLARBEAM, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM22ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM23"), + .itemId = ITEM_TM23_IRON_TAIL, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM23ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM24"), + .itemId = ITEM_TM24_THUNDERBOLT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM24ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM25"), + .itemId = ITEM_TM25_THUNDER, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM25ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM26"), + .itemId = ITEM_TM26_EARTHQUAKE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM26ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM27"), + .itemId = ITEM_TM27_RETURN, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM27ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM28"), + .itemId = ITEM_TM28_DIG, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM28ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM29"), + .itemId = ITEM_TM29_PSYCHIC, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM29ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM30"), + .itemId = ITEM_TM30_SHADOW_BALL, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM30ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM31"), + .itemId = ITEM_TM31_BRICK_BREAK, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM31ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM32"), + .itemId = ITEM_TM32_DOUBLE_TEAM, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM32ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM33"), + .itemId = ITEM_TM33_REFLECT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM33ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM34"), + .itemId = ITEM_TM34_SHOCK_WAVE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM34ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM35"), + .itemId = ITEM_TM35_FLAMETHROWER, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM35ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM36"), + .itemId = ITEM_TM36_SLUDGE_BOMB, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM36ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM37"), + .itemId = ITEM_TM37_SANDSTORM, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM37ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM38"), + .itemId = ITEM_TM38_FIRE_BLAST, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM38ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM39"), + .itemId = ITEM_TM39_ROCK_TOMB, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM39ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM40"), + .itemId = ITEM_TM40_AERIAL_ACE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM40ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM41"), + .itemId = ITEM_TM41_TORMENT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM41ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM42"), + .itemId = ITEM_TM42_FACADE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM42ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM43"), + .itemId = ITEM_TM43_SECRET_POWER, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM43ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM44"), + .itemId = ITEM_TM44_REST, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM44ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM45"), + .itemId = ITEM_TM45_ATTRACT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM45ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM46"), + .itemId = ITEM_TM46_THIEF, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM46ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM47"), + .itemId = ITEM_TM47_STEEL_WING, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM47ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM48"), + .itemId = ITEM_TM48_SKILL_SWAP, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM48ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM49"), + .itemId = ITEM_TM49_SNATCH, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM49ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM50"), + .itemId = ITEM_TM50_OVERHEAT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM50ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM01"), + .itemId = ITEM_HM01_CUT, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM01ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM02"), + .itemId = ITEM_HM02_FLY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM02ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM03"), + .itemId = ITEM_HM03_SURF, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM03ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM04"), + .itemId = ITEM_HM04_STRENGTH, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM04ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM05"), + .itemId = ITEM_HM05_FLASH, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM05ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM06"), + .itemId = ITEM_HM06_ROCK_SMASH, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM06ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM07"), + .itemId = ITEM_HM07_WATERFALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM07ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM08"), + .itemId = ITEM_HM08_DIVE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM08ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//FireRed/LeafGreen key items + + { + .name = _("OAK’S PARCEL"), + .itemId = ITEM_OAKS_PARCEL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gOaksParcelItemDescription, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("POKé FLUTE"), + .itemId = ITEM_POKE_FLUTE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPokeFluteItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SECRET KEY"), + .itemId = ITEM_SECRET_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSecretKeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BIKE VOUCHER"), + .itemId = ITEM_BIKE_VOUCHER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBikeVoucherItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GOLD TEETH"), + .itemId = ITEM_GOLD_TEETH, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGoldTeethItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("OLD AMBER"), + .itemId = ITEM_OLD_AMBER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gOldAmberItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CARD KEY"), + .itemId = ITEM_CARD_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gCardKeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LIFT KEY"), + .itemId = ITEM_LIFT_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gLiftKeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HELIX FOSSIL"), + .itemId = ITEM_HELIX_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHelixFossilItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DOME FOSSIL"), + .itemId = ITEM_DOME_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDomeFossilItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SILPH SCOPE"), + .itemId = ITEM_SILPH_SCOPE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSilphScopeItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BICYCLE"), + .itemId = ITEM_BICYCLE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBicycleItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TOWN MAP"), + .itemId = ITEM_TOWN_MAP, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTownMapItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VS SEEKER"), + .itemId = ITEM_VS_SEEKER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gVSSeekerItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FAME CHECKER"), + .itemId = ITEM_FAME_CHECKER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gFameCheckerItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM CASE"), + .itemId = ITEM_TM_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTMCaseItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BERRY POUCH"), + .itemId = ITEM_BERRY_POUCH, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBerryPouchItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TEACHY TV"), + .itemId = ITEM_TEACHY_TV, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTeachyTVItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TRI-PASS"), + .itemId = ITEM_TRI_PASS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTriPassItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RAINBOW PASS"), + .itemId = ITEM_RAINBOW_PASS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRainbowPassItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TEA"), + .itemId = ITEM_TEA, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTeaItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MYSTICTICKET"), + .itemId = ITEM_MYSTIC_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMysticTicketItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AURORATICKET"), + .itemId = ITEM_AURORA_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gAuroraTicketItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("POWDER JAR"), + .itemId = ITEM_POWDER_JAR, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPowderJarItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_PowderJar, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RUBY"), + .itemId = ITEM_RUBY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRubyItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SAPPHIRE"), + .itemId = ITEM_SAPPHIRE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSapphireItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Emerald-specific key items + + { + .name = _("MAGMA EMBLEM"), + .itemId = ITEM_MAGMA_EMBLEM, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMagmaEmblemItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("OLD SEA MAP"), + .itemId = ITEM_OLD_SEA_MAP, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gOldSeaMapItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, +}; diff --git a/include/data/pokedex_orders.h b/include/data/pokedex_orders.h new file mode 100644 index 000000000..61fbd289c --- /dev/null +++ b/include/data/pokedex_orders.h @@ -0,0 +1,1199 @@ +#ifndef GUARD_DATA_POKEDEX_ORDERS +#define GUARD_DATA_POKEDEX_ORDERS + +const u16 gPokedexOrder_Alphabetical[] = +{ + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 63, // Abra + 359, // Absol + 142, // Aerodactyl + 306, // Aggron + 190, // Aipom + 65, // Alakazam + 334, // Altaria + 181, // Ampharos + 347, // Anorith + 24, // Arbok + 59, // Arcanine + 168, // Ariados + 348, // Armaldo + 304, // Aron + 144, // Articuno + 184, // Azumarill + 298, // Azurill + 371, // Bagon + 343, // Baltoy + 354, // Banette + 339, // Barboach + 153, // Bayleef + 267, // Beautifly + 15, // Beedrill + 374, // Beldum + 182, // Bellossom + 69, // Bellsprout + 9, // Blastoise + 257, // Blaziken + 242, // Blissey + 286, // Breloom + 1, // Bulbasaur + 12, // Butterfree + 331, // Cacnea + 332, // Cacturne + 323, // Camerupt + 318, // Carvanha + 268, // Cascoon + 351, // Castform + 10, // Caterpie + 251, // Celebi + 113, // Chansey + 6, // Charizard + 4, // Charmander + 5, // Charmeleon + 152, // Chikorita + 358, // Chimecho + 170, // Chinchou + 366, // Clamperl + 344, // Claydol + 36, // Clefable + 35, // Clefairy + 173, // Cleffa + 91, // Cloyster + 256, // Combusken + 341, // Corphish + 222, // Corsola + 346, // Cradily + 342, // Crawdaunt + 169, // Crobat + 159, // Croconaw + 104, // Cubone + 155, // Cyndaquil + 301, // Delcatty + 225, // Delibird + 386, // Deoxys + 87, // Dewgong + 50, // Diglett + 132, // Ditto + 85, // Dodrio + 84, // Doduo + 232, // Donphan + 148, // Dragonair + 149, // Dragonite + 147, // Dratini + 96, // Drowzee + 51, // Dugtrio + 206, // Dunsparce + 356, // Dusclops + 355, // Duskull + 269, // Dustox + 133, // Eevee + 23, // Ekans + 125, // Electabuzz + 309, // Electrike + 101, // Electrode + 239, // Elekid + 244, // Entei + 196, // Espeon + 102, // Exeggcute + 103, // Exeggutor + 295, // Exploud + 83, // Farfetch'd + 22, // Fearow + 349, // Feebas + 160, // Feraligatr + 180, // Flaaffy + 136, // Flareon + 330, // Flygon + 205, // Forretress + 162, // Furret + 282, // Gardevoir + 92, // Gastly + 94, // Gengar + 74, // Geodude + 203, // Girafarig + 362, // Glalie + 207, // Gligar + 44, // Gloom + 42, // Golbat + 118, // Goldeen + 55, // Golduck + 76, // Golem + 368, // Gorebyss + 210, // Granbull + 75, // Graveler + 88, // Grimer + 383, // Groudon + 253, // Grovyle + 58, // Growlithe + 326, // Grumpig + 316, // Gulpin + 130, // Gyarados + 297, // Hariyama + 93, // Haunter + 214, // Heracross + 107, // Hitmonchan + 106, // Hitmonlee + 237, // Hitmontop + 250, // Ho-Oh + 163, // Hoothoot + 187, // Hoppip + 116, // Horsea + 229, // Houndoom + 228, // Houndour + 367, // Huntail + 97, // Hypno + 174, // Igglybuff + 314, // Illumise + 2, // Ivysaur + 39, // Jigglypuff + 385, // Jirachi + 135, // Jolteon + 189, // Jumpluff + 124, // Jynx + 140, // Kabuto + 141, // Kabutops + 64, // Kadabra + 14, // Kakuna + 115, // Kangaskhan + 352, // Kecleon + 230, // Kingdra + 99, // Kingler + 281, // Kirlia + 109, // Koffing + 98, // Krabby + 382, // Kyogre + 305, // Lairon + 171, // Lanturn + 131, // Lapras + 246, // Larvitar + 380, // Latias + 381, // Latios + 166, // Ledian + 165, // Ledyba + 108, // Lickitung + 345, // Lileep + 264, // Linoone + 271, // Lombre + 270, // Lotad + 294, // Loudred + 272, // Ludicolo + 249, // Lugia + 337, // Lunatone + 370, // Luvdisc + 68, // Machamp + 67, // Machoke + 66, // Machop + 240, // Magby + 219, // Magcargo + 129, // Magikarp + 126, // Magmar + 81, // Magnemite + 82, // Magneton + 296, // Makuhita + 310, // Manectric + 56, // Mankey + 226, // Mantine + 179, // Mareep + 183, // Marill + 105, // Marowak + 259, // Marshtomp + 284, // Masquerain + 303, // Mawile + 308, // Medicham + 307, // Meditite + 154, // Meganium + 52, // Meowth + 376, // Metagross + 375, // Metang + 11, // Metapod + 151, // Mew + 150, // Mewtwo + 262, // Mightyena + 350, // Milotic + 241, // Miltank + 312, // Minun + 200, // Misdreavus + 146, // Moltres + 122, // Mr. mime + 258, // Mudkip + 89, // Muk + 198, // Murkrow + 177, // Natu + 34, // Nidoking + 31, // Nidoqueen + 29, // Nidoran? + 32, // Nidoran? + 30, // Nidorina + 33, // Nidorino + 290, // Nincada + 38, // Ninetales + 291, // Ninjask + 164, // Noctowl + 299, // Nosepass + 322, // Numel + 274, // Nuzleaf + 224, // Octillery + 43, // Oddish + 138, // Omanyte + 139, // Omastar + 95, // Onix + 46, // Paras + 47, // Parasect + 279, // Pelipper + 53, // Persian + 231, // Phanpy + 172, // Pichu + 18, // Pidgeot + 17, // Pidgeotto + 16, // Pidgey + 25, // Pikachu + 221, // Piloswine + 204, // Pineco + 127, // Pinsir + 311, // Plusle + 186, // Politoed + 60, // Poliwag + 61, // Poliwhirl + 62, // Poliwrath + 77, // Ponyta + 261, // Poochyena + 137, // Porygon + 233, // Porygon2 + 57, // Primeape + 54, // Psyduck + 247, // Pupitar + 195, // Quagsire + 156, // Quilava + 211, // Qwilfish + 26, // Raichu + 243, // Raikou + 280, // Ralts + 78, // Rapidash + 20, // Raticate + 19, // Rattata + 384, // Rayquaza + 378, // Regice + 377, // Regirock + 379, // Registeel + 369, // Relicanth + 223, // Remoraid + 112, // Rhydon + 111, // Rhyhorn + 315, // Roselia + 302, // Sableye + 373, // Salamence + 27, // Sandshrew + 28, // Sandslash + 254, // Sceptile + 212, // Scizor + 123, // Scyther + 117, // Seadra + 119, // Seaking + 364, // Sealeo + 273, // Seedot + 86, // Seel + 161, // Sentret + 336, // Seviper + 319, // Sharpedo + 292, // Shedinja + 372, // Shelgon + 90, // Shellder + 275, // Shiftry + 285, // Shroomish + 213, // Shuckle + 353, // Shuppet + 266, // Silcoon + 227, // Skarmory + 188, // Skiploom + 300, // Skitty + 289, // Slaking + 287, // Slakoth + 80, // Slowbro + 199, // Slowking + 79, // Slowpoke + 218, // Slugma + 235, // Smeargle + 238, // Smoochum + 215, // Sneasel + 143, // Snorlax + 361, // Snorunt + 209, // Snubbull + 338, // Solrock + 21, // Spearow + 363, // Spheal + 167, // Spinarak + 327, // Spinda + 325, // Spoink + 7, // Squirtle + 234, // Stantler + 121, // Starmie + 120, // Staryu + 208, // Steelix + 185, // Sudowoodo + 245, // Suicune + 192, // Sunflora + 191, // Sunkern + 283, // Surskit + 333, // Swablu + 317, // Swalot + 260, // Swampert + 277, // Swellow + 220, // Swinub + 276, // Taillow + 114, // Tangela + 128, // Tauros + 216, // Teddiursa + 72, // Tentacool + 73, // Tentacruel + 175, // Togepi + 176, // Togetic + 255, // Torchic + 324, // Torkoal + 158, // Totodile + 328, // Trapinch + 252, // Treecko + 357, // Tropius + 157, // Typhlosion + 248, // Tyranitar + 236, // Tyrogue + 197, // Umbreon + 201, // Unown + 217, // Ursaring + 134, // Vaporeon + 49, // Venomoth + 48, // Venonat + 3, // Venusaur + 329, // Vibrava + 71, // Victreebel + 288, // Vigoroth + 45, // Vileplume + 313, // Volbeat + 100, // Voltorb + 37, // Vulpix + 320, // Wailmer + 321, // Wailord + 365, // Walrein + 8, // Wartortle + 13, // Weedle + 70, // Weepinbell + 110, // Weezing + 340, // Whiscash + 293, // Whismur + 40, // Wigglytuff + 278, // Wingull + 202, // Wobbuffet + 194, // Wooper + 265, // Wurmple + 360, // Wynaut + 178, // Xatu + 193, // Yanma + 335, // Zangoose + 145, // Zapdos + 263, // Zigzagoon + 41, // Zubat +}; + +const u16 gPokedexOrder_Weight[] = +{ + 92, // Gastly + 93, // Haunter + 187, // Hoppip + 50, // Diglett + 351, // Castform + 109, // Koffing + 174, // Igglybuff + 200, // Misdreavus + 358, // Chimecho + 188, // Skiploom + 385, // Jirachi + 333, // Swablu + 292, // Shedinja + 175, // Togepi + 283, // Surskit + 16, // Pidgey + 191, // Sunkern + 339, // Barboach + 172, // Pichu + 298, // Azurill + 315, // Roselia + 177, // Natu + 21, // Spearow + 198, // Murkrow + 353, // Shuppet + 276, // Taillow + 102, // Exeggcute + 255, // Torchic + 270, // Lotad + 10, // Caterpie + 189, // Jumpluff + 173, // Cleffa + 13, // Weedle + 176, // Togetic + 147, // Dratini + 19, // Rattata + 284, // Masquerain + 265, // Wurmple + 211, // Qwilfish + 151, // Mew + 90, // Shellder + 273, // Seedot + 132, // Ditto + 69, // Bellsprout + 311, // Plusle + 52, // Meowth + 312, // Minun + 285, // Shroomish + 251, // Celebi + 222, // Corsola + 252, // Treecko + 327, // Spinda + 201, // Unown + 46, // Paras + 43, // Oddish + 39, // Jigglypuff + 290, // Nincada + 182, // Bellossom + 81, // Magnemite + 25, // Pikachu + 238, // Smoochum + 161, // Sentret + 70, // Weepinbell + 152, // Chikorita + 220, // Swinub + 133, // Eevee + 98, // Krabby + 104, // Cubone + 280, // Ralts + 1, // Bulbasaur + 23, // Ekans + 29, // Nidoran? + 204, // Pineco + 349, // Feebas + 138, // Omanyte + 41, // Zubat + 35, // Clefairy + 258, // Mudkip + 209, // Snubbull + 179, // Mareep + 155, // Cyndaquil + 116, // Horsea + 4, // Charmander + 192, // Sunflora + 183, // Marill + 194, // Wooper + 167, // Spinarak + 44, // Gloom + 370, // Luvdisc + 216, // Teddiursa + 32, // Nidoran? + 7, // Squirtle + 278, // Wingull + 158, // Totodile + 110, // Weezing + 37, // Vulpix + 11, // Metapod + 266, // Silcoon + 129, // Magikarp + 14, // Kakuna + 316, // Gulpin + 100, // Voltorb + 165, // Ledyba + 228, // Houndour + 300, // Skitty + 302, // Sableye + 307, // Meditite + 341, // Corphish + 190, // Aipom + 268, // Cascoon + 303, // Mawile + 140, // Kabuto + 40, // Wigglytuff + 27, // Sandshrew + 223, // Remoraid + 291, // Ninjask + 170, // Chinchou + 60, // Poliwag + 347, // Anorith + 49, // Venomoth + 354, // Banette + 2, // Ivysaur + 180, // Flaaffy + 261, // Poochyena + 360, // Wynaut + 206, // Dunsparce + 178, // Xatu + 355, // Duskull + 83, // Farfetch'd + 328, // Trapinch + 118, // Goldeen + 309, // Electrike + 329, // Vibrava + 71, // Victreebel + 153, // Bayleef + 225, // Delibird + 293, // Whismur + 148, // Dragonair + 361, // Snorunt + 263, // Zigzagoon + 314, // Illumise + 313, // Volbeat + 20, // Raticate + 45, // Vileplume + 156, // Quilava + 5, // Charmeleon + 58, // Growlithe + 256, // Combusken + 66, // Machop + 63, // Abra + 33, // Nidorino + 54, // Psyduck + 277, // Swellow + 38, // Ninetales + 30, // Nidorina + 61, // Poliwhirl + 74, // Geodude + 281, // Kirlia + 213, // Shuckle + 334, // Altaria + 318, // Carvanha + 236, // Tyrogue + 163, // Hoothoot + 240, // Magby + 343, // Baltoy + 253, // Grovyle + 352, // Kecleon + 171, // Lanturn + 8, // Wartortle + 368, // Gorebyss + 369, // Relicanth + 239, // Elekid + 340, // Whiscash + 345, // Lileep + 322, // Numel + 287, // Slakoth + 135, // Jolteon + 159, // Croconaw + 136, // Flareon + 117, // Seadra + 196, // Espeon + 367, // Huntail + 197, // Umbreon + 259, // Marshtomp + 274, // Nuzleaf + 215, // Sneasel + 56, // Mankey + 279, // Pelipper + 267, // Beautifly + 224, // Octillery + 184, // Azumarill + 202, // Wobbuffet + 134, // Vaporeon + 28, // Sandslash + 47, // Parasect + 15, // Beedrill + 89, // Muk + 17, // Pidgeotto + 88, // Grimer + 26, // Raichu + 77, // Ponyta + 125, // Electabuzz + 48, // Venonat + 325, // Spoink + 356, // Dusclops + 308, // Medicham + 269, // Dustox + 53, // Persian + 12, // Butterfree + 57, // Primeape + 96, // Drowzee + 162, // Furret + 233, // Porygon2 + 271, // Lombre + 264, // Linoone + 301, // Delcatty + 342, // Crawdaunt + 51, // Dugtrio + 168, // Ariados + 231, // Phanpy + 186, // Politoed + 120, // Staryu + 113, // Chansey + 139, // Omastar + 114, // Tangela + 218, // Slugma + 229, // Houndoom + 166, // Ledian + 79, // Slowpoke + 137, // Porygon + 262, // Mightyena + 193, // Yanma + 22, // Fearow + 185, // Sudowoodo + 119, // Seaking + 286, // Breloom + 84, // Doduo + 18, // Pidgeot + 363, // Spheal + 36, // Clefable + 380, // Latias + 310, // Manectric + 335, // Zangoose + 141, // Kabutops + 94, // Gengar + 294, // Loudred + 124, // Jynx + 164, // Noctowl + 203, // Girafarig + 371, // Bagon + 126, // Magmar + 105, // Marowak + 72, // Tentacool + 288, // Vigoroth + 242, // Blissey + 359, // Absol + 65, // Alakazam + 237, // Hitmontop + 282, // Gardevoir + 210, // Granbull + 106, // Hitmonlee + 107, // Hitmonchan + 227, // Skarmory + 331, // Cacnea + 257, // Blaziken + 254, // Sceptile + 336, // Seviper + 366, // Clamperl + 145, // Zapdos + 214, // Heracross + 62, // Poliwrath + 122, // Mr. mime + 127, // Pinsir + 272, // Ludicolo + 73, // Tentacruel + 42, // Golbat + 219, // Magcargo + 144, // Articuno + 221, // Piloswine + 123, // Scyther + 64, // Kadabra + 235, // Smeargle + 142, // Aerodactyl + 275, // Shiftry + 99, // Kingler + 31, // Nidoqueen + 82, // Magneton + 304, // Aron + 381, // Latios + 146, // Moltres + 346, // Cradily + 386, // Deoxys + 181, // Ampharos + 34, // Nidoking + 207, // Gligar + 24, // Arbok + 108, // Lickitung + 101, // Electrode + 348, // Armaldo + 67, // Machoke + 234, // Stantler + 326, // Grumpig + 246, // Larvitar + 169, // Crobat + 195, // Quagsire + 241, // Miltank + 97, // Hypno + 55, // Golduck + 332, // Cacturne + 80, // Slowbro + 157, // Typhlosion + 199, // Slowking + 115, // Kangaskhan + 121, // Starmie + 317, // Swalot + 324, // Torkoal + 260, // Swampert + 330, // Flygon + 295, // Exploud + 85, // Dodrio + 9, // Blastoise + 296, // Makuhita + 364, // Sealeo + 128, // Tauros + 319, // Sharpedo + 160, // Feraligatr + 86, // Seel + 6, // Charizard + 78, // Rapidash + 374, // Beldum + 299, // Nosepass + 3, // Venusaur + 357, // Tropius + 154, // Meganium + 373, // Salamence + 75, // Graveler + 344, // Claydol + 372, // Shelgon + 111, // Rhyhorn + 212, // Scizor + 87, // Dewgong + 112, // Rhydon + 232, // Donphan + 103, // Exeggutor + 305, // Lairon + 150, // Mewtwo + 217, // Ursaring + 205, // Forretress + 68, // Machamp + 320, // Wailmer + 289, // Slaking + 91, // Cloyster + 365, // Walrein + 247, // Pupitar + 230, // Kingdra + 338, // Solrock + 59, // Arcanine + 350, // Milotic + 337, // Lunatone + 378, // Regice + 243, // Raikou + 245, // Suicune + 244, // Entei + 250, // Ho-Oh + 248, // Tyranitar + 375, // Metang + 379, // Registeel + 384, // Rayquaza + 95, // Onix + 149, // Dragonite + 249, // Lugia + 131, // Lapras + 323, // Camerupt + 226, // Mantine + 377, // Regirock + 130, // Gyarados + 297, // Hariyama + 362, // Glalie + 76, // Golem + 382, // Kyogre + 306, // Aggron + 321, // Wailord + 208, // Steelix + 143, // Snorlax + 376, // Metagross + 383, // Groudon +}; + +const u16 gPokedexOrder_Height[] = +{ + 50, // Diglett + 298, // Azurill + 177, // Natu + 13, // Weedle + 172, // Pichu + 173, // Cleffa + 175, // Togepi + 351, // Castform + 174, // Igglybuff + 10, // Caterpie + 276, // Taillow + 132, // Ditto + 133, // Eevee + 315, // Roselia + 21, // Spearow + 16, // Pidgey + 191, // Sunkern + 90, // Shellder + 19, // Rattata + 81, // Magnemite + 46, // Paras + 265, // Wurmple + 385, // Jirachi + 104, // Cubone + 258, // Mudkip + 194, // Wooper + 116, // Horsea + 52, // Meowth + 29, // Nidoran? + 220, // Swinub + 151, // Mew + 333, // Swablu + 304, // Aron + 311, // Plusle + 312, // Minun + 102, // Exeggcute + 25, // Pikachu + 182, // Bellossom + 316, // Gulpin + 263, // Zigzagoon + 285, // Shroomish + 138, // Omanyte + 331, // Cacnea + 98, // Krabby + 280, // Ralts + 187, // Hoppip + 255, // Torchic + 366, // Clamperl + 74, // Geodude + 183, // Marill + 339, // Barboach + 238, // Smoochum + 100, // Voltorb + 290, // Nincada + 302, // Sableye + 198, // Murkrow + 211, // Qwilfish + 7, // Squirtle + 252, // Treecko + 343, // Baltoy + 43, // Oddish + 270, // Lotad + 39, // Jigglypuff + 283, // Surskit + 155, // Cyndaquil + 140, // Kabuto + 264, // Linoone + 324, // Torkoal + 32, // Nidoran? + 167, // Spinarak + 56, // Mankey + 273, // Seedot + 261, // Poochyena + 231, // Phanpy + 201, // Unown + 170, // Chinchou + 233, // Porygon2 + 60, // Poliwag + 371, // Bagon + 349, // Feebas + 353, // Shuppet + 158, // Totodile + 251, // Celebi + 360, // Wynaut + 27, // Sandshrew + 358, // Chimecho + 370, // Luvdisc + 228, // Houndour + 266, // Silcoon + 309, // Electrike + 4, // Charmander + 307, // Meditite + 278, // Wingull + 223, // Remoraid + 341, // Corphish + 222, // Corsola + 314, // Illumise + 209, // Snubbull + 37, // Vulpix + 246, // Larvitar + 374, // Beldum + 293, // Whismur + 204, // Pineco + 239, // Elekid + 35, // Clefairy + 213, // Shuckle + 216, // Teddiursa + 14, // Kakuna + 300, // Skitty + 176, // Togetic + 118, // Goldeen + 303, // Mawile + 179, // Mareep + 188, // Skiploom + 109, // Koffing + 51, // Dugtrio + 268, // Cascoon + 322, // Numel + 347, // Anorith + 313, // Volbeat + 163, // Hoothoot + 328, // Trapinch + 325, // Spoink + 11, // Metapod + 69, // Bellsprout + 361, // Snorunt + 20, // Raticate + 259, // Marshtomp + 277, // Swellow + 240, // Magby + 58, // Growlithe + 200, // Misdreavus + 1, // Bulbasaur + 236, // Tyrogue + 218, // Slugma + 287, // Slakoth + 281, // Kirlia + 190, // Aipom + 135, // Jolteon + 30, // Nidorina + 184, // Azumarill + 292, // Shedinja + 66, // Machop + 291, // Ninjask + 284, // Masquerain + 355, // Duskull + 192, // Sunflora + 189, // Jumpluff + 120, // Staryu + 180, // Flaaffy + 363, // Spheal + 54, // Psyduck + 219, // Magcargo + 83, // Farfetch'd + 41, // Zubat + 137, // Porygon + 161, // Sentret + 318, // Carvanha + 44, // Gloom + 26, // Raichu + 129, // Magikarp + 215, // Sneasel + 305, // Lairon + 256, // Combusken + 224, // Octillery + 33, // Nidorino + 136, // Flareon + 225, // Delibird + 72, // Tentacool + 63, // Abra + 253, // Grovyle + 340, // Whiscash + 156, // Quilava + 196, // Espeon + 88, // Grimer + 152, // Chikorita + 326, // Grumpig + 299, // Nosepass + 53, // Persian + 262, // Mightyena + 48, // Venonat + 82, // Magneton + 77, // Ponyta + 296, // Makuhita + 337, // Lunatone + 28, // Sandslash + 96, // Drowzee + 114, // Tangela + 57, // Primeape + 165, // Ledyba + 40, // Wigglytuff + 47, // Parasect + 139, // Omastar + 294, // Loudred + 8, // Wartortle + 75, // Graveler + 197, // Umbreon + 345, // Lileep + 61, // Poliwhirl + 134, // Vaporeon + 15, // Beedrill + 105, // Marowak + 70, // Weepinbell + 369, // Relicanth + 111, // Rhyhorn + 2, // Ivysaur + 352, // Kecleon + 274, // Nuzleaf + 267, // Beautifly + 17, // Pidgeotto + 168, // Ariados + 86, // Seel + 186, // Politoed + 159, // Croconaw + 113, // Chansey + 354, // Banette + 232, // Donphan + 121, // Starmie + 5, // Charmeleon + 221, // Piloswine + 12, // Butterfree + 329, // Vibrava + 125, // Electabuzz + 342, // Crawdaunt + 301, // Delcatty + 334, // Altaria + 372, // Shelgon + 38, // Ninetales + 207, // Gligar + 364, // Sealeo + 327, // Spinda + 247, // Pupitar + 79, // Slowpoke + 338, // Solrock + 241, // Miltank + 22, // Fearow + 45, // Vileplume + 89, // Muk + 205, // Forretress + 185, // Sudowoodo + 359, // Absol + 193, // Yanma + 269, // Dustox + 108, // Lickitung + 235, // Smeargle + 171, // Lanturn + 101, // Electrode + 271, // Lombre + 286, // Breloom + 153, // Bayleef + 117, // Seadra + 110, // Weezing + 279, // Pelipper + 375, // Metang + 31, // Nidoqueen + 332, // Cacturne + 275, // Shiftry + 308, // Medicham + 335, // Zangoose + 141, // Kabutops + 99, // Kingler + 64, // Kadabra + 119, // Seaking + 36, // Clefable + 126, // Magmar + 202, // Wobbuffet + 92, // Gastly + 122, // Mr. mime + 62, // Poliwrath + 128, // Tauros + 380, // Latias + 181, // Ampharos + 288, // Vigoroth + 166, // Ledian + 76, // Golem + 365, // Walrein + 84, // Doduo + 229, // Houndoom + 34, // Nidoking + 124, // Jynx + 107, // Hitmonchan + 234, // Stantler + 210, // Granbull + 237, // Hitmontop + 195, // Quagsire + 344, // Claydol + 260, // Swampert + 242, // Blissey + 272, // Ludicolo + 295, // Exploud + 206, // Dunsparce + 127, // Pinsir + 91, // Cloyster + 67, // Machoke + 203, // Girafarig + 18, // Pidgeot + 178, // Xatu + 346, // Cradily + 106, // Hitmonlee + 49, // Venomoth + 94, // Gengar + 214, // Heracross + 362, // Glalie + 123, // Scyther + 373, // Salamence + 310, // Manectric + 348, // Armaldo + 65, // Alakazam + 97, // Hypno + 164, // Noctowl + 73, // Tentacruel + 356, // Dusclops + 145, // Zapdos + 42, // Golbat + 376, // Metagross + 282, // Gardevoir + 9, // Blastoise + 80, // Slowbro + 93, // Haunter + 68, // Machamp + 377, // Regirock + 317, // Swalot + 254, // Sceptile + 227, // Skarmory + 55, // Golduck + 386, // Deoxys + 71, // Victreebel + 78, // Rapidash + 6, // Charizard + 367, // Huntail + 87, // Dewgong + 144, // Articuno + 157, // Typhlosion + 142, // Aerodactyl + 368, // Gorebyss + 217, // Ursaring + 154, // Meganium + 378, // Regice + 212, // Scizor + 230, // Kingdra + 147, // Dratini + 85, // Dodrio + 319, // Sharpedo + 169, // Crobat + 162, // Furret + 59, // Arcanine + 243, // Raikou + 257, // Blaziken + 323, // Camerupt + 112, // Rhydon + 379, // Registeel + 23, // Ekans + 330, // Flygon + 357, // Tropius + 381, // Latios + 245, // Suicune + 146, // Moltres + 3, // Venusaur + 103, // Exeggutor + 199, // Slowking + 248, // Tyranitar + 289, // Slaking + 320, // Wailmer + 150, // Mewtwo + 306, // Aggron + 143, // Snorlax + 226, // Mantine + 244, // Entei + 149, // Dragonite + 115, // Kangaskhan + 297, // Hariyama + 160, // Feraligatr + 131, // Lapras + 336, // Seviper + 24, // Arbok + 383, // Groudon + 250, // Ho-Oh + 148, // Dragonair + 382, // Kyogre + 249, // Lugia + 350, // Milotic + 130, // Gyarados + 384, // Rayquaza + 95, // Onix + 208, // Steelix + 321, // Wailord +}; + +#endif // GUARD_DATA_POKEDEX_ORDERS diff --git a/include/data/pokemon/base_stats.h b/include/data/pokemon/base_stats.h new file mode 100644 index 000000000..bc6572b46 --- /dev/null +++ b/include/data/pokemon/base_stats.h @@ -0,0 +1,13576 @@ +#ifndef GUARD_BASE_STATS_H +#define GUARD_BASE_STATS_H + +// Maximum value for a female pokemon is 254 (MON_FEMALE) which is 100% female. +// 255 (MON_GENDERLESS) is reserved for genderless pokemon. +#define PERCENT_FEMALE(percent) min(254, ((percent * 255) / 100)) + +const struct BaseStats gBaseStats[] = +{ + [SPECIES_NONE] = {0}, + + [SPECIES_BULBASAUR] = + { + .baseHP = 45, + .baseAttack = 49, + .baseDefense = 49, + .baseSpeed = 45, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_IVYSAUR] = + { + .baseHP = 60, + .baseAttack = 62, + .baseDefense = 63, + .baseSpeed = 60, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_VENUSAUR] = + { + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 83, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 208, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_CHARMANDER] = + { + .baseHP = 39, + .baseAttack = 52, + .baseDefense = 43, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CHARMELEON] = + { + .baseHP = 58, + .baseAttack = 64, + .baseDefense = 58, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 65, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 142, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CHARIZARD] = + { + .baseHP = 78, + .baseAttack = 84, + .baseDefense = 78, + .baseSpeed = 100, + .baseSpAttack = 109, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 209, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SQUIRTLE] = + { + .baseHP = 44, + .baseAttack = 48, + .baseDefense = 65, + .baseSpeed = 43, + .baseSpAttack = 50, + .baseSpDefense = 64, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 66, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WARTORTLE] = + { + .baseHP = 59, + .baseAttack = 63, + .baseDefense = 80, + .baseSpeed = 58, + .baseSpAttack = 65, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 143, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_BLASTOISE] = + { + .baseHP = 79, + .baseAttack = 83, + .baseDefense = 100, + .baseSpeed = 78, + .baseSpAttack = 85, + .baseSpDefense = 105, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 210, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_CATERPIE] = + { + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 35, + .baseSpeed = 45, + .baseSpAttack = 20, + .baseSpDefense = 20, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 255, + .expYield = 53, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_METAPOD] = + { + .baseHP = 50, + .baseAttack = 20, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 120, + .expYield = 72, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_BUTTERFREE] = + { + .baseHP = 60, + .baseAttack = 45, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 160, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_COMPOUND_EYES, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_WEEDLE] = + { + .baseHP = 40, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 50, + .baseSpAttack = 20, + .baseSpDefense = 20, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 52, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_KAKUNA] = + { + .baseHP = 45, + .baseAttack = 25, + .baseDefense = 50, + .baseSpeed = 35, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 71, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_BEEDRILL] = + { + .baseHP = 65, + .baseAttack = 80, + .baseDefense = 40, + .baseSpeed = 75, + .baseSpAttack = 45, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 159, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_PIDGEY] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 56, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 55, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PIDGEOTTO] = + { + .baseHP = 63, + .baseAttack = 60, + .baseDefense = 55, + .baseSpeed = 71, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 120, + .expYield = 113, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PIDGEOT] = + { + .baseHP = 83, + .baseAttack = 80, + .baseDefense = 75, + .baseSpeed = 91, + .baseSpAttack = 70, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 172, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_RATTATA] = + { + .baseHP = 30, + .baseAttack = 56, + .baseDefense = 35, + .baseSpeed = 72, + .baseSpAttack = 25, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 57, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_RATICATE] = + { + .baseHP = 55, + .baseAttack = 81, + .baseDefense = 60, + .baseSpeed = 97, + .baseSpAttack = 50, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 127, + .expYield = 116, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SPEAROW] = + { + .baseHP = 40, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 70, + .baseSpAttack = 31, + .baseSpDefense = 31, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 58, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_FEAROW] = + { + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 65, + .baseSpeed = 100, + .baseSpAttack = 61, + .baseSpDefense = 61, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 162, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_EKANS] = + { + .baseHP = 35, + .baseAttack = 60, + .baseDefense = 44, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 54, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 62, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_SHED_SKIN, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_ARBOK] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 69, + .baseSpeed = 80, + .baseSpAttack = 65, + .baseSpDefense = 79, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 90, + .expYield = 147, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_SHED_SKIN, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_PIKACHU] = + { + .baseHP = 35, + .baseAttack = 55, + .baseDefense = 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = 40, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 190, + .expYield = 82, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_LIGHT_BALL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_RAICHU] = + { + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 55, + .baseSpeed = 100, + .baseSpAttack = 90, + .baseSpDefense = 80, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 75, + .expYield = 122, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SANDSHREW] = + { + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 85, + .baseSpeed = 40, + .baseSpAttack = 20, + .baseSpDefense = 30, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 93, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SANDSLASH] = + { + .baseHP = 75, + .baseAttack = 100, + .baseDefense = 110, + .baseSpeed = 65, + .baseSpAttack = 45, + .baseSpDefense = 55, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 90, + .expYield = 163, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_NIDORAN_F] = + { + .baseHP = 55, + .baseAttack = 47, + .baseDefense = 52, + .baseSpeed = 41, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 235, + .expYield = 59, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_NIDORINA] = + { + .baseHP = 70, + .baseAttack = 62, + .baseDefense = 67, + .baseSpeed = 56, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 117, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_NIDOQUEEN] = + { + .baseHP = 90, + .baseAttack = 82, + .baseDefense = 87, + .baseSpeed = 76, + .baseSpAttack = 75, + .baseSpDefense = 85, + .type1 = TYPE_POISON, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 194, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_NIDORAN_M] = + { + .baseHP = 46, + .baseAttack = 57, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 235, + .expYield = 60, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_NIDORINO] = + { + .baseHP = 61, + .baseAttack = 72, + .baseDefense = 57, + .baseSpeed = 65, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 118, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_NIDOKING] = + { + .baseHP = 81, + .baseAttack = 92, + .baseDefense = 77, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 75, + .type1 = TYPE_POISON, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 195, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_CLEFAIRY] = + { + .baseHP = 70, + .baseAttack = 45, + .baseDefense = 48, + .baseSpeed = 35, + .baseSpAttack = 60, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 150, + .expYield = 68, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_CLEFABLE] = + { + .baseHP = 95, + .baseAttack = 70, + .baseDefense = 73, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 90, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 25, + .expYield = 129, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_VULPIX] = + { + .baseHP = 38, + .baseAttack = 41, + .baseDefense = 40, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 65, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 190, + .expYield = 63, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_FLASH_FIRE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_NINETALES] = + { + .baseHP = 73, + .baseAttack = 76, + .baseDefense = 75, + .baseSpeed = 100, + .baseSpAttack = 81, + .baseSpDefense = 100, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 75, + .expYield = 178, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_FLASH_FIRE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_JIGGLYPUFF] = + { + .baseHP = 115, + .baseAttack = 45, + .baseDefense = 20, + .baseSpeed = 20, + .baseSpAttack = 45, + .baseSpDefense = 25, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 170, + .expYield = 76, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_WIGGLYTUFF] = + { + .baseHP = 140, + .baseAttack = 70, + .baseDefense = 45, + .baseSpeed = 45, + .baseSpAttack = 75, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 50, + .expYield = 109, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_ZUBAT] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 55, + .baseSpAttack = 30, + .baseSpDefense = 40, + .type1 = TYPE_POISON, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_GOLBAT] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 70, + .baseSpeed = 90, + .baseSpAttack = 65, + .baseSpDefense = 75, + .type1 = TYPE_POISON, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 171, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_ODDISH] = + { + .baseHP = 45, + .baseAttack = 50, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 75, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 78, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GLOOM] = + { + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 85, + .baseSpDefense = 75, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 132, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_VILEPLUME] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 85, + .baseSpeed = 50, + .baseSpAttack = 100, + .baseSpDefense = 90, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 184, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_PARAS] = + { + .baseHP = 35, + .baseAttack = 70, + .baseDefense = 55, + .baseSpeed = 25, + .baseSpAttack = 45, + .baseSpDefense = 55, + .type1 = TYPE_BUG, + .type2 = TYPE_GRASS, + .catchRate = 190, + .expYield = 70, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_TINY_MUSHROOM, + .item2 = ITEM_BIG_MUSHROOM, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_EFFECT_SPORE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_PARASECT] = + { + .baseHP = 60, + .baseAttack = 95, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 60, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_GRASS, + .catchRate = 75, + .expYield = 128, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_TINY_MUSHROOM, + .item2 = ITEM_BIG_MUSHROOM, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_EFFECT_SPORE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_VENONAT] = + { + .baseHP = 60, + .baseAttack = 55, + .baseDefense = 50, + .baseSpeed = 45, + .baseSpAttack = 40, + .baseSpDefense = 55, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 75, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_COMPOUND_EYES, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_VENOMOTH] = + { + .baseHP = 70, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 90, + .baseSpAttack = 90, + .baseSpDefense = 75, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 75, + .expYield = 138, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_DIGLETT] = + { + .baseHP = 10, + .baseAttack = 55, + .baseDefense = 25, + .baseSpeed = 95, + .baseSpAttack = 35, + .baseSpDefense = 45, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 81, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_ARENA_TRAP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_DUGTRIO] = + { + .baseHP = 35, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 120, + .baseSpAttack = 50, + .baseSpDefense = 70, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 50, + .expYield = 153, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_ARENA_TRAP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MEOWTH] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 69, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_PERSIAN] = + { + .baseHP = 65, + .baseAttack = 70, + .baseDefense = 60, + .baseSpeed = 115, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 90, + .expYield = 148, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_LIMBER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_PSYDUCK] = + { + .baseHP = 50, + .baseAttack = 52, + .baseDefense = 48, + .baseSpeed = 55, + .baseSpAttack = 65, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 80, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_DAMP, + .ability2 = ABILITY_CLOUD_NINE, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_GOLDUCK] = + { + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 78, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 75, + .expYield = 174, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_DAMP, + .ability2 = ABILITY_CLOUD_NINE, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_MANKEY] = + { + .baseHP = 40, + .baseAttack = 80, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 35, + .baseSpDefense = 45, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 190, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VITAL_SPIRIT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PRIMEAPE] = + { + .baseHP = 65, + .baseAttack = 105, + .baseDefense = 60, + .baseSpeed = 95, + .baseSpAttack = 60, + .baseSpDefense = 70, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 75, + .expYield = 149, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VITAL_SPIRIT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_GROWLITHE] = + { + .baseHP = 55, + .baseAttack = 70, + .baseDefense = 45, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 190, + .expYield = 91, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_ARCANINE] = + { + .baseHP = 90, + .baseAttack = 110, + .baseDefense = 80, + .baseSpeed = 95, + .baseSpAttack = 100, + .baseSpDefense = 80, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 75, + .expYield = 213, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_POLIWAG] = + { + .baseHP = 40, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 77, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_DAMP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + }, + + [SPECIES_POLIWHIRL] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 120, + .expYield = 131, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_DAMP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + }, + + [SPECIES_POLIWRATH] = + { + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 95, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 90, + .type1 = TYPE_WATER, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 185, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_DAMP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + }, + + [SPECIES_ABRA] = + { + .baseHP = 25, + .baseAttack = 20, + .baseDefense = 15, + .baseSpeed = 90, + .baseSpAttack = 105, + .baseSpDefense = 55, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 200, + .expYield = 73, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_INNER_FOCUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_KADABRA] = + { + .baseHP = 40, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 105, + .baseSpAttack = 120, + .baseSpDefense = 70, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 100, + .expYield = 145, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_INNER_FOCUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_ALAKAZAM] = + { + .baseHP = 55, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 120, + .baseSpAttack = 135, + .baseSpDefense = 85, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 50, + .expYield = 186, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_INNER_FOCUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MACHOP] = + { + .baseHP = 70, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 35, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 180, + .expYield = 88, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_MACHOKE] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 50, + .baseSpDefense = 60, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 90, + .expYield = 146, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_MACHAMP] = + { + .baseHP = 90, + .baseAttack = 130, + .baseDefense = 80, + .baseSpeed = 55, + .baseSpAttack = 65, + .baseSpDefense = 85, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 193, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_BELLSPROUT] = + { + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 35, + .baseSpeed = 40, + .baseSpAttack = 70, + .baseSpDefense = 30, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 84, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_WEEPINBELL] = + { + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 50, + .baseSpeed = 55, + .baseSpAttack = 85, + .baseSpDefense = 45, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 151, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_VICTREEBEL] = + { + .baseHP = 80, + .baseAttack = 105, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 100, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 191, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_TENTACOOL] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 50, + .baseSpDefense = 100, + .type1 = TYPE_WATER, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 105, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_LIQUID_OOZE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_TENTACRUEL] = + { + .baseHP = 80, + .baseAttack = 70, + .baseDefense = 65, + .baseSpeed = 100, + .baseSpAttack = 80, + .baseSpDefense = 120, + .type1 = TYPE_WATER, + .type2 = TYPE_POISON, + .catchRate = 60, + .expYield = 205, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_LIQUID_OOZE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GEODUDE] = + { + .baseHP = 40, + .baseAttack = 80, + .baseDefense = 100, + .baseSpeed = 20, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 86, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_GRAVELER] = + { + .baseHP = 55, + .baseAttack = 95, + .baseDefense = 115, + .baseSpeed = 35, + .baseSpAttack = 45, + .baseSpDefense = 45, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 120, + .expYield = 134, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_GOLEM] = + { + .baseHP = 80, + .baseAttack = 110, + .baseDefense = 130, + .baseSpeed = 45, + .baseSpAttack = 55, + .baseSpDefense = 65, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 177, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PONYTA] = + { + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 55, + .baseSpeed = 90, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 190, + .expYield = 152, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_RAPIDASH] = + { + .baseHP = 65, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 105, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 60, + .expYield = 192, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SLOWPOKE] = + { + .baseHP = 90, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 15, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_WATER, + .type2 = TYPE_PSYCHIC, + .catchRate = 190, + .expYield = 99, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_SLOWBRO] = + { + .baseHP = 95, + .baseAttack = 75, + .baseDefense = 110, + .baseSpeed = 30, + .baseSpAttack = 100, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_PSYCHIC, + .catchRate = 75, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_MAGNEMITE] = + { + .baseHP = 25, + .baseAttack = 35, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 95, + .baseSpDefense = 55, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_STEEL, + .catchRate = 190, + .expYield = 89, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_MAGNET_PULL, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_MAGNETON] = + { + .baseHP = 50, + .baseAttack = 60, + .baseDefense = 95, + .baseSpeed = 70, + .baseSpAttack = 120, + .baseSpDefense = 70, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_STEEL, + .catchRate = 60, + .expYield = 161, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_MAGNET_PULL, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_FARFETCHD] = + { + .baseHP = 52, + .baseAttack = 65, + .baseDefense = 55, + .baseSpeed = 60, + .baseSpAttack = 58, + .baseSpDefense = 62, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 94, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_STICK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_INNER_FOCUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_DODUO] = + { + .baseHP = 35, + .baseAttack = 85, + .baseDefense = 45, + .baseSpeed = 75, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 190, + .expYield = 96, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_DODRIO] = + { + .baseHP = 60, + .baseAttack = 110, + .baseDefense = 70, + .baseSpeed = 100, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 158, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 10, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SEEL] = + { + .baseHP = 65, + .baseAttack = 45, + .baseDefense = 55, + .baseSpeed = 45, + .baseSpAttack = 45, + .baseSpDefense = 70, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 100, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_DEWGONG] = + { + .baseHP = 90, + .baseAttack = 70, + .baseDefense = 80, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 95, + .type1 = TYPE_WATER, + .type2 = TYPE_ICE, + .catchRate = 75, + .expYield = 176, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_GRIMER] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 25, + .baseSpAttack = 40, + .baseSpDefense = 50, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 90, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NUGGET, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_STENCH, + .ability2 = ABILITY_STICKY_HOLD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_MUK] = + { + .baseHP = 105, + .baseAttack = 105, + .baseDefense = 75, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 100, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 75, + .expYield = 157, + .evYield_HP = 1, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NUGGET, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_STENCH, + .ability2 = ABILITY_STICKY_HOLD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_SHELLDER] = + { + .baseHP = 30, + .baseAttack = 65, + .baseDefense = 100, + .baseSpeed = 40, + .baseSpAttack = 45, + .baseSpDefense = 25, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 97, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_PEARL, + .item2 = ITEM_BIG_PEARL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SHELL_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_CLOYSTER] = + { + .baseHP = 50, + .baseAttack = 95, + .baseDefense = 180, + .baseSpeed = 70, + .baseSpAttack = 85, + .baseSpDefense = 45, + .type1 = TYPE_WATER, + .type2 = TYPE_ICE, + .catchRate = 60, + .expYield = 203, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_PEARL, + .item2 = ITEM_BIG_PEARL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SHELL_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_GASTLY] = + { + .baseHP = 30, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 35, + .type1 = TYPE_GHOST, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 95, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_HAUNTER] = + { + .baseHP = 45, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 95, + .baseSpAttack = 115, + .baseSpDefense = 55, + .type1 = TYPE_GHOST, + .type2 = TYPE_POISON, + .catchRate = 90, + .expYield = 126, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_GENGAR] = + { + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 75, + .type1 = TYPE_GHOST, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 190, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_ONIX] = + { + .baseHP = 35, + .baseAttack = 45, + .baseDefense = 160, + .baseSpeed = 70, + .baseSpAttack = 30, + .baseSpDefense = 45, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 108, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_DROWZEE] = + { + .baseHP = 60, + .baseAttack = 48, + .baseDefense = 45, + .baseSpeed = 42, + .baseSpAttack = 43, + .baseSpDefense = 90, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 190, + .expYield = 102, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_HYPNO] = + { + .baseHP = 85, + .baseAttack = 73, + .baseDefense = 70, + .baseSpeed = 67, + .baseSpAttack = 73, + .baseSpDefense = 115, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 75, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_KRABBY] = + { + .baseHP = 30, + .baseAttack = 105, + .baseDefense = 90, + .baseSpeed = 50, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 115, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_KINGLER] = + { + .baseHP = 55, + .baseAttack = 130, + .baseDefense = 115, + .baseSpeed = 75, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 206, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + }, + + [SPECIES_VOLTORB] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 50, + .baseSpeed = 100, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 190, + .expYield = 103, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_STATIC, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_ELECTRODE] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = 140, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 60, + .expYield = 150, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_STATIC, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_EXEGGCUTE] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 80, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 45, + .type1 = TYPE_GRASS, + .type2 = TYPE_PSYCHIC, + .catchRate = 90, + .expYield = 98, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_EXEGGUTOR] = + { + .baseHP = 95, + .baseAttack = 95, + .baseDefense = 85, + .baseSpeed = 55, + .baseSpAttack = 125, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 212, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_CUBONE] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 95, + .baseSpeed = 35, + .baseSpAttack = 40, + .baseSpDefense = 50, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 190, + .expYield = 87, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_THICK_CLUB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_LIGHTNING_ROD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MAROWAK] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 110, + .baseSpeed = 45, + .baseSpAttack = 50, + .baseSpDefense = 80, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 75, + .expYield = 124, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_THICK_CLUB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_LIGHTNING_ROD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_HITMONLEE] = + { + .baseHP = 50, + .baseAttack = 120, + .baseDefense = 53, + .baseSpeed = 87, + .baseSpAttack = 35, + .baseSpDefense = 110, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 139, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_LIMBER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_HITMONCHAN] = + { + .baseHP = 50, + .baseAttack = 105, + .baseDefense = 79, + .baseSpeed = 76, + .baseSpAttack = 35, + .baseSpDefense = 110, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 140, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_LICKITUNG] = + { + .baseHP = 90, + .baseAttack = 55, + .baseDefense = 75, + .baseSpeed = 30, + .baseSpAttack = 60, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 127, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_OWN_TEMPO, + .ability2 = ABILITY_OBLIVIOUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_KOFFING] = + { + .baseHP = 40, + .baseAttack = 65, + .baseDefense = 95, + .baseSpeed = 35, + .baseSpAttack = 60, + .baseSpDefense = 45, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 114, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SMOKE_BALL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_WEEZING] = + { + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 120, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 70, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 60, + .expYield = 173, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SMOKE_BALL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_RHYHORN] = + { + .baseHP = 80, + .baseAttack = 85, + .baseDefense = 95, + .baseSpeed = 25, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_GROUND, + .type2 = TYPE_ROCK, + .catchRate = 120, + .expYield = 135, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_LIGHTNING_ROD, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_RHYDON] = + { + .baseHP = 105, + .baseAttack = 130, + .baseDefense = 120, + .baseSpeed = 40, + .baseSpAttack = 45, + .baseSpDefense = 45, + .type1 = TYPE_GROUND, + .type2 = TYPE_ROCK, + .catchRate = 60, + .expYield = 204, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_LIGHTNING_ROD, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_CHANSEY] = + { + .baseHP = 250, + .baseAttack = 5, + .baseDefense = 5, + .baseSpeed = 50, + .baseSpAttack = 35, + .baseSpDefense = 105, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 30, + .expYield = 255, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_LUCKY_EGG, + .genderRatio = MON_FEMALE, + .eggCycles = 40, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_SERENE_GRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_TANGELA] = + { + .baseHP = 65, + .baseAttack = 55, + .baseDefense = 115, + .baseSpeed = 60, + .baseSpAttack = 100, + .baseSpDefense = 40, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 166, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_KANGASKHAN] = + { + .baseHP = 105, + .baseAttack = 95, + .baseDefense = 80, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 80, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 175, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_EARLY_BIRD, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_HORSEA] = + { + .baseHP = 30, + .baseAttack = 40, + .baseDefense = 70, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 25, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 83, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SEADRA] = + { + .baseHP = 55, + .baseAttack = 65, + .baseDefense = 95, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 45, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 75, + .expYield = 155, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GOLDEEN] = + { + .baseHP = 45, + .baseAttack = 67, + .baseDefense = 60, + .baseSpeed = 63, + .baseSpAttack = 35, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 111, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_WATER_VEIL, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SEAKING] = + { + .baseHP = 80, + .baseAttack = 92, + .baseDefense = 65, + .baseSpeed = 68, + .baseSpAttack = 65, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 170, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_WATER_VEIL, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_STARYU] = + { + .baseHP = 30, + .baseAttack = 45, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 70, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 106, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_STARDUST, + .item2 = ITEM_STAR_PIECE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_ILLUMINATE, + .ability2 = ABILITY_NATURAL_CURE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_STARMIE] = + { + .baseHP = 60, + .baseAttack = 75, + .baseDefense = 85, + .baseSpeed = 115, + .baseSpAttack = 100, + .baseSpDefense = 85, + .type1 = TYPE_WATER, + .type2 = TYPE_PSYCHIC, + .catchRate = 60, + .expYield = 207, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_STARDUST, + .item2 = ITEM_STAR_PIECE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_ILLUMINATE, + .ability2 = ABILITY_NATURAL_CURE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_MR_MIME] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 65, + .baseSpeed = 90, + .baseSpAttack = 100, + .baseSpDefense = 120, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 136, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_SCYTHER] = + { + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 80, + .baseSpeed = 105, + .baseSpAttack = 55, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 187, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_JYNX] = + { + .baseHP = 65, + .baseAttack = 50, + .baseDefense = 35, + .baseSpeed = 95, + .baseSpAttack = 115, + .baseSpDefense = 95, + .type1 = TYPE_ICE, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 137, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_ASPEAR_BERRY, + .item2 = ITEM_ASPEAR_BERRY, + .genderRatio = MON_FEMALE, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_ELECTABUZZ] = + { + .baseHP = 65, + .baseAttack = 83, + .baseDefense = 57, + .baseSpeed = 105, + .baseSpAttack = 95, + .baseSpDefense = 85, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 156, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = TRUE, + }, + + [SPECIES_MAGMAR] = + { + .baseHP = 65, + .baseAttack = 95, + .baseDefense = 57, + .baseSpeed = 93, + .baseSpAttack = 100, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 167, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_FLAME_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_PINSIR] = + { + .baseHP = 65, + .baseAttack = 125, + .baseDefense = 100, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 70, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 45, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_TAUROS] = + { + .baseHP = 75, + .baseAttack = 100, + .baseDefense = 95, + .baseSpeed = 110, + .baseSpAttack = 40, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 211, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MAGIKARP] = + { + .baseHP = 20, + .baseAttack = 10, + .baseDefense = 55, + .baseSpeed = 80, + .baseSpAttack = 15, + .baseSpDefense = 20, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 20, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 5, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_GYARADOS] = + { + .baseHP = 95, + .baseAttack = 125, + .baseDefense = 79, + .baseSpeed = 81, + .baseSpAttack = 60, + .baseSpDefense = 100, + .type1 = TYPE_WATER, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 214, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 5, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_LAPRAS] = + { + .baseHP = 130, + .baseAttack = 85, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 95, + .type1 = TYPE_WATER, + .type2 = TYPE_ICE, + .catchRate = 45, + .expYield = 219, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DITTO] = + { + .baseHP = 48, + .baseAttack = 48, + .baseDefense = 48, + .baseSpeed = 48, + .baseSpAttack = 48, + .baseSpDefense = 48, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 35, + .expYield = 61, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_POWDER, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_DITTO, + .eggGroup2 = EGG_GROUP_DITTO, + .ability1 = ABILITY_LIMBER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_EEVEE] = + { + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 50, + .baseSpeed = 55, + .baseSpAttack = 45, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 92, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_VAPOREON] = + { + .baseHP = 130, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 110, + .baseSpDefense = 95, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 196, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_JOLTEON] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 130, + .baseSpAttack = 110, + .baseSpDefense = 95, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 197, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VOLT_ABSORB, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_FLAREON] = + { + .baseHP = 65, + .baseAttack = 130, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 110, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 198, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_FLASH_FIRE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_PORYGON] = + { + .baseHP = 65, + .baseAttack = 60, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 85, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 130, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_TRACE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_OMANYTE] = + { + .baseHP = 35, + .baseAttack = 40, + .baseDefense = 100, + .baseSpeed = 35, + .baseSpAttack = 90, + .baseSpDefense = 55, + .type1 = TYPE_ROCK, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 120, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_OMASTAR] = + { + .baseHP = 70, + .baseAttack = 60, + .baseDefense = 125, + .baseSpeed = 55, + .baseSpAttack = 115, + .baseSpDefense = 70, + .type1 = TYPE_ROCK, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 199, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_KABUTO] = + { + .baseHP = 30, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 55, + .baseSpAttack = 55, + .baseSpDefense = 45, + .type1 = TYPE_ROCK, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 119, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_BATTLE_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_KABUTOPS] = + { + .baseHP = 60, + .baseAttack = 115, + .baseDefense = 105, + .baseSpeed = 80, + .baseSpAttack = 65, + .baseSpDefense = 70, + .type1 = TYPE_ROCK, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 201, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_BATTLE_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_AERODACTYL] = + { + .baseHP = 80, + .baseAttack = 105, + .baseDefense = 65, + .baseSpeed = 130, + .baseSpAttack = 60, + .baseSpDefense = 75, + .type1 = TYPE_ROCK, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 202, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_PRESSURE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_SNORLAX] = + { + .baseHP = 160, + .baseAttack = 110, + .baseDefense = 65, + .baseSpeed = 30, + .baseSpAttack = 65, + .baseSpDefense = 110, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 25, + .expYield = 154, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LEFTOVERS, + .item2 = ITEM_LEFTOVERS, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_IMMUNITY, + .ability2 = ABILITY_THICK_FAT, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_ARTICUNO] = + { + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 100, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 125, + .type1 = TYPE_ICE, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_ZAPDOS] = + { + .baseHP = 90, + .baseAttack = 90, + .baseDefense = 85, + .baseSpeed = 100, + .baseSpAttack = 125, + .baseSpDefense = 90, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 216, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_MOLTRES] = + { + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 125, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 217, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_DRATINI] = + { + .baseHP = 41, + .baseAttack = 64, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_DRAGON, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 67, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DRAGONAIR] = + { + .baseHP = 61, + .baseAttack = 84, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 70, + .type1 = TYPE_DRAGON, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 144, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DRAGONITE] = + { + .baseHP = 91, + .baseAttack = 134, + .baseDefense = 95, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_DRAGON, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MEWTWO] = + { + .baseHP = 106, + .baseAttack = 110, + .baseDefense = 90, + .baseSpeed = 130, + .baseSpAttack = 154, + .baseSpDefense = 90, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 220, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_MEW] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LUM_BERRY, + .item2 = ITEM_LUM_BERRY, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_CHIKORITA] = + { + .baseHP = 45, + .baseAttack = 49, + .baseDefense = 65, + .baseSpeed = 45, + .baseSpAttack = 49, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_BAYLEEF] = + { + .baseHP = 60, + .baseAttack = 62, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 63, + .baseSpDefense = 80, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MEGANIUM] = + { + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 100, + .baseSpeed = 80, + .baseSpAttack = 83, + .baseSpDefense = 100, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 208, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_CYNDAQUIL] = + { + .baseHP = 39, + .baseAttack = 52, + .baseDefense = 43, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_QUILAVA] = + { + .baseHP = 58, + .baseAttack = 64, + .baseDefense = 58, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 65, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 142, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_TYPHLOSION] = + { + .baseHP = 78, + .baseAttack = 84, + .baseDefense = 78, + .baseSpeed = 100, + .baseSpAttack = 109, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 209, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_TOTODILE] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 64, + .baseSpeed = 43, + .baseSpAttack = 44, + .baseSpDefense = 48, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 66, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_CROCONAW] = + { + .baseHP = 65, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 58, + .baseSpAttack = 59, + .baseSpDefense = 63, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 143, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + }, + + [SPECIES_FERALIGATR] = + { + .baseHP = 85, + .baseAttack = 105, + .baseDefense = 100, + .baseSpeed = 78, + .baseSpAttack = 79, + .baseSpDefense = 83, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 210, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SENTRET] = + { + .baseHP = 35, + .baseAttack = 46, + .baseDefense = 34, + .baseSpeed = 20, + .baseSpAttack = 35, + .baseSpDefense = 45, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 57, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_FURRET] = + { + .baseHP = 85, + .baseAttack = 76, + .baseDefense = 64, + .baseSpeed = 90, + .baseSpAttack = 45, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 90, + .expYield = 116, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_SITRUS_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_HOOTHOOT] = + { + .baseHP = 60, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 50, + .baseSpAttack = 36, + .baseSpDefense = 56, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 58, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_NOCTOWL] = + { + .baseHP = 100, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = 76, + .baseSpDefense = 96, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 162, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_LEDYBA] = + { + .baseHP = 40, + .baseAttack = 20, + .baseDefense = 30, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_LEDIAN] = + { + .baseHP = 55, + .baseAttack = 35, + .baseDefense = 50, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 110, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 134, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SPINARAK] = + { + .baseHP = 40, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_INSOMNIA, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_ARIADOS] = + { + .baseHP = 70, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 90, + .expYield = 134, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_INSOMNIA, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CROBAT] = + { + .baseHP = 85, + .baseAttack = 90, + .baseDefense = 80, + .baseSpeed = 130, + .baseSpAttack = 70, + .baseSpDefense = 80, + .type1 = TYPE_POISON, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 204, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_CHINCHOU] = + { + .baseHP = 75, + .baseAttack = 38, + .baseDefense = 38, + .baseSpeed = 67, + .baseSpAttack = 56, + .baseSpDefense = 56, + .type1 = TYPE_WATER, + .type2 = TYPE_ELECTRIC, + .catchRate = 190, + .expYield = 90, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_YELLOW_SHARD, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_VOLT_ABSORB, + .ability2 = ABILITY_ILLUMINATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_LANTURN] = + { + .baseHP = 125, + .baseAttack = 58, + .baseDefense = 58, + .baseSpeed = 67, + .baseSpAttack = 76, + .baseSpDefense = 76, + .type1 = TYPE_WATER, + .type2 = TYPE_ELECTRIC, + .catchRate = 75, + .expYield = 156, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_YELLOW_SHARD, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_VOLT_ABSORB, + .ability2 = ABILITY_ILLUMINATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_PICHU] = + { + .baseHP = 20, + .baseAttack = 40, + .baseDefense = 15, + .baseSpeed = 60, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 190, + .expYield = 42, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_CLEFFA] = + { + .baseHP = 50, + .baseAttack = 25, + .baseDefense = 28, + .baseSpeed = 15, + .baseSpAttack = 45, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 150, + .expYield = 37, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_IGGLYBUFF] = + { + .baseHP = 90, + .baseAttack = 30, + .baseDefense = 15, + .baseSpeed = 15, + .baseSpAttack = 40, + .baseSpDefense = 20, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 170, + .expYield = 39, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = TRUE, + }, + + [SPECIES_TOGEPI] = + { + .baseHP = 35, + .baseAttack = 20, + .baseDefense = 65, + .baseSpeed = 20, + .baseSpAttack = 40, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 190, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_HUSTLE, + .ability2 = ABILITY_SERENE_GRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_TOGETIC] = + { + .baseHP = 55, + .baseAttack = 40, + .baseDefense = 85, + .baseSpeed = 40, + .baseSpAttack = 80, + .baseSpDefense = 105, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 75, + .expYield = 114, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_HUSTLE, + .ability2 = ABILITY_SERENE_GRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_NATU] = + { + .baseHP = 40, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 45, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_FLYING, + .catchRate = 190, + .expYield = 73, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_XATU] = + { + .baseHP = 65, + .baseAttack = 75, + .baseDefense = 70, + .baseSpeed = 95, + .baseSpAttack = 95, + .baseSpDefense = 70, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_FLYING, + .catchRate = 75, + .expYield = 171, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MAREEP] = + { + .baseHP = 55, + .baseAttack = 40, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 45, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 235, + .expYield = 59, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_FLAAFFY] = + { + .baseHP = 70, + .baseAttack = 55, + .baseDefense = 55, + .baseSpeed = 45, + .baseSpAttack = 80, + .baseSpDefense = 60, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 120, + .expYield = 117, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_AMPHAROS] = + { + .baseHP = 90, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 55, + .baseSpAttack = 115, + .baseSpDefense = 90, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 194, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_BELLOSSOM] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 85, + .baseSpeed = 50, + .baseSpAttack = 90, + .baseSpDefense = 100, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 184, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MARILL] = + { + .baseHP = 70, + .baseAttack = 20, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 20, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 58, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_HUGE_POWER, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_AZUMARILL] = + { + .baseHP = 100, + .baseAttack = 50, + .baseDefense = 80, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 75, + .expYield = 153, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_HUGE_POWER, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SUDOWOODO] = + { + .baseHP = 70, + .baseAttack = 100, + .baseDefense = 115, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 65, + .type1 = TYPE_ROCK, + .type2 = TYPE_ROCK, + .catchRate = 65, + .expYield = 135, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_POLITOED] = + { + .baseHP = 90, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 70, + .baseSpAttack = 90, + .baseSpDefense = 100, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 185, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_DAMP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + }, + + [SPECIES_HOPPIP] = + { + .baseHP = 35, + .baseAttack = 35, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 35, + .baseSpDefense = 55, + .type1 = TYPE_GRASS, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_SKIPLOOM] = + { + .baseHP = 55, + .baseAttack = 45, + .baseDefense = 50, + .baseSpeed = 80, + .baseSpAttack = 45, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_FLYING, + .catchRate = 120, + .expYield = 136, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_JUMPLUFF] = + { + .baseHP = 75, + .baseAttack = 55, + .baseDefense = 70, + .baseSpeed = 110, + .baseSpAttack = 55, + .baseSpDefense = 85, + .type1 = TYPE_GRASS, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 176, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_AIPOM] = + { + .baseHP = 55, + .baseAttack = 70, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 40, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 94, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_PICKUP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_SUNKERN] = + { + .baseHP = 30, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 235, + .expYield = 52, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SUNFLORA] = + { + .baseHP = 75, + .baseAttack = 75, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 105, + .baseSpDefense = 85, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 120, + .expYield = 146, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_YANMA] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 45, + .baseSpeed = 95, + .baseSpAttack = 75, + .baseSpDefense = 45, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 75, + .expYield = 147, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SPEED_BOOST, + .ability2 = ABILITY_COMPOUND_EYES, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_WOOPER] = + { + .baseHP = 55, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 52, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_DAMP, + .ability2 = ABILITY_WATER_ABSORB, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_QUAGSIRE] = + { + .baseHP = 95, + .baseAttack = 85, + .baseDefense = 85, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 90, + .expYield = 137, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_DAMP, + .ability2 = ABILITY_WATER_ABSORB, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_ESPEON] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 95, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 197, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_UMBREON] = + { + .baseHP = 95, + .baseAttack = 65, + .baseDefense = 110, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 130, + .type1 = TYPE_DARK, + .type2 = TYPE_DARK, + .catchRate = 45, + .expYield = 197, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_MURKROW] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 42, + .baseSpeed = 91, + .baseSpAttack = 85, + .baseSpDefense = 42, + .type1 = TYPE_DARK, + .type2 = TYPE_FLYING, + .catchRate = 30, + .expYield = 107, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_SLOWKING] = + { + .baseHP = 95, + .baseAttack = 75, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 100, + .baseSpDefense = 110, + .type1 = TYPE_WATER, + .type2 = TYPE_PSYCHIC, + .catchRate = 70, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_MISDREAVUS] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 85, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 147, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_UNOWN] = + { + .baseHP = 48, + .baseAttack = 72, + .baseDefense = 48, + .baseSpeed = 48, + .baseSpAttack = 72, + .baseSpDefense = 48, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 225, + .expYield = 61, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + }, + + [SPECIES_WOBBUFFET] = + { + .baseHP = 190, + .baseAttack = 33, + .baseDefense = 58, + .baseSpeed = 33, + .baseSpAttack = 33, + .baseSpDefense = 58, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 177, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_SHADOW_TAG, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GIRAFARIG] = + { + .baseHP = 70, + .baseAttack = 80, + .baseDefense = 65, + .baseSpeed = 85, + .baseSpAttack = 90, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_PSYCHIC, + .catchRate = 60, + .expYield = 149, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_PERSIM_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_PINECO] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 90, + .baseSpeed = 15, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 190, + .expYield = 60, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_FORRETRESS] = + { + .baseHP = 75, + .baseAttack = 90, + .baseDefense = 140, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_BUG, + .type2 = TYPE_STEEL, + .catchRate = 75, + .expYield = 118, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_DUNSPARCE] = + { + .baseHP = 100, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 190, + .expYield = 75, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SERENE_GRACE, + .ability2 = ABILITY_RUN_AWAY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_GLIGAR] = + { + .baseHP = 65, + .baseAttack = 75, + .baseDefense = 105, + .baseSpeed = 85, + .baseSpAttack = 35, + .baseSpDefense = 65, + .type1 = TYPE_GROUND, + .type2 = TYPE_FLYING, + .catchRate = 60, + .expYield = 108, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SAND_VEIL, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_STEELIX] = + { + .baseHP = 75, + .baseAttack = 85, + .baseDefense = 200, + .baseSpeed = 30, + .baseSpAttack = 55, + .baseSpDefense = 65, + .type1 = TYPE_STEEL, + .type2 = TYPE_GROUND, + .catchRate = 25, + .expYield = 196, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_SNUBBULL] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 190, + .expYield = 63, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_RUN_AWAY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_GRANBULL] = + { + .baseHP = 90, + .baseAttack = 120, + .baseDefense = 75, + .baseSpeed = 45, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 75, + .expYield = 178, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_INTIMIDATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_QWILFISH] = + { + .baseHP = 65, + .baseAttack = 95, + .baseDefense = 75, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 100, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_SWIFT_SWIM, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_SCIZOR] = + { + .baseHP = 70, + .baseAttack = 130, + .baseDefense = 100, + .baseSpeed = 65, + .baseSpAttack = 55, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_STEEL, + .catchRate = 25, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SHUCKLE] = + { + .baseHP = 20, + .baseAttack = 10, + .baseDefense = 230, + .baseSpeed = 5, + .baseSpAttack = 10, + .baseSpDefense = 230, + .type1 = TYPE_BUG, + .type2 = TYPE_ROCK, + .catchRate = 190, + .expYield = 80, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_HERACROSS] = + { + .baseHP = 80, + .baseAttack = 125, + .baseDefense = 75, + .baseSpeed = 85, + .baseSpAttack = 40, + .baseSpDefense = 95, + .type1 = TYPE_BUG, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SNEASEL] = + { + .baseHP = 55, + .baseAttack = 95, + .baseDefense = 55, + .baseSpeed = 115, + .baseSpAttack = 35, + .baseSpDefense = 75, + .type1 = TYPE_DARK, + .type2 = TYPE_ICE, + .catchRate = 60, + .expYield = 132, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + }, + + [SPECIES_TEDDIURSA] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 120, + .expYield = 124, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + }, + + [SPECIES_URSARING] = + { + .baseHP = 90, + .baseAttack = 130, + .baseDefense = 75, + .baseSpeed = 55, + .baseSpAttack = 75, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 60, + .expYield = 189, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SLUGMA] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 40, + .baseSpeed = 20, + .baseSpAttack = 70, + .baseSpDefense = 40, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 190, + .expYield = 78, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_MAGMA_ARMOR, + .ability2 = ABILITY_FLAME_BODY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_MAGCARGO] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 120, + .baseSpeed = 30, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_FIRE, + .type2 = TYPE_ROCK, + .catchRate = 75, + .expYield = 154, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_MAGMA_ARMOR, + .ability2 = ABILITY_FLAME_BODY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SWINUB] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_ICE, + .type2 = TYPE_GROUND, + .catchRate = 225, + .expYield = 78, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PILOSWINE] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 80, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_ICE, + .type2 = TYPE_GROUND, + .catchRate = 75, + .expYield = 160, + .evYield_HP = 1, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_CORSOLA] = + { + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 85, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 85, + .type1 = TYPE_WATER, + .type2 = TYPE_ROCK, + .catchRate = 60, + .expYield = 113, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_RED_SHARD, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HUSTLE, + .ability2 = ABILITY_NATURAL_CURE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_REMORAID] = + { + .baseHP = 35, + .baseAttack = 65, + .baseDefense = 35, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 35, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 78, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_HUSTLE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_OCTILLERY] = + { + .baseHP = 75, + .baseAttack = 105, + .baseDefense = 75, + .baseSpeed = 45, + .baseSpAttack = 105, + .baseSpDefense = 75, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 75, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SUCTION_CUPS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_DELIBIRD] = + { + .baseHP = 45, + .baseAttack = 55, + .baseDefense = 45, + .baseSpeed = 75, + .baseSpAttack = 65, + .baseSpDefense = 45, + .type1 = TYPE_ICE, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 183, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VITAL_SPIRIT, + .ability2 = ABILITY_HUSTLE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_MANTINE] = + { + .baseHP = 65, + .baseAttack = 40, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 80, + .baseSpDefense = 140, + .type1 = TYPE_WATER, + .type2 = TYPE_FLYING, + .catchRate = 25, + .expYield = 168, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_WATER_ABSORB, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_SKARMORY] = + { + .baseHP = 65, + .baseAttack = 80, + .baseDefense = 140, + .baseSpeed = 70, + .baseSpAttack = 40, + .baseSpDefense = 70, + .type1 = TYPE_STEEL, + .type2 = TYPE_FLYING, + .catchRate = 25, + .expYield = 168, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_HOUNDOUR] = + { + .baseHP = 45, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 65, + .baseSpAttack = 80, + .baseSpDefense = 50, + .type1 = TYPE_DARK, + .type2 = TYPE_FIRE, + .catchRate = 120, + .expYield = 114, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_EARLY_BIRD, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_HOUNDOOM] = + { + .baseHP = 75, + .baseAttack = 90, + .baseDefense = 50, + .baseSpeed = 95, + .baseSpAttack = 110, + .baseSpDefense = 80, + .type1 = TYPE_DARK, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 204, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_EARLY_BIRD, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_KINGDRA] = + { + .baseHP = 75, + .baseAttack = 95, + .baseDefense = 95, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 95, + .type1 = TYPE_WATER, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 207, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_PHANPY] = + { + .baseHP = 90, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 40, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 120, + .expYield = 124, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 10, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DONPHAN] = + { + .baseHP = 90, + .baseAttack = 120, + .baseDefense = 120, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 60, + .expYield = 189, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_PORYGON2] = + { + .baseHP = 85, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 60, + .baseSpAttack = 105, + .baseSpDefense = 95, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 180, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_TRACE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_STANTLER] = + { + .baseHP = 73, + .baseAttack = 95, + .baseDefense = 62, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SMEARGLE] = + { + .baseHP = 55, + .baseAttack = 20, + .baseDefense = 35, + .baseSpeed = 75, + .baseSpAttack = 20, + .baseSpDefense = 45, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 106, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_OWN_TEMPO, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_TYROGUE] = + { + .baseHP = 35, + .baseAttack = 35, + .baseDefense = 35, + .baseSpeed = 35, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 75, + .expYield = 91, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_HITMONTOP] = + { + .baseHP = 50, + .baseAttack = 95, + .baseDefense = 95, + .baseSpeed = 70, + .baseSpAttack = 35, + .baseSpDefense = 110, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 138, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SMOOCHUM] = + { + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 15, + .baseSpeed = 65, + .baseSpAttack = 85, + .baseSpDefense = 65, + .type1 = TYPE_ICE, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 87, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_ASPEAR_BERRY, + .item2 = ITEM_ASPEAR_BERRY, + .genderRatio = MON_FEMALE, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_ELEKID] = + { + .baseHP = 45, + .baseAttack = 63, + .baseDefense = 37, + .baseSpeed = 95, + .baseSpAttack = 65, + .baseSpDefense = 55, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 106, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = TRUE, + }, + + [SPECIES_MAGBY] = + { + .baseHP = 45, + .baseAttack = 75, + .baseDefense = 37, + .baseSpeed = 83, + .baseSpAttack = 70, + .baseSpDefense = 55, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 117, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_FLAME_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_MILTANK] = + { + .baseHP = 95, + .baseAttack = 80, + .baseDefense = 105, + .baseSpeed = 100, + .baseSpAttack = 40, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_MOOMOO_MILK, + .item2 = ITEM_MOOMOO_MILK, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_BLISSEY] = + { + .baseHP = 255, + .baseAttack = 10, + .baseDefense = 10, + .baseSpeed = 55, + .baseSpAttack = 75, + .baseSpDefense = 135, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 30, + .expYield = 255, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_LUCKY_EGG, + .genderRatio = MON_FEMALE, + .eggCycles = 40, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_SERENE_GRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_RAIKOU] = + { + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 75, + .baseSpeed = 115, + .baseSpAttack = 115, + .baseSpDefense = 100, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 3, + .expYield = 216, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_ENTEI] = + { + .baseHP = 115, + .baseAttack = 115, + .baseDefense = 85, + .baseSpeed = 100, + .baseSpAttack = 90, + .baseSpDefense = 75, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 3, + .expYield = 217, + .evYield_HP = 1, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SUICUNE] = + { + .baseHP = 100, + .baseAttack = 75, + .baseDefense = 115, + .baseSpeed = 85, + .baseSpAttack = 90, + .baseSpDefense = 115, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_LARVITAR] = + { + .baseHP = 50, + .baseAttack = 64, + .baseDefense = 50, + .baseSpeed = 41, + .baseSpAttack = 45, + .baseSpDefense = 50, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 67, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_PUPITAR] = + { + .baseHP = 70, + .baseAttack = 84, + .baseDefense = 70, + .baseSpeed = 51, + .baseSpAttack = 65, + .baseSpDefense = 70, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 144, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_TYRANITAR] = + { + .baseHP = 100, + .baseAttack = 134, + .baseDefense = 110, + .baseSpeed = 61, + .baseSpAttack = 95, + .baseSpDefense = 100, + .type1 = TYPE_ROCK, + .type2 = TYPE_DARK, + .catchRate = 45, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_SAND_STREAM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LUGIA] = + { + .baseHP = 106, + .baseAttack = 90, + .baseDefense = 130, + .baseSpeed = 110, + .baseSpAttack = 90, + .baseSpDefense = 154, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 220, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_HO_OH] = + { + .baseHP = 106, + .baseAttack = 130, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 110, + .baseSpDefense = 154, + .type1 = TYPE_FIRE, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 220, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_SACRED_ASH, + .item2 = ITEM_SACRED_ASH, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CELEBI] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LUM_BERRY, + .item2 = ITEM_LUM_BERRY, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_B] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_C] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_D] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_E] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_F] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_G] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_H] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_I] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_J] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_K] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_L] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_M] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_N] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_O] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_P] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_Q] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_R] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_S] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_T] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_U] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_V] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_W] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_X] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_Y] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_Z] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_TREECKO] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 65, + .baseSpDefense = 55, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_GROVYLE] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 45, + .baseSpeed = 95, + .baseSpAttack = 85, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SCEPTILE] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 65, + .baseSpeed = 120, + .baseSpAttack = 105, + .baseSpDefense = 85, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 208, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_TORCHIC] = + { + .baseHP = 45, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 45, + .baseSpAttack = 70, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_COMBUSKEN] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 60, + .baseSpeed = 55, + .baseSpAttack = 85, + .baseSpDefense = 60, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 142, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_BLAZIKEN] = + { + .baseHP = 80, + .baseAttack = 120, + .baseDefense = 70, + .baseSpeed = 80, + .baseSpAttack = 110, + .baseSpDefense = 70, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 209, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_MUDKIP] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_MARSHTOMP] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 70, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 70, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 143, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SWAMPERT] = + { + .baseHP = 100, + .baseAttack = 110, + .baseDefense = 90, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 90, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 210, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_POOCHYENA] = + { + .baseHP = 35, + .baseAttack = 55, + .baseDefense = 35, + .baseSpeed = 35, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_DARK, + .type2 = TYPE_DARK, + .catchRate = 255, + .expYield = 55, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_PECHA_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_MIGHTYENA] = + { + .baseHP = 70, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_DARK, + .type2 = TYPE_DARK, + .catchRate = 127, + .expYield = 128, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_PECHA_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_ZIGZAGOON] = + { + .baseHP = 38, + .baseAttack = 30, + .baseDefense = 41, + .baseSpeed = 60, + .baseSpAttack = 30, + .baseSpDefense = 41, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 60, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_LINOONE] = + { + .baseHP = 78, + .baseAttack = 70, + .baseDefense = 61, + .baseSpeed = 100, + .baseSpAttack = 50, + .baseSpDefense = 61, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 90, + .expYield = 128, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_SITRUS_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_WURMPLE] = + { + .baseHP = 45, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 20, + .baseSpAttack = 20, + .baseSpDefense = 30, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SILCOON] = + { + .baseHP = 50, + .baseAttack = 35, + .baseDefense = 55, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 120, + .expYield = 71, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_BEAUTIFLY] = + { + .baseHP = 60, + .baseAttack = 70, + .baseDefense = 50, + .baseSpeed = 65, + .baseSpAttack = 90, + .baseSpDefense = 50, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 161, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_CASCOON] = + { + .baseHP = 50, + .baseAttack = 35, + .baseDefense = 55, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 120, + .expYield = 72, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_DUSTOX] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 90, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 160, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LOTAD] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_GRASS, + .catchRate = 255, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_RAIN_DISH, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LOMBRE] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 70, + .type1 = TYPE_WATER, + .type2 = TYPE_GRASS, + .catchRate = 120, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_RAIN_DISH, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LUDICOLO] = + { + .baseHP = 80, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 90, + .baseSpDefense = 100, + .type1 = TYPE_WATER, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 181, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_RAIN_DISH, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SEEDOT] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 255, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_NUZLEAF] = + { + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 40, + .baseSpeed = 60, + .baseSpAttack = 60, + .baseSpDefense = 40, + .type1 = TYPE_GRASS, + .type2 = TYPE_DARK, + .catchRate = 120, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SHIFTRY] = + { + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 60, + .baseSpeed = 80, + .baseSpAttack = 90, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_DARK, + .catchRate = 45, + .expYield = 181, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_NINCADA] = + { + .baseHP = 31, + .baseAttack = 45, + .baseDefense = 90, + .baseSpeed = 40, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_BUG, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_COMPOUND_EYES, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_NINJASK] = + { + .baseHP = 61, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 160, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 120, + .expYield = 155, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SPEED_BOOST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SHEDINJA] = + { + .baseHP = 1, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 40, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_BUG, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 95, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_WONDER_GUARD, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_TAILLOW] = + { + .baseHP = 40, + .baseAttack = 55, + .baseDefense = 30, + .baseSpeed = 85, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 200, + .expYield = 59, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SWELLOW] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 60, + .baseSpeed = 125, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 162, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SHROOMISH] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 60, + .baseSpeed = 35, + .baseSpAttack = 40, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 255, + .expYield = 65, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_EFFECT_SPORE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_BRELOOM] = + { + .baseHP = 60, + .baseAttack = 130, + .baseDefense = 80, + .baseSpeed = 70, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_FIGHTING, + .catchRate = 90, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_EFFECT_SPORE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SPINDA] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 60, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 85, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_OWN_TEMPO, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + }, + + [SPECIES_WINGULL] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 30, + .type1 = TYPE_WATER, + .type2 = TYPE_FLYING, + .catchRate = 190, + .expYield = 64, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_PELIPPER] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 100, + .baseSpeed = 65, + .baseSpAttack = 85, + .baseSpDefense = 70, + .type1 = TYPE_WATER, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SURSKIT] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 32, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 52, + .type1 = TYPE_BUG, + .type2 = TYPE_WATER, + .catchRate = 200, + .expYield = 63, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_MASQUERAIN] = + { + .baseHP = 70, + .baseAttack = 60, + .baseDefense = 62, + .baseSpeed = 60, + .baseSpAttack = 80, + .baseSpDefense = 82, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 75, + .expYield = 128, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WAILMER] = + { + .baseHP = 130, + .baseAttack = 70, + .baseDefense = 35, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 35, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 125, + .expYield = 137, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_WATER_VEIL, + .ability2 = ABILITY_OBLIVIOUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WAILORD] = + { + .baseHP = 170, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 60, + .baseSpAttack = 90, + .baseSpDefense = 45, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 206, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_WATER_VEIL, + .ability2 = ABILITY_OBLIVIOUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SKITTY] = + { + .baseHP = 50, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_DELCATTY] = + { + .baseHP = 70, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 60, + .expYield = 138, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_KECLEON] = + { + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 120, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 200, + .expYield = 132, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_PERSIM_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_COLOR_CHANGE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_BALTOY] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 55, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 70, + .type1 = TYPE_GROUND, + .type2 = TYPE_PSYCHIC, + .catchRate = 255, + .expYield = 58, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_CLAYDOL] = + { + .baseHP = 60, + .baseAttack = 70, + .baseDefense = 105, + .baseSpeed = 75, + .baseSpAttack = 70, + .baseSpDefense = 120, + .type1 = TYPE_GROUND, + .type2 = TYPE_PSYCHIC, + .catchRate = 90, + .expYield = 189, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_NOSEPASS] = + { + .baseHP = 30, + .baseAttack = 45, + .baseDefense = 135, + .baseSpeed = 30, + .baseSpAttack = 45, + .baseSpDefense = 90, + .type1 = TYPE_ROCK, + .type2 = TYPE_ROCK, + .catchRate = 255, + .expYield = 108, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_MAGNET_PULL, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_TORKOAL] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 140, + .baseSpeed = 20, + .baseSpAttack = 85, + .baseSpDefense = 70, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 90, + .expYield = 161, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_WHITE_SMOKE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SABLEYE] = + { + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_DARK, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 98, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_BARBOACH] = + { + .baseHP = 50, + .baseAttack = 48, + .baseDefense = 43, + .baseSpeed = 60, + .baseSpAttack = 46, + .baseSpDefense = 41, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 190, + .expYield = 92, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_WHISCASH] = + { + .baseHP = 110, + .baseAttack = 78, + .baseDefense = 73, + .baseSpeed = 60, + .baseSpAttack = 76, + .baseSpDefense = 71, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 75, + .expYield = 158, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_LUVDISC] = + { + .baseHP = 43, + .baseAttack = 30, + .baseDefense = 55, + .baseSpeed = 97, + .baseSpAttack = 40, + .baseSpDefense = 65, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 110, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_HEART_SCALE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_CORPHISH] = + { + .baseHP = 43, + .baseAttack = 80, + .baseDefense = 65, + .baseSpeed = 35, + .baseSpAttack = 50, + .baseSpDefense = 35, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 205, + .expYield = 111, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CRAWDAUNT] = + { + .baseHP = 63, + .baseAttack = 120, + .baseDefense = 85, + .baseSpeed = 55, + .baseSpAttack = 90, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_DARK, + .catchRate = 155, + .expYield = 161, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_FEEBAS] = + { + .baseHP = 20, + .baseAttack = 15, + .baseDefense = 20, + .baseSpeed = 80, + .baseSpAttack = 10, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 61, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MILOTIC] = + { + .baseHP = 95, + .baseAttack = 60, + .baseDefense = 79, + .baseSpeed = 81, + .baseSpAttack = 100, + .baseSpDefense = 125, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 213, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_MARVEL_SCALE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_CARVANHA] = + { + .baseHP = 45, + .baseAttack = 90, + .baseDefense = 20, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 20, + .type1 = TYPE_WATER, + .type2 = TYPE_DARK, + .catchRate = 225, + .expYield = 88, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_ROUGH_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SHARPEDO] = + { + .baseHP = 70, + .baseAttack = 120, + .baseDefense = 40, + .baseSpeed = 95, + .baseSpAttack = 95, + .baseSpDefense = 40, + .type1 = TYPE_WATER, + .type2 = TYPE_DARK, + .catchRate = 60, + .expYield = 175, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_ROUGH_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_TRAPINCH] = + { + .baseHP = 45, + .baseAttack = 100, + .baseDefense = 45, + .baseSpeed = 10, + .baseSpAttack = 45, + .baseSpDefense = 45, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 73, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SOFT_SAND, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_ARENA_TRAP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_VIBRAVA] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_GROUND, + .type2 = TYPE_DRAGON, + .catchRate = 120, + .expYield = 126, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_LEVITATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_FLYGON] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 80, + .baseSpeed = 100, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_GROUND, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 197, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_LEVITATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MAKUHITA] = + { + .baseHP = 72, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 25, + .baseSpAttack = 20, + .baseSpDefense = 30, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 180, + .expYield = 87, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_HARIYAMA] = + { + .baseHP = 144, + .baseAttack = 120, + .baseDefense = 60, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 60, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 200, + .expYield = 184, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_ELECTRIKE] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 40, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 120, + .expYield = 104, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_LIGHTNING_ROD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MANECTRIC] = + { + .baseHP = 70, + .baseAttack = 75, + .baseDefense = 60, + .baseSpeed = 105, + .baseSpAttack = 105, + .baseSpDefense = 60, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 168, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_LIGHTNING_ROD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_NUMEL] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 45, + .type1 = TYPE_FIRE, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 88, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_CAMERUPT] = + { + .baseHP = 70, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 105, + .baseSpDefense = 75, + .type1 = TYPE_FIRE, + .type2 = TYPE_GROUND, + .catchRate = 150, + .expYield = 175, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_MAGMA_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SPHEAL] = + { + .baseHP = 70, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 25, + .baseSpAttack = 55, + .baseSpDefense = 50, + .type1 = TYPE_ICE, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 75, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SEALEO] = + { + .baseHP = 90, + .baseAttack = 60, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 75, + .baseSpDefense = 70, + .type1 = TYPE_ICE, + .type2 = TYPE_WATER, + .catchRate = 120, + .expYield = 128, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WALREIN] = + { + .baseHP = 110, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 90, + .type1 = TYPE_ICE, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 192, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_CACNEA] = + { + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 85, + .baseSpDefense = 40, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 190, + .expYield = 97, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_CACTURNE] = + { + .baseHP = 70, + .baseAttack = 115, + .baseDefense = 60, + .baseSpeed = 55, + .baseSpAttack = 115, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_DARK, + .catchRate = 60, + .expYield = 177, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SNORUNT] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_ICE, + .type2 = TYPE_ICE, + .catchRate = 190, + .expYield = 74, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_GLALIE] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_ICE, + .type2 = TYPE_ICE, + .catchRate = 75, + .expYield = 187, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NEVER_MELT_ICE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_LUNATONE] = + { + .baseHP = 70, + .baseAttack = 55, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 85, + .type1 = TYPE_ROCK, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 150, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_MOON_STONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SOLROCK] = + { + .baseHP = 70, + .baseAttack = 95, + .baseDefense = 85, + .baseSpeed = 70, + .baseSpAttack = 55, + .baseSpDefense = 65, + .type1 = TYPE_ROCK, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 150, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SUN_STONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_AZURILL] = + { + .baseHP = 50, + .baseAttack = 20, + .baseDefense = 40, + .baseSpeed = 20, + .baseSpAttack = 20, + .baseSpDefense = 40, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 150, + .expYield = 33, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_HUGE_POWER, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SPOINK] = + { + .baseHP = 60, + .baseAttack = 25, + .baseDefense = 35, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 80, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 255, + .expYield = 89, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_GRUMPIG] = + { + .baseHP = 80, + .baseAttack = 45, + .baseDefense = 65, + .baseSpeed = 80, + .baseSpAttack = 90, + .baseSpDefense = 110, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 60, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_PLUSLE] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 95, + .baseSpAttack = 85, + .baseSpDefense = 75, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 200, + .expYield = 120, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_PLUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_MINUN] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 95, + .baseSpAttack = 75, + .baseSpDefense = 85, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 200, + .expYield = 120, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_MINUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_MAWILE] = + { + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 85, + .baseSpeed = 50, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_STEEL, + .type2 = TYPE_STEEL, + .catchRate = 45, + .expYield = 98, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_INTIMIDATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_MEDITITE] = + { + .baseHP = 30, + .baseAttack = 40, + .baseDefense = 55, + .baseSpeed = 60, + .baseSpAttack = 40, + .baseSpDefense = 55, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_PSYCHIC, + .catchRate = 180, + .expYield = 91, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_PURE_POWER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_MEDICHAM] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 75, + .baseSpeed = 80, + .baseSpAttack = 60, + .baseSpDefense = 75, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_PSYCHIC, + .catchRate = 90, + .expYield = 153, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_PURE_POWER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SWABLU] = + { + .baseHP = 45, + .baseAttack = 40, + .baseDefense = 60, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_ALTARIA] = + { + .baseHP = 75, + .baseAttack = 70, + .baseDefense = 90, + .baseSpeed = 80, + .baseSpAttack = 70, + .baseSpDefense = 105, + .type1 = TYPE_DRAGON, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 188, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WYNAUT] = + { + .baseHP = 95, + .baseAttack = 23, + .baseDefense = 48, + .baseSpeed = 23, + .baseSpAttack = 23, + .baseSpDefense = 48, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 125, + .expYield = 44, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_SHADOW_TAG, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DUSKULL] = + { + .baseHP = 20, + .baseAttack = 40, + .baseDefense = 90, + .baseSpeed = 25, + .baseSpAttack = 30, + .baseSpDefense = 90, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 190, + .expYield = 97, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_DUSCLOPS] = + { + .baseHP = 40, + .baseAttack = 70, + .baseDefense = 130, + .baseSpeed = 25, + .baseSpAttack = 60, + .baseSpDefense = 130, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 90, + .expYield = 179, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_ROSELIA] = + { + .baseHP = 50, + .baseAttack = 60, + .baseDefense = 45, + .baseSpeed = 65, + .baseSpAttack = 100, + .baseSpDefense = 80, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 150, + .expYield = 152, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_POISON_POINT, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + }, + + [SPECIES_SLAKOTH] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 30, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 83, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_TRUANT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_VIGOROTH] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 90, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 120, + .expYield = 126, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VITAL_SPIRIT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_SLAKING] = + { + .baseHP = 150, + .baseAttack = 160, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 95, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 210, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_TRUANT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_GULPIN] = + { + .baseHP = 70, + .baseAttack = 43, + .baseDefense = 53, + .baseSpeed = 40, + .baseSpAttack = 43, + .baseSpDefense = 53, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 225, + .expYield = 75, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_BIG_PEARL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LIQUID_OOZE, + .ability2 = ABILITY_STICKY_HOLD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SWALOT] = + { + .baseHP = 100, + .baseAttack = 73, + .baseDefense = 83, + .baseSpeed = 55, + .baseSpAttack = 73, + .baseSpDefense = 83, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 75, + .expYield = 168, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_BIG_PEARL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LIQUID_OOZE, + .ability2 = ABILITY_STICKY_HOLD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_TROPIUS] = + { + .baseHP = 99, + .baseAttack = 68, + .baseDefense = 83, + .baseSpeed = 51, + .baseSpAttack = 72, + .baseSpDefense = 87, + .type1 = TYPE_GRASS, + .type2 = TYPE_FLYING, + .catchRate = 200, + .expYield = 169, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_WHISMUR] = + { + .baseHP = 64, + .baseAttack = 51, + .baseDefense = 23, + .baseSpeed = 28, + .baseSpAttack = 51, + .baseSpDefense = 23, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 190, + .expYield = 68, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_LOUDRED] = + { + .baseHP = 84, + .baseAttack = 71, + .baseDefense = 43, + .baseSpeed = 48, + .baseSpAttack = 71, + .baseSpDefense = 43, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 120, + .expYield = 126, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_EXPLOUD] = + { + .baseHP = 104, + .baseAttack = 91, + .baseDefense = 63, + .baseSpeed = 68, + .baseSpAttack = 91, + .baseSpDefense = 63, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 184, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_CLAMPERL] = + { + .baseHP = 35, + .baseAttack = 64, + .baseDefense = 85, + .baseSpeed = 32, + .baseSpAttack = 74, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 142, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_BLUE_SHARD, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_SHELL_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_HUNTAIL] = + { + .baseHP = 55, + .baseAttack = 104, + .baseDefense = 105, + .baseSpeed = 52, + .baseSpAttack = 94, + .baseSpDefense = 75, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 178, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GOREBYSS] = + { + .baseHP = 55, + .baseAttack = 84, + .baseDefense = 105, + .baseSpeed = 52, + .baseSpAttack = 114, + .baseSpDefense = 75, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 178, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_ABSOL] = + { + .baseHP = 65, + .baseAttack = 130, + .baseDefense = 60, + .baseSpeed = 75, + .baseSpAttack = 75, + .baseSpDefense = 60, + .type1 = TYPE_DARK, + .type2 = TYPE_DARK, + .catchRate = 30, + .expYield = 174, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + }, + + [SPECIES_SHUPPET] = + { + .baseHP = 44, + .baseAttack = 75, + .baseDefense = 35, + .baseSpeed = 45, + .baseSpAttack = 63, + .baseSpDefense = 33, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 225, + .expYield = 97, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_BANETTE] = + { + .baseHP = 64, + .baseAttack = 115, + .baseDefense = 65, + .baseSpeed = 65, + .baseSpAttack = 83, + .baseSpDefense = 63, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 179, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_SEVIPER] = + { + .baseHP = 73, + .baseAttack = 100, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 100, + .baseSpDefense = 60, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 90, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + }, + + [SPECIES_ZANGOOSE] = + { + .baseHP = 73, + .baseAttack = 115, + .baseDefense = 60, + .baseSpeed = 90, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 90, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_IMMUNITY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + }, + + [SPECIES_RELICANTH] = + { + .baseHP = 100, + .baseAttack = 90, + .baseDefense = 130, + .baseSpeed = 55, + .baseSpAttack = 45, + .baseSpDefense = 65, + .type1 = TYPE_WATER, + .type2 = TYPE_ROCK, + .catchRate = 25, + .expYield = 198, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_GREEN_SHARD, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_ARON] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 100, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_STEEL, + .type2 = TYPE_ROCK, + .catchRate = 180, + .expYield = 96, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_LAIRON] = + { + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 140, + .baseSpeed = 40, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_STEEL, + .type2 = TYPE_ROCK, + .catchRate = 90, + .expYield = 152, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_AGGRON] = + { + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 180, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_STEEL, + .type2 = TYPE_ROCK, + .catchRate = 45, + .expYield = 205, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_CASTFORM] = + { + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 145, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_MYSTIC_WATER, + .item2 = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_FORECAST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_VOLBEAT] = + { + .baseHP = 65, + .baseAttack = 73, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 47, + .baseSpDefense = 75, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 150, + .expYield = 146, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_ILLUMINATE, + .ability2 = ABILITY_SWARM, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_ILLUMISE] = + { + .baseHP = 65, + .baseAttack = 47, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 73, + .baseSpDefense = 75, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 150, + .expYield = 146, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_FEMALE, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_LILEEP] = + { + .baseHP = 66, + .baseAttack = 41, + .baseDefense = 77, + .baseSpeed = 23, + .baseSpAttack = 61, + .baseSpDefense = 87, + .type1 = TYPE_ROCK, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 121, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SUCTION_CUPS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_CRADILY] = + { + .baseHP = 86, + .baseAttack = 81, + .baseDefense = 97, + .baseSpeed = 43, + .baseSpAttack = 81, + .baseSpDefense = 107, + .type1 = TYPE_ROCK, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 201, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SUCTION_CUPS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_ANORITH] = + { + .baseHP = 45, + .baseAttack = 95, + .baseDefense = 50, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 50, + .type1 = TYPE_ROCK, + .type2 = TYPE_BUG, + .catchRate = 45, + .expYield = 119, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_BATTLE_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_ARMALDO] = + { + .baseHP = 75, + .baseAttack = 125, + .baseDefense = 100, + .baseSpeed = 45, + .baseSpAttack = 70, + .baseSpDefense = 80, + .type1 = TYPE_ROCK, + .type2 = TYPE_BUG, + .catchRate = 45, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_BATTLE_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_RALTS] = + { + .baseHP = 28, + .baseAttack = 25, + .baseDefense = 25, + .baseSpeed = 40, + .baseSpAttack = 45, + .baseSpDefense = 35, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 235, + .expYield = 70, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_TRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_KIRLIA] = + { + .baseHP = 38, + .baseAttack = 35, + .baseDefense = 35, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 55, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 120, + .expYield = 140, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_TRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_GARDEVOIR] = + { + .baseHP = 68, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 80, + .baseSpAttack = 125, + .baseSpDefense = 115, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 208, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_TRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_BAGON] = + { + .baseHP = 45, + .baseAttack = 75, + .baseDefense = 60, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 30, + .type1 = TYPE_DRAGON, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 89, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_DRAGON, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SHELGON] = + { + .baseHP = 65, + .baseAttack = 95, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 50, + .type1 = TYPE_DRAGON, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 144, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_DRAGON, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_SALAMENCE] = + { + .baseHP = 95, + .baseAttack = 135, + .baseDefense = 80, + .baseSpeed = 100, + .baseSpAttack = 110, + .baseSpDefense = 80, + .type1 = TYPE_DRAGON, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_DRAGON, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_BELDUM] = + { + .baseHP = 40, + .baseAttack = 55, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 35, + .baseSpDefense = 60, + .type1 = TYPE_STEEL, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 103, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_METANG] = + { + .baseHP = 60, + .baseAttack = 75, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 55, + .baseSpDefense = 80, + .type1 = TYPE_STEEL, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 153, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_METAGROSS] = + { + .baseHP = 80, + .baseAttack = 135, + .baseDefense = 130, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 90, + .type1 = TYPE_STEEL, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 210, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_REGIROCK] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 200, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 100, + .type1 = TYPE_ROCK, + .type2 = TYPE_ROCK, + .catchRate = 3, + .expYield = 217, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_REGICE] = + { + .baseHP = 80, + .baseAttack = 50, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 100, + .baseSpDefense = 200, + .type1 = TYPE_ICE, + .type2 = TYPE_ICE, + .catchRate = 3, + .expYield = 216, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_REGISTEEL] = + { + .baseHP = 80, + .baseAttack = 75, + .baseDefense = 150, + .baseSpeed = 50, + .baseSpAttack = 75, + .baseSpDefense = 150, + .type1 = TYPE_STEEL, + .type2 = TYPE_STEEL, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_KYOGRE] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 150, + .baseSpDefense = 140, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 5, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_DRIZZLE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GROUDON] = + { + .baseHP = 100, + .baseAttack = 150, + .baseDefense = 140, + .baseSpeed = 90, + .baseSpAttack = 100, + .baseSpDefense = 90, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 5, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_DROUGHT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_RAYQUAZA] = + { + .baseHP = 105, + .baseAttack = 150, + .baseDefense = 90, + .baseSpeed = 95, + .baseSpAttack = 150, + .baseSpDefense = 90, + .type1 = TYPE_DRAGON, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 220, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_AIR_LOCK, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LATIAS] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 110, + .baseSpAttack = 110, + .baseSpDefense = 130, + .type1 = TYPE_DRAGON, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 211, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_FEMALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_LATIOS] = + { + .baseHP = 80, + .baseAttack = 90, + .baseDefense = 80, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 110, + .type1 = TYPE_DRAGON, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 211, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_JIRACHI] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_STEEL, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_STAR_PIECE, + .item2 = ITEM_STAR_PIECE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_SERENE_GRACE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_DEOXYS] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + }, + + [SPECIES_CHIMECHO] = + { + .baseHP = 65, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 80, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 147, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + } +}; + +#endif //GUARD_BASE_STATS_H diff --git a/include/data/pokemon/cry_ids.h b/include/data/pokemon/cry_ids.h new file mode 100644 index 000000000..1c1c32dde --- /dev/null +++ b/include/data/pokemon/cry_ids.h @@ -0,0 +1,143 @@ +#ifndef POKEEMERALD_CRY_IDS_H +#define POKEEMERALD_CRY_IDS_H + +const u16 gSpeciesIdToCryId[] = +{ + 273, // TREECKO + 274, // GROVYLE + 275, // SCEPTILE + 270, // TORCHIC + 271, // COMBUSKEN + 272, // BLAZIKEN + 276, // MUDKIP + 277, // MARSHTOMP + 278, // SWAMPERT + 359, // POOCHYENA + 360, // MIGHTYENA + 378, // ZIGZAGOON + 375, // LINOONE + 290, // WURMPLE + 291, // SILCOON + 292, // BEAUTIFLY + 293, // CASCOON + 294, // DUSTOX + 283, // LOTAD + 284, // LOMBRE + 285, // LUDICOLO + 286, // SEEDOT + 287, // NUZLEAF + 288, // SHIFTRY + 301, // NINCADA + 302, // NINJASK + 303, // SHEDINJA + 266, // TAILLOW + 267, // SWELLOW + 374, // SHROOMISH + 373, // BRELOOM + 269, // SPINDA + 280, // WINGULL + 279, // PELIPPER + 310, // SURSKIT + 311, // MASQUERAIN + 377, // WAILMER + 381, // WAILORD + 312, // SKITTY + 313, // DELCATTY + 251, // KECLEON + 329, // BALTOY + 330, // CLAYDOL + 306, // NOSEPASS + 253, // TORKOAL + 362, // SABLEYE + 318, // BARBOACH + 319, // WHISCASH + 368, // LUVDISC + 320, // CORPHISH + 321, // CRAWDAUNT + 333, // FEEBAS + 334, // MILOTIC + 289, // CARVANHA + 260, // SHARPEDO + 324, // TRAPINCH + 325, // VIBRAVA + 326, // FLYGON + 304, // MAKUHITA + 305, // HARIYAMA + 254, // ELECTRIKE + 255, // MANECTRIC + 316, // NUMEL + 317, // CAMERUPT + 338, // SPHEAL + 339, // SEALEO + 340, // WALREIN + 327, // CACNEA + 328, // CACTURNE + 383, // SNORUNT + 307, // GLALIE + 331, // LUNATONE + 332, // SOLROCK + 262, // AZURILL + 322, // SPOINK + 323, // GRUMPIG + 308, // PLUSLE + 309, // MINUN + 363, // MAWILE + 336, // MEDITITE + 337, // MEDICHAM + 263, // SWABLU + 264, // ALTARIA + 258, // WYNAUT + 256, // DUSKULL + 361, // DUSCLOPS + 252, // ROSELIA + 298, // SLAKOTH + 299, // VIGOROTH + 300, // SLAKING + 314, // GULPIN + 315, // SWALOT + 376, // TROPIUS + 382, // WHISMUR + 380, // LOUDRED + 379, // EXPLOUD + 341, // CLAMPERL + 342, // HUNTAIL + 343, // GOREBYSS + 335, // ABSOL + 282, // SHUPPET + 281, // BANETTE + 259, // SEVIPER + 261, // ZANGOOSE + 367, // RELICANTH + 364, // ARON + 365, // LAIRON + 366, // AGGRON + 356, // CASTFORM + 357, // VOLBEAT + 358, // ILLUMISE + 344, // LILEEP + 345, // CRADILY + 346, // ANORITH + 347, // ARMALDO + 295, // RALTS + 296, // KIRLIA + 297, // GARDEVOIR + 351, // BAGON + 352, // SHELGON + 372, // SALAMENCE + 348, // BELDUM + 349, // METANG + 350, // METAGROSS + 353, // REGIROCK + 354, // REGICE + 355, // REGISTEEL + 370, // KYOGRE + 369, // GROUDON + 371, // RAYQUAZA + 257, // LATIAS + 384, // LATIOS + 385, // JIRACHI + 386, // DEOXYS + 387 // CHIMECHO +}; + +#endif //POKEEMERALD_CRY_IDS_H diff --git a/include/data/pokemon/evolution.h b/include/data/pokemon/evolution.h new file mode 100644 index 000000000..8629ac9b1 --- /dev/null +++ b/include/data/pokemon/evolution.h @@ -0,0 +1,192 @@ +#ifndef POKEEMERALD_EVOLUTION_H +#define POKEEMERALD_EVOLUTION_H + +const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = +{ + [SPECIES_BULBASAUR] = {{EVO_LEVEL, 16, SPECIES_IVYSAUR}}, + [SPECIES_IVYSAUR] = {{EVO_LEVEL, 32, SPECIES_VENUSAUR}}, + [SPECIES_CHARMANDER] = {{EVO_LEVEL, 16, SPECIES_CHARMELEON}}, + [SPECIES_CHARMELEON] = {{EVO_LEVEL, 36, SPECIES_CHARIZARD}}, + [SPECIES_SQUIRTLE] = {{EVO_LEVEL, 16, SPECIES_WARTORTLE}}, + [SPECIES_WARTORTLE] = {{EVO_LEVEL, 36, SPECIES_BLASTOISE}}, + [SPECIES_CATERPIE] = {{EVO_LEVEL, 7, SPECIES_METAPOD}}, + [SPECIES_METAPOD] = {{EVO_LEVEL, 10, SPECIES_BUTTERFREE}}, + [SPECIES_WEEDLE] = {{EVO_LEVEL, 7, SPECIES_KAKUNA}}, + [SPECIES_KAKUNA] = {{EVO_LEVEL, 10, SPECIES_BEEDRILL}}, + [SPECIES_PIDGEY] = {{EVO_LEVEL, 18, SPECIES_PIDGEOTTO}}, + [SPECIES_PIDGEOTTO] = {{EVO_LEVEL, 36, SPECIES_PIDGEOT}}, + [SPECIES_RATTATA] = {{EVO_LEVEL, 20, SPECIES_RATICATE}}, + [SPECIES_SPEAROW] = {{EVO_LEVEL, 20, SPECIES_FEAROW}}, + [SPECIES_EKANS] = {{EVO_LEVEL, 22, SPECIES_ARBOK}}, + [SPECIES_PIKACHU] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}}, + [SPECIES_SANDSHREW] = {{EVO_LEVEL, 22, SPECIES_SANDSLASH}}, + [SPECIES_NIDORAN_F] = {{EVO_LEVEL, 16, SPECIES_NIDORINA}}, + [SPECIES_NIDORINA] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}}, + [SPECIES_NIDORAN_M] = {{EVO_LEVEL, 16, SPECIES_NIDORINO}}, + [SPECIES_NIDORINO] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}}, + [SPECIES_CLEFAIRY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}}, + [SPECIES_VULPIX] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}}, + [SPECIES_JIGGLYPUFF] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}}, + [SPECIES_ZUBAT] = {{EVO_LEVEL, 22, SPECIES_GOLBAT}}, + [SPECIES_GOLBAT] = {{EVO_FRIENDSHIP, 0, SPECIES_CROBAT}}, + [SPECIES_ODDISH] = {{EVO_LEVEL, 21, SPECIES_GLOOM}}, + [SPECIES_GLOOM] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, + {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}}, + [SPECIES_PARAS] = {{EVO_LEVEL, 24, SPECIES_PARASECT}}, + [SPECIES_VENONAT] = {{EVO_LEVEL, 31, SPECIES_VENOMOTH}}, + [SPECIES_DIGLETT] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO}}, + [SPECIES_MEOWTH] = {{EVO_LEVEL, 28, SPECIES_PERSIAN}}, + [SPECIES_PSYDUCK] = {{EVO_LEVEL, 33, SPECIES_GOLDUCK}}, + [SPECIES_MANKEY] = {{EVO_LEVEL, 28, SPECIES_PRIMEAPE}}, + [SPECIES_GROWLITHE] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}}, + [SPECIES_POLIWAG] = {{EVO_LEVEL, 25, SPECIES_POLIWHIRL}}, + [SPECIES_POLIWHIRL] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}}, + [SPECIES_ABRA] = {{EVO_LEVEL, 16, SPECIES_KADABRA}}, + [SPECIES_KADABRA] = {{EVO_TRADE, 0, SPECIES_ALAKAZAM}}, + [SPECIES_MACHOP] = {{EVO_LEVEL, 28, SPECIES_MACHOKE}}, + [SPECIES_MACHOKE] = {{EVO_TRADE, 0, SPECIES_MACHAMP}}, + [SPECIES_BELLSPROUT] = {{EVO_LEVEL, 21, SPECIES_WEEPINBELL}}, + [SPECIES_WEEPINBELL] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}}, + [SPECIES_TENTACOOL] = {{EVO_LEVEL, 30, SPECIES_TENTACRUEL}}, + [SPECIES_GEODUDE] = {{EVO_LEVEL, 25, SPECIES_GRAVELER}}, + [SPECIES_GRAVELER] = {{EVO_TRADE, 0, SPECIES_GOLEM}}, + [SPECIES_PONYTA] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH}}, + [SPECIES_SLOWPOKE] = {{EVO_LEVEL, 37, SPECIES_SLOWBRO}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}}, + [SPECIES_MAGNEMITE] = {{EVO_LEVEL, 30, SPECIES_MAGNETON}}, + [SPECIES_DODUO] = {{EVO_LEVEL, 31, SPECIES_DODRIO}}, + [SPECIES_SEEL] = {{EVO_LEVEL, 34, SPECIES_DEWGONG}}, + [SPECIES_GRIMER] = {{EVO_LEVEL, 38, SPECIES_MUK}}, + [SPECIES_SHELLDER] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}}, + [SPECIES_GASTLY] = {{EVO_LEVEL, 25, SPECIES_HAUNTER}}, + [SPECIES_HAUNTER] = {{EVO_TRADE, 0, SPECIES_GENGAR}}, + [SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}}, + [SPECIES_DROWZEE] = {{EVO_LEVEL, 26, SPECIES_HYPNO}}, + [SPECIES_KRABBY] = {{EVO_LEVEL, 28, SPECIES_KINGLER}}, + [SPECIES_VOLTORB] = {{EVO_LEVEL, 30, SPECIES_ELECTRODE}}, + [SPECIES_EXEGGCUTE] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}}, + [SPECIES_CUBONE] = {{EVO_LEVEL, 28, SPECIES_MAROWAK}}, + [SPECIES_KOFFING] = {{EVO_LEVEL, 35, SPECIES_WEEZING}}, + [SPECIES_RHYHORN] = {{EVO_LEVEL, 42, SPECIES_RHYDON}}, + [SPECIES_CHANSEY] = {{EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}}, + [SPECIES_HORSEA] = {{EVO_LEVEL, 32, SPECIES_SEADRA}}, + [SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}}, + [SPECIES_GOLDEEN] = {{EVO_LEVEL, 33, SPECIES_SEAKING}}, + [SPECIES_STARYU] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}}, + [SPECIES_SCYTHER] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}}, + [SPECIES_MAGIKARP] = {{EVO_LEVEL, 20, SPECIES_GYARADOS}}, + [SPECIES_EEVEE] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, + {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, + {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}}, + [SPECIES_PORYGON] = {{EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}}, + [SPECIES_OMANYTE] = {{EVO_LEVEL, 40, SPECIES_OMASTAR}}, + [SPECIES_KABUTO] = {{EVO_LEVEL, 40, SPECIES_KABUTOPS}}, + [SPECIES_DRATINI] = {{EVO_LEVEL, 30, SPECIES_DRAGONAIR}}, + [SPECIES_DRAGONAIR] = {{EVO_LEVEL, 55, SPECIES_DRAGONITE}}, + [SPECIES_CHIKORITA] = {{EVO_LEVEL, 16, SPECIES_BAYLEEF}}, + [SPECIES_BAYLEEF] = {{EVO_LEVEL, 32, SPECIES_MEGANIUM}}, + [SPECIES_CYNDAQUIL] = {{EVO_LEVEL, 14, SPECIES_QUILAVA}}, + [SPECIES_QUILAVA] = {{EVO_LEVEL, 36, SPECIES_TYPHLOSION}}, + [SPECIES_TOTODILE] = {{EVO_LEVEL, 18, SPECIES_CROCONAW}}, + [SPECIES_CROCONAW] = {{EVO_LEVEL, 30, SPECIES_FERALIGATR}}, + [SPECIES_SENTRET] = {{EVO_LEVEL, 15, SPECIES_FURRET}}, + [SPECIES_HOOTHOOT] = {{EVO_LEVEL, 20, SPECIES_NOCTOWL}}, + [SPECIES_LEDYBA] = {{EVO_LEVEL, 18, SPECIES_LEDIAN}}, + [SPECIES_SPINARAK] = {{EVO_LEVEL, 22, SPECIES_ARIADOS}}, + [SPECIES_CHINCHOU] = {{EVO_LEVEL, 27, SPECIES_LANTURN}}, + [SPECIES_PICHU] = {{EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}}, + [SPECIES_CLEFFA] = {{EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}}, + [SPECIES_IGGLYBUFF] = {{EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}}, + [SPECIES_TOGEPI] = {{EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}}, + [SPECIES_NATU] = {{EVO_LEVEL, 25, SPECIES_XATU}}, + [SPECIES_MAREEP] = {{EVO_LEVEL, 15, SPECIES_FLAAFFY}}, + [SPECIES_FLAAFFY] = {{EVO_LEVEL, 30, SPECIES_AMPHAROS}}, + [SPECIES_MARILL] = {{EVO_LEVEL, 18, SPECIES_AZUMARILL}}, + [SPECIES_HOPPIP] = {{EVO_LEVEL, 18, SPECIES_SKIPLOOM}}, + [SPECIES_SKIPLOOM] = {{EVO_LEVEL, 27, SPECIES_JUMPLUFF}}, + [SPECIES_SUNKERN] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}}, + [SPECIES_WOOPER] = {{EVO_LEVEL, 20, SPECIES_QUAGSIRE}}, + [SPECIES_PINECO] = {{EVO_LEVEL, 31, SPECIES_FORRETRESS}}, + [SPECIES_SNUBBULL] = {{EVO_LEVEL, 23, SPECIES_GRANBULL}}, + [SPECIES_TEDDIURSA] = {{EVO_LEVEL, 30, SPECIES_URSARING}}, + [SPECIES_SLUGMA] = {{EVO_LEVEL, 38, SPECIES_MAGCARGO}}, + [SPECIES_SWINUB] = {{EVO_LEVEL, 33, SPECIES_PILOSWINE}}, + [SPECIES_REMORAID] = {{EVO_LEVEL, 25, SPECIES_OCTILLERY}}, + [SPECIES_HOUNDOUR] = {{EVO_LEVEL, 24, SPECIES_HOUNDOOM}}, + [SPECIES_PHANPY] = {{EVO_LEVEL, 25, SPECIES_DONPHAN}}, + [SPECIES_TYROGUE] = {{EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, + {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, + {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}}, + [SPECIES_SMOOCHUM] = {{EVO_LEVEL, 30, SPECIES_JYNX}}, + [SPECIES_ELEKID] = {{EVO_LEVEL, 30, SPECIES_ELECTABUZZ}}, + [SPECIES_MAGBY] = {{EVO_LEVEL, 30, SPECIES_MAGMAR}}, + [SPECIES_LARVITAR] = {{EVO_LEVEL, 30, SPECIES_PUPITAR}}, + [SPECIES_PUPITAR] = {{EVO_LEVEL, 55, SPECIES_TYRANITAR}}, + [SPECIES_TREECKO] = {{EVO_LEVEL, 16, SPECIES_GROVYLE}}, + [SPECIES_GROVYLE] = {{EVO_LEVEL, 36, SPECIES_SCEPTILE}}, + [SPECIES_TORCHIC] = {{EVO_LEVEL, 16, SPECIES_COMBUSKEN}}, + [SPECIES_COMBUSKEN] = {{EVO_LEVEL, 36, SPECIES_BLAZIKEN}}, + [SPECIES_MUDKIP] = {{EVO_LEVEL, 16, SPECIES_MARSHTOMP}}, + [SPECIES_MARSHTOMP] = {{EVO_LEVEL, 36, SPECIES_SWAMPERT}}, + [SPECIES_POOCHYENA] = {{EVO_LEVEL, 18, SPECIES_MIGHTYENA}}, + [SPECIES_ZIGZAGOON] = {{EVO_LEVEL, 20, SPECIES_LINOONE}}, + [SPECIES_WURMPLE] = {{EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, + {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}}, + [SPECIES_SILCOON] = {{EVO_LEVEL, 10, SPECIES_BEAUTIFLY}}, + [SPECIES_CASCOON] = {{EVO_LEVEL, 10, SPECIES_DUSTOX}}, + [SPECIES_LOTAD] = {{EVO_LEVEL, 14, SPECIES_LOMBRE}}, + [SPECIES_LOMBRE] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}}, + [SPECIES_SEEDOT] = {{EVO_LEVEL, 14, SPECIES_NUZLEAF}}, + [SPECIES_NUZLEAF] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}}, + [SPECIES_NINCADA] = {{EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, + {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}}, + [SPECIES_TAILLOW] = {{EVO_LEVEL, 22, SPECIES_SWELLOW}}, + [SPECIES_SHROOMISH] = {{EVO_LEVEL, 23, SPECIES_BRELOOM}}, + [SPECIES_WINGULL] = {{EVO_LEVEL, 25, SPECIES_PELIPPER}}, + [SPECIES_SURSKIT] = {{EVO_LEVEL, 22, SPECIES_MASQUERAIN}}, + [SPECIES_WAILMER] = {{EVO_LEVEL, 40, SPECIES_WAILORD}}, + [SPECIES_SKITTY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}}, + [SPECIES_BALTOY] = {{EVO_LEVEL, 36, SPECIES_CLAYDOL}}, + [SPECIES_BARBOACH] = {{EVO_LEVEL, 30, SPECIES_WHISCASH}}, + [SPECIES_CORPHISH] = {{EVO_LEVEL, 30, SPECIES_CRAWDAUNT}}, + [SPECIES_FEEBAS] = {{EVO_BEAUTY, 170, SPECIES_MILOTIC}}, + [SPECIES_CARVANHA] = {{EVO_LEVEL, 30, SPECIES_SHARPEDO}}, + [SPECIES_TRAPINCH] = {{EVO_LEVEL, 35, SPECIES_VIBRAVA}}, + [SPECIES_VIBRAVA] = {{EVO_LEVEL, 45, SPECIES_FLYGON}}, + [SPECIES_MAKUHITA] = {{EVO_LEVEL, 24, SPECIES_HARIYAMA}}, + [SPECIES_ELECTRIKE] = {{EVO_LEVEL, 26, SPECIES_MANECTRIC}}, + [SPECIES_NUMEL] = {{EVO_LEVEL, 33, SPECIES_CAMERUPT}}, + [SPECIES_SPHEAL] = {{EVO_LEVEL, 32, SPECIES_SEALEO}}, + [SPECIES_SEALEO] = {{EVO_LEVEL, 44, SPECIES_WALREIN}}, + [SPECIES_CACNEA] = {{EVO_LEVEL, 32, SPECIES_CACTURNE}}, + [SPECIES_SNORUNT] = {{EVO_LEVEL, 42, SPECIES_GLALIE}}, + [SPECIES_AZURILL] = {{EVO_FRIENDSHIP, 0, SPECIES_MARILL}}, + [SPECIES_SPOINK] = {{EVO_LEVEL, 32, SPECIES_GRUMPIG}}, + [SPECIES_MEDITITE] = {{EVO_LEVEL, 37, SPECIES_MEDICHAM}}, + [SPECIES_SWABLU] = {{EVO_LEVEL, 35, SPECIES_ALTARIA}}, + [SPECIES_WYNAUT] = {{EVO_LEVEL, 15, SPECIES_WOBBUFFET}}, + [SPECIES_DUSKULL] = {{EVO_LEVEL, 37, SPECIES_DUSCLOPS}}, + [SPECIES_SLAKOTH] = {{EVO_LEVEL, 18, SPECIES_VIGOROTH}}, + [SPECIES_VIGOROTH] = {{EVO_LEVEL, 36, SPECIES_SLAKING}}, + [SPECIES_GULPIN] = {{EVO_LEVEL, 26, SPECIES_SWALOT}}, + [SPECIES_WHISMUR] = {{EVO_LEVEL, 20, SPECIES_LOUDRED}}, + [SPECIES_LOUDRED] = {{EVO_LEVEL, 40, SPECIES_EXPLOUD}}, + [SPECIES_CLAMPERL] = {{EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, + {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}}, + [SPECIES_SHUPPET] = {{EVO_LEVEL, 37, SPECIES_BANETTE}}, + [SPECIES_ARON] = {{EVO_LEVEL, 32, SPECIES_LAIRON}}, + [SPECIES_LAIRON] = {{EVO_LEVEL, 42, SPECIES_AGGRON}}, + [SPECIES_LILEEP] = {{EVO_LEVEL, 40, SPECIES_CRADILY}}, + [SPECIES_ANORITH] = {{EVO_LEVEL, 40, SPECIES_ARMALDO}}, + [SPECIES_RALTS] = {{EVO_LEVEL, 20, SPECIES_KIRLIA}}, + [SPECIES_KIRLIA] = {{EVO_LEVEL, 30, SPECIES_GARDEVOIR}}, + [SPECIES_BAGON] = {{EVO_LEVEL, 30, SPECIES_SHELGON}}, + [SPECIES_SHELGON] = {{EVO_LEVEL, 50, SPECIES_SALAMENCE}}, + [SPECIES_BELDUM] = {{EVO_LEVEL, 20, SPECIES_METANG}}, + [SPECIES_METANG] = {{EVO_LEVEL, 45, SPECIES_METAGROSS}}, +}; + +#endif //POKEEMERALD_EVOLUTION_H diff --git a/include/data/pokemon/experience_tables.h b/include/data/pokemon/experience_tables.h new file mode 100644 index 000000000..58474b6f1 --- /dev/null +++ b/include/data/pokemon/experience_tables.h @@ -0,0 +1,849 @@ +#ifndef POKEEMERALD_EXPERIENCE_TABLES_H +#define POKEEMERALD_EXPERIENCE_TABLES_H + +#define SQUARE(n)(n * n) +#define CUBE(n)(n * n * n) + +#define EXP_SLOW(n)((5 * CUBE(n)) / 4) // (5 * (n)^3) / 4 +#define EXP_FAST(n)((4 * CUBE(n)) / 5) // (4 * (n)^3) / 5 +#define EXP_MEDIUM_FAST(n)(CUBE(n)) // (n)^3 +#define EXP_MEDIUM_SLOW(n)((6 * CUBE(n)) / 5 - (15 * SQUARE(n)) + (100 * n) - 140) // (6 * (n)^3) / 5 - (15 * (n)^2) + (100 * n) - 140 +#define EXP_ERRATIC(n) \ + (n <= 50) ? ((100 - n) * CUBE(n) / 50) \ + :(n <= 68) ? ((150 - n) * CUBE(n) / 100) \ + :(n <= 98) ? (((1911 - 10 * n) / 3) * CUBE(n) / 500) \ + : ((160 - n) * CUBE(n) / 100) +#define EXP_FLUCTUATING(n) \ + (n <= 15) ? (((n + 1) / 3 + 24) * CUBE(n) / 50) \ + :(n <= 36) ? ((n + 14) * CUBE(n) / 50) \ + : (((n / 2) + 32) * CUBE(n) / 50) + +const u32 gExperienceTables[][MAX_MON_LEVEL + 1] = +{ + { // Medium Fast + 0, // 0 + 1, // 1 + EXP_MEDIUM_FAST(2), + EXP_MEDIUM_FAST(3), + EXP_MEDIUM_FAST(4), + EXP_MEDIUM_FAST(5), + EXP_MEDIUM_FAST(6), + EXP_MEDIUM_FAST(7), + EXP_MEDIUM_FAST(8), + EXP_MEDIUM_FAST(9), + EXP_MEDIUM_FAST(10), + EXP_MEDIUM_FAST(11), + EXP_MEDIUM_FAST(12), + EXP_MEDIUM_FAST(13), + EXP_MEDIUM_FAST(14), + EXP_MEDIUM_FAST(15), + EXP_MEDIUM_FAST(16), + EXP_MEDIUM_FAST(17), + EXP_MEDIUM_FAST(18), + EXP_MEDIUM_FAST(19), + EXP_MEDIUM_FAST(20), + EXP_MEDIUM_FAST(21), + EXP_MEDIUM_FAST(22), + EXP_MEDIUM_FAST(23), + EXP_MEDIUM_FAST(24), + EXP_MEDIUM_FAST(25), + EXP_MEDIUM_FAST(26), + EXP_MEDIUM_FAST(27), + EXP_MEDIUM_FAST(28), + EXP_MEDIUM_FAST(29), + EXP_MEDIUM_FAST(30), + EXP_MEDIUM_FAST(31), + EXP_MEDIUM_FAST(32), + EXP_MEDIUM_FAST(33), + EXP_MEDIUM_FAST(34), + EXP_MEDIUM_FAST(35), + EXP_MEDIUM_FAST(36), + EXP_MEDIUM_FAST(37), + EXP_MEDIUM_FAST(38), + EXP_MEDIUM_FAST(39), + EXP_MEDIUM_FAST(40), + EXP_MEDIUM_FAST(41), + EXP_MEDIUM_FAST(42), + EXP_MEDIUM_FAST(43), + EXP_MEDIUM_FAST(44), + EXP_MEDIUM_FAST(45), + EXP_MEDIUM_FAST(46), + EXP_MEDIUM_FAST(47), + EXP_MEDIUM_FAST(48), + EXP_MEDIUM_FAST(49), + EXP_MEDIUM_FAST(50), + EXP_MEDIUM_FAST(51), + EXP_MEDIUM_FAST(52), + EXP_MEDIUM_FAST(53), + EXP_MEDIUM_FAST(54), + EXP_MEDIUM_FAST(55), + EXP_MEDIUM_FAST(56), + EXP_MEDIUM_FAST(57), + EXP_MEDIUM_FAST(58), + EXP_MEDIUM_FAST(59), + EXP_MEDIUM_FAST(60), + EXP_MEDIUM_FAST(61), + EXP_MEDIUM_FAST(62), + EXP_MEDIUM_FAST(63), + EXP_MEDIUM_FAST(64), + EXP_MEDIUM_FAST(65), + EXP_MEDIUM_FAST(66), + EXP_MEDIUM_FAST(67), + EXP_MEDIUM_FAST(68), + EXP_MEDIUM_FAST(69), + EXP_MEDIUM_FAST(70), + EXP_MEDIUM_FAST(71), + EXP_MEDIUM_FAST(72), + EXP_MEDIUM_FAST(73), + EXP_MEDIUM_FAST(74), + EXP_MEDIUM_FAST(75), + EXP_MEDIUM_FAST(76), + EXP_MEDIUM_FAST(77), + EXP_MEDIUM_FAST(78), + EXP_MEDIUM_FAST(79), + EXP_MEDIUM_FAST(80), + EXP_MEDIUM_FAST(81), + EXP_MEDIUM_FAST(82), + EXP_MEDIUM_FAST(83), + EXP_MEDIUM_FAST(84), + EXP_MEDIUM_FAST(85), + EXP_MEDIUM_FAST(86), + EXP_MEDIUM_FAST(87), + EXP_MEDIUM_FAST(88), + EXP_MEDIUM_FAST(89), + EXP_MEDIUM_FAST(90), + EXP_MEDIUM_FAST(91), + EXP_MEDIUM_FAST(92), + EXP_MEDIUM_FAST(93), + EXP_MEDIUM_FAST(94), + EXP_MEDIUM_FAST(95), + EXP_MEDIUM_FAST(96), + EXP_MEDIUM_FAST(97), + EXP_MEDIUM_FAST(98), + EXP_MEDIUM_FAST(99), + EXP_MEDIUM_FAST(100), + }, + { // Erratic + 0, // 0 + 1, // 1 + EXP_ERRATIC(2), + EXP_ERRATIC(3), + EXP_ERRATIC(4), + EXP_ERRATIC(5), + EXP_ERRATIC(6), + EXP_ERRATIC(7), + EXP_ERRATIC(8), + EXP_ERRATIC(9), + EXP_ERRATIC(10), + EXP_ERRATIC(11), + EXP_ERRATIC(12), + EXP_ERRATIC(13), + EXP_ERRATIC(14), + EXP_ERRATIC(15), + EXP_ERRATIC(16), + EXP_ERRATIC(17), + EXP_ERRATIC(18), + EXP_ERRATIC(19), + EXP_ERRATIC(20), + EXP_ERRATIC(21), + EXP_ERRATIC(22), + EXP_ERRATIC(23), + EXP_ERRATIC(24), + EXP_ERRATIC(25), + EXP_ERRATIC(26), + EXP_ERRATIC(27), + EXP_ERRATIC(28), + EXP_ERRATIC(29), + EXP_ERRATIC(30), + EXP_ERRATIC(31), + EXP_ERRATIC(32), + EXP_ERRATIC(33), + EXP_ERRATIC(34), + EXP_ERRATIC(35), + EXP_ERRATIC(36), + EXP_ERRATIC(37), + EXP_ERRATIC(38), + EXP_ERRATIC(39), + EXP_ERRATIC(40), + EXP_ERRATIC(41), + EXP_ERRATIC(42), + EXP_ERRATIC(43), + EXP_ERRATIC(44), + EXP_ERRATIC(45), + EXP_ERRATIC(46), + EXP_ERRATIC(47), + EXP_ERRATIC(48), + EXP_ERRATIC(49), + EXP_ERRATIC(50), + EXP_ERRATIC(51), + EXP_ERRATIC(52), + EXP_ERRATIC(53), + EXP_ERRATIC(54), + EXP_ERRATIC(55), + EXP_ERRATIC(56), + EXP_ERRATIC(57), + EXP_ERRATIC(58), + EXP_ERRATIC(59), + EXP_ERRATIC(60), + EXP_ERRATIC(61), + EXP_ERRATIC(62), + EXP_ERRATIC(63), + EXP_ERRATIC(64), + EXP_ERRATIC(65), + EXP_ERRATIC(66), + EXP_ERRATIC(67), + EXP_ERRATIC(68), + EXP_ERRATIC(69), + EXP_ERRATIC(70), + EXP_ERRATIC(71), + EXP_ERRATIC(72), + EXP_ERRATIC(73), + EXP_ERRATIC(74), + EXP_ERRATIC(75), + EXP_ERRATIC(76), + EXP_ERRATIC(77), + EXP_ERRATIC(78), + EXP_ERRATIC(79), + EXP_ERRATIC(80), + EXP_ERRATIC(81), + EXP_ERRATIC(82), + EXP_ERRATIC(83), + EXP_ERRATIC(84), + EXP_ERRATIC(85), + EXP_ERRATIC(86), + EXP_ERRATIC(87), + EXP_ERRATIC(88), + EXP_ERRATIC(89), + EXP_ERRATIC(90), + EXP_ERRATIC(91), + EXP_ERRATIC(92), + EXP_ERRATIC(93), + EXP_ERRATIC(94), + EXP_ERRATIC(95), + EXP_ERRATIC(96), + EXP_ERRATIC(97), + EXP_ERRATIC(98), + EXP_ERRATIC(99), + EXP_ERRATIC(100), + }, + { // Fluctuating + 0, // 0 + 1, // 1 + EXP_FLUCTUATING(2), + EXP_FLUCTUATING(3), + EXP_FLUCTUATING(4), + EXP_FLUCTUATING(5), + EXP_FLUCTUATING(6), + EXP_FLUCTUATING(7), + EXP_FLUCTUATING(8), + EXP_FLUCTUATING(9), + EXP_FLUCTUATING(10), + EXP_FLUCTUATING(11), + EXP_FLUCTUATING(12), + EXP_FLUCTUATING(13), + EXP_FLUCTUATING(14), + EXP_FLUCTUATING(15), + EXP_FLUCTUATING(16), + EXP_FLUCTUATING(17), + EXP_FLUCTUATING(18), + EXP_FLUCTUATING(19), + EXP_FLUCTUATING(20), + EXP_FLUCTUATING(21), + EXP_FLUCTUATING(22), + EXP_FLUCTUATING(23), + EXP_FLUCTUATING(24), + EXP_FLUCTUATING(25), + EXP_FLUCTUATING(26), + EXP_FLUCTUATING(27), + EXP_FLUCTUATING(28), + EXP_FLUCTUATING(29), + EXP_FLUCTUATING(30), + EXP_FLUCTUATING(31), + EXP_FLUCTUATING(32), + EXP_FLUCTUATING(33), + EXP_FLUCTUATING(34), + EXP_FLUCTUATING(35), + EXP_FLUCTUATING(36), + EXP_FLUCTUATING(37), + EXP_FLUCTUATING(38), + EXP_FLUCTUATING(39), + EXP_FLUCTUATING(40), + EXP_FLUCTUATING(41), + EXP_FLUCTUATING(42), + EXP_FLUCTUATING(43), + EXP_FLUCTUATING(44), + EXP_FLUCTUATING(45), + EXP_FLUCTUATING(46), + EXP_FLUCTUATING(47), + EXP_FLUCTUATING(48), + EXP_FLUCTUATING(49), + EXP_FLUCTUATING(50), + EXP_FLUCTUATING(51), + EXP_FLUCTUATING(52), + EXP_FLUCTUATING(53), + EXP_FLUCTUATING(54), + EXP_FLUCTUATING(55), + EXP_FLUCTUATING(56), + EXP_FLUCTUATING(57), + EXP_FLUCTUATING(58), + EXP_FLUCTUATING(59), + EXP_FLUCTUATING(60), + EXP_FLUCTUATING(61), + EXP_FLUCTUATING(62), + EXP_FLUCTUATING(63), + EXP_FLUCTUATING(64), + EXP_FLUCTUATING(65), + EXP_FLUCTUATING(66), + EXP_FLUCTUATING(67), + EXP_FLUCTUATING(68), + EXP_FLUCTUATING(69), + EXP_FLUCTUATING(70), + EXP_FLUCTUATING(71), + EXP_FLUCTUATING(72), + EXP_FLUCTUATING(73), + EXP_FLUCTUATING(74), + EXP_FLUCTUATING(75), + EXP_FLUCTUATING(76), + EXP_FLUCTUATING(77), + EXP_FLUCTUATING(78), + EXP_FLUCTUATING(79), + EXP_FLUCTUATING(80), + EXP_FLUCTUATING(81), + EXP_FLUCTUATING(82), + EXP_FLUCTUATING(83), + EXP_FLUCTUATING(84), + EXP_FLUCTUATING(85), + EXP_FLUCTUATING(86), + EXP_FLUCTUATING(87), + EXP_FLUCTUATING(88), + EXP_FLUCTUATING(89), + EXP_FLUCTUATING(90), + EXP_FLUCTUATING(91), + EXP_FLUCTUATING(92), + EXP_FLUCTUATING(93), + EXP_FLUCTUATING(94), + EXP_FLUCTUATING(95), + EXP_FLUCTUATING(96), + EXP_FLUCTUATING(97), + EXP_FLUCTUATING(98), + EXP_FLUCTUATING(99), + EXP_FLUCTUATING(100), + }, + { // Medium Slow + 0, // 0 + 1, // 1 + EXP_MEDIUM_SLOW(2), + EXP_MEDIUM_SLOW(3), + EXP_MEDIUM_SLOW(4), + EXP_MEDIUM_SLOW(5), + EXP_MEDIUM_SLOW(6), + EXP_MEDIUM_SLOW(7), + EXP_MEDIUM_SLOW(8), + EXP_MEDIUM_SLOW(9), + EXP_MEDIUM_SLOW(10), + EXP_MEDIUM_SLOW(11), + EXP_MEDIUM_SLOW(12), + EXP_MEDIUM_SLOW(13), + EXP_MEDIUM_SLOW(14), + EXP_MEDIUM_SLOW(15), + EXP_MEDIUM_SLOW(16), + EXP_MEDIUM_SLOW(17), + EXP_MEDIUM_SLOW(18), + EXP_MEDIUM_SLOW(19), + EXP_MEDIUM_SLOW(20), + EXP_MEDIUM_SLOW(21), + EXP_MEDIUM_SLOW(22), + EXP_MEDIUM_SLOW(23), + EXP_MEDIUM_SLOW(24), + EXP_MEDIUM_SLOW(25), + EXP_MEDIUM_SLOW(26), + EXP_MEDIUM_SLOW(27), + EXP_MEDIUM_SLOW(28), + EXP_MEDIUM_SLOW(29), + EXP_MEDIUM_SLOW(30), + EXP_MEDIUM_SLOW(31), + EXP_MEDIUM_SLOW(32), + EXP_MEDIUM_SLOW(33), + EXP_MEDIUM_SLOW(34), + EXP_MEDIUM_SLOW(35), + EXP_MEDIUM_SLOW(36), + EXP_MEDIUM_SLOW(37), + EXP_MEDIUM_SLOW(38), + EXP_MEDIUM_SLOW(39), + EXP_MEDIUM_SLOW(40), + EXP_MEDIUM_SLOW(41), + EXP_MEDIUM_SLOW(42), + EXP_MEDIUM_SLOW(43), + EXP_MEDIUM_SLOW(44), + EXP_MEDIUM_SLOW(45), + EXP_MEDIUM_SLOW(46), + EXP_MEDIUM_SLOW(47), + EXP_MEDIUM_SLOW(48), + EXP_MEDIUM_SLOW(49), + EXP_MEDIUM_SLOW(50), + EXP_MEDIUM_SLOW(51), + EXP_MEDIUM_SLOW(52), + EXP_MEDIUM_SLOW(53), + EXP_MEDIUM_SLOW(54), + EXP_MEDIUM_SLOW(55), + EXP_MEDIUM_SLOW(56), + EXP_MEDIUM_SLOW(57), + EXP_MEDIUM_SLOW(58), + EXP_MEDIUM_SLOW(59), + EXP_MEDIUM_SLOW(60), + EXP_MEDIUM_SLOW(61), + EXP_MEDIUM_SLOW(62), + EXP_MEDIUM_SLOW(63), + EXP_MEDIUM_SLOW(64), + EXP_MEDIUM_SLOW(65), + EXP_MEDIUM_SLOW(66), + EXP_MEDIUM_SLOW(67), + EXP_MEDIUM_SLOW(68), + EXP_MEDIUM_SLOW(69), + EXP_MEDIUM_SLOW(70), + EXP_MEDIUM_SLOW(71), + EXP_MEDIUM_SLOW(72), + EXP_MEDIUM_SLOW(73), + EXP_MEDIUM_SLOW(74), + EXP_MEDIUM_SLOW(75), + EXP_MEDIUM_SLOW(76), + EXP_MEDIUM_SLOW(77), + EXP_MEDIUM_SLOW(78), + EXP_MEDIUM_SLOW(79), + EXP_MEDIUM_SLOW(80), + EXP_MEDIUM_SLOW(81), + EXP_MEDIUM_SLOW(82), + EXP_MEDIUM_SLOW(83), + EXP_MEDIUM_SLOW(84), + EXP_MEDIUM_SLOW(85), + EXP_MEDIUM_SLOW(86), + EXP_MEDIUM_SLOW(87), + EXP_MEDIUM_SLOW(88), + EXP_MEDIUM_SLOW(89), + EXP_MEDIUM_SLOW(90), + EXP_MEDIUM_SLOW(91), + EXP_MEDIUM_SLOW(92), + EXP_MEDIUM_SLOW(93), + EXP_MEDIUM_SLOW(94), + EXP_MEDIUM_SLOW(95), + EXP_MEDIUM_SLOW(96), + EXP_MEDIUM_SLOW(97), + EXP_MEDIUM_SLOW(98), + EXP_MEDIUM_SLOW(99), + EXP_MEDIUM_SLOW(100), + }, + { // Fast + 0, // 0 + 1, // 1 + EXP_FAST(2), + EXP_FAST(3), + EXP_FAST(4), + EXP_FAST(5), + EXP_FAST(6), + EXP_FAST(7), + EXP_FAST(8), + EXP_FAST(9), + EXP_FAST(10), + EXP_FAST(11), + EXP_FAST(12), + EXP_FAST(13), + EXP_FAST(14), + EXP_FAST(15), + EXP_FAST(16), + EXP_FAST(17), + EXP_FAST(18), + EXP_FAST(19), + EXP_FAST(20), + EXP_FAST(21), + EXP_FAST(22), + EXP_FAST(23), + EXP_FAST(24), + EXP_FAST(25), + EXP_FAST(26), + EXP_FAST(27), + EXP_FAST(28), + EXP_FAST(29), + EXP_FAST(30), + EXP_FAST(31), + EXP_FAST(32), + EXP_FAST(33), + EXP_FAST(34), + EXP_FAST(35), + EXP_FAST(36), + EXP_FAST(37), + EXP_FAST(38), + EXP_FAST(39), + EXP_FAST(40), + EXP_FAST(41), + EXP_FAST(42), + EXP_FAST(43), + EXP_FAST(44), + EXP_FAST(45), + EXP_FAST(46), + EXP_FAST(47), + EXP_FAST(48), + EXP_FAST(49), + EXP_FAST(50), + EXP_FAST(51), + EXP_FAST(52), + EXP_FAST(53), + EXP_FAST(54), + EXP_FAST(55), + EXP_FAST(56), + EXP_FAST(57), + EXP_FAST(58), + EXP_FAST(59), + EXP_FAST(60), + EXP_FAST(61), + EXP_FAST(62), + EXP_FAST(63), + EXP_FAST(64), + EXP_FAST(65), + EXP_FAST(66), + EXP_FAST(67), + EXP_FAST(68), + EXP_FAST(69), + EXP_FAST(70), + EXP_FAST(71), + EXP_FAST(72), + EXP_FAST(73), + EXP_FAST(74), + EXP_FAST(75), + EXP_FAST(76), + EXP_FAST(77), + EXP_FAST(78), + EXP_FAST(79), + EXP_FAST(80), + EXP_FAST(81), + EXP_FAST(82), + EXP_FAST(83), + EXP_FAST(84), + EXP_FAST(85), + EXP_FAST(86), + EXP_FAST(87), + EXP_FAST(88), + EXP_FAST(89), + EXP_FAST(90), + EXP_FAST(91), + EXP_FAST(92), + EXP_FAST(93), + EXP_FAST(94), + EXP_FAST(95), + EXP_FAST(96), + EXP_FAST(97), + EXP_FAST(98), + EXP_FAST(99), + EXP_FAST(100), + }, + { // Slow + 0, // 0 + 1, // 1 + EXP_SLOW(2), + EXP_SLOW(3), + EXP_SLOW(4), + EXP_SLOW(5), + EXP_SLOW(6), + EXP_SLOW(7), + EXP_SLOW(8), + EXP_SLOW(9), + EXP_SLOW(10), + EXP_SLOW(11), + EXP_SLOW(12), + EXP_SLOW(13), + EXP_SLOW(14), + EXP_SLOW(15), + EXP_SLOW(16), + EXP_SLOW(17), + EXP_SLOW(18), + EXP_SLOW(19), + EXP_SLOW(20), + EXP_SLOW(21), + EXP_SLOW(22), + EXP_SLOW(23), + EXP_SLOW(24), + EXP_SLOW(25), + EXP_SLOW(26), + EXP_SLOW(27), + EXP_SLOW(28), + EXP_SLOW(29), + EXP_SLOW(30), + EXP_SLOW(31), + EXP_SLOW(32), + EXP_SLOW(33), + EXP_SLOW(34), + EXP_SLOW(35), + EXP_SLOW(36), + EXP_SLOW(37), + EXP_SLOW(38), + EXP_SLOW(39), + EXP_SLOW(40), + EXP_SLOW(41), + EXP_SLOW(42), + EXP_SLOW(43), + EXP_SLOW(44), + EXP_SLOW(45), + EXP_SLOW(46), + EXP_SLOW(47), + EXP_SLOW(48), + EXP_SLOW(49), + EXP_SLOW(50), + EXP_SLOW(51), + EXP_SLOW(52), + EXP_SLOW(53), + EXP_SLOW(54), + EXP_SLOW(55), + EXP_SLOW(56), + EXP_SLOW(57), + EXP_SLOW(58), + EXP_SLOW(59), + EXP_SLOW(60), + EXP_SLOW(61), + EXP_SLOW(62), + EXP_SLOW(63), + EXP_SLOW(64), + EXP_SLOW(65), + EXP_SLOW(66), + EXP_SLOW(67), + EXP_SLOW(68), + EXP_SLOW(69), + EXP_SLOW(70), + EXP_SLOW(71), + EXP_SLOW(72), + EXP_SLOW(73), + EXP_SLOW(74), + EXP_SLOW(75), + EXP_SLOW(76), + EXP_SLOW(77), + EXP_SLOW(78), + EXP_SLOW(79), + EXP_SLOW(80), + EXP_SLOW(81), + EXP_SLOW(82), + EXP_SLOW(83), + EXP_SLOW(84), + EXP_SLOW(85), + EXP_SLOW(86), + EXP_SLOW(87), + EXP_SLOW(88), + EXP_SLOW(89), + EXP_SLOW(90), + EXP_SLOW(91), + EXP_SLOW(92), + EXP_SLOW(93), + EXP_SLOW(94), + EXP_SLOW(95), + EXP_SLOW(96), + EXP_SLOW(97), + EXP_SLOW(98), + EXP_SLOW(99), + EXP_SLOW(100), + }, + { // Medium Fast copy 2 (unused? to-do: investigate) + 0, // 0 + 1, // 1 + EXP_MEDIUM_FAST(2), + EXP_MEDIUM_FAST(3), + EXP_MEDIUM_FAST(4), + EXP_MEDIUM_FAST(5), + EXP_MEDIUM_FAST(6), + EXP_MEDIUM_FAST(7), + EXP_MEDIUM_FAST(8), + EXP_MEDIUM_FAST(9), + EXP_MEDIUM_FAST(10), + EXP_MEDIUM_FAST(11), + EXP_MEDIUM_FAST(12), + EXP_MEDIUM_FAST(13), + EXP_MEDIUM_FAST(14), + EXP_MEDIUM_FAST(15), + EXP_MEDIUM_FAST(16), + EXP_MEDIUM_FAST(17), + EXP_MEDIUM_FAST(18), + EXP_MEDIUM_FAST(19), + EXP_MEDIUM_FAST(20), + EXP_MEDIUM_FAST(21), + EXP_MEDIUM_FAST(22), + EXP_MEDIUM_FAST(23), + EXP_MEDIUM_FAST(24), + EXP_MEDIUM_FAST(25), + EXP_MEDIUM_FAST(26), + EXP_MEDIUM_FAST(27), + EXP_MEDIUM_FAST(28), + EXP_MEDIUM_FAST(29), + EXP_MEDIUM_FAST(30), + EXP_MEDIUM_FAST(31), + EXP_MEDIUM_FAST(32), + EXP_MEDIUM_FAST(33), + EXP_MEDIUM_FAST(34), + EXP_MEDIUM_FAST(35), + EXP_MEDIUM_FAST(36), + EXP_MEDIUM_FAST(37), + EXP_MEDIUM_FAST(38), + EXP_MEDIUM_FAST(39), + EXP_MEDIUM_FAST(40), + EXP_MEDIUM_FAST(41), + EXP_MEDIUM_FAST(42), + EXP_MEDIUM_FAST(43), + EXP_MEDIUM_FAST(44), + EXP_MEDIUM_FAST(45), + EXP_MEDIUM_FAST(46), + EXP_MEDIUM_FAST(47), + EXP_MEDIUM_FAST(48), + EXP_MEDIUM_FAST(49), + EXP_MEDIUM_FAST(50), + EXP_MEDIUM_FAST(51), + EXP_MEDIUM_FAST(52), + EXP_MEDIUM_FAST(53), + EXP_MEDIUM_FAST(54), + EXP_MEDIUM_FAST(55), + EXP_MEDIUM_FAST(56), + EXP_MEDIUM_FAST(57), + EXP_MEDIUM_FAST(58), + EXP_MEDIUM_FAST(59), + EXP_MEDIUM_FAST(60), + EXP_MEDIUM_FAST(61), + EXP_MEDIUM_FAST(62), + EXP_MEDIUM_FAST(63), + EXP_MEDIUM_FAST(64), + EXP_MEDIUM_FAST(65), + EXP_MEDIUM_FAST(66), + EXP_MEDIUM_FAST(67), + EXP_MEDIUM_FAST(68), + EXP_MEDIUM_FAST(69), + EXP_MEDIUM_FAST(70), + EXP_MEDIUM_FAST(71), + EXP_MEDIUM_FAST(72), + EXP_MEDIUM_FAST(73), + EXP_MEDIUM_FAST(74), + EXP_MEDIUM_FAST(75), + EXP_MEDIUM_FAST(76), + EXP_MEDIUM_FAST(77), + EXP_MEDIUM_FAST(78), + EXP_MEDIUM_FAST(79), + EXP_MEDIUM_FAST(80), + EXP_MEDIUM_FAST(81), + EXP_MEDIUM_FAST(82), + EXP_MEDIUM_FAST(83), + EXP_MEDIUM_FAST(84), + EXP_MEDIUM_FAST(85), + EXP_MEDIUM_FAST(86), + EXP_MEDIUM_FAST(87), + EXP_MEDIUM_FAST(88), + EXP_MEDIUM_FAST(89), + EXP_MEDIUM_FAST(90), + EXP_MEDIUM_FAST(91), + EXP_MEDIUM_FAST(92), + EXP_MEDIUM_FAST(93), + EXP_MEDIUM_FAST(94), + EXP_MEDIUM_FAST(95), + EXP_MEDIUM_FAST(96), + EXP_MEDIUM_FAST(97), + EXP_MEDIUM_FAST(98), + EXP_MEDIUM_FAST(99), + EXP_MEDIUM_FAST(100), + }, + { // Medium Fast copy 3 (unused? to-do: investigate) + 0, // 0 + 1, // 1 + EXP_MEDIUM_FAST(2), + EXP_MEDIUM_FAST(3), + EXP_MEDIUM_FAST(4), + EXP_MEDIUM_FAST(5), + EXP_MEDIUM_FAST(6), + EXP_MEDIUM_FAST(7), + EXP_MEDIUM_FAST(8), + EXP_MEDIUM_FAST(9), + EXP_MEDIUM_FAST(10), + EXP_MEDIUM_FAST(11), + EXP_MEDIUM_FAST(12), + EXP_MEDIUM_FAST(13), + EXP_MEDIUM_FAST(14), + EXP_MEDIUM_FAST(15), + EXP_MEDIUM_FAST(16), + EXP_MEDIUM_FAST(17), + EXP_MEDIUM_FAST(18), + EXP_MEDIUM_FAST(19), + EXP_MEDIUM_FAST(20), + EXP_MEDIUM_FAST(21), + EXP_MEDIUM_FAST(22), + EXP_MEDIUM_FAST(23), + EXP_MEDIUM_FAST(24), + EXP_MEDIUM_FAST(25), + EXP_MEDIUM_FAST(26), + EXP_MEDIUM_FAST(27), + EXP_MEDIUM_FAST(28), + EXP_MEDIUM_FAST(29), + EXP_MEDIUM_FAST(30), + EXP_MEDIUM_FAST(31), + EXP_MEDIUM_FAST(32), + EXP_MEDIUM_FAST(33), + EXP_MEDIUM_FAST(34), + EXP_MEDIUM_FAST(35), + EXP_MEDIUM_FAST(36), + EXP_MEDIUM_FAST(37), + EXP_MEDIUM_FAST(38), + EXP_MEDIUM_FAST(39), + EXP_MEDIUM_FAST(40), + EXP_MEDIUM_FAST(41), + EXP_MEDIUM_FAST(42), + EXP_MEDIUM_FAST(43), + EXP_MEDIUM_FAST(44), + EXP_MEDIUM_FAST(45), + EXP_MEDIUM_FAST(46), + EXP_MEDIUM_FAST(47), + EXP_MEDIUM_FAST(48), + EXP_MEDIUM_FAST(49), + EXP_MEDIUM_FAST(50), + EXP_MEDIUM_FAST(51), + EXP_MEDIUM_FAST(52), + EXP_MEDIUM_FAST(53), + EXP_MEDIUM_FAST(54), + EXP_MEDIUM_FAST(55), + EXP_MEDIUM_FAST(56), + EXP_MEDIUM_FAST(57), + EXP_MEDIUM_FAST(58), + EXP_MEDIUM_FAST(59), + EXP_MEDIUM_FAST(60), + EXP_MEDIUM_FAST(61), + EXP_MEDIUM_FAST(62), + EXP_MEDIUM_FAST(63), + EXP_MEDIUM_FAST(64), + EXP_MEDIUM_FAST(65), + EXP_MEDIUM_FAST(66), + EXP_MEDIUM_FAST(67), + EXP_MEDIUM_FAST(68), + EXP_MEDIUM_FAST(69), + EXP_MEDIUM_FAST(70), + EXP_MEDIUM_FAST(71), + EXP_MEDIUM_FAST(72), + EXP_MEDIUM_FAST(73), + EXP_MEDIUM_FAST(74), + EXP_MEDIUM_FAST(75), + EXP_MEDIUM_FAST(76), + EXP_MEDIUM_FAST(77), + EXP_MEDIUM_FAST(78), + EXP_MEDIUM_FAST(79), + EXP_MEDIUM_FAST(80), + EXP_MEDIUM_FAST(81), + EXP_MEDIUM_FAST(82), + EXP_MEDIUM_FAST(83), + EXP_MEDIUM_FAST(84), + EXP_MEDIUM_FAST(85), + EXP_MEDIUM_FAST(86), + EXP_MEDIUM_FAST(87), + EXP_MEDIUM_FAST(88), + EXP_MEDIUM_FAST(89), + EXP_MEDIUM_FAST(90), + EXP_MEDIUM_FAST(91), + EXP_MEDIUM_FAST(92), + EXP_MEDIUM_FAST(93), + EXP_MEDIUM_FAST(94), + EXP_MEDIUM_FAST(95), + EXP_MEDIUM_FAST(96), + EXP_MEDIUM_FAST(97), + EXP_MEDIUM_FAST(98), + EXP_MEDIUM_FAST(99), + EXP_MEDIUM_FAST(100), + } +}; + +#endif //POKEEMERALD_EXPERIENCE_TABLES_H diff --git a/include/data/pokemon/item_effects.h b/include/data/pokemon/item_effects.h new file mode 100644 index 000000000..6ba0d694e --- /dev/null +++ b/include/data/pokemon/item_effects.h @@ -0,0 +1,241 @@ +#ifndef GUARD_ITEM_EFFECTS_H +#define GUARD_ITEM_EFFECTS_H + +const u8 gItemEffect_Potion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20}; +const u8 gItemEffect_Antidote[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00}; +const u8 gItemEffect_BurnHeal[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00}; +const u8 gItemEffect_IceHeal[] = {0x00, 0x00, 0x00, 0x04, 0x00, 0x00}; +const u8 gItemEffect_Awakening[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00}; +const u8 gItemEffect_ParalyzeHeal[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00}; +const u8 gItemEffect_FullRestore[] = {0x00, 0x00, 0x00, 0x3f, 0x04, 0x00, 0xff}; +const u8 gItemEffect_MaxPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff}; +const u8 gItemEffect_HyperPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 200}; +const u8 gItemEffect_SuperPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 50}; +const u8 gItemEffect_FullHeal[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00}; +const u8 gItemEffect_Revive[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xfe}; +const u8 gItemEffect_MaxRevive[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xff}; +const u8 gItemEffect_FreshWater[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 50}; +const u8 gItemEffect_SodaPop[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 60}; +const u8 gItemEffect_Lemonade[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 80}; +const u8 gItemEffect_MoomooMilk[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 100}; +const u8 gItemEffect_EnergyPowder[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 50, 0xfb, 0xfb, 0xf6}; +const u8 gItemEffect_EnergyRoot[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 200, 0xf6, 0xf6, 0xf1}; +const u8 gItemEffect_HealPowder[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0xe0, 0xfb, 0xfb, 0xf6}; +const u8 gItemEffect_RevivalHerb[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0xe0, 0xff, 0xf1, 0xf1, 0xec}; +const u8 gItemEffect_Ether[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a}; +const u8 gItemEffect_MaxEther[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7f}; +const u8 gItemEffect_Elixir[] = {0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a}; +const u8 gItemEffect_MaxElixir[] = {0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7f}; +const u8 gItemEffect_LavaCookie[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00}; +const u8 gItemEffect_BlueFlute[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00}; +const u8 gItemEffect_YellowFlute[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00}; +const u8 gItemEffect_RedFlute[] = {0x80, 0x00, 0x00, 0x00, 0x00, 0x00}; +const u8 gItemEffect_BerryJuice[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20}; +const u8 gItemEffect_SacredAsh[] = {0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0xff}; +const u8 gItemEffect_HPUp[] = {0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Protein[] = {0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Iron[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Carbos[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Calcium[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_RareCandy[] = {0x00, 0x00, 0x00, 0x40, 0x44, 0xe0, 253, 0x05, 0x03, 0x02}; +const u8 gItemEffect_PPUp[] = {0x00, 0x00, 0x00, 0x00, 0x20, 0xe0, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Zinc[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_PPMax[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x05, 0x03, 0x02}; +const u8 gItemEffect_GuardSpec[] = {0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_DireHit[] = {0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XAttack[] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XDefend[] = {0x00, 0x10, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XSpeed[] = {0x00, 0x01, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XAccuracy[] = {0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XSpecial[] = {0x00, 0x00, 0x01, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_SunStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_MoonStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_FireStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_ThunderStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_WaterStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_LeafStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_CheriBerry[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00}; +const u8 gItemEffect_ChestoBerry[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00}; +const u8 gItemEffect_PechaBerry[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00}; +const u8 gItemEffect_RawstBerry[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00}; +const u8 gItemEffect_AspearBerry[] = {0x00, 0x00, 0x00, 0x04, 0x00, 0x00}; +const u8 gItemEffect_LeppaBerry[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a}; +const u8 gItemEffect_OranBerry[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 10}; +const u8 gItemEffect_PersimBerry[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00}; +const u8 gItemEffect_LumBerry[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00}; +const u8 gItemEffect_SitrusBerry[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 30}; +const u8 gItemEffect_PomegBerry[] = {0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0xf6, 0x0a, 0x05, 0x02}; +const u8 gItemEffect_KelpsyBerry[] = {0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xf6, 0x0a, 0x05, 0x02}; +const u8 gItemEffect_QualotBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf6, 0x0a, 0x05, 0x02}; +const u8 gItemEffect_HondrewBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xf6, 0x0a, 0x05, 0x02}; +const u8 gItemEffect_GrepaBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xf6, 0x0a, 0x05, 0x02}; +const u8 gItemEffect_TamatoBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xf6, 0x0a, 0x05, 0x02}; + +const u8 *const gItemEffectTable[] = +{ + gItemEffect_Potion, + gItemEffect_Antidote, + gItemEffect_BurnHeal, + gItemEffect_IceHeal, + gItemEffect_Awakening, + gItemEffect_ParalyzeHeal, + gItemEffect_FullRestore, + gItemEffect_MaxPotion, + gItemEffect_HyperPotion, + gItemEffect_SuperPotion, + gItemEffect_FullHeal, + gItemEffect_Revive, + gItemEffect_MaxRevive, + gItemEffect_FreshWater, + gItemEffect_SodaPop, + gItemEffect_Lemonade, + gItemEffect_MoomooMilk, + gItemEffect_EnergyPowder, + gItemEffect_EnergyRoot, + gItemEffect_HealPowder, + gItemEffect_RevivalHerb, + gItemEffect_Ether, + gItemEffect_MaxEther, + gItemEffect_Elixir, + gItemEffect_MaxElixir, + gItemEffect_LavaCookie, + gItemEffect_BlueFlute, + gItemEffect_YellowFlute, + gItemEffect_RedFlute, + NULL, + NULL, + gItemEffect_BerryJuice, + gItemEffect_SacredAsh, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_HPUp, + gItemEffect_Protein, + gItemEffect_Iron, + gItemEffect_Carbos, + gItemEffect_Calcium, + gItemEffect_RareCandy, + gItemEffect_PPUp, + gItemEffect_Zinc, + gItemEffect_PPMax, + NULL, + gItemEffect_GuardSpec, + gItemEffect_DireHit, + gItemEffect_XAttack, + gItemEffect_XDefend, + gItemEffect_XSpeed, + gItemEffect_XAccuracy, + gItemEffect_XSpecial, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_SunStone, + gItemEffect_MoonStone, + gItemEffect_FireStone, + gItemEffect_ThunderStone, + gItemEffect_WaterStone, + gItemEffect_LeafStone, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_CheriBerry, + gItemEffect_ChestoBerry, + gItemEffect_PechaBerry, + gItemEffect_RawstBerry, + gItemEffect_AspearBerry, + gItemEffect_LeppaBerry, + gItemEffect_OranBerry, + gItemEffect_PersimBerry, + gItemEffect_LumBerry, + gItemEffect_SitrusBerry, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_PomegBerry, + gItemEffect_KelpsyBerry, + gItemEffect_QualotBerry, + gItemEffect_HondrewBerry, + gItemEffect_GrepaBerry, + gItemEffect_TamatoBerry, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +#endif //GUARD_ITEM_EFFECTS_H diff --git a/include/data/pokemon/level_up_learnset_pointers.h b/include/data/pokemon/level_up_learnset_pointers.h new file mode 100644 index 000000000..a56b1c09f --- /dev/null +++ b/include/data/pokemon/level_up_learnset_pointers.h @@ -0,0 +1,420 @@ +#ifndef POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H +#define POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H + +const u16 *const gLevelUpLearnsets[] = +{ + gBulbasaurLevelUpLearnset, + gBulbasaurLevelUpLearnset, + gIvysaurLevelUpLearnset, + gVenusaurLevelUpLearnset, + gCharmanderLevelUpLearnset, + gCharmeleonLevelUpLearnset, + gCharizardLevelUpLearnset, + gSquirtleLevelUpLearnset, + gWartortleLevelUpLearnset, + gBlastoiseLevelUpLearnset, + gCaterpieLevelUpLearnset, + gMetapodLevelUpLearnset, + gButterfreeLevelUpLearnset, + gWeedleLevelUpLearnset, + gKakunaLevelUpLearnset, + gBeedrillLevelUpLearnset, + gPidgeyLevelUpLearnset, + gPidgeottoLevelUpLearnset, + gPidgeotLevelUpLearnset, + gRattataLevelUpLearnset, + gRaticateLevelUpLearnset, + gSpearowLevelUpLearnset, + gFearowLevelUpLearnset, + gEkansLevelUpLearnset, + gArbokLevelUpLearnset, + gPikachuLevelUpLearnset, + gRaichuLevelUpLearnset, + gSandshrewLevelUpLearnset, + gSandslashLevelUpLearnset, + gNidoranFLevelUpLearnset, + gNidorinaLevelUpLearnset, + gNidoqueenLevelUpLearnset, + gNidoranMLevelUpLearnset, + gNidorinoLevelUpLearnset, + gNidokingLevelUpLearnset, + gClefairyLevelUpLearnset, + gClefableLevelUpLearnset, + gVulpixLevelUpLearnset, + gNinetalesLevelUpLearnset, + gJigglypuffLevelUpLearnset, + gWigglytuffLevelUpLearnset, + gZubatLevelUpLearnset, + gGolbatLevelUpLearnset, + gOddishLevelUpLearnset, + gGloomLevelUpLearnset, + gVileplumeLevelUpLearnset, + gParasLevelUpLearnset, + gParasectLevelUpLearnset, + gVenonatLevelUpLearnset, + gVenomothLevelUpLearnset, + gDiglettLevelUpLearnset, + gDugtrioLevelUpLearnset, + gMeowthLevelUpLearnset, + gPersianLevelUpLearnset, + gPsyduckLevelUpLearnset, + gGolduckLevelUpLearnset, + gMankeyLevelUpLearnset, + gPrimeapeLevelUpLearnset, + gGrowlitheLevelUpLearnset, + gArcanineLevelUpLearnset, + gPoliwagLevelUpLearnset, + gPoliwhirlLevelUpLearnset, + gPoliwrathLevelUpLearnset, + gAbraLevelUpLearnset, + gKadabraLevelUpLearnset, + gAlakazamLevelUpLearnset, + gMachopLevelUpLearnset, + gMachokeLevelUpLearnset, + gMachampLevelUpLearnset, + gBellsproutLevelUpLearnset, + gWeepinbellLevelUpLearnset, + gVictreebelLevelUpLearnset, + gTentacoolLevelUpLearnset, + gTentacruelLevelUpLearnset, + gGeodudeLevelUpLearnset, + gGravelerLevelUpLearnset, + gGolemLevelUpLearnset, + gPonytaLevelUpLearnset, + gRapidashLevelUpLearnset, + gSlowpokeLevelUpLearnset, + gSlowbroLevelUpLearnset, + gMagnemiteLevelUpLearnset, + gMagnetonLevelUpLearnset, + gFarfetchdLevelUpLearnset, + gDoduoLevelUpLearnset, + gDodrioLevelUpLearnset, + gSeelLevelUpLearnset, + gDewgongLevelUpLearnset, + gGrimerLevelUpLearnset, + gMukLevelUpLearnset, + gShellderLevelUpLearnset, + gCloysterLevelUpLearnset, + gGastlyLevelUpLearnset, + gHaunterLevelUpLearnset, + gGengarLevelUpLearnset, + gOnixLevelUpLearnset, + gDrowzeeLevelUpLearnset, + gHypnoLevelUpLearnset, + gKrabbyLevelUpLearnset, + gKinglerLevelUpLearnset, + gVoltorbLevelUpLearnset, + gElectrodeLevelUpLearnset, + gExeggcuteLevelUpLearnset, + gExeggutorLevelUpLearnset, + gCuboneLevelUpLearnset, + gMarowakLevelUpLearnset, + gHitmonleeLevelUpLearnset, + gHitmonchanLevelUpLearnset, + gLickitungLevelUpLearnset, + gKoffingLevelUpLearnset, + gWeezingLevelUpLearnset, + gRhyhornLevelUpLearnset, + gRhydonLevelUpLearnset, + gChanseyLevelUpLearnset, + gTangelaLevelUpLearnset, + gKangaskhanLevelUpLearnset, + gHorseaLevelUpLearnset, + gSeadraLevelUpLearnset, + gGoldeenLevelUpLearnset, + gSeakingLevelUpLearnset, + gStaryuLevelUpLearnset, + gStarmieLevelUpLearnset, + gMrmimeLevelUpLearnset, + gScytherLevelUpLearnset, + gJynxLevelUpLearnset, + gElectabuzzLevelUpLearnset, + gMagmarLevelUpLearnset, + gPinsirLevelUpLearnset, + gTaurosLevelUpLearnset, + gMagikarpLevelUpLearnset, + gGyaradosLevelUpLearnset, + gLaprasLevelUpLearnset, + gDittoLevelUpLearnset, + gEeveeLevelUpLearnset, + gVaporeonLevelUpLearnset, + gJolteonLevelUpLearnset, + gFlareonLevelUpLearnset, + gPorygonLevelUpLearnset, + gOmanyteLevelUpLearnset, + gOmastarLevelUpLearnset, + gKabutoLevelUpLearnset, + gKabutopsLevelUpLearnset, + gAerodactylLevelUpLearnset, + gSnorlaxLevelUpLearnset, + gArticunoLevelUpLearnset, + gZapdosLevelUpLearnset, + gMoltresLevelUpLearnset, + gDratiniLevelUpLearnset, + gDragonairLevelUpLearnset, + gDragoniteLevelUpLearnset, + gMewtwoLevelUpLearnset, + gMewLevelUpLearnset, + gChikoritaLevelUpLearnset, + gBayleefLevelUpLearnset, + gMeganiumLevelUpLearnset, + gCyndaquilLevelUpLearnset, + gQuilavaLevelUpLearnset, + gTyphlosionLevelUpLearnset, + gTotodileLevelUpLearnset, + gCroconawLevelUpLearnset, + gFeraligatrLevelUpLearnset, + gSentretLevelUpLearnset, + gFurretLevelUpLearnset, + gHoothootLevelUpLearnset, + gNoctowlLevelUpLearnset, + gLedybaLevelUpLearnset, + gLedianLevelUpLearnset, + gSpinarakLevelUpLearnset, + gAriadosLevelUpLearnset, + gCrobatLevelUpLearnset, + gChinchouLevelUpLearnset, + gLanturnLevelUpLearnset, + gPichuLevelUpLearnset, + gCleffaLevelUpLearnset, + gIgglybuffLevelUpLearnset, + gTogepiLevelUpLearnset, + gTogeticLevelUpLearnset, + gNatuLevelUpLearnset, + gXatuLevelUpLearnset, + gMareepLevelUpLearnset, + gFlaaffyLevelUpLearnset, + gAmpharosLevelUpLearnset, + gBellossomLevelUpLearnset, + gMarillLevelUpLearnset, + gAzumarillLevelUpLearnset, + gSudowoodoLevelUpLearnset, + gPolitoedLevelUpLearnset, + gHoppipLevelUpLearnset, + gSkiploomLevelUpLearnset, + gJumpluffLevelUpLearnset, + gAipomLevelUpLearnset, + gSunkernLevelUpLearnset, + gSunfloraLevelUpLearnset, + gYanmaLevelUpLearnset, + gWooperLevelUpLearnset, + gQuagsireLevelUpLearnset, + gEspeonLevelUpLearnset, + gUmbreonLevelUpLearnset, + gMurkrowLevelUpLearnset, + gSlowkingLevelUpLearnset, + gMisdreavusLevelUpLearnset, + gUnownLevelUpLearnset, + gWobbuffetLevelUpLearnset, + gGirafarigLevelUpLearnset, + gPinecoLevelUpLearnset, + gForretressLevelUpLearnset, + gDunsparceLevelUpLearnset, + gGligarLevelUpLearnset, + gSteelixLevelUpLearnset, + gSnubbullLevelUpLearnset, + gGranbullLevelUpLearnset, + gQwilfishLevelUpLearnset, + gScizorLevelUpLearnset, + gShuckleLevelUpLearnset, + gHeracrossLevelUpLearnset, + gSneaselLevelUpLearnset, + gTeddiursaLevelUpLearnset, + gUrsaringLevelUpLearnset, + gSlugmaLevelUpLearnset, + gMagcargoLevelUpLearnset, + gSwinubLevelUpLearnset, + gPiloswineLevelUpLearnset, + gCorsolaLevelUpLearnset, + gRemoraidLevelUpLearnset, + gOctilleryLevelUpLearnset, + gDelibirdLevelUpLearnset, + gMantineLevelUpLearnset, + gSkarmoryLevelUpLearnset, + gHoundourLevelUpLearnset, + gHoundoomLevelUpLearnset, + gKingdraLevelUpLearnset, + gPhanpyLevelUpLearnset, + gDonphanLevelUpLearnset, + gPorygon2LevelUpLearnset, + gStantlerLevelUpLearnset, + gSmeargleLevelUpLearnset, + gTyrogueLevelUpLearnset, + gHitmontopLevelUpLearnset, + gSmoochumLevelUpLearnset, + gElekidLevelUpLearnset, + gMagbyLevelUpLearnset, + gMiltankLevelUpLearnset, + gBlisseyLevelUpLearnset, + gRaikouLevelUpLearnset, + gEnteiLevelUpLearnset, + gSuicuneLevelUpLearnset, + gLarvitarLevelUpLearnset, + gPupitarLevelUpLearnset, + gTyranitarLevelUpLearnset, + gLugiaLevelUpLearnset, + gHoOhLevelUpLearnset, + gCelebiLevelUpLearnset, + gSpecies252LevelUpLearnset, + gSpecies253LevelUpLearnset, + gSpecies254LevelUpLearnset, + gSpecies255LevelUpLearnset, + gSpecies256LevelUpLearnset, + gSpecies257LevelUpLearnset, + gSpecies258LevelUpLearnset, + gSpecies259LevelUpLearnset, + gSpecies260LevelUpLearnset, + gSpecies261LevelUpLearnset, + gSpecies262LevelUpLearnset, + gSpecies263LevelUpLearnset, + gSpecies264LevelUpLearnset, + gSpecies265LevelUpLearnset, + gSpecies266LevelUpLearnset, + gSpecies267LevelUpLearnset, + gSpecies268LevelUpLearnset, + gSpecies269LevelUpLearnset, + gSpecies270LevelUpLearnset, + gSpecies271LevelUpLearnset, + gSpecies272LevelUpLearnset, + gSpecies273LevelUpLearnset, + gSpecies274LevelUpLearnset, + gSpecies275LevelUpLearnset, + gSpecies276LevelUpLearnset, + gTreeckoLevelUpLearnset, + gGrovyleLevelUpLearnset, + gSceptileLevelUpLearnset, + gTorchicLevelUpLearnset, + gCombuskenLevelUpLearnset, + gBlazikenLevelUpLearnset, + gMudkipLevelUpLearnset, + gMarshtompLevelUpLearnset, + gSwampertLevelUpLearnset, + gPoochyenaLevelUpLearnset, + gMightyenaLevelUpLearnset, + gZigzagoonLevelUpLearnset, + gLinooneLevelUpLearnset, + gWurmpleLevelUpLearnset, + gSilcoonLevelUpLearnset, + gBeautiflyLevelUpLearnset, + gCascoonLevelUpLearnset, + gDustoxLevelUpLearnset, + gLotadLevelUpLearnset, + gLombreLevelUpLearnset, + gLudicoloLevelUpLearnset, + gSeedotLevelUpLearnset, + gNuzleafLevelUpLearnset, + gShiftryLevelUpLearnset, + gNincadaLevelUpLearnset, + gNinjaskLevelUpLearnset, + gShedinjaLevelUpLearnset, + gTaillowLevelUpLearnset, + gSwellowLevelUpLearnset, + gShroomishLevelUpLearnset, + gBreloomLevelUpLearnset, + gSpindaLevelUpLearnset, + gWingullLevelUpLearnset, + gPelipperLevelUpLearnset, + gSurskitLevelUpLearnset, + gMasquerainLevelUpLearnset, + gWailmerLevelUpLearnset, + gWailordLevelUpLearnset, + gSkittyLevelUpLearnset, + gDelcattyLevelUpLearnset, + gKecleonLevelUpLearnset, + gBaltoyLevelUpLearnset, + gClaydolLevelUpLearnset, + gNosepassLevelUpLearnset, + gTorkoalLevelUpLearnset, + gSableyeLevelUpLearnset, + gBarboachLevelUpLearnset, + gWhiscashLevelUpLearnset, + gLuvdiscLevelUpLearnset, + gCorphishLevelUpLearnset, + gCrawdauntLevelUpLearnset, + gFeebasLevelUpLearnset, + gMiloticLevelUpLearnset, + gCarvanhaLevelUpLearnset, + gSharpedoLevelUpLearnset, + gTrapinchLevelUpLearnset, + gVibravaLevelUpLearnset, + gFlygonLevelUpLearnset, + gMakuhitaLevelUpLearnset, + gHariyamaLevelUpLearnset, + gElectrikeLevelUpLearnset, + gManectricLevelUpLearnset, + gNumelLevelUpLearnset, + gCameruptLevelUpLearnset, + gSphealLevelUpLearnset, + gSealeoLevelUpLearnset, + gWalreinLevelUpLearnset, + gCacneaLevelUpLearnset, + gCacturneLevelUpLearnset, + gSnoruntLevelUpLearnset, + gGlalieLevelUpLearnset, + gLunatoneLevelUpLearnset, + gSolrockLevelUpLearnset, + gAzurillLevelUpLearnset, + gSpoinkLevelUpLearnset, + gGrumpigLevelUpLearnset, + gPlusleLevelUpLearnset, + gMinunLevelUpLearnset, + gMawileLevelUpLearnset, + gMedititeLevelUpLearnset, + gMedichamLevelUpLearnset, + gSwabluLevelUpLearnset, + gAltariaLevelUpLearnset, + gWynautLevelUpLearnset, + gDuskullLevelUpLearnset, + gDusclopsLevelUpLearnset, + gRoseliaLevelUpLearnset, + gSlakothLevelUpLearnset, + gVigorothLevelUpLearnset, + gSlakingLevelUpLearnset, + gGulpinLevelUpLearnset, + gSwalotLevelUpLearnset, + gTropiusLevelUpLearnset, + gWhismurLevelUpLearnset, + gLoudredLevelUpLearnset, + gExploudLevelUpLearnset, + gClamperlLevelUpLearnset, + gHuntailLevelUpLearnset, + gGorebyssLevelUpLearnset, + gAbsolLevelUpLearnset, + gShuppetLevelUpLearnset, + gBanetteLevelUpLearnset, + gSeviperLevelUpLearnset, + gZangooseLevelUpLearnset, + gRelicanthLevelUpLearnset, + gAronLevelUpLearnset, + gLaironLevelUpLearnset, + gAggronLevelUpLearnset, + gCastformLevelUpLearnset, + gVolbeatLevelUpLearnset, + gIllumiseLevelUpLearnset, + gLileepLevelUpLearnset, + gCradilyLevelUpLearnset, + gAnorithLevelUpLearnset, + gArmaldoLevelUpLearnset, + gRaltsLevelUpLearnset, + gKirliaLevelUpLearnset, + gGardevoirLevelUpLearnset, + gBagonLevelUpLearnset, + gShelgonLevelUpLearnset, + gSalamenceLevelUpLearnset, + gBeldumLevelUpLearnset, + gMetangLevelUpLearnset, + gMetagrossLevelUpLearnset, + gRegirockLevelUpLearnset, + gRegiceLevelUpLearnset, + gRegisteelLevelUpLearnset, + gKyogreLevelUpLearnset, + gGroudonLevelUpLearnset, + gRayquazaLevelUpLearnset, + gLatiasLevelUpLearnset, + gLatiosLevelUpLearnset, + gJirachiLevelUpLearnset, + gDeoxysLevelUpLearnset, + gChimechoLevelUpLearnset +}; + +#endif //POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H diff --git a/include/data/pokemon/level_up_learnsets.h b/include/data/pokemon/level_up_learnsets.h new file mode 100644 index 000000000..4035dc66a --- /dev/null +++ b/include/data/pokemon/level_up_learnsets.h @@ -0,0 +1,5623 @@ +#ifndef POKEEMERALD_LEVEL_UP_LEARNSETS_H +#define POKEEMERALD_LEVEL_UP_LEARNSETS_H + +#define LEVEL_UP_MOVE(lvl, move) ((lvl << 9) | move) +#define LEVEL_UP_END 0xffff + +const u16 gBulbasaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(20, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(25, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(32, MOVE_GROWTH), + LEVEL_UP_MOVE(39, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(46, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gIvysaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(29, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(38, MOVE_GROWTH), + LEVEL_UP_MOVE(47, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(56, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gVenusaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(29, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(41, MOVE_GROWTH), + LEVEL_UP_MOVE(53, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gCharmanderLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(19, MOVE_RAGE), + LEVEL_UP_MOVE(25, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(31, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(49, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +const u16 gCharmeleonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(20, MOVE_RAGE), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(41, MOVE_SLASH), + LEVEL_UP_MOVE(48, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(55, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +const u16 gCharizardLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(20, MOVE_RAGE), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(36, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(44, MOVE_SLASH), + LEVEL_UP_MOVE(54, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(64, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +const u16 gSquirtleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(18, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(28, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(40, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(47, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gWartortleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(45, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(53, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gBlastoiseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(42, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(55, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(68, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gCaterpieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_END +}; + +const u16 gMetapodLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_END +}; + +const u16 gButterfreeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(14, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(23, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(28, MOVE_GUST), + LEVEL_UP_MOVE(34, MOVE_PSYBEAM), + LEVEL_UP_MOVE(40, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(47, MOVE_SILVER_WIND), + LEVEL_UP_END +}; + +const u16 gWeedleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_END +}; + +const u16 gKakunaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_END +}; + +const u16 gBeedrillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(10, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(15, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(20, MOVE_TWINEEDLE), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(30, MOVE_PURSUIT), + LEVEL_UP_MOVE(35, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gPidgeyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_GUST), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(19, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(25, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(31, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(39, MOVE_AGILITY), + LEVEL_UP_MOVE(47, MOVE_MIRROR_MOVE), + LEVEL_UP_END +}; + +const u16 gPidgeottoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_GUST), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(27, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(34, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_MOVE(52, MOVE_MIRROR_MOVE), + LEVEL_UP_END +}; + +const u16 gPidgeotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_GUST), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(27, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(34, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(48, MOVE_AGILITY), + LEVEL_UP_MOVE(62, MOVE_MIRROR_MOVE), + LEVEL_UP_END +}; + +const u16 gRattataLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HYPER_FANG), + LEVEL_UP_MOVE(20, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(27, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_SUPER_FANG), + LEVEL_UP_MOVE(41, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gRaticateLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HYPER_FANG), + LEVEL_UP_MOVE(20, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(30, MOVE_PURSUIT), + LEVEL_UP_MOVE(40, MOVE_SUPER_FANG), + LEVEL_UP_MOVE(50, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gSpearowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(19, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(31, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(37, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gFearowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(26, MOVE_PURSUIT), + LEVEL_UP_MOVE(32, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(40, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gEkansLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 8, MOVE_POISON_STING), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_GLARE), + LEVEL_UP_MOVE(25, MOVE_SCREECH), + LEVEL_UP_MOVE(32, MOVE_ACID), + LEVEL_UP_MOVE(37, MOVE_STOCKPILE), + LEVEL_UP_MOVE(37, MOVE_SWALLOW), + LEVEL_UP_MOVE(37, MOVE_SPIT_UP), + LEVEL_UP_MOVE(44, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gArbokLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 8, MOVE_POISON_STING), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_GLARE), + LEVEL_UP_MOVE(28, MOVE_SCREECH), + LEVEL_UP_MOVE(38, MOVE_ACID), + LEVEL_UP_MOVE(46, MOVE_STOCKPILE), + LEVEL_UP_MOVE(46, MOVE_SWALLOW), + LEVEL_UP_MOVE(46, MOVE_SPIT_UP), + LEVEL_UP_MOVE(56, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gPikachuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(15, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(20, MOVE_SLAM), + LEVEL_UP_MOVE(26, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(33, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_THUNDER), + LEVEL_UP_MOVE(50, MOVE_LIGHT_SCREEN), + LEVEL_UP_END +}; + +const u16 gRaichuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_THUNDERBOLT), + LEVEL_UP_END +}; + +const u16 gSandshrewLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 6, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(11, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(23, MOVE_SLASH), + LEVEL_UP_MOVE(30, MOVE_SWIFT), + LEVEL_UP_MOVE(37, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(45, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(53, MOVE_SANDSTORM), + LEVEL_UP_END +}; + +const u16 gSandslashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(11, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(24, MOVE_SLASH), + LEVEL_UP_MOVE(33, MOVE_SWIFT), + LEVEL_UP_MOVE(42, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(52, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(62, MOVE_SANDSTORM), + LEVEL_UP_END +}; + +const u16 gNidoranFLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 8, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(20, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(30, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(38, MOVE_FLATTER), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gNidorinaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 8, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(18, MOVE_POISON_STING), + LEVEL_UP_MOVE(22, MOVE_BITE), + LEVEL_UP_MOVE(26, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(34, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(43, MOVE_FLATTER), + LEVEL_UP_MOVE(53, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gNidoqueenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE(23, MOVE_BODY_SLAM), + LEVEL_UP_END +}; + +const u16 gNidoranMLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(20, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(23, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(30, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(38, MOVE_FLATTER), + LEVEL_UP_MOVE(47, MOVE_HORN_DRILL), + LEVEL_UP_END +}; + +const u16 gNidorinoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(18, MOVE_POISON_STING), + LEVEL_UP_MOVE(22, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(26, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(34, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(43, MOVE_FLATTER), + LEVEL_UP_MOVE(53, MOVE_HORN_DRILL), + LEVEL_UP_END +}; + +const u16 gNidokingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE(23, MOVE_THRASH), + LEVEL_UP_END +}; + +const u16 gClefairyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_ENCORE), + LEVEL_UP_MOVE( 9, MOVE_SING), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(17, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(21, MOVE_MINIMIZE), + LEVEL_UP_MOVE(25, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(29, MOVE_METRONOME), + LEVEL_UP_MOVE(33, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(37, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(45, MOVE_METEOR_MASH), + LEVEL_UP_END +}; + +const u16 gClefableLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_MINIMIZE), + LEVEL_UP_MOVE( 1, MOVE_METRONOME), + LEVEL_UP_END +}; + +const u16 gVulpixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_ROAR), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(21, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(25, MOVE_IMPRISON), + LEVEL_UP_MOVE(29, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(33, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(37, MOVE_GRUDGE), + LEVEL_UP_MOVE(41, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +const u16 gNinetalesLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(45, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +const u16 gJigglypuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9, MOVE_POUND), + LEVEL_UP_MOVE(14, MOVE_DISABLE), + LEVEL_UP_MOVE(19, MOVE_ROLLOUT), + LEVEL_UP_MOVE(24, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(34, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(39, MOVE_MIMIC), + LEVEL_UP_MOVE(44, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gWigglytuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_END +}; + +const u16 gZubatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(26, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(31, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(36, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(41, MOVE_POISON_FANG), + LEVEL_UP_MOVE(46, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gGolbatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(35, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_POISON_FANG), + LEVEL_UP_MOVE(56, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gOddishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 7, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(14, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(16, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(18, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(23, MOVE_ACID), + LEVEL_UP_MOVE(32, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(39, MOVE_PETAL_DANCE), + LEVEL_UP_END +}; + +const u16 gGloomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 7, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(14, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(16, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(18, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(24, MOVE_ACID), + LEVEL_UP_MOVE(35, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), + LEVEL_UP_END +}; + +const u16 gVileplumeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), + LEVEL_UP_END +}; + +const u16 gParasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(25, MOVE_SPORE), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(37, MOVE_GROWTH), + LEVEL_UP_MOVE(43, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(49, MOVE_AROMATHERAPY), + LEVEL_UP_END +}; + +const u16 gParasectLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(27, MOVE_SPORE), + LEVEL_UP_MOVE(35, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_GROWTH), + LEVEL_UP_MOVE(51, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(59, MOVE_AROMATHERAPY), + LEVEL_UP_END +}; + +const u16 gVenonatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(17, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(28, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(33, MOVE_PSYBEAM), + LEVEL_UP_MOVE(36, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(41, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gVenomothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SILVER_WIND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(17, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(28, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(31, MOVE_GUST), + LEVEL_UP_MOVE(36, MOVE_PSYBEAM), + LEVEL_UP_MOVE(42, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(52, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gDiglettLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(17, MOVE_DIG), + LEVEL_UP_MOVE(25, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(33, MOVE_SLASH), + LEVEL_UP_MOVE(41, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(49, MOVE_FISSURE), + LEVEL_UP_END +}; + +const u16 gDugtrioLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(17, MOVE_DIG), + LEVEL_UP_MOVE(25, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(26, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(38, MOVE_SLASH), + LEVEL_UP_MOVE(51, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(64, MOVE_FISSURE), + LEVEL_UP_END +}; + +const u16 gMeowthLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_PAY_DAY), + LEVEL_UP_MOVE(28, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(35, MOVE_SCREECH), + LEVEL_UP_MOVE(41, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(46, MOVE_SLASH), + LEVEL_UP_MOVE(50, MOVE_FAKE_OUT), + LEVEL_UP_END +}; + +const u16 gPersianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_PAY_DAY), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(38, MOVE_SCREECH), + LEVEL_UP_MOVE(46, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(53, MOVE_SLASH), + LEVEL_UP_MOVE(59, MOVE_FAKE_OUT), + LEVEL_UP_END +}; + +const u16 gPsyduckLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(40, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gGolduckLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(44, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gMankeyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 9, MOVE_LOW_KICK), + LEVEL_UP_MOVE(15, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(21, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(27, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(33, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(39, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(45, MOVE_SCREECH), + LEVEL_UP_MOVE(51, MOVE_THRASH), + LEVEL_UP_END +}; + +const u16 gPrimeapeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 9, MOVE_LOW_KICK), + LEVEL_UP_MOVE(15, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(21, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(27, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(28, MOVE_RAGE), + LEVEL_UP_MOVE(36, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(45, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(54, MOVE_SCREECH), + LEVEL_UP_MOVE(63, MOVE_THRASH), + LEVEL_UP_END +}; + +const u16 gGrowlitheLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_ROAR), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(19, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(37, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +const u16 gArcanineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_ROAR), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(49, MOVE_EXTREME_SPEED), + LEVEL_UP_END +}; + +const u16 gPoliwagLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 7, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(25, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gPoliwhirlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(27, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(35, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(43, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gPoliwrathLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_SUBMISSION), + LEVEL_UP_MOVE(35, MOVE_SUBMISSION), + LEVEL_UP_MOVE(51, MOVE_MIND_READER), + LEVEL_UP_END +}; + +const u16 gAbraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_END +}; + +const u16 gKadabraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_KINESIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(18, MOVE_DISABLE), + LEVEL_UP_MOVE(21, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_RECOVER), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(33, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_TRICK), + LEVEL_UP_END +}; + +const u16 gAlakazamLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_KINESIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(18, MOVE_DISABLE), + LEVEL_UP_MOVE(21, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_RECOVER), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(33, MOVE_CALM_MIND), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_TRICK), + LEVEL_UP_END +}; + +const u16 gMachopLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(22, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(31, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(37, MOVE_SUBMISSION), + LEVEL_UP_MOVE(40, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(43, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(49, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; + +const u16 gMachokeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(22, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(33, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(41, MOVE_SUBMISSION), + LEVEL_UP_MOVE(46, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(51, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(59, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; + +const u16 gMachampLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(22, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(33, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(41, MOVE_SUBMISSION), + LEVEL_UP_MOVE(46, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(51, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(59, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; + +const u16 gBellsproutLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(11, MOVE_WRAP), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(17, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(23, MOVE_ACID), + LEVEL_UP_MOVE(30, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(37, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(45, MOVE_SLAM), + LEVEL_UP_END +}; + +const u16 gWeepinbellLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(11, MOVE_WRAP), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(17, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(24, MOVE_ACID), + LEVEL_UP_MOVE(33, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(42, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(54, MOVE_SLAM), + LEVEL_UP_END +}; + +const u16 gVictreebelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 1, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_END +}; + +const u16 gTentacoolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(12, MOVE_CONSTRICT), + LEVEL_UP_MOVE(19, MOVE_ACID), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(30, MOVE_WRAP), + LEVEL_UP_MOVE(36, MOVE_BARRIER), + LEVEL_UP_MOVE(43, MOVE_SCREECH), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gTentacruelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(12, MOVE_CONSTRICT), + LEVEL_UP_MOVE(19, MOVE_ACID), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(30, MOVE_WRAP), + LEVEL_UP_MOVE(38, MOVE_BARRIER), + LEVEL_UP_MOVE(47, MOVE_SCREECH), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gGeodudeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(26, MOVE_ROLLOUT), + LEVEL_UP_MOVE(31, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gGravelerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_EXPLOSION), + LEVEL_UP_MOVE(62, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gGolemLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_EXPLOSION), + LEVEL_UP_MOVE(62, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gPonytaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(14, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_BOUNCE), + LEVEL_UP_MOVE(53, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +const u16 gRapidashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(14, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(40, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(50, MOVE_BOUNCE), + LEVEL_UP_MOVE(63, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +const u16 gSlowpokeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE(15, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(34, MOVE_HEADBUTT), + LEVEL_UP_MOVE(43, MOVE_AMNESIA), + LEVEL_UP_MOVE(48, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gSlowbroLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE(15, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(34, MOVE_HEADBUTT), + LEVEL_UP_MOVE(37, MOVE_WITHDRAW), + LEVEL_UP_MOVE(46, MOVE_AMNESIA), + LEVEL_UP_MOVE(54, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gMagnemiteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_METAL_SOUND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(11, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(16, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(26, MOVE_SPARK), + LEVEL_UP_MOVE(32, MOVE_LOCK_ON), + LEVEL_UP_MOVE(38, MOVE_SWIFT), + LEVEL_UP_MOVE(44, MOVE_SCREECH), + LEVEL_UP_MOVE(50, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +const u16 gMagnetonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_METAL_SOUND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 6, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(11, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(16, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(26, MOVE_SPARK), + LEVEL_UP_MOVE(35, MOVE_LOCK_ON), + LEVEL_UP_MOVE(44, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(53, MOVE_SCREECH), + LEVEL_UP_MOVE(62, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +const u16 gFarfetchdLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(11, MOVE_LEER), + LEVEL_UP_MOVE(16, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(26, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(31, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_SLASH), + LEVEL_UP_MOVE(46, MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +const u16 gDoduoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_PURSUIT), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_UPROAR), + LEVEL_UP_MOVE(37, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(45, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gDodrioLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PURSUIT), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_PURSUIT), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(38, MOVE_UPROAR), + LEVEL_UP_MOVE(47, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(60, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gSeelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 9, MOVE_GROWL), + LEVEL_UP_MOVE(17, MOVE_ICY_WIND), + LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(49, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +const u16 gDewgongLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), + LEVEL_UP_MOVE( 1, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 9, MOVE_GROWL), + LEVEL_UP_MOVE(17, MOVE_ICY_WIND), + LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(34, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(51, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(64, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +const u16 gGrimerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_DISABLE), + LEVEL_UP_MOVE(13, MOVE_SLUDGE), + LEVEL_UP_MOVE(19, MOVE_MINIMIZE), + LEVEL_UP_MOVE(26, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(43, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(53, MOVE_MEMENTO), + LEVEL_UP_END +}; + +const u16 gMukLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_DISABLE), + LEVEL_UP_MOVE(13, MOVE_SLUDGE), + LEVEL_UP_MOVE(19, MOVE_MINIMIZE), + LEVEL_UP_MOVE(26, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(47, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(61, MOVE_MEMENTO), + LEVEL_UP_END +}; + +const u16 gShellderLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(17, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_LEER), + LEVEL_UP_MOVE(41, MOVE_CLAMP), + LEVEL_UP_MOVE(49, MOVE_ICE_BEAM), + LEVEL_UP_END +}; + +const u16 gCloysterLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_SPIKES), + LEVEL_UP_MOVE(41, MOVE_SPIKE_CANNON), + LEVEL_UP_END +}; + +const u16 gGastlyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 8, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(33, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(36, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +const u16 gHaunterLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 8, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(25, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(39, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(48, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +const u16 gGengarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 8, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(25, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(39, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(48, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +const u16 gOnixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 9, MOVE_BIND), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(21, MOVE_HARDEN), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_SLAM), + LEVEL_UP_MOVE(45, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(49, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gDrowzeeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(18, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_HEADBUTT), + LEVEL_UP_MOVE(31, MOVE_POISON_GAS), + LEVEL_UP_MOVE(36, MOVE_MEDITATE), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(45, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +const u16 gHypnoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(18, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_HEADBUTT), + LEVEL_UP_MOVE(33, MOVE_POISON_GAS), + LEVEL_UP_MOVE(40, MOVE_MEDITATE), + LEVEL_UP_MOVE(49, MOVE_PSYCHIC), + LEVEL_UP_MOVE(55, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(60, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +const u16 gKrabbyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(16, MOVE_HARDEN), + LEVEL_UP_MOVE(23, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(27, MOVE_STOMP), + LEVEL_UP_MOVE(34, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(41, MOVE_PROTECT), + LEVEL_UP_MOVE(45, MOVE_CRABHAMMER), + LEVEL_UP_END +}; + +const u16 gKinglerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(16, MOVE_HARDEN), + LEVEL_UP_MOVE(23, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(27, MOVE_STOMP), + LEVEL_UP_MOVE(38, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(49, MOVE_PROTECT), + LEVEL_UP_MOVE(57, MOVE_CRABHAMMER), + LEVEL_UP_END +}; + +const u16 gVoltorbLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(15, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_SPARK), + LEVEL_UP_MOVE(27, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(32, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(42, MOVE_SWIFT), + LEVEL_UP_MOVE(46, MOVE_EXPLOSION), + LEVEL_UP_MOVE(49, MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +const u16 gElectrodeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(15, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_SPARK), + LEVEL_UP_MOVE(27, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(34, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(48, MOVE_SWIFT), + LEVEL_UP_MOVE(54, MOVE_EXPLOSION), + LEVEL_UP_MOVE(59, MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +const u16 gExeggcuteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BARRAGE), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7, MOVE_REFLECT), + LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(19, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(31, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(37, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(43, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gExeggutorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BARRAGE), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(31, MOVE_EGG_BOMB), + LEVEL_UP_END +}; + +const u16 gCuboneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_BONE_CLUB), + LEVEL_UP_MOVE(13, MOVE_HEADBUTT), + LEVEL_UP_MOVE(17, MOVE_LEER), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_BONEMERANG), + LEVEL_UP_MOVE(29, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(37, MOVE_THRASH), + LEVEL_UP_MOVE(41, MOVE_BONE_RUSH), + LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gMarowakLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_BONE_CLUB), + LEVEL_UP_MOVE(13, MOVE_HEADBUTT), + LEVEL_UP_MOVE(17, MOVE_LEER), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_BONEMERANG), + LEVEL_UP_MOVE(32, MOVE_RAGE), + LEVEL_UP_MOVE(39, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(46, MOVE_THRASH), + LEVEL_UP_MOVE(53, MOVE_BONE_RUSH), + LEVEL_UP_MOVE(61, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gHitmonleeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 6, MOVE_MEDITATE), + LEVEL_UP_MOVE(11, MOVE_ROLLING_KICK), + LEVEL_UP_MOVE(16, MOVE_JUMP_KICK), + LEVEL_UP_MOVE(20, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(26, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(31, MOVE_MIND_READER), + LEVEL_UP_MOVE(36, MOVE_FORESIGHT), + LEVEL_UP_MOVE(41, MOVE_ENDURE), + LEVEL_UP_MOVE(46, MOVE_MEGA_KICK), + LEVEL_UP_MOVE(51, MOVE_REVERSAL), + LEVEL_UP_END +}; + +const u16 gHitmonchanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE( 7, MOVE_AGILITY), + LEVEL_UP_MOVE(13, MOVE_PURSUIT), + LEVEL_UP_MOVE(20, MOVE_MACH_PUNCH), + LEVEL_UP_MOVE(26, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(26, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE(26, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(32, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(38, MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE(44, MOVE_DETECT), + LEVEL_UP_MOVE(50, MOVE_COUNTER), + LEVEL_UP_END +}; + +const u16 gLickitungLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(12, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(18, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(23, MOVE_STOMP), + LEVEL_UP_MOVE(29, MOVE_WRAP), + LEVEL_UP_MOVE(34, MOVE_DISABLE), + LEVEL_UP_MOVE(40, MOVE_SLAM), + LEVEL_UP_MOVE(45, MOVE_SCREECH), + LEVEL_UP_MOVE(51, MOVE_REFRESH), + LEVEL_UP_END +}; + +const u16 gKoffingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 9, MOVE_SMOG), + LEVEL_UP_MOVE(17, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(21, MOVE_SLUDGE), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(33, MOVE_HAZE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(45, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE(49, MOVE_MEMENTO), + LEVEL_UP_END +}; + +const u16 gWeezingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE( 9, MOVE_SMOG), + LEVEL_UP_MOVE(17, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(21, MOVE_SLUDGE), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(33, MOVE_HAZE), + LEVEL_UP_MOVE(44, MOVE_EXPLOSION), + LEVEL_UP_MOVE(51, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE(58, MOVE_MEMENTO), + LEVEL_UP_END +}; + +const u16 gRhyhornLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_STOMP), + LEVEL_UP_MOVE(15, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(24, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(38, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(57, MOVE_MEGAHORN), + LEVEL_UP_END +}; + +const u16 gRhydonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_STOMP), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(10, MOVE_STOMP), + LEVEL_UP_MOVE(15, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(24, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(38, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(46, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(58, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(66, MOVE_MEGAHORN), + LEVEL_UP_END +}; + +const u16 gChanseyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_REFRESH), + LEVEL_UP_MOVE(13, MOVE_SOFT_BOILED), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(23, MOVE_MINIMIZE), + LEVEL_UP_MOVE(29, MOVE_SING), + LEVEL_UP_MOVE(35, MOVE_EGG_BOMB), + LEVEL_UP_MOVE(41, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(49, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gTangelaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_INGRAIN), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 4, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(10, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_GROWTH), + LEVEL_UP_MOVE(19, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(22, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(28, MOVE_BIND), + LEVEL_UP_MOVE(31, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(37, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(40, MOVE_SLAM), + LEVEL_UP_MOVE(46, MOVE_TICKLE), + LEVEL_UP_END +}; + +const u16 gKangaskhanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE(31, MOVE_RAGE), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(43, MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE(49, MOVE_REVERSAL), + LEVEL_UP_END +}; + +const u16 gHorseaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(15, MOVE_LEER), + LEVEL_UP_MOVE(22, MOVE_WATER_GUN), + LEVEL_UP_MOVE(29, MOVE_TWISTER), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +const u16 gSeadraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(15, MOVE_LEER), + LEVEL_UP_MOVE(22, MOVE_WATER_GUN), + LEVEL_UP_MOVE(29, MOVE_TWISTER), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(62, MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +const u16 gGoldeenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(10, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(24, MOVE_FLAIL), + LEVEL_UP_MOVE(29, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(38, MOVE_WATERFALL), + LEVEL_UP_MOVE(43, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(52, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gSeakingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(10, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(24, MOVE_FLAIL), + LEVEL_UP_MOVE(29, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(41, MOVE_WATERFALL), + LEVEL_UP_MOVE(49, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(61, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gStaryuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 6, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(15, MOVE_RECOVER), + LEVEL_UP_MOVE(19, MOVE_CAMOUFLAGE), + LEVEL_UP_MOVE(24, MOVE_SWIFT), + LEVEL_UP_MOVE(28, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(33, MOVE_MINIMIZE), + LEVEL_UP_MOVE(37, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(42, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gStarmieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 1, MOVE_RECOVER), + LEVEL_UP_MOVE( 1, MOVE_SWIFT), + LEVEL_UP_MOVE(33, MOVE_CONFUSE_RAY), + LEVEL_UP_END +}; + +const u16 gMrmimeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BARRIER), + LEVEL_UP_MOVE( 5, MOVE_CONFUSION), + LEVEL_UP_MOVE( 9, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(13, MOVE_MEDITATE), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(21, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(21, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_ENCORE), + LEVEL_UP_MOVE(29, MOVE_PSYBEAM), + LEVEL_UP_MOVE(33, MOVE_RECYCLE), + LEVEL_UP_MOVE(37, MOVE_TRICK), + LEVEL_UP_MOVE(41, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE(45, MOVE_PSYCHIC), + LEVEL_UP_MOVE(49, MOVE_BATON_PASS), + LEVEL_UP_MOVE(53, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +const u16 gScytherLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(11, MOVE_PURSUIT), + LEVEL_UP_MOVE(16, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(21, MOVE_AGILITY), + LEVEL_UP_MOVE(26, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), + LEVEL_UP_END +}; + +const u16 gJynxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_LOVELY_KISS), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 9, MOVE_LOVELY_KISS), + LEVEL_UP_MOVE(13, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(21, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(25, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE(35, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(41, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(51, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(57, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(67, MOVE_BLIZZARD), + LEVEL_UP_END +}; + +const u16 gElectabuzzLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(17, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(25, MOVE_SWIFT), + LEVEL_UP_MOVE(36, MOVE_SCREECH), + LEVEL_UP_MOVE(47, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(58, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gMagmarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(33, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(41, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(57, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +const u16 gPinsirLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_BIND), + LEVEL_UP_MOVE(13, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(19, MOVE_HARDEN), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(31, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(37, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(43, MOVE_SUBMISSION), + LEVEL_UP_MOVE(49, MOVE_SWORDS_DANCE), + LEVEL_UP_END +}; + +const u16 gTaurosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(19, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(26, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_THRASH), + LEVEL_UP_MOVE(53, MOVE_TAKE_DOWN), + LEVEL_UP_END +}; + +const u16 gMagikarpLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE(15, MOVE_TACKLE), + LEVEL_UP_MOVE(30, MOVE_FLAIL), + LEVEL_UP_END +}; + +const u16 gGyaradosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THRASH), + LEVEL_UP_MOVE(20, MOVE_BITE), + LEVEL_UP_MOVE(25, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(30, MOVE_LEER), + LEVEL_UP_MOVE(35, MOVE_TWISTER), + LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(55, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gLaprasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 7, MOVE_MIST), + LEVEL_UP_MOVE(13, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(19, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(25, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(31, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(55, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +const u16 gDittoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TRANSFORM), + LEVEL_UP_END +}; + +const u16 gEeveeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_GROWL), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_BATON_PASS), + LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), + LEVEL_UP_END +}; + +const u16 gVaporeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_WATER_GUN), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(42, MOVE_HAZE), + LEVEL_UP_MOVE(47, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gJolteonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(36, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(42, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_MOVE(52, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gFlareonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_EMBER), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(42, MOVE_SMOG), + LEVEL_UP_MOVE(47, MOVE_LEER), + LEVEL_UP_MOVE(52, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +const u16 gPorygonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CONVERSION), + LEVEL_UP_MOVE( 9, MOVE_AGILITY), + LEVEL_UP_MOVE(12, MOVE_PSYBEAM), + LEVEL_UP_MOVE(20, MOVE_RECOVER), + LEVEL_UP_MOVE(24, MOVE_SHARPEN), + LEVEL_UP_MOVE(32, MOVE_LOCK_ON), + LEVEL_UP_MOVE(36, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(44, MOVE_RECYCLE), + LEVEL_UP_MOVE(48, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +const u16 gOmanyteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_LEER), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(43, MOVE_TICKLE), + LEVEL_UP_MOVE(49, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gOmastarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_LEER), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(40, MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE(46, MOVE_TICKLE), + LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(65, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gKabutoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_ABSORB), + LEVEL_UP_MOVE(19, MOVE_LEER), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(43, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(49, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +const u16 gKabutopsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_ABSORB), + LEVEL_UP_MOVE(19, MOVE_LEER), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(40, MOVE_SLASH), + LEVEL_UP_MOVE(46, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(55, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(65, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +const u16 gAerodactylLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 8, MOVE_AGILITY), + LEVEL_UP_MOVE(15, MOVE_BITE), + LEVEL_UP_MOVE(22, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(29, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(36, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(50, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gSnorlaxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_AMNESIA), + LEVEL_UP_MOVE(10, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(15, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(19, MOVE_HEADBUTT), + LEVEL_UP_MOVE(24, MOVE_YAWN), + LEVEL_UP_MOVE(28, MOVE_REST), + LEVEL_UP_MOVE(28, MOVE_SNORE), + LEVEL_UP_MOVE(33, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(37, MOVE_BLOCK), + LEVEL_UP_MOVE(42, MOVE_COVET), + LEVEL_UP_MOVE(46, MOVE_ROLLOUT), + LEVEL_UP_MOVE(51, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gArticunoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(13, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_MIND_READER), + LEVEL_UP_MOVE(49, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(61, MOVE_REFLECT), + LEVEL_UP_MOVE(73, MOVE_BLIZZARD), + LEVEL_UP_MOVE(85, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +const u16 gZapdosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_DETECT), + LEVEL_UP_MOVE(49, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(61, MOVE_CHARGE), + LEVEL_UP_MOVE(73, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(85, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gMoltresLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(61, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(73, MOVE_HEAT_WAVE), + LEVEL_UP_MOVE(85, MOVE_SKY_ATTACK), + LEVEL_UP_END +}; + +const u16 gDratiniLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(50, MOVE_OUTRAGE), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gDragonairLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(56, MOVE_OUTRAGE), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gDragoniteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(55, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(61, MOVE_OUTRAGE), + LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gMewtwoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE(11, MOVE_BARRIER), + LEVEL_UP_MOVE(22, MOVE_SWIFT), + LEVEL_UP_MOVE(33, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(44, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(55, MOVE_MIST), + LEVEL_UP_MOVE(66, MOVE_PSYCHIC), + LEVEL_UP_MOVE(77, MOVE_AMNESIA), + LEVEL_UP_MOVE(88, MOVE_RECOVER), + LEVEL_UP_MOVE(99, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +const u16 gMewLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE(10, MOVE_TRANSFORM), + LEVEL_UP_MOVE(20, MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE(30, MOVE_METRONOME), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(50, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +const u16 gChikoritaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(12, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(22, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(29, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(36, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(50, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gBayleefLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 1, MOVE_REFLECT), + LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(12, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(23, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(39, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(55, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gMeganiumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 1, MOVE_REFLECT), + LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(12, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(23, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(51, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(61, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gCyndaquilLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(27, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(36, MOVE_SWIFT), + LEVEL_UP_MOVE(46, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +const u16 gQuilavaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_EMBER), + LEVEL_UP_MOVE(21, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(42, MOVE_SWIFT), + LEVEL_UP_MOVE(54, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +const u16 gTyphlosionLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_EMBER), + LEVEL_UP_MOVE(21, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(45, MOVE_SWIFT), + LEVEL_UP_MOVE(60, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +const u16 gTotodileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_BITE), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(35, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_SCREECH), + LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gCroconawLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(28, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(45, MOVE_SCREECH), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gFeraligatrLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(28, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(38, MOVE_SLASH), + LEVEL_UP_MOVE(47, MOVE_SCREECH), + LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gSentretLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(24, MOVE_SLAM), + LEVEL_UP_MOVE(31, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(40, MOVE_REST), + LEVEL_UP_MOVE(49, MOVE_AMNESIA), + LEVEL_UP_END +}; + +const u16 gFurretLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(28, MOVE_SLAM), + LEVEL_UP_MOVE(37, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(48, MOVE_REST), + LEVEL_UP_MOVE(59, MOVE_AMNESIA), + LEVEL_UP_END +}; + +const u16 gHoothootLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_FORESIGHT), + LEVEL_UP_MOVE(11, MOVE_PECK), + LEVEL_UP_MOVE(16, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(22, MOVE_REFLECT), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(34, MOVE_CONFUSION), + LEVEL_UP_MOVE(48, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +const u16 gNoctowlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 6, MOVE_FORESIGHT), + LEVEL_UP_MOVE(11, MOVE_PECK), + LEVEL_UP_MOVE(16, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(25, MOVE_REFLECT), + LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_CONFUSION), + LEVEL_UP_MOVE(57, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +const u16 gLedybaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE(22, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(22, MOVE_REFLECT), + LEVEL_UP_MOVE(22, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(29, MOVE_BATON_PASS), + LEVEL_UP_MOVE(36, MOVE_SWIFT), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gLedianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE(24, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(24, MOVE_REFLECT), + LEVEL_UP_MOVE(24, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(33, MOVE_BATON_PASS), + LEVEL_UP_MOVE(42, MOVE_SWIFT), + LEVEL_UP_MOVE(51, MOVE_AGILITY), + LEVEL_UP_MOVE(60, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gSpinarakLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 6, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(11, MOVE_CONSTRICT), + LEVEL_UP_MOVE(17, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(23, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(30, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(37, MOVE_SPIDER_WEB), + LEVEL_UP_MOVE(45, MOVE_AGILITY), + LEVEL_UP_MOVE(53, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gAriadosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 6, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(11, MOVE_CONSTRICT), + LEVEL_UP_MOVE(17, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(34, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(43, MOVE_SPIDER_WEB), + LEVEL_UP_MOVE(53, MOVE_AGILITY), + LEVEL_UP_MOVE(63, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gCrobatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(35, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_POISON_FANG), + LEVEL_UP_MOVE(56, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gChinchouLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_FLAIL), + LEVEL_UP_MOVE(17, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_SPARK), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(49, MOVE_CHARGE), + LEVEL_UP_END +}; + +const u16 gLanturnLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_FLAIL), + LEVEL_UP_MOVE(17, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_SPARK), + LEVEL_UP_MOVE(32, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(61, MOVE_CHARGE), + LEVEL_UP_END +}; + +const u16 gPichuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), + LEVEL_UP_END +}; + +const u16 gCleffaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 4, MOVE_ENCORE), + LEVEL_UP_MOVE( 8, MOVE_SING), + LEVEL_UP_MOVE(13, MOVE_SWEET_KISS), + LEVEL_UP_END +}; + +const u16 gIgglybuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9, MOVE_POUND), + LEVEL_UP_MOVE(14, MOVE_SWEET_KISS), + LEVEL_UP_END +}; + +const u16 gTogepiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_METRONOME), + LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(16, MOVE_YAWN), + LEVEL_UP_MOVE(21, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(31, MOVE_WISH), + LEVEL_UP_MOVE(36, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gTogeticLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_METRONOME), + LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(16, MOVE_YAWN), + LEVEL_UP_MOVE(21, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(31, MOVE_WISH), + LEVEL_UP_MOVE(36, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gNatuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(10, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_TELEPORT), + LEVEL_UP_MOVE(30, MOVE_WISH), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(40, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(50, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gXatuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(10, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_TELEPORT), + LEVEL_UP_MOVE(35, MOVE_WISH), + LEVEL_UP_MOVE(35, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(50, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(65, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gMareepLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(16, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(23, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(30, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gFlaaffyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(27, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(36, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(45, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gAmpharosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(27, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(30, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(42, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(57, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gBellossomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(55, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gMarillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROLLOUT), + LEVEL_UP_MOVE(21, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(28, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(36, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gAzumarillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROLLOUT), + LEVEL_UP_MOVE(24, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(34, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(57, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gSudowoodoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 1, MOVE_MIMIC), + LEVEL_UP_MOVE( 9, MOVE_FLAIL), + LEVEL_UP_MOVE(17, MOVE_LOW_KICK), + LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(33, MOVE_BLOCK), + LEVEL_UP_MOVE(41, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(49, MOVE_SLAM), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gPolitoedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(35, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(51, MOVE_SWAGGER), + LEVEL_UP_END +}; + +const u16 gHoppipLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_TACKLE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(20, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(25, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(30, MOVE_MEGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gSkiploomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_TACKLE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(29, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(36, MOVE_MEGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gJumpluffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_TACKLE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(33, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(44, MOVE_MEGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gAipomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_ASTONISH), + LEVEL_UP_MOVE(18, MOVE_BATON_PASS), + LEVEL_UP_MOVE(25, MOVE_TICKLE), + LEVEL_UP_MOVE(31, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(38, MOVE_SWIFT), + LEVEL_UP_MOVE(43, MOVE_SCREECH), + LEVEL_UP_MOVE(50, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gSunkernLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(18, MOVE_INGRAIN), + LEVEL_UP_MOVE(25, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(30, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(37, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(42, MOVE_GIGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gSunfloraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(18, MOVE_INGRAIN), + LEVEL_UP_MOVE(25, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(30, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(37, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(42, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gYanmaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(19, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(25, MOVE_DETECT), + LEVEL_UP_MOVE(31, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(37, MOVE_UPROAR), + LEVEL_UP_MOVE(43, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(49, MOVE_SCREECH), + LEVEL_UP_END +}; + +const u16 gWooperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(11, MOVE_SLAM), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(21, MOVE_AMNESIA), + LEVEL_UP_MOVE(31, MOVE_YAWN), + LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(41, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(51, MOVE_MIST), + LEVEL_UP_MOVE(51, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gQuagsireLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(11, MOVE_SLAM), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(23, MOVE_AMNESIA), + LEVEL_UP_MOVE(35, MOVE_YAWN), + LEVEL_UP_MOVE(42, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(49, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(61, MOVE_MIST), + LEVEL_UP_MOVE(61, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gEspeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_SWIFT), + LEVEL_UP_MOVE(36, MOVE_PSYBEAM), + LEVEL_UP_MOVE(42, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(47, MOVE_PSYCHIC), + LEVEL_UP_MOVE(52, MOVE_MORNING_SUN), + LEVEL_UP_END +}; + +const u16 gUmbreonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(36, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(47, MOVE_SCREECH), + LEVEL_UP_MOVE(52, MOVE_MOONLIGHT), + LEVEL_UP_END +}; + +const u16 gMurkrowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_PURSUIT), + LEVEL_UP_MOVE(22, MOVE_HAZE), + LEVEL_UP_MOVE(27, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(35, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(40, MOVE_TAUNT), + LEVEL_UP_MOVE(48, MOVE_MEAN_LOOK), + LEVEL_UP_END +}; + +const u16 gSlowkingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE(15, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(34, MOVE_HEADBUTT), + LEVEL_UP_MOVE(43, MOVE_SWAGGER), + LEVEL_UP_MOVE(48, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gMisdreavusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 6, MOVE_SPITE), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(23, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(30, MOVE_PSYBEAM), + LEVEL_UP_MOVE(37, MOVE_PAIN_SPLIT), + LEVEL_UP_MOVE(45, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(53, MOVE_GRUDGE), + LEVEL_UP_END +}; + +const u16 gUnownLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HIDDEN_POWER), + LEVEL_UP_END +}; + +const u16 gWobbuffetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_COUNTER), + LEVEL_UP_MOVE( 1, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +const u16 gGirafarigLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(13, MOVE_CONFUSION), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(31, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_BATON_PASS), + LEVEL_UP_MOVE(43, MOVE_PSYBEAM), + LEVEL_UP_MOVE(49, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gPinecoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 8, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(15, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(29, MOVE_BIDE), + LEVEL_UP_MOVE(36, MOVE_EXPLOSION), + LEVEL_UP_MOVE(43, MOVE_SPIKES), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gForretressLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 1, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE( 8, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(15, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(29, MOVE_BIDE), + LEVEL_UP_MOVE(39, MOVE_EXPLOSION), + LEVEL_UP_MOVE(49, MOVE_SPIKES), + LEVEL_UP_MOVE(59, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gDunsparceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(11, MOVE_YAWN), + LEVEL_UP_MOVE(14, MOVE_GLARE), + LEVEL_UP_MOVE(21, MOVE_SPITE), + LEVEL_UP_MOVE(24, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gGligarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HARDEN), + LEVEL_UP_MOVE(20, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(28, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(44, MOVE_SCREECH), + LEVEL_UP_MOVE(52, MOVE_GUILLOTINE), + LEVEL_UP_END +}; + +const u16 gSteelixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 9, MOVE_BIND), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(21, MOVE_HARDEN), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_SLAM), + LEVEL_UP_MOVE(45, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(49, MOVE_CRUNCH), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gSnubbullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_LICK), + LEVEL_UP_MOVE(26, MOVE_ROAR), + LEVEL_UP_MOVE(34, MOVE_RAGE), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(53, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gGranbullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_LICK), + LEVEL_UP_MOVE(28, MOVE_ROAR), + LEVEL_UP_MOVE(38, MOVE_RAGE), + LEVEL_UP_MOVE(49, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(61, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gQwilfishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPIKES), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE(10, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_MINIMIZE), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(28, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gScizorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(11, MOVE_PURSUIT), + LEVEL_UP_MOVE(16, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(21, MOVE_AGILITY), + LEVEL_UP_MOVE(26, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), + LEVEL_UP_END +}; + +const u16 gShuckleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 9, MOVE_WRAP), + LEVEL_UP_MOVE(14, MOVE_ENCORE), + LEVEL_UP_MOVE(23, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(28, MOVE_BIDE), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_END +}; + +const u16 gHeracrossLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(11, MOVE_ENDURE), + LEVEL_UP_MOVE(17, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(23, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(30, MOVE_COUNTER), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(45, MOVE_REVERSAL), + LEVEL_UP_MOVE(53, MOVE_MEGAHORN), + LEVEL_UP_END +}; + +const u16 gSneaselLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_TAUNT), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_ICY_WIND), + LEVEL_UP_MOVE(50, MOVE_SLASH), + LEVEL_UP_MOVE(57, MOVE_BEAT_UP), + LEVEL_UP_MOVE(64, MOVE_METAL_CLAW), + LEVEL_UP_END +}; + +const u16 gTeddiursaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_SNORE), + LEVEL_UP_MOVE(49, MOVE_THRASH), + LEVEL_UP_END +}; + +const u16 gUrsaringLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_SNORE), + LEVEL_UP_MOVE(49, MOVE_THRASH), + LEVEL_UP_END +}; + +const u16 gSlugmaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 8, MOVE_EMBER), + LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(22, MOVE_HARDEN), + LEVEL_UP_MOVE(29, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(43, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(50, MOVE_BODY_SLAM), + LEVEL_UP_END +}; + +const u16 gMagcargoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 8, MOVE_EMBER), + LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(22, MOVE_HARDEN), + LEVEL_UP_MOVE(29, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(48, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(60, MOVE_BODY_SLAM), + LEVEL_UP_END +}; + +const u16 gSwinubLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(19, MOVE_ENDURE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_MIST), + LEVEL_UP_MOVE(46, MOVE_BLIZZARD), + LEVEL_UP_MOVE(55, MOVE_AMNESIA), + LEVEL_UP_END +}; + +const u16 gPiloswineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_ENDURE), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(19, MOVE_ENDURE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(42, MOVE_MIST), + LEVEL_UP_MOVE(56, MOVE_BLIZZARD), + LEVEL_UP_MOVE(70, MOVE_AMNESIA), + LEVEL_UP_END +}; + +const u16 gCorsolaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_HARDEN), + LEVEL_UP_MOVE(12, MOVE_BUBBLE), + LEVEL_UP_MOVE(17, MOVE_RECOVER), + LEVEL_UP_MOVE(17, MOVE_REFRESH), + LEVEL_UP_MOVE(23, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(28, MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE(34, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(39, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(45, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +const u16 gRemoraidLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE(11, MOVE_LOCK_ON), + LEVEL_UP_MOVE(22, MOVE_PSYBEAM), + LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(33, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(44, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(55, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gOctilleryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE(11, MOVE_CONSTRICT), + LEVEL_UP_MOVE(22, MOVE_PSYBEAM), + LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(25, MOVE_OCTAZOOKA), + LEVEL_UP_MOVE(38, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(54, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(70, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gDelibirdLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PRESENT), + LEVEL_UP_END +}; + +const u16 gMantineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(22, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(43, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(50, MOVE_CONFUSE_RAY), + LEVEL_UP_END +}; + +const u16 gSkarmoryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE(10, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SWIFT), + LEVEL_UP_MOVE(16, MOVE_AGILITY), + LEVEL_UP_MOVE(26, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(29, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(32, MOVE_STEEL_WING), + LEVEL_UP_MOVE(42, MOVE_SPIKES), + LEVEL_UP_MOVE(45, MOVE_METAL_SOUND), + LEVEL_UP_END +}; + +const u16 gHoundourLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_BITE), + LEVEL_UP_MOVE(31, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(37, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gHoundoomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(27, MOVE_BITE), + LEVEL_UP_MOVE(35, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(43, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(51, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(59, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gKingdraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(15, MOVE_LEER), + LEVEL_UP_MOVE(22, MOVE_WATER_GUN), + LEVEL_UP_MOVE(29, MOVE_TWISTER), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(62, MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +const u16 gPhanpyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(17, MOVE_FLAIL), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_ENDURE), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gDonphanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(17, MOVE_FLAIL), + LEVEL_UP_MOVE(25, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(33, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(49, MOVE_EARTHQUAKE), + LEVEL_UP_END +}; + +const u16 gPorygon2LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CONVERSION), + LEVEL_UP_MOVE( 9, MOVE_AGILITY), + LEVEL_UP_MOVE(12, MOVE_PSYBEAM), + LEVEL_UP_MOVE(20, MOVE_RECOVER), + LEVEL_UP_MOVE(24, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(32, MOVE_LOCK_ON), + LEVEL_UP_MOVE(36, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(44, MOVE_RECYCLE), + LEVEL_UP_MOVE(48, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +const u16 gStantlerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_ASTONISH), + LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(25, MOVE_STOMP), + LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(43, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(49, MOVE_CALM_MIND), + LEVEL_UP_END +}; + +const u16 gSmeargleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SKETCH), + LEVEL_UP_MOVE(11, MOVE_SKETCH), + LEVEL_UP_MOVE(21, MOVE_SKETCH), + LEVEL_UP_MOVE(31, MOVE_SKETCH), + LEVEL_UP_MOVE(41, MOVE_SKETCH), + LEVEL_UP_MOVE(51, MOVE_SKETCH), + LEVEL_UP_MOVE(61, MOVE_SKETCH), + LEVEL_UP_MOVE(71, MOVE_SKETCH), + LEVEL_UP_MOVE(81, MOVE_SKETCH), + LEVEL_UP_MOVE(91, MOVE_SKETCH), + LEVEL_UP_END +}; + +const u16 gTyrogueLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gHitmontopLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_ROLLING_KICK), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_PURSUIT), + LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_TRIPLE_KICK), + LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(31, MOVE_COUNTER), + LEVEL_UP_MOVE(37, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_DETECT), + LEVEL_UP_MOVE(49, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gSmoochumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 9, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(13, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(21, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_SING), + LEVEL_UP_MOVE(33, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(37, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(45, MOVE_PSYCHIC), + LEVEL_UP_MOVE(49, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(57, MOVE_BLIZZARD), + LEVEL_UP_END +}; + +const u16 gElekidLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(17, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(25, MOVE_SWIFT), + LEVEL_UP_MOVE(33, MOVE_SCREECH), + LEVEL_UP_MOVE(41, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(49, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gMagbyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(37, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(43, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(49, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +const u16 gMiltankLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 8, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(13, MOVE_STOMP), + LEVEL_UP_MOVE(19, MOVE_MILK_DRINK), + LEVEL_UP_MOVE(26, MOVE_BIDE), + LEVEL_UP_MOVE(34, MOVE_ROLLOUT), + LEVEL_UP_MOVE(43, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(53, MOVE_HEAL_BELL), + LEVEL_UP_END +}; + +const u16 gBlisseyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_REFRESH), + LEVEL_UP_MOVE(10, MOVE_SOFT_BOILED), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(18, MOVE_MINIMIZE), + LEVEL_UP_MOVE(23, MOVE_SING), + LEVEL_UP_MOVE(28, MOVE_EGG_BOMB), + LEVEL_UP_MOVE(33, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(40, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gRaikouLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(11, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(31, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(41, MOVE_SPARK), + LEVEL_UP_MOVE(51, MOVE_REFLECT), + LEVEL_UP_MOVE(61, MOVE_CRUNCH), + LEVEL_UP_MOVE(71, MOVE_THUNDER), + LEVEL_UP_MOVE(81, MOVE_CALM_MIND), + LEVEL_UP_END +}; + +const u16 gEnteiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(11, MOVE_EMBER), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(31, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(41, MOVE_STOMP), + LEVEL_UP_MOVE(51, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(61, MOVE_SWAGGER), + LEVEL_UP_MOVE(71, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(81, MOVE_CALM_MIND), + LEVEL_UP_END +}; + +const u16 gSuicuneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(11, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(21, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(31, MOVE_GUST), + LEVEL_UP_MOVE(41, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(51, MOVE_MIST), + LEVEL_UP_MOVE(61, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(71, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(81, MOVE_CALM_MIND), + LEVEL_UP_END +}; + +const u16 gLarvitarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_THRASH), + LEVEL_UP_MOVE(36, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(43, MOVE_CRUNCH), + LEVEL_UP_MOVE(50, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gPupitarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SANDSTORM), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_THRASH), + LEVEL_UP_MOVE(38, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(56, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gTyranitarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SANDSTORM), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_THRASH), + LEVEL_UP_MOVE(38, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(61, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gLugiaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(11, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(22, MOVE_GUST), + LEVEL_UP_MOVE(33, MOVE_RECOVER), + LEVEL_UP_MOVE(44, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(55, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(66, MOVE_SWIFT), + LEVEL_UP_MOVE(77, MOVE_AEROBLAST), + LEVEL_UP_MOVE(88, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(99, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +const u16 gHoOhLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(11, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(22, MOVE_GUST), + LEVEL_UP_MOVE(33, MOVE_RECOVER), + LEVEL_UP_MOVE(44, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(55, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(66, MOVE_SWIFT), + LEVEL_UP_MOVE(77, MOVE_SACRED_FIRE), + LEVEL_UP_MOVE(88, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(99, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +const u16 gCelebiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_RECOVER), + LEVEL_UP_MOVE( 1, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(10, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(20, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(40, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_PERISH_SONG), + LEVEL_UP_END +}; + +const u16 gSpecies252LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies253LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies254LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies255LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies256LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies257LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies258LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies259LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies260LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies261LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies262LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies263LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies264LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies265LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies266LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies267LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies268LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies269LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies270LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies271LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies272LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies273LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies274LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies275LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies276LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gTreeckoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_PURSUIT), + LEVEL_UP_MOVE(21, MOVE_SCREECH), + LEVEL_UP_MOVE(26, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(31, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_SLAM), + LEVEL_UP_MOVE(41, MOVE_DETECT), + LEVEL_UP_MOVE(46, MOVE_GIGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gGrovyleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(17, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_SLAM), + LEVEL_UP_MOVE(47, MOVE_DETECT), + LEVEL_UP_MOVE(53, MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +const u16 gSceptileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(17, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_SLAM), + LEVEL_UP_MOVE(51, MOVE_DETECT), + LEVEL_UP_MOVE(59, MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +const u16 gTorchicLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(10, MOVE_EMBER), + LEVEL_UP_MOVE(16, MOVE_PECK), + LEVEL_UP_MOVE(19, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(28, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(34, MOVE_SLASH), + LEVEL_UP_MOVE(37, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +const u16 gCombuskenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_EMBER), + LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_PECK), + LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(28, MOVE_BULK_UP), + LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(39, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(50, MOVE_SKY_UPPERCUT), + LEVEL_UP_END +}; + +const u16 gBlazikenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_EMBER), + LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_PECK), + LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(28, MOVE_BULK_UP), + LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(36, MOVE_BLAZE_KICK), + LEVEL_UP_MOVE(42, MOVE_SLASH), + LEVEL_UP_MOVE(49, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(59, MOVE_SKY_UPPERCUT), + LEVEL_UP_END +}; + +const u16 gMudkipLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE(19, MOVE_FORESIGHT), + LEVEL_UP_MOVE(24, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(42, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(46, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gMarshtompLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(20, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(42, MOVE_PROTECT), + LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gSwampertLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(20, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(39, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(46, MOVE_PROTECT), + LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(61, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gPoochyenaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_HOWL), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_SWAGGER), + LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_TAUNT), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + LEVEL_UP_MOVE(45, MOVE_THIEF), + LEVEL_UP_END +}; + +const u16 gMightyenaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 5, MOVE_HOWL), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(22, MOVE_ROAR), + LEVEL_UP_MOVE(27, MOVE_SWAGGER), + LEVEL_UP_MOVE(32, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(42, MOVE_TAUNT), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(52, MOVE_THIEF), + LEVEL_UP_END +}; + +const u16 gZigzagoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(21, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(25, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(29, MOVE_COVET), + LEVEL_UP_MOVE(33, MOVE_FLAIL), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_BELLY_DRUM), + LEVEL_UP_END +}; + +const u16 gLinooneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(23, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(35, MOVE_COVET), + LEVEL_UP_MOVE(41, MOVE_SLASH), + LEVEL_UP_MOVE(47, MOVE_REST), + LEVEL_UP_MOVE(53, MOVE_BELLY_DRUM), + LEVEL_UP_END +}; + +const u16 gWurmpleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 5, MOVE_POISON_STING), + LEVEL_UP_END +}; + +const u16 gSilcoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_END +}; + +const u16 gBeautiflyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE(10, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_GUST), + LEVEL_UP_MOVE(17, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(20, MOVE_MORNING_SUN), + LEVEL_UP_MOVE(24, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(31, MOVE_ATTRACT), + LEVEL_UP_MOVE(34, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(38, MOVE_GIGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gCascoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_END +}; + +const u16 gDustoxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_GUST), + LEVEL_UP_MOVE(17, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(24, MOVE_PSYBEAM), + LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(31, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(34, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(38, MOVE_TOXIC), + LEVEL_UP_END +}; + +const u16 gLotadLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 3, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(21, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(43, MOVE_MEGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gLombreLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 3, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(31, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(37, MOVE_THIEF), + LEVEL_UP_MOVE(43, MOVE_UPROAR), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gLudicoloLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_NATURE_POWER), + LEVEL_UP_END +}; + +const u16 gSeedotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(21, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(43, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +const u16 gNuzleafLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_TORMENT), + LEVEL_UP_MOVE(31, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(37, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE(43, MOVE_SWAGGER), + LEVEL_UP_MOVE(49, MOVE_EXTRASENSORY), + LEVEL_UP_END +}; + +const u16 gShiftryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_NATURE_POWER), + LEVEL_UP_END +}; + +const u16 gNincadaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(25, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(31, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(38, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(45, MOVE_DIG), + LEVEL_UP_END +}; + +const u16 gNinjaskLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(20, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(20, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(20, MOVE_SCREECH), + LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_BATON_PASS), + LEVEL_UP_END +}; + +const u16 gShedinjaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(25, MOVE_SPITE), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(38, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(45, MOVE_GRUDGE), + LEVEL_UP_END +}; + +const u16 gTaillowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(26, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(34, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gSwellowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(28, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(38, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(49, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gShroomishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 4, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(22, MOVE_HEADBUTT), + LEVEL_UP_MOVE(28, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(36, MOVE_GROWTH), + LEVEL_UP_MOVE(45, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(54, MOVE_SPORE), + LEVEL_UP_END +}; + +const u16 gBreloomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 4, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(22, MOVE_HEADBUTT), + LEVEL_UP_MOVE(23, MOVE_MACH_PUNCH), + LEVEL_UP_MOVE(28, MOVE_COUNTER), + LEVEL_UP_MOVE(36, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(45, MOVE_MIND_READER), + LEVEL_UP_MOVE(54, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; + +const u16 gSpindaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(12, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(27, MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE(34, MOVE_TEETER_DANCE), + LEVEL_UP_MOVE(38, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(49, MOVE_FLAIL), + LEVEL_UP_MOVE(56, MOVE_THRASH), + LEVEL_UP_END +}; + +const u16 gWingullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(21, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(43, MOVE_PURSUIT), + LEVEL_UP_MOVE(55, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gPelipperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 3, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(21, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_STOCKPILE), + LEVEL_UP_MOVE(33, MOVE_SWALLOW), + LEVEL_UP_MOVE(47, MOVE_SPIT_UP), + LEVEL_UP_MOVE(61, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gSurskitLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(31, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_MIST), + LEVEL_UP_MOVE(37, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gMasquerainLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(26, MOVE_GUST), + LEVEL_UP_MOVE(33, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(40, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(47, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(53, MOVE_WHIRLWIND), + LEVEL_UP_END +}; + +const u16 gWailmerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(14, MOVE_ROLLOUT), + LEVEL_UP_MOVE(19, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(23, MOVE_ASTONISH), + LEVEL_UP_MOVE(28, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(32, MOVE_MIST), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(46, MOVE_AMNESIA), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gWailordLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(14, MOVE_ROLLOUT), + LEVEL_UP_MOVE(19, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(23, MOVE_ASTONISH), + LEVEL_UP_MOVE(28, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(32, MOVE_MIST), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(44, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(52, MOVE_AMNESIA), + LEVEL_UP_MOVE(59, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gSkittyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 3, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_ATTRACT), + LEVEL_UP_MOVE(13, MOVE_SING), + LEVEL_UP_MOVE(15, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(19, MOVE_ASSIST), + LEVEL_UP_MOVE(25, MOVE_CHARM), + LEVEL_UP_MOVE(27, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE(37, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(39, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gDelcattyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ATTRACT), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_END +}; + +const u16 gKecleonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THIEF), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_BIND), + LEVEL_UP_MOVE( 7, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_PSYBEAM), + LEVEL_UP_MOVE(24, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(40, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(49, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +const u16 gBaltoyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(11, MOVE_PSYBEAM), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(19, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(31, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(45, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +const u16 gClaydolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(11, MOVE_PSYBEAM), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(19, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(31, MOVE_SANDSTORM), + LEVEL_UP_MOVE(36, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(42, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(55, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +const u16 gNosepassLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_BLOCK), + LEVEL_UP_MOVE(22, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(28, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(31, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(46, MOVE_LOCK_ON), + LEVEL_UP_END +}; + +const u16 gTorkoalLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 4, MOVE_SMOG), + LEVEL_UP_MOVE( 7, MOVE_CURSE), + LEVEL_UP_MOVE(14, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(17, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(27, MOVE_PROTECT), + LEVEL_UP_MOVE(30, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(33, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(40, MOVE_AMNESIA), + LEVEL_UP_MOVE(43, MOVE_FLAIL), + LEVEL_UP_MOVE(46, MOVE_HEAT_WAVE), + LEVEL_UP_END +}; + +const u16 gSableyeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 5, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 9, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_ASTONISH), + LEVEL_UP_MOVE(17, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(21, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_DETECT), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(33, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(37, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(41, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(45, MOVE_MEAN_LOOK), + LEVEL_UP_END +}; + +const u16 gBarboachLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(11, MOVE_WATER_GUN), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_AMNESIA), + LEVEL_UP_MOVE(26, MOVE_REST), + LEVEL_UP_MOVE(26, MOVE_SNORE), + LEVEL_UP_MOVE(31, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(41, MOVE_FISSURE), + LEVEL_UP_END +}; + +const u16 gWhiscashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TICKLE), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(11, MOVE_WATER_GUN), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_AMNESIA), + LEVEL_UP_MOVE(26, MOVE_REST), + LEVEL_UP_MOVE(26, MOVE_SNORE), + LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(46, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(56, MOVE_FISSURE), + LEVEL_UP_END +}; + +const u16 gLuvdiscLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_CHARM), + LEVEL_UP_MOVE(12, MOVE_WATER_GUN), + LEVEL_UP_MOVE(16, MOVE_AGILITY), + LEVEL_UP_MOVE(24, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(28, MOVE_ATTRACT), + LEVEL_UP_MOVE(36, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(40, MOVE_FLAIL), + LEVEL_UP_MOVE(48, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +const u16 gCorphishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(23, MOVE_PROTECT), + LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(32, MOVE_TAUNT), + LEVEL_UP_MOVE(35, MOVE_CRABHAMMER), + LEVEL_UP_MOVE(38, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(44, MOVE_GUILLOTINE), + LEVEL_UP_END +}; + +const u16 gCrawdauntLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(23, MOVE_PROTECT), + LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(34, MOVE_TAUNT), + LEVEL_UP_MOVE(39, MOVE_CRABHAMMER), + LEVEL_UP_MOVE(44, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(52, MOVE_GUILLOTINE), + LEVEL_UP_END +}; + +const u16 gFeebasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE(15, MOVE_TACKLE), + LEVEL_UP_MOVE(30, MOVE_FLAIL), + LEVEL_UP_END +}; + +const u16 gMiloticLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 5, MOVE_WRAP), + LEVEL_UP_MOVE(10, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(15, MOVE_REFRESH), + LEVEL_UP_MOVE(20, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(25, MOVE_TWISTER), + LEVEL_UP_MOVE(30, MOVE_RECOVER), + LEVEL_UP_MOVE(35, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(45, MOVE_ATTRACT), + LEVEL_UP_MOVE(50, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +const u16 gCarvanhaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(16, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(22, MOVE_CRUNCH), + LEVEL_UP_MOVE(28, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_SWAGGER), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gSharpedoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(16, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(22, MOVE_CRUNCH), + LEVEL_UP_MOVE(28, MOVE_SCREECH), + LEVEL_UP_MOVE(33, MOVE_SLASH), + LEVEL_UP_MOVE(38, MOVE_TAUNT), + LEVEL_UP_MOVE(43, MOVE_SWAGGER), + LEVEL_UP_MOVE(48, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(53, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gTrapinchLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(41, MOVE_DIG), + LEVEL_UP_MOVE(49, MOVE_SANDSTORM), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gVibravaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(41, MOVE_SCREECH), + LEVEL_UP_MOVE(49, MOVE_SANDSTORM), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gFlygonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(41, MOVE_SCREECH), + LEVEL_UP_MOVE(53, MOVE_SANDSTORM), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gMakuhitaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(10, MOVE_ARM_THRUST), + LEVEL_UP_MOVE(13, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(22, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(28, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(31, MOVE_SMELLING_SALT), + LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(40, MOVE_ENDURE), + LEVEL_UP_MOVE(46, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(49, MOVE_REVERSAL), + LEVEL_UP_END +}; + +const u16 gHariyamaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_ARM_THRUST), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(10, MOVE_ARM_THRUST), + LEVEL_UP_MOVE(13, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(22, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(29, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(33, MOVE_SMELLING_SALT), + LEVEL_UP_MOVE(40, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(44, MOVE_ENDURE), + LEVEL_UP_MOVE(51, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(55, MOVE_REVERSAL), + LEVEL_UP_END +}; + +const u16 gElectrikeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_HOWL), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_SPARK), + LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(28, MOVE_ROAR), + LEVEL_UP_MOVE(33, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_THUNDER), + LEVEL_UP_MOVE(41, MOVE_CHARGE), + LEVEL_UP_END +}; + +const u16 gManectricLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_HOWL), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_SPARK), + LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(31, MOVE_ROAR), + LEVEL_UP_MOVE(39, MOVE_BITE), + LEVEL_UP_MOVE(45, MOVE_THUNDER), + LEVEL_UP_MOVE(53, MOVE_CHARGE), + LEVEL_UP_END +}; + +const u16 gNumelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE(11, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(25, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_AMNESIA), + LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(41, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gCameruptLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(11, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(25, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_AMNESIA), + LEVEL_UP_MOVE(33, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(37, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(45, MOVE_ERUPTION), + LEVEL_UP_MOVE(55, MOVE_FISSURE), + LEVEL_UP_END +}; + +const u16 gSphealLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SNORE), + LEVEL_UP_MOVE(43, MOVE_BLIZZARD), + LEVEL_UP_MOVE(49, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +const u16 gSealeoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(39, MOVE_REST), + LEVEL_UP_MOVE(39, MOVE_SNORE), + LEVEL_UP_MOVE(47, MOVE_BLIZZARD), + LEVEL_UP_MOVE(55, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +const u16 gWalreinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(39, MOVE_REST), + LEVEL_UP_MOVE(39, MOVE_SNORE), + LEVEL_UP_MOVE(50, MOVE_BLIZZARD), + LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +const u16 gCacneaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(25, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(33, MOVE_SPIKES), + LEVEL_UP_MOVE(37, MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE(41, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(45, MOVE_SANDSTORM), + LEVEL_UP_END +}; + +const u16 gCacturneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(25, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(35, MOVE_SPIKES), + LEVEL_UP_MOVE(41, MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE(47, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(53, MOVE_SANDSTORM), + LEVEL_UP_END +}; + +const u16 gSnoruntLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(34, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(37, MOVE_HAIL), + LEVEL_UP_MOVE(43, MOVE_BLIZZARD), + LEVEL_UP_END +}; + +const u16 gGlalieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 7, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(34, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(42, MOVE_HAIL), + LEVEL_UP_MOVE(53, MOVE_BLIZZARD), + LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +const u16 gLunatoneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(25, MOVE_PSYWAVE), + LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(37, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(49, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +const u16 gSolrockLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(19, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(25, MOVE_PSYWAVE), + LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(37, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(43, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(49, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +const u16 gAzurillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 3, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_BUBBLE), + LEVEL_UP_MOVE(15, MOVE_SLAM), + LEVEL_UP_MOVE(21, MOVE_WATER_GUN), + LEVEL_UP_END +}; + +const u16 gSpoinkLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), + LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(25, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(28, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(34, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SNORE), + LEVEL_UP_MOVE(43, MOVE_BOUNCE), + LEVEL_UP_END +}; + +const u16 gGrumpigLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_PSYBEAM), + LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), + LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(25, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(28, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(37, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_SNORE), + LEVEL_UP_MOVE(55, MOVE_BOUNCE), + LEVEL_UP_END +}; + +const u16 gPlusleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(22, MOVE_ENCORE), + LEVEL_UP_MOVE(28, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(31, MOVE_CHARGE), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + LEVEL_UP_MOVE(40, MOVE_BATON_PASS), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gMinunLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(22, MOVE_ENCORE), + LEVEL_UP_MOVE(28, MOVE_CHARM), + LEVEL_UP_MOVE(31, MOVE_CHARGE), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + LEVEL_UP_MOVE(40, MOVE_BATON_PASS), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gMawileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(21, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(26, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_BATON_PASS), + LEVEL_UP_MOVE(36, MOVE_CRUNCH), + LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(46, MOVE_STOCKPILE), + LEVEL_UP_MOVE(46, MOVE_SWALLOW), + LEVEL_UP_MOVE(46, MOVE_SPIT_UP), + LEVEL_UP_END +}; + +const u16 gMedititeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 4, MOVE_MEDITATE), + LEVEL_UP_MOVE( 9, MOVE_CONFUSION), + LEVEL_UP_MOVE(12, MOVE_DETECT), + LEVEL_UP_MOVE(18, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(22, MOVE_MIND_READER), + LEVEL_UP_MOVE(28, MOVE_CALM_MIND), + LEVEL_UP_MOVE(32, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(38, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(42, MOVE_REVERSAL), + LEVEL_UP_MOVE(48, MOVE_RECOVER), + LEVEL_UP_END +}; + +const u16 gMedichamLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 1, MOVE_MEDITATE), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DETECT), + LEVEL_UP_MOVE( 4, MOVE_MEDITATE), + LEVEL_UP_MOVE( 9, MOVE_CONFUSION), + LEVEL_UP_MOVE(12, MOVE_DETECT), + LEVEL_UP_MOVE(18, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(22, MOVE_MIND_READER), + LEVEL_UP_MOVE(28, MOVE_CALM_MIND), + LEVEL_UP_MOVE(32, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(40, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(46, MOVE_REVERSAL), + LEVEL_UP_MOVE(54, MOVE_RECOVER), + LEVEL_UP_END +}; + +const u16 gSwabluLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 8, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_SING), + LEVEL_UP_MOVE(18, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(28, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(38, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(41, MOVE_REFRESH), + LEVEL_UP_MOVE(48, MOVE_PERISH_SONG), + LEVEL_UP_END +}; + +const u16 gAltariaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 8, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_SING), + LEVEL_UP_MOVE(18, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(28, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(40, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(45, MOVE_REFRESH), + LEVEL_UP_MOVE(54, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(59, MOVE_SKY_ATTACK), + LEVEL_UP_END +}; + +const u16 gWynautLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE(15, MOVE_COUNTER), + LEVEL_UP_MOVE(15, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(15, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +const u16 gDuskullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 5, MOVE_DISABLE), + LEVEL_UP_MOVE(12, MOVE_FORESIGHT), + LEVEL_UP_MOVE(16, MOVE_ASTONISH), + LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(27, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_CURSE), + LEVEL_UP_MOVE(38, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(45, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +const u16 gDusclopsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 5, MOVE_DISABLE), + LEVEL_UP_MOVE(12, MOVE_FORESIGHT), + LEVEL_UP_MOVE(16, MOVE_ASTONISH), + LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(27, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_CURSE), + LEVEL_UP_MOVE(37, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE(41, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(51, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(58, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +const u16 gRoseliaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 5, MOVE_GROWTH), + LEVEL_UP_MOVE( 9, MOVE_POISON_STING), + LEVEL_UP_MOVE(13, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(21, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(25, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(29, MOVE_GRASS_WHISTLE), + LEVEL_UP_MOVE(33, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(37, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(41, MOVE_INGRAIN), + LEVEL_UP_MOVE(45, MOVE_TOXIC), + LEVEL_UP_MOVE(49, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(53, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE(57, MOVE_SYNTHESIS), + LEVEL_UP_END +}; + +const u16 gSlakothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_AMNESIA), + LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE(37, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_FLAIL), + LEVEL_UP_END +}; + +const u16 gVigorothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_UPROAR), + LEVEL_UP_MOVE(19, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(25, MOVE_ENDURE), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(37, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_FOCUS_PUNCH), + LEVEL_UP_MOVE(49, MOVE_REVERSAL), + LEVEL_UP_END +}; + +const u16 gSlakingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_AMNESIA), + LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE(36, MOVE_SWAGGER), + LEVEL_UP_MOVE(37, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_FLAIL), + LEVEL_UP_END +}; + +const u16 gGulpinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 6, MOVE_YAWN), + LEVEL_UP_MOVE( 9, MOVE_POISON_GAS), + LEVEL_UP_MOVE(14, MOVE_SLUDGE), + LEVEL_UP_MOVE(17, MOVE_AMNESIA), + LEVEL_UP_MOVE(23, MOVE_ENCORE), + LEVEL_UP_MOVE(28, MOVE_TOXIC), + LEVEL_UP_MOVE(34, MOVE_STOCKPILE), + LEVEL_UP_MOVE(34, MOVE_SPIT_UP), + LEVEL_UP_MOVE(34, MOVE_SWALLOW), + LEVEL_UP_MOVE(39, MOVE_SLUDGE_BOMB), + LEVEL_UP_END +}; + +const u16 gSwalotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_SLUDGE), + LEVEL_UP_MOVE( 6, MOVE_YAWN), + LEVEL_UP_MOVE( 9, MOVE_POISON_GAS), + LEVEL_UP_MOVE(14, MOVE_SLUDGE), + LEVEL_UP_MOVE(17, MOVE_AMNESIA), + LEVEL_UP_MOVE(23, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(31, MOVE_TOXIC), + LEVEL_UP_MOVE(40, MOVE_STOCKPILE), + LEVEL_UP_MOVE(40, MOVE_SPIT_UP), + LEVEL_UP_MOVE(40, MOVE_SWALLOW), + LEVEL_UP_MOVE(48, MOVE_SLUDGE_BOMB), + LEVEL_UP_END +}; + +const u16 gTropiusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(11, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(17, MOVE_STOMP), + LEVEL_UP_MOVE(21, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(31, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(37, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(41, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(47, MOVE_SYNTHESIS), + LEVEL_UP_END +}; + +const u16 gWhismurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE(21, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(25, MOVE_STOMP), + LEVEL_UP_MOVE(31, MOVE_SCREECH), + LEVEL_UP_MOVE(35, MOVE_ROAR), + LEVEL_UP_MOVE(41, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(45, MOVE_HYPER_VOICE), + LEVEL_UP_END +}; + +const u16 gLoudredLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE(23, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(29, MOVE_STOMP), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(43, MOVE_ROAR), + LEVEL_UP_MOVE(51, MOVE_REST), + LEVEL_UP_MOVE(51, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(57, MOVE_HYPER_VOICE), + LEVEL_UP_END +}; + +const u16 gExploudLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE(23, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(29, MOVE_STOMP), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(40, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(45, MOVE_ROAR), + LEVEL_UP_MOVE(55, MOVE_REST), + LEVEL_UP_MOVE(55, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(63, MOVE_HYPER_VOICE), + LEVEL_UP_END +}; + +const u16 gClamperlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CLAMP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), + LEVEL_UP_END +}; + +const u16 gHuntailLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 8, MOVE_BITE), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(36, MOVE_CRUNCH), + LEVEL_UP_MOVE(43, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gGorebyssLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 8, MOVE_CONFUSION), + LEVEL_UP_MOVE(15, MOVE_AGILITY), + LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(29, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gAbsolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE( 9, MOVE_TAUNT), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(26, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(31, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(41, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(46, MOVE_PERISH_SONG), + LEVEL_UP_END +}; + +const u16 gShuppetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(13, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SPITE), + LEVEL_UP_MOVE(32, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(37, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(44, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(49, MOVE_SNATCH), + LEVEL_UP_MOVE(56, MOVE_GRUDGE), + LEVEL_UP_END +}; + +const u16 gBanetteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(13, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SPITE), + LEVEL_UP_MOVE(32, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(39, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(48, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(55, MOVE_SNATCH), + LEVEL_UP_MOVE(64, MOVE_GRUDGE), + LEVEL_UP_END +}; + +const u16 gSeviperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_POISON_TAIL), + LEVEL_UP_MOVE(19, MOVE_SCREECH), + LEVEL_UP_MOVE(25, MOVE_GLARE), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(34, MOVE_POISON_FANG), + LEVEL_UP_MOVE(37, MOVE_SWAGGER), + LEVEL_UP_MOVE(43, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gZangooseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(10, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(13, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(19, MOVE_SLASH), + LEVEL_UP_MOVE(25, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE(37, MOVE_TAUNT), + LEVEL_UP_MOVE(46, MOVE_DETECT), + LEVEL_UP_MOVE(55, MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +const u16 gRelicanthLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(22, MOVE_YAWN), + LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(36, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(64, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gAronLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(34, MOVE_PROTECT), + LEVEL_UP_MOVE(39, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(44, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gLaironLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(45, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gAggronLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(50, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(63, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gCastformLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_EMBER), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(20, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(20, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(20, MOVE_HAIL), + LEVEL_UP_MOVE(30, MOVE_WEATHER_BALL), + LEVEL_UP_END +}; + +const u16 gVolbeatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 9, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(13, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TAIL_GLOW), + LEVEL_UP_MOVE(25, MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE(29, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gIllumiseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 9, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(21, MOVE_WISH), + LEVEL_UP_MOVE(25, MOVE_ENCORE), + LEVEL_UP_MOVE(29, MOVE_FLATTER), + LEVEL_UP_MOVE(33, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(37, MOVE_COVET), + LEVEL_UP_END +}; + +const u16 gLileepLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 8, MOVE_CONSTRICT), + LEVEL_UP_MOVE(15, MOVE_ACID), + LEVEL_UP_MOVE(22, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(50, MOVE_STOCKPILE), + LEVEL_UP_MOVE(50, MOVE_SPIT_UP), + LEVEL_UP_MOVE(50, MOVE_SWALLOW), + LEVEL_UP_END +}; + +const u16 gCradilyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_ACID), + LEVEL_UP_MOVE( 1, MOVE_INGRAIN), + LEVEL_UP_MOVE( 8, MOVE_CONSTRICT), + LEVEL_UP_MOVE(15, MOVE_ACID), + LEVEL_UP_MOVE(22, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(48, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(60, MOVE_STOCKPILE), + LEVEL_UP_MOVE(60, MOVE_SPIT_UP), + LEVEL_UP_MOVE(60, MOVE_SWALLOW), + LEVEL_UP_END +}; + +const u16 gAnorithLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(43, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(49, MOVE_SLASH), + LEVEL_UP_MOVE(55, MOVE_ROCK_BLAST), + LEVEL_UP_END +}; + +const u16 gArmaldoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(55, MOVE_SLASH), + LEVEL_UP_MOVE(64, MOVE_ROCK_BLAST), + LEVEL_UP_END +}; + +const u16 gRaltsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(16, MOVE_TELEPORT), + LEVEL_UP_MOVE(21, MOVE_CALM_MIND), + LEVEL_UP_MOVE(26, MOVE_PSYCHIC), + LEVEL_UP_MOVE(31, MOVE_IMPRISON), + LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(41, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(46, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +const u16 gKirliaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 6, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(16, MOVE_TELEPORT), + LEVEL_UP_MOVE(21, MOVE_CALM_MIND), + LEVEL_UP_MOVE(26, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_IMPRISON), + LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(47, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(54, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +const u16 gGardevoirLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 6, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(16, MOVE_TELEPORT), + LEVEL_UP_MOVE(21, MOVE_CALM_MIND), + LEVEL_UP_MOVE(26, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_IMPRISON), + LEVEL_UP_MOVE(42, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(51, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(60, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +const u16 gBagonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 5, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE(33, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(37, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + LEVEL_UP_MOVE(49, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gShelgonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE(30, MOVE_PROTECT), + LEVEL_UP_MOVE(38, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(47, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(56, MOVE_CRUNCH), + LEVEL_UP_MOVE(69, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(78, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gSalamenceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE(30, MOVE_PROTECT), + LEVEL_UP_MOVE(38, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(47, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(50, MOVE_FLY), + LEVEL_UP_MOVE(61, MOVE_CRUNCH), + LEVEL_UP_MOVE(79, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(93, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gBeldumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_END +}; + +const u16 gMetangLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(26, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(32, MOVE_PURSUIT), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(50, MOVE_METEOR_MASH), + LEVEL_UP_MOVE(56, MOVE_AGILITY), + LEVEL_UP_MOVE(62, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gMetagrossLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(26, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(32, MOVE_PURSUIT), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(55, MOVE_METEOR_MASH), + LEVEL_UP_MOVE(66, MOVE_AGILITY), + LEVEL_UP_MOVE(77, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gRegirockLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), + LEVEL_UP_MOVE( 9, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(17, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(57, MOVE_LOCK_ON), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gRegiceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), + LEVEL_UP_MOVE( 9, MOVE_ICY_WIND), + LEVEL_UP_MOVE(17, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(41, MOVE_AMNESIA), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(57, MOVE_LOCK_ON), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gRegisteelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), + LEVEL_UP_MOVE( 9, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(41, MOVE_AMNESIA), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(57, MOVE_LOCK_ON), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gKyogreLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(30, MOVE_CALM_MIND), + LEVEL_UP_MOVE(35, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(60, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(65, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(75, MOVE_WATER_SPOUT), + LEVEL_UP_END +}; + +const u16 gGroudonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_SLASH), + LEVEL_UP_MOVE(30, MOVE_BULK_UP), + LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(45, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(60, MOVE_FISSURE), + LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(75, MOVE_ERUPTION), + LEVEL_UP_END +}; + +const u16 gRayquazaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(30, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(35, MOVE_CRUNCH), + LEVEL_UP_MOVE(45, MOVE_FLY), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(60, MOVE_EXTREME_SPEED), + LEVEL_UP_MOVE(65, MOVE_OUTRAGE), + LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gLatiasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 5, MOVE_WISH), + LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(25, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(30, MOVE_REFRESH), + LEVEL_UP_MOVE(35, MOVE_MIST_BALL), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(45, MOVE_RECOVER), + LEVEL_UP_MOVE(50, MOVE_CHARM), + LEVEL_UP_END +}; + +const u16 gLatiosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 5, MOVE_MEMENTO), + LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(30, MOVE_REFRESH), + LEVEL_UP_MOVE(35, MOVE_LUSTER_PURGE), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(45, MOVE_RECOVER), + LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +const u16 gJirachiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WISH), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 5, MOVE_REST), + LEVEL_UP_MOVE(10, MOVE_SWIFT), + LEVEL_UP_MOVE(15, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(20, MOVE_PSYCHIC), + LEVEL_UP_MOVE(25, MOVE_REFRESH), + LEVEL_UP_MOVE(30, MOVE_REST), + LEVEL_UP_MOVE(35, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(45, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(50, MOVE_DOOM_DESIRE), + LEVEL_UP_END +}; + +const u16 gDeoxysLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 5, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(10, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(15, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(20, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_PSYCHIC), + LEVEL_UP_MOVE(30, MOVE_SWIFT), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(40, MOVE_RECOVER), + LEVEL_UP_MOVE(45, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(50, MOVE_EXTREME_SPEED), + LEVEL_UP_END +}; + +const u16 gChimechoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_CONFUSION), + LEVEL_UP_MOVE(17, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_UPROAR), + LEVEL_UP_MOVE(25, MOVE_YAWN), + LEVEL_UP_MOVE(30, MOVE_PSYWAVE), + LEVEL_UP_MOVE(33, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(38, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(41, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(46, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +#endif //POKEEMERALD_LEVEL_UP_LEARNSETS_H diff --git a/include/data/pokemon/tmhm_learnsets.h b/include/data/pokemon/tmhm_learnsets.h new file mode 100644 index 000000000..f14478863 --- /dev/null +++ b/include/data/pokemon/tmhm_learnsets.h @@ -0,0 +1,9393 @@ +#ifndef GUARD_TMHM_LEARNSETS_H +#define GUARD_TMHM_LEARNSETS_H + +#define TMHM_LEARNSET(moves) {(u32)(moves), ((u64)(moves) >> 32)} +#define TMHM(tmhm) ((u64)1 << (ITEM_##tmhm - ITEM_TM01_FOCUS_PUNCH)) + +// This table determines which TMs and HMs a species is capable of learning. +// Each entry is a 64-bit bit array spread across two 32-bit values, with +// each bit corresponding to a . +const u32 gTMHMLearnsets[][2] = +{ + [SPECIES_NONE] = TMHM_LEARNSET(0), + + [SPECIES_BULBASAUR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_IVYSAUR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_VENUSAUR] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHARMANDER] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHARMELEON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHARIZARD] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SQUIRTLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_WARTORTLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_BLASTOISE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CATERPIE] = TMHM_LEARNSET(0), + + [SPECIES_METAPOD] = TMHM_LEARNSET(0), + + [SPECIES_BUTTERFREE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_WEEDLE] = TMHM_LEARNSET(0), + + [SPECIES_KAKUNA] = TMHM_LEARNSET(0), + + [SPECIES_BEEDRILL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PIDGEY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_PIDGEOTTO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_PIDGEOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_RATTATA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RATICATE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SPEAROW] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_FEAROW] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_EKANS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH)), + + [SPECIES_ARBOK] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH)), + + [SPECIES_PIKACHU] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RAICHU] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SANDSHREW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SANDSLASH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDORAN_F] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDORINA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDOQUEEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDORAN_M] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDORINO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDOKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CLEFAIRY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_CLEFABLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_VULPIX] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT)), + + [SPECIES_NINETALES] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT)), + + [SPECIES_JIGGLYPUFF] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_WIGGLYTUFF] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_ZUBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM49_SNATCH)), + + [SPECIES_GOLBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM49_SNATCH)), + + [SPECIES_ODDISH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_GLOOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_VILEPLUME] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_PARAS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PARASECT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_VENONAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_VENOMOTH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_DIGLETT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DUGTRIO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEOWTH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_PERSIAN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_PSYDUCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GOLDUCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MANKEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PRIMEAPE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GROWLITHE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ARCANINE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_POLIWAG] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_POLIWHIRL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_POLIWRATH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_ABRA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_KADABRA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_ALAKAZAM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_MACHOP] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MACHOKE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MACHAMP] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BELLSPROUT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_WEEPINBELL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_VICTREEBEL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_TENTACOOL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_TENTACRUEL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GEODUDE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GRAVELER] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GOLEM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PONYTA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH)), + + [SPECIES_RAPIDASH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH)), + + [SPECIES_SLOWPOKE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM08_DIVE)), + + [SPECIES_SLOWBRO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM08_DIVE)), + + [SPECIES_MAGNEMITE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM05_FLASH)), + + [SPECIES_MAGNETON] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM05_FLASH)), + + [SPECIES_FARFETCHD] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY)), + + [SPECIES_DODUO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_DODRIO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_SEEL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_DEWGONG] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GRIMER] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF)), + + [SPECIES_MUK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHELLDER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM08_DIVE)), + + [SPECIES_CLOYSTER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM08_DIVE)), + + [SPECIES_GASTLY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH)), + + [SPECIES_HAUNTER] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH)), + + [SPECIES_GENGAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ONIX] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DROWZEE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_HYPNO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_KRABBY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM08_DIVE)), + + [SPECIES_KINGLER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM08_DIVE)), + + [SPECIES_VOLTORB] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_ELECTRODE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_EXEGGCUTE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_EXEGGUTOR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_CUBONE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAROWAK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HITMONLEE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HITMONCHAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_LICKITUNG] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KOFFING] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_WEEZING] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_RHYHORN] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RHYDON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHANSEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TANGELA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KANGASKHAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HORSEA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SEADRA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GOLDEEN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SEAKING] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_STARYU] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_STARMIE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MR_MIME] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_SCYTHER] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_JYNX] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_ELECTABUZZ] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAGMAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PINSIR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TAUROS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAGIKARP] = TMHM_LEARNSET(0), + + [SPECIES_GYARADOS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LAPRAS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_DITTO] = TMHM_LEARNSET(0), + + [SPECIES_EEVEE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT)), + + [SPECIES_VAPOREON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_JOLTEON] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_FLAREON] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT)), + + [SPECIES_PORYGON] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_OMANYTE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_OMASTAR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_KABUTO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL)), + + [SPECIES_KABUTOPS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_AERODACTYL] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SNORLAX] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH)), + + [SPECIES_ARTICUNO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ZAPDOS] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MOLTRES] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(TM50_OVERHEAT) + | TMHM(HM02_FLY) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DRATINI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL)), + + [SPECIES_DRAGONAIR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL)), + + [SPECIES_DRAGONITE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MEWTWO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM08_BULK_UP) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CHIKORITA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_BAYLEEF] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEGANIUM] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CYNDAQUIL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT)), + + [SPECIES_QUILAVA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TYPHLOSION] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TOTODILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CROCONAW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_FERALIGATR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SENTRET] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF)), + + [SPECIES_FURRET] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HOOTHOOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH)), + + [SPECIES_NOCTOWL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH)), + + [SPECIES_LEDYBA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_LEDIAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_SPINARAK] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_ARIADOS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_CROBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM49_SNATCH) + | TMHM(HM02_FLY)), + + [SPECIES_CHINCHOU] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LANTURN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_PICHU] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_CLEFFA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_IGGLYBUFF] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_TOGEPI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TOGETIC] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NATU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_XATU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH)), + + [SPECIES_MAREEP] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_FLAAFFY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_AMPHAROS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BELLOSSOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_MARILL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_AZUMARILL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SUDOWOODO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_POLITOED] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_HOPPIP] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_SKIPLOOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_JUMPLUFF] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_AIPOM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SUNKERN] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_SUNFLORA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_YANMA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM05_FLASH)), + + [SPECIES_WOOPER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_QUAGSIRE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_ESPEON] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_UMBREON] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_MURKROW] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM49_SNATCH) + | TMHM(HM02_FLY)), + + [SPECIES_SLOWKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM08_DIVE)), + + [SPECIES_MISDREAVUS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_UNOWN] = TMHM_LEARNSET(0), + + [SPECIES_WOBBUFFET] = TMHM_LEARNSET(0), + + [SPECIES_GIRAFARIG] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PINECO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_FORRETRESS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DUNSPARCE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GLIGAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_STEELIX] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SNUBBULL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GRANBULL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_QWILFISH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SCIZOR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHUCKLE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HERACROSS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SNEASEL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TEDDIURSA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_URSARING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SLUGMA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAGCARGO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SWINUB] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PILOSWINE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CORSOLA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_REMORAID] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_OCTILLERY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_DELIBIRD] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM02_FLY)), + + [SPECIES_MANTINE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SKARMORY] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HOUNDOUR] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(TM50_OVERHEAT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HOUNDOOM] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KINGDRA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_PHANPY] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DONPHAN] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PORYGON2] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_STANTLER] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_SMEARGLE] = TMHM_LEARNSET(0), + + [SPECIES_TYROGUE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HITMONTOP] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SMOOCHUM] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_ELEKID] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAGBY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MILTANK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BLISSEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RAIKOU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ENTEI] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SUICUNE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LARVITAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PUPITAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TYRANITAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_LUGIA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_HO_OH] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(TM50_OVERHEAT) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CELEBI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_OLD_UNOWN_B] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_C] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_D] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_E] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_F] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_G] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_H] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_I] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_J] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_K] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_L] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_M] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_N] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_O] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_P] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_Q] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_R] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_S] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_T] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_U] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_V] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_W] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_X] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_Y] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_Z] = TMHM_LEARNSET(0), + + [SPECIES_TREECKO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GROVYLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SCEPTILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TORCHIC] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_COMBUSKEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BLAZIKEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MUDKIP] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MARSHTOMP] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SWAMPERT] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_POOCHYENA] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MIGHTYENA] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ZIGZAGOON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_LINOONE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_WURMPLE] = TMHM_LEARNSET(0), + + [SPECIES_SILCOON] = TMHM_LEARNSET(0), + + [SPECIES_BEAUTIFLY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_CASCOON] = TMHM_LEARNSET(0), + + [SPECIES_DUSTOX] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_LOTAD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH)), + + [SPECIES_LOMBRE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LUDICOLO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SEEDOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NUZLEAF] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHIFTRY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NINCADA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_NINJASK] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_SHEDINJA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_TAILLOW] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_SWELLOW] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_SHROOMISH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_BRELOOM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SPINDA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_WINGULL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_PELIPPER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF)), + + [SPECIES_SURSKIT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_MASQUERAIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_WAILMER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_WAILORD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SKITTY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_DELCATTY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KECLEON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BALTOY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_CLAYDOL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NOSEPASS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TORKOAL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SABLEYE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BARBOACH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_WHISCASH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LUVDISC] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CORPHISH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL)), + + [SPECIES_CRAWDAUNT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_FEEBAS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MILOTIC] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CARVANHA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SHARPEDO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_TRAPINCH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_VIBRAVA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_FLYGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAKUHITA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HARIYAMA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ELECTRIKE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_MANECTRIC] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_NUMEL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CAMERUPT] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SPHEAL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SEALEO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_WALREIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CACNEA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_CACTURNE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_SNORUNT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_GLALIE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_LUNATONE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_SOLROCK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM50_OVERHEAT) + | TMHM(HM05_FLASH)), + + [SPECIES_AZURILL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL)), + + [SPECIES_SPOINK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_GRUMPIG] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_PLUSLE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_MINUN] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_MAWILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEDITITE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEDICHAM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SWABLU] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_ALTARIA] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_WYNAUT] = TMHM_LEARNSET(0), + + [SPECIES_DUSKULL] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_DUSCLOPS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ROSELIA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_SLAKOTH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_VIGOROTH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SLAKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GULPIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SWALOT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TROPIUS] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_WHISMUR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT)), + + [SPECIES_LOUDRED] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_EXPLOUD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CLAMPERL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_HUNTAIL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GOREBYSS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_ABSOL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHUPPET] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_BANETTE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_SEVIPER] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ZANGOOSE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RELICANTH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_ARON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_LAIRON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_AGGRON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CASTFORM] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_VOLBEAT] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_ILLUMISE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_LILEEP] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT)), + + [SPECIES_CRADILY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ANORITH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ARMALDO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RALTS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_KIRLIA] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_GARDEVOIR] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_BAGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHELGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SALAMENCE] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BELDUM] = TMHM_LEARNSET(0), + + [SPECIES_METANG] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_METAGROSS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_REGIROCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_REGICE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_REGISTEEL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KYOGRE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GROUDON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RAYQUAZA] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM50_OVERHEAT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LATIAS] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LATIOS] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_JIRACHI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_DEOXYS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHIMECHO] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + +}; + +#endif // GUARD_TMHM_LEARNSETS_H diff --git a/include/data/pokemon/trainer_class_lookups.h b/include/data/pokemon/trainer_class_lookups.h new file mode 100644 index 000000000..ec4dbf0fb --- /dev/null +++ b/include/data/pokemon/trainer_class_lookups.h @@ -0,0 +1,176 @@ +#ifndef POKEEMERALD_TRAINER_CLASS_LOOKUPS_H +#define POKEEMERALD_TRAINER_CLASS_LOOKUPS_H + +const u8 gFacilityClassToPicIndex[] = +{ + TRAINER_PIC_HIKER, // FACILITY_CLASS_HIKER + TRAINER_PIC_AQUA_GRUNT_M, // FACILITY_CLASS_TEAM_AQUA_1 + TRAINER_PIC_POKEMON_BREEDER_F, // FACILITY_CLASS_PKMN_BREEDER_1 + TRAINER_PIC_COOL_TRAINER_M, // FACILITY_CLASS_COOLTRAINER_M + TRAINER_PIC_BIRD_KEEPER, // FACILITY_CLASS_BIRD_KEEPER + TRAINER_PIC_COLLECTOR, // FACILITY_CLASS_COLLECTOR + TRAINER_PIC_AQUA_GRUNT_F, // FACILITY_CLASS_TEAM_AQUA_2 + TRAINER_PIC_SWIMMER_M, // FACILITY_CLASS_SWIMMER_M + TRAINER_PIC_MAGMA_GRUNT_M, // FACILITY_CLASS_TEAM_MAGMA_1 + TRAINER_PIC_EXPERT_M, // FACILITY_CLASS_EXPERT_M + TRAINER_PIC_BLACK_BELT, // FACILITY_CLASS_BLACK_BELT + TRAINER_PIC_AQUA_LEADER_ARCHIE, // FACILITY_CLASS_AQUA_LEADER + TRAINER_PIC_HEX_MANIAC, // FACILITY_CLASS_HEX_MANIAC + TRAINER_PIC_AROMA_LADY, // FACILITY_CLASS_AROMA_LADY + TRAINER_PIC_RUIN_MANIAC, // FACILITY_CLASS_RUIN_MANIAC + TRAINER_PIC_INTERVIEWER, // FACILITY_CLASS_INTERVIEWER + TRAINER_PIC_TUBER_F, // FACILITY_CLASS_TUBER_1 + TRAINER_PIC_TUBER_M, // FACILITY_CLASS_TUBER_2 + TRAINER_PIC_COOL_TRAINER_F, // FACILITY_CLASS_COOLTRAINER_F + TRAINER_PIC_LADY, // FACILITY_CLASS_LADY + TRAINER_PIC_BEAUTY, // FACILITY_CLASS_BEAUTY + TRAINER_PIC_RICH_BOY, // FACILITY_CLASS_RICH_BOY + TRAINER_PIC_EXPERT_F, // FACILITY_CLASS_EXPERT_2 + TRAINER_PIC_POKEMANIAC, // FACILITY_CLASS_POKEMANIAC + TRAINER_PIC_MAGMA_GRUNT_F, // FACILITY_CLASS_TEAM_MAGMA_2 + TRAINER_PIC_GUITARIST, // FACILITY_CLASS_GUITARIST + TRAINER_PIC_KINDLER, // FACILITY_CLASS_KINDLER + TRAINER_PIC_CAMPER, // FACILITY_CLASS_CAMPER + TRAINER_PIC_PICNICKER, // FACILITY_CLASS_PICNICKER + TRAINER_PIC_BUG_MANIAC, // FACILITY_CLASS_BUG_MANIAC + TRAINER_PIC_PSYCHIC_M, // FACILITY_CLASS_PSYCHIC_M + TRAINER_PIC_PSYCHIC_F, // FACILITY_CLASS_PSYCHIC_F + TRAINER_PIC_GENTLEMAN, // FACILITY_CLASS_GENTLEMAN + TRAINER_PIC_ELITE_FOUR_SIDNEY, // FACILITY_CLASS_ELITE_FOUR_1 + TRAINER_PIC_ELITE_FOUR_PHOEBE, // FACILITY_CLASS_ELITE_FOUR_2 + TRAINER_PIC_LEADER_ROXANNE, // FACILITY_CLASS_LEADER_1 + TRAINER_PIC_LEADER_BRAWLY, // FACILITY_CLASS_LEADER_2 + TRAINER_PIC_LEADER_TATE_AND_LIZA, // FACILITY_CLASS_LEADER_3 + TRAINER_PIC_SCHOOL_KID_M, // FACILITY_CLASS_SCHOOL_KID_M + TRAINER_PIC_SCHOOL_KID_F, // FACILITY_CLASS_SCHOOL_KID_F + TRAINER_PIC_SR_AND_JR, // FACILITY_CLASS_SR_AND_JR + TRAINER_PIC_WINSTRATE_M, // FACILITY_CLASS_POKEFAN_1 + TRAINER_PIC_WINSTRATE_F, // FACILITY_CLASS_POKEFAN_2 + TRAINER_PIC_YOUNGSTER, // FACILITY_CLASS_YOUNGSTER + TRAINER_PIC_CHAMPION_WALLACE, // FACILITY_CLASS_CHAMPION + TRAINER_PIC_FISHERMAN, // FACILITY_CLASS_FISHERMAN + TRAINER_PIC_CYCLING_TRIATHLETE_M, // FACILITY_CLASS_TRIATHLETE_1 + TRAINER_PIC_CYCLING_TRIATHLETE_F, // FACILITY_CLASS_TRIATHLETE_2 + TRAINER_PIC_RUNNING_TRIATHLETE_M, // FACILITY_CLASS_TRIATHLETE_3 + TRAINER_PIC_RUNNING_TRIATHLETE_F, // FACILITY_CLASS_TRIATHLETE_4 + TRAINER_PIC_SWIMMING_TRIATHLETE_M, // FACILITY_CLASS_TRIATHLETE_5 + TRAINER_PIC_SWIMMING_TRIATHLETE_F, // FACILITY_CLASS_TRIATHLETE_6 + TRAINER_PIC_DRAGON_TAMER, // FACILITY_CLASS_DRAGON_TAMER + TRAINER_PIC_NINJA_BOY, // FACILITY_CLASS_NINJA_BOY + TRAINER_PIC_BATTLE_GIRL, // FACILITY_CLASS_BATTLE_GIRL + TRAINER_PIC_PARASOL_LADY, // FACILITY_CLASS_PARASOL_LADY + TRAINER_PIC_SWIMMER_F, // FACILITY_CLASS_SWIMMER_F + TRAINER_PIC_TWINS, // FACILITY_CLASS_TWINS + TRAINER_PIC_SAILOR, // FACILITY_CLASS_SAILOR + TRAINER_PIC_WALLY, // FACILITY_CLASS_PKMN_TRAINER_1 + TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_MAY + TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_3 + TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_4 + TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_BRENDAN + TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_6 + TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_7 + TRAINER_PIC_POKEMON_BREEDER_M, // FACILITY_CLASS_PKMN_BREEDER_2 + TRAINER_PIC_BUG_CATCHER, // FACILITY_CLASS_BUG_CATCHER + TRAINER_PIC_POKEMON_RANGER_M, // FACILITY_CLASS_PKMN_RANGER_M + TRAINER_PIC_POKEMON_RANGER_F, // FACILITY_CLASS_PKMN_RANGER_F + TRAINER_PIC_MAGMA_LEADER_MAXIE, // FACILITY_CLASS_MAGMA_LEADER + TRAINER_PIC_LASS, // FACILITY_CLASS_LASS + TRAINER_PIC_YOUNG_COUPLE, // FACILITY_CLASS_YOUNG_COUPLE + TRAINER_PIC_OLD_COUPLE, // FACILITY_CLASS_OLD_COUPLE + TRAINER_PIC_SIS_AND_BRO, // FACILITY_CLASS_SIS_AND_BRO + TRAINER_PIC_STEVEN, // FACILITY_CLASS_PKMN_TRAINER_STEVEN + TRAINER_PIC_SALON_MAIDEN_ANABEL, // FACILITY_CLASS_SALON_MAIDEN + TRAINER_PIC_DOME_ACE_TUCKER, // FACILITY_CLASS_DOME_ACE + TRAINER_PIC_RED, // FACILITY_CLASS_PKMN_TRAINER_RED + TRAINER_PIC_LEAF, // FACILITY_CLASS_PKMN_TRAINER_LEAF + TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_RS_BRENDAN + TRAINER_PIC_RUBY_SAPPHIRE_MAY, // FACILITY_CLASS_PKMN_TRAINER_RS_MAY +}; + +const u8 gFacilityClassToTrainerClass[] = +{ + TRAINER_CLASS_HIKER, // FACILITY_CLASS_HIKER + TRAINER_CLASS_TEAM_AQUA, // FACILITY_CLASS_TEAM_AQUA_1 + TRAINER_CLASS_PKMN_BREEDER, // FACILITY_CLASS_PKMN_BREEDER_1 + TRAINER_CLASS_COOLTRAINER_1, // FACILITY_CLASS_COOLTRAINER_M + TRAINER_CLASS_BIRD_KEEPER, // FACILITY_CLASS_BIRD_KEEPER + TRAINER_CLASS_COLLECTOR, // FACILITY_CLASS_COLLECTOR + TRAINER_CLASS_TEAM_AQUA, // FACILITY_CLASS_TEAM_AQUA_2 + TRAINER_CLASS_SWIMMER_M, // FACILITY_CLASS_SWIMMER_M + TRAINER_CLASS_TEAM_MAGMA, // FACILITY_CLASS_TEAM_MAGMA_1 + TRAINER_CLASS_EXPERT, // FACILITY_CLASS_EXPERT_M + TRAINER_CLASS_BLACK_BELT, // FACILITY_CLASS_BLACK_BELT + TRAINER_CLASS_AQUA_LEADER, // FACILITY_CLASS_AQUA_LEADER + TRAINER_CLASS_HEX_MANIAC, // FACILITY_CLASS_HEX_MANIAC + TRAINER_CLASS_AROMA_LADY, // FACILITY_CLASS_AROMA_LADY + TRAINER_CLASS_RUIN_MANIAC, // FACILITY_CLASS_RUIN_MANIAC + TRAINER_CLASS_INTERVIEWER, // FACILITY_CLASS_INTERVIEWER + TRAINER_CLASS_TUBER_1, // FACILITY_CLASS_TUBER_1 + TRAINER_CLASS_TUBER_2, // FACILITY_CLASS_TUBER_2 + TRAINER_CLASS_COOLTRAINER_1, // FACILITY_CLASS_COOLTRAINER_F + TRAINER_CLASS_LADY, // FACILITY_CLASS_LADY + TRAINER_CLASS_BEAUTY, // FACILITY_CLASS_BEAUTY + TRAINER_CLASS_RICH_BOY, // FACILITY_CLASS_RICH_BOY + TRAINER_CLASS_EXPERT, // FACILITY_CLASS_EXPERT_2 + TRAINER_CLASS_POKEMANIAC, // FACILITY_CLASS_POKEMANIAC + TRAINER_CLASS_TEAM_MAGMA, // FACILITY_CLASS_TEAM_MAGMA_2 + TRAINER_CLASS_GUITARIST, // FACILITY_CLASS_GUITARIST + TRAINER_CLASS_KINDLER, // FACILITY_CLASS_KINDLER + TRAINER_CLASS_CAMPER, // FACILITY_CLASS_CAMPER + TRAINER_CLASS_PICNICKER, // FACILITY_CLASS_PICNICKER + TRAINER_CLASS_BUG_MANIAC, // FACILITY_CLASS_BUG_MANIAC + TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_M + TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_F + TRAINER_CLASS_GENTLEMAN, // FACILITY_CLASS_GENTLEMAN + TRAINER_CLASS_ELITE_FOUR, // FACILITY_CLASS_ELITE_FOUR_1 + TRAINER_CLASS_ELITE_FOUR, // FACILITY_CLASS_ELITE_FOUR_2 + TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_1 + TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_2 + TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_3 + TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_M + TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_F + TRAINER_CLASS_SR_AND_JR, // FACILITY_CLASS_SR_AND_JR + TRAINER_CLASS_POKEFAN, // FACILITY_CLASS_POKEFAN_1 + TRAINER_CLASS_POKEFAN, // FACILITY_CLASS_POKEFAN_2 + TRAINER_CLASS_YOUNGSTER, // FACILITY_CLASS_YOUNGSTER + TRAINER_CLASS_CHAMPION, // FACILITY_CLASS_CHAMPION + TRAINER_CLASS_FISHERMAN, // FACILITY_CLASS_FISHERMAN + TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_1 + TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_2 + TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_3 + TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_4 + TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_5 + TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_6 + TRAINER_CLASS_DRAGON_TAMER, // FACILITY_CLASS_DRAGON_TAMER + TRAINER_CLASS_NINJA_BOY, // FACILITY_CLASS_NINJA_BOY + TRAINER_CLASS_BATTLE_GIRL, // FACILITY_CLASS_BATTLE_GIRL + TRAINER_CLASS_PARASOL_LADY, // FACILITY_CLASS_PARASOL_LADY + TRAINER_CLASS_SWIMMER_F, // FACILITY_CLASS_SWIMMER_F + TRAINER_CLASS_TWINS, // FACILITY_CLASS_TWINS + TRAINER_CLASS_SAILOR, // FACILITY_CLASS_SAILOR + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_1 + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_MAY + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_3 + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_4 + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_BRENDAN + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_6 + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_7 + TRAINER_CLASS_PKMN_BREEDER, // FACILITY_CLASS_PKMN_BREEDER_2 + TRAINER_CLASS_BUG_CATCHER, // FACILITY_CLASS_BUG_CATCHER + TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_M + TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_F + TRAINER_CLASS_MAGMA_LEADER, // FACILITY_CLASS_MAGMA_LEADER + TRAINER_CLASS_LASS, // FACILITY_CLASS_LASS + TRAINER_CLASS_YOUNG_COUPLE, // FACILITY_CLASS_YOUNG_COUPLE + TRAINER_CLASS_OLD_COUPLE, // FACILITY_CLASS_OLD_COUPLE + TRAINER_CLASS_SIS_AND_BRO, // FACILITY_CLASS_SIS_AND_BRO + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_STEVEN + TRAINER_CLASS_SALON_MAIDEN, // FACILITY_CLASS_SALON_MAIDEN + TRAINER_CLASS_DOME_ACE, // FACILITY_CLASS_DOME_ACE + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_RED + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_LEAF + TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_RS_BRENDAN + TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_RS_MAY +}; + +#endif //POKEEMERALD_TRAINER_CLASS_LOOKUPS_H diff --git a/include/data/region_map/region_map_entries.h b/include/data/region_map/region_map_entries.h index 73599c704..9c7e3f2fc 100644 --- a/include/data/region_map/region_map_entries.h +++ b/include/data/region_map/region_map_entries.h @@ -1,421 +1,421 @@ #ifndef GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H #define GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H -static const u8 gMapName_LittlerootTown[] = _("LITTLEROOT TOWN"); -static const u8 gMapName_OldaleTown[] = _("OLDALE TOWN"); -static const u8 gMapName_DewfordTown[] = _("DEWFORD TOWN"); -static const u8 gMapName_LavaridgeTown[] = _("LAVARIDGE TOWN"); -static const u8 gMapName_FallarborTown[] = _("FALLARBOR TOWN"); -static const u8 gMapName_VerdanturfTown[] = _("VERDANTURF TOWN"); -static const u8 gMapName_PacifidlogTown[] = _("PACIFIDLOG TOWN"); -static const u8 gMapName_PetalburgCity[] = _("PETALBURG CITY"); -static const u8 gMapName_SlateportCity[] = _("SLATEPORT CITY"); -static const u8 gMapName_MauvilleCity[] = _("MAUVILLE CITY"); -static const u8 gMapName_RustboroCity[] = _("RUSTBORO CITY"); -static const u8 gMapName_FortreeCity[] = _("FORTREE CITY"); -static const u8 gMapName_LilycoveCity[] = _("LILYCOVE CITY"); -static const u8 gMapName_MossdeepCity[] = _("MOSSDEEP CITY"); -static const u8 gMapName_SootopolisCity[] = _("SOOTOPOLIS CITY"); -static const u8 gMapName_EverGrandeCity[] = _("EVER GRANDE CITY"); -static const u8 gMapName_Route101[] = _("ROUTE 101"); -static const u8 gMapName_Route102[] = _("ROUTE 102"); -static const u8 gMapName_Route103[] = _("ROUTE 103"); -static const u8 gMapName_Route104[] = _("ROUTE 104"); -static const u8 gMapName_Route105[] = _("ROUTE 105"); -static const u8 gMapName_Route106[] = _("ROUTE 106"); -static const u8 gMapName_Route107[] = _("ROUTE 107"); -static const u8 gMapName_Route108[] = _("ROUTE 108"); -static const u8 gMapName_Route109[] = _("ROUTE 109"); -static const u8 gMapName_Route110[] = _("ROUTE 110"); -static const u8 gMapName_Route111[] = _("ROUTE 111"); -static const u8 gMapName_Route112[] = _("ROUTE 112"); -static const u8 gMapName_Route113[] = _("ROUTE 113"); -static const u8 gMapName_Route114[] = _("ROUTE 114"); -static const u8 gMapName_Route115[] = _("ROUTE 115"); -static const u8 gMapName_Route116[] = _("ROUTE 116"); -static const u8 gMapName_Route117[] = _("ROUTE 117"); -static const u8 gMapName_Route118[] = _("ROUTE 118"); -static const u8 gMapName_Route119[] = _("ROUTE 119"); -static const u8 gMapName_Route120[] = _("ROUTE 120"); -static const u8 gMapName_Route121[] = _("ROUTE 121"); -static const u8 gMapName_Route122[] = _("ROUTE 122"); -static const u8 gMapName_Route123[] = _("ROUTE 123"); -static const u8 gMapName_Route124[] = _("ROUTE 124"); -static const u8 gMapName_Route125[] = _("ROUTE 125"); -static const u8 gMapName_Route126[] = _("ROUTE 126"); -static const u8 gMapName_Route127[] = _("ROUTE 127"); -static const u8 gMapName_Route128[] = _("ROUTE 128"); -static const u8 gMapName_Route129[] = _("ROUTE 129"); -static const u8 gMapName_Route130[] = _("ROUTE 130"); -static const u8 gMapName_Route131[] = _("ROUTE 131"); -static const u8 gMapName_Route132[] = _("ROUTE 132"); -static const u8 gMapName_Route133[] = _("ROUTE 133"); -static const u8 gMapName_Route134[] = _("ROUTE 134"); -static const u8 gMapName_Underwater[] = _("UNDERWATER"); -static const u8 gMapName_GraniteCave[] = _("GRANITE CAVE"); -static const u8 gMapName_MtChimney[] = _("MT. CHIMNEY"); -static const u8 gMapName_SafariZone[] = _("SAFARI ZONE"); -static const u8 gMapName_BattleFrontier[] = _("BATTLE FRONTIER"); -static const u8 gMapName_PetalburgWoods[] = _("PETALBURG WOODS"); -static const u8 gMapName_RusturfTunnel[] = _("RUSTURF TUNNEL"); -static const u8 gMapName_AbandonedShip[] = _("ABANDONED SHIP"); -static const u8 gMapName_NewMauville[] = _("NEW MAUVILLE"); -static const u8 gMapName_MeteorFalls[] = _("METEOR FALLS"); -static const u8 gMapName_MtPyre[] = _("MT. PYRE"); +static const u8 sMapName_LittlerootTown[] = _("LITTLEROOT TOWN"); +static const u8 sMapName_OldaleTown[] = _("OLDALE TOWN"); +static const u8 sMapName_DewfordTown[] = _("DEWFORD TOWN"); +static const u8 sMapName_LavaridgeTown[] = _("LAVARIDGE TOWN"); +static const u8 sMapName_FallarborTown[] = _("FALLARBOR TOWN"); +static const u8 sMapName_VerdanturfTown[] = _("VERDANTURF TOWN"); +static const u8 sMapName_PacifidlogTown[] = _("PACIFIDLOG TOWN"); +static const u8 sMapName_PetalburgCity[] = _("PETALBURG CITY"); +static const u8 sMapName_SlateportCity[] = _("SLATEPORT CITY"); +static const u8 sMapName_MauvilleCity[] = _("MAUVILLE CITY"); +static const u8 sMapName_RustboroCity[] = _("RUSTBORO CITY"); +static const u8 sMapName_FortreeCity[] = _("FORTREE CITY"); +static const u8 sMapName_LilycoveCity[] = _("LILYCOVE CITY"); +static const u8 sMapName_MossdeepCity[] = _("MOSSDEEP CITY"); +static const u8 sMapName_SootopolisCity[] = _("SOOTOPOLIS CITY"); +static const u8 sMapName_EverGrandeCity[] = _("EVER GRANDE CITY"); +static const u8 sMapName_Route101[] = _("ROUTE 101"); +static const u8 sMapName_Route102[] = _("ROUTE 102"); +static const u8 sMapName_Route103[] = _("ROUTE 103"); +static const u8 sMapName_Route104[] = _("ROUTE 104"); +static const u8 sMapName_Route105[] = _("ROUTE 105"); +static const u8 sMapName_Route106[] = _("ROUTE 106"); +static const u8 sMapName_Route107[] = _("ROUTE 107"); +static const u8 sMapName_Route108[] = _("ROUTE 108"); +static const u8 sMapName_Route109[] = _("ROUTE 109"); +static const u8 sMapName_Route110[] = _("ROUTE 110"); +static const u8 sMapName_Route111[] = _("ROUTE 111"); +static const u8 sMapName_Route112[] = _("ROUTE 112"); +static const u8 sMapName_Route113[] = _("ROUTE 113"); +static const u8 sMapName_Route114[] = _("ROUTE 114"); +static const u8 sMapName_Route115[] = _("ROUTE 115"); +static const u8 sMapName_Route116[] = _("ROUTE 116"); +static const u8 sMapName_Route117[] = _("ROUTE 117"); +static const u8 sMapName_Route118[] = _("ROUTE 118"); +static const u8 sMapName_Route119[] = _("ROUTE 119"); +static const u8 sMapName_Route120[] = _("ROUTE 120"); +static const u8 sMapName_Route121[] = _("ROUTE 121"); +static const u8 sMapName_Route122[] = _("ROUTE 122"); +static const u8 sMapName_Route123[] = _("ROUTE 123"); +static const u8 sMapName_Route124[] = _("ROUTE 124"); +static const u8 sMapName_Route125[] = _("ROUTE 125"); +static const u8 sMapName_Route126[] = _("ROUTE 126"); +static const u8 sMapName_Route127[] = _("ROUTE 127"); +static const u8 sMapName_Route128[] = _("ROUTE 128"); +static const u8 sMapName_Route129[] = _("ROUTE 129"); +static const u8 sMapName_Route130[] = _("ROUTE 130"); +static const u8 sMapName_Route131[] = _("ROUTE 131"); +static const u8 sMapName_Route132[] = _("ROUTE 132"); +static const u8 sMapName_Route133[] = _("ROUTE 133"); +static const u8 sMapName_Route134[] = _("ROUTE 134"); +static const u8 sMapName_Underwater[] = _("UNDERWATER"); +static const u8 sMapName_GraniteCave[] = _("GRANITE CAVE"); +static const u8 sMapName_MtChimney[] = _("MT. CHIMNEY"); +static const u8 sMapName_SafariZone[] = _("SAFARI ZONE"); +static const u8 sMapName_BattleFrontier[] = _("BATTLE FRONTIER"); +static const u8 sMapName_PetalburgWoods[] = _("PETALBURG WOODS"); +static const u8 sMapName_RusturfTunnel[] = _("RUSTURF TUNNEL"); +static const u8 sMapName_AbandonedShip[] = _("ABANDONED SHIP"); +static const u8 sMapName_NewMauville[] = _("NEW MAUVILLE"); +static const u8 sMapName_MeteorFalls[] = _("METEOR FALLS"); +static const u8 sMapName_MtPyre[] = _("MT. PYRE"); // This was the Aqua or Magma hideout in Ruby/Sapphire, but each team has a // hideout in Emerald with their own new region map entries, and this name // doesn't seem to be used anymore. -static const u8 gMapName_AquaHideoutOld[] = _("{AQUA} HIDEOUT"); -static const u8 gMapName_ShoalCave[] = _("SHOAL CAVE"); -static const u8 gMapName_SeafloorCavern[] = _("SEAFLOOR CAVERN"); -static const u8 gMapName_VictoryRoad[] = _("VICTORY ROAD"); -static const u8 gMapName_MirageIsland[] = _("MIRAGE ISLAND"); -static const u8 gMapName_CaveOfOrigin[] = _("CAVE OF ORIGIN"); -static const u8 gMapName_SouthernIsland[] = _("SOUTHERN ISLAND"); -static const u8 gMapName_FieryPath[] = _("FIERY PATH"); -static const u8 gMapName_JaggedPass[] = _("JAGGED PASS"); -static const u8 gMapName_SealedChamber[] = _("SEALED CHAMBER"); -static const u8 gMapName_ScorchedSlab[] = _("SCORCHED SLAB"); -static const u8 gMapName_IslandCave[] = _("ISLAND CAVE"); -static const u8 gMapName_DesertRuins[] = _("DESERT RUINS"); -static const u8 gMapName_AncientTomb[] = _("ANCIENT TOMB"); -static const u8 gMapName_InsideOfTruck[] = _("INSIDE OF TRUCK"); -static const u8 gMapName_SkyPillar[] = _("SKY PILLAR"); -static const u8 gMapName_SecretBase[] = _("SECRET BASE"); -static const u8 gMapName_None[] = _(""); -static const u8 gMapName_PalletTown[] = _("PALLET TOWN"); -static const u8 gMapName_ViridianCity[] = _("VIRIDIAN CITY"); -static const u8 gMapName_PewterCity[] = _("PEWTER CITY"); -static const u8 gMapName_CeruleanCity[] = _("CERULEAN CITY"); -static const u8 gMapName_LavenderTown[] = _("LAVENDER TOWN"); -static const u8 gMapName_VermilionCity[] = _("VERMILION CITY"); -static const u8 gMapName_CeladonCity[] = _("CELADON CITY"); -static const u8 gMapName_FuchsiaCity[] = _("FUCHSIA CITY"); -static const u8 gMapName_CinnabarIsland[] = _("CINNABAR ISLAND"); -static const u8 gMapName_IndigoPlateau[] = _("INDIGO PLATEAU"); -static const u8 gMapName_SaffronCity[] = _("SAFFRON CITY"); -static const u8 gMapName_Route4[] = _("ROUTE 4"); -static const u8 gMapName_Route10[] = _("ROUTE 10"); -static const u8 gMapName_Route1[] = _("ROUTE 1"); -static const u8 gMapName_Route2[] = _("ROUTE 2"); -static const u8 gMapName_Route3[] = _("ROUTE 3"); -static const u8 gMapName_Route4_2[] = _("ROUTE 4"); -static const u8 gMapName_Route5[] = _("ROUTE 5"); -static const u8 gMapName_Route6[] = _("ROUTE 6"); -static const u8 gMapName_Route7[] = _("ROUTE 7"); -static const u8 gMapName_Route8[] = _("ROUTE 8"); -static const u8 gMapName_Route9[] = _("ROUTE 9"); -static const u8 gMapName_Route10_2[] = _("ROUTE 10"); -static const u8 gMapName_Route11[] = _("ROUTE 11"); -static const u8 gMapName_Route12[] = _("ROUTE 12"); -static const u8 gMapName_Route13[] = _("ROUTE 13"); -static const u8 gMapName_Route14[] = _("ROUTE 14"); -static const u8 gMapName_Route15[] = _("ROUTE 15"); -static const u8 gMapName_Route16[] = _("ROUTE 16"); -static const u8 gMapName_Route17[] = _("ROUTE 17"); -static const u8 gMapName_Route18[] = _("ROUTE 18"); -static const u8 gMapName_Route19[] = _("ROUTE 19"); -static const u8 gMapName_Route20[] = _("ROUTE 20"); -static const u8 gMapName_Route21[] = _("ROUTE 21"); -static const u8 gMapName_Route22[] = _("ROUTE 22"); -static const u8 gMapName_Route23[] = _("ROUTE 23"); -static const u8 gMapName_Route24[] = _("ROUTE 24"); -static const u8 gMapName_Route25[] = _("ROUTE 25"); -static const u8 gMapName_ViridianForest[] = _("VIRIDIAN FOREST"); -static const u8 gMapName_MtMoon[] = _("MT. MOON"); -static const u8 gMapName_SSAnne[] = _("S.S. ANNE"); -static const u8 gMapName_UndergroundPath[] = _("UNDERGROUND PATH"); -static const u8 gMapName_UndergroundPath2[] = _("UNDERGROUND PATH"); -static const u8 gMapName_DiglettsCave[] = _("DIGLETT’S CAVE"); -static const u8 gMapName_KantoVictoryRoad[] = _("VICTORY ROAD"); -static const u8 gMapName_RocketHideout[] = _("ROCKET HIDEOUT"); -static const u8 gMapName_SilphCo[] = _("SILPH CO."); -static const u8 gMapName_PokemonMansion[] = _("POKéMON MANSION"); -static const u8 gMapName_KantoSafariZone[] = _("SAFARI ZONE"); -static const u8 gMapName_PokemonLeague[] = _("POKéMON LEAGUE"); -static const u8 gMapName_RockTunnel[] = _("ROCK TUNNEL"); -static const u8 gMapName_SeafoamIslands[] = _("SEAFOAM ISLANDS"); -static const u8 gMapName_PokemonTower[] = _("POKéMON TOWER"); -static const u8 gMapName_CeruleanCave[] = _("CERULEAN CAVE"); -static const u8 gMapName_PowerPlant[] = _("POWER PLANT"); -static const u8 gMapName_OneIsland[] = _("ONE ISLAND"); -static const u8 gMapName_TwoIsland[] = _("TWO ISLAND"); -static const u8 gMapName_ThreeIsland[] = _("THREE ISLAND"); -static const u8 gMapName_FourIsland[] = _("FOUR ISLAND"); -static const u8 gMapName_FiveIsland[] = _("FIVE ISLAND"); -static const u8 gMapName_SevenIsland[] = _("SEVEN ISLAND"); -static const u8 gMapName_SixIsland[] = _("SIX ISLAND"); -static const u8 gMapName_KindleRoad[] = _("KINDLE ROAD"); -static const u8 gMapName_TreasureBeach[] = _("TREASURE BEACH"); -static const u8 gMapName_CapeBrink[] = _("CAPE BRINK"); -static const u8 gMapName_BondBridge[] = _("BOND BRIDGE"); -static const u8 gMapName_ThreeIslePort[] = _("THREE ISLE PORT"); -static const u8 gMapName_SeviiIsle6[] = _("SEVII ISLE 6"); -static const u8 gMapName_SeviiIsle7[] = _("SEVII ISLE 7"); -static const u8 gMapName_SeviiIsle8[] = _("SEVII ISLE 8"); -static const u8 gMapName_SeviiIsle9[] = _("SEVII ISLE 9"); -static const u8 gMapName_ResortGorgeous[] = _("RESORT GORGEOUS"); -static const u8 gMapName_WaterLabyrinth[] = _("WATER LABYRINTH"); -static const u8 gMapName_FiveIsleMeadow[] = _("FIVE ISLE MEADOW"); -static const u8 gMapName_MemorialPillar[] = _("MEMORIAL PILLAR"); -static const u8 gMapName_OutcastIsland[] = _("OUTCAST ISLAND"); -static const u8 gMapName_GreenPath[] = _("GREEN PATH"); -static const u8 gMapName_WaterPath[] = _("WATER PATH"); -static const u8 gMapName_RuinValley[] = _("RUIN VALLEY"); -static const u8 gMapName_TrainerTower[] = _("TRAINER TOWER"); -static const u8 gMapName_CanyonEntrance[] = _("CANYON ENTRANCE"); -static const u8 gMapName_SevaultCanyon[] = _("SEVAULT CANYON"); -static const u8 gMapName_TanobyRuins[] = _("TANOBY RUINS"); -static const u8 gMapName_SeviiIsle22[] = _("SEVII ISLE 22"); -static const u8 gMapName_SeviiIsle23[] = _("SEVII ISLE 23"); -static const u8 gMapName_SeviiIsle24[] = _("SEVII ISLE 24"); -static const u8 gMapName_NavelRock[] = _("NAVEL ROCK"); -static const u8 gMapName_MtEmber[] = _("MT. EMBER"); -static const u8 gMapName_BerryForest[] = _("BERRY FOREST"); -static const u8 gMapName_IcefallCave[] = _("ICEFALL CAVE"); -static const u8 gMapName_RocketWarehouse[] = _("ROCKET WAREHOUSE"); -static const u8 gMapName_TrainerTower2[] = _("TRAINER TOWER"); -static const u8 gMapName_DottedHole[] = _("DOTTED HOLE"); -static const u8 gMapName_LostCave[] = _("LOST CAVE"); -static const u8 gMapName_PatternBush[] = _("PATTERN BUSH"); -static const u8 gMapName_AlteringCave[] = _("ALTERING CAVE"); -static const u8 gMapName_TanobyChambers[] = _("TANOBY CHAMBERS"); -static const u8 gMapName_ThreeIslePath[] = _("THREE ISLE PATH"); -static const u8 gMapName_TanobyKey[] = _("TANOBY KEY"); -static const u8 gMapName_BirthIsland[] = _("BIRTH ISLAND"); -static const u8 gMapName_MoneanChamber[] = _("MONEAN CHAMBER"); -static const u8 gMapName_LiptooChamber[] = _("LIPTOO CHAMBER"); -static const u8 gMapName_WeepthChamber[] = _("WEEPTH CHAMBER"); -static const u8 gMapName_DilfordChamber[] = _("DILFORD CHAMBER"); -static const u8 gMapName_ScufibChamber[] = _("SCUFIB CHAMBER"); -static const u8 gMapName_RixyChamber[] = _("RIXY CHAMBER"); -static const u8 gMapName_ViapoisChamber[] = _("VIAPOIS CHAMBER"); -static const u8 gMapName_EmberSpa[] = _("EMBER SPA"); -static const u8 gMapName_SpecialArea[] = _("SPECIAL AREA"); -static const u8 gMapName_AquaHideout[] = _("AQUA HIDEOUT"); -static const u8 gMapName_MagmaHideout[] = _("MAGMA HIDEOUT"); -static const u8 gMapName_MirageTower[] = _("MIRAGE TOWER"); -static const u8 gMapName_FarawayIsland[] = _("FARAWAY ISLAND"); -static const u8 gMapName_ArtisanCave[] = _("ARTISAN CAVE"); -static const u8 gMapName_MarineCave[] = _("MARINE CAVE"); -static const u8 gMapName_TerraCave[] = _("TERRA CAVE"); -static const u8 gMapName_DesertUnderpass[] = _("DESERT UNDERPASS"); -static const u8 gMapName_TrainerHill[] = _("TRAINER HILL"); +static const u8 sMapName_AquaHideoutOld[] = _("{AQUA} HIDEOUT"); +static const u8 sMapName_ShoalCave[] = _("SHOAL CAVE"); +static const u8 sMapName_SeafloorCavern[] = _("SEAFLOOR CAVERN"); +static const u8 sMapName_VictoryRoad[] = _("VICTORY ROAD"); +static const u8 sMapName_MirageIsland[] = _("MIRAGE ISLAND"); +static const u8 sMapName_CaveOfOrigin[] = _("CAVE OF ORIGIN"); +static const u8 sMapName_SouthernIsland[] = _("SOUTHERN ISLAND"); +static const u8 sMapName_FieryPath[] = _("FIERY PATH"); +static const u8 sMapName_JaggedPass[] = _("JAGGED PASS"); +static const u8 sMapName_SealedChamber[] = _("SEALED CHAMBER"); +static const u8 sMapName_ScorchedSlab[] = _("SCORCHED SLAB"); +static const u8 sMapName_IslandCave[] = _("ISLAND CAVE"); +static const u8 sMapName_DesertRuins[] = _("DESERT RUINS"); +static const u8 sMapName_AncientTomb[] = _("ANCIENT TOMB"); +static const u8 sMapName_InsideOfTruck[] = _("INSIDE OF TRUCK"); +static const u8 sMapName_SkyPillar[] = _("SKY PILLAR"); +static const u8 sMapName_SecretBase[] = _("SECRET BASE"); +static const u8 sMapName_None[] = _(""); +static const u8 sMapName_PalletTown[] = _("PALLET TOWN"); +static const u8 sMapName_ViridianCity[] = _("VIRIDIAN CITY"); +static const u8 sMapName_PewterCity[] = _("PEWTER CITY"); +static const u8 sMapName_CeruleanCity[] = _("CERULEAN CITY"); +static const u8 sMapName_LavenderTown[] = _("LAVENDER TOWN"); +static const u8 sMapName_VermilionCity[] = _("VERMILION CITY"); +static const u8 sMapName_CeladonCity[] = _("CELADON CITY"); +static const u8 sMapName_FuchsiaCity[] = _("FUCHSIA CITY"); +static const u8 sMapName_CinnabarIsland[] = _("CINNABAR ISLAND"); +static const u8 sMapName_IndigoPlateau[] = _("INDIGO PLATEAU"); +static const u8 sMapName_SaffronCity[] = _("SAFFRON CITY"); +static const u8 sMapName_Route4[] = _("ROUTE 4"); +static const u8 sMapName_Route10[] = _("ROUTE 10"); +static const u8 sMapName_Route1[] = _("ROUTE 1"); +static const u8 sMapName_Route2[] = _("ROUTE 2"); +static const u8 sMapName_Route3[] = _("ROUTE 3"); +static const u8 sMapName_Route4_2[] = _("ROUTE 4"); +static const u8 sMapName_Route5[] = _("ROUTE 5"); +static const u8 sMapName_Route6[] = _("ROUTE 6"); +static const u8 sMapName_Route7[] = _("ROUTE 7"); +static const u8 sMapName_Route8[] = _("ROUTE 8"); +static const u8 sMapName_Route9[] = _("ROUTE 9"); +static const u8 sMapName_Route10_2[] = _("ROUTE 10"); +static const u8 sMapName_Route11[] = _("ROUTE 11"); +static const u8 sMapName_Route12[] = _("ROUTE 12"); +static const u8 sMapName_Route13[] = _("ROUTE 13"); +static const u8 sMapName_Route14[] = _("ROUTE 14"); +static const u8 sMapName_Route15[] = _("ROUTE 15"); +static const u8 sMapName_Route16[] = _("ROUTE 16"); +static const u8 sMapName_Route17[] = _("ROUTE 17"); +static const u8 sMapName_Route18[] = _("ROUTE 18"); +static const u8 sMapName_Route19[] = _("ROUTE 19"); +static const u8 sMapName_Route20[] = _("ROUTE 20"); +static const u8 sMapName_Route21[] = _("ROUTE 21"); +static const u8 sMapName_Route22[] = _("ROUTE 22"); +static const u8 sMapName_Route23[] = _("ROUTE 23"); +static const u8 sMapName_Route24[] = _("ROUTE 24"); +static const u8 sMapName_Route25[] = _("ROUTE 25"); +static const u8 sMapName_ViridianForest[] = _("VIRIDIAN FOREST"); +static const u8 sMapName_MtMoon[] = _("MT. MOON"); +static const u8 sMapName_SSAnne[] = _("S.S. ANNE"); +static const u8 sMapName_UndergroundPath[] = _("UNDERGROUND PATH"); +static const u8 sMapName_UndergroundPath2[] = _("UNDERGROUND PATH"); +static const u8 sMapName_DiglettsCave[] = _("DIGLETT’S CAVE"); +static const u8 sMapName_KantoVictoryRoad[] = _("VICTORY ROAD"); +static const u8 sMapName_RocketHideout[] = _("ROCKET HIDEOUT"); +static const u8 sMapName_SilphCo[] = _("SILPH CO."); +static const u8 sMapName_PokemonMansion[] = _("POKéMON MANSION"); +static const u8 sMapName_KantoSafariZone[] = _("SAFARI ZONE"); +static const u8 sMapName_PokemonLeague[] = _("POKéMON LEAGUE"); +static const u8 sMapName_RockTunnel[] = _("ROCK TUNNEL"); +static const u8 sMapName_SeafoamIslands[] = _("SEAFOAM ISLANDS"); +static const u8 sMapName_PokemonTower[] = _("POKéMON TOWER"); +static const u8 sMapName_CeruleanCave[] = _("CERULEAN CAVE"); +static const u8 sMapName_PowerPlant[] = _("POWER PLANT"); +static const u8 sMapName_OneIsland[] = _("ONE ISLAND"); +static const u8 sMapName_TwoIsland[] = _("TWO ISLAND"); +static const u8 sMapName_ThreeIsland[] = _("THREE ISLAND"); +static const u8 sMapName_FourIsland[] = _("FOUR ISLAND"); +static const u8 sMapName_FiveIsland[] = _("FIVE ISLAND"); +static const u8 sMapName_SevenIsland[] = _("SEVEN ISLAND"); +static const u8 sMapName_SixIsland[] = _("SIX ISLAND"); +static const u8 sMapName_KindleRoad[] = _("KINDLE ROAD"); +static const u8 sMapName_TreasureBeach[] = _("TREASURE BEACH"); +static const u8 sMapName_CapeBrink[] = _("CAPE BRINK"); +static const u8 sMapName_BondBridge[] = _("BOND BRIDGE"); +static const u8 sMapName_ThreeIslePort[] = _("THREE ISLE PORT"); +static const u8 sMapName_SeviiIsle6[] = _("SEVII ISLE 6"); +static const u8 sMapName_SeviiIsle7[] = _("SEVII ISLE 7"); +static const u8 sMapName_SeviiIsle8[] = _("SEVII ISLE 8"); +static const u8 sMapName_SeviiIsle9[] = _("SEVII ISLE 9"); +static const u8 sMapName_ResortGorgeous[] = _("RESORT GORGEOUS"); +static const u8 sMapName_WaterLabyrinth[] = _("WATER LABYRINTH"); +static const u8 sMapName_FiveIsleMeadow[] = _("FIVE ISLE MEADOW"); +static const u8 sMapName_MemorialPillar[] = _("MEMORIAL PILLAR"); +static const u8 sMapName_OutcastIsland[] = _("OUTCAST ISLAND"); +static const u8 sMapName_GreenPath[] = _("GREEN PATH"); +static const u8 sMapName_WaterPath[] = _("WATER PATH"); +static const u8 sMapName_RuinValley[] = _("RUIN VALLEY"); +static const u8 sMapName_TrainerTower[] = _("TRAINER TOWER"); +static const u8 sMapName_CanyonEntrance[] = _("CANYON ENTRANCE"); +static const u8 sMapName_SevaultCanyon[] = _("SEVAULT CANYON"); +static const u8 sMapName_TanobyRuins[] = _("TANOBY RUINS"); +static const u8 sMapName_SeviiIsle22[] = _("SEVII ISLE 22"); +static const u8 sMapName_SeviiIsle23[] = _("SEVII ISLE 23"); +static const u8 sMapName_SeviiIsle24[] = _("SEVII ISLE 24"); +static const u8 sMapName_NavelRock[] = _("NAVEL ROCK"); +static const u8 sMapName_MtEmber[] = _("MT. EMBER"); +static const u8 sMapName_BerryForest[] = _("BERRY FOREST"); +static const u8 sMapName_IcefallCave[] = _("ICEFALL CAVE"); +static const u8 sMapName_RocketWarehouse[] = _("ROCKET WAREHOUSE"); +static const u8 sMapName_TrainerTower2[] = _("TRAINER TOWER"); +static const u8 sMapName_DottedHole[] = _("DOTTED HOLE"); +static const u8 sMapName_LostCave[] = _("LOST CAVE"); +static const u8 sMapName_PatternBush[] = _("PATTERN BUSH"); +static const u8 sMapName_AlteringCave[] = _("ALTERING CAVE"); +static const u8 sMapName_TanobyChambers[] = _("TANOBY CHAMBERS"); +static const u8 sMapName_ThreeIslePath[] = _("THREE ISLE PATH"); +static const u8 sMapName_TanobyKey[] = _("TANOBY KEY"); +static const u8 sMapName_BirthIsland[] = _("BIRTH ISLAND"); +static const u8 sMapName_MoneanChamber[] = _("MONEAN CHAMBER"); +static const u8 sMapName_LiptooChamber[] = _("LIPTOO CHAMBER"); +static const u8 sMapName_WeepthChamber[] = _("WEEPTH CHAMBER"); +static const u8 sMapName_DilfordChamber[] = _("DILFORD CHAMBER"); +static const u8 sMapName_ScufibChamber[] = _("SCUFIB CHAMBER"); +static const u8 sMapName_RixyChamber[] = _("RIXY CHAMBER"); +static const u8 sMapName_ViapoisChamber[] = _("VIAPOIS CHAMBER"); +static const u8 sMapName_EmberSpa[] = _("EMBER SPA"); +static const u8 sMapName_SpecialArea[] = _("SPECIAL AREA"); +static const u8 sMapName_AquaHideout[] = _("AQUA HIDEOUT"); +static const u8 sMapName_MagmaHideout[] = _("MAGMA HIDEOUT"); +static const u8 sMapName_MirageTower[] = _("MIRAGE TOWER"); +static const u8 sMapName_FarawayIsland[] = _("FARAWAY ISLAND"); +static const u8 sMapName_ArtisanCave[] = _("ARTISAN CAVE"); +static const u8 sMapName_MarineCave[] = _("MARINE CAVE"); +static const u8 sMapName_TerraCave[] = _("TERRA CAVE"); +static const u8 sMapName_DesertUnderpass[] = _("DESERT UNDERPASS"); +static const u8 sMapName_TrainerHill[] = _("TRAINER HILL"); const struct RegionMapLocation gRegionMapEntries[] = { - { 4, 11, 1, 1, gMapName_LittlerootTown}, - { 4, 9, 1, 1, gMapName_OldaleTown}, - { 2, 14, 1, 1, gMapName_DewfordTown}, - { 5, 3, 1, 1, gMapName_LavaridgeTown}, - { 3, 0, 1, 1, gMapName_FallarborTown}, - { 4, 6, 1, 1, gMapName_VerdanturfTown}, - {17, 10, 1, 1, gMapName_PacifidlogTown}, - { 1, 9, 1, 1, gMapName_PetalburgCity}, - { 8, 10, 1, 2, gMapName_SlateportCity}, - { 8, 6, 2, 1, gMapName_MauvilleCity}, - { 0, 5, 1, 2, gMapName_RustboroCity}, - {12, 0, 1, 1, gMapName_FortreeCity}, - {18, 3, 2, 1, gMapName_LilycoveCity}, - {24, 5, 2, 1, gMapName_MossdeepCity}, - {21, 7, 1, 1, gMapName_SootopolisCity}, - {27, 8, 1, 2, gMapName_EverGrandeCity}, - { 4, 10, 1, 1, gMapName_Route101}, - { 2, 9, 2, 1, gMapName_Route102}, - { 4, 8, 4, 1, gMapName_Route103}, - { 0, 7, 1, 3, gMapName_Route104}, - { 0, 10, 1, 3, gMapName_Route105}, - { 0, 13, 2, 1, gMapName_Route106}, - { 3, 14, 3, 1, gMapName_Route107}, - { 6, 14, 2, 1, gMapName_Route108}, - { 8, 12, 1, 3, gMapName_Route109}, - { 8, 7, 1, 3, gMapName_Route110}, - { 8, 0, 1, 6, gMapName_Route111}, - { 6, 3, 2, 1, gMapName_Route112}, - { 4, 0, 4, 1, gMapName_Route113}, - { 1, 0, 2, 3, gMapName_Route114}, - { 0, 2, 1, 3, gMapName_Route115}, - { 1, 5, 4, 1, gMapName_Route116}, - { 5, 6, 3, 1, gMapName_Route117}, - {10, 6, 2, 1, gMapName_Route118}, - {11, 0, 1, 6, gMapName_Route119}, - {13, 0, 1, 4, gMapName_Route120}, - {14, 3, 4, 1, gMapName_Route121}, - {16, 4, 1, 2, gMapName_Route122}, - {12, 6, 5, 1, gMapName_Route123}, - {20, 3, 4, 3, gMapName_Route124}, - {24, 3, 2, 2, gMapName_Route125}, - {20, 6, 3, 3, gMapName_Route126}, - {23, 6, 3, 3, gMapName_Route127}, - {23, 9, 4, 1, gMapName_Route128}, - {24, 10, 2, 1, gMapName_Route129}, - {21, 10, 3, 1, gMapName_Route130}, - {18, 10, 3, 1, gMapName_Route131}, - {15, 10, 2, 1, gMapName_Route132}, - {12, 10, 3, 1, gMapName_Route133}, - { 9, 10, 3, 1, gMapName_Route134}, - {20, 3, 4, 3, gMapName_Underwater}, - {20, 6, 3, 3, gMapName_Underwater}, - {23, 6, 3, 3, gMapName_Underwater}, - {23, 9, 4, 1, gMapName_Underwater}, - {21, 7, 1, 1, gMapName_Underwater}, - { 1, 13, 1, 1, gMapName_GraniteCave}, - { 6, 2, 1, 1, gMapName_MtChimney}, - {16, 2, 1, 1, gMapName_SafariZone}, - {22, 12, 1, 1, gMapName_BattleFrontier}, - { 0, 8, 1, 1, gMapName_PetalburgWoods}, - { 2, 5, 1, 1, gMapName_RusturfTunnel}, - { 6, 14, 1, 1, gMapName_AbandonedShip}, - { 8, 7, 1, 1, gMapName_NewMauville}, - { 0, 3, 1, 1, gMapName_MeteorFalls}, - { 1, 2, 1, 1, gMapName_MeteorFalls}, - {16, 4, 1, 1, gMapName_MtPyre}, - {19, 3, 1, 1, gMapName_AquaHideoutOld}, - {24, 4, 1, 1, gMapName_ShoalCave}, - {24, 9, 1, 1, gMapName_SeafloorCavern}, - {24, 9, 1, 1, gMapName_Underwater}, - {27, 9, 1, 1, gMapName_VictoryRoad}, - {17, 10, 1, 1, gMapName_MirageIsland}, - {21, 7, 1, 1, gMapName_CaveOfOrigin}, - {12, 14, 1, 1, gMapName_SouthernIsland}, - { 6, 3, 1, 1, gMapName_FieryPath}, - { 7, 3, 1, 1, gMapName_FieryPath}, - { 6, 3, 1, 1, gMapName_JaggedPass}, - { 7, 2, 1, 1, gMapName_JaggedPass}, - {11, 10, 1, 1, gMapName_SealedChamber}, - {11, 10, 1, 1, gMapName_Underwater}, - {13, 0, 1, 1, gMapName_ScorchedSlab}, - { 0, 10, 1, 1, gMapName_IslandCave}, - { 8, 3, 1, 1, gMapName_DesertRuins}, - {13, 2, 1, 1, gMapName_AncientTomb}, - { 0, 0, 1, 1, gMapName_InsideOfTruck}, - {19, 10, 1, 1, gMapName_SkyPillar}, - { 0, 0, 1, 1, gMapName_SecretBase}, - { 0, 0, 1, 1, gMapName_None}, - { 0, 0, 1, 1, gMapName_PalletTown}, - { 0, 0, 1, 1, gMapName_ViridianCity}, - { 0, 0, 1, 1, gMapName_PewterCity}, - { 0, 0, 1, 1, gMapName_CeruleanCity}, - { 0, 0, 1, 1, gMapName_LavenderTown}, - { 0, 0, 1, 1, gMapName_VermilionCity}, - { 0, 0, 1, 1, gMapName_CeladonCity}, - { 0, 0, 1, 1, gMapName_FuchsiaCity}, - { 0, 0, 1, 1, gMapName_CinnabarIsland}, - { 0, 0, 1, 1, gMapName_IndigoPlateau}, - { 0, 0, 1, 1, gMapName_SaffronCity}, - { 0, 0, 1, 1, gMapName_Route4}, - { 0, 0, 1, 1, gMapName_Route10}, - { 0, 0, 1, 1, gMapName_Route1}, - { 0, 0, 1, 1, gMapName_Route2}, - { 0, 0, 1, 1, gMapName_Route3}, - { 0, 0, 1, 1, gMapName_Route4_2}, - { 0, 0, 1, 1, gMapName_Route5}, - { 0, 0, 1, 1, gMapName_Route6}, - { 0, 0, 1, 1, gMapName_Route7}, - { 0, 0, 1, 1, gMapName_Route8}, - { 0, 0, 1, 1, gMapName_Route9}, - { 0, 0, 1, 1, gMapName_Route10_2}, - { 0, 0, 1, 1, gMapName_Route11}, - { 0, 0, 1, 1, gMapName_Route12}, - { 0, 0, 1, 1, gMapName_Route13}, - { 0, 0, 1, 1, gMapName_Route14}, - { 0, 0, 1, 1, gMapName_Route15}, - { 0, 0, 1, 1, gMapName_Route16}, - { 0, 0, 1, 1, gMapName_Route17}, - { 0, 0, 1, 1, gMapName_Route18}, - { 0, 0, 1, 1, gMapName_Route19}, - { 0, 0, 1, 1, gMapName_Route20}, - { 0, 0, 1, 1, gMapName_Route21}, - { 0, 0, 1, 1, gMapName_Route22}, - { 0, 0, 1, 1, gMapName_Route23}, - { 0, 0, 1, 1, gMapName_Route24}, - { 0, 0, 1, 1, gMapName_Route25}, - { 0, 0, 1, 1, gMapName_ViridianForest}, - { 0, 0, 1, 1, gMapName_MtMoon}, - { 0, 0, 1, 1, gMapName_SSAnne}, - { 0, 0, 1, 1, gMapName_UndergroundPath}, - { 0, 0, 1, 1, gMapName_UndergroundPath2}, - { 0, 0, 1, 1, gMapName_DiglettsCave}, - { 0, 0, 1, 1, gMapName_KantoVictoryRoad}, - { 0, 0, 1, 1, gMapName_RocketHideout}, - { 0, 0, 1, 1, gMapName_SilphCo}, - { 0, 0, 1, 1, gMapName_PokemonMansion}, - { 0, 0, 1, 1, gMapName_KantoSafariZone}, - { 0, 0, 1, 1, gMapName_PokemonLeague}, - { 0, 0, 1, 1, gMapName_RockTunnel}, - { 0, 0, 1, 1, gMapName_SeafoamIslands}, - { 0, 0, 1, 1, gMapName_PokemonTower}, - { 0, 0, 1, 1, gMapName_CeruleanCave}, - { 0, 0, 1, 1, gMapName_PowerPlant}, - { 0, 0, 1, 1, gMapName_OneIsland}, - { 0, 0, 1, 1, gMapName_TwoIsland}, - { 0, 0, 1, 1, gMapName_ThreeIsland}, - { 0, 0, 1, 1, gMapName_FourIsland}, - { 0, 0, 1, 1, gMapName_FiveIsland}, - { 0, 0, 1, 1, gMapName_SevenIsland}, - { 0, 0, 1, 1, gMapName_SixIsland}, - { 0, 0, 1, 1, gMapName_KindleRoad}, - { 0, 0, 1, 1, gMapName_TreasureBeach}, - { 0, 0, 1, 1, gMapName_CapeBrink}, - { 0, 0, 1, 1, gMapName_BondBridge}, - { 0, 0, 1, 1, gMapName_ThreeIslePort}, - { 0, 0, 1, 1, gMapName_SeviiIsle6}, - { 0, 0, 1, 1, gMapName_SeviiIsle7}, - { 0, 0, 1, 1, gMapName_SeviiIsle8}, - { 0, 0, 1, 1, gMapName_SeviiIsle9}, - { 0, 0, 1, 1, gMapName_ResortGorgeous}, - { 0, 0, 1, 1, gMapName_WaterLabyrinth}, - { 0, 0, 1, 1, gMapName_FiveIsleMeadow}, - { 0, 0, 1, 1, gMapName_MemorialPillar}, - { 0, 0, 1, 1, gMapName_OutcastIsland}, - { 0, 0, 1, 1, gMapName_GreenPath}, - { 0, 0, 1, 1, gMapName_WaterPath}, - { 0, 0, 1, 1, gMapName_RuinValley}, - { 0, 0, 1, 1, gMapName_TrainerTower}, - { 0, 0, 1, 1, gMapName_CanyonEntrance}, - { 0, 0, 1, 1, gMapName_SevaultCanyon}, - { 0, 0, 1, 1, gMapName_TanobyRuins}, - { 0, 0, 1, 1, gMapName_SeviiIsle22}, - { 0, 0, 1, 1, gMapName_SeviiIsle23}, - { 0, 0, 1, 1, gMapName_SeviiIsle24}, - { 0, 0, 1, 1, gMapName_NavelRock}, - { 0, 0, 1, 1, gMapName_MtEmber}, - { 0, 0, 1, 1, gMapName_BerryForest}, - { 0, 0, 1, 1, gMapName_IcefallCave}, - { 0, 0, 1, 1, gMapName_RocketWarehouse}, - { 0, 0, 1, 1, gMapName_TrainerTower2}, - { 0, 0, 1, 1, gMapName_DottedHole}, - { 0, 0, 1, 1, gMapName_LostCave}, - { 0, 0, 1, 1, gMapName_PatternBush}, - { 0, 0, 1, 1, gMapName_AlteringCave}, - { 0, 0, 1, 1, gMapName_TanobyChambers}, - { 0, 0, 1, 1, gMapName_ThreeIslePath}, - { 0, 0, 1, 1, gMapName_TanobyKey}, - { 0, 0, 1, 1, gMapName_BirthIsland}, - { 0, 0, 1, 1, gMapName_MoneanChamber}, - { 0, 0, 1, 1, gMapName_LiptooChamber}, - { 0, 0, 1, 1, gMapName_WeepthChamber}, - { 0, 0, 1, 1, gMapName_DilfordChamber}, - { 0, 0, 1, 1, gMapName_ScufibChamber}, - { 0, 0, 1, 1, gMapName_RixyChamber}, - { 0, 0, 1, 1, gMapName_ViapoisChamber}, - { 0, 0, 1, 1, gMapName_EmberSpa}, - { 0, 0, 1, 1, gMapName_SpecialArea}, - {19, 3, 1, 1, gMapName_AquaHideout}, - { 6, 3, 1, 1, gMapName_MagmaHideout}, - { 8, 2, 1, 1, gMapName_MirageTower}, - { 0, 0, 1, 1, gMapName_BirthIsland}, - { 0, 0, 1, 1, gMapName_FarawayIsland}, - {22, 12, 1, 1, gMapName_ArtisanCave}, - { 0, 0, 1, 1, gMapName_MarineCave}, - { 0, 0, 1, 1, gMapName_Underwater}, - { 0, 0, 1, 1, gMapName_TerraCave}, - { 0, 10, 1, 3, gMapName_Underwater}, - {24, 3, 2, 2, gMapName_Underwater}, - {24, 10, 2, 1, gMapName_Underwater}, - { 2, 0, 1, 1, gMapName_DesertUnderpass}, - { 6, 8, 1, 1, gMapName_AlteringCave}, - { 0, 0, 1, 1, gMapName_NavelRock}, - { 8, 4, 1, 1, gMapName_TrainerHill} + { 4, 11, 1, 1, sMapName_LittlerootTown}, + { 4, 9, 1, 1, sMapName_OldaleTown}, + { 2, 14, 1, 1, sMapName_DewfordTown}, + { 5, 3, 1, 1, sMapName_LavaridgeTown}, + { 3, 0, 1, 1, sMapName_FallarborTown}, + { 4, 6, 1, 1, sMapName_VerdanturfTown}, + {17, 10, 1, 1, sMapName_PacifidlogTown}, + { 1, 9, 1, 1, sMapName_PetalburgCity}, + { 8, 10, 1, 2, sMapName_SlateportCity}, + { 8, 6, 2, 1, sMapName_MauvilleCity}, + { 0, 5, 1, 2, sMapName_RustboroCity}, + {12, 0, 1, 1, sMapName_FortreeCity}, + {18, 3, 2, 1, sMapName_LilycoveCity}, + {24, 5, 2, 1, sMapName_MossdeepCity}, + {21, 7, 1, 1, sMapName_SootopolisCity}, + {27, 8, 1, 2, sMapName_EverGrandeCity}, + { 4, 10, 1, 1, sMapName_Route101}, + { 2, 9, 2, 1, sMapName_Route102}, + { 4, 8, 4, 1, sMapName_Route103}, + { 0, 7, 1, 3, sMapName_Route104}, + { 0, 10, 1, 3, sMapName_Route105}, + { 0, 13, 2, 1, sMapName_Route106}, + { 3, 14, 3, 1, sMapName_Route107}, + { 6, 14, 2, 1, sMapName_Route108}, + { 8, 12, 1, 3, sMapName_Route109}, + { 8, 7, 1, 3, sMapName_Route110}, + { 8, 0, 1, 6, sMapName_Route111}, + { 6, 3, 2, 1, sMapName_Route112}, + { 4, 0, 4, 1, sMapName_Route113}, + { 1, 0, 2, 3, sMapName_Route114}, + { 0, 2, 1, 3, sMapName_Route115}, + { 1, 5, 4, 1, sMapName_Route116}, + { 5, 6, 3, 1, sMapName_Route117}, + {10, 6, 2, 1, sMapName_Route118}, + {11, 0, 1, 6, sMapName_Route119}, + {13, 0, 1, 4, sMapName_Route120}, + {14, 3, 4, 1, sMapName_Route121}, + {16, 4, 1, 2, sMapName_Route122}, + {12, 6, 5, 1, sMapName_Route123}, + {20, 3, 4, 3, sMapName_Route124}, + {24, 3, 2, 2, sMapName_Route125}, + {20, 6, 3, 3, sMapName_Route126}, + {23, 6, 3, 3, sMapName_Route127}, + {23, 9, 4, 1, sMapName_Route128}, + {24, 10, 2, 1, sMapName_Route129}, + {21, 10, 3, 1, sMapName_Route130}, + {18, 10, 3, 1, sMapName_Route131}, + {15, 10, 2, 1, sMapName_Route132}, + {12, 10, 3, 1, sMapName_Route133}, + { 9, 10, 3, 1, sMapName_Route134}, + {20, 3, 4, 3, sMapName_Underwater}, + {20, 6, 3, 3, sMapName_Underwater}, + {23, 6, 3, 3, sMapName_Underwater}, + {23, 9, 4, 1, sMapName_Underwater}, + {21, 7, 1, 1, sMapName_Underwater}, + { 1, 13, 1, 1, sMapName_GraniteCave}, + { 6, 2, 1, 1, sMapName_MtChimney}, + {16, 2, 1, 1, sMapName_SafariZone}, + {22, 12, 1, 1, sMapName_BattleFrontier}, + { 0, 8, 1, 1, sMapName_PetalburgWoods}, + { 2, 5, 1, 1, sMapName_RusturfTunnel}, + { 6, 14, 1, 1, sMapName_AbandonedShip}, + { 8, 7, 1, 1, sMapName_NewMauville}, + { 0, 3, 1, 1, sMapName_MeteorFalls}, + { 1, 2, 1, 1, sMapName_MeteorFalls}, + {16, 4, 1, 1, sMapName_MtPyre}, + {19, 3, 1, 1, sMapName_AquaHideoutOld}, + {24, 4, 1, 1, sMapName_ShoalCave}, + {24, 9, 1, 1, sMapName_SeafloorCavern}, + {24, 9, 1, 1, sMapName_Underwater}, + {27, 9, 1, 1, sMapName_VictoryRoad}, + {17, 10, 1, 1, sMapName_MirageIsland}, + {21, 7, 1, 1, sMapName_CaveOfOrigin}, + {12, 14, 1, 1, sMapName_SouthernIsland}, + { 6, 3, 1, 1, sMapName_FieryPath}, + { 7, 3, 1, 1, sMapName_FieryPath}, + { 6, 3, 1, 1, sMapName_JaggedPass}, + { 7, 2, 1, 1, sMapName_JaggedPass}, + {11, 10, 1, 1, sMapName_SealedChamber}, + {11, 10, 1, 1, sMapName_Underwater}, + {13, 0, 1, 1, sMapName_ScorchedSlab}, + { 0, 10, 1, 1, sMapName_IslandCave}, + { 8, 3, 1, 1, sMapName_DesertRuins}, + {13, 2, 1, 1, sMapName_AncientTomb}, + { 0, 0, 1, 1, sMapName_InsideOfTruck}, + {19, 10, 1, 1, sMapName_SkyPillar}, + { 0, 0, 1, 1, sMapName_SecretBase}, + { 0, 0, 1, 1, sMapName_None}, + { 0, 0, 1, 1, sMapName_PalletTown}, + { 0, 0, 1, 1, sMapName_ViridianCity}, + { 0, 0, 1, 1, sMapName_PewterCity}, + { 0, 0, 1, 1, sMapName_CeruleanCity}, + { 0, 0, 1, 1, sMapName_LavenderTown}, + { 0, 0, 1, 1, sMapName_VermilionCity}, + { 0, 0, 1, 1, sMapName_CeladonCity}, + { 0, 0, 1, 1, sMapName_FuchsiaCity}, + { 0, 0, 1, 1, sMapName_CinnabarIsland}, + { 0, 0, 1, 1, sMapName_IndigoPlateau}, + { 0, 0, 1, 1, sMapName_SaffronCity}, + { 0, 0, 1, 1, sMapName_Route4}, + { 0, 0, 1, 1, sMapName_Route10}, + { 0, 0, 1, 1, sMapName_Route1}, + { 0, 0, 1, 1, sMapName_Route2}, + { 0, 0, 1, 1, sMapName_Route3}, + { 0, 0, 1, 1, sMapName_Route4_2}, + { 0, 0, 1, 1, sMapName_Route5}, + { 0, 0, 1, 1, sMapName_Route6}, + { 0, 0, 1, 1, sMapName_Route7}, + { 0, 0, 1, 1, sMapName_Route8}, + { 0, 0, 1, 1, sMapName_Route9}, + { 0, 0, 1, 1, sMapName_Route10_2}, + { 0, 0, 1, 1, sMapName_Route11}, + { 0, 0, 1, 1, sMapName_Route12}, + { 0, 0, 1, 1, sMapName_Route13}, + { 0, 0, 1, 1, sMapName_Route14}, + { 0, 0, 1, 1, sMapName_Route15}, + { 0, 0, 1, 1, sMapName_Route16}, + { 0, 0, 1, 1, sMapName_Route17}, + { 0, 0, 1, 1, sMapName_Route18}, + { 0, 0, 1, 1, sMapName_Route19}, + { 0, 0, 1, 1, sMapName_Route20}, + { 0, 0, 1, 1, sMapName_Route21}, + { 0, 0, 1, 1, sMapName_Route22}, + { 0, 0, 1, 1, sMapName_Route23}, + { 0, 0, 1, 1, sMapName_Route24}, + { 0, 0, 1, 1, sMapName_Route25}, + { 0, 0, 1, 1, sMapName_ViridianForest}, + { 0, 0, 1, 1, sMapName_MtMoon}, + { 0, 0, 1, 1, sMapName_SSAnne}, + { 0, 0, 1, 1, sMapName_UndergroundPath}, + { 0, 0, 1, 1, sMapName_UndergroundPath2}, + { 0, 0, 1, 1, sMapName_DiglettsCave}, + { 0, 0, 1, 1, sMapName_KantoVictoryRoad}, + { 0, 0, 1, 1, sMapName_RocketHideout}, + { 0, 0, 1, 1, sMapName_SilphCo}, + { 0, 0, 1, 1, sMapName_PokemonMansion}, + { 0, 0, 1, 1, sMapName_KantoSafariZone}, + { 0, 0, 1, 1, sMapName_PokemonLeague}, + { 0, 0, 1, 1, sMapName_RockTunnel}, + { 0, 0, 1, 1, sMapName_SeafoamIslands}, + { 0, 0, 1, 1, sMapName_PokemonTower}, + { 0, 0, 1, 1, sMapName_CeruleanCave}, + { 0, 0, 1, 1, sMapName_PowerPlant}, + { 0, 0, 1, 1, sMapName_OneIsland}, + { 0, 0, 1, 1, sMapName_TwoIsland}, + { 0, 0, 1, 1, sMapName_ThreeIsland}, + { 0, 0, 1, 1, sMapName_FourIsland}, + { 0, 0, 1, 1, sMapName_FiveIsland}, + { 0, 0, 1, 1, sMapName_SevenIsland}, + { 0, 0, 1, 1, sMapName_SixIsland}, + { 0, 0, 1, 1, sMapName_KindleRoad}, + { 0, 0, 1, 1, sMapName_TreasureBeach}, + { 0, 0, 1, 1, sMapName_CapeBrink}, + { 0, 0, 1, 1, sMapName_BondBridge}, + { 0, 0, 1, 1, sMapName_ThreeIslePort}, + { 0, 0, 1, 1, sMapName_SeviiIsle6}, + { 0, 0, 1, 1, sMapName_SeviiIsle7}, + { 0, 0, 1, 1, sMapName_SeviiIsle8}, + { 0, 0, 1, 1, sMapName_SeviiIsle9}, + { 0, 0, 1, 1, sMapName_ResortGorgeous}, + { 0, 0, 1, 1, sMapName_WaterLabyrinth}, + { 0, 0, 1, 1, sMapName_FiveIsleMeadow}, + { 0, 0, 1, 1, sMapName_MemorialPillar}, + { 0, 0, 1, 1, sMapName_OutcastIsland}, + { 0, 0, 1, 1, sMapName_GreenPath}, + { 0, 0, 1, 1, sMapName_WaterPath}, + { 0, 0, 1, 1, sMapName_RuinValley}, + { 0, 0, 1, 1, sMapName_TrainerTower}, + { 0, 0, 1, 1, sMapName_CanyonEntrance}, + { 0, 0, 1, 1, sMapName_SevaultCanyon}, + { 0, 0, 1, 1, sMapName_TanobyRuins}, + { 0, 0, 1, 1, sMapName_SeviiIsle22}, + { 0, 0, 1, 1, sMapName_SeviiIsle23}, + { 0, 0, 1, 1, sMapName_SeviiIsle24}, + { 0, 0, 1, 1, sMapName_NavelRock}, + { 0, 0, 1, 1, sMapName_MtEmber}, + { 0, 0, 1, 1, sMapName_BerryForest}, + { 0, 0, 1, 1, sMapName_IcefallCave}, + { 0, 0, 1, 1, sMapName_RocketWarehouse}, + { 0, 0, 1, 1, sMapName_TrainerTower2}, + { 0, 0, 1, 1, sMapName_DottedHole}, + { 0, 0, 1, 1, sMapName_LostCave}, + { 0, 0, 1, 1, sMapName_PatternBush}, + { 0, 0, 1, 1, sMapName_AlteringCave}, + { 0, 0, 1, 1, sMapName_TanobyChambers}, + { 0, 0, 1, 1, sMapName_ThreeIslePath}, + { 0, 0, 1, 1, sMapName_TanobyKey}, + { 0, 0, 1, 1, sMapName_BirthIsland}, + { 0, 0, 1, 1, sMapName_MoneanChamber}, + { 0, 0, 1, 1, sMapName_LiptooChamber}, + { 0, 0, 1, 1, sMapName_WeepthChamber}, + { 0, 0, 1, 1, sMapName_DilfordChamber}, + { 0, 0, 1, 1, sMapName_ScufibChamber}, + { 0, 0, 1, 1, sMapName_RixyChamber}, + { 0, 0, 1, 1, sMapName_ViapoisChamber}, + { 0, 0, 1, 1, sMapName_EmberSpa}, + { 0, 0, 1, 1, sMapName_SpecialArea}, + {19, 3, 1, 1, sMapName_AquaHideout}, + { 6, 3, 1, 1, sMapName_MagmaHideout}, + { 8, 2, 1, 1, sMapName_MirageTower}, + { 0, 0, 1, 1, sMapName_BirthIsland}, + { 0, 0, 1, 1, sMapName_FarawayIsland}, + {22, 12, 1, 1, sMapName_ArtisanCave}, + { 0, 0, 1, 1, sMapName_MarineCave}, + { 0, 0, 1, 1, sMapName_Underwater}, + { 0, 0, 1, 1, sMapName_TerraCave}, + { 0, 10, 1, 3, sMapName_Underwater}, + {24, 3, 2, 2, sMapName_Underwater}, + {24, 10, 2, 1, sMapName_Underwater}, + { 2, 0, 1, 1, sMapName_DesertUnderpass}, + { 6, 8, 1, 1, sMapName_AlteringCave}, + { 0, 0, 1, 1, sMapName_NavelRock}, + { 8, 4, 1, 1, sMapName_TrainerHill} }; #endif //GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H diff --git a/include/data/text/abilities.h b/include/data/text/abilities.h new file mode 100644 index 000000000..3a1e989d2 --- /dev/null +++ b/include/data/text/abilities.h @@ -0,0 +1,247 @@ +#ifndef POKEEMERALD_DATA_TEXT_ABILITIES_H +#define POKEEMERALD_DATA_TEXT_ABILITIES_H + +static const u8 gNoneAbilityDescription[] = _("No special ability."); +static const u8 gStenchAbilityDescription[] = _("Helps repel wild POKéMON."); +static const u8 gDrizzleAbilityDescription[] = _("Summons rain in battle."); +static const u8 gSpeedBoostAbilityDescription[] = _("Gradually boosts SPEED."); +static const u8 gBattleArmorAbilityDescription[] = _("Blocks critical hits."); +static const u8 gSturdyAbilityDescription[] = _("Negates 1-hit KO attacks."); +static const u8 gDampAbilityDescription[] = _("Prevents self-destruction."); +static const u8 gLimberAbilityDescription[] = _("Prevents paralysis."); +static const u8 gSandVeilAbilityDescription[] = _("Ups evasion in a sandstorm."); +static const u8 gStaticAbilityDescription[] = _("Paralyzes on contact."); +static const u8 gVoltAbsorbAbilityDescription[] = _("Turns electricity into HP."); +static const u8 gWaterAbsorbAbilityDescription[] = _("Changes water into HP."); +static const u8 gObliviousAbilityDescription[] = _("Prevents attraction."); +static const u8 gCloudNineAbilityDescription[] = _("Negates weather effects."); +static const u8 gCompoundEyesAbilityDescription[] = _("Raises accuracy."); +static const u8 gInsomniaAbilityDescription[] = _("Prevents sleep."); +static const u8 gColorChangeAbilityDescription[] = _("Changes type to foe’s move."); +static const u8 gImmunityAbilityDescription[] = _("Prevents poisoning."); +static const u8 gFlashFireAbilityDescription[] = _("Powers up if hit by fire."); +static const u8 gShieldDustAbilityDescription[] = _("Prevents added effects."); +static const u8 gOwnTempoAbilityDescription[] = _("Prevents confusion."); +static const u8 gSuctionCupsAbilityDescription[] = _("Firmly anchors the body."); +static const u8 gIntimidateAbilityDescription[] = _("Lowers the foe’s ATTACK."); +static const u8 gShadowTagAbilityDescription[] = _("Prevents the foe’s escape."); +static const u8 gRoughSkinAbilityDescription[] = _("Hurts to touch."); +static const u8 gWonderGuardAbilityDescription[] = _("“Super effective” hits."); +static const u8 gLevitateAbilityDescription[] = _("Not hit by GROUND attacks."); +static const u8 gEffectSporeAbilityDescription[] = _("Leaves spores on contact."); +static const u8 gSynchronizeAbilityDescription[] = _("Passes on status problems."); +static const u8 gClearBodyAbilityDescription[] = _("Prevents ability reduction."); +static const u8 gNaturalCureAbilityDescription[] = _("Heals upon switching out."); +static const u8 gLightningRodAbilityDescription[] = _("Draws electrical moves."); +static const u8 gSereneGraceAbilityDescription[] = _("Promotes added effects."); +static const u8 gSwiftSwimAbilityDescription[] = _("Raises SPEED in rain."); +static const u8 gChlorophyllAbilityDescription[] = _("Raises SPEED in sunshine."); +static const u8 gIlluminateAbilityDescription[] = _("Encounter rate increases."); +static const u8 gTraceAbilityDescription[] = _("Copies special ability."); +static const u8 gHugePowerAbilityDescription[] = _("Raises ATTACK."); +static const u8 gPoisonPointAbilityDescription[] = _("Poisons foe on contact."); +static const u8 gInnerFocusAbilityDescription[] = _("Prevents flinching."); +static const u8 gMagmaArmorAbilityDescription[] = _("Prevents freezing."); +static const u8 gWaterVeilAbilityDescription[] = _("Prevents burns."); +static const u8 gMagnetPullAbilityDescription[] = _("Traps STEEL-type POKéMON."); +static const u8 gSoundproofAbilityDescription[] = _("Avoids sound-based moves."); +static const u8 gRainDishAbilityDescription[] = _("Slight HP recovery in rain."); +static const u8 gSandStreamAbilityDescription[] = _("Summons a sandstorm."); +static const u8 gPressureAbilityDescription[] = _("Raises foe’s PP usage."); +static const u8 gThickFatAbilityDescription[] = _("Heat-and-cold protection."); +static const u8 gEarlyBirdAbilityDescription[] = _("Awakens quickly from sleep."); +static const u8 gFlameBodyAbilityDescription[] = _("Burns the foe on contact."); +static const u8 gRunAwayAbilityDescription[] = _("Makes escaping easier."); +static const u8 gKeenEyeAbilityDescription[] = _("Prevents loss of accuracy."); +static const u8 gHyperCutterAbilityDescription[] = _("Prevents ATTACK reduction."); +static const u8 gPickupAbilityDescription[] = _("May pick up items."); +static const u8 gTruantAbilityDescription[] = _("Moves only every two turns."); +static const u8 gHustleAbilityDescription[] = _("Trades accuracy for power."); +static const u8 gCuteCharmAbilityDescription[] = _("Infatuates on contact."); +static const u8 gPlusAbilityDescription[] = _("Powers up with MINUS."); +static const u8 gMinusAbilityDescription[] = _("Powers up with PLUS."); +static const u8 gForecastAbilityDescription[] = _("Changes with the weather."); +static const u8 gStickyHoldAbilityDescription[] = _("Prevents item theft."); +static const u8 gShedSkinAbilityDescription[] = _("Heals the body by shedding."); +static const u8 gGutsAbilityDescription[] = _("Ups ATTACK if suffering."); +static const u8 gMarvelScaleAbilityDescription[] = _("Ups DEFENSE if suffering."); +static const u8 gLiquidOozeAbilityDescription[] = _("Draining causes injury."); +static const u8 gOvergrowAbilityDescription[] = _("Ups GRASS moves in a pinch."); +static const u8 gBlazeAbilityDescription[] = _("Ups FIRE moves in a pinch."); +static const u8 gTorrentAbilityDescription[] = _("Ups WATER moves in a pinch."); +static const u8 gSwarmAbilityDescription[] = _("Ups BUG moves in a pinch."); +static const u8 gRockHeadAbilityDescription[] = _("Prevents recoil damage."); +static const u8 gDroughtAbilityDescription[] = _("Summons sunlight in battle."); +static const u8 gArenaTrapAbilityDescription[] = _("Prevents fleeing."); +static const u8 gVitalSpiritAbilityDescription[] = _("Prevents sleep."); +static const u8 gWhiteSmokeAbilityDescription[] = _("Prevents ability reduction."); +static const u8 gPurePowerAbilityDescription[] = _("Raises ATTACK."); +static const u8 gShellArmorAbilityDescription[] = _("Blocks critical hits."); +static const u8 gCacophonyAbilityDescription[] = _("Avoids sound-based moves."); +static const u8 gAirLockAbilityDescription[] = _("Negates weather effects."); + +const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] = +{ + _("-------"), + _("STENCH"), + _("DRIZZLE"), + _("SPEED BOOST"), + _("BATTLE ARMOR"), + _("STURDY"), + _("DAMP"), + _("LIMBER"), + _("SAND VEIL"), + _("STATIC"), + _("VOLT ABSORB"), + _("WATER ABSORB"), + _("OBLIVIOUS"), + _("CLOUD NINE"), + _("COMPOUNDEYES"), + _("INSOMNIA"), + _("COLOR CHANGE"), + _("IMMUNITY"), + _("FLASH FIRE"), + _("SHIELD DUST"), + _("OWN TEMPO"), + _("SUCTION CUPS"), + _("INTIMIDATE"), + _("SHADOW TAG"), + _("ROUGH SKIN"), + _("WONDER GUARD"), + _("LEVITATE"), + _("EFFECT SPORE"), + _("SYNCHRONIZE"), + _("CLEAR BODY"), + _("NATURAL CURE"), + _("LIGHTNINGROD"), + _("SERENE GRACE"), + _("SWIFT SWIM"), + _("CHLOROPHYLL"), + _("ILLUMINATE"), + _("TRACE"), + _("HUGE POWER"), + _("POISON POINT"), + _("INNER FOCUS"), + _("MAGMA ARMOR"), + _("WATER VEIL"), + _("MAGNET PULL"), + _("SOUNDPROOF"), + _("RAIN DISH"), + _("SAND STREAM"), + _("PRESSURE"), + _("THICK FAT"), + _("EARLY BIRD"), + _("FLAME BODY"), + _("RUN AWAY"), + _("KEEN EYE"), + _("HYPER CUTTER"), + _("PICKUP"), + _("TRUANT"), + _("HUSTLE"), + _("CUTE CHARM"), + _("PLUS"), + _("MINUS"), + _("FORECAST"), + _("STICKY HOLD"), + _("SHED SKIN"), + _("GUTS"), + _("MARVEL SCALE"), + _("LIQUID OOZE"), + _("OVERGROW"), + _("BLAZE"), + _("TORRENT"), + _("SWARM"), + _("ROCK HEAD"), + _("DROUGHT"), + _("ARENA TRAP"), + _("VITAL SPIRIT"), + _("WHITE SMOKE"), + _("PURE POWER"), + _("SHELL ARMOR"), + _("CACOPHONY"), + _("AIR LOCK"), +}; + +const u8 *const gAbilityDescriptionPointers[ABILITIES_COUNT] = +{ + gNoneAbilityDescription, + gStenchAbilityDescription, + gDrizzleAbilityDescription, + gSpeedBoostAbilityDescription, + gBattleArmorAbilityDescription, + gSturdyAbilityDescription, + gDampAbilityDescription, + gLimberAbilityDescription, + gSandVeilAbilityDescription, + gStaticAbilityDescription, + gVoltAbsorbAbilityDescription, + gWaterAbsorbAbilityDescription, + gObliviousAbilityDescription, + gCloudNineAbilityDescription, + gCompoundEyesAbilityDescription, + gInsomniaAbilityDescription, + gColorChangeAbilityDescription, + gImmunityAbilityDescription, + gFlashFireAbilityDescription, + gShieldDustAbilityDescription, + gOwnTempoAbilityDescription, + gSuctionCupsAbilityDescription, + gIntimidateAbilityDescription, + gShadowTagAbilityDescription, + gRoughSkinAbilityDescription, + gWonderGuardAbilityDescription, + gLevitateAbilityDescription, + gEffectSporeAbilityDescription, + gSynchronizeAbilityDescription, + gClearBodyAbilityDescription, + gNaturalCureAbilityDescription, + gLightningRodAbilityDescription, + gSereneGraceAbilityDescription, + gSwiftSwimAbilityDescription, + gChlorophyllAbilityDescription, + gIlluminateAbilityDescription, + gTraceAbilityDescription, + gHugePowerAbilityDescription, + gPoisonPointAbilityDescription, + gInnerFocusAbilityDescription, + gMagmaArmorAbilityDescription, + gWaterVeilAbilityDescription, + gMagnetPullAbilityDescription, + gSoundproofAbilityDescription, + gRainDishAbilityDescription, + gSandStreamAbilityDescription, + gPressureAbilityDescription, + gThickFatAbilityDescription, + gEarlyBirdAbilityDescription, + gFlameBodyAbilityDescription, + gRunAwayAbilityDescription, + gKeenEyeAbilityDescription, + gHyperCutterAbilityDescription, + gPickupAbilityDescription, + gTruantAbilityDescription, + gHustleAbilityDescription, + gCuteCharmAbilityDescription, + gPlusAbilityDescription, + gMinusAbilityDescription, + gForecastAbilityDescription, + gStickyHoldAbilityDescription, + gShedSkinAbilityDescription, + gGutsAbilityDescription, + gMarvelScaleAbilityDescription, + gLiquidOozeAbilityDescription, + gOvergrowAbilityDescription, + gBlazeAbilityDescription, + gTorrentAbilityDescription, + gSwarmAbilityDescription, + gRockHeadAbilityDescription, + gDroughtAbilityDescription, + gArenaTrapAbilityDescription, + gVitalSpiritAbilityDescription, + gWhiteSmokeAbilityDescription, + gPurePowerAbilityDescription, + gShellArmorAbilityDescription, + gCacophonyAbilityDescription, + gAirLockAbilityDescription, +}; + +#endif // POKEEMERALD_DATA_TEXT_ABILITIES_H diff --git a/include/data/text/item_descriptions.h b/include/data/text/item_descriptions.h new file mode 100644 index 000000000..8683978d7 --- /dev/null +++ b/include/data/text/item_descriptions.h @@ -0,0 +1,329 @@ +#ifndef POKEEMERALD_DATA_TEXT_ITEM_DESCRIPTIONS_H +#define POKEEMERALD_DATA_TEXT_ITEM_DESCRIPTIONS_H +const u8 gDummyItemDescription[] = _("?????"); +//Pokeballs +const u8 gMasterBallItemDescription[] = _("The best BALL that\ncatches a POKéMON\nwithout fail."); +const u8 gUltraBallItemDescription[] = _("A better BALL with\na higher catch rate\nthan a GREAT BALL."); +const u8 gGreatBallItemDescription[] = _("A good BALL with a\nhigher catch rate\nthan a POKé BALL."); +const u8 gPokeBallItemDescription[] = _("A tool used for\ncatching wild\nPOKéMON."); +const u8 gSafariBallItemDescription[] = _("A special BALL that\nis used only in the\nSAFARI ZONE."); +const u8 gNetBallItemDescription[] = _("A BALL that works\nwell on WATER- and\nBUG-type POKéMON."); +const u8 gDiveBallItemDescription[] = _("A BALL that works\nbetter on POKéMON\non the ocean floor."); +const u8 gNestBallItemDescription[] = _("A BALL that works\nbetter on weaker\nPOKéMON."); +const u8 gRepeatBallItemDescription[] = _("A BALL that works\nbetter on POKéMON\ncaught before."); +const u8 gTimerBallItemDescription[] = _("A BALL that gains\npower in battles\ntaking many turns."); +const u8 gLuxuryBallItemDescription[] = _("A cozy BALL that\nmakes POKéMON\nmore friendly."); +const u8 gPremierBallItemDescription[] = _("A rare BALL made\nin commemoration\nof some event."); +//Medicine +const u8 gPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n20 points."); +const u8 gAntidoteItemDescription[] = _("Heals a poisoned\nPOKéMON."); +const u8 gBurnHealItemDescription[] = _("Heals POKéMON\nof a burn."); +const u8 gIceHealItemDescription[] = _("Defrosts a frozen\nPOKéMON."); +const u8 gAwakeningItemDescription[] = _("Awakens a sleeping\nPOKéMON."); +const u8 gParalyzeHealItemDescription[] = _("Heals a paralyzed\nPOKéMON."); +const u8 gFullRestoreItemDescription[] = _("Fully restores the\nHP and status of a\nPOKéMON."); +const u8 gMaxPotionItemDescription[] = _("Fully restores the\nHP of a POKéMON."); +const u8 gHyperPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n200 points."); +const u8 gSuperPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n50 points."); +const u8 gFullHealItemDescription[] = _("Heals all the\nstatus problems of\none POKéMON."); +const u8 gReviveItemDescription[] = _("Revives a fainted\nPOKéMON with half\nits HP."); +const u8 gMaxReviveItemDescription[] = _("Revives a fainted\nPOKéMON with all\nits HP."); +const u8 gFreshWaterItemDescription[] = _("A mineral water\nthat restores HP\nby 50 points."); +const u8 gSodaPopItemDescription[] = _("A fizzy soda drink\nthat restores HP\nby 60 points."); +const u8 gLemonadeItemDescription[] = _("A very sweet drink\nthat restores HP\nby 80 points."); +const u8 gMoomooMilkItemDescription[] = _("A nutritious milk\nthat restores HP\nby 100 points."); +const u8 gEnergyPowderItemDescription[] = _("A bitter powder\nthat restores HP\nby 50 points."); +const u8 gEnergyRootItemDescription[] = _("A bitter root\nthat restores HP\nby 200 points."); +const u8 gHealPowderItemDescription[] = _("A bitter powder\nthat heals all\nstatus problems."); +const u8 gRevivalHerbItemDescription[] = _("A very bitter herb\nthat revives a\nfainted POKéMON."); +const u8 gEtherItemDescription[] = _("Restores the PP\nof a selected move\nby 10."); +const u8 gMaxEtherItemDescription[] = _("Fully restores the\nPP of a selected\nmove."); +const u8 gElixirItemDescription[] = _("Restores the PP\nof all moves by 10."); +const u8 gMaxElixirItemDescription[] = _("Fully restores the\nPP of a POKéMON’s\nmoves."); +const u8 gLavaCookieItemDescription[] = _("A local specialty\nthat heals all\nstatus problems."); +const u8 gBlueFluteItemDescription[] = _("A glass flute that\nawakens sleeping\nPOKéMON."); +const u8 gYellowFluteItemDescription[] = _("A glass flute that\nsnaps POKéMON\nout of confusion."); +const u8 gRedFluteItemDescription[] = _("A glass flute that\nsnaps POKéMON\nout of attraction."); +const u8 gBlackFluteItemDescription[] = _("A glass flute that\nkeeps away wild\nPOKéMON."); +const u8 gWhiteFluteItemDescription[] = _("A glass flute that\nlures wild POKéMON."); +const u8 gBerryJuiceItemDescription[] = _("A 100% pure juice\nthat restores HP\nby 20 points."); +const u8 gSacredAshItemDescription[] = _("Fully revives and\nrestores all\nfainted POKéMON."); +//Collectibles +const u8 gShoalSaltItemDescription[] = _("Salt obtained from\ndeep inside the\nSHOAL CAVE."); +const u8 gShoalShellItemDescription[] = _("A seashell found\ndeep inside the\nSHOAL CAVE."); +const u8 gRedShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply."); +const u8 gBlueShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply."); +const u8 gYellowShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply."); +const u8 gGreenShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply."); +//Vitamins +const u8 gHPUpItemDescription[] = _("Raises the base HP\nof one POKéMON."); +const u8 gProteinItemDescription[] = _("Raises the base\nATTACK stat of one\nPOKéMON."); +const u8 gIronItemDescription[] = _("Raises the base\nDEFENSE stat of\none POKéMON."); +const u8 gCarbosItemDescription[] = _("Raises the base\nSPEED stat of one\nPOKéMON."); +const u8 gCalciumItemDescription[] = _("Raises the base\nSP. ATK stat of one\nPOKéMON."); +const u8 gRareCandyItemDescription[] = _("Raises the level\nof a POKéMON by\none."); +const u8 gPPUpItemDescription[] = _("Raises the maximum\nPP of a selected\nmove."); +const u8 gZincItemDescription[] = _("Raises the base\nSP. DEF stat of one\nPOKéMON."); +const u8 gPPMaxItemDescription[] = _("Raises the PP of a\nmove to its maximum\npoints."); +//Battle items +const u8 gGuardSpecItemDescription[] = _("Prevents stat\nreduction when\nused in battle."); +const u8 gDireHitItemDescription[] = _("Raises the\ncritical-hit ratio\nduring one battle."); +const u8 gXAttackItemDescription[] = _("Raises the stat\nATTACK during one\nbattle."); +const u8 gXDefendItemDescription[] = _("Raises the stat\nDEFENSE during one\nbattle."); +const u8 gXSpeedItemDescription[] = _("Raises the stat\nSPEED during one\nbattle."); +const u8 gXAccuracyItemDescription[] = _("Raises accuracy\nof attack moves\nduring one battle."); +const u8 gXSpecialItemDescription[] = _("Raises the stat\nSP. ATK during one\nbattle."); +const u8 gPokeDollItemDescription[] = _("Use to flee from\nany battle with\na wild POKéMON."); +const u8 gFluffyTailItemDescription[] = _("Use to flee from\nany battle with\na wild POKéMON."); +//Field items +const u8 gSuperRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 200\nsteps."); +const u8 gMaxRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 250\nsteps."); +const u8 gEscapeRopeItemDescription[] = _("Use to escape\ninstantly from a\ncave or a dungeon."); +const u8 gRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 100\nsteps."); +//Evolution stones +const u8 gSunStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve."); +const u8 gMoonStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve."); +const u8 gFireStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve."); +const u8 gThunderStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve."); +const u8 gWaterStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve."); +const u8 gLeafStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve."); +//Valuable items +const u8 gTinyMushroomItemDescription[] = _("A plain mushroom\nthat would sell\nat a cheap price."); +const u8 gBigMushroomItemDescription[] = _("A rare mushroom\nthat would sell at a\nhigh price."); +const u8 gPearlItemDescription[] = _("A pretty pearl\nthat would sell at a\ncheap price."); +const u8 gBigPearlItemDescription[] = _("A lovely large pearl\nthat would sell at a\nhigh price."); +const u8 gStardustItemDescription[] = _("Beautiful red sand.\nCan be sold at a\nhigh price."); +const u8 gStarPieceItemDescription[] = _("A red gem shard.\nIt would sell for a\nvery high price."); +const u8 gNuggetItemDescription[] = _("A nugget of pure\ngold. Can be sold at\na high price."); +const u8 gHeartScaleItemDescription[] = _("A lovely scale.\nIt is coveted by\ncollectors."); +//Mail +const u8 gOrangeMailItemDescription[] = _("A ZIGZAGOON-print\nMAIL to be held by\na POKéMON."); +const u8 gHarborMailItemDescription[] = _("A WINGULL-print\nMAIL to be held by\na POKéMON."); +const u8 gGlitterMailItemDescription[] = _("A PIKACHU-print\nMAIL to be held by\na POKéMON."); +const u8 gMechMailItemDescription[] = _("A MAGNEMITE-print\nMAIL to be held by\na POKéMON."); +const u8 gWoodMailItemDescription[] = _("A SLAKOTH-print\nMAIL to be held by\na POKéMON."); +const u8 gWaveMailItemDescription[] = _("A WAILMER-print\nMAIL to be held by\na POKéMON."); +const u8 gBeadMailItemDescription[] = _("MAIL featuring a\nsketch of the\nholding POKéMON."); +const u8 gShadowMailItemDescription[] = _("A DUSKULL-print\nMAIL to be held by\na POKéMON."); +const u8 gTropicMailItemDescription[] = _("A BELLOSSOM-print\nMAIL to be held by\na POKéMON."); +const u8 gDreamMailItemDescription[] = _("MAIL featuring a\nsketch of the\nholding POKéMON."); +const u8 gFabMailItemDescription[] = _("A gorgeous-print\nMAIL to be held\nby a POKéMON."); +const u8 gRetroMailItemDescription[] = _("MAIL featuring the\ndrawings of three\nPOKéMON."); +//Berries +const u8 gCheriBerryItemDescription[] = _("A hold item that\nheals paralysis\nin battle."); +const u8 gChestoBerryItemDescription[] = _("A hold item that\nawakens POKéMON\nin battle."); +const u8 gPechaBerryItemDescription[] = _("A hold item that\nheals poisoning\nin battle."); +const u8 gRawstBerryItemDescription[] = _("A hold item that\nheals a burn in\nbattle."); +const u8 gAspearBerryItemDescription[] = _("A hold item that\ndefrosts POKéMON\nin battle."); +const u8 gLeppaBerryItemDescription[] = _("A hold item that\nrestores 10 PP in\nbattle."); +const u8 gOranBerryItemDescription[] = _("A hold item that\nrestores 10 HP in\nbattle."); +const u8 gPersimBerryItemDescription[] = _("A hold item that\nheals confusion\nin battle."); +const u8 gLumBerryItemDescription[] = _("A hold item that\nheals any status\nproblem in battle."); +const u8 gSitrusBerryItemDescription[] = _("A hold item that\nrestores 30 HP in\nbattle."); +const u8 gFigyBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse."); +const u8 gWikiBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse."); +const u8 gMagoBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse."); +const u8 gAguavBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse."); +const u8 gIapapaBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse."); +const u8 gRazzBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow RAZZ."); +const u8 gBlukBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow BLUK."); +const u8 gNanabBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow NANAB."); +const u8 gWepearBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow WEPEAR."); +const u8 gPinapBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow PINAP."); +const u8 gPomegBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase HP."); +const u8 gKelpsyBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase ATTACK."); +const u8 gQualotBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase DEFENSE."); +const u8 gHondewBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase SP. ATK."); +const u8 gGrepaBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase SP. DEF."); +const u8 gTamatoBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase SPEED."); +const u8 gCornnBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow CORNN."); +const u8 gMagostBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow MAGOST."); +const u8 gRabutaBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow RABUTA."); +const u8 gNomelBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow NOMEL."); +const u8 gSpelonBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow SPELON."); +const u8 gPamtreBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow PAMTRE."); +const u8 gWatmelBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow WATMEL."); +const u8 gDurinBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow DURIN."); +const u8 gBelueBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow BELUE."); +const u8 gLiechiBerryItemDescription[] = _("A hold item that\nraises ATTACK in\na pinch."); +const u8 gGanlonBerryItemDescription[] = _("A hold item that\nraises DEFENSE in\na pinch."); +const u8 gSalacBerryItemDescription[] = _("A hold item that\nraises SPEED in\na pinch."); +const u8 gPetayaBerryItemDescription[] = _("A hold item that\nraises SP. ATK in\na pinch."); +const u8 gApicotBerryItemDescription[] = _("A hold item that\nraises SP. DEF in\na pinch."); +const u8 gLansatBerryItemDescription[] = _("A hold item that\nups the critical-\nhit rate in a pinch."); +const u8 gStarfBerryItemDescription[] = _("A hold item that\nsharply boosts a\nstat in a pinch."); +const u8 gEnigmaBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow a mystery."); +//Hold items +const u8 gBrightPowderItemDescription[] = _("A hold item that\ncasts a glare to\nreduce accuracy."); +const u8 gWhiteHerbItemDescription[] = _("A hold item that\nrestores any\nlowered stat."); +const u8 gMachoBraceItemDescription[] = _("A hold item that\npromotes growth,\nbut reduces SPEED."); +const u8 gExpShareItemDescription[] = _("A hold item that\ngets EXP. points\nfrom battles."); +const u8 gQuickClawItemDescription[] = _("A hold item that\noccasionally allows\nthe first strike."); +const u8 gSootheBellItemDescription[] = _("A hold item that\ncalms spirits and\nfosters friendship."); +const u8 gMentalHerbItemDescription[] = _("A hold item that\nsnaps POKéMON out\nof infatuation."); +const u8 gChoiceBandItemDescription[] = _("Raises a move’s\npower, but permits\nonly that move."); +const u8 gKingsRockItemDescription[] = _("A hold item that\nmay cause flinching\nwhen the foe is hit."); +const u8 gSilverPowderItemDescription[] = _("A hold item that\nraises the power of\nBUG-type moves."); +const u8 gAmuletCoinItemDescription[] = _("Doubles money in\nbattle if the\nholder takes part."); +const u8 gCleanseTagItemDescription[] = _("A hold item that\nhelps repel wild\nPOKéMON."); +const u8 gSoulDewItemDescription[] = _("Hold item: raises\nSP. ATK & SP. DEF of\nLATIOS & LATIAS."); +const u8 gDeepSeaToothItemDescription[] = _("A hold item that\nraises the SP. ATK\nof CLAMPERL."); +const u8 gDeepSeaScaleItemDescription[] = _("A hold item that\nraises the SP. DEF\nof CLAMPERL."); +const u8 gSmokeBallItemDescription[] = _("A hold item that\nassures fleeing\nfrom wild POKéMON."); +const u8 gEverstoneItemDescription[] = _("A wondrous hold\nitem that prevents\nevolution."); +const u8 gFocusBandItemDescription[] = _("A hold item that\noccasionally\nprevents fainting."); +const u8 gLuckyEggItemDescription[] = _("A hold item that\nboosts EXP. points\nearned in battle."); +const u8 gScopeLensItemDescription[] = _("A hold item that\nimproves the\ncritical-hit rate."); +const u8 gMetalCoatItemDescription[] = _("A hold item that\nraises the power of\nSTEEL-type moves."); +const u8 gLeftoversItemDescription[] = _("A hold item that\ngradually restores\nHP in battle."); +const u8 gDragonScaleItemDescription[] = _("A strange scale\nheld by DRAGON-\ntype POKéMON."); +const u8 gLightBallItemDescription[] = _("A hold item that\nraises the SP. ATK\nof PIKACHU."); +const u8 gSoftSandItemDescription[] = _("A hold item that\nraises the power of\nGROUND-type moves."); +const u8 gHardStoneItemDescription[] = _("A hold item that\nraises the power of\nROCK-type moves."); +const u8 gMiracleSeedItemDescription[] = _("A hold item that\nraises the power of\nGRASS-type moves."); +const u8 gBlackGlassesItemDescription[] = _("A hold item that\nraises the power of\nDARK-type moves."); +const u8 gBlackBeltItemDescription[] = _("A hold item that\nboosts FIGHTING-\ntype moves."); +const u8 gMagnetItemDescription[] = _("A hold item that\nboosts ELECTRIC-\ntype moves."); +const u8 gMysticWaterItemDescription[] = _("A hold item that\nraises the power of\nWATER-type moves."); +const u8 gSharpBeakItemDescription[] = _("A hold item that\nraises the power of\nFLYING-type moves."); +const u8 gPoisonBarbItemDescription[] = _("A hold item that\nraises the power of\nPOISON-type moves."); +const u8 gNeverMeltIceItemDescription[] = _("A hold item that\nraises the power of\nICE-type moves."); +const u8 gSpellTagItemDescription[] = _("A hold item that\nraises the power of\nGHOST-type moves."); +const u8 gTwistedSpoonItemDescription[] = _("A hold item that\nboosts PSYCHIC-\ntype moves."); +const u8 gCharcoalItemDescription[] = _("A hold item that\nraises the power of\nFIRE-type moves."); +const u8 gDragonFangItemDescription[] = _("A hold item that\nraises the power of\nDRAGON-type moves."); +const u8 gSilkScarfItemDescription[] = _("A hold item that\nraises the power of\nNORMAL-type moves."); +const u8 gUpGradeItemDescription[] = _("A peculiar box made\nby SILPH CO."); +const u8 gShellBellItemDescription[] = _("A hold item that\nrestores HP upon\nstriking the foe."); +const u8 gSeaIncenseItemDescription[] = _("A hold item that\nslightly boosts\nWATER-type moves."); +const u8 gLaxIncenseItemDescription[] = _("A hold item that\nslightly lowers the\nfoe’s accuracy."); +const u8 gLuckyPunchItemDescription[] = _("A hold item that\nraises CHANSEY’s\ncritical-hit rate."); +const u8 gMetalPowderItemDescription[] = _("A hold item that\nraises DITTO’s\nDEFENSE."); +const u8 gThickClubItemDescription[] = _("A hold item that \nraises CUBONE or\nMAROWAK’s ATTACK."); +const u8 gStickItemDescription[] = _("A hold item that\nraises FARFETCH’D’s\ncritical-hit ratio."); +const u8 gRedScarfItemDescription[] = _("A hold item that\nraises COOL in\nCONTESTS."); +const u8 gBlueScarfItemDescription[] = _("A hold item that\nraises BEAUTY in\nCONTESTS."); +const u8 gPinkScarfItemDescription[] = _("A hold item that\nraises CUTE in\nCONTESTS."); +const u8 gGreenScarfItemDescription[] = _("A hold item that\nraises SMART in\nCONTESTS."); +const u8 gYellowScarfItemDescription[] = _("A hold item that\nraises TOUGH in\nCONTESTS."); +//Key items +const u8 gMachBikeItemDescription[] = _("A folding bicycle\nthat doubles your\nspeed or better."); +const u8 gCoinCaseItemDescription[] = _("A case that holds\nup to 9,999 COINS."); +const u8 gItemfinderItemDescription[] = _("A device that\nsignals an invisible\nitem by sound."); +const u8 gOldRodItemDescription[] = _("Use by any body of\nwater to fish for\nwild POKéMON."); +const u8 gGoodRodItemDescription[] = _("A decent fishing\nrod for catching\nwild POKéMON."); +const u8 gSuperRodItemDescription[] = _("The best fishing\nrod for catching\nwild POKéMON."); +const u8 gSSTicketItemDescription[] = _("The ticket required\nfor sailing on a\nferry."); +const u8 gContestPassItemDescription[] = _("The pass required\nfor entering\nPOKéMON CONTESTS."); +const u8 gWailmerPailItemDescription[] = _("A tool used for\nwatering BERRIES\nand plants."); +const u8 gDevonGoodsItemDescription[] = _("A package that\ncontains DEVON’s\nmachine parts."); +const u8 gSootSackItemDescription[] = _("A sack used to\ngather and hold\nvolcanic ash."); +const u8 gBasementKeyItemDescription[] = _("The key for NEW\nMAUVILLE beneath\nMAUVILLE CITY."); +const u8 gAcroBikeItemDescription[] = _("A folding bicycle\ncapable of jumps\nand wheelies."); +const u8 gPokeblockCaseItemDescription[] = _("A case for holding\n{POKEBLOCK}S made with\na BERRY BLENDER."); +const u8 gLetterItemDescription[] = _("A letter to STEVEN\nfrom the PRESIDENT\nof the DEVON CORP."); +const u8 gEonTicketItemDescription[] = _("The ticket for a\nferry to a distant\nsouthern island."); +const u8 gRedOrbItemDescription[] = _("A red, glowing orb\nsaid to contain an\nancient power."); +const u8 gBlueOrbItemDescription[] = _("A blue, glowing orb\nsaid to contain an\nancient power."); +const u8 gScannerItemDescription[] = _("A device found\ninside the\nABANDONED SHIP."); +const u8 gGoGogglesItemDescription[] = _("Nifty goggles that\nprotect eyes from\ndesert sandstorms."); +const u8 gMeteoriteItemDescription[] = _("A meteorite found\nat METEOR FALLS."); +const u8 gRoom1KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP."); +const u8 gRoom2KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP."); +const u8 gRoom4KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP."); +const u8 gRoom6KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP."); +const u8 gStorageKeyItemDescription[] = _("The key to the\nstorage inside the\nABANDONED SHIP."); +const u8 gRootFossilItemDescription[] = _("A fossil of an\nancient, seafloor-\ndwelling POKéMON."); +const u8 gClawFossilItemDescription[] = _("A fossil of an\nancient, seafloor-\ndwelling POKéMON."); +const u8 gDevonScopeItemDescription[] = _("A device by DEVON\nthat signals any\nunseeable POKéMON."); +//TMs/HMs +const u8 gTM01ItemDescription[] = _("Powerful, but makes\nthe user flinch if\nhit by the foe."); +const u8 gTM02ItemDescription[] = _("Hooks and slashes\nthe foe with long,\nsharp claws."); +const u8 gTM03ItemDescription[] = _("Generates an\nultrasonic wave\nthat may confuse."); +const u8 gTM04ItemDescription[] = _("Raises SP. ATK and\nSP. DEF by focusing\nthe mind."); +const u8 gTM05ItemDescription[] = _("A savage roar that\nmakes the foe flee \nto end the battle."); +const u8 gTM06ItemDescription[] = _("Poisons the foe\nwith a toxin that\ngradually worsens."); +const u8 gTM07ItemDescription[] = _("Creates a hailstorm\nthat damages all\ntypes except ICE."); +const u8 gTM08ItemDescription[] = _("Bulks up the body\nto boost both\nATTACK & DEFENSE."); +const u8 gTM09ItemDescription[] = _("Shoots 2 to 5 seeds\nin a row to strike\nthe foe."); +const u8 gTM10ItemDescription[] = _("The attack power\nvaries among\ndifferent POKéMON."); +const u8 gTM11ItemDescription[] = _("Raises the power of\nFIRE-type moves\nfor 5 turns."); +const u8 gTM12ItemDescription[] = _("Enrages the foe so\nit can only use\nattack moves."); +const u8 gTM13ItemDescription[] = _("Fires an icy cold\nbeam that may\nfreeze the foe."); +const u8 gTM14ItemDescription[] = _("A brutal snow-and-\nwind attack that\nmay freeze the foe."); +const u8 gTM15ItemDescription[] = _("Powerful, but needs\nrecharging the\nnext turn."); +const u8 gTM16ItemDescription[] = _("Creates a wall of\nlight that lowers\nSP. ATK damage."); +const u8 gTM17ItemDescription[] = _("Negates all damage,\nbut may fail if used\nin succession."); +const u8 gTM18ItemDescription[] = _("Raises the power of\nWATER-type moves\nfor 5 turns."); +const u8 gTM19ItemDescription[] = _("Recovers half the\nHP of the damage \nthis move inflicts."); +const u8 gTM20ItemDescription[] = _("Prevents status\nabnormality with a\nmystical power."); +const u8 gTM21ItemDescription[] = _("The less the user\nlikes you, the more\npowerful this move."); +const u8 gTM22ItemDescription[] = _("Absorbs sunlight in\nthe 1st turn, then\nattacks next turn."); +const u8 gTM23ItemDescription[] = _("Slams the foe with\na hard tail. It may\nlower DEFENSE."); +const u8 gTM24ItemDescription[] = _("A powerful electric\nattack that may\ncause paralysis."); +const u8 gTM25ItemDescription[] = _("Strikes the foe\nwith a thunderbolt.\nIt may paralyze."); +const u8 gTM26ItemDescription[] = _("Causes a quake\nthat has no effect\non flying foes."); +const u8 gTM27ItemDescription[] = _("The more the user\nlikes you, the more\npowerful this move."); +const u8 gTM28ItemDescription[] = _("Digs underground\nthe 1st turn, then\nstrikes next turn."); +const u8 gTM29ItemDescription[] = _("A powerful psychic\nattack that may\nlower SP. DEF."); +const u8 gTM30ItemDescription[] = _("Hurls a dark lump\nat the foe. It may\nlower SP. DEF."); +const u8 gTM31ItemDescription[] = _("Destroys barriers\nlike LIGHT SCREEN\nand causes damage."); +const u8 gTM32ItemDescription[] = _("Creates illusory\ncopies to enhance\nelusiveness."); +const u8 gTM33ItemDescription[] = _("Creates a wall of\nlight that weakens\nphysical attacks."); +const u8 gTM34ItemDescription[] = _("Zaps the foe with a\njolt of electricity\nthat never misses."); +const u8 gTM35ItemDescription[] = _("Looses a stream of\nfire that may burn\nthe foe."); +const u8 gTM36ItemDescription[] = _("Hurls sludge at the\nfoe. It may poison\nthe foe."); +const u8 gTM37ItemDescription[] = _("Causes a sandstorm\nthat hits the foe\nover several turns."); +const u8 gTM38ItemDescription[] = _("A powerful fire\nattack that may\nburn the foe."); +const u8 gTM39ItemDescription[] = _("Stops the foe from\nmoving with rocks.\nMay lower SPEED."); +const u8 gTM40ItemDescription[] = _("An extremely fast\nattack that can’t\nbe avoided."); +const u8 gTM41ItemDescription[] = _("Prevents the foe\nfrom using the same\nmove in a row."); +const u8 gTM42ItemDescription[] = _("Raises ATTACK when\npoisoned, burned,\nor paralyzed."); +const u8 gTM43ItemDescription[] = _("Adds an effect to\nattack depending\non the location."); +const u8 gTM44ItemDescription[] = _("The user sleeps for\n2 turns to restore\nhealth and status."); +const u8 gTM45ItemDescription[] = _("Makes it tough to\nattack a foe of the\nopposite gender."); +const u8 gTM46ItemDescription[] = _("While attacking,\nit may steal the\nfoe’s held item."); +const u8 gTM47ItemDescription[] = _("Spreads hard-\nedged wings and\nslams into the foe."); +const u8 gTM48ItemDescription[] = _("Switches abilities\nwith the foe on the\nturn this is used."); +const u8 gTM49ItemDescription[] = _("Steals the effects\nof the move the foe\nis trying to use."); +const u8 gTM50ItemDescription[] = _("Enables full-power\nattack, but sharply\nlowers SP. ATK."); + +const u8 gHM01ItemDescription[] = _("Attacks the foe\nwith sharp blades\nor claws."); +const u8 gHM02ItemDescription[] = _("Flies up on the\nfirst turn, then\nattacks next turn."); +const u8 gHM03ItemDescription[] = _("Creates a huge\nwave, then crashes\nit down on the foe."); +const u8 gHM04ItemDescription[] = _("Builds enormous\npower, then slams\nthe foe."); +const u8 gHM05ItemDescription[] = _("Looses a powerful\nblast of light that\nreduces accuracy."); +const u8 gHM06ItemDescription[] = _("A rock-crushingly\ntough attack that\nmay lower DEFENSE."); +const u8 gHM07ItemDescription[] = _("Attacks the foe\nwith enough power\nto climb waterfalls."); +const u8 gHM08ItemDescription[] = _("Dives underwater\nthe 1st turn, then\nattacks next turn."); +//FireRed/LeafGreen key items +const u8 gOaksParcelItemDescription[] = _("A parcel for PROF.\nOAK from a POKéMON\nMART’s clerk."); +const u8 gPokeFluteItemDescription[] = _("A sweet-sounding\nflute that awakens\nPOKéMON."); +const u8 gSecretKeyItemDescription[] = _("The key to the\nCINNABAR ISLAND\nGYM’s entrance."); +const u8 gBikeVoucherItemDescription[] = _("A voucher for\nobtaining a bicycle\nfrom the BIKE SHOP."); +const u8 gGoldTeethItemDescription[] = _("Gold dentures lost\nby the SAFARI\nZONE’s WARDEN."); +const u8 gOldAmberItemDescription[] = _("A stone containing\nthe genes of an\nancient POKéMON."); +const u8 gCardKeyItemDescription[] = _("A card-type door\nkey used in SILPH\nCO’s office."); +const u8 gLiftKeyItemDescription[] = _("An elevator key\nused in TEAM\nROCKET’s HIDEOUT."); +const u8 gHelixFossilItemDescription[] = _("A piece of an\nancient marine\nPOKéMON’s seashell."); +const u8 gDomeFossilItemDescription[] = _("A piece of an\nancient marine\nPOKéMON’s shell."); +const u8 gSilphScopeItemDescription[] = _("SILPH CO’s scope\nmakes unseeable\nPOKéMON visible."); +const u8 gBicycleItemDescription[] = _("A folding bicycle\nthat is faster than\nthe RUNNING SHOES."); +const u8 gTownMapItemDescription[] = _("Can be viewed\nanytime. Shows your\npresent location."); +const u8 gVSSeekerItemDescription[] = _("A rechargeable unit\nthat flags battle-\nready TRAINERS."); +const u8 gFameCheckerItemDescription[] = _("Stores information\non famous people\nfor instant recall."); +const u8 gTMCaseItemDescription[] = _("A convenient case \nthat holds TMs and\nHMs."); +const u8 gBerryPouchItemDescription[] = _("A convenient\ncontainer that\nholds BERRIES."); +const u8 gTeachyTVItemDescription[] = _("A TV set tuned to\nan advice program\nfor TRAINERS."); +const u8 gTriPassItemDescription[] = _("A pass for ferries\nbetween ONE, TWO,\nand THREE ISLAND."); +const u8 gRainbowPassItemDescription[] = _("For ferries serving\nVERMILION and the\nSEVII ISLANDS."); +const u8 gTeaItemDescription[] = _("A thirst-quenching\ntea prepared by an\nold lady."); +const u8 gMysticTicketItemDescription[] = _("A ticket required\nto board the ship\nto NAVEL ROCK."); +const u8 gAuroraTicketItemDescription[] = _("A ticket required\nto board the ship\nto BIRTH ISLAND."); +const u8 gPowderJarItemDescription[] = _("Stores BERRY\nPOWDER made using\na BERRY CRUSHER."); +const u8 gRubyItemDescription[] = _("An exquisite, red-\nglowing gem that\nsymbolizes passion."); +const u8 gSapphireItemDescription[] = _("A brilliant blue gem\nthat symbolizes\nhonesty."); +//Emerald-specific key items +const u8 gMagmaEmblemItemDescription[] = _("A medal-like item in\nthe same shape as\nTEAM MAGMA’s mark."); +const u8 gOldSeaMapItemDescription[] = _("A faded sea chart\nthat shows the way\nto a certain island."); +#endif // POKEEMERALD_DATA_TEXT_ITEM_DESCRIPTIONS_H diff --git a/include/data2.h b/include/data2.h index be0f33ab8..d71958201 100644 --- a/include/data2.h +++ b/include/data2.h @@ -14,7 +14,9 @@ extern struct MonCoords gTrainerFrontPicCoords[]; extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const u8 gMoveNames[][13]; -extern const u8 gAbilityNames[][13]; -extern const u8 gTypeNames[][7]; +extern struct CompressedSpriteSheet gUnknown_0831C620; +extern struct CompressedSpritePalette gUnknown_0831C628; +extern const struct SpriteTemplate gUnknown_0831C688; + #endif // GUARD_DATA2_H diff --git a/include/decompress.h b/include/decompress.h index 36be803e0..e98181c82 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -28,4 +28,6 @@ void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); +u32 GetDecompressedDataSize(const u8 *ptr); + #endif // GUARD_DECOMPRESS_H diff --git a/include/decoration.h b/include/decoration.h index ead621c5f..76b2f2ec4 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -1,130 +1,6 @@ #ifndef GUARD_DECORATION_H #define GUARD_DECORATION_H -enum DecoId { - /*000*/ DECOR_NONE, - /*001*/ DECOR_SMALL_DESK, - /*002*/ DECOR_POKEMON_DESK, - /*003*/ DECOR_HEAVY_DESK, - /*004*/ DECOR_RAGGED_DESK, - /*005*/ DECOR_COMFORT_DESK, - /*006*/ DECOR_PRETTY_DESK, - /*007*/ DECOR_BRICK_DESK, - /*008*/ DECOR_CAMP_DESK, - /*009*/ DECOR_HARD_DESK, - /*010*/ DECOR_SMALL_CHAIR, - /*011*/ DECOR_POKEMON_CHAIR, - /*012*/ DECOR_HEAVY_CHAIR, - /*013*/ DECOR_PRETTY_CHAIR, - /*014*/ DECOR_COMFORT_CHAIR, - /*015*/ DECOR_RAGGED_CHAIR, - /*016*/ DECOR_BRICK_CHAIR, - /*017*/ DECOR_CAMP_CHAIR, - /*018*/ DECOR_HARD_CHAIR, - /*019*/ DECOR_RED_PLANT, - /*020*/ DECOR_TROPICAL_PLANT, - /*021*/ DECOR_PRETTY_FLOWERS, - /*022*/ DECOR_COLORFUL_PLANT, - /*023*/ DECOR_BIG_PLANT, - /*024*/ DECOR_GORGEOUS_PLANT, - /*025*/ DECOR_RED_BRICK, - /*026*/ DECOR_YELLOW_BRICK, - /*027*/ DECOR_BLUE_BRICK, - /*028*/ DECOR_RED_BALLOON, - /*029*/ DECOR_BLUE_BALLOON, - /*030*/ DECOR_YELLOW_BALLOON, - /*031*/ DECOR_RED_TENT, - /*032*/ DECOR_BLUE_TENT, - /*033*/ DECOR_SOLID_BOARD, - /*034*/ DECOR_SLIDE, - /*035*/ DECOR_FENCE_LENGTH, - /*036*/ DECOR_FENCE_WIDTH, - /*037*/ DECOR_TIRE, - /*038*/ DECOR_STAND, - /*039*/ DECOR_MUD_BALL, - /*040*/ DECOR_BREAKABLE_DOOR, - /*041*/ DECOR_SAND_ORNAMENT, - /*042*/ DECOR_SILVER_SHIELD, - /*043*/ DECOR_GOLD_SHIELD, - /*044*/ DECOR_GLASS_ORNAMENT, - /*045*/ DECOR_TV, - /*046*/ DECOR_ROUND_TV, - /*047*/ DECOR_CUTE_TV, - /*048*/ DECOR_GLITTER_MAT, - /*049*/ DECOR_JUMP_MAT, - /*050*/ DECOR_SPIN_MAT, - /*051*/ DECOR_C_LOW_NOTE_MAT, - /*052*/ DECOR_D_NOTE_MAT, - /*053*/ DECOR_E_NOTE_MAT, - /*054*/ DECOR_F_NOTE_MAT, - /*055*/ DECOR_G_NOTE_MAT, - /*056*/ DECOR_A_NOTE_MAT, - /*057*/ DECOR_B_NOTE_MAT, - /*058*/ DECOR_C_HIGH_NOTE_MAT, - /*059*/ DECOR_SURF_MAT, - /*060*/ DECOR_THUNDER_MAT, - /*061*/ DECOR_FIRE_BLAST_MAT, - /*062*/ DECOR_POWDER_SNOW_MAT, - /*063*/ DECOR_ATTRACT_MAT, - /*064*/ DECOR_FISSURE_MAT, - /*065*/ DECOR_SPIKES_MAT, - /*066*/ DECOR_BALL_POSTER, - /*067*/ DECOR_GREEN_POSTER, - /*068*/ DECOR_RED_POSTER, - /*069*/ DECOR_BLUE_POSTER, - /*070*/ DECOR_CUTE_POSTER, - /*071*/ DECOR_PIKA_POSTER, - /*072*/ DECOR_LONG_POSTER, - /*073*/ DECOR_SEA_POSTER, - /*074*/ DECOR_SKY_POSTER, - /*075*/ DECOR_KISS_POSTER, - /*076*/ DECOR_PICHU_DOLL, - /*077*/ DECOR_PIKACHU_DOLL, - /*078*/ DECOR_MARILL_DOLL, - /*079*/ DECOR_TOGEPI_DOLL, - /*080*/ DECOR_CYNDAQUIL_DOLL, - /*081*/ DECOR_CHIKORITA_DOLL, - /*082*/ DECOR_TOTODILE_DOLL, - /*083*/ DECOR_JIGGLYPUFF_DOLL, - /*084*/ DECOR_MEOWTH_DOLL, - /*085*/ DECOR_CLEFAIRY_DOLL, - /*086*/ DECOR_DITTO_DOLL, - /*087*/ DECOR_SMOOCHUM_DOLL, - /*088*/ DECOR_TREECKO_DOLL, - /*089*/ DECOR_TORCHIC_DOLL, - /*090*/ DECOR_MUDKIP_DOLL, - /*091*/ DECOR_DUSKULL_DOLL, - /*092*/ DECOR_WYNAUT_DOLL, - /*093*/ DECOR_BALTOY_DOLL, - /*094*/ DECOR_KECLEON_DOLL, - /*095*/ DECOR_AZURILL_DOLL, - /*096*/ DECOR_SKITTY_DOLL, - /*097*/ DECOR_SWABLU_DOLL, - /*098*/ DECOR_GULPIN_DOLL, - /*099*/ DECOR_LOTAD_DOLL, - /*100*/ DECOR_SEEDOT_DOLL, - /*101*/ DECOR_PIKA_CUSHION, - /*102*/ DECOR_ROUND_CUSHION, - /*103*/ DECOR_KISS_CUSHION, - /*104*/ DECOR_ZIGZAG_CUSHION, - /*105*/ DECOR_SPIN_CUSHION, - /*106*/ DECOR_DIAMOND_CUSHION, - /*107*/ DECOR_BALL_CUSHION, - /*108*/ DECOR_GRASS_CUSHION, - /*109*/ DECOR_FIRE_CUSHION, - /*110*/ DECOR_WATER_CUSHION, - /*111*/ DECOR_SNORLAX_DOLL, - /*112*/ DECOR_RHYDON_DOLL, - /*113*/ DECOR_LAPRAS_DOLL, - /*114*/ DECOR_VENUSAUR_DOLL, - /*115*/ DECOR_CHARIZARD_DOLL, - /*116*/ DECOR_BLASTOISE_DOLL, - /*117*/ DECOR_WAILMER_DOLL, - /*118*/ DECOR_REGIROCK_DOLL, - /*119*/ DECOR_REGICE_DOLL, - /*120*/ DECOR_REGISTEEL_DOLL -}; - enum DecorPerm { /* * The nomenclature here describes collision and placement permissions, in that order. @@ -193,5 +69,9 @@ extern EWRAM_DATA u8 gCurDecorationIndex; void sub_8126968(void); void sub_8126AD8(u8 taskId); void sub_8127D38(u16 mapX, u16 mapY, u16 decor); +void sub_8126B2C(u8 taskId); +void sub_8127208(u8 taskId); +void sub_8127250(u8 *dest, u8 decorCat); +bool8 IsSelectedDecorInThePC(void); #endif //GUARD_DECORATION_H diff --git a/include/dewford_trend.h b/include/dewford_trend.h index 01e5d9762..dac5ea6c9 100644 --- a/include/dewford_trend.h +++ b/include/dewford_trend.h @@ -3,5 +3,6 @@ void InitDewfordTrend(void); void UpdateDewfordTrendPerDay(u16); +void UpdateDewfordTrendPerDay(u16 days); #endif // GUARD_DEWFORDTREND_H diff --git a/include/dma3.h b/include/dma3.h index 265b47824..19a69ea80 100644 --- a/include/dma3.h +++ b/include/dma3.h @@ -3,8 +3,8 @@ void ClearDma3Requests(void); void ProcessDma3Requests(void); -int RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode); -int RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode); -int CheckForSpaceForDma3Request(s16 index); +s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode); +s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode); +s16 CheckForSpaceForDma3Request(s16 index); #endif // GUARD_DMA3_H diff --git a/include/dynamic_placeholder_text_util.h b/include/dynamic_placeholder_text_util.h new file mode 100644 index 000000000..19bca71bb --- /dev/null +++ b/include/dynamic_placeholder_text_util.h @@ -0,0 +1,9 @@ +#ifndef GUARD_DYNAMIC_PLACEHOLDER_TEXT_UTIL_H +#define GUARD_DYNAMIC_PLACEHOLDER_TEXT_UTIL_H + +void DynamicPlaceholderTextUtil_Reset(void); +void DynamicPlaceholderTextUtil_SetPlaceholderPtr(u8 idx, const u8 *ptr); +u8 *DynamicPlaceholderTextUtil_ExpandPlaceholders(u8 *dest, const u8 *src); +const u8 *DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 idx); + +#endif //GUARD_DYNAMIC_PLACEHOLDER_TEXT_UTIL_H diff --git a/include/easy_chat.h b/include/easy_chat.h index f0ac51c22..541fa6c1b 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -1,39 +1,16 @@ #ifndef GUARD_EASYCHAT_H #define GUARD_EASYCHAT_H -// Taken from Pokeruby, check if it's correct -enum -{ - EC_GROUP_POKEMON, - EC_GROUP_TRAINER, - EC_GROUP_STATUS, - EC_GROUP_BATTLE, - EC_GROUP_GREETINGS, - EC_GROUP_PEOPLE, - EC_GROUP_VOICES, - EC_GROUP_SPEECH, - EC_GROUP_ENDINGS, - EC_GROUP_FEELINGS, - EC_GROUP_CONDITIONS, - EC_GROUP_ACTIONS, - EC_GROUP_LIFESTYLE, - EC_GROUP_HOBBIES, - EC_GROUP_TIME, - EC_GROUP_MISC, - EC_GROUP_ADJECTIVES, - EC_GROUP_EVENTS, - EC_GROUP_MOVE_1, - EC_GROUP_MOVE_2, - EC_GROUP_TRENDY_SAYING, - EC_GROUP_POKEMON_2, -}; - void InitEasyChatPhrases(void); void easy_chat_input_maybe(void); -void CopyEasyChatWord(u8 *dest, u16 word); +u8 * CopyEasyChatWord(u8 *dest, u16 word); bool32 sub_811F8D8(u16 word); void InitializeEasyChatWordArray(u16 *words, u16 length); void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2); bool8 ECWord_CheckIfOutsideOfValidRange(u16 word); +u16 sub_811EE38(u16 group); +u16 sub_811F01C(void); +bool16 EasyChat_GetNumWordsInGroup(u8); +u16 sub_811EE90(u16); #endif // GUARD_EASYCHAT_H diff --git a/include/event_data.h b/include/event_data.h index f0ab90ae4..e09b32d44 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -1,8 +1,8 @@ #ifndef GUARD_EVENT_DATA_H #define GUARD_EVENT_DATA_H -#include "flags.h" -#include "vars.h" +#include "constants/flags.h" +#include "constants/vars.h" void InitEventData(void); void ClearTempFieldEventData(void); @@ -24,7 +24,7 @@ bool32 CanResetRTC(void); u16 *GetVarPointer(u16 id); u16 VarGet(u16 id); bool8 VarSet(u16 id, u16 value); -u8 VarGetFieldObjectGraphicsId(u8 id); +u8 VarGetEventObjectGraphicsId(u8 id); u8 *GetFlagPointer(u16 id); u8 FlagSet(u16 id); u8 FlagClear(u16 id); diff --git a/include/event_obj_lock.h b/include/event_obj_lock.h new file mode 100644 index 000000000..59532fdcb --- /dev/null +++ b/include/event_obj_lock.h @@ -0,0 +1,11 @@ +#ifndef GUARD_EVENT_OBJ_LOCK_H +#define GUARD_EVENT_OBJ_LOCK_H + +bool8 sub_80983C4(void); +void ScriptFreezeEventObjects(void); +bool8 sub_809847C(void); +void LockSelectedEventObject(void); +void sub_8098630(void); +bool8 sub_8098734(void); + +#endif // GUARD_EVENT_OBJ_LOCK_H diff --git a/include/event_object_movement.h b/include/event_object_movement.h new file mode 100644 index 000000000..a8f5caa28 --- /dev/null +++ b/include/event_object_movement.h @@ -0,0 +1,405 @@ +#ifndef GUARD_FIELD_EVENT_OBJ_H +#define GUARD_FIELD_EVENT_OBJ_H + +#define NUM_OBJECT_GRAPHICS_INFO 239 +#define SPRITE_VAR 240 + +enum SpinnerRunnerFollowPatterns +{ + RUNFOLLOW_ANY, + RUNFOLLOW_NORTH_SOUTH, + RUNFOLLOW_EAST_WEST, + RUNFOLLOW_NORTH_WEST, + RUNFOLLOW_NORTH_EAST, + RUNFOLLOW_SOUTH_WEST, + RUNFOLLOW_SOUTH_EAST, + RUNFOLLOW_NORTH_SOUTH_WEST, + RUNFOLLOW_NORTH_SOUTH_EAST, + RUNFOLLOW_NORTH_EAST_WEST, + RUNFOLLOW_SOUTH_EAST_WEST +}; + +struct UnkStruct_085094AC { + const union AnimCmd *const *anims; + u8 animPos[4]; +}; + +#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN (1 << 0) +#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE (1 << 1) +#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_SPAWN (1 << 2) +#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_MOVE (1 << 3) +#define GROUND_EFFECT_FLAG_ICE_REFLECTION (1 << 4) +#define GROUND_EFFECT_FLAG_REFLECTION (1 << 5) +#define GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER (1 << 6) +#define GROUND_EFFECT_FLAG_SAND (1 << 7) +#define GROUND_EFFECT_FLAG_DEEP_SAND (1 << 8) +#define GROUND_EFFECT_FLAG_RIPPLES (1 << 9) +#define GROUND_EFFECT_FLAG_PUDDLE (1 << 10) +#define GROUND_EFFECT_FLAG_SAND_PILE (1 << 11) +#define GROUND_EFFECT_FLAG_LAND_IN_TALL_GRASS (1 << 12) +#define GROUND_EFFECT_FLAG_LAND_IN_LONG_GRASS (1 << 13) +#define GROUND_EFFECT_FLAG_LAND_IN_SHALLOW_WATER (1 << 14) +#define GROUND_EFFECT_FLAG_LAND_IN_DEEP_WATER (1 << 15) +#define GROUND_EFFECT_FLAG_LAND_ON_NORMAL_GROUND (1 << 16) +#define GROUND_EFFECT_FLAG_SHORT_GRASS (1 << 17) +#define GROUND_EFFECT_FLAG_HOT_SPRINGS (1 << 18) +#define GROUND_EFFECT_FLAG_SEAWEED (1 << 19) + +#define movement_type_def(setup, table) \ +static u8 setup##_callback(struct EventObject *, struct Sprite *);\ +void setup(struct Sprite *sprite)\ +{\ + UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, setup##_callback);\ +}\ +static u8 setup##_callback(struct EventObject *eventObject, struct Sprite *sprite)\ +{\ + return table[sprite->data[1]](eventObject, sprite);\ +} + +#define movement_type_empty_callback(setup) \ +static u8 setup##_callback(struct EventObject *, struct Sprite *);\ +void setup(struct Sprite *sprite)\ +{\ + UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, setup##_callback);\ +}\ +static u8 setup##_callback(struct EventObject *eventObject, struct Sprite *sprite)\ +{\ + return 0;\ +} + +struct PairedPalettes +{ + u16 tag; + const u16 *data; +}; + +struct LockedAnimEventObjects +{ + u8 eventObjectIds[NUM_EVENT_OBJECTS]; + u8 count; +}; + +extern const struct SpriteFrameImage gEventObjectPicTable_PechaBerryTree[]; + +void sub_808D438(void); +u8 GetMoveDirectionAnimNum(u8); +u8 GetEventObjectIdByLocalIdAndMap(u8, u8, u8); +bool8 TryGetEventObjectIdByLocalIdAndMap(u8, u8, u8, u8 *); +u8 GetEventObjectIdByXY(s16, s16); +void SetEventObjectDirection(struct EventObject *, u8); +u8 GetFirstInactiveEventObjectId(void); +void RemoveEventObjectByLocalIdAndMap(u8, u8, u8); +void npc_load_two_palettes__no_record(u16, u8); +void npc_load_two_palettes__and_record(u16, u8); +void sub_808EBA8(u8, u8, u8, s16, s16); +void pal_patch_for_npc(u16, u8); +void sub_808E16C(s16, s16); +void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat); +void sub_8092FF0(s16, s16, s16 *, s16 *); +u8 GetFaceDirectionAnimNum(u8); +void sub_80930E0(s16 *, s16 *, s16, s16); +void EventObjectClearHeldMovement(struct EventObject *); +void EventObjectClearHeldMovementIfActive(struct EventObject *); +void TrySpawnEventObjects(s16, s16); +u8 sprite_new(u8, u8, s16, s16, u8, u8); +u8 AddPseudoEventObject(u16, void (*)(struct Sprite *), s16, s16, u8); +u8 show_sprite(u8, u8, u8); +u8 SpawnSpecialEventObjectParameterized(u8, u8, u8, s16, s16, u8); +u8 SpawnSpecialEventObject(struct EventObjectTemplate *); +void sub_8093038(s16, s16, s16 *, s16 *); +void CameraObjectReset1(void); +void EventObjectSetGraphicsId(struct EventObject *, u8); +void EventObjectTurn(struct EventObject *, u8); +void EventObjectTurnByLocalIdAndMap(u8, u8, u8, u8); +const struct EventObjectGraphicsInfo *GetEventObjectGraphicsInfo(u8); +void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8); +void gpu_pal_allocator_reset__manage_upper_four(void); +void sub_808E82C(u8, u8, u8, s16, s16); +void sub_808E7E4(u8, u8, u8); +void sub_808E78C(u8, u8, u8, u8); +void sub_808E75C(s16, s16); +void EventObjectGetLocalIdAndMap(struct EventObject *eventObject, void *localId, void *mapNum, void *mapGroup); +void ShiftEventObjectCoords(struct EventObject *, s16, s16); +void sub_808EB08(struct EventObject *, s16, s16); +void sub_808F254(u8, u8, u8); +void UpdateEventObjectCurrentMovement(struct EventObject *, struct Sprite *, bool8(struct EventObject *, struct Sprite *)); +u8 EventObjectFaceOppositeDirection(struct EventObject *, u8); +u8 GetOppositeDirection(u8); +u8 GetWalkInPlaceFastestMovementAction(u32); +u8 GetWalkInPlaceFastMovementAction(u32); +u8 GetWalkInPlaceNormalMovementAction(u32); +u8 GetWalkInPlaceSlowMovementAction(u32); +u8 GetCollisionAtCoords(struct EventObject *, s16, s16, u32); +void MoveCoords(u8, s16 *, s16 *); +bool8 EventObjectIsHeldMovementActive(struct EventObject *); +u8 EventObjectClearHeldMovementIfFinished(struct EventObject *); +u8 GetEventObjectIdByXYZ(u16 x, u16 y, u8 z); +void SetTrainerMovementType(struct EventObject *eventObject, u8 movementType); +u8 GetTrainerFacingDirectionMovementType(u8 direction); +const u8 *GetEventObjectScriptPointerByEventObjectId(u8 eventObjectId); +u8 GetCollisionFlagsAtCoords(struct EventObject *eventObject, s16 x, s16 y, u8 direction); +u8 GetFaceDirectionMovementAction(u32); +u8 GetWalkNormalMovementAction(u32); +u8 GetWalkFastMovementAction(u32); +u8 GetWalkFastestMovementAction(u32); +u8 GetJumpInPlaceMovementAction(u32); +bool8 EventObjectSetHeldMovement(struct EventObject *eventObject, u8 specialAnimId); +bool8 EventObjectIsMovementOverridden(struct EventObject *eventObject); +u8 EventObjectCheckHeldMovementStatus(struct EventObject *eventObject); +void TryOverrideTemplateCoordsForEventObject(const struct EventObject *eventObject, u8 movementType); +void OverrideTemplateCoordsForEventObject(const struct EventObject *eventObject); +void ShiftStillEventObjectCoords(struct EventObject *pObject); +void EventObjectMoveDestCoords(struct EventObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1); +u8 AddCameraObject(u8 linkedSpriteId); +void UpdateEventObjectsForCameraUpdate(s16 x, s16 y); +u8 GetWalkSlowMovementAction(u32); +u8 GetJumpMovementAction(u32); +bool8 AreZCoordsCompatible(u8, u8); +u8 ZCoordToPriority(u8); +void EventObjectUpdateZCoord(struct EventObject *pObject); +void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8); +bool8 IsZCoordMismatchAt(u8, s16, s16); +void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *); +void UnfreezeEventObject(struct EventObject *); +void oamt_npc_ministep_reset(struct Sprite *, u8, u8); +u8 FindLockedEventObjectIndex(struct EventObject *); +bool8 obj_npc_ministep(struct Sprite *sprite); +bool8 sub_80976EC(struct Sprite *sprite); +void sub_80976DC(struct Sprite *, u8); +void sub_809783C(struct Sprite *, u8, u8, u8); +void DoShadowFieldEffect(struct EventObject *); +u8 sub_809785C(struct Sprite *); +u8 sub_80978E4(struct Sprite *); +void SetAndStartSpriteAnim(struct Sprite *, u8, u8); +bool8 SpriteAnimEnded(struct Sprite *); +void sub_8097750(struct Sprite *); +bool8 sub_8097758(struct Sprite *); +void CreateLevitateMovementTask(struct EventObject *); +void DestroyExtraMovementTask(u8); +void UnfreezeEventObjects(void); +void FreezeEventObjectsExceptOne(u8 eventObjectId); +void sub_8097B78(u8, u8); +void sub_8098074(u8 var1, u8 var2); +void FreezeEventObjects(void); +bool8 FreezeEventObject(struct EventObject *eventObject); +u8 GetMoveDirectionFastAnimNum(u8); +u8 GetMoveDirectionFasterAnimNum(u8); +u8 GetMoveDirectionFastestAnimNum(u8); + +void MovementType_None(struct Sprite *); +void MovementType_LookAround(struct Sprite *); +void MovementType_WanderAround(struct Sprite *); +void MovementType_WanderUpAndDown(struct Sprite *); +void MovementType_WanderLeftAndRight(struct Sprite *); +void MovementType_FaceDirection(struct Sprite *); +void MovementType_Player(struct Sprite *); +void MovementType_BerryTreeGrowth(struct Sprite *); +void MovementType_FaceDownAndUp(struct Sprite *); +void MovementType_FaceLeftAndRight(struct Sprite *); +void MovementType_FaceUpAndLeft(struct Sprite *); +void MovementType_FaceUpAndRight(struct Sprite *); +void MovementType_FaceDownAndLeft(struct Sprite *); +void MovementType_FaceDownAndRight(struct Sprite *); +void MovementType_FaceDownUpAndLeft(struct Sprite *); +void MovementType_FaceDownUpAndRight(struct Sprite *); +void MovementType_FaceUpRightAndLeft(struct Sprite *); +void MovementType_FaceDownRightAndLeft(struct Sprite *); +void MovementType_RotateCounterclockwise(struct Sprite *); +void MovementType_RotateClockwise(struct Sprite *); +void MovementType_WalkBackAndForth(struct Sprite *); +void MovementType_WalkSequenceUpRightLeftDown(struct Sprite *); +void MovementType_WalkSequenceRightLeftDownUp(struct Sprite *); +void MovementType_WalkSequenceDownUpRightLeft(struct Sprite *); +void MovementType_WalkSequenceLeftDownUpRight(struct Sprite *); +void MovementType_WalkSequenceUpLeftRightDown(struct Sprite *); +void MovementType_WalkSequenceLeftRightDownUp(struct Sprite *); +void MovementType_WalkSequenceDownUpLeftRight(struct Sprite *); +void MovementType_WalkSequenceRightDownUpLeft(struct Sprite *); +void MovementType_WalkSequenceLeftUpDownRight(struct Sprite *); +void MovementType_WalkSequenceUpDownRightLeft(struct Sprite *); +void MovementType_WalkSequenceRightLeftUpDown(struct Sprite *); +void MovementType_WalkSequenceDownRightLeftUp(struct Sprite *); +void MovementType_WalkSequenceRightUpDownLeft(struct Sprite *); +void MovementType_WalkSequenceUpDownLeftRight(struct Sprite *); +void MovementType_WalkSequenceLeftRightUpDown(struct Sprite *); +void MovementType_WalkSequenceDownLeftRightUp(struct Sprite *); +void MovementType_WalkSequenceUpLeftDownRight(struct Sprite *); +void MovementType_WalkSequenceDownRightUpLeft(struct Sprite *); +void MovementType_WalkSequenceLeftDownRightUp(struct Sprite *); +void MovementType_WalkSequenceRightUpLeftDown(struct Sprite *); +void MovementType_WalkSequenceUpRightDownLeft(struct Sprite *); +void MovementType_WalkSequenceDownLeftUpRight(struct Sprite *); +void MovementType_WalkSequenceLeftUpRightDown(struct Sprite *); +void MovementType_WalkSequenceRightDownLeftUp(struct Sprite *); +void MovementType_CopyPlayer(struct Sprite *); +void MovementType_TreeDisguise(struct Sprite *); +void MovementType_MountainDisguise(struct Sprite *); +void MovementType_CopyPlayerInGrass(struct Sprite *); +void MovementType_Hidden(struct Sprite *); +void MovementType_WalkInPlace(struct Sprite *); +void MovementType_JogInPlace(struct Sprite *); +void MovementType_RunInPlace(struct Sprite *); +void MovementType_Invisible(struct Sprite *); +void MovementType_WalkSlowlyInPlace(struct Sprite *); +u8 GetSlideMovementAction(u32); +u8 GetJumpInPlaceMovementAction(u32); +u8 GetJumpMovementAction(u32); +u8 GetJump2MovementAction(u32); + +u8 MovementType_WanderAround_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WanderAround_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WanderAround_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WanderAround_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_WanderAround_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_WanderAround_Step5(struct EventObject *, struct Sprite *); +u8 MovementType_WanderAround_Step6(struct EventObject *, struct Sprite *); +u8 GetVectorDirection(s16, s16, s16, s16); +u8 GetLimitedVectorDirection_SouthNorth(s16, s16, s16, s16); +u8 GetLimitedVectorDirection_WestEast(s16, s16, s16, s16); +u8 GetLimitedVectorDirection_WestNorth(s16, s16, s16, s16); +u8 GetLimitedVectorDirection_EastNorth(s16, s16, s16, s16); +u8 GetLimitedVectorDirection_WestSouth(s16, s16, s16, s16); +u8 GetLimitedVectorDirection_EastSouth(s16, s16, s16, s16); +u8 GetLimitedVectorDirection_SouthNorthWest(s16, s16, s16, s16); +u8 GetLimitedVectorDirection_SouthNorthEast(s16, s16, s16, s16); +u8 GetLimitedVectorDirection_NorthWestEast(s16, s16, s16, s16); +u8 GetLimitedVectorDirection_SouthWestEast(s16, s16, s16, s16); +u8 MovementType_LookAround_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_LookAround_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_LookAround_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_LookAround_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_LookAround_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step5(struct EventObject *, struct Sprite *); +u8 MovementType_WanderUpAndDown_Step6(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step5(struct EventObject *, struct Sprite *); +u8 MovementType_WanderLeftAndRight_Step6(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDirection_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDirection_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDirection_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_BerryTreeGrowth_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_BerryTreeGrowth_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_BerryTreeGrowth_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_BerryTreeGrowth_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_BerryTreeGrowth_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndUp_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndUp_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndUp_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndUp_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceLeftAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceLeftAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceLeftAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceLeftAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceLeftAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndLeft_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndLeft_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndLeft_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndLeft_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndLeft_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndLeft_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndLeft_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndLeft_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndLeft_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndLeft_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndLeft_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndLeft_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownUpAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpLeftAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpLeftAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpLeftAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpLeftAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceUpLeftAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownLeftAndRight_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownLeftAndRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownLeftAndRight_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownLeftAndRight_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_FaceDownLeftAndRight_Step4(struct EventObject *, struct Sprite *); +u8 MovementType_RotateCounterclockwise_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_RotateCounterclockwise_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_RotateCounterclockwise_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_RotateCounterclockwise_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_RotateClockwise_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_RotateClockwise_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_RotateClockwise_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_RotateClockwise_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_WalkBackAndForth_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkBackAndForth_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkBackAndForth_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkBackAndForth_Step3(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequence_Step2(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceUpRightLeftDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceRightLeftDownUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceDownUpRightLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceLeftDownUpRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceUpLeftRightDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceLeftRightDownUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceDownUpLeftRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceRightDownUpLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceLeftUpDownRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceUpDownRightLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceRightLeftUpDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceDownRightLeftUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceRightUpDownLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceUpDownLeftRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceLeftRightUpDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceDownLeftRightUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceUpLeftDownRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceDownRightUpLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceLeftDownRightUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceRightUpLeftDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceUpRightDownLeft_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceDownLeftUpRight_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceLeftUpRightDown_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSequenceRightDownLeftUp_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_CopyPlayer_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_CopyPlayer_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_CopyPlayer_Step2(struct EventObject *, struct Sprite *); +bool8 CopyablePlayerMovement_None(struct EventObject *, struct Sprite *, u8, bool8(u8)); +bool8 CopyablePlayerMovement_FaceDirection(struct EventObject *, struct Sprite *, u8, bool8(u8)); +bool8 CopyablePlayerMovement_GoSpeed0(struct EventObject *, struct Sprite *, u8, bool8(u8)); +bool8 CopyablePlayerMovement_GoSpeed1(struct EventObject *, struct Sprite *, u8, bool8(u8)); +bool8 CopyablePlayerMovement_GoSpeed2(struct EventObject *, struct Sprite *, u8, bool8(u8)); +bool8 CopyablePlayerMovement_Slide(struct EventObject *, struct Sprite *, u8, bool8(u8)); +bool8 cph_IM_DIFFERENT(struct EventObject *, struct Sprite *, u8, bool8(u8)); +bool8 CopyablePlayerMovement_GoSpeed4(struct EventObject *, struct Sprite *, u8, bool8(u8)); +bool8 CopyablePlayerMovement_Jump(struct EventObject *, struct Sprite *, u8, bool8(u8)); +u8 MovementType_CopyPlayerInGrass_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_Hidden_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_WalkInPlace_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_MoveInPlace_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_WalkSlowlyInPlace_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_JogInPlace_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_RunInPlace_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_Invisible_Step0(struct EventObject *, struct Sprite *); +u8 MovementType_Invisible_Step1(struct EventObject *, struct Sprite *); +u8 MovementType_Invisible_Step2(struct EventObject *, struct Sprite *); + +#endif //GUARD_FIELD_EVENT_OBJ_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 844f1052a..c187682b0 100755..100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -7,13 +7,22 @@ extern const u8 gUnknown_0823B4E8[]; extern const u8 gUnknown_0823B5E9[]; +extern const u8 EventScript_TestSignpostMsg[]; +extern const u8 EventScript_TryGetTrainerScript[]; extern const u8 EventScript_275BB7[]; extern const u8 EventScript_275D0C[]; extern const u8 EventScript_275D1F[]; extern const u8 EventScript_275D2E[]; +extern const u8 EventScript_271354[]; +extern const u8 EventScript_2713C2[]; +extern const u8 EventScript_TryDoDoubleTrainerBattle[]; +extern const u8 EventScript_271362[]; +extern const u8 EventScript_TryDoDoubleRematchBattle[]; +extern const u8 EventScript_2713D1[]; extern const u8 EventScript_2766A2[]; extern const u8 EventScript_2766A6[]; + extern const u8 gTVBravoTrainerText00[]; extern const u8 gTVBravoTrainerText01[]; extern const u8 gTVBravoTrainerText02[]; @@ -372,4 +381,147 @@ extern const u8 SecretBase_RedCave1_Text_274E75[]; extern const u8 SecretBase_RedCave1_Text_2751E1[]; extern const u8 SecretBase_RedCave1_Text_2754F6[]; extern const u8 SecretBase_RedCave1_Text_2758CC[]; + +extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88[]; + +//field effects +extern const u8 FieryPath_EventScript_2908FD[]; +extern const u8 EventScript_290CAE[]; +extern const u8 EventScript_2926F8[]; +extern const u8 Route111_EventScript_2907F0[]; + +//player pc +extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_1F863F[]; +extern const u8 LittlerootTown_MaysHouse_2F_EventScript_1F958F[]; + +//mauville_old_man +extern const u8 gOtherText_Is[]; +extern const u8 gOtherText_DontYouAgree[]; +extern const u8 gText_SoPretty[]; +extern const u8 gText_SoDarling[]; +extern const u8 gText_SoRelaxed[]; +extern const u8 gText_SoSunny[]; +extern const u8 gText_SoDesirable[]; +extern const u8 gText_SoExciting[]; +extern const u8 gText_SoAmusing[]; +extern const u8 gText_SoMagical[]; +extern const u8 gUnknown_08294313[]; +extern const u8 gUnknown_08294359[]; +extern const u8 gUnknown_08294398[]; +extern const u8 gUnknown_082943DA[]; +extern const u8 gUnknown_0829441C[]; +extern const u8 gUnknown_08294460[]; +extern const u8 gUnknown_082944A0[]; +extern const u8 gUnknown_082944D5[]; + + +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E930[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E947[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E956[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E9D7[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E9EF[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E9FE[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EA7D[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EA98[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EAA8[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EB19[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EB31[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EB3E[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EBB5[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EBCD[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EBDD[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EC60[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EC79[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EC81[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28ED04[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28ED21[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28ED30[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EDA1[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EDB5[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EDCF[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EE45[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EE5D[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EE6A[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EEDD[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EEF1[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EF01[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EF73[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EF95[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EFAA[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F045[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F05A[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F071[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F0F3[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F10D[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F125[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F1BE[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F1D5[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F1DE[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F24F[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F269[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F277[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F2FC[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F314[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F32A[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F3AD[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F3C6[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F3D2[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F44B[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F461[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F47C[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F50C[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F51B[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F538[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F5BE[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F5D1[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F5F2[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F678[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F694[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F6B4[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F751[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F76A[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F776[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F7F6[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F811[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F822[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F89C[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F8AF[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F8BC[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F92F[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F941[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F949[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F9D1[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F9EA[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F9FD[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FA81[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FA99[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FAA7[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FB1D[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FB35[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FB47[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FBC4[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FBD9[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FBEA[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FC6B[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FC85[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FC98[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FD1D[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FD35[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FD40[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FDA2[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FDBD[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FDCE[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FE57[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FE72[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FE88[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FF0C[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FF27[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FF44[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FFDD[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FFFA[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_29000D[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_290097[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_2900B5[]; +extern const u8 MauvilleCity_PokemonCenter_1F_Text_2900CB[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/field_camera.h b/include/field_camera.h index a8559e1c2..fcc19ce9a 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -6,23 +6,31 @@ struct CameraObject { void (*callback)(struct CameraObject *); - u32 unk4; + u32 spriteId; s32 unk8; s32 unkC; s32 x; s32 y; }; -extern struct CameraObject gUnknown_03005DD0; - // Exported RAM declarations - +extern struct CameraObject gUnknown_03005DD0; extern u16 gUnknown_03005DEC; extern u16 gUnknown_03005DE8; // Exported ROM declarations - void DrawWholeMapView(void); void CurrentMapDrawMetatileAt(int x, int y); +void sub_8089C08(s16 *a0, s16 *a1); +void DrawDoorMetatileAt(int x, int y, u16 *arr); +void move_tilemap_camera_to_upper_left_corner(void); +void sub_8057A58(void); +void ResetCameraUpdateInfo(void); +u32 InitCameraUpdateCallback(u8 a); +void CameraUpdate(void); +void SetCameraPanningCallback(void (*a)(void)); +void SetCameraPanning(s16 a, s16 b); +void InstallCameraPanAheadCallback(void); +void UpdateCameraPanning(void); #endif //GUARD_FIELD_CAMERA_H diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h new file mode 100644 index 000000000..0ff1834ca --- /dev/null +++ b/include/field_control_avatar.h @@ -0,0 +1,42 @@ +#ifndef GUARD_FIELDCONTROLAVATAR_H +#define GUARD_FIELDCONTROLAVATAR_H + +struct FieldInput +{ + u8 pressedAButton:1; + u8 input_field_0_1:1; + u8 pressedStartButton:1; + u8 pressedSelectButton:1; + u8 input_field_0_4:1; + u8 input_field_0_5:1; + u8 input_field_0_6:1; + u8 pressedBButton:1; + u8 input_field_1_0:1; + u8 input_field_1_1:1; + u8 input_field_1_2:1; + u8 input_field_1_3:1; + u8 input_field_1_4:1; + u8 input_field_1_5:1; + u8 input_field_1_6:1; + u8 input_field_1_7:1; + u8 dpadDirection; + u8 input_field_3; +}; + +void FieldClearPlayerInput(struct FieldInput *pStruct); +void FieldGetPlayerInput(struct FieldInput *pStruct, u16 keys, u16 heldKeys); +int sub_809C014(struct FieldInput *pStruct); +u8 *sub_80682A8(struct MapPosition *, u8, u8); +void overworld_poison_timer_set(void); +void prev_quest_postbuffer_cursor_backup_reset(void); +u8 *sub_8068E24(struct MapPosition *); +u8 *GetEventObjectScriptPointerPlayerFacing(void); +bool8 mapheader_trigger_activate_at__run_now(struct MapPosition *); +bool8 sub_8068870(u16 a); +bool8 sub_8068894(void); +bool8 sub_8068A64(struct MapPosition *, u16); +u8 sub_8068F18(void); +bool8 dive_warp(struct MapPosition *position, u16 b); +void sub_809D2BC(void); + +#endif // GUARD_FIELDCONTROLAVATAR_H diff --git a/include/field_door.h b/include/field_door.h index f1dfc551d..8b4955cac 100644 --- a/include/field_door.h +++ b/include/field_door.h @@ -1,6 +1,21 @@ #ifndef GUARD_FIELDDOOR_H #define GUARD_FIELDDOOR_H +struct DoorGraphics +{ + u16 metatileNum; + u8 sound; + u8 size; + const void *tiles; + const void *palette; +}; + +struct DoorAnimFrame +{ + u8 time; + u16 offset; +}; + void FieldSetDoorOpened(u32, u32); void FieldSetDoorClosed(u32, u32); s8 FieldAnimateDoorClose(u32, u32); diff --git a/include/field_effect.h b/include/field_effect.h index 629ae07c7..9c9501bfa 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -1,9 +1,17 @@ #ifndef GUARD_FIELD_EFFECTS_H #define GUARD_FIELD_EFFECTS_H +#include "task.h" + +extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[2]; +extern const struct SpritePalette gNewGameBirchObjectPaletteInfo; +extern const struct CompressedSpriteSheet gTrainerFrontPicTable[2]; +extern const struct SpriteTemplate gNewGameBirchObjectTemplate; +extern const struct OamData gNewGameBirchOamAttributes; + enum FieldEffectScriptIdx { - FLDEFF_EXCLAMATION_MARK_ICON_1, + FLDEFF_EXCLAMATION_MARK_ICON, FLDEFF_USE_CUT_ON_GRASS, FLDEFF_USE_CUT_ON_TREE, FLDEFF_SHADOW, @@ -36,7 +44,7 @@ enum FieldEffectScriptIdx FLDEFF_NPCFLY_OUT, FLDEFF_USE_FLY, FLDEFF_FLY_IN, - FLDEFF_EXCLAMATION_MARK_ICON_2, + FLDEFF_QUESTION_MARK_ICON, FLDEFF_FEET_IN_FLOWING_WATER, FLDEFF_BIKE_TIRE_TRACKS, FLDEFF_SAND_DISGUISE, @@ -69,10 +77,160 @@ enum FieldEffectScriptIdx FLDEFF_USE_TELEPORT }; -extern u32 gFieldEffectArguments[8]; +extern s32 gFieldEffectArguments[8]; +extern void (*gPostMenuFieldCallback)(void); +extern bool8 (*gFieldCallback2)(void); -u8 FieldEffectStart(u8); +u32 FieldEffectStart(u8); bool8 FieldEffectActiveListContains(u8 id); void sub_80B69DC(void); +u8 AddNewGameBirchObject(s16, s16, u8); +void FieldEffectStop(struct Sprite *sprite, u8 id); +u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); +void CreateTeleportFieldEffectTask(void); +void FieldEffectActiveListRemove(u8 id); +void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8); +void FieldEffectActiveListAdd(u8 id); +void FieldEffectScript_LoadTiles(u8 **script); +void FieldEffectScript_LoadFadedPalette(u8 **script); +void FieldEffectScript_LoadPalette(u8 **script); +void FieldEffectScript_CallNative(u8 **script, u32 *val); +void FieldEffectFreeTilesIfUnused(u16 tileStart); +void FieldEffectFreePaletteIfUnused(u8 paletteNum); +bool8 FieldEffectCmd_loadtiles(u8 **script, u32 *val); +bool8 FieldEffectCmd_loadfadedpal(u8 **script, u32 *val); +bool8 FieldEffectCmd_loadpal(u8 **script, u32 *val); +bool8 FieldEffectCmd_callnative(u8 **script, u32 *val); +bool8 FieldEffectCmd_end(u8 **script, u32 *val); +bool8 FieldEffectCmd_loadgfx_callnative(u8 **script, u32 *val); +bool8 FieldEffectCmd_loadtiles_callnative(u8 **script, u32 *val); +bool8 FieldEffectCmd_loadfadedpal_callnative(u8 **script, u32 *val); + +void PokecenterHealEffect_0(struct Task *); +void PokecenterHealEffect_1(struct Task *); +void PokecenterHealEffect_2(struct Task *); +void PokecenterHealEffect_3(struct Task *); + +void HallOfFameRecordEffect_0(struct Task *); +void HallOfFameRecordEffect_1(struct Task *); +void HallOfFameRecordEffect_2(struct Task *); +void HallOfFameRecordEffect_3(struct Task *); + +void PokeballGlowEffect_0(struct Sprite *); +void PokeballGlowEffect_1(struct Sprite *); +void PokeballGlowEffect_2(struct Sprite *); +void PokeballGlowEffect_3(struct Sprite *); +void PokeballGlowEffect_4(struct Sprite *); +void PokeballGlowEffect_5(struct Sprite *); +void PokeballGlowEffect_6(struct Sprite *); +void PokeballGlowEffect_7(struct Sprite *); + +bool8 sub_80B6BCC(struct Task *); +bool8 sub_80B6C74(struct Task *); +bool8 sub_80B6C90(struct Task *); +bool8 sub_80B6D04(struct Task *); +bool8 sub_80B6DBC(struct Task *); +bool8 sub_80B6DD8(struct Task *); +bool8 sub_80B6E18(struct Task *); + +bool8 sub_80B6EC0(struct Task *); +bool8 sub_80B6EE0(struct Task *); +bool8 sub_80B6F50(struct Task *); +bool8 sub_80B6F74(struct Task *); +bool8 sub_80B6F84(struct Task *); +bool8 sub_80B6FA8(struct Task *); + +bool8 sub_80B7114(struct Task *); +bool8 sub_80B7190(struct Task *); +bool8 sub_80B71D0(struct Task *); +bool8 sub_80B7230(struct Task *); +bool8 sub_80B7270(struct Task *); +bool8 sub_80B72D0(struct Task *); +bool8 sub_80B72F4(struct Task *); + +bool8 sub_80B73D0(struct Task *, struct EventObject *); +bool8 waterfall_1_do_anim_probably(struct Task *, struct EventObject *); +bool8 waterfall_2_wait_anim_finish_probably(struct Task *, struct EventObject *); +bool8 sub_80B7450(struct Task *, struct EventObject *); +bool8 sub_80B7478(struct Task *, struct EventObject *); + +bool8 dive_1_lock(struct Task *); +bool8 dive_2_unknown(struct Task *); +bool8 dive_3_unknown(struct Task *); + +bool8 sub_80B764C(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80B7684(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80B76B8(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80B7704(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80B77F8(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80B7814(struct Task *, struct EventObject *, struct Sprite *); + +bool8 sub_80B78EC(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80B791C(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80B7968(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80B79BC(struct Task *, struct EventObject *, struct Sprite *); + +bool8 sub_80B7AE8(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80B7B18(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80B7B94(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80B7BCC(struct Task *, struct EventObject *, struct Sprite *); +bool8 sub_80B7BF4(struct Task *, struct EventObject *, struct Sprite *); + +void sub_80B7D14(struct Task *); +void sub_80B7D34(struct Task *); + +void sub_80B7EC4(struct Task *); +void sub_80B7EE8(struct Task *); + +void sub_80B8280(struct Task *); +void sub_80B830C(struct Task *); +void sub_80B8410(struct Task *); + +void sub_80B8584(struct Task *); +void sub_80B85F8(struct Task *); +void sub_80B8660(struct Task *); +void sub_80B86EC(struct Task *); +void sub_80B871C(struct Task *); +void sub_80B8770(struct Task *); +void overworld_bg_setup_2(struct Task *); + +void sub_80B88E4(struct Task *); +void sub_80B8920(struct Task *); +void sub_80B898C(struct Task *); +void sub_80B89DC(struct Task *); +void sub_80B8A0C(struct Task *); +void sub_80B8A44(struct Task *); +void sub_80B8A64(struct Task *); + +void sub_80B8DB4(struct Task *); +void sub_80B8E14(struct Task *); +void sub_80B8E60(struct Task *); +void sub_80B8EA8(struct Task *); +void sub_80B8F24(struct Task *); + +void sub_80B9204(struct Task *); +void sub_80B925C(struct Task *); +void sub_80B92A0(struct Task *); +void sub_80B92F8(struct Task *); +void sub_80B933C(struct Task *); +void sub_80B9390(struct Task *); +void sub_80B9418(struct Task *); +void sub_80B9474(struct Task *); +void sub_80B9494(struct Task *); + +void sub_80B9804(struct Task *); +void sub_80B98B8(struct Task *); +void sub_80B9924(struct Task *); +void sub_80B9978(struct Task *); +void sub_80B99F0(struct Task *); +void sub_80B9A28(struct Task *); +void sub_80B9A60(struct Task *); + +void sub_80B9C28(s16*, u8); +void sub_80B9C54(s16*, u8); +void sub_80B9CDC(s16*, u8); + +void sub_80B7CAC(struct Sprite*); +void sub_80B7A58(struct Sprite*); #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index e80daf3bd..547f515eb 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -11,6 +11,28 @@ // Exported ROM declarations u8 sub_8154228(void); -bool8 sub_8155DA0(struct MapObject *); +bool8 sub_8155DA0(struct EventObject *); +void sub_8155D78(struct EventObject *); +void sub_81555AC(u8, u8); +void ash(s16, s16, u16, s16); +void SetUpReflection(struct EventObject*, struct Sprite*, u8); +u32 StartFieldEffectForEventObject(u8, struct EventObject*); +u8 sub_81546C8(u8, u8, u8, s16, s16); +void sub_8155F80(struct Sprite*); +void oamc_shadow(struct Sprite*); +void unc_grass_normal(struct Sprite*); +void sub_81561D0(struct Sprite*); +void sub_8155460(struct Sprite*); +void sub_8155658(struct Sprite*); +void sub_8156194(struct Sprite*); +void sub_8154C60(struct Sprite*); +void sub_8154D90(struct Sprite*); +void unc_grass_tall(struct Sprite*); +void sub_81559BC(struct Sprite*); +void sub_8155C88(struct Sprite*); +void sub_8154A10(struct Sprite*); +void sub_8155158(struct Sprite*); +void sub_8155AEC(struct Sprite*); +void sub_8155E50(struct Sprite*); #endif //GUARD_FIELD_EFFECT_HELPERS_H diff --git a/include/field_ground_effect.h b/include/field_ground_effect.h deleted file mode 100644 index 63b67ceaf..000000000 --- a/include/field_ground_effect.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// Created by scott on 9/6/2017. -// - -#ifndef GUARD_FIELD_GROUND_EFFECT_H -#define GUARD_FIELD_GROUND_EFFECT_H - -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations -void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8); -void InitObjectPriorityByZCoord(struct Sprite *, u8); -bool8 IsZCoordMismatchAt(u8, s16, s16); -bool8 AreZCoordsCompatible(u8, u8); -void FieldObjectUpdateSubpriority(struct MapObject *, struct Sprite *); -void DoGroundEffects_OnSpawn(struct MapObject *, struct Sprite *); -void DoGroundEffects_OnBeginStep(struct MapObject *, struct Sprite *); -void DoGroundEffects_OnFinishStep(struct MapObject *, struct Sprite *); - -#endif //GUARD_FIELD_GROUND_EFFECT_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h deleted file mode 100755 index 0107fa10f..000000000 --- a/include/field_map_obj.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef GUARD_FIELD_MAP_OBJ_H -#define GUARD_FIELD_MAP_OBJ_H - -#define NUM_OBJECT_GRAPHICS_INFO 239 -#define SPRITE_VAR 240 - -// Exported struct declarations - -enum SpinnerRunnerFollowPatterns { - RUNFOLLOW_ANY, - RUNFOLLOW_NORTH_SOUTH, - RUNFOLLOW_EAST_WEST, - RUNFOLLOW_NORTH_WEST, - RUNFOLLOW_NORTH_EAST, - RUNFOLLOW_SOUTH_WEST, - RUNFOLLOW_SOUTH_EAST, - RUNFOLLOW_NORTH_SOUTH_WEST, - RUNFOLLOW_NORTH_SOUTH_EAST, - RUNFOLLOW_NORTH_EAST_WEST, - RUNFOLLOW_SOUTH_EAST_WEST -}; - -// Exported RAM declarations - -// Exported ROM declarations - -void sub_808D438(void); -u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8); -bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *); -u8 GetFieldObjectIdByXY(s16, s16); -void FieldObjectSetDirection(struct MapObject *, u8); -u8 sub_808D4F4(void); -void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8); -void npc_load_two_palettes__no_record(u16, u8); -void npc_load_two_palettes__and_record(u16, u8); -void sub_808EBA8(u8, u8, u8, s16, s16); -void pal_patch_for_npc(u16, u8); -void sub_808E16C(s16, s16); -void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat); -void sub_8092FF0(s16, s16, s16 *, s16 *); -u8 FieldObjectDirectionToImageAnimId(u8); -void sub_80930E0(s16 *, s16 *, s16, s16); -void FieldObjectClearAnim(struct MapObject *); -void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *); -void SpawnFieldObjectsInView(s16, s16); -u8 sprite_new(u8, u8, s16, s16, u8, u8); -u8 AddPseudoFieldObject(u16, void (*)(struct Sprite *), s16, s16, u8); -u8 show_sprite(u8, u8, u8); -u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8); -u8 SpawnSpecialFieldObject(struct MapObjectTemplate *); -void sub_8093038(s16, s16, s16 *, s16 *); -void CameraObjectReset1(void); -void FieldObjectSetGraphicsId(struct MapObject *, u8); -void FieldObjectTurn(struct MapObject *, u8); -void FieldObjectTurnByLocalIdAndMap(u8, u8, u8, u8); -const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8); -void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8); -void gpu_pal_allocator_reset__manage_upper_four(void); -void sub_808E82C(u8, u8, u8, s16, s16); -void sub_808E7E4(u8, u8, u8); -void sub_808E78C(u8, u8, u8, u8); -void sub_808E75C(s16, s16); -void FieldObjectGetLocalIdAndMap(struct MapObject *, u8 *, u8 *, u8 *); -void npc_coords_shift(struct MapObject *, s16, s16); -void sub_808EB08(struct MapObject *, s16, s16); -void sub_808F254(u8, u8, u8); -void FieldObjectStep(struct MapObject *, struct Sprite *, bool8(struct MapObject *, struct Sprite *)); -u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8); -u8 GetOppositeDirection(u8); -u8 GetStepInPlaceDelay4AnimId(u32); -u8 GetStepInPlaceDelay8AnimId(u32); -u8 GetStepInPlaceDelay16AnimId(u32); -u8 GetStepInPlaceDelay32AnimId(u32); -u8 npc_block_way(struct MapObject *, s16, s16, u32); -void MoveCoords(u8, s16 *, s16 *); -bool8 FieldObjectIsSpecialAnimActive(struct MapObject *); -u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *); -u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z); - -// Exported data declarations - -extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; - -#endif //GUARD_FIELD_MAP_OBJ_H diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h deleted file mode 100644 index ba797ec98..000000000 --- a/include/field_map_obj_helpers.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef GUARD_FIELDMAPOBJHELP_H -#define GUARD_FIELDMAPOBJHELP_H - -void UnfreezeMapObjects(void); -void sub_8097B78(u8, u8); - -#endif diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 25b7f2d71..8cd6c275b 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -1,16 +1,48 @@ #ifndef GUARD_FIELD_PLAYER_AVATAR_H #define GUARD_FIELD_PLAYER_AVATAR_H +void player_step(u8 a, u16 b, u16 c); void ClearPlayerAvatarInfo(void); void SetPlayerAvatarExtraStateTransition(u8, u8); u8 GetPlayerAvatarGenderByGraphicsId(u8); bool8 TestPlayerAvatarFlags(u8); +u8 GetPlayerAvatarObjectId(void); void PlayerGetDestCoords(s16 *, s16 *); -u8 player_get_direction_lower_nybble(void); -u8 player_get_direction_upper_nybble(void); -u8 player_get_x22(void); - +u8 GetPlayerFacingDirection(void); +u8 GetPlayerMovementDirection(void); +u8 PlayerGetCopyableMovement(void); +void PlayerGoSpeed1(u8); +void PlayerGoSpeed2(u8); +void PlayerGoSpeed3(u8); +void PlayerGoSpeed4(u8); +void PlayerOnBikeCollide(u8); +void PlayerFaceDirection(u8 a); +void PlayerTurnInPlace(u8 a); +void PlayerJumpLedge(u8 a); +void PlayerIdleWheelie(u8 a); +void PlayerStartWheelie(u8 a); +void PlayerEndWheelie(u8 a); +void PlayerStandingHoppingWheelie(u8 a); +void PlayerMovingHoppingWheelie(u8 a); +void PlayerLedgeHoppingWheelie(u8 a); +void PlayerAcroTurnJump(u8 a); +void PlayerSetAnimId(u8 a, u8 b); +bool8 IsPlayerCollidingWithFarawayIslandMew(u8 direction); +void PlayerOnBikeCollideWithFarawayIslandMew(u8 direction); +u8 CheckForEventObjectCollision(struct EventObject *a, s16 b, s16 c, u8 d, u8 e); +u8 PlayerGetZCoord(void); +void SetPlayerAvatarTransitionFlags(u16 a); +void sub_808BCE8(void); +void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d); +void sub_808B864(void); +void sub_808BCF4(void); void sub_808D074(u8); void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr); +u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8); +void sub_808C114(void); +u8 GetPlayerAvatarGraphicsIdByCurrentState(void); +void SetPlayerAvatarStateMask(u8 a); +u8 GetPlayerAvatarGraphicsIdByStateId(u8 a); +u8 GetJumpSpecialMovementAction(u32); -#endif //GUARD_FIELD_PLAYER_AVATAR_H +#endif // GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_poison.h b/include/field_poison.h new file mode 100644 index 000000000..d1a4c823b --- /dev/null +++ b/include/field_poison.h @@ -0,0 +1,19 @@ +#ifndef GUARD_FIELD_POISON_H +#define GUARD_FIELD_POISON_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +enum { + FLDPSN_NONE, + FLDPSN_PSN, + FLDPSN_FNT +}; + +void sub_80F972C(void); +unsigned int overworld_poison(void); + +#endif //GUARD_FIELD_POISON_H diff --git a/include/field_screen.h b/include/field_screen.h index 089e79cc4..268b9312e 100644 --- a/include/field_screen.h +++ b/include/field_screen.h @@ -7,7 +7,13 @@ // Exported ROM declarations void pal_fill_black(void); -bool8 sub_80ABDFC(void); +bool8 IsWeatherNotFadingIn(void); void sub_80AF168(void); +void sub_80AF2B4(u8 taskId); +void UpdateWeatherPerDay(u16 days); +void sub_80AC3D0(void); +void sub_80AC3E4(void); +void PreservePaletteInWeather(u8); +void sub_80AF128(void); #endif //GUARD_FIELD_SCREEN_H diff --git a/include/field_special_scene.h b/include/field_special_scene.h new file mode 100644 index 000000000..240e9ecb6 --- /dev/null +++ b/include/field_special_scene.h @@ -0,0 +1,14 @@ +#ifndef GUARD_FIELD_SPECIAL_SCENE_H +#define GUARD_FIELD_SPECIAL_SCENE_H + +s16 GetTruckCameraBobbingY(int a1); +s16 GetTruckBoxMovement(int a1); +void Task_Truck1(u8 taskId); +void Task_Truck2(u8 taskId); +void Task_Truck3(u8 taskId); +void Task_HandleTruckSequence(u8 taskId); +void ExecuteTruckSequence(void); +void EndTruckSequence(u8); +void sub_80C791C(void); + +#endif // GUARD_FIELD_SPECIAL_SCENE_H diff --git a/include/field_specials.h b/include/field_specials.h index 1f8fbf147..c1f70a399 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -2,5 +2,8 @@ #define GUARD_FIELD_SPECIALS_H u8 GetLeadMonIndex(void); +u8 sub_813B260(void); +u16 get_unknown_box_id(void); +bool8 InMultiBattleRoom(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/field_tasks.h b/include/field_tasks.h index 2a2a772d8..400ad054d 100644 --- a/include/field_tasks.h +++ b/include/field_tasks.h @@ -1,6 +1,9 @@ #ifndef GUARD_FIELD_TASKS_H #define GUARD_FIELD_TASKS_H -void ActivatePerStepCallback(u8); +void SetUpFieldTasks(void); +void ActivatePerStepCallback(u8 callbackId); +void ResetFieldTasksArgs(void); +void SetSootopolisGymCrackedIceMetatiles(void); #endif // GUARD_FIELD_TASKS_H diff --git a/include/field_weather.h b/include/field_weather.h index e12107e70..7ad8d21e7 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -1,12 +1,177 @@ #ifndef GUARD_WEATHER_H #define GUARD_WEATHER_H -void fade_screen(u8, s8); +#include "sprite.h" +// Controls how the weather should be changing the screen palettes. +enum { + WEATHER_PAL_STATE_CHANGING_WEATHER, + WEATHER_PAL_STATE_SCREEN_FADING_IN, + WEATHER_PAL_STATE_SCREEN_FADING_OUT, + WEATHER_PAL_STATE_IDLE, +}; + +struct Weather +{ + union + { + struct + { + struct Sprite *rainSprites[24]; + struct Sprite *snowflakeSprites[101]; + struct Sprite *cloudSprites[3]; + } s1; + struct + { + u8 filler0[0xA0]; + struct Sprite *fog1Sprites[20]; + struct Sprite *ashSprites[20]; + struct Sprite *fog2Sprites[20]; + struct Sprite *sandstormSprites1[20]; + struct Sprite *sandstormSprites2[5]; + } s2; + } sprites; + u8 gammaShifts[19][32]; + u8 altGammaShifts[19][32]; + s8 gammaIndex; + s8 gammaTargetIndex; + u8 gammaStepDelay; + u8 gammaStepFrameCounter; + u16 fadeDestColor; + u8 palProcessingState; + u8 fadeScreenCounter; + bool8 readyForInit; + u8 taskId; + u8 unknown_6CA; + u8 unknown_6CB; + u16 initStep; + u16 finishStep; + u8 currWeather; + u8 nextWeather; + u8 weatherGfxLoaded; + bool8 weatherChangeComplete; + u8 weatherPicSpritePalIndex; + u8 altGammaSpritePalIndex; + u16 unknown_6D6; + u8 unknown_6D8; + u8 unknown_6D9; + u8 rainSpriteCount; + u8 unknown_6DB; + u8 unknown_6DC; + u8 rainStrength; + /*0x6DE*/ u8 cloudSpritesCreated; + u8 filler_6DF[1]; + u16 unknown_6E0; + u16 unknown_6E2; + u8 snowflakeSpriteCount; + u8 unknown_6E5; + u16 unknown_6E6; + u16 thunderCounter; + u8 unknown_6EA; + u8 unknown_6EB; + u8 unknown_6EC; + u8 unknown_6ED; + u16 fog1ScrollPosX; + u16 unknown_6F0; + u16 unknown_6F2; + u8 lightenedFogSpritePals[6]; + u8 lightenedFogSpritePalsCount; + u8 fog1SpritesCreated; + u16 unknown_6FC; + u16 unknown_6FE; + u8 ashSpritesCreated; + u8 filler_701[3]; + u32 unknown_704; + u32 unknown_708; + u8 filler_70C[2]; + u16 unknown_70E; + u16 unknown_710; + u16 unknown_712; + u16 unknown_714; + u8 sandstormSprites1Created; + u8 sandstormSprites2Created; + u16 unknown_718; + u16 unknown_71A; + u16 unknown_71C; + u16 unknown_71E; + u16 unknown_720; + u16 unknown_722; + u8 fog2SpritesCreated; + u8 filler_725[1]; + u16 unknown_726; + u16 unknown_728; + u16 unknown_72A; + u16 unknown_72C; + u8 unknown_72E; + u8 filler_72F; + u16 currBlendEVA; + u16 currBlendEVB; + u16 targetBlendEVA; + u16 targetBlendEVB; + u8 blendUpdateCounter; + u8 blendFrameCounter; + u8 blendDelay; + u8 filler_73B[0x3C-0x3B]; + s16 unknown_73C; + s16 unknown_73E; + s16 unknown_740; + s16 unknown_742; + u8 filler_744[0xD-4]; + s8 loadDroughtPalsIndex; + u8 loadDroughtPalsOffset; +}; + +void StartWeather(void); +void ChangeWeather(u8 weather); +void sub_807C988(u8 effect); +void sub_807C9B4(u8 effect); +void Task_WeatherInit(u8); +void Task_WeatherMain(u8); +void sub_807CAE8(void); +void nullsub_38(void); +void SetWeatherScreenFadeOut(void); + +enum +{ + FADE_FROM_BLACK, + FADE_TO_BLACK, + FADE_FROM_WHITE, + FADE_TO_WHITE, +}; + +void FadeScreen(u8, s8); +// ... +void UpdateSpritePaletteWithWeather(u8 tag); +void ApplyWeatherGammaShiftToPal(u8); +// ... +void Weather_SetBlendCoeffs(u8, u8); +// ... +void PlayRainSoundEffect(void); +// ... void SetSav1Weather(u32); u8 GetSav1Weather(void); void sub_80AEDBC(void); +void SetSav1WeatherFromCurrMapHeader(void); +// ... void DoCurrentWeather(void); +void sub_8080750(); + +bool8 IsWeatherNotFadingIn(void); +bool8 IsWeatherChangeComplete(void); +void SetWeather(u32); +void UpdateWeatherPerDay(u16); +void PreservePaletteInWeather(u8 index); +void ResetPreservedPalettesInWeather(void); +extern void ResetDroughtWeatherPaletteLoading(void); +void ResetDroughtWeatherPaletteLoading(void); +bool8 LoadDroughtWeatherPalettes(void); +u8 GetCurrentWeather(void); +void LoadCustomWeatherSpritePalette(const u16 *palette); + + +extern struct Weather gWeather; + +extern struct Weather *const gWeatherPtr; #endif // GUARD_WEATHER_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 06cb7cc77..05ffb2edc 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -1,19 +1,36 @@ #ifndef GUARD_FIELDMAP_H #define GUARD_FIELDMAP_H -extern struct MapCoords { - int width; - int height; -} gUnknown_03005DC0; +extern struct BackupMapLayout gUnknown_03005DC0; u32 MapGridGetMetatileIdAt(int, int); u32 MapGridGetMetatileBehaviorAt(int, int); void MapGridSetMetatileIdAt(int, int, u16); void MapGridSetMetatileEntryAt(int, int, u16); void GetCameraCoords(u16*, u16*); -bool8 MapGridIsImpassableAt(s16, s16); -s32 GetMapBorderIdAt(s16, s16); -bool32 CanCameraMoveInDirection(u8); +bool8 MapGridIsImpassableAt(int, int); +int GetMapBorderIdAt(int x, int y); +int CanCameraMoveInDirection(int direction); u16 GetBehaviorByMetatileId(u16 metatileId); +void sav1_camera_get_focus_coords(u16 *x, u16 *y); +u8 MapGridGetMetatileLayerTypeAt(s32 x, s32 y); +u8 MapGridGetZCoordAt(int x, int y); +u8 CameraMove(s32 deltaX, s32 deltaY); +void mapheader_copy_mapdata_with_padding(struct MapHeader *mapHeader); +void map_copy_with_padding(u16 *map, u16 width, u16 height); +void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *); +void fillSouthConnection(struct MapHeader const *, struct MapHeader const *, s32); +void fillNorthConnection(struct MapHeader const *, struct MapHeader const *, s32); +void fillWestConnection(struct MapHeader const *, struct MapHeader const *, s32); +void fillEastConnection(struct MapHeader const *, struct MapHeader const *, s32); +void mapdata_from_sav2(void); +bool8 sub_8088BF0(u16*, u16, u8); +struct MapConnection *sub_8088950(u8 direction, int x, int y); +bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection); +bool8 sub_8088A0C(int x, int src_width, int dest_width, int offset); + +void SpriteCB_PokeballGlow(struct Sprite *); +void SpriteCB_PokecenterMonitor(struct Sprite *); +void SpriteCB_HallOfFameMonitor(struct Sprite *); #endif //GUARD_FIELDMAP_H diff --git a/include/flags.h b/include/flags.h deleted file mode 100644 index 30c28c0c2..000000000 --- a/include/flags.h +++ /dev/null @@ -1,118 +0,0 @@ -#ifndef GUARD_FLAGS_H -#define GUARD_FLAGS_H - -#define FLAG_LEGENDARIES_IN_SOOTOPOLIS 0x53 -#define FLAG_PENDING_DAYCARE_EGG 0x86 - -#define FLAG_TRAINER_FLAG_START 0x500 - -#define TRAINERS_FLAG_NO 0x356 -#define CODE_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860 - -// SYSTEM FLAGS - -#define FLAG_SYS_POKEMON_GET (CODE_FLAGS + 0) -#define FLAG_SYS_POKEDEX_GET (CODE_FLAGS + 1) -#define FLAG_SYS_POKENAV_GET (CODE_FLAGS + 2) -// third one appears unused -#define FLAG_SYS_GAME_CLEAR (CODE_FLAGS + 4) -#define FLAG_SYS_CHAT_USED (CODE_FLAGS + 5) -#define FLAG_SYS_HIPSTER_MEET (CODE_FLAGS + 6) - -// badges -#define FLAG_BADGE01_GET (CODE_FLAGS + 7) -#define FLAG_BADGE02_GET (CODE_FLAGS + 8) -#define FLAG_BADGE03_GET (CODE_FLAGS + 9) -#define FLAG_BADGE04_GET (CODE_FLAGS + 0xA) -#define FLAG_BADGE05_GET (CODE_FLAGS + 0xB) -#define FLAG_BADGE06_GET (CODE_FLAGS + 0xC) -#define FLAG_BADGE07_GET (CODE_FLAGS + 0xD) -#define FLAG_BADGE08_GET (CODE_FLAGS + 0xE) - -// cities and towns -#define FLAG_VISITED_LITTLEROOT_TOWN (CODE_FLAGS + 0xF) -#define FLAG_VISITED_OLDALE_TOWN (CODE_FLAGS + 0x10) -#define FLAG_VISITED_DEWFORD_TOWN (CODE_FLAGS + 0x11) -#define FLAG_VISITED_LAVARIDGE_TOWN (CODE_FLAGS + 0x12) -#define FLAG_VISITED_FALLARBOR_TOWN (CODE_FLAGS + 0x13) -#define FLAG_VISITED_VERDANTURF_TOWN (CODE_FLAGS + 0x14) -#define FLAG_VISITED_PACIFIDLOG_TOWN (CODE_FLAGS + 0x15) -#define FLAG_VISITED_PETALBURG_CITY (CODE_FLAGS + 0x16) -#define FLAG_VISITED_SLATEPORT_CITY (CODE_FLAGS + 0x17) -#define FLAG_VISITED_MAUVILLE_CITY (CODE_FLAGS + 0x18) -#define FLAG_VISITED_RUSTBORO_CITY (CODE_FLAGS + 0x19) -#define FLAG_VISITED_FORTREE_CITY (CODE_FLAGS + 0x1A) -#define FLAG_VISITED_LILYCOVE_CITY (CODE_FLAGS + 0x1B) -#define FLAG_VISITED_MOSSDEEP_CITY (CODE_FLAGS + 0x1C) -#define FLAG_VISITED_SOOTOPOLIS_CITY (CODE_FLAGS + 0x1D) -#define FLAG_VISITED_EVER_GRANDE_CITY (CODE_FLAGS + 0x1E) - -#define FLAG_SYS_UNKNOWN_880 (CODE_FLAGS + 0x20) - -#define FLAG_SYS_USE_FLASH (CODE_FLAGS + 0x28) -#define FLAG_SYS_USE_STRENGTH (CODE_FLAGS + 0x29) -#define FLAG_SYS_WEATHER_CTRL (CODE_FLAGS + 0x2A) -#define FLAG_SYS_CYCLING_ROAD (CODE_FLAGS + 0x2B) -#define FLAG_SYS_SAFARI_MODE (CODE_FLAGS + 0x2C) -#define FLAG_SYS_CRUISE_MODE (CODE_FLAGS + 0x2D) - -#define FLAG_SYS_TV_HOME (CODE_FLAGS + 0x30) -#define FLAG_SYS_TV_WATCH (CODE_FLAGS + 0x31) -#define FLAG_SYS_TV_START (CODE_FLAGS + 0x32) -#define FLAG_SYS_POPWORD_INPUT (CODE_FLAGS + 0x33) -#define FLAG_SYS_MIX_RECORD (CODE_FLAGS + 0x34) -#define FLAG_SYS_CLOCK_SET (CODE_FLAGS + 0x35) -#define FLAG_SYS_NATIONAL_DEX (CODE_FLAGS + 0x36) -#define FLAG_SYS_CAVE_SHIP (CODE_FLAGS + 0x37) -#define FLAG_SYS_CAVE_WONDER (CODE_FLAGS + 0x38) -#define FLAG_SYS_CAVE_BATTLE (CODE_FLAGS + 0x39) -#define FLAG_SYS_SHOAL_TIDE (CODE_FLAGS + 0x3A) -#define FLAG_SYS_RIBBON_GET (CODE_FLAGS + 0x3B) - -#define FLAG_UNLOCK_BATTLE_FRONTIER (CODE_FLAGS + 0x48) -#define FLAG_UNLOCK_SOUTHERN_ISLAND (CODE_FLAGS + 0x49) - -#define FLAG_SYS_PC_LANETTE (CODE_FLAGS + 0x4B) -#define FLAG_SYS_MYSTERY_EVENT_ENABLE (CODE_FLAGS + 0x4C) -#define FLAG_SYS_ENC_UP_ITEM (CODE_FLAGS + 0x4D) -#define FLAG_SYS_ENC_DOWN_ITEM (CODE_FLAGS + 0x4E) -#define FLAG_SYS_BRAILLE_DIG (CODE_FLAGS + 0x4F) -#define FLAG_SYS_BRAILLE_STRENGTH (CODE_FLAGS + 0x50) -#define FLAG_SYS_BRAILLE_WAIT (CODE_FLAGS + 0x51) -#define FLAG_SYS_BRAILLE_FLY (CODE_FLAGS + 0x52) -#define FLAG_SYS_HAS_EON_TICKET (CODE_FLAGS + 0x53) - -#define FLAG_SYS_POKEMON_LEAGUE_FLY (CODE_FLAGS + 0x54) - -#define FLAG_SYS_TV_LATI (CODE_FLAGS + 0x5D) - -#define FLAG_SYS_SHOAL_ITEM (CODE_FLAGS + 0x5F) -#define FLAG_SYS_B_DASH (CODE_FLAGS + 0x60) // got Running Shoes -#define FLAG_SYS_CTRL_OBJ_DELETE (CODE_FLAGS + 0x61) -#define FLAG_SYS_RESET_RTC_ENABLE (CODE_FLAGS + 0x62) - -#define FLAG_SYS_TOWER_SILVER (CODE_FLAGS + 0x64) -#define FLAG_SYS_TOWER_GOLD (CODE_FLAGS + 0x65) -#define FLAG_SYS_DOME_SILVER (CODE_FLAGS + 0x66) -#define FLAG_SYS_DOME_GOLD (CODE_FLAGS + 0x67) -#define FLAG_SYS_PALACE_SILVER (CODE_FLAGS + 0x68) -#define FLAG_SYS_PALACE_GOLD (CODE_FLAGS + 0x69) -#define FLAG_SYS_ARENA_SILVER (CODE_FLAGS + 0x6A) -#define FLAG_SYS_ARENA_GOLD (CODE_FLAGS + 0x6B) -#define FLAG_SYS_FACTORY_SILVER (CODE_FLAGS + 0x6C) -#define FLAG_SYS_FACTORY_GOLD (CODE_FLAGS + 0x6D) -#define FLAG_SYS_PIKE_SILVER (CODE_FLAGS + 0x6E) -#define FLAG_SYS_PIKE_GOLD (CODE_FLAGS + 0x6F) -#define FLAG_SYS_PYRAMID_SILVER (CODE_FLAGS + 0x70) -#define FLAG_SYS_PYRAMID_GOLD (CODE_FLAGS + 0x71) -#define FLAG_SYS_FRONTIER_PASS (CODE_FLAGS + 0x72) - -#define FLAG_SYS_STORAGE_UNKNOWN_FLAG (CODE_FLAGS + 0x77) - -#define FLAG_SYS_MYSTERY_GIFT_ENABLE (CODE_FLAGS + 0x7B) - -// SPECIAL FLAGS (unknown purpose) - -#define SPECIAL_FLAG_1 0x4001 - -#endif // GUARD_FLAGS_H diff --git a/include/fldeff_80F9BCC.h b/include/fldeff_80F9BCC.h index ecce04943..ba775cd6d 100644 --- a/include/fldeff_80F9BCC.h +++ b/include/fldeff_80F9BCC.h @@ -9,5 +9,9 @@ void sub_80FA5E4(s16 id, s16 x, s16 y); void sub_80FA794(s16 x, s16 y); +void CreateRecordMixingSprite(void); +void DestroyRecordMixingSprite(void); +void overworld_poison_effect(void); +bool8 sub_80FADE4(u16, u8); #endif //GUARD_FLDEFF_80F9BCC_H diff --git a/include/fldeff_cut.h b/include/fldeff_cut.h new file mode 100644 index 000000000..c89d3b6ca --- /dev/null +++ b/include/fldeff_cut.h @@ -0,0 +1,13 @@ +#ifndef GUARD_FLDEFF_CUT_H +#define GUARD_FLDEFF_CUT_H + +extern const struct SpritePalette gFieldEffectObjectPaletteInfo6; + +bool8 SetUpFieldMove_Cut(void); +bool8 FldEff_UseCutOnGrass(void); +bool8 FldEff_UseCutOnTree(void); +bool8 FldEff_CutGrass(void); +void sub_80D423C(s16 x, s16 y); +void sub_80D42B8(s16 x, s16 y); + +#endif // GUARD_FLDEFF_CUT_H diff --git a/include/fldeff_groundshake.h b/include/fldeff_groundshake.h new file mode 100644 index 000000000..c1629f9bd --- /dev/null +++ b/include/fldeff_groundshake.h @@ -0,0 +1,6 @@ +#ifndef GUARD_FLDEFF_GROUNDSHAKE_H +#define GUARD_FLDEFF_GROUNDSHAKE_H + +void sub_81BE72C(void); + +#endif // GUARD_FLDEFF_GROUNDSHAKE_H diff --git a/include/fldeff_teleport.h b/include/fldeff_teleport.h new file mode 100644 index 000000000..71fb64ad2 --- /dev/null +++ b/include/fldeff_teleport.h @@ -0,0 +1,7 @@ +#ifndef GUARD_FLDEFF_TELEPORT_H +#define GUARD_FLDEFF_TELEPORT_H + +void hm_teleport_run_dp02scr(void); +void sub_817C94C(void); + +#endif // GUARD_FLDEFF_TELEPORT_H diff --git a/include/gba/defines.h b/include/gba/defines.h index 41cc84f4a..1eed6303d 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -39,6 +39,9 @@ #define BG_CHAR_ADDR(n) (BG_VRAM + (BG_CHAR_SIZE * (n))) #define BG_SCREEN_ADDR(n) (BG_VRAM + (BG_SCREEN_SIZE * (n))) +#define BG_TILE_H_FLIP(n) (0x400 + (n)) +#define BG_TILE_V_FLIP(n) (0x800 + (n)) + // text-mode BG #define OBJ_VRAM0 (VRAM + 0x10000) #define OBJ_VRAM0_SIZE 0x8000 @@ -60,11 +63,6 @@ #define TOTAL_OBJ_TILE_COUNT 1024 -#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) - -#define RGB_BLACK RGB(0, 0, 0) -#define RGB_WHITE RGB(31, 31, 31) - #define WIN_RANGE(a, b) (((a) << 8) | (b)) #endif // GUARD_GBA_DEFINES diff --git a/include/gba/gba.h b/include/gba/gba.h index 42ae3cdde..349344031 100644 --- a/include/gba/gba.h +++ b/include/gba/gba.h @@ -7,5 +7,6 @@ #include "gba/multiboot.h" #include "gba/syscall.h" #include "gba/macro.h" +#include "gba/isagbprint.h" #endif // GUARD_GBA_GBA_H diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index f86f2434c..01d8c311e 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -501,23 +501,24 @@ // I/O register fields // DISPCNT -#define DISPCNT_MODE_0 0x0000 -#define DISPCNT_MODE_1 0x0001 -#define DISPCNT_MODE_2 0x0002 -#define DISPCNT_MODE_3 0x0003 -#define DISPCNT_MODE_4 0x0004 -#define DISPCNT_MODE_5 0x0005 -#define DISPCNT_OBJ_1D_MAP 0x0040 -#define DISPCNT_FORCED_BLANK 0x0080 -#define DISPCNT_BG0_ON 0x0100 -#define DISPCNT_BG1_ON 0x0200 -#define DISPCNT_BG2_ON 0x0400 -#define DISPCNT_BG3_ON 0x0800 -#define DISPCNT_BG_ALL_ON 0x0F00 -#define DISPCNT_OBJ_ON 0x1000 -#define DISPCNT_WIN0_ON 0x2000 -#define DISPCNT_WIN1_ON 0x4000 -#define DISPCNT_OBJWIN_ON 0x8000 +#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text +#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off +#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine +#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color +#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette +#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color +#define DISPCNT_HBLANK_INTERVAL 0x0020 // Allow access to OAM during H-Blank +#define DISPCNT_OBJ_1D_MAP 0x0040 +#define DISPCNT_FORCED_BLANK 0x0080 +#define DISPCNT_BG0_ON 0x0100 +#define DISPCNT_BG1_ON 0x0200 +#define DISPCNT_BG2_ON 0x0400 +#define DISPCNT_BG3_ON 0x0800 +#define DISPCNT_BG_ALL_ON 0x0F00 +#define DISPCNT_OBJ_ON 0x1000 +#define DISPCNT_WIN0_ON 0x2000 +#define DISPCNT_WIN1_ON 0x4000 +#define DISPCNT_OBJWIN_ON 0x8000 // DISPSTAT #define DISPSTAT_VBLANK 0x0001 // in V-Blank @@ -527,7 +528,77 @@ #define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled #define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled +// BGCNT +#define BGCNT_PRIORITY(n) (n) // Values 0 - 3. Lower priority BGs will be drawn on top of higher priority BGs. +#define BGCNT_CHARBASE(n) ((n) << 2) // Values 0 - 3. Base block for tile pixel data. +#define BGCNT_MOSAIC 0x0040 +#define BGCNT_16COLOR 0x0000 // 4 bits per pixel +#define BGCNT_256COLOR 0x0080 // 8 bits per pixel +#define BGCNT_SCREENBASE(n) ((n) << 8) // Values 0 - 31. Base block for tile map. +#define BGCNT_WRAP 0x2000 // Only affects affine BGs. Text BGs wrap by default. +#define BGCNT_TXT256x256 0x0000 // Internal screen size size of text mode BG in pixels. +#define BGCNT_TXT512x256 0x4000 +#define BGCNT_TXT256x512 0x8000 +#define BGCNT_TXT512x512 0xC000 +#define BGCNT_AFF128x128 0x0000 // Internal screen size size of affine mode BG in pixels. +#define BGCNT_AFF256x256 0x4000 +#define BGCNT_AFF512x512 0x8000 +#define BGCNT_AFF1024x1024 0xC000 + +// WININ/OUT +#define WININ_WIN0_BG0 (1 << 0) +#define WININ_WIN0_BG1 (1 << 1) +#define WININ_WIN0_BG2 (1 << 2) +#define WININ_WIN0_BG3 (1 << 3) +#define WININ_WIN0_OBJ (1 << 4) +#define WININ_WIN0_CLR (1 << 5) +#define WININ_WIN1_BG0 (1 << 8) +#define WININ_WIN1_BG1 (1 << 9) +#define WININ_WIN1_BG2 (1 << 10) +#define WININ_WIN1_BG3 (1 << 11) +#define WININ_WIN1_OBJ (1 << 12) +#define WININ_WIN1_CLR (1 << 13) + +#define WINOUT_WIN01_BG0 (1 << 0) +#define WINOUT_WIN01_BG1 (1 << 1) +#define WINOUT_WIN01_BG2 (1 << 2) +#define WINOUT_WIN01_BG3 (1 << 3) +#define WINOUT_WIN01_OBJ (1 << 4) +#define WINOUT_WIN01_CLR (1 << 5) +#define WINOUT_WINOBJ_BG0 (1 << 8) +#define WINOUT_WINOBJ_BG1 (1 << 9) +#define WINOUT_WINOBJ_BG2 (1 << 10) +#define WINOUT_WINOBJ_BG3 (1 << 11) +#define WINOUT_WINOBJ_OBJ (1 << 12) +#define WINOUT_WINOBJ_CLR (1 << 13) + +#define WINHV_COORDS(m, n) (((m) << 8) | (n)) + // BLDCNT +// Bits 0-5 select layers for the 1st target +#define BLDCNT_TGT1_BG0 (1 << 0) +#define BLDCNT_TGT1_BG1 (1 << 1) +#define BLDCNT_TGT1_BG2 (1 << 2) +#define BLDCNT_TGT1_BG3 (1 << 3) +#define BLDCNT_TGT1_OBJ (1 << 4) +#define BLDCNT_TGT1_BD (1 << 5) +#define BLDCNT_TGT1_ALL (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD) +// Bits 6-7 select the special effect +#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect +#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA) +#define BLDCNT_EFFECT_LIGHTEN (2 << 6) // 1st target becomes whiter (controlled by BLDY) +#define BLDCNT_EFFECT_DARKEN (3 << 6) // 1st target becomes blacker (controlled by BLDY) +// Bits 8-13 select layers for the 2nd target +#define BLDCNT_TGT2_BG0 (1 << 8) +#define BLDCNT_TGT2_BG1 (1 << 9) +#define BLDCNT_TGT2_BG2 (1 << 10) +#define BLDCNT_TGT2_BG3 (1 << 11) +#define BLDCNT_TGT2_OBJ (1 << 12) +#define BLDCNT_TGT2_BD (1 << 13) +#define BLDCNT_TGT2_ALL (BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD) + +// BLDALPHA +#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1)) // SOUNDCNT_H #define SOUND_CGB_MIX_QUARTER 0x0000 @@ -627,8 +698,8 @@ #define KEY_INTR_ENABLE 0x0400 #define KEY_OR_INTR 0x0000 #define KEY_AND_INTR 0x8000 - -#define DPAD_ANY ((DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN)) +#define DPAD_ANY ((DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN)) +#define JOY_EXCL_DPAD 0x030F // interrupt flags #define INTR_FLAG_VBLANK (1 << 0) diff --git a/include/gba/isagbprint.h b/include/gba/isagbprint.h new file mode 100644 index 000000000..c5eb456c3 --- /dev/null +++ b/include/gba/isagbprint.h @@ -0,0 +1,50 @@ +#ifndef GUARD_GBA_ISAGBPRINT_H +#define GUARD_GBA_ISAGBPRINT_H + +#ifdef NDEBUG +#define AGBPrintInit() +#define AGBPutc(cChr) +#define AGBPrint(pBuf) +#define AGBPrintf(pBuf, ...) +#define AGBPrintFlush1Block() +#define AGBPrintFlush() +#define AGBAssert(pFile, nLine, pExpression, nStopProgram) +#else +void AGBPrintInit(void); +void AGBPutc(const char cChr); +void AGBPrint(const char *pBuf); +void AGBPrintf(const char *pBuf, ...); +void AGBPrintFlush1Block(void); +void AGBPrintFlush(void); +void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram); +#endif + +#undef AGB_ASSERT +#ifdef NDEBUG +#define AGB_ASSERT(exp) +#else +#define AGB_ASSERT(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 1); +#endif + +#undef AGB_WARNING +#ifdef NDEBUG +#define AGB_WARNING(exp) +#else +#define AGB_WARNING(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 0); +#endif + +// for matching purposes + +#ifdef NDEBUG +#define AGB_ASSERT_EX(exp, file, line) +#else +#define AGB_ASSERT_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 1); +#endif + +#ifdef NDEBUG +#define AGB_WARNING_EX(exp, file, line) +#else +#define AGB_WARNING_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 0); +#endif + +#endif // GUARD_GBA_ISAGBPRINT_H diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h index 6cdfd13e1..659302fd5 100644 --- a/include/gba/m4a_internal.h +++ b/include/gba/m4a_internal.h @@ -406,7 +406,7 @@ void m4aSoundVSyncOff(void); void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); -void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 pitch); +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan); void ClearModM(struct MusicPlayerTrack *track); void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth); diff --git a/include/gba/macro.h b/include/gba/macro.h index 7b6b98c06..3b35a1946 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -78,6 +78,102 @@ #define DmaCopy16(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 16) #define DmaCopy32(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 32) +#define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaCopy##bit(dmaNum, _src, _dest, (block)); \ + _src += (block); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaCopy##bit(dmaNum, _src, _dest, _size); \ + break; \ + } \ + } \ +} + +#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16) + +#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32) + +#define DmaFillLarge(dmaNum, value, dest, size, block, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaFill##bit(dmaNum, value, _dest, (block)); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaFill##bit(dmaNum, value, _dest, _size); \ + break; \ + } \ + } \ +} + +#define DmaFillLarge16(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 16) + +#define DmaFillLarge32(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 32) + +#define DmaClearLarge(dmaNum, dest, size, block, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaFill##bit(dmaNum, 0, _dest, (block)); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaFill##bit(dmaNum, 0, _dest, _size); \ + break; \ + } \ + } \ +} + +#define DmaClearLarge16(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 16) + +#define DmaClearLarge32(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 32) + +#define DmaCopyDefvars(dmaNum, src, dest, size, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + DmaCopy##bit(dmaNum, _src, _dest, _size); \ +} + +#define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16) +#define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32) + +#define DmaFillDefvars(dmaNum, value, dest, size, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + DmaFill##bit(dmaNum, value, _dest, _size); \ +} + +#define DmaFill16Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 16) +#define DmaFill32Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 32) + +#define DmaClearDefvars(dmaNum, dest, size, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + DmaClear##bit(dmaNum, _dest, _size); \ +} + +#define DmaClear16Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 16) +#define DmaClear32Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 32) + #define DmaStop(dmaNum) \ { \ vu16 *dmaRegs = (vu16 *)REG_ADDR_DMA##dmaNum; \ diff --git a/include/gba/types.h b/include/gba/types.h index e9a380023..9f63489aa 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -49,7 +49,7 @@ struct OamData u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode u32 size:2; - /*0x04*/ u16 tileNum:10; // 0x33F + /*0x04*/ u16 tileNum:10; // 0x3FF u16 priority:2; // 0x400, 0x800 -> 0xC00 u16 paletteNum:4; /*0x06*/ u16 affineParam; diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index ed5054b7d..4bec8e0c7 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -1,7 +1,7 @@ #ifndef GUARD_GLOBAL_FIELDMAP_H #define GUARD_GLOBAL_FIELDMAP_H -#define NUM_FIELD_OBJECTS 16 +#define NUM_EVENT_OBJECTS 16 enum { @@ -13,35 +13,6 @@ enum CONNECTION_EMERGE }; -// map types -enum -{ - MAP_TYPE_0, - MAP_TYPE_TOWN, - MAP_TYPE_CITY, - MAP_TYPE_ROUTE, - MAP_TYPE_UNDERGROUND, - MAP_TYPE_UNDERWATER, - MAP_TYPE_6, - MAP_TYPE_7, - MAP_TYPE_INDOOR, - MAP_TYPE_SECRET_BASE -}; - -// map battle scenes -enum -{ - MAP_BATTLE_SCENE_NORMAL, // 0 - MAP_BATTLE_SCENE_GYM, // 1 - MAP_BATTLE_SCENE_MAGMA, // 2 - MAP_BATTLE_SCENE_AQUA, // 3 - MAP_BATTLE_SCENE_SIDNEY, // 4 - MAP_BATTLE_SCENE_PHOEBE, // 5 - MAP_BATTLE_SCENE_GLACIA, // 6 - MAP_BATTLE_SCENE_DRAKE, // 7 - MAP_BATTLE_SCENE_BATTLE_TOWER, // 8 -}; - typedef void (*TilesetCB)(void); struct Tileset @@ -55,7 +26,7 @@ struct Tileset /*0x14*/ TilesetCB callback; }; -struct MapData +struct MapLayout { /*0x00*/ s32 width; /*0x04*/ s32 height; @@ -65,14 +36,14 @@ struct MapData /*0x14*/ struct Tileset *secondaryTileset; }; -struct BackupMapData +struct BackupMapLayout { s32 width; s32 height; u16 *map; }; -struct MapObjectTemplate +struct EventObjectTemplate { /*0x00*/ u8 localId; /*0x01*/ u8 graphicsId; @@ -81,14 +52,12 @@ struct MapObjectTemplate /*0x06*/ s16 y; /*0x08*/ u8 elevation; /*0x09*/ u8 movementType; - /*0x0A*/ u8 unkA_0:4; - u8 unkA_4:4; - ///*0x0B*/ u8 fillerB[1]; - /*0x0C*/ u16 unkC; - /*0x0E*/ u16 unkE; + /*0x0A*/ u8 movementRangeX:4; + u8 movementRangeY:4; + /*0x0C*/ u16 trainerType; + /*0x0E*/ u16 trainerRange_berryTreeId; /*0x10*/ const u8 *script; /*0x14*/ u16 flagId; - /*0x16*/ u8 filler_16[2]; }; /*size = 0x18*/ struct WarpEvent @@ -135,12 +104,12 @@ struct BgEvent struct MapEvents { - u8 mapObjectCount; + u8 eventObjectCount; u8 warpCount; u8 coordEventCount; u8 bgEventCount; - struct MapObjectTemplate *mapObjects; + struct EventObjectTemplate *eventObjects; struct WarpEvent *warps; struct CoordEvent *coordEvents; struct BgEvent *bgEvents; @@ -162,12 +131,12 @@ struct MapConnections struct MapHeader { - /* 0x00 */ struct MapData *mapData; - /* 0x04 */ struct MapEvents *events; - /* 0x08 */ u8 *mapScripts; - /* 0x0C */ struct MapConnections *connections; + /* 0x00 */ const struct MapLayout *mapLayout; + /* 0x04 */ const struct MapEvents *events; + /* 0x08 */ const u8 *mapScripts; + /* 0x0C */ const struct MapConnections *connections; /* 0x10 */ u16 music; - /* 0x12 */ u16 mapDataId; + /* 0x12 */ u16 mapLayoutId; /* 0x14 */ u8 regionMapSectionId; /* 0x15 */ u8 cave; /* 0x16 */ u8 weather; @@ -178,54 +147,50 @@ struct MapHeader /* 0x1B */ u8 battleType; }; -struct MapObject +struct EventObject { /*0x00*/ u32 active:1; - u32 mapobj_bit_1:1; - u32 mapobj_bit_2:1; - u32 mapobj_bit_3:1; - u32 mapobj_bit_4:1; - u32 mapobj_bit_5:1; - u32 mapobj_bit_6:1; - u32 mapobj_bit_7:1; - /*0x01*/ u32 mapobj_bit_8:1; - u32 mapobj_bit_9:1; - u32 mapobj_bit_10:1; - u32 mapobj_bit_11:1; - u32 mapobj_bit_12:1; - u32 mapobj_bit_13:1; - u32 mapobj_bit_14:1; - u32 mapobj_bit_15:1; - /*0x02*/ u32 mapobj_bit_16:1; - u32 mapobj_bit_17:1; - u32 mapobj_bit_18:1; - u32 mapobj_bit_19:1; - u32 mapobj_bit_20:1; - u32 mapobj_bit_21:1; - u32 mapobj_bit_22:1; - u32 mapobj_bit_23:1; - /*0x03*/ u32 mapobj_bit_24:1; - u32 mapobj_bit_25:1; - u32 mapobj_bit_26:1; - u32 mapobj_bit_27:1; - u32 mapobj_bit_28:1; - u32 mapobj_bit_29:1; - u32 mapobj_bit_30:1; - u32 mapobj_bit_31:1; + u32 singleMovementActive:1; + u32 triggerGroundEffectsOnMove:1; + u32 triggerGroundEffectsOnStop:1; + u32 disableCoveringGroundEffects:1; + u32 landingJump:1; + u32 heldMovementActive:1; + u32 heldMovementFinished:1; + /*0x01*/ u32 frozen:1; + u32 facingDirectionLocked:1; + u32 disableAnim:1; + u32 enableAnim:1; + u32 inanimate:1; + u32 invisible:1; + u32 offScreen:1; + u32 trackedByCamera:1; + /*0x02*/ u32 isPlayer:1; + u32 hasReflection:1; + u32 inShortGrass:1; + u32 inShallowFlowingWater:1; + u32 inSandPile:1; + u32 inHotSprings:1; + u32 hasShadow:1; + u32 spriteAnimPausedBackup:1; + /*0x03*/ u32 spriteAffineAnimPausedBackup:1; + u32 disableJumpLandingGroundEffect:1; + u32 fixedPriority:1; + u32 unk3_3:1; /*0x04*/ u8 spriteId; /*0x05*/ u8 graphicsId; - /*0x06*/ u8 animPattern; + /*0x06*/ u8 movementType; /*0x07*/ u8 trainerType; /*0x08*/ u8 localId; /*0x09*/ u8 mapNum; /*0x0A*/ u8 mapGroup; - /*0x0B*/ u8 mapobj_unk_0B_0:4; - u8 elevation:4; - /*0x0C*/ struct Coords16 coords1; - /*0x10*/ struct Coords16 coords2; - /*0x14*/ struct Coords16 coords3; - /*0x18*/ u8 mapobj_unk_18:4; //current direction? - /*0x18*/ u8 placeholder18:4; + /*0x0B*/ u8 currentElevation:4; + u8 previousElevation:4; + /*0x0C*/ struct Coords16 initialCoords; + /*0x10*/ struct Coords16 currentCoords; + /*0x14*/ struct Coords16 previousCoords; + /*0x18*/ u8 facingDirection:4; // current direction? + /*0x18*/ u8 movementDirection:4; /*0x19*/ union __attribute__((packed)) { u8 as_byte; struct __attribute__((packed)) { @@ -233,19 +198,19 @@ struct MapObject u8 y:4; } __attribute__((aligned (1))) as_nybbles; } __attribute__((aligned (1))) range; - /*0x1A*/ u8 mapobj_unk_1A; - /*0x1B*/ u8 mapobj_unk_1B; - /*0x1C*/ u8 mapobj_unk_1C; + /*0x1A*/ u8 fieldEffectSpriteId; + /*0x1B*/ u8 warpArrowSpriteId; + /*0x1C*/ u8 movementActionId; /*0x1D*/ u8 trainerRange_berryTreeId; - /*0x1E*/ u8 mapobj_unk_1E; - /*0x1F*/ u8 mapobj_unk_1F; - /*0x20*/ u8 mapobj_unk_20; - /*0x21*/ u8 mapobj_unk_21; - /*0x22*/ u8 animId; + /*0x1E*/ u8 currentMetatileBehavior; + /*0x1F*/ u8 previousMetatileBehavior; + /*0x20*/ u8 previousMovementDirection; + /*0x21*/ u8 directionSequenceIndex; + /*0x22*/ u8 playerCopyableMovement; /*size = 0x24*/ }; -struct MapObjectGraphicsInfo +struct EventObjectGraphicsInfo { /*0x00*/ u16 tileTag; /*0x02*/ u16 paletteTag1; @@ -292,6 +257,10 @@ enum DIR_NORTH, DIR_WEST, DIR_EAST, + DIR_SOUTHWEST, + DIR_SOUTHEAST, + DIR_NORTHWEST, + DIR_NORTHEAST, }; enum @@ -299,25 +268,42 @@ enum COLLISION_LEDGE_JUMP = 6 }; -struct PlayerAvatar /* 0x202E858 */ +// player running states +enum +{ + NOT_MOVING, + TURN_DIRECTION, // not the same as turning! turns your avatar without moving. also known as a turn frame in some circles + MOVING, +}; + +// player tile transition states +enum +{ + T_NOT_MOVING, + T_TILE_TRANSITION, + T_TILE_CENTER, // player is on a frame in which they are centered on a tile during which the player either stops or keeps their momentum and keeps going, changing direction if necessary. +}; + +struct PlayerAvatar { /*0x00*/ u8 flags; - /*0x01*/ u8 bike; - /*0x02*/ u8 running2; - /*0x03*/ u8 running1; + /*0x01*/ u8 unk1; // used to be named bike, but its definitely not that. seems to be some transition flags + /*0x02*/ u8 runningState; // this is a static running state. 00 is not moving, 01 is turn direction, 02 is moving. + /*0x03*/ u8 tileTransitionState; // this is a transition running state: 00 is not moving, 01 is transition between tiles, 02 means you are on the frame in which you have centered on a tile but are about to keep moving, even if changing directions. 2 is also used for a ledge hop, since you are transitioning. /*0x04*/ u8 spriteId; - /*0x05*/ u8 mapObjectId; - /*0x06*/ u8 unk6; + /*0x05*/ u8 eventObjectId; + /*0x06*/ bool8 preventStep; /*0x07*/ u8 gender; - u8 acroBikeState; - u8 unk9; - u8 bikeFrameCounter; - u8 unkB; - u32 unkC; - u32 unk10; - u8 unk14[8]; - u8 unk1C[8]; - // TODO: rest of struct + /*0x08*/ u8 acroBikeState; // 00 is normal, 01 is turning, 02 is standing wheelie, 03 is hopping wheelie + /*0x09*/ u8 newDirBackup; // during bike movement, the new direction as opposed to player's direction is backed up here. + /*0x0A*/ u8 bikeFrameCounter; // on the mach bike, when this value is 1, the bike is moving but not accelerating yet for 1 tile. on the acro bike, this acts as a timer for acro bike. + /*0x0B*/ u8 bikeSpeed; + // acro bike only + /*0x0C*/ u32 directionHistory; // up/down/left/right history is stored in each nybble, but using the field directions and not the io inputs. + /*0x10*/ u32 abStartSelectHistory; // same as above but for A + B + start + select only + // these two are timer history arrays which [0] is the active timer for acro bike. every element is backed up to the next element upon update. + /*0x14*/ u8 dirTimerHistory[8]; + /*0x1C*/ u8 abStartSelectTimerHistory[8]; }; struct Camera @@ -327,8 +313,8 @@ struct Camera s32 y; }; -extern struct MapObject gMapObjects[NUM_FIELD_OBJECTS]; -extern u8 gSelectedMapObject; +extern struct EventObject gEventObjects[NUM_EVENT_OBJECTS]; +extern u8 gSelectedEventObject; extern struct MapHeader gMapHeader; extern struct PlayerAvatar gPlayerAvatar; extern struct Camera gCamera; diff --git a/include/global.h b/include/global.h index 2c0418a78..a0722bcc9 100644 --- a/include/global.h +++ b/include/global.h @@ -1,8 +1,9 @@ #ifndef GUARD_GLOBAL_H #define GUARD_GLOBAL_H +#include <string.h> +#include "config.h" // we need to define config before gba headers as print stuff needs the functions nulled before defines. #include "gba/gba.h" -#include "config.h" // Prevent cross-jump optimization. #define BLOCK_CROSS_JUMP asm(""); @@ -10,15 +11,21 @@ // to help in decompiling #define asm_comment(x) asm volatile("@ -- " x " -- ") #define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided") - -#if defined (__APPLE__) || defined (__CYGWIN__) -void *memset(void *, int, size_t); -void *memcpy(void *, const void *, size_t); -int strcmp(const char *s1, const char *s2); -char* strcpy(char *dst0, const char *src0); -#endif // __APPLE__ - -#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) +#define NAKED __attribute__((naked)) + +// IDE support +#if defined (__APPLE__) || defined (__CYGWIN__) || defined (_MSC_VER) +#define _(x) x +#define __(x) x +#define INCBIN_U8 {0} +#define INCBIN_U16 {0} +#define INCBIN_U32 {0} +#define INCBIN_S8 {0} +#define INCBIN_S16 {0} +#define INCBIN_S32 {0} +#endif // IDE support + +#define ARRAY_COUNT(array) (size_t)(sizeof(array) / sizeof((array)[0])) // useful math macros @@ -28,14 +35,52 @@ char* strcpy(char *dst0, const char *src0); // Converts a number to Q4.12 fixed-point format #define Q_4_12(n) ((s16)((n) * 4096)) +// Converts a number to Q24.8 fixed-point format +#define Q_24_8(n) ((s32)((n) * 256)) + +// Converts a Q8.8 fixed-point format number to a regular integer +#define Q_8_8_TO_INT(n) ((int)((n) / 256)) + +// Converts a Q4.12 fixed-point format number to a regular integer +#define Q_4_12_TO_INT(n) ((int)((n) / 4096)) + +// Converts a Q24.8 fixed-point format number to a regular integer +#define Q_24_8_TO_INT(n) ((int)((n) >> 8)) + +#define PARTY_SIZE 6 + +#define POKEMON_SLOTS_NUMBER 412 #define POKEMON_NAME_LENGTH 10 #define OT_NAME_LENGTH 7 +#define min(a, b) ((a) < (b) ? (a) : (b)) +#define max(a, b) ((a) >= (b) ? (a) : (b)) + +#define HEAP_SIZE 0x1C000 + extern u8 gStringVar1[]; extern u8 gStringVar2[]; extern u8 gStringVar3[]; extern u8 gStringVar4[]; +// There are many quirks in the source code which have overarching behavioral differences from +// a number of other files. For example, diploma.c seems to declare rodata before each use while +// other files declare out of order and must be at the beginning. There are also a number of +// macros which differ from one file to the next due to the method of obtaining the result, such +// as these below. Because of this, there is a theory (Two Team Theory) that states that these +// programming projects had more than 1 "programming team" which utilized different macros for +// each of the files that were worked on. +#define T1_READ_8(ptr) ((ptr)[0]) +#define T1_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) +#define T1_READ_32(ptr) ((ptr)[0] | ((ptr)[1] << 8) | ((ptr)[2] << 16) | ((ptr)[3] << 24)) +#define T1_READ_PTR(ptr) (u8*) T1_READ_32(ptr) + +// T2_READ_8 is a duplicate to remain consistent with each group. +#define T2_READ_8(ptr) ((ptr)[0]) +#define T2_READ_16(ptr) ((ptr)[0] + ((ptr)[1] << 8)) +#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) +#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr) + enum { VERSION_SAPPHIRE = 1, @@ -45,14 +90,47 @@ enum VERSION_LEAF_GREEN = 5, }; -enum LanguageId { +enum LanguageId +{ LANGUAGE_JAPANESE = 1, LANGUAGE_ENGLISH = 2, + LANGUAGE_FRENCH = 3, + LANGUAGE_ITALIAN = 4, LANGUAGE_GERMAN = 5, + // 6 goes unused but the theory is it was meant to be Korean + LANGUAGE_SPANISH = 7, }; +#define GAME_VERSION (VERSION_EMERALD) #define GAME_LANGUAGE (LANGUAGE_ENGLISH) +// capacities of various saveblock objects +#define DAYCARE_MON_COUNT 2 +#define POKEBLOCKS_COUNT 40 +#define EVENT_OBJECTS_COUNT 16 +#define BERRY_TREES_COUNT 128 +#define FLAGS_COUNT 300 +#define VARS_COUNT 256 +#define MAIL_COUNT 16 +#define SECRET_BASES_COUNT 20 +#define TV_SHOWS_COUNT 25 +#define POKE_NEWS_COUNT 16 +#define PC_ITEMS_COUNT 50 +#define BAG_ITEMS_COUNT 30 +#define BAG_KEYITEMS_COUNT 30 +#define BAG_POKEBALLS_COUNT 16 +#define BAG_TMHM_COUNT 64 +#define BAG_BERRIES_COUNT 46 + +#define PYRAMID_BAG_ITEMS_COUNT 10 + +// string lengths +#define ITEM_NAME_LENGTH 14 +#define POKEMON_NAME_LENGTH 10 +#define OT_NAME_LENGTH 7 +#define PLAYER_NAME_LENGTH 8 +#define MAIL_WORDS_COUNT 9 + enum { MALE, @@ -85,15 +163,6 @@ enum OPTIONS_BATTLE_STYLE_SET }; -enum -{ - BAG_ITEMS = 1, - BAG_POKEBALLS, - BAG_TMsHMs, - BAG_BERRIES, - BAG_KEYITEMS -}; - struct Coords16 { s16 x; @@ -106,6 +175,18 @@ struct UCoords16 u16 y; }; +struct Coords32 +{ + s32 x; + s32 y; +}; + +struct UCoords32 +{ + u32 x; + u32 y; +}; + struct Time { /*0x00*/ s16 days; @@ -114,6 +195,8 @@ struct Time /*0x04*/ s8 seconds; }; +#define DEX_FLAGS_NO ((POKEMON_SLOTS_NUMBER / 8) + ((POKEMON_SLOTS_NUMBER % 8) ? 1 : 0)) + struct Pokedex { /*0x00*/ u8 order; @@ -123,8 +206,8 @@ struct Pokedex /*0x04*/ u32 unownPersonality; // set when you first see Unown /*0x08*/ u32 spindaPersonality; // set when you first see Spinda /*0x0C*/ u32 unknown3; - /*0x10*/ u8 owned[52]; - /*0x44*/ u8 seen[52]; + /*0x10*/ u8 owned[DEX_FLAGS_NO]; + /*0x44*/ u8 seen[DEX_FLAGS_NO]; }; struct PokemonJumpResults // possibly used in the game itself? @@ -153,11 +236,11 @@ struct BerryPickingResults // possibly used in the game itself? Size may be wron u8 field_F; }; +// two arrays for lvl50 and open level struct PyramidBag { - u16 items_Lvl50[10]; - u16 items_OpenLvl[10]; - u8 quantity[10]; + u16 itemId[2][PYRAMID_BAG_ITEMS_COUNT]; + u8 quantity[2][PYRAMID_BAG_ITEMS_COUNT]; }; struct BerryCrush @@ -167,8 +250,6 @@ struct BerryCrush u32 unk; }; -#define PLAYER_NAME_LENGTH 8 - struct UnknownSaveBlock2Struct { u8 field_0; @@ -189,6 +270,142 @@ struct UnknownSaveBlock2Struct u8 field_EB; }; // sizeof = 0xEC +struct UnkRecordMixingStruct +{ + u8 field_0[0x34]; + u8 playerId[4]; + u8 field_38[10]; +}; + +struct UnknownPokemonStruct +{ + u16 species; + u16 heldItem; + u16 moves[4]; + u8 level; + u8 ppBonuses; + u8 hpEV; + u8 attackEV; + u8 defenseEV; + u8 speedEV; + u8 spAttackEV; + u8 spDefenseEV; + u32 otId; + u32 hpIV:5; + u32 attackIV:5; + u32 defenseIV:5; + u32 speedIV:5; + u32 spAttackIV:5; + u32 spDefenseIV:5; + u32 gap:1; + u32 altAbility:1; + u32 personality; + u8 nickname[POKEMON_NAME_LENGTH + 1]; + u8 friendship; +}; + +struct EmeraldBattleTowerRecord +{ + /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100 + /*0x01*/ u8 trainerClass; + /*0x02*/ u16 winStreak; + /*0x04*/ u8 name[8]; + /*0x0C*/ u8 trainerId[4]; + /*0x10*/ struct { + u16 easyChat[6]; + } greeting; + /*0x1C*/ u8 filler_1c[0x18]; + /*0x34*/ struct UnknownPokemonStruct party[4]; + /*0xE4*/ u8 language; + /*0xE8*/ u32 checksum; +}; + +struct BattleFrontier +{ + /*0x64C*/ struct EmeraldBattleTowerRecord battleTower; + /*0x738*/ struct UnknownSaveBlock2Struct field_738[5]; // No idea here, it's probably wrong, no clue. + /*0xBD4*/ u16 field_BD4; + /*0xBD6*/ u16 field_BD6; + /*0xBD8*/ u8 field_BD8[11]; + /*0xBE3*/ u8 field_BE3[8]; + /*0xBEB*/ u8 field_BEB; + /*0xBEC*/ u8 filler_BEC[16]; + /*0xBFC*/ u16 ecwords_BFC[6]; + /*0xC08*/ u16 ecwords_C08[6]; + /*0xC14*/ u16 ecwords_C14[6]; + /*0xC20*/ u8 filler_C20[0x88]; + /*0xCA8*/ u8 field_CA8; + /*0xCA9*/ u8 chosenLvl:2; // 0x1, 0x2 -> 0x3 + /*0xCA9*/ u8 field_CA9_a:1; // 0x4 + /*0xCA9*/ u8 field_CA9_b:1; // 0x8 + /*0xCA9*/ u8 field_CA9_c:1; // 0x10 + /*0xCA9*/ u8 field_CA9_d:1; // 0x20 + /*0xCA9*/ u8 field_CA9_e:1; // 0x40 + /*0xCA9*/ u8 field_CA9_f:1; // 0x80 + /*0xCAA*/ u16 field_CAA[4]; + /*0xCB2*/ u16 field_CB2; + /*0xCB4*/ u16 field_CB4[30]; + /*0xCF0*/ u16 field_CF0[2]; + /*0xCF4*/ u16 field_CF4[2]; + /*0xCF8*/ u16 field_CF8[2]; + /*0xCFC*/ u16 field_CFC[5]; + /*0xD06*/ u8 field_D06; + /*0xD07*/ u8 field_D07; + /*0xD08*/ u8 filler_D08; + /*0xD09*/ u8 filler_D09; + /*0xD0A*/ u8 filler_D0A; + /*0xD0B*/ u8 filler_D0B; + /*0xD0C*/ u8 filler_D0C; + /*0xD0D*/ u8 filler_D0D; + /*0xD0E*/ u8 filler_D0E; + /*0xD0F*/ u8 filler_D0F; + /*0xD10*/ u8 filler_D10; + /*0xD11*/ u8 filler_D11; + /*0xD12*/ u8 filler_D12; + /*0xD13*/ u8 filler_D13; + /*0xD14*/ u16 field_D14[2]; + /*0xD18*/ u8 field_D18[0xB8]; + /*0xDD0*/ u16 field_DD0[2]; + /*0xDD4*/ u16 field_DD4[2]; + /*0xDD8*/ u16 field_DD8; + /*0xDDA*/ u16 field_DDA; + /*0xDDC*/ u16 field_DDC; + /*0xDDE*/ u16 field_DDE[2]; + /*0xDE2*/ u16 field_DE2; + /*0xDE4*/ u16 field_DE4; + /*0xDE6*/ u16 field_DE6; + /*0xDE8*/ u16 field_DE8; + /*0xDEA*/ u16 field_DEA[2]; + /*0xDEE*/ u16 field_DEE; + /*0xDF0*/ u16 field_DF0; + /*0xDF2*/ u16 field_DF2; + /*0xDF4*/ u16 field_DF4; + /*0xDF6*/ u16 field_DF6; + /*0xDF8*/ u16 field_DF8; + /*0xDFA*/ u16 field_DFA; + /*0xDFC*/ u16 field_DFC; + /*0xDFE*/ u16 field_DFE; + /*0xE00*/ u16 field_E00; + /*0xE02*/ u16 field_E02; + /*0xE04*/ u16 field_E04; + /*0xE06*/ u16 field_E06; + /*0xE08*/ u16 field_E08[9]; + /*0xE1A*/ u16 field_E1A; + /*0xE1C*/ u16 field_E1C; + /*0xE1E*/ u16 field_E1E[7]; + /*0xE2C*/ struct PyramidBag pyramidBag; + /*0xE58*/ u16 field_E58; + /*0xE6A*/ u16 field_E6A; + /*0xE6C*/ u16 field_E6C; + /*0xE6E*/ u16 field_E6E; + /*0xE70*/ u8 field_E70[72]; + /*0xEB8*/ u16 frontierBattlePoints; + /*0xEBA*/ u8 field_EBA[39]; + /*0xEE1*/ u8 field_EE1[2][PLAYER_NAME_LENGTH]; + /*0xEF1*/ u8 field_EF1[2][4]; + /*0xEF9*/ u8 field_EF9[51]; +}; + struct SaveBlock2 { /*0x00*/ u8 playerName[PLAYER_NAME_LENGTH]; @@ -214,55 +431,32 @@ struct SaveBlock2 /*0xAC*/ u32 encryptionKey; // TODO: fix and verify labels - /*0xB0*/ u8 field_B0[0x54]; - /*0x104*/ u16 unk_104[1]; - /*0x106*/ u8 filler_106[0xe6]; + /*0xB0*/ u8 field_B0; + /*0xB1*/ u8 field_B1; + /*0xB2*/ u8 field_B2_0:3; + /*0xB2*/ u8 field_B2_1:2; + /*0xB3*/ u8 field_B3[0x29]; + /*0xDC*/ struct UnkRecordMixingStruct field_DC[4]; /*0x1EC*/ struct BerryCrush berryCrush; /*0x1FC*/ struct PokemonJumpResults pokeJump; /*0x20C*/ struct BerryPickingResults berryPick; - /*0x214*/ u8 field_214[1032]; + /*0x21C*/ u8 field_21C[1032]; /*0x624*/ u16 contestLinkResults[20]; // 4 positions for 5 categories, possibly a struct or a 2d array + /*0x64C*/ struct BattleFrontier frontier; +}; // sizeof=0xF2C - // All below could be a one giant struct +extern struct SaveBlock2 *gSaveBlock2Ptr; - /*0x64C*/ u8 field_64C[236]; - /*0x738*/ struct UnknownSaveBlock2Struct field_738[5]; // No idea here, it's probably wrong, no clue. - /*0xBD4*/ u16 field_BD4; - /*0xBD6*/ u16 field_BD6; - /*0xBD8*/ u8 field_BD8[11]; - /*0xBE3*/ u8 filler_BE3[8]; - /*0xBEB*/ u8 field_BEB; - /*0xBE3*/ u8 filler_BEC[189]; - /*0xCA9*/ u8 frontierChosenLvl : 2; // 0x1, 0x2 -> 0x3 - /*0xCA9*/ u8 field_CA9_a : 1; // 0x4 - /*0xCA9*/ u8 field_CA9_b : 1; // 0x8 - /*0xCA9*/ u8 field_CA9_c : 1; // 0x10 - /*0xCA9*/ u8 field_CA9_d : 1; // 0x20 - /*0xCA9*/ u8 field_CA9_e : 1; // 0x40 - /*0xCA9*/ u8 field_CA9_f : 1; // 0x80 - /*0xCAA*/ u16 field_CAA[4]; - /*0xCB2*/ u16 battlePyramidWildHeaderId; - /*0xCB4*/ u8 field_CB4[82]; - /*0xD06*/ u8 field_D06; - /*0xD07*/ u8 field_D07; - /*0xD08*/ u8 filler_D08[0x112]; - /*0xE1A*/ u16 battlePyramidFloor; // possibly? - /*0xE1C*/ u8 field_E1C[16]; - /*0xE2C*/ struct PyramidBag pyramidBag; - /*0x???*/ u8 field_notSure[13]; - /*0xE6E*/ u16 battleTentWinStreak; - /*0xE70*/ u8 field_E70[72]; - /*0xEB8*/ u16 frontierBattlePoints; - /*0xEBA*/ u8 field_EBA[39]; - /*0xEE1*/ u8 field_EE1; - /*0xEE2*/ u8 field_EE2[7]; - /*0xEE9*/ u8 field_EE9; - /*0xEEA*/ u8 field_EEA[66]; - // sizeof=0xF2C +struct SecretBaseParty +{ + u32 personality[PARTY_SIZE]; + u16 moves[PARTY_SIZE * 4]; + u16 species[PARTY_SIZE]; + u16 heldItems[PARTY_SIZE]; + u8 levels[PARTY_SIZE]; + u8 EVs[PARTY_SIZE]; }; -extern struct SaveBlock2 *gSaveBlock2Ptr; - struct SecretBaseRecord { /*0x1A9C*/ u8 secretBaseId; @@ -278,15 +472,10 @@ struct SecretBaseRecord /*0x1AAD*/ u8 sbr_field_11; /*0x1AAE*/ u8 decorations[16]; /*0x1ABE*/ u8 decorationPos[16]; - /*0x1AD0*/ u32 partyPersonality[6]; - /*0x1AE8*/ u16 partyMoves[6 * 4]; - /*0x1B18*/ u16 partySpecies[6]; - /*0x1B24*/ u16 partyHeldItems[6]; - /*0x1B2E*/ u8 partyLevels[6]; - /*0x1B34*/ u8 partyEVs[6]; + /*0x1AD0*/ struct SecretBaseParty party; }; -#include "game_stat.h" +#include "constants/game_stat.h" #include "global.fieldmap.h" #include "global.berry.h" #include "global.tv.h" @@ -360,48 +549,75 @@ struct EasyChatPair struct MailStruct { - /*0x00*/ u16 words[9]; - /*0x12*/ u8 playerName[8]; + /*0x00*/ u16 words[MAIL_WORDS_COUNT]; + /*0x12*/ u8 playerName[PLAYER_NAME_LENGTH]; /*0x1A*/ u8 trainerId[4]; /*0x1E*/ u16 species; /*0x20*/ u16 itemId; }; -struct UnkMauvilleOldManStruct +struct MauvilleManCommon { - u8 unk_2E28; - u8 unk_2E29; - /*0x2E2A*/ u16 mauvilleOldMan_ecArray[6]; - /*0x2E36*/ u16 mauvilleOldMan_ecArray2[6]; - /*0x2E42*/ u8 playerName[8]; - /*0x2E4A*/ u8 filler_2E4A[0x3]; - /*0x2E4B*/ u8 playerTrainerId[4]; - u8 unk_2E4F; + u8 id; +}; + +struct MauvilleManBard +{ + /*0x00*/ u8 id; + /*0x02*/ u16 songLyrics[6]; + /*0x0E*/ u16 temporaryLyrics[6]; + /*0x1A*/ u8 playerName[8]; + /*0x22*/ u8 filler_2DB6[0x3]; + /*0x25*/ u8 playerTrainerId[4]; + /*0x29*/ bool8 hasChangedSong; + /*0x2A*/ u8 language; }; /*size = 0x2C*/ -struct UnkMauvilleOldManStruct2 +struct MauvilleManStoryteller { - u8 filler0; - u8 unk1; - u8 unk2; - u16 mauvilleOldMan_ecArray[10]; - u8 mauvilleOldMan_ecArray2[12]; - u8 fillerF[0x2]; + u8 id; + bool8 alreadyRecorded; + u8 filler2[2]; + u8 gameStatIDs[4]; + u8 trainerNames[4][7]; + u8 statValues[4][4]; + u8 language[4]; +}; + +struct MauvilleManGiddy +{ + /*0x00*/ u8 id; + /*0x01*/ u8 taleCounter; + /*0x02*/ u8 questionNum; + /*0x04*/ u16 randomWords[10]; + /*0x18*/ u8 questionList[8]; + /*0x20*/ u8 language; }; /*size = 0x2C*/ +struct MauvilleManHipster +{ + u8 id; + bool8 alreadySpoken; + u8 language; +}; + struct MauvilleOldManTrader { - u8 unk0; - u8 unk1[4]; - u8 unk5[4][11]; - u8 unk31; + u8 id; + u8 decorIds[4]; + u8 playerNames[4][11]; + u8 alreadyTraded; + u8 language[4]; }; typedef union OldMan { - struct UnkMauvilleOldManStruct oldMan1; - struct UnkMauvilleOldManStruct2 oldMan2; + struct MauvilleManCommon common; + struct MauvilleManBard bard; + struct MauvilleManGiddy giddy; + struct MauvilleManHipster hipster; struct MauvilleOldManTrader trader; + struct MauvilleManStoryteller storyteller; u8 filler[0x40]; } OldMan; @@ -419,6 +635,8 @@ struct RecordMixing_UnknownStruct u16 unk74[0x2]; }; +#define LINK_B_RECORDS_COUNT 5 + struct LinkBattleRecord { u8 name[8]; @@ -428,6 +646,12 @@ struct LinkBattleRecord u16 draws; }; +struct LinkBattleRecords +{ + struct LinkBattleRecord entries[LINK_B_RECORDS_COUNT]; + u8 languages[LINK_B_RECORDS_COUNT]; +}; + struct RecordMixingGiftData { u8 unk0; @@ -453,9 +677,9 @@ struct ContestWinner u8 contestRank; }; -struct DaycareMiscMon +struct DayCareMail { - struct MailStruct mail; + struct MailStruct message; u8 OT_name[OT_NAME_LENGTH + 1]; u8 monName[POKEMON_NAME_LENGTH + 1]; u8 gameLanguage:4; @@ -465,12 +689,10 @@ struct DaycareMiscMon struct DaycareMon { struct BoxPokemon mon; - struct DaycareMiscMon misc; + struct DayCareMail mail; u32 steps; }; -#define DAYCARE_MON_COUNT 2 - struct DayCare { struct DaycareMon mons[DAYCARE_MON_COUNT]; @@ -478,12 +700,6 @@ struct DayCare u8 stepCounter; }; -struct DayCareMail -{ - /*0x00*/ struct MailStruct message; - /*0x24*/ u8 names[19]; -}; - struct RecordMixingDayCareMail { struct DayCareMail mail[DAYCARE_MON_COUNT]; @@ -491,12 +707,6 @@ struct RecordMixingDayCareMail bool16 holdsItem[DAYCARE_MON_COUNT]; }; -#define MAP_OBJECTS_COUNT 16 -#define BERRY_TREES_COUNT 128 -#define FLAGS_COUNT 300 -#define VARS_COUNT 256 -#define MAIL_COUNT 16 - enum { LILYCOVE_LADY_QUIZ, @@ -551,6 +761,7 @@ typedef union // 3b58 struct LilycoveLadyFavour favour; struct LilycoveLadyContest contest; u8 id; + u8 pad[0x40]; } LilycoveLady; struct WaldaPhrase @@ -563,44 +774,49 @@ struct WaldaPhrase bool8 patternUnlocked; }; +struct UnkSaveSubstruct_3b98 { + u32 trainerId; + u8 trainerName[8]; +}; + struct SaveBlock1 { /*0x00*/ struct Coords16 pos; /*0x04*/ struct WarpData location; /*0x0C*/ struct WarpData warp1; /*0x14*/ struct WarpData warp2; - /*0x1C*/ struct WarpData warp3; + /*0x1C*/ struct WarpData lastHealLocation; /*0x24*/ struct WarpData warp4; - /*0x2C*/ u16 battleMusic; + /*0x2C*/ u16 savedMusic; /*0x2E*/ u8 weather; /*0x2F*/ u8 filler_2F; - /*0x30*/ u8 flashUsed; - /*0x32*/ u16 mapDataId; + /*0x30*/ u8 flashLevel; + /*0x32*/ u16 mapLayoutId; /*0x34*/ u16 mapView[0x100]; /*0x234*/ u8 playerPartyCount; - /*0x238*/ struct Pokemon playerParty[6]; + /*0x238*/ struct Pokemon playerParty[PARTY_SIZE]; /*0x490*/ u32 money; /*0x494*/ u16 coins; /*0x496*/ u16 registeredItem; // registered for use with SELECT button - /*0x498*/ struct ItemSlot pcItems[50]; - /*0x560*/ struct ItemSlot bagPocket_Items[30]; - /*0x5D8*/ struct ItemSlot bagPocket_KeyItems[30]; - /*0x650*/ struct ItemSlot bagPocket_PokeBalls[16]; - /*0x690*/ struct ItemSlot bagPocket_TMHM[64]; - /*0x790*/ struct ItemSlot bagPocket_Berries[46]; - /*0x848*/ struct Pokeblock pokeblocks[40]; - /*0x988*/ u8 seen1[52]; + /*0x498*/ struct ItemSlot pcItems[PC_ITEMS_COUNT]; + /*0x560*/ struct ItemSlot bagPocket_Items[BAG_ITEMS_COUNT]; + /*0x5D8*/ struct ItemSlot bagPocket_KeyItems[BAG_KEYITEMS_COUNT]; + /*0x650*/ struct ItemSlot bagPocket_PokeBalls[BAG_POKEBALLS_COUNT]; + /*0x690*/ struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT]; + /*0x790*/ struct ItemSlot bagPocket_Berries[BAG_BERRIES_COUNT]; + /*0x848*/ struct Pokeblock pokeblocks[POKEBLOCKS_COUNT]; + /*0x988*/ u8 seen1[DEX_FLAGS_NO]; /*0x9BC*/ u16 berryBlenderRecords[3]; /*0x9C2*/ u8 field_9C2[6]; /*0x9C8*/ u16 trainerRematchStepCounter; /*0x9CA*/ u8 trainerRematches[100]; - /*0xA30*/ struct MapObject mapObjects[MAP_OBJECTS_COUNT]; - /*0xC70*/ struct MapObjectTemplate mapObjectTemplates[64]; + /*0xA30*/ struct EventObject eventObjects[EVENT_OBJECTS_COUNT]; + /*0xC70*/ struct EventObjectTemplate eventObjectTemplates[64]; /*0x1270*/ u8 flags[FLAGS_COUNT]; /*0x139C*/ u16 vars[VARS_COUNT]; /*0x159C*/ u32 gameStats[NUM_GAME_STATS]; /*0x169C*/ struct BerryTree berryTrees[BERRY_TREES_COUNT]; - /*0x1A9C*/ struct SecretBaseRecord secretBases[20]; + /*0x1A9C*/ struct SecretBaseRecord secretBases[SECRET_BASES_COUNT]; /*0x271C*/ u8 playerRoomDecor[12]; /*0x2728*/ u8 playerRoomDecorPos[12]; /*0x2734*/ u8 decorDesk[10]; @@ -612,8 +828,8 @@ struct SaveBlock1 /*0x????*/ u8 decorDoll[40]; /*0x????*/ u8 decorCushion[10]; /*0x27CA*/ u8 padding_27CA[2]; - /*0x27CC*/ TVShow tvShows[25]; - /*0x2B50*/ PokeNews pokeNews[16]; + /*0x27CC*/ TVShow tvShows[TV_SHOWS_COUNT]; + /*0x2B50*/ PokeNews pokeNews[POKE_NEWS_COUNT]; /*0x2B90*/ u16 outbreakPokemonSpecies; /*0x2B92*/ u8 outbreakLocationMapNum; /*0x2B93*/ u8 outbreakLocationMapGroup; @@ -636,24 +852,40 @@ struct SaveBlock1 /*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff /*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum /*0x3030*/ struct DayCare daycare; - /*0x3150*/ struct LinkBattleRecord linkBattleRecords[5]; - /*0x31A0*/ u8 unk_31A0; - /*0x31A1*/ u8 filler_31A1[7]; + /*0x3150*/ struct LinkBattleRecords linkBattleRecords; /*0x31A8*/ u8 giftRibbons[52]; /*0x31DC*/ struct Roamer roamer; /*0x31F8*/ struct EnigmaBerry enigmaBerry; /*0x322C*/ u8 field_322C[1276]; /*0x3728*/ struct RamScript ramScript; /*0x3B14*/ struct RecordMixingGift recordMixingGift; - /*0x3B24*/ u8 seen2[52]; + /*0x3B24*/ u8 seen2[DEX_FLAGS_NO]; /*0x3B58*/ LilycoveLady lilycoveLady; - /*0x3B88*/ u8 filler_3B88[0x1E8]; + /*0x3B98*/ struct UnkSaveSubstruct_3b98 unk_3B98[20]; + /*0x3C88*/ u8 filler_3C88[0xE8]; /*0x3D70*/ struct WaldaPhrase waldaPhrase; // sizeof: 0x3D88 }; extern struct SaveBlock1* gSaveBlock1Ptr; +struct MapPosition +{ + s16 x; + s16 y; + s8 height; +}; + +struct UnkStruct_8054FF8 +{ + u8 a; + u8 b; + u8 c; + u8 d; + struct MapPosition sub; + u16 field_C; +}; + struct Bitmap // TODO: Find a better spot for this { u8* pixels; diff --git a/include/global.tv.h b/include/global.tv.h index 97ac54660..61f014984 100644 --- a/include/global.tv.h +++ b/include/global.tv.h @@ -188,11 +188,11 @@ typedef union // size = 0x24 struct { /*0x00*/ u8 kind; /*0x01*/ bool8 active; - /*0x02*/ u16 species; + /*0x02*/ u16 speciesOpponent; /*0x04*/ u8 playerName[8]; /*0x0C*/ u8 linkOpponentName[8]; /*0x14*/ u16 move; - /*0x16*/ u16 species2; + /*0x16*/ u16 speciesPlayer; /*0x18*/ u8 battleType; /*0x19*/ u8 language; /*0x1A*/ u8 linkOpponentLanguage; @@ -301,7 +301,7 @@ typedef union // size = 0x24 /*0x06*/ u8 nGoldSymbols; /*0x07*/ u8 location; /*0x08*/ u16 battlePoints; - /*0x0a*/ u16 mapDataId; + /*0x0a*/ u16 mapLayoutId; /*0x0c*/ u8 language; /*0x0d*/ u8 filler_0d[6]; /*0x13*/ u8 playerName[8]; @@ -326,7 +326,7 @@ typedef union // size = 0x24 /*0x02*/ u16 item; /*0x04*/ u8 location; /*0x05*/ u8 language; - /*0x06*/ u16 mapDataId; + /*0x06*/ u16 mapLayoutId; /*0x08*/ u8 filler_08[11]; /*0x13*/ u8 playerName[8]; } treasureInvestigators; diff --git a/include/graphics.h b/include/graphics.h index c50fdef3f..2dc5e99bf 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -1,10 +1,2468 @@ -// -// Created by scott on 10/21/2017. -// - #ifndef GUARD_GRAPHICS_H #define GUARD_GRAPHICS_H +// overworld +extern const u32 gMessageBox_Gfx[]; +extern const u16 gMessageBox_Pal[]; + +// interface pokeballs +extern const u8 gInterfaceGfx_PokeBall[]; +extern const u8 gInterfacePal_PokeBall[]; +extern const u8 gInterfaceGfx_GreatBall[]; +extern const u8 gInterfacePal_GreatBall[]; +extern const u8 gInterfaceGfx_SafariBall[]; +extern const u8 gInterfacePal_SafariBall[]; +extern const u8 gInterfaceGfx_UltraBall[]; +extern const u8 gInterfacePal_UltraBall[]; +extern const u8 gInterfaceGfx_MasterBall[]; +extern const u8 gInterfacePal_MasterBall[]; +extern const u8 gInterfaceGfx_NetBall[]; +extern const u8 gInterfacePal_NetBall[]; +extern const u8 gInterfaceGfx_DiveBall[]; +extern const u8 gInterfacePal_DiveBall[]; +extern const u8 gInterfaceGfx_NestBall[]; +extern const u8 gInterfacePal_NestBall[]; +extern const u8 gInterfaceGfx_RepeatBall[]; +extern const u8 gInterfacePal_RepeatBall[]; +extern const u8 gInterfaceGfx_TimerBall[]; +extern const u8 gInterfacePal_TimerBall[]; +extern const u8 gInterfaceGfx_LuxuryBall[]; +extern const u8 gInterfacePal_LuxuryBall[]; +extern const u8 gInterfaceGfx_PremierBall[]; +extern const u8 gInterfacePal_PremierBall[]; +extern const u8 gOpenPokeballGfx[]; + +// pokemon gfx +extern const u8 gMonFrontPic_Bulbasaur[]; +extern const u8 gMonPalette_Bulbasaur[]; +extern const u8 gMonBackPic_Bulbasaur[]; +extern const u8 gMonShinyPalette_Bulbasaur[]; +extern const u8 gMonIcon_Bulbasaur[]; +extern const u8 gMonFootprint_Bulbasaur[]; +extern const u8 gMonFrontPic_Ivysaur[]; +extern const u8 gMonPalette_Ivysaur[]; +extern const u8 gMonBackPic_Ivysaur[]; +extern const u8 gMonShinyPalette_Ivysaur[]; +extern const u8 gMonIcon_Ivysaur[]; +extern const u8 gMonFootprint_Ivysaur[]; +extern const u8 gMonFrontPic_Venusaur[]; +extern const u8 gMonPalette_Venusaur[]; +extern const u8 gMonBackPic_Venusaur[]; +extern const u8 gMonShinyPalette_Venusaur[]; +extern const u8 gMonIcon_Venusaur[]; +extern const u8 gMonFootprint_Venusaur[]; +extern const u8 gMonFrontPic_Charmander[]; +extern const u8 gMonPalette_Charmander[]; +extern const u8 gMonBackPic_Charmander[]; +extern const u8 gMonShinyPalette_Charmander[]; +extern const u8 gMonIcon_Charmander[]; +extern const u8 gMonFootprint_Charmander[]; +extern const u8 gMonFrontPic_Charmeleon[]; +extern const u8 gMonPalette_Charmeleon[]; +extern const u8 gMonBackPic_Charmeleon[]; +extern const u8 gMonShinyPalette_Charmeleon[]; +extern const u8 gMonIcon_Charmeleon[]; +extern const u8 gMonFootprint_Charmeleon[]; +extern const u8 gMonFrontPic_Charizard[]; +extern const u8 gMonPalette_Charizard[]; +extern const u8 gMonBackPic_Charizard[]; +extern const u8 gMonShinyPalette_Charizard[]; +extern const u8 gMonIcon_Charizard[]; +extern const u8 gMonFootprint_Charizard[]; +extern const u8 gMonFrontPic_Squirtle[]; +extern const u8 gMonPalette_Squirtle[]; +extern const u8 gMonBackPic_Squirtle[]; +extern const u8 gMonShinyPalette_Squirtle[]; +extern const u8 gMonIcon_Squirtle[]; +extern const u8 gMonFootprint_Squirtle[]; +extern const u8 gMonFrontPic_Wartortle[]; +extern const u8 gMonPalette_Wartortle[]; +extern const u8 gMonBackPic_Wartortle[]; +extern const u8 gMonShinyPalette_Wartortle[]; +extern const u8 gMonIcon_Wartortle[]; +extern const u8 gMonFootprint_Wartortle[]; +extern const u8 gMonFrontPic_Blastoise[]; +extern const u8 gMonPalette_Blastoise[]; +extern const u8 gMonBackPic_Blastoise[]; +extern const u8 gMonShinyPalette_Blastoise[]; +extern const u8 gMonIcon_Blastoise[]; +extern const u8 gMonFootprint_Blastoise[]; +extern const u8 gMonFrontPic_Caterpie[]; +extern const u8 gMonPalette_Caterpie[]; +extern const u8 gMonBackPic_Caterpie[]; +extern const u8 gMonShinyPalette_Caterpie[]; +extern const u8 gMonIcon_Caterpie[]; +extern const u8 gMonFootprint_Caterpie[]; +extern const u8 gMonFrontPic_Metapod[]; +extern const u8 gMonPalette_Metapod[]; +extern const u8 gMonBackPic_Metapod[]; +extern const u8 gMonShinyPalette_Metapod[]; +extern const u8 gMonIcon_Metapod[]; +extern const u8 gMonFootprint_Metapod[]; +extern const u8 gMonFrontPic_Butterfree[]; +extern const u8 gMonPalette_Butterfree[]; +extern const u8 gMonBackPic_Butterfree[]; +extern const u8 gMonShinyPalette_Butterfree[]; +extern const u8 gMonIcon_Butterfree[]; +extern const u8 gMonFootprint_Butterfree[]; +extern const u8 gMonFrontPic_Weedle[]; +extern const u8 gMonPalette_Weedle[]; +extern const u8 gMonBackPic_Weedle[]; +extern const u8 gMonShinyPalette_Weedle[]; +extern const u8 gMonIcon_Weedle[]; +extern const u8 gMonFootprint_Weedle[]; +extern const u8 gMonFrontPic_Kakuna[]; +extern const u8 gMonPalette_Kakuna[]; +extern const u8 gMonBackPic_Kakuna[]; +extern const u8 gMonShinyPalette_Kakuna[]; +extern const u8 gMonIcon_Kakuna[]; +extern const u8 gMonFootprint_Kakuna[]; +extern const u8 gMonFrontPic_Beedrill[]; +extern const u8 gMonPalette_Beedrill[]; +extern const u8 gMonBackPic_Beedrill[]; +extern const u8 gMonShinyPalette_Beedrill[]; +extern const u8 gMonIcon_Beedrill[]; +extern const u8 gMonFootprint_Beedrill[]; +extern const u8 gMonFrontPic_Pidgey[]; +extern const u8 gMonPalette_Pidgey[]; +extern const u8 gMonBackPic_Pidgey[]; +extern const u8 gMonShinyPalette_Pidgey[]; +extern const u8 gMonIcon_Pidgey[]; +extern const u8 gMonFootprint_Pidgey[]; +extern const u8 gMonFrontPic_Pidgeotto[]; +extern const u8 gMonPalette_Pidgeotto[]; +extern const u8 gMonBackPic_Pidgeotto[]; +extern const u8 gMonShinyPalette_Pidgeotto[]; +extern const u8 gMonIcon_Pidgeotto[]; +extern const u8 gMonFootprint_Pidgeotto[]; +extern const u8 gMonFrontPic_Pidgeot[]; +extern const u8 gMonPalette_Pidgeot[]; +extern const u8 gMonBackPic_Pidgeot[]; +extern const u8 gMonShinyPalette_Pidgeot[]; +extern const u8 gMonIcon_Pidgeot[]; +extern const u8 gMonFootprint_Pidgeot[]; +extern const u8 gMonFrontPic_Rattata[]; +extern const u8 gMonPalette_Rattata[]; +extern const u8 gMonBackPic_Rattata[]; +extern const u8 gMonShinyPalette_Rattata[]; +extern const u8 gMonIcon_Rattata[]; +extern const u8 gMonFootprint_Rattata[]; +extern const u8 gMonFrontPic_Raticate[]; +extern const u8 gMonPalette_Raticate[]; +extern const u8 gMonBackPic_Raticate[]; +extern const u8 gMonShinyPalette_Raticate[]; +extern const u8 gMonIcon_Raticate[]; +extern const u8 gMonFootprint_Raticate[]; +extern const u8 gMonFrontPic_Spearow[]; +extern const u8 gMonPalette_Spearow[]; +extern const u8 gMonBackPic_Spearow[]; +extern const u8 gMonShinyPalette_Spearow[]; +extern const u8 gMonIcon_Spearow[]; +extern const u8 gMonFootprint_Spearow[]; +extern const u8 gMonFrontPic_Fearow[]; +extern const u8 gMonPalette_Fearow[]; +extern const u8 gMonBackPic_Fearow[]; +extern const u8 gMonShinyPalette_Fearow[]; +extern const u8 gMonIcon_Fearow[]; +extern const u8 gMonFootprint_Fearow[]; +extern const u8 gMonFrontPic_Ekans[]; +extern const u8 gMonPalette_Ekans[]; +extern const u8 gMonBackPic_Ekans[]; +extern const u8 gMonShinyPalette_Ekans[]; +extern const u8 gMonIcon_Ekans[]; +extern const u8 gMonFootprint_Ekans[]; +extern const u8 gMonFrontPic_Arbok[]; +extern const u8 gMonPalette_Arbok[]; +extern const u8 gMonBackPic_Arbok[]; +extern const u8 gMonShinyPalette_Arbok[]; +extern const u8 gMonIcon_Arbok[]; +extern const u8 gMonFootprint_Arbok[]; +extern const u8 gMonFrontPic_Pikachu[]; +extern const u8 gMonPalette_Pikachu[]; +extern const u8 gMonBackPic_Pikachu[]; +extern const u8 gMonShinyPalette_Pikachu[]; +extern const u8 gMonIcon_Pikachu[]; +extern const u8 gMonFootprint_Pikachu[]; +extern const u8 gMonFrontPic_Raichu[]; +extern const u8 gMonPalette_Raichu[]; +extern const u8 gMonBackPic_Raichu[]; +extern const u8 gMonShinyPalette_Raichu[]; +extern const u8 gMonIcon_Raichu[]; +extern const u8 gMonFootprint_Raichu[]; +extern const u8 gMonFrontPic_Sandshrew[]; +extern const u8 gMonPalette_Sandshrew[]; +extern const u8 gMonBackPic_Sandshrew[]; +extern const u8 gMonShinyPalette_Sandshrew[]; +extern const u8 gMonIcon_Sandshrew[]; +extern const u8 gMonFootprint_Sandshrew[]; +extern const u8 gMonFrontPic_Sandslash[]; +extern const u8 gMonPalette_Sandslash[]; +extern const u8 gMonBackPic_Sandslash[]; +extern const u8 gMonShinyPalette_Sandslash[]; +extern const u8 gMonIcon_Sandslash[]; +extern const u8 gMonFootprint_Sandslash[]; +extern const u8 gMonFrontPic_NidoranF[]; +extern const u8 gMonPalette_NidoranF[]; +extern const u8 gMonBackPic_NidoranF[]; +extern const u8 gMonShinyPalette_NidoranF[]; +extern const u8 gMonIcon_NidoranF[]; +extern const u8 gMonFootprint_NidoranF[]; +extern const u8 gMonFrontPic_Nidorina[]; +extern const u8 gMonPalette_Nidorina[]; +extern const u8 gMonBackPic_Nidorina[]; +extern const u8 gMonShinyPalette_Nidorina[]; +extern const u8 gMonIcon_Nidorina[]; +extern const u8 gMonFootprint_Nidorina[]; +extern const u8 gMonFrontPic_Nidoqueen[]; +extern const u8 gMonPalette_Nidoqueen[]; +extern const u8 gMonBackPic_Nidoqueen[]; +extern const u8 gMonShinyPalette_Nidoqueen[]; +extern const u8 gMonIcon_Nidoqueen[]; +extern const u8 gMonFootprint_Nidoqueen[]; +extern const u8 gMonFrontPic_NidoranM[]; +extern const u8 gMonPalette_NidoranM[]; +extern const u8 gMonBackPic_NidoranM[]; +extern const u8 gMonShinyPalette_NidoranM[]; +extern const u8 gMonIcon_NidoranM[]; +extern const u8 gMonFootprint_NidoranM[]; +extern const u8 gMonFrontPic_Nidorino[]; +extern const u8 gMonPalette_Nidorino[]; +extern const u8 gMonBackPic_Nidorino[]; +extern const u8 gMonShinyPalette_Nidorino[]; +extern const u8 gMonIcon_Nidorino[]; +extern const u8 gMonFootprint_Nidorino[]; +extern const u8 gMonFrontPic_Nidoking[]; +extern const u8 gMonPalette_Nidoking[]; +extern const u8 gMonBackPic_Nidoking[]; +extern const u8 gMonShinyPalette_Nidoking[]; +extern const u8 gMonIcon_Nidoking[]; +extern const u8 gMonFootprint_Nidoking[]; +extern const u8 gMonFrontPic_Clefairy[]; +extern const u8 gMonPalette_Clefairy[]; +extern const u8 gMonBackPic_Clefairy[]; +extern const u8 gMonShinyPalette_Clefairy[]; +extern const u8 gMonIcon_Clefairy[]; +extern const u8 gMonFootprint_Clefairy[]; +extern const u8 gMonFrontPic_Clefable[]; +extern const u8 gMonPalette_Clefable[]; +extern const u8 gMonBackPic_Clefable[]; +extern const u8 gMonShinyPalette_Clefable[]; +extern const u8 gMonIcon_Clefable[]; +extern const u8 gMonFootprint_Clefable[]; +extern const u8 gMonFrontPic_Vulpix[]; +extern const u8 gMonPalette_Vulpix[]; +extern const u8 gMonBackPic_Vulpix[]; +extern const u8 gMonShinyPalette_Vulpix[]; +extern const u8 gMonIcon_Vulpix[]; +extern const u8 gMonFootprint_Vulpix[]; +extern const u8 gMonFrontPic_Ninetales[]; +extern const u8 gMonPalette_Ninetales[]; +extern const u8 gMonBackPic_Ninetales[]; +extern const u8 gMonShinyPalette_Ninetales[]; +extern const u8 gMonIcon_Ninetales[]; +extern const u8 gMonFootprint_Ninetales[]; +extern const u8 gMonFrontPic_Jigglypuff[]; +extern const u8 gMonPalette_Jigglypuff[]; +extern const u8 gMonBackPic_Jigglypuff[]; +extern const u8 gMonShinyPalette_Jigglypuff[]; +extern const u8 gMonIcon_Jigglypuff[]; +extern const u8 gMonFootprint_Jigglypuff[]; +extern const u8 gMonFrontPic_Wigglytuff[]; +extern const u8 gMonPalette_Wigglytuff[]; +extern const u8 gMonBackPic_Wigglytuff[]; +extern const u8 gMonShinyPalette_Wigglytuff[]; +extern const u8 gMonIcon_Wigglytuff[]; +extern const u8 gMonFootprint_Wigglytuff[]; +extern const u8 gMonFrontPic_Zubat[]; +extern const u8 gMonPalette_Zubat[]; +extern const u8 gMonBackPic_Zubat[]; +extern const u8 gMonShinyPalette_Zubat[]; +extern const u8 gMonIcon_Zubat[]; +extern const u8 gMonFootprint_Zubat[]; +extern const u8 gMonFrontPic_Golbat[]; +extern const u8 gMonPalette_Golbat[]; +extern const u8 gMonBackPic_Golbat[]; +extern const u8 gMonShinyPalette_Golbat[]; +extern const u8 gMonIcon_Golbat[]; +extern const u8 gMonFootprint_Golbat[]; +extern const u8 gMonFrontPic_Oddish[]; +extern const u8 gMonPalette_Oddish[]; +extern const u8 gMonBackPic_Oddish[]; +extern const u8 gMonShinyPalette_Oddish[]; +extern const u8 gMonIcon_Oddish[]; +extern const u8 gMonFootprint_Oddish[]; +extern const u8 gMonFrontPic_Gloom[]; +extern const u8 gMonPalette_Gloom[]; +extern const u8 gMonBackPic_Gloom[]; +extern const u8 gMonShinyPalette_Gloom[]; +extern const u8 gMonIcon_Gloom[]; +extern const u8 gMonFootprint_Gloom[]; +extern const u8 gMonFrontPic_Vileplume[]; +extern const u8 gMonPalette_Vileplume[]; +extern const u8 gMonBackPic_Vileplume[]; +extern const u8 gMonShinyPalette_Vileplume[]; +extern const u8 gMonIcon_Vileplume[]; +extern const u8 gMonFootprint_Vileplume[]; +extern const u8 gMonFrontPic_Paras[]; +extern const u8 gMonPalette_Paras[]; +extern const u8 gMonBackPic_Paras[]; +extern const u8 gMonShinyPalette_Paras[]; +extern const u8 gMonIcon_Paras[]; +extern const u8 gMonFootprint_Paras[]; +extern const u8 gMonFrontPic_Parasect[]; +extern const u8 gMonPalette_Parasect[]; +extern const u8 gMonBackPic_Parasect[]; +extern const u8 gMonShinyPalette_Parasect[]; +extern const u8 gMonIcon_Parasect[]; +extern const u8 gMonFootprint_Parasect[]; +extern const u8 gMonFrontPic_Venonat[]; +extern const u8 gMonPalette_Venonat[]; +extern const u8 gMonBackPic_Venonat[]; +extern const u8 gMonShinyPalette_Venonat[]; +extern const u8 gMonIcon_Venonat[]; +extern const u8 gMonFootprint_Venonat[]; +extern const u8 gMonFrontPic_Venomoth[]; +extern const u8 gMonPalette_Venomoth[]; +extern const u8 gMonBackPic_Venomoth[]; +extern const u8 gMonShinyPalette_Venomoth[]; +extern const u8 gMonIcon_Venomoth[]; +extern const u8 gMonFootprint_Venomoth[]; +extern const u8 gMonFrontPic_Diglett[]; +extern const u8 gMonPalette_Diglett[]; +extern const u8 gMonBackPic_Diglett[]; +extern const u8 gMonShinyPalette_Diglett[]; +extern const u8 gMonIcon_Diglett[]; +extern const u8 gMonFootprint_Diglett[]; +extern const u8 gMonFrontPic_Dugtrio[]; +extern const u8 gMonPalette_Dugtrio[]; +extern const u8 gMonBackPic_Dugtrio[]; +extern const u8 gMonShinyPalette_Dugtrio[]; +extern const u8 gMonIcon_Dugtrio[]; +extern const u8 gMonFootprint_Dugtrio[]; +extern const u8 gMonFrontPic_Meowth[]; +extern const u8 gMonPalette_Meowth[]; +extern const u8 gMonBackPic_Meowth[]; +extern const u8 gMonShinyPalette_Meowth[]; +extern const u8 gMonIcon_Meowth[]; +extern const u8 gMonFootprint_Meowth[]; +extern const u8 gMonFrontPic_Persian[]; +extern const u8 gMonPalette_Persian[]; +extern const u8 gMonBackPic_Persian[]; +extern const u8 gMonShinyPalette_Persian[]; +extern const u8 gMonIcon_Persian[]; +extern const u8 gMonFootprint_Persian[]; +extern const u8 gMonFrontPic_Psyduck[]; +extern const u8 gMonPalette_Psyduck[]; +extern const u8 gMonBackPic_Psyduck[]; +extern const u8 gMonShinyPalette_Psyduck[]; +extern const u8 gMonIcon_Psyduck[]; +extern const u8 gMonFootprint_Psyduck[]; +extern const u8 gMonFrontPic_Golduck[]; +extern const u8 gMonPalette_Golduck[]; +extern const u8 gMonBackPic_Golduck[]; +extern const u8 gMonShinyPalette_Golduck[]; +extern const u8 gMonIcon_Golduck[]; +extern const u8 gMonFootprint_Golduck[]; +extern const u8 gMonFrontPic_Mankey[]; +extern const u8 gMonPalette_Mankey[]; +extern const u8 gMonBackPic_Mankey[]; +extern const u8 gMonShinyPalette_Mankey[]; +extern const u8 gMonIcon_Mankey[]; +extern const u8 gMonFootprint_Mankey[]; +extern const u8 gMonFrontPic_Primeape[]; +extern const u8 gMonPalette_Primeape[]; +extern const u8 gMonBackPic_Primeape[]; +extern const u8 gMonShinyPalette_Primeape[]; +extern const u8 gMonIcon_Primeape[]; +extern const u8 gMonFootprint_Primeape[]; +extern const u8 gMonFrontPic_Growlithe[]; +extern const u8 gMonPalette_Growlithe[]; +extern const u8 gMonBackPic_Growlithe[]; +extern const u8 gMonShinyPalette_Growlithe[]; +extern const u8 gMonIcon_Growlithe[]; +extern const u8 gMonFootprint_Growlithe[]; +extern const u8 gMonFrontPic_Arcanine[]; +extern const u8 gMonPalette_Arcanine[]; +extern const u8 gMonBackPic_Arcanine[]; +extern const u8 gMonShinyPalette_Arcanine[]; +extern const u8 gMonIcon_Arcanine[]; +extern const u8 gMonFootprint_Arcanine[]; +extern const u8 gMonFrontPic_Poliwag[]; +extern const u8 gMonPalette_Poliwag[]; +extern const u8 gMonBackPic_Poliwag[]; +extern const u8 gMonShinyPalette_Poliwag[]; +extern const u8 gMonIcon_Poliwag[]; +extern const u8 gMonFootprint_Poliwag[]; +extern const u8 gMonFrontPic_Poliwhirl[]; +extern const u8 gMonPalette_Poliwhirl[]; +extern const u8 gMonBackPic_Poliwhirl[]; +extern const u8 gMonShinyPalette_Poliwhirl[]; +extern const u8 gMonIcon_Poliwhirl[]; +extern const u8 gMonFootprint_Poliwhirl[]; +extern const u8 gMonFrontPic_Poliwrath[]; +extern const u8 gMonPalette_Poliwrath[]; +extern const u8 gMonBackPic_Poliwrath[]; +extern const u8 gMonShinyPalette_Poliwrath[]; +extern const u8 gMonIcon_Poliwrath[]; +extern const u8 gMonFootprint_Poliwrath[]; +extern const u8 gMonFrontPic_Abra[]; +extern const u8 gMonPalette_Abra[]; +extern const u8 gMonBackPic_Abra[]; +extern const u8 gMonShinyPalette_Abra[]; +extern const u8 gMonIcon_Abra[]; +extern const u8 gMonFootprint_Abra[]; +extern const u8 gMonFrontPic_Kadabra[]; +extern const u8 gMonPalette_Kadabra[]; +extern const u8 gMonBackPic_Kadabra[]; +extern const u8 gMonShinyPalette_Kadabra[]; +extern const u8 gMonIcon_Kadabra[]; +extern const u8 gMonFootprint_Kadabra[]; +extern const u8 gMonFrontPic_Alakazam[]; +extern const u8 gMonPalette_Alakazam[]; +extern const u8 gMonBackPic_Alakazam[]; +extern const u8 gMonShinyPalette_Alakazam[]; +extern const u8 gMonIcon_Alakazam[]; +extern const u8 gMonFootprint_Alakazam[]; +extern const u8 gMonFrontPic_Machop[]; +extern const u8 gMonPalette_Machop[]; +extern const u8 gMonBackPic_Machop[]; +extern const u8 gMonShinyPalette_Machop[]; +extern const u8 gMonIcon_Machop[]; +extern const u8 gMonFootprint_Machop[]; +extern const u8 gMonFrontPic_Machoke[]; +extern const u8 gMonPalette_Machoke[]; +extern const u8 gMonBackPic_Machoke[]; +extern const u8 gMonShinyPalette_Machoke[]; +extern const u8 gMonIcon_Machoke[]; +extern const u8 gMonFootprint_Machoke[]; +extern const u8 gMonFrontPic_Machamp[]; +extern const u8 gMonPalette_Machamp[]; +extern const u8 gMonBackPic_Machamp[]; +extern const u8 gMonShinyPalette_Machamp[]; +extern const u8 gMonIcon_Machamp[]; +extern const u8 gMonFootprint_Machamp[]; +extern const u8 gMonFrontPic_Bellsprout[]; +extern const u8 gMonPalette_Bellsprout[]; +extern const u8 gMonBackPic_Bellsprout[]; +extern const u8 gMonShinyPalette_Bellsprout[]; +extern const u8 gMonIcon_Bellsprout[]; +extern const u8 gMonFootprint_Bellsprout[]; +extern const u8 gMonFrontPic_Weepinbell[]; +extern const u8 gMonPalette_Weepinbell[]; +extern const u8 gMonBackPic_Weepinbell[]; +extern const u8 gMonShinyPalette_Weepinbell[]; +extern const u8 gMonIcon_Weepinbell[]; +extern const u8 gMonFootprint_Weepinbell[]; +extern const u8 gMonFrontPic_Victreebel[]; +extern const u8 gMonPalette_Victreebel[]; +extern const u8 gMonBackPic_Victreebel[]; +extern const u8 gMonShinyPalette_Victreebel[]; +extern const u8 gMonIcon_Victreebel[]; +extern const u8 gMonFootprint_Victreebel[]; +extern const u8 gMonFrontPic_Tentacool[]; +extern const u8 gMonPalette_Tentacool[]; +extern const u8 gMonBackPic_Tentacool[]; +extern const u8 gMonShinyPalette_Tentacool[]; +extern const u8 gMonIcon_Tentacool[]; +extern const u8 gMonFootprint_Tentacool[]; +extern const u8 gMonFrontPic_Tentacruel[]; +extern const u8 gMonPalette_Tentacruel[]; +extern const u8 gMonBackPic_Tentacruel[]; +extern const u8 gMonShinyPalette_Tentacruel[]; +extern const u8 gMonIcon_Tentacruel[]; +extern const u8 gMonFootprint_Tentacruel[]; +extern const u8 gMonFrontPic_Geodude[]; +extern const u8 gMonPalette_Geodude[]; +extern const u8 gMonBackPic_Geodude[]; +extern const u8 gMonShinyPalette_Geodude[]; +extern const u8 gMonIcon_Geodude[]; +extern const u8 gMonFootprint_Geodude[]; +extern const u8 gMonFrontPic_Graveler[]; +extern const u8 gMonPalette_Graveler[]; +extern const u8 gMonBackPic_Graveler[]; +extern const u8 gMonShinyPalette_Graveler[]; +extern const u8 gMonIcon_Graveler[]; +extern const u8 gMonFootprint_Graveler[]; +extern const u8 gMonFrontPic_Golem[]; +extern const u8 gMonPalette_Golem[]; +extern const u8 gMonBackPic_Golem[]; +extern const u8 gMonShinyPalette_Golem[]; +extern const u8 gMonIcon_Golem[]; +extern const u8 gMonFootprint_Golem[]; +extern const u8 gMonFrontPic_Ponyta[]; +extern const u8 gMonPalette_Ponyta[]; +extern const u8 gMonBackPic_Ponyta[]; +extern const u8 gMonShinyPalette_Ponyta[]; +extern const u8 gMonIcon_Ponyta[]; +extern const u8 gMonFootprint_Ponyta[]; +extern const u8 gMonFrontPic_Rapidash[]; +extern const u8 gMonPalette_Rapidash[]; +extern const u8 gMonBackPic_Rapidash[]; +extern const u8 gMonShinyPalette_Rapidash[]; +extern const u8 gMonIcon_Rapidash[]; +extern const u8 gMonFootprint_Rapidash[]; +extern const u8 gMonFrontPic_Slowpoke[]; +extern const u8 gMonPalette_Slowpoke[]; +extern const u8 gMonBackPic_Slowpoke[]; +extern const u8 gMonShinyPalette_Slowpoke[]; +extern const u8 gMonIcon_Slowpoke[]; +extern const u8 gMonFootprint_Slowpoke[]; +extern const u8 gMonFrontPic_Slowbro[]; +extern const u8 gMonPalette_Slowbro[]; +extern const u8 gMonBackPic_Slowbro[]; +extern const u8 gMonShinyPalette_Slowbro[]; +extern const u8 gMonIcon_Slowbro[]; +extern const u8 gMonFootprint_Slowbro[]; +extern const u8 gMonFrontPic_Magnemite[]; +extern const u8 gMonPalette_Magnemite[]; +extern const u8 gMonBackPic_Magnemite[]; +extern const u8 gMonShinyPalette_Magnemite[]; +extern const u8 gMonIcon_Magnemite[]; +extern const u8 gMonFootprint_Magnemite[]; +extern const u8 gMonFrontPic_Magneton[]; +extern const u8 gMonPalette_Magneton[]; +extern const u8 gMonBackPic_Magneton[]; +extern const u8 gMonShinyPalette_Magneton[]; +extern const u8 gMonIcon_Magneton[]; +extern const u8 gMonFootprint_Magneton[]; +extern const u8 gMonFrontPic_Farfetchd[]; +extern const u8 gMonPalette_Farfetchd[]; +extern const u8 gMonBackPic_Farfetchd[]; +extern const u8 gMonShinyPalette_Farfetchd[]; +extern const u8 gMonIcon_Farfetchd[]; +extern const u8 gMonFootprint_Farfetchd[]; +extern const u8 gMonFrontPic_Doduo[]; +extern const u8 gMonPalette_Doduo[]; +extern const u8 gMonBackPic_Doduo[]; +extern const u8 gMonShinyPalette_Doduo[]; +extern const u8 gMonIcon_Doduo[]; +extern const u8 gMonFootprint_Doduo[]; +extern const u8 gMonFrontPic_Dodrio[]; +extern const u8 gMonPalette_Dodrio[]; +extern const u8 gMonBackPic_Dodrio[]; +extern const u8 gMonShinyPalette_Dodrio[]; +extern const u8 gMonIcon_Dodrio[]; +extern const u8 gMonFootprint_Dodrio[]; +extern const u8 gMonFrontPic_Seel[]; +extern const u8 gMonPalette_Seel[]; +extern const u8 gMonBackPic_Seel[]; +extern const u8 gMonShinyPalette_Seel[]; +extern const u8 gMonIcon_Seel[]; +extern const u8 gMonFootprint_Seel[]; +extern const u8 gMonFrontPic_Dewgong[]; +extern const u8 gMonPalette_Dewgong[]; +extern const u8 gMonBackPic_Dewgong[]; +extern const u8 gMonShinyPalette_Dewgong[]; +extern const u8 gMonIcon_Dewgong[]; +extern const u8 gMonFootprint_Dewgong[]; +extern const u8 gMonFrontPic_Grimer[]; +extern const u8 gMonPalette_Grimer[]; +extern const u8 gMonBackPic_Grimer[]; +extern const u8 gMonShinyPalette_Grimer[]; +extern const u8 gMonIcon_Grimer[]; +extern const u8 gMonFootprint_Grimer[]; +extern const u8 gMonFrontPic_Muk[]; +extern const u8 gMonPalette_Muk[]; +extern const u8 gMonBackPic_Muk[]; +extern const u8 gMonShinyPalette_Muk[]; +extern const u8 gMonIcon_Muk[]; +extern const u8 gMonFootprint_Muk[]; +extern const u8 gMonFrontPic_Shellder[]; +extern const u8 gMonPalette_Shellder[]; +extern const u8 gMonBackPic_Shellder[]; +extern const u8 gMonShinyPalette_Shellder[]; +extern const u8 gMonIcon_Shellder[]; +extern const u8 gMonFootprint_Shellder[]; +extern const u8 gMonFrontPic_Cloyster[]; +extern const u8 gMonPalette_Cloyster[]; +extern const u8 gMonBackPic_Cloyster[]; +extern const u8 gMonShinyPalette_Cloyster[]; +extern const u8 gMonIcon_Cloyster[]; +extern const u8 gMonFootprint_Cloyster[]; +extern const u8 gMonFrontPic_Gastly[]; +extern const u8 gMonPalette_Gastly[]; +extern const u8 gMonBackPic_Gastly[]; +extern const u8 gMonShinyPalette_Gastly[]; +extern const u8 gMonIcon_Gastly[]; +extern const u8 gMonFootprint_Gastly[]; +extern const u8 gMonFrontPic_Haunter[]; +extern const u8 gMonPalette_Haunter[]; +extern const u8 gMonBackPic_Haunter[]; +extern const u8 gMonShinyPalette_Haunter[]; +extern const u8 gMonIcon_Haunter[]; +extern const u8 gMonFootprint_Haunter[]; +extern const u8 gMonFrontPic_Gengar[]; +extern const u8 gMonPalette_Gengar[]; +extern const u8 gMonBackPic_Gengar[]; +extern const u8 gMonShinyPalette_Gengar[]; +extern const u8 gMonIcon_Gengar[]; +extern const u8 gMonFootprint_Gengar[]; +extern const u8 gMonFrontPic_Onix[]; +extern const u8 gMonPalette_Onix[]; +extern const u8 gMonBackPic_Onix[]; +extern const u8 gMonShinyPalette_Onix[]; +extern const u8 gMonIcon_Onix[]; +extern const u8 gMonFootprint_Onix[]; +extern const u8 gMonFrontPic_Drowzee[]; +extern const u8 gMonPalette_Drowzee[]; +extern const u8 gMonBackPic_Drowzee[]; +extern const u8 gMonShinyPalette_Drowzee[]; +extern const u8 gMonIcon_Drowzee[]; +extern const u8 gMonFootprint_Drowzee[]; +extern const u8 gMonFrontPic_Hypno[]; +extern const u8 gMonPalette_Hypno[]; +extern const u8 gMonBackPic_Hypno[]; +extern const u8 gMonShinyPalette_Hypno[]; +extern const u8 gMonIcon_Hypno[]; +extern const u8 gMonFootprint_Hypno[]; +extern const u8 gMonFrontPic_Krabby[]; +extern const u8 gMonPalette_Krabby[]; +extern const u8 gMonBackPic_Krabby[]; +extern const u8 gMonShinyPalette_Krabby[]; +extern const u8 gMonIcon_Krabby[]; +extern const u8 gMonFootprint_Krabby[]; +extern const u8 gMonFrontPic_Kingler[]; +extern const u8 gMonPalette_Kingler[]; +extern const u8 gMonBackPic_Kingler[]; +extern const u8 gMonShinyPalette_Kingler[]; +extern const u8 gMonIcon_Kingler[]; +extern const u8 gMonFootprint_Kingler[]; +extern const u8 gMonFrontPic_Voltorb[]; +extern const u8 gMonPalette_Voltorb[]; +extern const u8 gMonBackPic_Voltorb[]; +extern const u8 gMonShinyPalette_Voltorb[]; +extern const u8 gMonIcon_Voltorb[]; +extern const u8 gMonFootprint_Voltorb[]; +extern const u8 gMonFrontPic_Electrode[]; +extern const u8 gMonPalette_Electrode[]; +extern const u8 gMonBackPic_Electrode[]; +extern const u8 gMonShinyPalette_Electrode[]; +extern const u8 gMonIcon_Electrode[]; +extern const u8 gMonFootprint_Electrode[]; +extern const u8 gMonFrontPic_Exeggcute[]; +extern const u8 gMonPalette_Exeggcute[]; +extern const u8 gMonBackPic_Exeggcute[]; +extern const u8 gMonShinyPalette_Exeggcute[]; +extern const u8 gMonIcon_Exeggcute[]; +extern const u8 gMonFootprint_Exeggcute[]; +extern const u8 gMonFrontPic_Exeggutor[]; +extern const u8 gMonPalette_Exeggutor[]; +extern const u8 gMonBackPic_Exeggutor[]; +extern const u8 gMonShinyPalette_Exeggutor[]; +extern const u8 gMonIcon_Exeggutor[]; +extern const u8 gMonFootprint_Exeggutor[]; +extern const u8 gMonFrontPic_Cubone[]; +extern const u8 gMonPalette_Cubone[]; +extern const u8 gMonBackPic_Cubone[]; +extern const u8 gMonShinyPalette_Cubone[]; +extern const u8 gMonIcon_Cubone[]; +extern const u8 gMonFootprint_Cubone[]; +extern const u8 gMonFrontPic_Marowak[]; +extern const u8 gMonPalette_Marowak[]; +extern const u8 gMonBackPic_Marowak[]; +extern const u8 gMonShinyPalette_Marowak[]; +extern const u8 gMonIcon_Marowak[]; +extern const u8 gMonFootprint_Marowak[]; +extern const u8 gMonFrontPic_Hitmonlee[]; +extern const u8 gMonPalette_Hitmonlee[]; +extern const u8 gMonBackPic_Hitmonlee[]; +extern const u8 gMonShinyPalette_Hitmonlee[]; +extern const u8 gMonIcon_Hitmonlee[]; +extern const u8 gMonFootprint_Hitmonlee[]; +extern const u8 gMonFrontPic_Hitmonchan[]; +extern const u8 gMonPalette_Hitmonchan[]; +extern const u8 gMonBackPic_Hitmonchan[]; +extern const u8 gMonShinyPalette_Hitmonchan[]; +extern const u8 gMonIcon_Hitmonchan[]; +extern const u8 gMonFootprint_Hitmonchan[]; +extern const u8 gMonFrontPic_Lickitung[]; +extern const u8 gMonPalette_Lickitung[]; +extern const u8 gMonBackPic_Lickitung[]; +extern const u8 gMonShinyPalette_Lickitung[]; +extern const u8 gMonIcon_Lickitung[]; +extern const u8 gMonFootprint_Lickitung[]; +extern const u8 gMonFrontPic_Koffing[]; +extern const u8 gMonPalette_Koffing[]; +extern const u8 gMonBackPic_Koffing[]; +extern const u8 gMonShinyPalette_Koffing[]; +extern const u8 gMonIcon_Koffing[]; +extern const u8 gMonFootprint_Koffing[]; +extern const u8 gMonFrontPic_Weezing[]; +extern const u8 gMonPalette_Weezing[]; +extern const u8 gMonBackPic_Weezing[]; +extern const u8 gMonShinyPalette_Weezing[]; +extern const u8 gMonIcon_Weezing[]; +extern const u8 gMonFootprint_Weezing[]; +extern const u8 gMonFrontPic_Rhyhorn[]; +extern const u8 gMonPalette_Rhyhorn[]; +extern const u8 gMonBackPic_Rhyhorn[]; +extern const u8 gMonShinyPalette_Rhyhorn[]; +extern const u8 gMonIcon_Rhyhorn[]; +extern const u8 gMonFootprint_Rhyhorn[]; +extern const u8 gMonFrontPic_Rhydon[]; +extern const u8 gMonPalette_Rhydon[]; +extern const u8 gMonBackPic_Rhydon[]; +extern const u8 gMonShinyPalette_Rhydon[]; +extern const u8 gMonIcon_Rhydon[]; +extern const u8 gMonFootprint_Rhydon[]; +extern const u8 gMonFrontPic_Chansey[]; +extern const u8 gMonPalette_Chansey[]; +extern const u8 gMonBackPic_Chansey[]; +extern const u8 gMonShinyPalette_Chansey[]; +extern const u8 gMonIcon_Chansey[]; +extern const u8 gMonFootprint_Chansey[]; +extern const u8 gMonFrontPic_Tangela[]; +extern const u8 gMonPalette_Tangela[]; +extern const u8 gMonBackPic_Tangela[]; +extern const u8 gMonShinyPalette_Tangela[]; +extern const u8 gMonIcon_Tangela[]; +extern const u8 gMonFootprint_Tangela[]; +extern const u8 gMonFrontPic_Kangaskhan[]; +extern const u8 gMonPalette_Kangaskhan[]; +extern const u8 gMonBackPic_Kangaskhan[]; +extern const u8 gMonShinyPalette_Kangaskhan[]; +extern const u8 gMonIcon_Kangaskhan[]; +extern const u8 gMonFootprint_Kangaskhan[]; +extern const u8 gMonFrontPic_Horsea[]; +extern const u8 gMonPalette_Horsea[]; +extern const u8 gMonBackPic_Horsea[]; +extern const u8 gMonShinyPalette_Horsea[]; +extern const u8 gMonIcon_Horsea[]; +extern const u8 gMonFootprint_Horsea[]; +extern const u8 gMonFrontPic_Seadra[]; +extern const u8 gMonPalette_Seadra[]; +extern const u8 gMonBackPic_Seadra[]; +extern const u8 gMonShinyPalette_Seadra[]; +extern const u8 gMonIcon_Seadra[]; +extern const u8 gMonFootprint_Seadra[]; +extern const u8 gMonFrontPic_Goldeen[]; +extern const u8 gMonPalette_Goldeen[]; +extern const u8 gMonBackPic_Goldeen[]; +extern const u8 gMonShinyPalette_Goldeen[]; +extern const u8 gMonIcon_Goldeen[]; +extern const u8 gMonFootprint_Goldeen[]; +extern const u8 gMonFrontPic_Seaking[]; +extern const u8 gMonPalette_Seaking[]; +extern const u8 gMonBackPic_Seaking[]; +extern const u8 gMonShinyPalette_Seaking[]; +extern const u8 gMonIcon_Seaking[]; +extern const u8 gMonFootprint_Seaking[]; +extern const u8 gMonFrontPic_Staryu[]; +extern const u8 gMonPalette_Staryu[]; +extern const u8 gMonBackPic_Staryu[]; +extern const u8 gMonShinyPalette_Staryu[]; +extern const u8 gMonIcon_Staryu[]; +extern const u8 gMonFootprint_Staryu[]; +extern const u8 gMonFrontPic_Starmie[]; +extern const u8 gMonPalette_Starmie[]; +extern const u8 gMonBackPic_Starmie[]; +extern const u8 gMonShinyPalette_Starmie[]; +extern const u8 gMonIcon_Starmie[]; +extern const u8 gMonFootprint_Starmie[]; +extern const u8 gMonFrontPic_Mrmime[]; +extern const u8 gMonPalette_Mrmime[]; +extern const u8 gMonBackPic_Mrmime[]; +extern const u8 gMonShinyPalette_Mrmime[]; +extern const u8 gMonIcon_Mrmime[]; +extern const u8 gMonFootprint_Mrmime[]; +extern const u8 gMonFrontPic_Scyther[]; +extern const u8 gMonPalette_Scyther[]; +extern const u8 gMonBackPic_Scyther[]; +extern const u8 gMonShinyPalette_Scyther[]; +extern const u8 gMonIcon_Scyther[]; +extern const u8 gMonFootprint_Scyther[]; +extern const u8 gMonFrontPic_Jynx[]; +extern const u8 gMonPalette_Jynx[]; +extern const u8 gMonBackPic_Jynx[]; +extern const u8 gMonShinyPalette_Jynx[]; +extern const u8 gMonIcon_Jynx[]; +extern const u8 gMonFootprint_Jynx[]; +extern const u8 gMonFrontPic_Electabuzz[]; +extern const u8 gMonPalette_Electabuzz[]; +extern const u8 gMonBackPic_Electabuzz[]; +extern const u8 gMonShinyPalette_Electabuzz[]; +extern const u8 gMonIcon_Electabuzz[]; +extern const u8 gMonFootprint_Electabuzz[]; +extern const u8 gMonFrontPic_Magmar[]; +extern const u8 gMonPalette_Magmar[]; +extern const u8 gMonBackPic_Magmar[]; +extern const u8 gMonShinyPalette_Magmar[]; +extern const u8 gMonIcon_Magmar[]; +extern const u8 gMonFootprint_Magmar[]; +extern const u8 gMonFrontPic_Pinsir[]; +extern const u8 gMonPalette_Pinsir[]; +extern const u8 gMonBackPic_Pinsir[]; +extern const u8 gMonShinyPalette_Pinsir[]; +extern const u8 gMonIcon_Pinsir[]; +extern const u8 gMonFootprint_Pinsir[]; +extern const u8 gMonFrontPic_Tauros[]; +extern const u8 gMonPalette_Tauros[]; +extern const u8 gMonBackPic_Tauros[]; +extern const u8 gMonShinyPalette_Tauros[]; +extern const u8 gMonIcon_Tauros[]; +extern const u8 gMonFootprint_Tauros[]; +extern const u8 gMonFrontPic_Magikarp[]; +extern const u8 gMonPalette_Magikarp[]; +extern const u8 gMonBackPic_Magikarp[]; +extern const u8 gMonShinyPalette_Magikarp[]; +extern const u8 gMonIcon_Magikarp[]; +extern const u8 gMonFootprint_Magikarp[]; +extern const u8 gMonFrontPic_Gyarados[]; +extern const u8 gMonPalette_Gyarados[]; +extern const u8 gMonBackPic_Gyarados[]; +extern const u8 gMonShinyPalette_Gyarados[]; +extern const u8 gMonIcon_Gyarados[]; +extern const u8 gMonFootprint_Gyarados[]; +extern const u8 gMonFrontPic_Lapras[]; +extern const u8 gMonPalette_Lapras[]; +extern const u8 gMonBackPic_Lapras[]; +extern const u8 gMonShinyPalette_Lapras[]; +extern const u8 gMonIcon_Lapras[]; +extern const u8 gMonFootprint_Lapras[]; +extern const u8 gMonFrontPic_Ditto[]; +extern const u8 gMonPalette_Ditto[]; +extern const u8 gMonBackPic_Ditto[]; +extern const u8 gMonShinyPalette_Ditto[]; +extern const u8 gMonIcon_Ditto[]; +extern const u8 gMonFootprint_Ditto[]; +extern const u8 gMonFrontPic_Eevee[]; +extern const u8 gMonPalette_Eevee[]; +extern const u8 gMonBackPic_Eevee[]; +extern const u8 gMonShinyPalette_Eevee[]; +extern const u8 gMonIcon_Eevee[]; +extern const u8 gMonFootprint_Eevee[]; +extern const u8 gMonFrontPic_Vaporeon[]; +extern const u8 gMonPalette_Vaporeon[]; +extern const u8 gMonBackPic_Vaporeon[]; +extern const u8 gMonShinyPalette_Vaporeon[]; +extern const u8 gMonIcon_Vaporeon[]; +extern const u8 gMonFootprint_Vaporeon[]; +extern const u8 gMonFrontPic_Jolteon[]; +extern const u8 gMonPalette_Jolteon[]; +extern const u8 gMonBackPic_Jolteon[]; +extern const u8 gMonShinyPalette_Jolteon[]; +extern const u8 gMonIcon_Jolteon[]; +extern const u8 gMonFootprint_Jolteon[]; +extern const u8 gMonFrontPic_Flareon[]; +extern const u8 gMonPalette_Flareon[]; +extern const u8 gMonBackPic_Flareon[]; +extern const u8 gMonShinyPalette_Flareon[]; +extern const u8 gMonIcon_Flareon[]; +extern const u8 gMonFootprint_Flareon[]; +extern const u8 gMonFrontPic_Porygon[]; +extern const u8 gMonPalette_Porygon[]; +extern const u8 gMonBackPic_Porygon[]; +extern const u8 gMonShinyPalette_Porygon[]; +extern const u8 gMonIcon_Porygon[]; +extern const u8 gMonFootprint_Porygon[]; +extern const u8 gMonFrontPic_Omanyte[]; +extern const u8 gMonPalette_Omanyte[]; +extern const u8 gMonBackPic_Omanyte[]; +extern const u8 gMonShinyPalette_Omanyte[]; +extern const u8 gMonIcon_Omanyte[]; +extern const u8 gMonFootprint_Omanyte[]; +extern const u8 gMonFrontPic_Omastar[]; +extern const u8 gMonPalette_Omastar[]; +extern const u8 gMonBackPic_Omastar[]; +extern const u8 gMonShinyPalette_Omastar[]; +extern const u8 gMonIcon_Omastar[]; +extern const u8 gMonFootprint_Omastar[]; +extern const u8 gMonFrontPic_Kabuto[]; +extern const u8 gMonPalette_Kabuto[]; +extern const u8 gMonBackPic_Kabuto[]; +extern const u8 gMonShinyPalette_Kabuto[]; +extern const u8 gMonIcon_Kabuto[]; +extern const u8 gMonFootprint_Kabuto[]; +extern const u8 gMonFrontPic_Kabutops[]; +extern const u8 gMonPalette_Kabutops[]; +extern const u8 gMonBackPic_Kabutops[]; +extern const u8 gMonShinyPalette_Kabutops[]; +extern const u8 gMonIcon_Kabutops[]; +extern const u8 gMonFootprint_Kabutops[]; +extern const u8 gMonFrontPic_Aerodactyl[]; +extern const u8 gMonPalette_Aerodactyl[]; +extern const u8 gMonBackPic_Aerodactyl[]; +extern const u8 gMonShinyPalette_Aerodactyl[]; +extern const u8 gMonIcon_Aerodactyl[]; +extern const u8 gMonFootprint_Aerodactyl[]; +extern const u8 gMonFrontPic_Snorlax[]; +extern const u8 gMonPalette_Snorlax[]; +extern const u8 gMonBackPic_Snorlax[]; +extern const u8 gMonShinyPalette_Snorlax[]; +extern const u8 gMonIcon_Snorlax[]; +extern const u8 gMonFootprint_Snorlax[]; +extern const u8 gMonFrontPic_Articuno[]; +extern const u8 gMonPalette_Articuno[]; +extern const u8 gMonBackPic_Articuno[]; +extern const u8 gMonShinyPalette_Articuno[]; +extern const u8 gMonIcon_Articuno[]; +extern const u8 gMonFootprint_Articuno[]; +extern const u8 gMonFrontPic_Zapdos[]; +extern const u8 gMonPalette_Zapdos[]; +extern const u8 gMonBackPic_Zapdos[]; +extern const u8 gMonShinyPalette_Zapdos[]; +extern const u8 gMonIcon_Zapdos[]; +extern const u8 gMonFootprint_Zapdos[]; +extern const u8 gMonFrontPic_Moltres[]; +extern const u8 gMonPalette_Moltres[]; +extern const u8 gMonBackPic_Moltres[]; +extern const u8 gMonShinyPalette_Moltres[]; +extern const u8 gMonIcon_Moltres[]; +extern const u8 gMonFootprint_Moltres[]; +extern const u8 gMonFrontPic_Dratini[]; +extern const u8 gMonPalette_Dratini[]; +extern const u8 gMonBackPic_Dratini[]; +extern const u8 gMonShinyPalette_Dratini[]; +extern const u8 gMonIcon_Dratini[]; +extern const u8 gMonFootprint_Dratini[]; +extern const u8 gMonFrontPic_Dragonair[]; +extern const u8 gMonPalette_Dragonair[]; +extern const u8 gMonBackPic_Dragonair[]; +extern const u8 gMonShinyPalette_Dragonair[]; +extern const u8 gMonIcon_Dragonair[]; +extern const u8 gMonFootprint_Dragonair[]; +extern const u8 gMonFrontPic_Dragonite[]; +extern const u8 gMonPalette_Dragonite[]; +extern const u8 gMonBackPic_Dragonite[]; +extern const u8 gMonShinyPalette_Dragonite[]; +extern const u8 gMonIcon_Dragonite[]; +extern const u8 gMonFootprint_Dragonite[]; +extern const u8 gMonFrontPic_Mewtwo[]; +extern const u8 gMonPalette_Mewtwo[]; +extern const u8 gMonBackPic_Mewtwo[]; +extern const u8 gMonShinyPalette_Mewtwo[]; +extern const u8 gMonIcon_Mewtwo[]; +extern const u8 gMonFootprint_Mewtwo[]; +extern const u8 gMonFrontPic_Mew[]; +extern const u8 gMonPalette_Mew[]; +extern const u8 gMonBackPic_Mew[]; +extern const u8 gMonShinyPalette_Mew[]; +extern const u8 gMonIcon_Mew[]; +extern const u8 gMonFootprint_Mew[]; +extern const u8 gMonFrontPic_Chikorita[]; +extern const u8 gMonPalette_Chikorita[]; +extern const u8 gMonBackPic_Chikorita[]; +extern const u8 gMonShinyPalette_Chikorita[]; +extern const u8 gMonIcon_Chikorita[]; +extern const u8 gMonFootprint_Chikorita[]; +extern const u8 gMonFrontPic_Bayleef[]; +extern const u8 gMonPalette_Bayleef[]; +extern const u8 gMonBackPic_Bayleef[]; +extern const u8 gMonShinyPalette_Bayleef[]; +extern const u8 gMonIcon_Bayleef[]; +extern const u8 gMonFootprint_Bayleef[]; +extern const u8 gMonFrontPic_Meganium[]; +extern const u8 gMonPalette_Meganium[]; +extern const u8 gMonBackPic_Meganium[]; +extern const u8 gMonShinyPalette_Meganium[]; +extern const u8 gMonIcon_Meganium[]; +extern const u8 gMonFootprint_Meganium[]; +extern const u8 gMonFrontPic_Cyndaquil[]; +extern const u8 gMonPalette_Cyndaquil[]; +extern const u8 gMonBackPic_Cyndaquil[]; +extern const u8 gMonShinyPalette_Cyndaquil[]; +extern const u8 gMonIcon_Cyndaquil[]; +extern const u8 gMonFootprint_Cyndaquil[]; +extern const u8 gMonFrontPic_Quilava[]; +extern const u8 gMonPalette_Quilava[]; +extern const u8 gMonBackPic_Quilava[]; +extern const u8 gMonShinyPalette_Quilava[]; +extern const u8 gMonIcon_Quilava[]; +extern const u8 gMonFootprint_Quilava[]; +extern const u8 gMonFrontPic_Typhlosion[]; +extern const u8 gMonPalette_Typhlosion[]; +extern const u8 gMonBackPic_Typhlosion[]; +extern const u8 gMonShinyPalette_Typhlosion[]; +extern const u8 gMonIcon_Typhlosion[]; +extern const u8 gMonFootprint_Typhlosion[]; +extern const u8 gMonFrontPic_Totodile[]; +extern const u8 gMonPalette_Totodile[]; +extern const u8 gMonBackPic_Totodile[]; +extern const u8 gMonShinyPalette_Totodile[]; +extern const u8 gMonIcon_Totodile[]; +extern const u8 gMonFootprint_Totodile[]; +extern const u8 gMonFrontPic_Croconaw[]; +extern const u8 gMonPalette_Croconaw[]; +extern const u8 gMonBackPic_Croconaw[]; +extern const u8 gMonShinyPalette_Croconaw[]; +extern const u8 gMonIcon_Croconaw[]; +extern const u8 gMonFootprint_Croconaw[]; +extern const u8 gMonFrontPic_Feraligatr[]; +extern const u8 gMonPalette_Feraligatr[]; +extern const u8 gMonBackPic_Feraligatr[]; +extern const u8 gMonShinyPalette_Feraligatr[]; +extern const u8 gMonIcon_Feraligatr[]; +extern const u8 gMonFootprint_Feraligatr[]; +extern const u8 gMonFrontPic_Sentret[]; +extern const u8 gMonPalette_Sentret[]; +extern const u8 gMonBackPic_Sentret[]; +extern const u8 gMonShinyPalette_Sentret[]; +extern const u8 gMonIcon_Sentret[]; +extern const u8 gMonFootprint_Sentret[]; +extern const u8 gMonFrontPic_Furret[]; +extern const u8 gMonPalette_Furret[]; +extern const u8 gMonBackPic_Furret[]; +extern const u8 gMonShinyPalette_Furret[]; +extern const u8 gMonIcon_Furret[]; +extern const u8 gMonFootprint_Furret[]; +extern const u8 gMonFrontPic_Hoothoot[]; +extern const u8 gMonPalette_Hoothoot[]; +extern const u8 gMonBackPic_Hoothoot[]; +extern const u8 gMonShinyPalette_Hoothoot[]; +extern const u8 gMonIcon_Hoothoot[]; +extern const u8 gMonFootprint_Hoothoot[]; +extern const u8 gMonFrontPic_Noctowl[]; +extern const u8 gMonPalette_Noctowl[]; +extern const u8 gMonBackPic_Noctowl[]; +extern const u8 gMonShinyPalette_Noctowl[]; +extern const u8 gMonIcon_Noctowl[]; +extern const u8 gMonFootprint_Noctowl[]; +extern const u8 gMonFrontPic_Ledyba[]; +extern const u8 gMonPalette_Ledyba[]; +extern const u8 gMonBackPic_Ledyba[]; +extern const u8 gMonShinyPalette_Ledyba[]; +extern const u8 gMonIcon_Ledyba[]; +extern const u8 gMonFootprint_Ledyba[]; +extern const u8 gMonFrontPic_Ledian[]; +extern const u8 gMonPalette_Ledian[]; +extern const u8 gMonBackPic_Ledian[]; +extern const u8 gMonShinyPalette_Ledian[]; +extern const u8 gMonIcon_Ledian[]; +extern const u8 gMonFootprint_Ledian[]; +extern const u8 gMonFrontPic_Spinarak[]; +extern const u8 gMonPalette_Spinarak[]; +extern const u8 gMonBackPic_Spinarak[]; +extern const u8 gMonShinyPalette_Spinarak[]; +extern const u8 gMonIcon_Spinarak[]; +extern const u8 gMonFootprint_Spinarak[]; +extern const u8 gMonFrontPic_Ariados[]; +extern const u8 gMonPalette_Ariados[]; +extern const u8 gMonBackPic_Ariados[]; +extern const u8 gMonShinyPalette_Ariados[]; +extern const u8 gMonIcon_Ariados[]; +extern const u8 gMonFootprint_Ariados[]; +extern const u8 gMonFrontPic_Crobat[]; +extern const u8 gMonPalette_Crobat[]; +extern const u8 gMonBackPic_Crobat[]; +extern const u8 gMonShinyPalette_Crobat[]; +extern const u8 gMonIcon_Crobat[]; +extern const u8 gMonFootprint_Crobat[]; +extern const u8 gMonFrontPic_Chinchou[]; +extern const u8 gMonPalette_Chinchou[]; +extern const u8 gMonBackPic_Chinchou[]; +extern const u8 gMonShinyPalette_Chinchou[]; +extern const u8 gMonIcon_Chinchou[]; +extern const u8 gMonFootprint_Chinchou[]; +extern const u8 gMonFrontPic_Lanturn[]; +extern const u8 gMonPalette_Lanturn[]; +extern const u8 gMonBackPic_Lanturn[]; +extern const u8 gMonShinyPalette_Lanturn[]; +extern const u8 gMonIcon_Lanturn[]; +extern const u8 gMonFootprint_Lanturn[]; +extern const u8 gMonFrontPic_Pichu[]; +extern const u8 gMonPalette_Pichu[]; +extern const u8 gMonBackPic_Pichu[]; +extern const u8 gMonShinyPalette_Pichu[]; +extern const u8 gMonIcon_Pichu[]; +extern const u8 gMonFootprint_Pichu[]; +extern const u8 gMonFrontPic_Cleffa[]; +extern const u8 gMonPalette_Cleffa[]; +extern const u8 gMonBackPic_Cleffa[]; +extern const u8 gMonShinyPalette_Cleffa[]; +extern const u8 gMonIcon_Cleffa[]; +extern const u8 gMonFootprint_Cleffa[]; +extern const u8 gMonFrontPic_Igglybuff[]; +extern const u8 gMonPalette_Igglybuff[]; +extern const u8 gMonBackPic_Igglybuff[]; +extern const u8 gMonShinyPalette_Igglybuff[]; +extern const u8 gMonIcon_Igglybuff[]; +extern const u8 gMonFootprint_Igglybuff[]; +extern const u8 gMonFrontPic_Togepi[]; +extern const u8 gMonPalette_Togepi[]; +extern const u8 gMonBackPic_Togepi[]; +extern const u8 gMonShinyPalette_Togepi[]; +extern const u8 gMonIcon_Togepi[]; +extern const u8 gMonFootprint_Togepi[]; +extern const u8 gMonFrontPic_Togetic[]; +extern const u8 gMonPalette_Togetic[]; +extern const u8 gMonBackPic_Togetic[]; +extern const u8 gMonShinyPalette_Togetic[]; +extern const u8 gMonIcon_Togetic[]; +extern const u8 gMonFootprint_Togetic[]; +extern const u8 gMonFrontPic_Natu[]; +extern const u8 gMonPalette_Natu[]; +extern const u8 gMonBackPic_Natu[]; +extern const u8 gMonShinyPalette_Natu[]; +extern const u8 gMonIcon_Natu[]; +extern const u8 gMonFootprint_Natu[]; +extern const u8 gMonFrontPic_Xatu[]; +extern const u8 gMonPalette_Xatu[]; +extern const u8 gMonBackPic_Xatu[]; +extern const u8 gMonShinyPalette_Xatu[]; +extern const u8 gMonIcon_Xatu[]; +extern const u8 gMonFootprint_Xatu[]; +extern const u8 gMonFrontPic_Mareep[]; +extern const u8 gMonPalette_Mareep[]; +extern const u8 gMonBackPic_Mareep[]; +extern const u8 gMonShinyPalette_Mareep[]; +extern const u8 gMonIcon_Mareep[]; +extern const u8 gMonFootprint_Mareep[]; +extern const u8 gMonFrontPic_Flaaffy[]; +extern const u8 gMonPalette_Flaaffy[]; +extern const u8 gMonBackPic_Flaaffy[]; +extern const u8 gMonShinyPalette_Flaaffy[]; +extern const u8 gMonIcon_Flaaffy[]; +extern const u8 gMonFootprint_Flaaffy[]; +extern const u8 gMonFrontPic_Ampharos[]; +extern const u8 gMonPalette_Ampharos[]; +extern const u8 gMonBackPic_Ampharos[]; +extern const u8 gMonShinyPalette_Ampharos[]; +extern const u8 gMonIcon_Ampharos[]; +extern const u8 gMonFootprint_Ampharos[]; +extern const u8 gMonFrontPic_Bellossom[]; +extern const u8 gMonPalette_Bellossom[]; +extern const u8 gMonBackPic_Bellossom[]; +extern const u8 gMonShinyPalette_Bellossom[]; +extern const u8 gMonIcon_Bellossom[]; +extern const u8 gMonFootprint_Bellossom[]; +extern const u8 gMonFrontPic_Marill[]; +extern const u8 gMonPalette_Marill[]; +extern const u8 gMonBackPic_Marill[]; +extern const u8 gMonShinyPalette_Marill[]; +extern const u8 gMonIcon_Marill[]; +extern const u8 gMonFootprint_Marill[]; +extern const u8 gMonFrontPic_Azumarill[]; +extern const u8 gMonPalette_Azumarill[]; +extern const u8 gMonBackPic_Azumarill[]; +extern const u8 gMonShinyPalette_Azumarill[]; +extern const u8 gMonIcon_Azumarill[]; +extern const u8 gMonFootprint_Azumarill[]; +extern const u8 gMonFrontPic_Sudowoodo[]; +extern const u8 gMonPalette_Sudowoodo[]; +extern const u8 gMonBackPic_Sudowoodo[]; +extern const u8 gMonShinyPalette_Sudowoodo[]; +extern const u8 gMonIcon_Sudowoodo[]; +extern const u8 gMonFootprint_Sudowoodo[]; +extern const u8 gMonFrontPic_Politoed[]; +extern const u8 gMonPalette_Politoed[]; +extern const u8 gMonBackPic_Politoed[]; +extern const u8 gMonShinyPalette_Politoed[]; +extern const u8 gMonIcon_Politoed[]; +extern const u8 gMonFootprint_Politoed[]; +extern const u8 gMonFrontPic_Hoppip[]; +extern const u8 gMonPalette_Hoppip[]; +extern const u8 gMonBackPic_Hoppip[]; +extern const u8 gMonShinyPalette_Hoppip[]; +extern const u8 gMonIcon_Hoppip[]; +extern const u8 gMonFootprint_Hoppip[]; +extern const u8 gMonFrontPic_Skiploom[]; +extern const u8 gMonPalette_Skiploom[]; +extern const u8 gMonBackPic_Skiploom[]; +extern const u8 gMonShinyPalette_Skiploom[]; +extern const u8 gMonIcon_Skiploom[]; +extern const u8 gMonFootprint_Skiploom[]; +extern const u8 gMonFrontPic_Jumpluff[]; +extern const u8 gMonPalette_Jumpluff[]; +extern const u8 gMonBackPic_Jumpluff[]; +extern const u8 gMonShinyPalette_Jumpluff[]; +extern const u8 gMonIcon_Jumpluff[]; +extern const u8 gMonFootprint_Jumpluff[]; +extern const u8 gMonFrontPic_Aipom[]; +extern const u8 gMonPalette_Aipom[]; +extern const u8 gMonBackPic_Aipom[]; +extern const u8 gMonShinyPalette_Aipom[]; +extern const u8 gMonIcon_Aipom[]; +extern const u8 gMonFootprint_Aipom[]; +extern const u8 gMonFrontPic_Sunkern[]; +extern const u8 gMonPalette_Sunkern[]; +extern const u8 gMonBackPic_Sunkern[]; +extern const u8 gMonShinyPalette_Sunkern[]; +extern const u8 gMonIcon_Sunkern[]; +extern const u8 gMonFootprint_Sunkern[]; +extern const u8 gMonFrontPic_Sunflora[]; +extern const u8 gMonPalette_Sunflora[]; +extern const u8 gMonBackPic_Sunflora[]; +extern const u8 gMonShinyPalette_Sunflora[]; +extern const u8 gMonIcon_Sunflora[]; +extern const u8 gMonFootprint_Sunflora[]; +extern const u8 gMonFrontPic_Yanma[]; +extern const u8 gMonPalette_Yanma[]; +extern const u8 gMonBackPic_Yanma[]; +extern const u8 gMonShinyPalette_Yanma[]; +extern const u8 gMonIcon_Yanma[]; +extern const u8 gMonFootprint_Yanma[]; +extern const u8 gMonFrontPic_Wooper[]; +extern const u8 gMonPalette_Wooper[]; +extern const u8 gMonBackPic_Wooper[]; +extern const u8 gMonShinyPalette_Wooper[]; +extern const u8 gMonIcon_Wooper[]; +extern const u8 gMonFootprint_Wooper[]; +extern const u8 gMonFrontPic_Quagsire[]; +extern const u8 gMonPalette_Quagsire[]; +extern const u8 gMonBackPic_Quagsire[]; +extern const u8 gMonShinyPalette_Quagsire[]; +extern const u8 gMonIcon_Quagsire[]; +extern const u8 gMonFootprint_Quagsire[]; +extern const u8 gMonFrontPic_Espeon[]; +extern const u8 gMonPalette_Espeon[]; +extern const u8 gMonBackPic_Espeon[]; +extern const u8 gMonShinyPalette_Espeon[]; +extern const u8 gMonIcon_Espeon[]; +extern const u8 gMonFootprint_Espeon[]; +extern const u8 gMonFrontPic_Umbreon[]; +extern const u8 gMonPalette_Umbreon[]; +extern const u8 gMonBackPic_Umbreon[]; +extern const u8 gMonShinyPalette_Umbreon[]; +extern const u8 gMonIcon_Umbreon[]; +extern const u8 gMonFootprint_Umbreon[]; +extern const u8 gMonFrontPic_Murkrow[]; +extern const u8 gMonPalette_Murkrow[]; +extern const u8 gMonBackPic_Murkrow[]; +extern const u8 gMonShinyPalette_Murkrow[]; +extern const u8 gMonIcon_Murkrow[]; +extern const u8 gMonFootprint_Murkrow[]; +extern const u8 gMonFrontPic_Slowking[]; +extern const u8 gMonPalette_Slowking[]; +extern const u8 gMonBackPic_Slowking[]; +extern const u8 gMonShinyPalette_Slowking[]; +extern const u8 gMonIcon_Slowking[]; +extern const u8 gMonFootprint_Slowking[]; +extern const u8 gMonFrontPic_Misdreavus[]; +extern const u8 gMonPalette_Misdreavus[]; +extern const u8 gMonBackPic_Misdreavus[]; +extern const u8 gMonShinyPalette_Misdreavus[]; +extern const u8 gMonIcon_Misdreavus[]; +extern const u8 gMonFootprint_Misdreavus[]; +extern const u8 gMonFrontPic_UnownA[]; +extern const u8 gMonPalette_Unown[]; +extern const u8 gMonBackPic_UnownA[]; +extern const u8 gMonShinyPalette_Unown[]; +extern const u8 gMonIcon_UnownA[]; +extern const u8 gMonFootprint_Unown[]; +extern const u8 gMonFrontPic_Wobbuffet[]; +extern const u8 gMonPalette_Wobbuffet[]; +extern const u8 gMonBackPic_Wobbuffet[]; +extern const u8 gMonShinyPalette_Wobbuffet[]; +extern const u8 gMonIcon_Wobbuffet[]; +extern const u8 gMonFootprint_Wobbuffet[]; +extern const u8 gMonFrontPic_Girafarig[]; +extern const u8 gMonPalette_Girafarig[]; +extern const u8 gMonBackPic_Girafarig[]; +extern const u8 gMonShinyPalette_Girafarig[]; +extern const u8 gMonIcon_Girafarig[]; +extern const u8 gMonFootprint_Girafarig[]; +extern const u8 gMonFrontPic_Pineco[]; +extern const u8 gMonPalette_Pineco[]; +extern const u8 gMonBackPic_Pineco[]; +extern const u8 gMonShinyPalette_Pineco[]; +extern const u8 gMonIcon_Pineco[]; +extern const u8 gMonFootprint_Pineco[]; +extern const u8 gMonFrontPic_Forretress[]; +extern const u8 gMonPalette_Forretress[]; +extern const u8 gMonBackPic_Forretress[]; +extern const u8 gMonShinyPalette_Forretress[]; +extern const u8 gMonIcon_Forretress[]; +extern const u8 gMonFootprint_Forretress[]; +extern const u8 gMonFrontPic_Dunsparce[]; +extern const u8 gMonPalette_Dunsparce[]; +extern const u8 gMonBackPic_Dunsparce[]; +extern const u8 gMonShinyPalette_Dunsparce[]; +extern const u8 gMonIcon_Dunsparce[]; +extern const u8 gMonFootprint_Dunsparce[]; +extern const u8 gMonFrontPic_Gligar[]; +extern const u8 gMonPalette_Gligar[]; +extern const u8 gMonBackPic_Gligar[]; +extern const u8 gMonShinyPalette_Gligar[]; +extern const u8 gMonIcon_Gligar[]; +extern const u8 gMonFootprint_Gligar[]; +extern const u8 gMonFrontPic_Steelix[]; +extern const u8 gMonPalette_Steelix[]; +extern const u8 gMonBackPic_Steelix[]; +extern const u8 gMonShinyPalette_Steelix[]; +extern const u8 gMonIcon_Steelix[]; +extern const u8 gMonFootprint_Steelix[]; +extern const u8 gMonFrontPic_Snubbull[]; +extern const u8 gMonPalette_Snubbull[]; +extern const u8 gMonBackPic_Snubbull[]; +extern const u8 gMonShinyPalette_Snubbull[]; +extern const u8 gMonIcon_Snubbull[]; +extern const u8 gMonFootprint_Snubbull[]; +extern const u8 gMonFrontPic_Granbull[]; +extern const u8 gMonPalette_Granbull[]; +extern const u8 gMonBackPic_Granbull[]; +extern const u8 gMonShinyPalette_Granbull[]; +extern const u8 gMonIcon_Granbull[]; +extern const u8 gMonFootprint_Granbull[]; +extern const u8 gMonFrontPic_Qwilfish[]; +extern const u8 gMonPalette_Qwilfish[]; +extern const u8 gMonBackPic_Qwilfish[]; +extern const u8 gMonShinyPalette_Qwilfish[]; +extern const u8 gMonIcon_Qwilfish[]; +extern const u8 gMonFootprint_Qwilfish[]; +extern const u8 gMonFrontPic_Scizor[]; +extern const u8 gMonPalette_Scizor[]; +extern const u8 gMonBackPic_Scizor[]; +extern const u8 gMonShinyPalette_Scizor[]; +extern const u8 gMonIcon_Scizor[]; +extern const u8 gMonFootprint_Scizor[]; +extern const u8 gMonFrontPic_Shuckle[]; +extern const u8 gMonPalette_Shuckle[]; +extern const u8 gMonBackPic_Shuckle[]; +extern const u8 gMonShinyPalette_Shuckle[]; +extern const u8 gMonIcon_Shuckle[]; +extern const u8 gMonFootprint_Shuckle[]; +extern const u8 gMonFrontPic_Heracross[]; +extern const u8 gMonPalette_Heracross[]; +extern const u8 gMonBackPic_Heracross[]; +extern const u8 gMonShinyPalette_Heracross[]; +extern const u8 gMonIcon_Heracross[]; +extern const u8 gMonFootprint_Heracross[]; +extern const u8 gMonFrontPic_Sneasel[]; +extern const u8 gMonPalette_Sneasel[]; +extern const u8 gMonBackPic_Sneasel[]; +extern const u8 gMonShinyPalette_Sneasel[]; +extern const u8 gMonIcon_Sneasel[]; +extern const u8 gMonFootprint_Sneasel[]; +extern const u8 gMonFrontPic_Teddiursa[]; +extern const u8 gMonPalette_Teddiursa[]; +extern const u8 gMonBackPic_Teddiursa[]; +extern const u8 gMonShinyPalette_Teddiursa[]; +extern const u8 gMonIcon_Teddiursa[]; +extern const u8 gMonFootprint_Teddiursa[]; +extern const u8 gMonFrontPic_Ursaring[]; +extern const u8 gMonPalette_Ursaring[]; +extern const u8 gMonBackPic_Ursaring[]; +extern const u8 gMonShinyPalette_Ursaring[]; +extern const u8 gMonIcon_Ursaring[]; +extern const u8 gMonFootprint_Ursaring[]; +extern const u8 gMonFrontPic_Slugma[]; +extern const u8 gMonPalette_Slugma[]; +extern const u8 gMonBackPic_Slugma[]; +extern const u8 gMonShinyPalette_Slugma[]; +extern const u8 gMonIcon_Slugma[]; +extern const u8 gMonFootprint_Slugma[]; +extern const u8 gMonFrontPic_Magcargo[]; +extern const u8 gMonPalette_Magcargo[]; +extern const u8 gMonBackPic_Magcargo[]; +extern const u8 gMonShinyPalette_Magcargo[]; +extern const u8 gMonIcon_Magcargo[]; +extern const u8 gMonFootprint_Magcargo[]; +extern const u8 gMonFrontPic_Swinub[]; +extern const u8 gMonPalette_Swinub[]; +extern const u8 gMonBackPic_Swinub[]; +extern const u8 gMonShinyPalette_Swinub[]; +extern const u8 gMonIcon_Swinub[]; +extern const u8 gMonFootprint_Swinub[]; +extern const u8 gMonFrontPic_Piloswine[]; +extern const u8 gMonPalette_Piloswine[]; +extern const u8 gMonBackPic_Piloswine[]; +extern const u8 gMonShinyPalette_Piloswine[]; +extern const u8 gMonIcon_Piloswine[]; +extern const u8 gMonFootprint_Piloswine[]; +extern const u8 gMonFrontPic_Corsola[]; +extern const u8 gMonPalette_Corsola[]; +extern const u8 gMonBackPic_Corsola[]; +extern const u8 gMonShinyPalette_Corsola[]; +extern const u8 gMonIcon_Corsola[]; +extern const u8 gMonFootprint_Corsola[]; +extern const u8 gMonFrontPic_Remoraid[]; +extern const u8 gMonPalette_Remoraid[]; +extern const u8 gMonBackPic_Remoraid[]; +extern const u8 gMonShinyPalette_Remoraid[]; +extern const u8 gMonIcon_Remoraid[]; +extern const u8 gMonFootprint_Remoraid[]; +extern const u8 gMonFrontPic_Octillery[]; +extern const u8 gMonPalette_Octillery[]; +extern const u8 gMonBackPic_Octillery[]; +extern const u8 gMonShinyPalette_Octillery[]; +extern const u8 gMonIcon_Octillery[]; +extern const u8 gMonFootprint_Octillery[]; +extern const u8 gMonFrontPic_Delibird[]; +extern const u8 gMonPalette_Delibird[]; +extern const u8 gMonBackPic_Delibird[]; +extern const u8 gMonShinyPalette_Delibird[]; +extern const u8 gMonIcon_Delibird[]; +extern const u8 gMonFootprint_Delibird[]; +extern const u8 gMonFrontPic_Mantine[]; +extern const u8 gMonPalette_Mantine[]; +extern const u8 gMonBackPic_Mantine[]; +extern const u8 gMonShinyPalette_Mantine[]; +extern const u8 gMonIcon_Mantine[]; +extern const u8 gMonFootprint_Mantine[]; +extern const u8 gMonFrontPic_Skarmory[]; +extern const u8 gMonPalette_Skarmory[]; +extern const u8 gMonBackPic_Skarmory[]; +extern const u8 gMonShinyPalette_Skarmory[]; +extern const u8 gMonIcon_Skarmory[]; +extern const u8 gMonFootprint_Skarmory[]; +extern const u8 gMonFrontPic_Houndour[]; +extern const u8 gMonPalette_Houndour[]; +extern const u8 gMonBackPic_Houndour[]; +extern const u8 gMonShinyPalette_Houndour[]; +extern const u8 gMonIcon_Houndour[]; +extern const u8 gMonFootprint_Houndour[]; +extern const u8 gMonFrontPic_Houndoom[]; +extern const u8 gMonPalette_Houndoom[]; +extern const u8 gMonBackPic_Houndoom[]; +extern const u8 gMonShinyPalette_Houndoom[]; +extern const u8 gMonIcon_Houndoom[]; +extern const u8 gMonFootprint_Houndoom[]; +extern const u8 gMonFrontPic_Kingdra[]; +extern const u8 gMonPalette_Kingdra[]; +extern const u8 gMonBackPic_Kingdra[]; +extern const u8 gMonShinyPalette_Kingdra[]; +extern const u8 gMonIcon_Kingdra[]; +extern const u8 gMonFootprint_Kingdra[]; +extern const u8 gMonFrontPic_Phanpy[]; +extern const u8 gMonPalette_Phanpy[]; +extern const u8 gMonBackPic_Phanpy[]; +extern const u8 gMonShinyPalette_Phanpy[]; +extern const u8 gMonIcon_Phanpy[]; +extern const u8 gMonFootprint_Phanpy[]; +extern const u8 gMonFrontPic_Donphan[]; +extern const u8 gMonPalette_Donphan[]; +extern const u8 gMonBackPic_Donphan[]; +extern const u8 gMonShinyPalette_Donphan[]; +extern const u8 gMonIcon_Donphan[]; +extern const u8 gMonFootprint_Donphan[]; +extern const u8 gMonFrontPic_Porygon2[]; +extern const u8 gMonPalette_Porygon2[]; +extern const u8 gMonBackPic_Porygon2[]; +extern const u8 gMonShinyPalette_Porygon2[]; +extern const u8 gMonIcon_Porygon2[]; +extern const u8 gMonFootprint_Porygon2[]; +extern const u8 gMonFrontPic_Stantler[]; +extern const u8 gMonPalette_Stantler[]; +extern const u8 gMonBackPic_Stantler[]; +extern const u8 gMonShinyPalette_Stantler[]; +extern const u8 gMonIcon_Stantler[]; +extern const u8 gMonFootprint_Stantler[]; +extern const u8 gMonFrontPic_Smeargle[]; +extern const u8 gMonPalette_Smeargle[]; +extern const u8 gMonBackPic_Smeargle[]; +extern const u8 gMonShinyPalette_Smeargle[]; +extern const u8 gMonIcon_Smeargle[]; +extern const u8 gMonFootprint_Smeargle[]; +extern const u8 gMonFrontPic_Tyrogue[]; +extern const u8 gMonPalette_Tyrogue[]; +extern const u8 gMonBackPic_Tyrogue[]; +extern const u8 gMonShinyPalette_Tyrogue[]; +extern const u8 gMonIcon_Tyrogue[]; +extern const u8 gMonFootprint_Tyrogue[]; +extern const u8 gMonFrontPic_Hitmontop[]; +extern const u8 gMonPalette_Hitmontop[]; +extern const u8 gMonBackPic_Hitmontop[]; +extern const u8 gMonShinyPalette_Hitmontop[]; +extern const u8 gMonIcon_Hitmontop[]; +extern const u8 gMonFootprint_Hitmontop[]; +extern const u8 gMonFrontPic_Smoochum[]; +extern const u8 gMonPalette_Smoochum[]; +extern const u8 gMonBackPic_Smoochum[]; +extern const u8 gMonShinyPalette_Smoochum[]; +extern const u8 gMonIcon_Smoochum[]; +extern const u8 gMonFootprint_Smoochum[]; +extern const u8 gMonFrontPic_Elekid[]; +extern const u8 gMonPalette_Elekid[]; +extern const u8 gMonBackPic_Elekid[]; +extern const u8 gMonShinyPalette_Elekid[]; +extern const u8 gMonIcon_Elekid[]; +extern const u8 gMonFootprint_Elekid[]; +extern const u8 gMonFrontPic_Magby[]; +extern const u8 gMonPalette_Magby[]; +extern const u8 gMonBackPic_Magby[]; +extern const u8 gMonShinyPalette_Magby[]; +extern const u8 gMonIcon_Magby[]; +extern const u8 gMonFootprint_Magby[]; +extern const u8 gMonFrontPic_Miltank[]; +extern const u8 gMonPalette_Miltank[]; +extern const u8 gMonBackPic_Miltank[]; +extern const u8 gMonShinyPalette_Miltank[]; +extern const u8 gMonIcon_Miltank[]; +extern const u8 gMonFootprint_Miltank[]; +extern const u8 gMonFrontPic_Blissey[]; +extern const u8 gMonPalette_Blissey[]; +extern const u8 gMonBackPic_Blissey[]; +extern const u8 gMonShinyPalette_Blissey[]; +extern const u8 gMonIcon_Blissey[]; +extern const u8 gMonFootprint_Blissey[]; +extern const u8 gMonFrontPic_Raikou[]; +extern const u8 gMonPalette_Raikou[]; +extern const u8 gMonBackPic_Raikou[]; +extern const u8 gMonShinyPalette_Raikou[]; +extern const u8 gMonIcon_Raikou[]; +extern const u8 gMonFootprint_Raikou[]; +extern const u8 gMonFrontPic_Entei[]; +extern const u8 gMonPalette_Entei[]; +extern const u8 gMonBackPic_Entei[]; +extern const u8 gMonShinyPalette_Entei[]; +extern const u8 gMonIcon_Entei[]; +extern const u8 gMonFootprint_Entei[]; +extern const u8 gMonFrontPic_Suicune[]; +extern const u8 gMonPalette_Suicune[]; +extern const u8 gMonBackPic_Suicune[]; +extern const u8 gMonShinyPalette_Suicune[]; +extern const u8 gMonIcon_Suicune[]; +extern const u8 gMonFootprint_Suicune[]; +extern const u8 gMonFrontPic_Larvitar[]; +extern const u8 gMonPalette_Larvitar[]; +extern const u8 gMonBackPic_Larvitar[]; +extern const u8 gMonShinyPalette_Larvitar[]; +extern const u8 gMonIcon_Larvitar[]; +extern const u8 gMonFootprint_Larvitar[]; +extern const u8 gMonFrontPic_Pupitar[]; +extern const u8 gMonPalette_Pupitar[]; +extern const u8 gMonBackPic_Pupitar[]; +extern const u8 gMonShinyPalette_Pupitar[]; +extern const u8 gMonIcon_Pupitar[]; +extern const u8 gMonFootprint_Pupitar[]; +extern const u8 gMonFrontPic_Tyranitar[]; +extern const u8 gMonPalette_Tyranitar[]; +extern const u8 gMonBackPic_Tyranitar[]; +extern const u8 gMonShinyPalette_Tyranitar[]; +extern const u8 gMonIcon_Tyranitar[]; +extern const u8 gMonFootprint_Tyranitar[]; +extern const u8 gMonFrontPic_Lugia[]; +extern const u8 gMonPalette_Lugia[]; +extern const u8 gMonBackPic_Lugia[]; +extern const u8 gMonShinyPalette_Lugia[]; +extern const u8 gMonIcon_Lugia[]; +extern const u8 gMonFootprint_Lugia[]; +extern const u8 gMonFrontPic_HoOh[]; +extern const u8 gMonPalette_HoOh[]; +extern const u8 gMonBackPic_HoOh[]; +extern const u8 gMonShinyPalette_HoOh[]; +extern const u8 gMonIcon_HoOh[]; +extern const u8 gMonFootprint_HoOh[]; +extern const u8 gMonFrontPic_Celebi[]; +extern const u8 gMonPalette_Celebi[]; +extern const u8 gMonBackPic_Celebi[]; +extern const u8 gMonShinyPalette_Celebi[]; +extern const u8 gMonIcon_Celebi[]; +extern const u8 gMonFootprint_Celebi[]; +extern const u8 gMonFrontPic_QuestionMark[]; +extern const u8 gMonPalette_QuestionMark[]; +extern const u8 gMonBackPic_QuestionMark[]; +extern const u8 gMonShinyPalette_QuestionMark[]; +extern const u8 gMonFrontPic_Treecko[]; +extern const u8 gMonPalette_Treecko[]; +extern const u8 gMonBackPic_Treecko[]; +extern const u8 gMonShinyPalette_Treecko[]; +extern const u8 gMonIcon_Treecko[]; +extern const u8 gMonFootprint_Treecko[]; +extern const u8 gMonFrontPic_Grovyle[]; +extern const u8 gMonPalette_Grovyle[]; +extern const u8 gMonBackPic_Grovyle[]; +extern const u8 gMonShinyPalette_Grovyle[]; +extern const u8 gMonIcon_Grovyle[]; +extern const u8 gMonFootprint_Grovyle[]; +extern const u8 gMonFrontPic_Sceptile[]; +extern const u8 gMonPalette_Sceptile[]; +extern const u8 gMonBackPic_Sceptile[]; +extern const u8 gMonShinyPalette_Sceptile[]; +extern const u8 gMonIcon_Sceptile[]; +extern const u8 gMonFootprint_Sceptile[]; +extern const u8 gMonFrontPic_Torchic[]; +extern const u8 gMonPalette_Torchic[]; +extern const u8 gMonBackPic_Torchic[]; +extern const u8 gMonShinyPalette_Torchic[]; +extern const u8 gMonIcon_Torchic[]; +extern const u8 gMonFootprint_Torchic[]; +extern const u8 gMonFrontPic_Combusken[]; +extern const u8 gMonPalette_Combusken[]; +extern const u8 gMonBackPic_Combusken[]; +extern const u8 gMonShinyPalette_Combusken[]; +extern const u8 gMonIcon_Combusken[]; +extern const u8 gMonFootprint_Combusken[]; +extern const u8 gMonFrontPic_Blaziken[]; +extern const u8 gMonPalette_Blaziken[]; +extern const u8 gMonBackPic_Blaziken[]; +extern const u8 gMonShinyPalette_Blaziken[]; +extern const u8 gMonIcon_Blaziken[]; +extern const u8 gMonFootprint_Blaziken[]; +extern const u8 gMonFrontPic_Mudkip[]; +extern const u8 gMonPalette_Mudkip[]; +extern const u8 gMonBackPic_Mudkip[]; +extern const u8 gMonShinyPalette_Mudkip[]; +extern const u8 gMonIcon_Mudkip[]; +extern const u8 gMonFootprint_Mudkip[]; +extern const u8 gMonFrontPic_Marshtomp[]; +extern const u8 gMonPalette_Marshtomp[]; +extern const u8 gMonBackPic_Marshtomp[]; +extern const u8 gMonShinyPalette_Marshtomp[]; +extern const u8 gMonIcon_Marshtomp[]; +extern const u8 gMonFootprint_Marshtomp[]; +extern const u8 gMonFrontPic_Swampert[]; +extern const u8 gMonPalette_Swampert[]; +extern const u8 gMonBackPic_Swampert[]; +extern const u8 gMonShinyPalette_Swampert[]; +extern const u8 gMonIcon_Swampert[]; +extern const u8 gMonFootprint_Swampert[]; +extern const u8 gMonFrontPic_Poochyena[]; +extern const u8 gMonPalette_Poochyena[]; +extern const u8 gMonBackPic_Poochyena[]; +extern const u8 gMonShinyPalette_Poochyena[]; +extern const u8 gMonIcon_Poochyena[]; +extern const u8 gMonFootprint_Poochyena[]; +extern const u8 gMonFrontPic_Mightyena[]; +extern const u8 gMonPalette_Mightyena[]; +extern const u8 gMonBackPic_Mightyena[]; +extern const u8 gMonShinyPalette_Mightyena[]; +extern const u8 gMonIcon_Mightyena[]; +extern const u8 gMonFootprint_Mightyena[]; +extern const u8 gMonFrontPic_Zigzagoon[]; +extern const u8 gMonPalette_Zigzagoon[]; +extern const u8 gMonBackPic_Zigzagoon[]; +extern const u8 gMonShinyPalette_Zigzagoon[]; +extern const u8 gMonIcon_Zigzagoon[]; +extern const u8 gMonFootprint_Zigzagoon[]; +extern const u8 gMonFrontPic_Linoone[]; +extern const u8 gMonPalette_Linoone[]; +extern const u8 gMonBackPic_Linoone[]; +extern const u8 gMonShinyPalette_Linoone[]; +extern const u8 gMonIcon_Linoone[]; +extern const u8 gMonFootprint_Linoone[]; +extern const u8 gMonFrontPic_Wurmple[]; +extern const u8 gMonPalette_Wurmple[]; +extern const u8 gMonBackPic_Wurmple[]; +extern const u8 gMonShinyPalette_Wurmple[]; +extern const u8 gMonIcon_Wurmple[]; +extern const u8 gMonFootprint_Wurmple[]; +extern const u8 gMonFrontPic_Silcoon[]; +extern const u8 gMonPalette_Silcoon[]; +extern const u8 gMonBackPic_Silcoon[]; +extern const u8 gMonShinyPalette_Silcoon[]; +extern const u8 gMonIcon_Silcoon[]; +extern const u8 gMonFootprint_Silcoon[]; +extern const u8 gMonFrontPic_Beautifly[]; +extern const u8 gMonPalette_Beautifly[]; +extern const u8 gMonBackPic_Beautifly[]; +extern const u8 gMonShinyPalette_Beautifly[]; +extern const u8 gMonIcon_Beautifly[]; +extern const u8 gMonFootprint_Beautifly[]; +extern const u8 gMonFrontPic_Cascoon[]; +extern const u8 gMonPalette_Cascoon[]; +extern const u8 gMonBackPic_Cascoon[]; +extern const u8 gMonShinyPalette_Cascoon[]; +extern const u8 gMonIcon_Cascoon[]; +extern const u8 gMonFootprint_Cascoon[]; +extern const u8 gMonFrontPic_Dustox[]; +extern const u8 gMonPalette_Dustox[]; +extern const u8 gMonBackPic_Dustox[]; +extern const u8 gMonShinyPalette_Dustox[]; +extern const u8 gMonIcon_Dustox[]; +extern const u8 gMonFootprint_Dustox[]; +extern const u8 gMonFrontPic_Lotad[]; +extern const u8 gMonPalette_Lotad[]; +extern const u8 gMonBackPic_Lotad[]; +extern const u8 gMonShinyPalette_Lotad[]; +extern const u8 gMonIcon_Lotad[]; +extern const u8 gMonFootprint_Lotad[]; +extern const u8 gMonFrontPic_Lombre[]; +extern const u8 gMonPalette_Lombre[]; +extern const u8 gMonBackPic_Lombre[]; +extern const u8 gMonShinyPalette_Lombre[]; +extern const u8 gMonIcon_Lombre[]; +extern const u8 gMonFootprint_Lombre[]; +extern const u8 gMonFrontPic_Ludicolo[]; +extern const u8 gMonPalette_Ludicolo[]; +extern const u8 gMonBackPic_Ludicolo[]; +extern const u8 gMonShinyPalette_Ludicolo[]; +extern const u8 gMonIcon_Ludicolo[]; +extern const u8 gMonFootprint_Ludicolo[]; +extern const u8 gMonFrontPic_Seedot[]; +extern const u8 gMonPalette_Seedot[]; +extern const u8 gMonBackPic_Seedot[]; +extern const u8 gMonShinyPalette_Seedot[]; +extern const u8 gMonIcon_Seedot[]; +extern const u8 gMonFootprint_Seedot[]; +extern const u8 gMonFrontPic_Nuzleaf[]; +extern const u8 gMonPalette_Nuzleaf[]; +extern const u8 gMonBackPic_Nuzleaf[]; +extern const u8 gMonShinyPalette_Nuzleaf[]; +extern const u8 gMonIcon_Nuzleaf[]; +extern const u8 gMonFootprint_Nuzleaf[]; +extern const u8 gMonFrontPic_Shiftry[]; +extern const u8 gMonPalette_Shiftry[]; +extern const u8 gMonBackPic_Shiftry[]; +extern const u8 gMonShinyPalette_Shiftry[]; +extern const u8 gMonIcon_Shiftry[]; +extern const u8 gMonFootprint_Shiftry[]; +extern const u8 gMonFrontPic_Nincada[]; +extern const u8 gMonPalette_Nincada[]; +extern const u8 gMonBackPic_Nincada[]; +extern const u8 gMonShinyPalette_Nincada[]; +extern const u8 gMonIcon_Nincada[]; +extern const u8 gMonFootprint_Nincada[]; +extern const u8 gMonFrontPic_Ninjask[]; +extern const u8 gMonPalette_Ninjask[]; +extern const u8 gMonBackPic_Ninjask[]; +extern const u8 gMonShinyPalette_Ninjask[]; +extern const u8 gMonIcon_Ninjask[]; +extern const u8 gMonFootprint_Ninjask[]; +extern const u8 gMonFrontPic_Shedinja[]; +extern const u8 gMonPalette_Shedinja[]; +extern const u8 gMonBackPic_Shedinja[]; +extern const u8 gMonShinyPalette_Shedinja[]; +extern const u8 gMonIcon_Shedinja[]; +extern const u8 gMonFootprint_Shedinja[]; +extern const u8 gMonFrontPic_Taillow[]; +extern const u8 gMonPalette_Taillow[]; +extern const u8 gMonBackPic_Taillow[]; +extern const u8 gMonShinyPalette_Taillow[]; +extern const u8 gMonIcon_Taillow[]; +extern const u8 gMonFootprint_Taillow[]; +extern const u8 gMonFrontPic_Swellow[]; +extern const u8 gMonPalette_Swellow[]; +extern const u8 gMonBackPic_Swellow[]; +extern const u8 gMonShinyPalette_Swellow[]; +extern const u8 gMonIcon_Swellow[]; +extern const u8 gMonFootprint_Swellow[]; +extern const u8 gMonFrontPic_Shroomish[]; +extern const u8 gMonPalette_Shroomish[]; +extern const u8 gMonBackPic_Shroomish[]; +extern const u8 gMonShinyPalette_Shroomish[]; +extern const u8 gMonIcon_Shroomish[]; +extern const u8 gMonFootprint_Shroomish[]; +extern const u8 gMonFrontPic_Breloom[]; +extern const u8 gMonPalette_Breloom[]; +extern const u8 gMonBackPic_Breloom[]; +extern const u8 gMonShinyPalette_Breloom[]; +extern const u8 gMonIcon_Breloom[]; +extern const u8 gMonFootprint_Breloom[]; +extern const u8 gMonFrontPic_Spinda[]; +extern const u8 gMonPalette_Spinda[]; +extern const u8 gMonBackPic_Spinda[]; +extern const u8 gMonShinyPalette_Spinda[]; +extern const u8 gMonIcon_Spinda[]; +extern const u8 gMonFootprint_Spinda[]; +extern const u8 gMonFrontPic_Wingull[]; +extern const u8 gMonPalette_Wingull[]; +extern const u8 gMonBackPic_Wingull[]; +extern const u8 gMonShinyPalette_Wingull[]; +extern const u8 gMonIcon_Wingull[]; +extern const u8 gMonFootprint_Wingull[]; +extern const u8 gMonFrontPic_Pelipper[]; +extern const u8 gMonPalette_Pelipper[]; +extern const u8 gMonBackPic_Pelipper[]; +extern const u8 gMonShinyPalette_Pelipper[]; +extern const u8 gMonIcon_Pelipper[]; +extern const u8 gMonFootprint_Pelipper[]; +extern const u8 gMonFrontPic_Surskit[]; +extern const u8 gMonPalette_Surskit[]; +extern const u8 gMonBackPic_Surskit[]; +extern const u8 gMonShinyPalette_Surskit[]; +extern const u8 gMonIcon_Surskit[]; +extern const u8 gMonFootprint_Surskit[]; +extern const u8 gMonFrontPic_Masquerain[]; +extern const u8 gMonPalette_Masquerain[]; +extern const u8 gMonBackPic_Masquerain[]; +extern const u8 gMonShinyPalette_Masquerain[]; +extern const u8 gMonIcon_Masquerain[]; +extern const u8 gMonFootprint_Masquerain[]; +extern const u8 gMonFrontPic_Wailmer[]; +extern const u8 gMonPalette_Wailmer[]; +extern const u8 gMonBackPic_Wailmer[]; +extern const u8 gMonShinyPalette_Wailmer[]; +extern const u8 gMonIcon_Wailmer[]; +extern const u8 gMonFootprint_Wailmer[]; +extern const u8 gMonFrontPic_Wailord[]; +extern const u8 gMonPalette_Wailord[]; +extern const u8 gMonBackPic_Wailord[]; +extern const u8 gMonShinyPalette_Wailord[]; +extern const u8 gMonIcon_Wailord[]; +extern const u8 gMonFootprint_Wailord[]; +extern const u8 gMonFrontPic_Skitty[]; +extern const u8 gMonPalette_Skitty[]; +extern const u8 gMonBackPic_Skitty[]; +extern const u8 gMonShinyPalette_Skitty[]; +extern const u8 gMonIcon_Skitty[]; +extern const u8 gMonFootprint_Skitty[]; +extern const u8 gMonFrontPic_Delcatty[]; +extern const u8 gMonPalette_Delcatty[]; +extern const u8 gMonBackPic_Delcatty[]; +extern const u8 gMonShinyPalette_Delcatty[]; +extern const u8 gMonIcon_Delcatty[]; +extern const u8 gMonFootprint_Delcatty[]; +extern const u8 gMonFrontPic_Kecleon[]; +extern const u8 gMonPalette_Kecleon[]; +extern const u8 gMonBackPic_Kecleon[]; +extern const u8 gMonShinyPalette_Kecleon[]; +extern const u8 gMonIcon_Kecleon[]; +extern const u8 gMonFootprint_Kecleon[]; +extern const u8 gMonFrontPic_Baltoy[]; +extern const u8 gMonPalette_Baltoy[]; +extern const u8 gMonBackPic_Baltoy[]; +extern const u8 gMonShinyPalette_Baltoy[]; +extern const u8 gMonIcon_Baltoy[]; +extern const u8 gMonFootprint_Baltoy[]; +extern const u8 gMonFrontPic_Claydol[]; +extern const u8 gMonPalette_Claydol[]; +extern const u8 gMonBackPic_Claydol[]; +extern const u8 gMonShinyPalette_Claydol[]; +extern const u8 gMonIcon_Claydol[]; +extern const u8 gMonFootprint_Claydol[]; +extern const u8 gMonFrontPic_Nosepass[]; +extern const u8 gMonPalette_Nosepass[]; +extern const u8 gMonBackPic_Nosepass[]; +extern const u8 gMonShinyPalette_Nosepass[]; +extern const u8 gMonIcon_Nosepass[]; +extern const u8 gMonFootprint_Nosepass[]; +extern const u8 gMonFrontPic_Torkoal[]; +extern const u8 gMonPalette_Torkoal[]; +extern const u8 gMonBackPic_Torkoal[]; +extern const u8 gMonShinyPalette_Torkoal[]; +extern const u8 gMonIcon_Torkoal[]; +extern const u8 gMonFootprint_Torkoal[]; +extern const u8 gMonFrontPic_Sableye[]; +extern const u8 gMonPalette_Sableye[]; +extern const u8 gMonBackPic_Sableye[]; +extern const u8 gMonShinyPalette_Sableye[]; +extern const u8 gMonIcon_Sableye[]; +extern const u8 gMonFootprint_Sableye[]; +extern const u8 gMonFrontPic_Barboach[]; +extern const u8 gMonPalette_Barboach[]; +extern const u8 gMonBackPic_Barboach[]; +extern const u8 gMonShinyPalette_Barboach[]; +extern const u8 gMonIcon_Barboach[]; +extern const u8 gMonFootprint_Barboach[]; +extern const u8 gMonFrontPic_Whiscash[]; +extern const u8 gMonPalette_Whiscash[]; +extern const u8 gMonBackPic_Whiscash[]; +extern const u8 gMonShinyPalette_Whiscash[]; +extern const u8 gMonIcon_Whiscash[]; +extern const u8 gMonFootprint_Whiscash[]; +extern const u8 gMonFrontPic_Luvdisc[]; +extern const u8 gMonPalette_Luvdisc[]; +extern const u8 gMonBackPic_Luvdisc[]; +extern const u8 gMonShinyPalette_Luvdisc[]; +extern const u8 gMonIcon_Luvdisc[]; +extern const u8 gMonFootprint_Luvdisc[]; +extern const u8 gMonFrontPic_Corphish[]; +extern const u8 gMonPalette_Corphish[]; +extern const u8 gMonBackPic_Corphish[]; +extern const u8 gMonShinyPalette_Corphish[]; +extern const u8 gMonIcon_Corphish[]; +extern const u8 gMonFootprint_Corphish[]; +extern const u8 gMonFrontPic_Crawdaunt[]; +extern const u8 gMonPalette_Crawdaunt[]; +extern const u8 gMonBackPic_Crawdaunt[]; +extern const u8 gMonShinyPalette_Crawdaunt[]; +extern const u8 gMonIcon_Crawdaunt[]; +extern const u8 gMonFootprint_Crawdaunt[]; +extern const u8 gMonFrontPic_Feebas[]; +extern const u8 gMonPalette_Feebas[]; +extern const u8 gMonBackPic_Feebas[]; +extern const u8 gMonShinyPalette_Feebas[]; +extern const u8 gMonIcon_Feebas[]; +extern const u8 gMonFootprint_Feebas[]; +extern const u8 gMonFrontPic_Milotic[]; +extern const u8 gMonPalette_Milotic[]; +extern const u8 gMonBackPic_Milotic[]; +extern const u8 gMonShinyPalette_Milotic[]; +extern const u8 gMonIcon_Milotic[]; +extern const u8 gMonFootprint_Milotic[]; +extern const u8 gMonFrontPic_Carvanha[]; +extern const u8 gMonPalette_Carvanha[]; +extern const u8 gMonBackPic_Carvanha[]; +extern const u8 gMonShinyPalette_Carvanha[]; +extern const u8 gMonIcon_Carvanha[]; +extern const u8 gMonFootprint_Carvanha[]; +extern const u8 gMonFrontPic_Sharpedo[]; +extern const u8 gMonPalette_Sharpedo[]; +extern const u8 gMonBackPic_Sharpedo[]; +extern const u8 gMonShinyPalette_Sharpedo[]; +extern const u8 gMonIcon_Sharpedo[]; +extern const u8 gMonFootprint_Sharpedo[]; +extern const u8 gMonFrontPic_Trapinch[]; +extern const u8 gMonPalette_Trapinch[]; +extern const u8 gMonBackPic_Trapinch[]; +extern const u8 gMonShinyPalette_Trapinch[]; +extern const u8 gMonIcon_Trapinch[]; +extern const u8 gMonFootprint_Trapinch[]; +extern const u8 gMonFrontPic_Vibrava[]; +extern const u8 gMonPalette_Vibrava[]; +extern const u8 gMonBackPic_Vibrava[]; +extern const u8 gMonShinyPalette_Vibrava[]; +extern const u8 gMonIcon_Vibrava[]; +extern const u8 gMonFootprint_Vibrava[]; +extern const u8 gMonFrontPic_Flygon[]; +extern const u8 gMonPalette_Flygon[]; +extern const u8 gMonBackPic_Flygon[]; +extern const u8 gMonShinyPalette_Flygon[]; +extern const u8 gMonIcon_Flygon[]; +extern const u8 gMonFootprint_Flygon[]; +extern const u8 gMonFrontPic_Makuhita[]; +extern const u8 gMonPalette_Makuhita[]; +extern const u8 gMonBackPic_Makuhita[]; +extern const u8 gMonShinyPalette_Makuhita[]; +extern const u8 gMonIcon_Makuhita[]; +extern const u8 gMonFootprint_Makuhita[]; +extern const u8 gMonFrontPic_Hariyama[]; +extern const u8 gMonPalette_Hariyama[]; +extern const u8 gMonBackPic_Hariyama[]; +extern const u8 gMonShinyPalette_Hariyama[]; +extern const u8 gMonIcon_Hariyama[]; +extern const u8 gMonFootprint_Hariyama[]; +extern const u8 gMonFrontPic_Electrike[]; +extern const u8 gMonPalette_Electrike[]; +extern const u8 gMonBackPic_Electrike[]; +extern const u8 gMonShinyPalette_Electrike[]; +extern const u8 gMonIcon_Electrike[]; +extern const u8 gMonFootprint_Electrike[]; +extern const u8 gMonFrontPic_Manectric[]; +extern const u8 gMonPalette_Manectric[]; +extern const u8 gMonBackPic_Manectric[]; +extern const u8 gMonShinyPalette_Manectric[]; +extern const u8 gMonIcon_Manectric[]; +extern const u8 gMonFootprint_Manectric[]; +extern const u8 gMonFrontPic_Numel[]; +extern const u8 gMonPalette_Numel[]; +extern const u8 gMonBackPic_Numel[]; +extern const u8 gMonShinyPalette_Numel[]; +extern const u8 gMonIcon_Numel[]; +extern const u8 gMonFootprint_Numel[]; +extern const u8 gMonFrontPic_Camerupt[]; +extern const u8 gMonPalette_Camerupt[]; +extern const u8 gMonBackPic_Camerupt[]; +extern const u8 gMonShinyPalette_Camerupt[]; +extern const u8 gMonIcon_Camerupt[]; +extern const u8 gMonFootprint_Camerupt[]; +extern const u8 gMonFrontPic_Spheal[]; +extern const u8 gMonPalette_Spheal[]; +extern const u8 gMonBackPic_Spheal[]; +extern const u8 gMonShinyPalette_Spheal[]; +extern const u8 gMonIcon_Spheal[]; +extern const u8 gMonFootprint_Spheal[]; +extern const u8 gMonFrontPic_Sealeo[]; +extern const u8 gMonPalette_Sealeo[]; +extern const u8 gMonBackPic_Sealeo[]; +extern const u8 gMonShinyPalette_Sealeo[]; +extern const u8 gMonIcon_Sealeo[]; +extern const u8 gMonFootprint_Sealeo[]; +extern const u8 gMonFrontPic_Walrein[]; +extern const u8 gMonPalette_Walrein[]; +extern const u8 gMonBackPic_Walrein[]; +extern const u8 gMonShinyPalette_Walrein[]; +extern const u8 gMonIcon_Walrein[]; +extern const u8 gMonFootprint_Walrein[]; +extern const u8 gMonFrontPic_Cacnea[]; +extern const u8 gMonPalette_Cacnea[]; +extern const u8 gMonBackPic_Cacnea[]; +extern const u8 gMonShinyPalette_Cacnea[]; +extern const u8 gMonIcon_Cacnea[]; +extern const u8 gMonFootprint_Cacnea[]; +extern const u8 gMonFrontPic_Cacturne[]; +extern const u8 gMonPalette_Cacturne[]; +extern const u8 gMonBackPic_Cacturne[]; +extern const u8 gMonShinyPalette_Cacturne[]; +extern const u8 gMonIcon_Cacturne[]; +extern const u8 gMonFootprint_Cacturne[]; +extern const u8 gMonFrontPic_Snorunt[]; +extern const u8 gMonPalette_Snorunt[]; +extern const u8 gMonBackPic_Snorunt[]; +extern const u8 gMonShinyPalette_Snorunt[]; +extern const u8 gMonIcon_Snorunt[]; +extern const u8 gMonFootprint_Snorunt[]; +extern const u8 gMonFrontPic_Glalie[]; +extern const u8 gMonPalette_Glalie[]; +extern const u8 gMonBackPic_Glalie[]; +extern const u8 gMonShinyPalette_Glalie[]; +extern const u8 gMonIcon_Glalie[]; +extern const u8 gMonFootprint_Glalie[]; +extern const u8 gMonFrontPic_Lunatone[]; +extern const u8 gMonPalette_Lunatone[]; +extern const u8 gMonBackPic_Lunatone[]; +extern const u8 gMonShinyPalette_Lunatone[]; +extern const u8 gMonIcon_Lunatone[]; +extern const u8 gMonFootprint_Lunatone[]; +extern const u8 gMonFrontPic_Solrock[]; +extern const u8 gMonPalette_Solrock[]; +extern const u8 gMonBackPic_Solrock[]; +extern const u8 gMonShinyPalette_Solrock[]; +extern const u8 gMonIcon_Solrock[]; +extern const u8 gMonFootprint_Solrock[]; +extern const u8 gMonFrontPic_Azurill[]; +extern const u8 gMonPalette_Azurill[]; +extern const u8 gMonBackPic_Azurill[]; +extern const u8 gMonShinyPalette_Azurill[]; +extern const u8 gMonIcon_Azurill[]; +extern const u8 gMonFootprint_Azurill[]; +extern const u8 gMonFrontPic_Spoink[]; +extern const u8 gMonPalette_Spoink[]; +extern const u8 gMonBackPic_Spoink[]; +extern const u8 gMonShinyPalette_Spoink[]; +extern const u8 gMonIcon_Spoink[]; +extern const u8 gMonFootprint_Spoink[]; +extern const u8 gMonFrontPic_Grumpig[]; +extern const u8 gMonPalette_Grumpig[]; +extern const u8 gMonBackPic_Grumpig[]; +extern const u8 gMonShinyPalette_Grumpig[]; +extern const u8 gMonIcon_Grumpig[]; +extern const u8 gMonFootprint_Grumpig[]; +extern const u8 gMonFrontPic_Plusle[]; +extern const u8 gMonPalette_Plusle[]; +extern const u8 gMonBackPic_Plusle[]; +extern const u8 gMonShinyPalette_Plusle[]; +extern const u8 gMonIcon_Plusle[]; +extern const u8 gMonFootprint_Plusle[]; +extern const u8 gMonFrontPic_Minun[]; +extern const u8 gMonPalette_Minun[]; +extern const u8 gMonBackPic_Minun[]; +extern const u8 gMonShinyPalette_Minun[]; +extern const u8 gMonIcon_Minun[]; +extern const u8 gMonFootprint_Minun[]; +extern const u8 gMonFrontPic_Mawile[]; +extern const u8 gMonPalette_Mawile[]; +extern const u8 gMonBackPic_Mawile[]; +extern const u8 gMonShinyPalette_Mawile[]; +extern const u8 gMonIcon_Mawile[]; +extern const u8 gMonFootprint_Mawile[]; +extern const u8 gMonFrontPic_Meditite[]; +extern const u8 gMonPalette_Meditite[]; +extern const u8 gMonBackPic_Meditite[]; +extern const u8 gMonShinyPalette_Meditite[]; +extern const u8 gMonIcon_Meditite[]; +extern const u8 gMonFootprint_Meditite[]; +extern const u8 gMonFrontPic_Medicham[]; +extern const u8 gMonPalette_Medicham[]; +extern const u8 gMonBackPic_Medicham[]; +extern const u8 gMonShinyPalette_Medicham[]; +extern const u8 gMonIcon_Medicham[]; +extern const u8 gMonFootprint_Medicham[]; +extern const u8 gMonFrontPic_Swablu[]; +extern const u8 gMonPalette_Swablu[]; +extern const u8 gMonBackPic_Swablu[]; +extern const u8 gMonShinyPalette_Swablu[]; +extern const u8 gMonIcon_Swablu[]; +extern const u8 gMonFootprint_Swablu[]; +extern const u8 gMonFrontPic_Altaria[]; +extern const u8 gMonPalette_Altaria[]; +extern const u8 gMonBackPic_Altaria[]; +extern const u8 gMonShinyPalette_Altaria[]; +extern const u8 gMonIcon_Altaria[]; +extern const u8 gMonFootprint_Altaria[]; +extern const u8 gMonFrontPic_Wynaut[]; +extern const u8 gMonPalette_Wynaut[]; +extern const u8 gMonBackPic_Wynaut[]; +extern const u8 gMonShinyPalette_Wynaut[]; +extern const u8 gMonIcon_Wynaut[]; +extern const u8 gMonFootprint_Wynaut[]; +extern const u8 gMonFrontPic_Duskull[]; +extern const u8 gMonPalette_Duskull[]; +extern const u8 gMonBackPic_Duskull[]; +extern const u8 gMonShinyPalette_Duskull[]; +extern const u8 gMonIcon_Duskull[]; +extern const u8 gMonFootprint_Duskull[]; +extern const u8 gMonFrontPic_Dusclops[]; +extern const u8 gMonPalette_Dusclops[]; +extern const u8 gMonBackPic_Dusclops[]; +extern const u8 gMonShinyPalette_Dusclops[]; +extern const u8 gMonIcon_Dusclops[]; +extern const u8 gMonFootprint_Dusclops[]; +extern const u8 gMonFrontPic_Roselia[]; +extern const u8 gMonPalette_Roselia[]; +extern const u8 gMonBackPic_Roselia[]; +extern const u8 gMonShinyPalette_Roselia[]; +extern const u8 gMonIcon_Roselia[]; +extern const u8 gMonFootprint_Roselia[]; +extern const u8 gMonFrontPic_Slakoth[]; +extern const u8 gMonPalette_Slakoth[]; +extern const u8 gMonBackPic_Slakoth[]; +extern const u8 gMonShinyPalette_Slakoth[]; +extern const u8 gMonIcon_Slakoth[]; +extern const u8 gMonFootprint_Slakoth[]; +extern const u8 gMonFrontPic_Vigoroth[]; +extern const u8 gMonPalette_Vigoroth[]; +extern const u8 gMonBackPic_Vigoroth[]; +extern const u8 gMonShinyPalette_Vigoroth[]; +extern const u8 gMonIcon_Vigoroth[]; +extern const u8 gMonFootprint_Vigoroth[]; +extern const u8 gMonFrontPic_Slaking[]; +extern const u8 gMonPalette_Slaking[]; +extern const u8 gMonBackPic_Slaking[]; +extern const u8 gMonShinyPalette_Slaking[]; +extern const u8 gMonIcon_Slaking[]; +extern const u8 gMonFootprint_Slaking[]; +extern const u8 gMonFrontPic_Gulpin[]; +extern const u8 gMonPalette_Gulpin[]; +extern const u8 gMonBackPic_Gulpin[]; +extern const u8 gMonShinyPalette_Gulpin[]; +extern const u8 gMonIcon_Gulpin[]; +extern const u8 gMonFootprint_Gulpin[]; +extern const u8 gMonFrontPic_Swalot[]; +extern const u8 gMonPalette_Swalot[]; +extern const u8 gMonBackPic_Swalot[]; +extern const u8 gMonShinyPalette_Swalot[]; +extern const u8 gMonIcon_Swalot[]; +extern const u8 gMonFootprint_Swalot[]; +extern const u8 gMonFrontPic_Tropius[]; +extern const u8 gMonPalette_Tropius[]; +extern const u8 gMonBackPic_Tropius[]; +extern const u8 gMonShinyPalette_Tropius[]; +extern const u8 gMonIcon_Tropius[]; +extern const u8 gMonFootprint_Tropius[]; +extern const u8 gMonFrontPic_Whismur[]; +extern const u8 gMonPalette_Whismur[]; +extern const u8 gMonBackPic_Whismur[]; +extern const u8 gMonShinyPalette_Whismur[]; +extern const u8 gMonIcon_Whismur[]; +extern const u8 gMonFootprint_Whismur[]; +extern const u8 gMonFrontPic_Loudred[]; +extern const u8 gMonPalette_Loudred[]; +extern const u8 gMonBackPic_Loudred[]; +extern const u8 gMonShinyPalette_Loudred[]; +extern const u8 gMonIcon_Loudred[]; +extern const u8 gMonFootprint_Loudred[]; +extern const u8 gMonFrontPic_Exploud[]; +extern const u8 gMonPalette_Exploud[]; +extern const u8 gMonBackPic_Exploud[]; +extern const u8 gMonShinyPalette_Exploud[]; +extern const u8 gMonIcon_Exploud[]; +extern const u8 gMonFootprint_Exploud[]; +extern const u8 gMonFrontPic_Clamperl[]; +extern const u8 gMonPalette_Clamperl[]; +extern const u8 gMonBackPic_Clamperl[]; +extern const u8 gMonShinyPalette_Clamperl[]; +extern const u8 gMonIcon_Clamperl[]; +extern const u8 gMonFootprint_Clamperl[]; +extern const u8 gMonFrontPic_Huntail[]; +extern const u8 gMonPalette_Huntail[]; +extern const u8 gMonBackPic_Huntail[]; +extern const u8 gMonShinyPalette_Huntail[]; +extern const u8 gMonIcon_Huntail[]; +extern const u8 gMonFootprint_Huntail[]; +extern const u8 gMonFrontPic_Gorebyss[]; +extern const u8 gMonPalette_Gorebyss[]; +extern const u8 gMonBackPic_Gorebyss[]; +extern const u8 gMonShinyPalette_Gorebyss[]; +extern const u8 gMonIcon_Gorebyss[]; +extern const u8 gMonFootprint_Gorebyss[]; +extern const u8 gMonFrontPic_Absol[]; +extern const u8 gMonPalette_Absol[]; +extern const u8 gMonBackPic_Absol[]; +extern const u8 gMonShinyPalette_Absol[]; +extern const u8 gMonIcon_Absol[]; +extern const u8 gMonFootprint_Absol[]; +extern const u8 gMonFrontPic_Shuppet[]; +extern const u8 gMonPalette_Shuppet[]; +extern const u8 gMonBackPic_Shuppet[]; +extern const u8 gMonShinyPalette_Shuppet[]; +extern const u8 gMonIcon_Shuppet[]; +extern const u8 gMonFootprint_Shuppet[]; +extern const u8 gMonFrontPic_Banette[]; +extern const u8 gMonPalette_Banette[]; +extern const u8 gMonBackPic_Banette[]; +extern const u8 gMonShinyPalette_Banette[]; +extern const u8 gMonIcon_Banette[]; +extern const u8 gMonFootprint_Banette[]; +extern const u8 gMonFrontPic_Seviper[]; +extern const u8 gMonPalette_Seviper[]; +extern const u8 gMonBackPic_Seviper[]; +extern const u8 gMonShinyPalette_Seviper[]; +extern const u8 gMonIcon_Seviper[]; +extern const u8 gMonFootprint_Seviper[]; +extern const u8 gMonFrontPic_Zangoose[]; +extern const u8 gMonPalette_Zangoose[]; +extern const u8 gMonBackPic_Zangoose[]; +extern const u8 gMonShinyPalette_Zangoose[]; +extern const u8 gMonIcon_Zangoose[]; +extern const u8 gMonFootprint_Zangoose[]; +extern const u8 gMonFrontPic_Relicanth[]; +extern const u8 gMonPalette_Relicanth[]; +extern const u8 gMonBackPic_Relicanth[]; +extern const u8 gMonShinyPalette_Relicanth[]; +extern const u8 gMonIcon_Relicanth[]; +extern const u8 gMonFootprint_Relicanth[]; +extern const u8 gMonFrontPic_Aron[]; +extern const u8 gMonPalette_Aron[]; +extern const u8 gMonBackPic_Aron[]; +extern const u8 gMonShinyPalette_Aron[]; +extern const u8 gMonIcon_Aron[]; +extern const u8 gMonFootprint_Aron[]; +extern const u8 gMonFrontPic_Lairon[]; +extern const u8 gMonPalette_Lairon[]; +extern const u8 gMonBackPic_Lairon[]; +extern const u8 gMonShinyPalette_Lairon[]; +extern const u8 gMonIcon_Lairon[]; +extern const u8 gMonFootprint_Lairon[]; +extern const u8 gMonFrontPic_Aggron[]; +extern const u8 gMonPalette_Aggron[]; +extern const u8 gMonBackPic_Aggron[]; +extern const u8 gMonShinyPalette_Aggron[]; +extern const u8 gMonIcon_Aggron[]; +extern const u8 gMonFootprint_Aggron[]; +extern const u8 gMonFrontPic_Castform[]; +extern const u8 gMonPalette_Castform[]; +extern const u8 gMonBackPic_Castform[]; +extern const u8 gMonShinyPalette_Castform[]; +extern const u8 gMonIcon_Castform[]; +extern const u8 gMonFootprint_Castform[]; +extern const u8 gMonFrontPic_Volbeat[]; +extern const u8 gMonPalette_Volbeat[]; +extern const u8 gMonBackPic_Volbeat[]; +extern const u8 gMonShinyPalette_Volbeat[]; +extern const u8 gMonIcon_Volbeat[]; +extern const u8 gMonFootprint_Volbeat[]; +extern const u8 gMonFrontPic_Illumise[]; +extern const u8 gMonPalette_Illumise[]; +extern const u8 gMonBackPic_Illumise[]; +extern const u8 gMonShinyPalette_Illumise[]; +extern const u8 gMonIcon_Illumise[]; +extern const u8 gMonFootprint_Illumise[]; +extern const u8 gMonFrontPic_Lileep[]; +extern const u8 gMonPalette_Lileep[]; +extern const u8 gMonBackPic_Lileep[]; +extern const u8 gMonShinyPalette_Lileep[]; +extern const u8 gMonIcon_Lileep[]; +extern const u8 gMonFootprint_Lileep[]; +extern const u8 gMonFrontPic_Cradily[]; +extern const u8 gMonPalette_Cradily[]; +extern const u8 gMonBackPic_Cradily[]; +extern const u8 gMonShinyPalette_Cradily[]; +extern const u8 gMonIcon_Cradily[]; +extern const u8 gMonFootprint_Cradily[]; +extern const u8 gMonFrontPic_Anorith[]; +extern const u8 gMonPalette_Anorith[]; +extern const u8 gMonBackPic_Anorith[]; +extern const u8 gMonShinyPalette_Anorith[]; +extern const u8 gMonIcon_Anorith[]; +extern const u8 gMonFootprint_Anorith[]; +extern const u8 gMonFrontPic_Armaldo[]; +extern const u8 gMonPalette_Armaldo[]; +extern const u8 gMonBackPic_Armaldo[]; +extern const u8 gMonShinyPalette_Armaldo[]; +extern const u8 gMonIcon_Armaldo[]; +extern const u8 gMonFootprint_Armaldo[]; +extern const u8 gMonFrontPic_Ralts[]; +extern const u8 gMonPalette_Ralts[]; +extern const u8 gMonBackPic_Ralts[]; +extern const u8 gMonShinyPalette_Ralts[]; +extern const u8 gMonIcon_Ralts[]; +extern const u8 gMonFootprint_Ralts[]; +extern const u8 gMonFrontPic_Kirlia[]; +extern const u8 gMonPalette_Kirlia[]; +extern const u8 gMonBackPic_Kirlia[]; +extern const u8 gMonShinyPalette_Kirlia[]; +extern const u8 gMonIcon_Kirlia[]; +extern const u8 gMonFootprint_Kirlia[]; +extern const u8 gMonFrontPic_Gardevoir[]; +extern const u8 gMonPalette_Gardevoir[]; +extern const u8 gMonBackPic_Gardevoir[]; +extern const u8 gMonShinyPalette_Gardevoir[]; +extern const u8 gMonIcon_Gardevoir[]; +extern const u8 gMonFootprint_Gardevoir[]; +extern const u8 gMonFrontPic_Bagon[]; +extern const u8 gMonPalette_Bagon[]; +extern const u8 gMonBackPic_Bagon[]; +extern const u8 gMonShinyPalette_Bagon[]; +extern const u8 gMonIcon_Bagon[]; +extern const u8 gMonFootprint_Bagon[]; +extern const u8 gMonFrontPic_Shelgon[]; +extern const u8 gMonPalette_Shelgon[]; +extern const u8 gMonBackPic_Shelgon[]; +extern const u8 gMonShinyPalette_Shelgon[]; +extern const u8 gMonIcon_Shelgon[]; +extern const u8 gMonFootprint_Shelgon[]; +extern const u8 gMonFrontPic_Salamence[]; +extern const u8 gMonPalette_Salamence[]; +extern const u8 gMonBackPic_Salamence[]; +extern const u8 gMonShinyPalette_Salamence[]; +extern const u8 gMonIcon_Salamence[]; +extern const u8 gMonFootprint_Salamence[]; +extern const u8 gMonFrontPic_Beldum[]; +extern const u8 gMonPalette_Beldum[]; +extern const u8 gMonBackPic_Beldum[]; +extern const u8 gMonShinyPalette_Beldum[]; +extern const u8 gMonIcon_Beldum[]; +extern const u8 gMonFootprint_Beldum[]; +extern const u8 gMonFrontPic_Metang[]; +extern const u8 gMonPalette_Metang[]; +extern const u8 gMonBackPic_Metang[]; +extern const u8 gMonShinyPalette_Metang[]; +extern const u8 gMonIcon_Metang[]; +extern const u8 gMonFootprint_Metang[]; +extern const u8 gMonFrontPic_Metagross[]; +extern const u8 gMonPalette_Metagross[]; +extern const u8 gMonBackPic_Metagross[]; +extern const u8 gMonShinyPalette_Metagross[]; +extern const u8 gMonIcon_Metagross[]; +extern const u8 gMonFootprint_Metagross[]; +extern const u8 gMonFrontPic_Regirock[]; +extern const u8 gMonPalette_Regirock[]; +extern const u8 gMonBackPic_Regirock[]; +extern const u8 gMonShinyPalette_Regirock[]; +extern const u8 gMonIcon_Regirock[]; +extern const u8 gMonFootprint_Regirock[]; +extern const u8 gMonFrontPic_Regice[]; +extern const u8 gMonPalette_Regice[]; +extern const u8 gMonBackPic_Regice[]; +extern const u8 gMonShinyPalette_Regice[]; +extern const u8 gMonIcon_Regice[]; +extern const u8 gMonFootprint_Regice[]; +extern const u8 gMonFrontPic_Registeel[]; +extern const u8 gMonPalette_Registeel[]; +extern const u8 gMonBackPic_Registeel[]; +extern const u8 gMonShinyPalette_Registeel[]; +extern const u8 gMonIcon_Registeel[]; +extern const u8 gMonFootprint_Registeel[]; +extern const u8 gMonFrontPic_Kyogre[]; +extern const u8 gMonPalette_Kyogre[]; +extern const u8 gMonBackPic_Kyogre[]; +extern const u8 gMonShinyPalette_Kyogre[]; +extern const u8 gMonIcon_Kyogre[]; +extern const u8 gMonFootprint_Kyogre[]; +extern const u8 gMonFrontPic_Groudon[]; +extern const u8 gMonPalette_Groudon[]; +extern const u8 gMonBackPic_Groudon[]; +extern const u8 gMonShinyPalette_Groudon[]; +extern const u8 gMonIcon_Groudon[]; +extern const u8 gMonFootprint_Groudon[]; +extern const u8 gMonFrontPic_Rayquaza[]; +extern const u8 gMonPalette_Rayquaza[]; +extern const u8 gMonBackPic_Rayquaza[]; +extern const u8 gMonShinyPalette_Rayquaza[]; +extern const u8 gMonIcon_Rayquaza[]; +extern const u8 gMonFootprint_Rayquaza[]; +extern const u8 gMonFrontPic_Latias[]; +extern const u8 gMonPalette_Latias[]; +extern const u8 gMonBackPic_Latias[]; +extern const u8 gMonShinyPalette_Latias[]; +extern const u8 gMonIcon_Latias[]; +extern const u8 gMonFootprint_Latias[]; +extern const u8 gMonFrontPic_Latios[]; +extern const u8 gMonPalette_Latios[]; +extern const u8 gMonBackPic_Latios[]; +extern const u8 gMonShinyPalette_Latios[]; +extern const u8 gMonIcon_Latios[]; +extern const u8 gMonFootprint_Latios[]; +extern const u8 gMonFrontPic_Jirachi[]; +extern const u8 gMonPalette_Jirachi[]; +extern const u8 gMonBackPic_Jirachi[]; +extern const u8 gMonShinyPalette_Jirachi[]; +extern const u8 gMonIcon_Jirachi[]; +extern const u8 gMonFootprint_Jirachi[]; +extern const u8 gMonFrontPic_Deoxys[]; +extern const u8 gMonPalette_Deoxys[]; +extern const u8 gMonBackPic_Deoxys[]; +extern const u8 gMonShinyPalette_Deoxys[]; +extern const u8 gMonIcon_Deoxys[]; +extern const u8 gMonFootprint_Deoxys[]; +extern const u8 gMonFrontPic_Chimecho[]; +extern const u8 gMonPalette_Chimecho[]; +extern const u8 gMonBackPic_Chimecho[]; +extern const u8 gMonShinyPalette_Chimecho[]; +extern const u8 gMonIcon_Chimecho[]; +extern const u8 gMonFootprint_Chimecho[]; +extern const u8 gMonPic_Egg[]; +extern const u8 gMonPalette_Egg[]; +extern const u8 gMonFrontPic_UnownB[]; +extern const u8 gMonBackPic_UnownB[]; +extern const u8 gMonIcon_UnownB[]; +extern const u8 gMonFrontPic_UnownC[]; +extern const u8 gMonBackPic_UnownC[]; +extern const u8 gMonIcon_UnownC[]; +extern const u8 gMonFrontPic_UnownD[]; +extern const u8 gMonBackPic_UnownD[]; +extern const u8 gMonIcon_UnownD[]; +extern const u8 gMonFrontPic_UnownE[]; +extern const u8 gMonBackPic_UnownE[]; +extern const u8 gMonIcon_UnownE[]; +extern const u8 gMonFrontPic_UnownF[]; +extern const u8 gMonBackPic_UnownF[]; +extern const u8 gMonIcon_UnownF[]; +extern const u8 gMonFrontPic_UnownG[]; +extern const u8 gMonBackPic_UnownG[]; +extern const u8 gMonIcon_UnownG[]; +extern const u8 gMonFrontPic_UnownH[]; +extern const u8 gMonBackPic_UnownH[]; +extern const u8 gMonIcon_UnownH[]; +extern const u8 gMonFrontPic_UnownI[]; +extern const u8 gMonBackPic_UnownI[]; +extern const u8 gMonIcon_UnownI[]; +extern const u8 gMonFrontPic_UnownJ[]; +extern const u8 gMonBackPic_UnownJ[]; +extern const u8 gMonIcon_UnownJ[]; +extern const u8 gMonFrontPic_UnownK[]; +extern const u8 gMonBackPic_UnownK[]; +extern const u8 gMonIcon_UnownK[]; +extern const u8 gMonFrontPic_UnownL[]; +extern const u8 gMonBackPic_UnownL[]; +extern const u8 gMonIcon_UnownL[]; +extern const u8 gMonFrontPic_UnownM[]; +extern const u8 gMonBackPic_UnownM[]; +extern const u8 gMonIcon_UnownM[]; +extern const u8 gMonFrontPic_UnownN[]; +extern const u8 gMonBackPic_UnownN[]; +extern const u8 gMonIcon_UnownN[]; +extern const u8 gMonFrontPic_UnownO[]; +extern const u8 gMonBackPic_UnownO[]; +extern const u8 gMonIcon_UnownO[]; +extern const u8 gMonFrontPic_UnownP[]; +extern const u8 gMonBackPic_UnownP[]; +extern const u8 gMonIcon_UnownP[]; +extern const u8 gMonFrontPic_UnownQ[]; +extern const u8 gMonBackPic_UnownQ[]; +extern const u8 gMonIcon_UnownQ[]; +extern const u8 gMonFrontPic_UnownR[]; +extern const u8 gMonBackPic_UnownR[]; +extern const u8 gMonIcon_UnownR[]; +extern const u8 gMonFrontPic_UnownS[]; +extern const u8 gMonBackPic_UnownS[]; +extern const u8 gMonIcon_UnownS[]; +extern const u8 gMonFrontPic_UnownT[]; +extern const u8 gMonBackPic_UnownT[]; +extern const u8 gMonIcon_UnownT[]; +extern const u8 gMonFrontPic_UnownU[]; +extern const u8 gMonBackPic_UnownU[]; +extern const u8 gMonIcon_UnownU[]; +extern const u8 gMonFrontPic_UnownV[]; +extern const u8 gMonBackPic_UnownV[]; +extern const u8 gMonIcon_UnownV[]; +extern const u8 gMonFrontPic_UnownW[]; +extern const u8 gMonBackPic_UnownW[]; +extern const u8 gMonIcon_UnownW[]; +extern const u8 gMonFrontPic_UnownX[]; +extern const u8 gMonBackPic_UnownX[]; +extern const u8 gMonIcon_UnownX[]; +extern const u8 gMonFrontPic_UnownY[]; +extern const u8 gMonBackPic_UnownY[]; +extern const u8 gMonIcon_UnownY[]; +extern const u8 gMonFrontPic_UnownZ[]; +extern const u8 gMonBackPic_UnownZ[]; +extern const u8 gMonIcon_UnownZ[]; +extern const u8 gMonFrontPic_UnownExclamationMark[]; +extern const u8 gMonBackPic_UnownExclamationMark[]; +extern const u8 gMonIcon_UnownExclamationMark[]; +extern const u8 gMonFrontPic_UnownQuestionMark[]; +extern const u8 gMonBackPic_UnownQuestionMark[]; +extern const u8 gMonIcon_UnownQuestionMark[]; + +extern const u8 gMonIcon_QuestionMark[]; +extern const u8 gMonIcon_Egg[]; +extern const u16 gMonIconPalettes[][16]; + +// pokeblock +extern const u8 gMenuPokeblock_Gfx[]; +extern const u8 gMenuPokeblock_Pal[]; +extern const u8 gMenuPokeblock_Tilemap[]; +extern const u8 gMenuPokeblockDevice_Gfx[]; +extern const u8 gMenuPokeblockDevice_Pal[]; +extern const u8 gPokeblockRed_Pal[]; +extern const u8 gPokeblockBlue_Pal[]; +extern const u8 gPokeblockPink_Pal[]; +extern const u8 gPokeblockGreen_Pal[]; +extern const u8 gPokeblockYellow_Pal[]; +extern const u8 gPokeblockPurple_Pal[]; +extern const u8 gPokeblockIndigo_Pal[]; +extern const u8 gPokeblockBrown_Pal[]; +extern const u8 gPokeblockLiteBlue_Pal[]; +extern const u8 gPokeblockOlive_Pal[]; +extern const u8 gPokeblockGray_Pal[]; +extern const u8 gPokeblockBlack_Pal[]; +extern const u8 gPokeblockWhite_Pal[]; +extern const u8 gPokeblockGold_Pal[]; +extern const u8 gPokeblock_Gfx[]; + extern const u8 gItemIcon_QuestionMark[]; extern const u8 gItemIconPalette_QuestionMark[]; extern const u8 gUnknown_08DB7AA0[]; @@ -91,5 +2549,837 @@ extern const u8 gUnknown_08DB9F08[]; extern const u8 gUnknown_08DB9FFC[]; extern const u8 gUnknown_08DBA020[]; extern const u8 gUnknown_08DBA12C[]; +extern const u8 gWallclock_Gfx[]; +extern const u16 gWallclockMale_Pal[]; +extern const u16 gWallclockFemale_Pal[]; +extern const u8 gUnknown_08DCC648[]; +extern const u8 gUnknown_08DCC908[]; +extern const u8 gBerryFixGameboy_Gfx[]; +extern const u8 gBerryFixGameboy_Tilemap[]; +extern const u16 gBerryFixGameboy_Pal[]; +extern const u8 gBerryFixGameboyLogo_Gfx[]; +extern const u8 gBerryFixGameboyLogo_Tilemap[]; +extern const u16 gBerryFixGameboyLogo_Pal[]; +extern const u8 gBerryFixGbaTransfer_Gfx[]; +extern const u8 gBerryFixGbaTransfer_Tilemap[]; +extern const u16 gBerryFixGbaTransfer_Pal[]; +extern const u8 gBerryFixGbaTransferHighlight_Gfx[]; +extern const u8 gBerryFixGbaTransferHighlight_Tilemap[]; +extern const u16 gBerryFixGbaTransferHighlight_Pal[]; +extern const u8 gBerryFixGbaTransferError_Gfx[]; +extern const u8 gBerryFixGbaTransferError_Tilemap[]; +extern const u16 gBerryFixGbaTransferError_Pal[]; +extern const u8 gBerryFixWindow_Gfx[]; +extern const u8 gBerryFixWindow_Tilemap[]; +extern const u16 gBerryFixWindow_Pal[]; + +extern const u8 gBattleTextboxTiles[]; +extern const u8 gBattleTextboxTilemap[]; +extern const u8 gBattleTextboxPalette[]; +extern const u8 gUnknown_08D778F0[]; +extern const u8 gUnknown_08D77B0C[]; +extern const u8 gUnknown_08D77AE4[]; +extern const u8 gUnknown_08D779D8[]; +extern const u8 gUnknown_08D857A8[]; +extern const u8 gUnknown_08D85A1C[]; +extern const u8 gUnknown_08D85600[]; + +// battle terrains +extern const u8 gBattleTerrainTiles_TallGrass[]; +extern const u8 gBattleTerrainTilemap_TallGrass[]; +extern const u8 gBattleTerrainAnimTiles_TallGrass[]; +extern const u8 gBattleTerrainAnimTilemap_TallGrass[]; +extern const u8 gBattleTerrainPalette_TallGrass[]; +extern const u8 gBattleTerrainTiles_LongGrass[]; +extern const u8 gBattleTerrainTilemap_LongGrass[]; +extern const u8 gBattleTerrainAnimTiles_LongGrass[]; +extern const u8 gBattleTerrainAnimTilemap_LongGrass[]; +extern const u8 gBattleTerrainPalette_LongGrass[]; +extern const u8 gBattleTerrainTiles_Sand[]; +extern const u8 gBattleTerrainTilemap_Sand[]; +extern const u8 gBattleTerrainAnimTiles_Sand[]; +extern const u8 gBattleTerrainAnimTilemap_Sand[]; +extern const u8 gBattleTerrainPalette_Sand[]; +extern const u8 gBattleTerrainTiles_Underwater[]; +extern const u8 gBattleTerrainTilemap_Underwater[]; +extern const u8 gBattleTerrainAnimTiles_Underwater[]; +extern const u8 gBattleTerrainAnimTilemap_Underwater[]; +extern const u8 gBattleTerrainPalette_Underwater[]; +extern const u8 gBattleTerrainTiles_Water[]; +extern const u8 gBattleTerrainTilemap_Water[]; +extern const u8 gBattleTerrainAnimTiles_Water[]; +extern const u8 gBattleTerrainAnimTilemap_Water[]; +extern const u8 gBattleTerrainPalette_Water[]; +extern const u8 gBattleTerrainTiles_PondWater[]; +extern const u8 gBattleTerrainTilemap_PondWater[]; +extern const u8 gBattleTerrainAnimTiles_PondWater[]; +extern const u8 gBattleTerrainAnimTilemap_PondWater[]; +extern const u8 gBattleTerrainPalette_PondWater[]; +extern const u8 gBattleTerrainTiles_Rock[]; +extern const u8 gBattleTerrainTilemap_Rock[]; +extern const u8 gBattleTerrainAnimTiles_Rock[]; +extern const u8 gBattleTerrainAnimTilemap_Rock[]; +extern const u8 gBattleTerrainPalette_Rock[]; +extern const u8 gBattleTerrainTiles_Cave[]; +extern const u8 gBattleTerrainTilemap_Cave[]; +extern const u8 gBattleTerrainAnimTiles_Cave[]; +extern const u8 gBattleTerrainAnimTilemap_Cave[]; +extern const u8 gBattleTerrainPalette_Cave[]; +extern const u8 gBattleTerrainTiles_Building[]; +extern const u8 gBattleTerrainTilemap_Building[]; +extern const u8 gBattleTerrainAnimTiles_Building[]; +extern const u8 gBattleTerrainAnimTilemap_Building[]; +extern const u8 gBattleTerrainPalette_Building[]; +extern const u8 gBattleTerrainPalette_Plain[]; +extern const u8 gBattleTerrainPalette_Frontier[]; +extern const u8 gBattleTerrainTiles_Stadium[]; +extern const u8 gBattleTerrainTilemap_Stadium[]; +extern const u8 gBattleTerrainTiles_Rayquaza[]; +extern const u8 gBattleTerrainTilemap_Rayquaza[]; +extern const u8 gBattleTerrainAnimTiles_Rayquaza[]; +extern const u8 gBattleTerrainAnimTilemap_Rayquaza[]; +extern const u8 gBattleTerrainPalette_Rayquaza[]; +extern const u8 gBattleTerrainPalette_Kyogre[]; +extern const u8 gBattleTerrainPalette_Groudon[]; +extern const u8 gBattleTerrainPalette_BuildingGym[]; +extern const u8 gBattleTerrainPalette_BuildingLeader[]; +extern const u8 gBattleTerrainPalette_StadiumAqua[]; +extern const u8 gBattleTerrainPalette_StadiumMagma[]; +extern const u8 gBattleTerrainPalette_StadiumSidney[]; +extern const u8 gBattleTerrainPalette_StadiumPhoebe[]; +extern const u8 gBattleTerrainPalette_StadiumGlacia[]; +extern const u8 gBattleTerrainPalette_StadiumDrake[]; +extern const u8 gBattleTerrainPalette_StadiumWallace[]; + +// pokedex +extern const u8 gPokedexMenu2_Gfx[]; +extern const u16 gPokedexText_Pal[]; +extern const u8 gPokedexMenu_Gfx[]; +extern const u8 gUnknown_08DC2C5C[]; +extern const u8 gUnknown_08DC2DAC[]; +extern const u8 gUnknown_08DC2A08[]; +extern const u8 gUnknown_08DC2B1C[]; +extern const u16 gPokedexHoennBg_Pal[]; +extern const u16 gPokedexText_Pal[]; +extern const u16 gPokedexNationalBg_Pal[]; +extern const u8 gUnknown_08DC3080[]; +extern const u8 gUnknown_08DC3198[]; +extern const u8 gUnknown_08DC2E6C[]; +extern const u8 gUnknown_08DC2F5C[]; +extern const u8 gUnknown_08DC2FEC[]; +extern const u16 gPokedexCaughtScreenFade_Pal[]; +extern const u8 gPokedexSearchMenu_Gfx[]; +extern const u8 gPokedexSearch2_Tilemap[]; +extern const u8 gPokedexSearch1_Tilemap[]; +extern const u16 gPokedexSearchMenu_Pal[]; + +// berry tag screen +extern const u8 gUnknown_08D9BB44[]; +extern const u8 gUnknown_08D9BF98[]; +extern const u8 gUnknown_08D9C13C[]; +extern const u8 gUnknown_08D9BEF0[]; + +// rayquaza scene gfx +extern const u8 gRaySceneGroudon_Gfx[]; +extern const u8 gRaySceneGroudon2_Gfx[]; +extern const u8 gRaySceneGroudon3_Gfx[]; +extern const u8 gRaySceneKyogre_Gfx[]; +extern const u8 gRaySceneKyogre2_Gfx[]; +extern const u8 gRaySceneKyogre3_Gfx[]; +extern const u8 gRaySceneGroudon_Pal[]; +extern const u8 gRaySceneKyogre_Pal[]; +extern const u8 gRaySceneSmoke_Gfx[]; +extern const u8 gRaySceneSmoke_Pal[]; +extern const u8 gRaySceneRayquaza_Pal[]; +extern const u8 gRaySceneRayquazaFly1_Gfx[]; +extern const u8 gRaySceneRayquazaTail_Gfx[]; +extern const u8 gRaySceneGroudonLeft_Gfx[]; +extern const u8 gRaySceneGroudonTail_Gfx[]; +extern const u8 gRaySceneKyogreRight_Gfx[]; +extern const u8 gRaySceneRayquazaHover_Gfx[]; +extern const u8 gRaySceneRayquazaFlyIn_Gfx[]; +extern const u8 gRaySceneOvercast_Gfx[]; +extern const u8 gRaySceneOvercast_Tilemap[]; +extern const u8 gRaySceneRayquaza_Gfx[]; +extern const u8 gRaySceneRayquaza_Tilemap[]; +extern const u8 gRaySceneSplash_Gfx[]; +extern const u8 gRaySceneGroudonLeft_Pal[]; +extern const u8 gRaySceneKyogreRight_Pal[]; +extern const u8 gRaySceneRayquazaHover_Pal[]; +extern const u8 gRaySceneSplash_Pal[]; +extern const u8 gRaySceneClouds_Gfx[]; +extern const u8 gRaySceneClouds_Pal[]; +extern const u8 gRaySceneClouds2_Tilemap[]; +extern const u8 gRaySceneClouds1_Tilemap[]; +extern const u8 gRaySceneClouds3_Tilemap[]; +extern const u8 gRaySceneRayquazaLight_Gfx[]; +extern const u8 gRaySceneRayquazaLight_Tilemap[]; +extern const u8 gRaySceneOvercast2_Gfx[]; +extern const u8 gRaySceneOvercast2_Tilemap[]; +extern const u8 gRaySceneOvercast2_Pal[]; +extern const u8 gRaySceneRayquazaChase_Gfx[]; +extern const u8 gRaySceneChaseStreaks_Gfx[]; +extern const u8 gRaySceneChaseBg_Gfx[]; +extern const u8 gRayChaseRayquazaChase2_Tilemap[]; +extern const u8 gRayChaseRayquazaChase_Tilemap[]; +extern const u8 gRaySceneChaseStreaks_Tilemap[]; +extern const u8 gRaySceneChaseBg_Tilemap[]; +extern const u8 gRaySceneChase_Pal[]; +extern const u8 gRaySceneHushRing_Tilemap[]; +extern const u8 gRaySceneHushBg_Tilemap[]; +extern const u8 gRaySceneHushRing_Map[]; +extern const u8 gRaySceneHushBg_Pal[]; +extern const u8 gRaySceneHushBg_Gfx[]; +extern const u8 gRaySceneHushRing_Gfx[]; + +// Item icons +extern const u8 gItemIcon_QuestionMark[]; +extern const u8 gItemIconPalette_QuestionMark[]; +// Pokeballs +extern const u8 gItemIcon_MasterBall[]; +extern const u8 gItemIconPalette_MasterBall[]; +extern const u8 gItemIcon_UltraBall[]; +extern const u8 gItemIconPalette_UltraBall[]; +extern const u8 gItemIcon_GreatBall[]; +extern const u8 gItemIconPalette_GreatBall[]; +extern const u8 gItemIcon_PokeBall[]; +extern const u8 gItemIconPalette_PokeBall[]; +extern const u8 gItemIcon_SafariBall[]; +extern const u8 gItemIconPalette_SafariBall[]; +extern const u8 gItemIcon_NetBall[]; +extern const u8 gItemIconPalette_NetBall[]; +extern const u8 gItemIcon_DiveBall[]; +extern const u8 gItemIconPalette_DiveBall[]; +extern const u8 gItemIcon_NestBall[]; +extern const u8 gItemIconPalette_NestBall[]; +extern const u8 gItemIcon_RepeatBall[]; +extern const u8 gItemIconPalette_RepeatBall[]; +extern const u8 gItemIcon_TimerBall[]; +extern const u8 gItemIcon_LuxuryBall[]; +extern const u8 gItemIconPalette_LuxuryBall[]; +extern const u8 gItemIcon_PremierBall[]; +// Medicine +extern const u8 gItemIcon_Potion[]; +extern const u8 gItemIconPalette_Potion[]; +extern const u8 gItemIcon_Antidote[]; +extern const u8 gItemIconPalette_Antidote[]; +extern const u8 gItemIcon_StatusHeal[]; +extern const u8 gItemIconPalette_BurnHeal[]; +extern const u8 gItemIconPalette_IceHeal[]; +extern const u8 gItemIconPalette_Awakening[]; +extern const u8 gItemIconPalette_ParalyzeHeal[]; +extern const u8 gItemIcon_LargePotion[]; +extern const u8 gItemIconPalette_FullRestore[]; +extern const u8 gItemIconPalette_MaxPotion[]; +extern const u8 gItemIconPalette_HyperPotion[]; +extern const u8 gItemIconPalette_SuperPotion[]; +extern const u8 gItemIcon_FullHeal[]; +extern const u8 gItemIconPalette_FullHeal[]; +extern const u8 gItemIcon_Revive[]; +extern const u8 gItemIconPalette_Revive[]; +extern const u8 gItemIcon_MaxRevive[]; +extern const u8 gItemIcon_FreshWater[]; +extern const u8 gItemIconPalette_FreshWater[]; +extern const u8 gItemIcon_SodaPop[]; +extern const u8 gItemIconPalette_SodaPop[]; +extern const u8 gItemIcon_Lemonade[]; +extern const u8 gItemIconPalette_Lemonade[]; +extern const u8 gItemIcon_MoomooMilk[]; +extern const u8 gItemIconPalette_MoomooMilk[]; +extern const u8 gItemIcon_Powder[]; +extern const u8 gItemIconPalette_EnergyPowder[]; +extern const u8 gItemIcon_EnergyRoot[]; +extern const u8 gItemIconPalette_EnergyRoot[]; +extern const u8 gItemIconPalette_HealPowder[]; +extern const u8 gItemIcon_RevivalHerb[]; +extern const u8 gItemIconPalette_RevivalHerb[]; +extern const u8 gItemIcon_Ether[]; +extern const u8 gItemIconPalette_Ether[]; +extern const u8 gItemIconPalette_MaxEther[]; +extern const u8 gItemIconPalette_Elixir[]; +extern const u8 gItemIconPalette_MaxElixir[]; +extern const u8 gItemIcon_LavaCookie[]; +extern const u8 gItemIconPalette_LavaCookieAndLetter[]; +extern const u8 gItemIcon_Flute[]; +extern const u8 gItemIconPalette_BlueFlute[]; +extern const u8 gItemIconPalette_YellowFlute[]; +extern const u8 gItemIconPalette_RedFlute[]; +extern const u8 gItemIconPalette_BlackFlute[]; +extern const u8 gItemIconPalette_WhiteFlute[]; +extern const u8 gItemIcon_BerryJuice[]; +extern const u8 gItemIconPalette_BerryJuice[]; +extern const u8 gItemIcon_SacredAsh[]; +extern const u8 gItemIconPalette_SacredAsh[]; +// Collectibles +extern const u8 gItemIconPalette_ShoalSalt[]; +extern const u8 gItemIcon_ShoalShell[]; +extern const u8 gItemIconPalette_Shell[]; +extern const u8 gItemIcon_Shard[]; +extern const u8 gItemIconPalette_RedShard[]; +extern const u8 gItemIconPalette_BlueShard[]; +extern const u8 gItemIconPalette_YellowShard[]; +extern const u8 gItemIconPalette_GreenShard[]; +// Vitamins +extern const u8 gItemIcon_HPUp[]; +extern const u8 gItemIconPalette_HPUp[]; +extern const u8 gItemIcon_Vitamin[]; +extern const u8 gItemIconPalette_Protein[]; +extern const u8 gItemIconPalette_Iron[]; +extern const u8 gItemIconPalette_Carbos[]; +extern const u8 gItemIconPalette_Calcium[]; +extern const u8 gItemIcon_RareCandy[]; +extern const u8 gItemIconPalette_RareCandy[]; +extern const u8 gItemIcon_PPUp[]; +extern const u8 gItemIconPalette_PPUp[]; +extern const u8 gItemIconPalette_Zinc[]; +extern const u8 gItemIcon_PPMax[]; +extern const u8 gItemIconPalette_PPMax[]; +// Battle items +extern const u8 gItemIcon_BattleStatItem[]; +extern const u8 gItemIconPalette_GuardSpec[]; +extern const u8 gItemIconPalette_DireHit[]; +extern const u8 gItemIconPalette_XAttack[]; +extern const u8 gItemIconPalette_XDefend[]; +extern const u8 gItemIconPalette_XSpeed[]; +extern const u8 gItemIconPalette_XAccuracy[]; +extern const u8 gItemIconPalette_XSpecial[]; +extern const u8 gItemIcon_PokeDoll[]; +extern const u8 gItemIconPalette_PokeDoll[]; +extern const u8 gItemIcon_FluffyTail[]; +extern const u8 gItemIconPalette_FluffyTail[]; +// Field items +extern const u8 gItemIcon_Repel[]; +extern const u8 gItemIconPalette_SuperRepel[]; +extern const u8 gItemIconPalette_MaxRepel[]; +extern const u8 gItemIcon_EscapeRope[]; +extern const u8 gItemIconPalette_EscapeRope[]; +extern const u8 gItemIcon_Repel[]; +extern const u8 gItemIconPalette_Repel[]; +// Evolution stones +extern const u8 gItemIcon_SunStone[]; +extern const u8 gItemIconPalette_SunStone[]; +extern const u8 gItemIcon_MoonStone[]; +extern const u8 gItemIconPalette_MoonStone[]; +extern const u8 gItemIcon_FireStone[]; +extern const u8 gItemIconPalette_FireStone[]; +extern const u8 gItemIcon_ThunderStone[]; +extern const u8 gItemIconPalette_ThunderStone[]; +extern const u8 gItemIcon_WaterStone[]; +extern const u8 gItemIconPalette_WaterStone[]; +extern const u8 gItemIcon_LeafStone[]; +extern const u8 gItemIconPalette_LeafStone[]; +// Valuables +extern const u8 gItemIcon_TinyMushroom[]; +extern const u8 gItemIconPalette_Mushroom[]; +extern const u8 gItemIcon_BigMushroom[]; +extern const u8 gItemIcon_Pearl[]; +extern const u8 gItemIconPalette_Pearl[]; +extern const u8 gItemIcon_BigPearl[]; +extern const u8 gItemIcon_Stardust[]; +extern const u8 gItemIconPalette_Star[]; +extern const u8 gItemIcon_StarPiece[]; +extern const u8 gItemIcon_Nugget[]; +extern const u8 gItemIconPalette_Nugget[]; +extern const u8 gItemIcon_HeartScale[]; +extern const u8 gItemIconPalette_HeartScale[]; +// Mail +extern const u8 gItemIcon_OrangeMail[]; +extern const u8 gItemIconPalette_OrangeMail[]; +extern const u8 gItemIcon_HarborMail[]; +extern const u8 gItemIconPalette_HarborMail[]; +extern const u8 gItemIcon_GlitterMail[]; +extern const u8 gItemIconPalette_GlitterMail[]; +extern const u8 gItemIcon_MechMail[]; +extern const u8 gItemIconPalette_MechMail[]; +extern const u8 gItemIcon_WoodMail[]; +extern const u8 gItemIconPalette_WoodMail[]; +extern const u8 gItemIcon_WaveMail[]; +extern const u8 gItemIconPalette_WaveMail[]; +extern const u8 gItemIcon_BeadMail[]; +extern const u8 gItemIconPalette_BeadMail[]; +extern const u8 gItemIcon_ShadowMail[]; +extern const u8 gItemIconPalette_ShadowMail[]; +extern const u8 gItemIcon_TropicMail[]; +extern const u8 gItemIconPalette_TropicMail[]; +extern const u8 gItemIcon_DreamMail[]; +extern const u8 gItemIconPalette_DreamMail[]; +extern const u8 gItemIcon_FabMail[]; +extern const u8 gItemIconPalette_FabMail[]; +extern const u8 gItemIcon_RetroMail[]; +extern const u8 gItemIconPalette_RetroMail[]; +// Berries +extern const u8 gItemIcon_CheriBerry[]; +extern const u8 gItemIconPalette_CheriBerry[]; +extern const u8 gItemIcon_ChestoBerry[]; +extern const u8 gItemIconPalette_ChestoBerry[]; +extern const u8 gItemIcon_PechaBerry[]; +extern const u8 gItemIconPalette_PechaBerry[]; +extern const u8 gItemIcon_RawstBerry[]; +extern const u8 gItemIconPalette_RawstBerry[]; +extern const u8 gItemIcon_AspearBerry[]; +extern const u8 gItemIconPalette_AspearBerry[]; +extern const u8 gItemIcon_LeppaBerry[]; +extern const u8 gItemIconPalette_LeppaBerry[]; +extern const u8 gItemIcon_OranBerry[]; +extern const u8 gItemIconPalette_OranBerry[]; +extern const u8 gItemIcon_PersimBerry[]; +extern const u8 gItemIconPalette_PersimBerry[]; +extern const u8 gItemIcon_LumBerry[]; +extern const u8 gItemIconPalette_LumBerry[]; +extern const u8 gItemIcon_SitrusBerry[]; +extern const u8 gItemIconPalette_SitrusBerry[]; +extern const u8 gItemIcon_FigyBerry[]; +extern const u8 gItemIconPalette_FigyBerry[]; +extern const u8 gItemIcon_WikiBerry[]; +extern const u8 gItemIconPalette_WikiBerry[]; +extern const u8 gItemIcon_MagoBerry[]; +extern const u8 gItemIconPalette_MagoBerry[]; +extern const u8 gItemIcon_AguavBerry[]; +extern const u8 gItemIconPalette_AguavBerry[]; +extern const u8 gItemIcon_IapapaBerry[]; +extern const u8 gItemIconPalette_IapapaBerry[]; +extern const u8 gItemIcon_RazzBerry[]; +extern const u8 gItemIconPalette_RazzBerry[]; +extern const u8 gItemIcon_BlukBerry[]; +extern const u8 gItemIconPalette_BlukBerry[]; +extern const u8 gItemIcon_NanabBerry[]; +extern const u8 gItemIconPalette_NanabBerry[]; +extern const u8 gItemIcon_WepearBerry[]; +extern const u8 gItemIconPalette_WepearBerry[]; +extern const u8 gItemIcon_PinapBerry[]; +extern const u8 gItemIconPalette_PinapBerry[]; +extern const u8 gItemIcon_PomegBerry[]; +extern const u8 gItemIconPalette_PomegBerry[]; +extern const u8 gItemIcon_KelpsyBerry[]; +extern const u8 gItemIconPalette_KelpsyBerry[]; +extern const u8 gItemIcon_QualotBerry[]; +extern const u8 gItemIconPalette_QualotBerry[]; +extern const u8 gItemIcon_HondewBerry[]; +extern const u8 gItemIconPalette_HondewBerry[]; +extern const u8 gItemIcon_GrepaBerry[]; +extern const u8 gItemIconPalette_GrepaBerry[]; +extern const u8 gItemIcon_TamatoBerry[]; +extern const u8 gItemIconPalette_TamatoBerry[]; +extern const u8 gItemIcon_CornnBerry[]; +extern const u8 gItemIconPalette_CornnBerry[]; +extern const u8 gItemIcon_MagostBerry[]; +extern const u8 gItemIconPalette_MagostBerry[]; +extern const u8 gItemIcon_RabutaBerry[]; +extern const u8 gItemIconPalette_RabutaBerry[]; +extern const u8 gItemIcon_NomelBerry[]; +extern const u8 gItemIconPalette_NomelBerry[]; +extern const u8 gItemIcon_SpelonBerry[]; +extern const u8 gItemIconPalette_SpelonBerry[]; +extern const u8 gItemIcon_PamtreBerry[]; +extern const u8 gItemIconPalette_PamtreBerry[]; +extern const u8 gItemIcon_WatmelBerry[]; +extern const u8 gItemIconPalette_WatmelBerry[]; +extern const u8 gItemIcon_DurinBerry[]; +extern const u8 gItemIconPalette_DurinBerry[]; +extern const u8 gItemIcon_BelueBerry[]; +extern const u8 gItemIconPalette_BelueBerry[]; +extern const u8 gItemIcon_LiechiBerry[]; +extern const u8 gItemIconPalette_LiechiBerry[]; +extern const u8 gItemIcon_GanlonBerry[]; +extern const u8 gItemIconPalette_GanlonBerry[]; +extern const u8 gItemIcon_SalacBerry[]; +extern const u8 gItemIconPalette_SalacBerry[]; +extern const u8 gItemIcon_PetayaBerry[]; +extern const u8 gItemIconPalette_PetayaBerry[]; +extern const u8 gItemIcon_ApicotBerry[]; +extern const u8 gItemIconPalette_ApicotBerry[]; +extern const u8 gItemIcon_LansatBerry[]; +extern const u8 gItemIconPalette_LansatBerry[]; +extern const u8 gItemIcon_StarfBerry[]; +extern const u8 gItemIconPalette_StarfBerry[]; +extern const u8 gItemIcon_EnigmaBerry[]; +extern const u8 gItemIconPalette_EnigmaBerry[]; +// Hold items +extern const u8 gItemIcon_BrightPowder[]; +extern const u8 gItemIconPalette_BrightPowder[]; +extern const u8 gItemIcon_InBattleHerb[]; +extern const u8 gItemIconPalette_WhiteHerb[]; +extern const u8 gItemIcon_MachoBrace[]; +extern const u8 gItemIconPalette_MachoBrace[]; +extern const u8 gItemIcon_ExpShare[]; +extern const u8 gItemIconPalette_ExpShare[]; +extern const u8 gItemIcon_QuickClaw[]; +extern const u8 gItemIconPalette_QuickClaw[]; +extern const u8 gItemIcon_SootheBell[]; +extern const u8 gItemIconPalette_SootheBell[]; +extern const u8 gItemIcon_InBattleHerb[]; +extern const u8 gItemIconPalette_MentalHerb[]; +extern const u8 gItemIcon_ChoiceBand[]; +extern const u8 gItemIconPalette_ChoiceBand[]; +extern const u8 gItemIcon_KingsRock[]; +extern const u8 gItemIconPalette_KingsRock[]; +extern const u8 gItemIcon_SilverPowder[]; +extern const u8 gItemIconPalette_SilverPowder[]; +extern const u8 gItemIcon_AmuletCoin[]; +extern const u8 gItemIconPalette_AmuletCoin[]; +extern const u8 gItemIcon_CleanseTag[]; +extern const u8 gItemIconPalette_CleanseTag[]; +extern const u8 gItemIcon_SoulDew[]; +extern const u8 gItemIconPalette_SoulDew[]; +extern const u8 gItemIcon_DeepSeaTooth[]; +extern const u8 gItemIconPalette_DeepSeaTooth[]; +extern const u8 gItemIcon_DeepSeaScale[]; +extern const u8 gItemIconPalette_DeepSeaScale[]; +extern const u8 gItemIcon_SmokeBall[]; +extern const u8 gItemIconPalette_SmokeBall[]; +extern const u8 gItemIcon_Everstone[]; +extern const u8 gItemIconPalette_Everstone[]; +extern const u8 gItemIcon_FocusBand[]; +extern const u8 gItemIconPalette_FocusBand[]; +extern const u8 gItemIcon_LuckyEgg[]; +extern const u8 gItemIconPalette_LuckyEgg[]; +extern const u8 gItemIcon_ScopeLens[]; +extern const u8 gItemIconPalette_ScopeLens[]; +extern const u8 gItemIcon_MetalCoat[]; +extern const u8 gItemIconPalette_MetalCoat[]; +extern const u8 gItemIcon_Leftovers[]; +extern const u8 gItemIconPalette_Leftovers[]; +extern const u8 gItemIcon_DragonScale[]; +extern const u8 gItemIconPalette_DragonScale[]; +extern const u8 gItemIcon_LightBall[]; +extern const u8 gItemIconPalette_LightBall[]; +extern const u8 gItemIcon_SoftSand[]; +extern const u8 gItemIconPalette_SoftSand[]; +extern const u8 gItemIcon_HardStone[]; +extern const u8 gItemIconPalette_HardStone[]; +extern const u8 gItemIcon_MiracleSeed[]; +extern const u8 gItemIconPalette_MiracleSeed[]; +extern const u8 gItemIcon_BlackGlasses[]; +extern const u8 gItemIconPalette_BlackTypeEnhancingItem[]; +extern const u8 gItemIcon_BlackBelt[]; +extern const u8 gItemIconPalette_BlackTypeEnhancingItem[]; +extern const u8 gItemIcon_Magnet[]; +extern const u8 gItemIconPalette_Magnet[]; +extern const u8 gItemIcon_MysticWater[]; +extern const u8 gItemIconPalette_MysticWater[]; +extern const u8 gItemIcon_SharpBeak[]; +extern const u8 gItemIconPalette_SharpBeak[]; +extern const u8 gItemIcon_PoisonBarb[]; +extern const u8 gItemIconPalette_PoisonBarb[]; +extern const u8 gItemIcon_NeverMeltIce[]; +extern const u8 gItemIconPalette_NeverMeltIce[]; +extern const u8 gItemIcon_SpellTag[]; +extern const u8 gItemIconPalette_SpellTag[]; +extern const u8 gItemIcon_TwistedSpoon[]; +extern const u8 gItemIconPalette_TwistedSpoon[]; +extern const u8 gItemIcon_Charcoal[]; +extern const u8 gItemIconPalette_Charcoal[]; +extern const u8 gItemIcon_DragonFang[]; +extern const u8 gItemIconPalette_DragonFang[]; +extern const u8 gItemIcon_SilkScarf[]; +extern const u8 gItemIconPalette_SilkScarf[]; +extern const u8 gItemIcon_UpGrade[]; +extern const u8 gItemIconPalette_UpGrade[]; +extern const u8 gItemIcon_ShellBell[]; +extern const u8 gItemIconPalette_Shell[]; +extern const u8 gItemIcon_SeaIncense[]; +extern const u8 gItemIconPalette_SeaIncense[]; +extern const u8 gItemIcon_LaxIncense[]; +extern const u8 gItemIconPalette_LaxIncense[]; +extern const u8 gItemIcon_LuckyPunch[]; +extern const u8 gItemIconPalette_LuckyPunch[]; +extern const u8 gItemIcon_MetalPowder[]; +extern const u8 gItemIconPalette_MetalPowder[]; +extern const u8 gItemIcon_ThickClub[]; +extern const u8 gItemIconPalette_ThickClub[]; +extern const u8 gItemIcon_Stick[]; +extern const u8 gItemIconPalette_Stick[]; +// Contest hold items +extern const u8 gItemIcon_Scarf[]; +extern const u8 gItemIconPalette_RedScarf[]; +extern const u8 gItemIconPalette_BlueScarf[]; +extern const u8 gItemIconPalette_PinkScarf[]; +extern const u8 gItemIconPalette_GreenScarf[]; +extern const u8 gItemIconPalette_YellowScarf[]; +// Key items +extern const u8 gItemIcon_MachBike[]; +extern const u8 gItemIconPalette_MachBike[]; +extern const u8 gItemIcon_CoinCase[]; +extern const u8 gItemIconPalette_CoinCase[]; +extern const u8 gItemIcon_Itemfinder[]; +extern const u8 gItemIconPalette_Itemfinder[]; +extern const u8 gItemIcon_OldRod[]; +extern const u8 gItemIconPalette_OldRod[]; +extern const u8 gItemIcon_GoodRod[]; +extern const u8 gItemIconPalette_GoodRod[]; +extern const u8 gItemIcon_SuperRod[]; +extern const u8 gItemIconPalette_SuperRod[]; +extern const u8 gItemIcon_SSTicket[]; +extern const u8 gItemIconPalette_SSTicket[]; +extern const u8 gItemIcon_ContestPass[]; +extern const u8 gItemIconPalette_ContestPass[]; +extern const u8 gItemIcon_WailmerPail[]; +extern const u8 gItemIconPalette_WailmerPail[]; +extern const u8 gItemIcon_DevonGoods[]; +extern const u8 gItemIconPalette_DevonGoods[]; +extern const u8 gItemIcon_SootSack[]; +extern const u8 gItemIconPalette_SootSack[]; +extern const u8 gItemIcon_BasementKey[]; +extern const u8 gItemIconPalette_OldKey[]; +extern const u8 gItemIcon_AcroBike[]; +extern const u8 gItemIconPalette_AcroBike[]; +extern const u8 gItemIcon_PokeblockCase[]; +extern const u8 gItemIconPalette_PokeblockCase[]; +extern const u8 gItemIcon_Letter[]; +extern const u8 gItemIcon_EonTicket[]; +extern const u8 gItemIconPalette_EonTicket[]; +extern const u8 gItemIcon_Orb[]; +extern const u8 gItemIconPalette_RedOrb[]; +extern const u8 gItemIconPalette_BlueOrb[]; +extern const u8 gItemIcon_Scanner[]; +extern const u8 gItemIconPalette_Scanner[]; +extern const u8 gItemIcon_GoGoggles[]; +extern const u8 gItemIconPalette_GoGoggles[]; +extern const u8 gItemIcon_Meteorite[]; +extern const u8 gItemIconPalette_Meteorite[]; +extern const u8 gItemIcon_Room1Key[]; +extern const u8 gItemIconPalette_Key[]; +extern const u8 gItemIcon_Room2Key[]; +extern const u8 gItemIcon_Room4Key[]; +extern const u8 gItemIcon_Room6Key[]; +extern const u8 gItemIcon_StorageKey[]; +extern const u8 gItemIcon_RootFossil[]; +extern const u8 gItemIconPalette_HoennFossil[]; +extern const u8 gItemIcon_ClawFossil[]; +extern const u8 gItemIcon_DevonScope[]; +extern const u8 gItemIconPalette_DevonScope[]; +// TMs/HMs +extern const u8 gItemIcon_TM[]; +extern const u8 gItemIconPalette_FightingTMHM[]; +extern const u8 gItemIconPalette_DragonTMHM[]; +extern const u8 gItemIconPalette_WaterTMHM[]; +extern const u8 gItemIconPalette_PsychicTMHM[]; +extern const u8 gItemIconPalette_NormalTMHM[]; +extern const u8 gItemIconPalette_PoisonTMHM[]; +extern const u8 gItemIconPalette_IceTMHM[]; +extern const u8 gItemIconPalette_GrassTMHM[]; +extern const u8 gItemIconPalette_FireTMHM[]; +extern const u8 gItemIconPalette_DarkTMHM[]; +extern const u8 gItemIconPalette_SteelTMHM[]; +extern const u8 gItemIconPalette_ElectricTMHM[]; +extern const u8 gItemIconPalette_GroundTMHM[]; +extern const u8 gItemIconPalette_GhostTMHM[]; +extern const u8 gItemIconPalette_RockTMHM[]; +extern const u8 gItemIconPalette_FlyingTMHM[]; +extern const u8 gItemIcon_HM[]; +// FireRed/LeafGreen key items +extern const u8 gItemIcon_OaksParcel[]; +extern const u8 gItemIconPalette_OaksParcel[]; +extern const u8 gItemIcon_PokeFlute[]; +extern const u8 gItemIconPalette_PokeFlute[]; +extern const u8 gItemIcon_SecretKey[]; +extern const u8 gItemIconPalette_SecretKey[]; +extern const u8 gItemIcon_BikeVoucher[]; +extern const u8 gItemIconPalette_BikeVoucher[]; +extern const u8 gItemIcon_GoldTeeth[]; +extern const u8 gItemIconPalette_GoldTeeth[]; +extern const u8 gItemIcon_OldAmber[]; +extern const u8 gItemIconPalette_OldAmber[]; +extern const u8 gItemIcon_CardKey[]; +extern const u8 gItemIconPalette_CardKey[]; +extern const u8 gItemIcon_LiftKey[]; +extern const u8 gItemIconPalette_Key[]; +extern const u8 gItemIcon_HelixFossil[]; +extern const u8 gItemIconPalette_KantoFossil[]; +extern const u8 gItemIcon_DomeFossil[]; +extern const u8 gItemIcon_SilphScope[]; +extern const u8 gItemIconPalette_SilphScope[]; +extern const u8 gItemIcon_Bicycle[]; +extern const u8 gItemIconPalette_Bicycle[]; +extern const u8 gItemIcon_TownMap[]; +extern const u8 gItemIconPalette_TownMap[]; +extern const u8 gItemIcon_VSSeeker[]; +extern const u8 gItemIconPalette_VSSeeker[]; +extern const u8 gItemIcon_FameChecker[]; +extern const u8 gItemIconPalette_FameChecker[]; +extern const u8 gItemIcon_TMCase[]; +extern const u8 gItemIconPalette_TMCase[]; +extern const u8 gItemIcon_BerryPouch[]; +extern const u8 gItemIconPalette_BerryPouch[]; +extern const u8 gItemIcon_TeachyTV[]; +extern const u8 gItemIconPalette_TeachyTV[]; +extern const u8 gItemIcon_TriPass[]; +extern const u8 gItemIconPalette_TriPass[]; +extern const u8 gItemIcon_RainbowPass[]; +extern const u8 gItemIconPalette_RainbowPass[]; +extern const u8 gItemIcon_Tea[]; +extern const u8 gItemIconPalette_Tea[]; +extern const u8 gItemIcon_MysticTicket[]; +extern const u8 gItemIconPalette_MysticTicket[]; +extern const u8 gItemIcon_AuroraTicket[]; +extern const u8 gItemIconPalette_AuroraTicket[]; +extern const u8 gItemIcon_PowderJar[]; +extern const u8 gItemIconPalette_PowderJar[]; +extern const u8 gItemIcon_Gem[]; +extern const u8 gItemIconPalette_Ruby[]; +extern const u8 gItemIconPalette_Sapphire[]; +// Emerald-only key items +extern const u8 gItemIcon_MagmaEmblem[]; +extern const u8 gItemIconPalette_MagmaEmblem[]; +extern const u8 gItemIcon_OldSeaMap[]; +extern const u8 gItemIconPalette_OldSeaMap[]; + +extern const u8 gItemIcon_ReturnToFieldArrow[]; +extern const u8 gItemIconPalette_ReturnToFieldArrow[]; + +//menu graphics +extern const u16 gFireRedMenuElements1_Pal[16]; +extern const u16 gFireRedMenuElements2_Pal[16]; +extern const u16 gFireRedMenuElements3_Pal[16]; +extern const u8 gFireRedMenuElements_Gfx[]; + +// item menu graphics +extern const u8 gBagScreen_Gfx[]; +extern const u16 gBagScreenFemale_Pal[]; +extern const u16 gBagScreenMale_Pal[]; +extern const u8 gBagMenuHMIcon_Gfx[]; + +// item menu icons graphics +extern const u8 gBagMaleTiles[]; +extern const u8 gBagFemaleTiles[]; +extern const u8 gBagPalette[]; +extern const u8 gBerryCheckCircle_Gfx[]; + +//intro graphics +extern const u8 gIntro1SparkleGfx[]; +extern const u8 gIntro1FlygonGfx[]; +extern const u16 gIntro3LightningPal[]; +extern const u8 gIntroCopyright_Gfx[]; +extern const u8 gIntroCopyright_Tilemap[]; +extern const u16 gIntroCopyright_Pal[16]; +extern const u8 gIntro2VolbeatGfx[]; +extern const u8 gIntro2TorchicGfx[]; +extern const u8 gIntro2ManectricGfx[]; +extern const u16 gIntro2VolbeatPal[]; +extern const u16 gIntro2TorchicPal[]; +extern const u16 gIntro2ManectricPal[]; +extern const u8 gIntro2BubblesGfx[]; +extern const u16 gIntro2BubblesPal[]; +extern const u8 gIntro3LightningGfx[]; +extern const u8 gIntro3GroudonGfx[]; +extern const u8 gIntro3GroudonTilemap[]; +extern const u8 gIntro3LegendBgGfx[]; +extern const u8 gIntro3GroudonBgTilemap[]; +extern const u8 gIntro3GroudonBgTilemap[]; +extern const u8 gIntro3BgPal[0x200]; +extern const u8 gIntro3KyogreGfx[]; +extern const u8 gIntro3KyogreTilemap[]; +extern const u8 gIntro3KyogreBgTilemap[]; +extern const u8 gIntro3CloudsGfx[]; +extern const u8 gIntro3Clouds1Tilemap[]; +extern const u8 gIntro3Clouds2Tilemap[]; +extern const u8 gIntro3Clouds3Tilemap[]; +extern const u8 gIntro3Clouds4Tilemap[]; +extern const u8 gIntro3RayquazaTilemap[]; +extern const u8 gIntro3RayquazaGfx[]; +extern const u8 gIntro3Clouds2Gfx[]; +extern const u16 gIntro1GameFreakTextFadePal[]; + +//intro/credits graphics +extern const u8 gIntro2BrendanNoTurnGfx[]; +extern const u8 gIntro2MayNoTurnGfx[]; +extern const u16 gIntro2BrendanNoTurnPal[]; +extern const u16 gIntro2FlygonPal[]; +extern const u8 gIntro2FlygonGfx[]; + +// berry pics +extern const u8 gBerryPic_Cheri[]; +extern const u8 gBerryPalette_Cheri[]; +extern const u8 gBerryPic_Chesto[]; +extern const u8 gBerryPalette_Chesto[]; +extern const u8 gBerryPic_Pecha[]; +extern const u8 gBerryPalette_Pecha[]; +extern const u8 gBerryPic_Rawst[]; +extern const u8 gBerryPalette_Rawst[]; +extern const u8 gBerryPic_Aspear[]; +extern const u8 gBerryPalette_Aspear[]; +extern const u8 gBerryPic_Leppa[]; +extern const u8 gBerryPalette_Leppa[]; +extern const u8 gBerryPic_Oran[]; +extern const u8 gBerryPalette_Oran[]; +extern const u8 gBerryPic_Persim[]; +extern const u8 gBerryPalette_Persim[]; +extern const u8 gBerryPic_Lum[]; +extern const u8 gBerryPalette_Lum[]; +extern const u8 gBerryPic_Sitrus[]; +extern const u8 gBerryPalette_Sitrus[]; +extern const u8 gBerryPic_Figy[]; +extern const u8 gBerryPalette_Figy[]; +extern const u8 gBerryPic_Wiki[]; +extern const u8 gBerryPalette_Wiki[]; +extern const u8 gBerryPic_Mago[]; +extern const u8 gBerryPalette_Mago[]; +extern const u8 gBerryPic_Aguav[]; +extern const u8 gBerryPalette_Aguav[]; +extern const u8 gBerryPic_Iapapa[]; +extern const u8 gBerryPalette_Iapapa[]; +extern const u8 gBerryPic_Razz[]; +extern const u8 gBerryPalette_Razz[]; +extern const u8 gBerryPic_Bluk[]; +extern const u8 gBerryPalette_Bluk[]; +extern const u8 gBerryPic_Nanab[]; +extern const u8 gBerryPalette_Nanab[]; +extern const u8 gBerryPic_Wepear[]; +extern const u8 gBerryPalette_Wepear[]; +extern const u8 gBerryPic_Pinap[]; +extern const u8 gBerryPalette_Pinap[]; +extern const u8 gBerryPic_Pomeg[]; +extern const u8 gBerryPalette_Pomeg[]; +extern const u8 gBerryPic_Kelpsy[]; +extern const u8 gBerryPalette_Kelpsy[]; +extern const u8 gBerryPic_Qualot[]; +extern const u8 gBerryPalette_Qualot[]; +extern const u8 gBerryPic_Hondew[]; +extern const u8 gBerryPalette_Hondew[]; +extern const u8 gBerryPic_Grepa[]; +extern const u8 gBerryPalette_Grepa[]; +extern const u8 gBerryPic_Tamato[]; +extern const u8 gBerryPalette_Tamato[]; +extern const u8 gBerryPic_Cornn[]; +extern const u8 gBerryPalette_Cornn[]; +extern const u8 gBerryPic_Magost[]; +extern const u8 gBerryPalette_Magost[]; +extern const u8 gBerryPic_Rabuta[]; +extern const u8 gBerryPalette_Rabuta[]; +extern const u8 gBerryPic_Nomel[]; +extern const u8 gBerryPalette_Nomel[]; +extern const u8 gBerryPic_Spelon[]; +extern const u8 gBerryPalette_Spelon[]; +extern const u8 gBerryPic_Pamtre[]; +extern const u8 gBerryPalette_Pamtre[]; +extern const u8 gBerryPic_Watmel[]; +extern const u8 gBerryPalette_Watmel[]; +extern const u8 gBerryPic_Durin[]; +extern const u8 gBerryPalette_Durin[]; +extern const u8 gBerryPic_Belue[]; +extern const u8 gBerryPalette_Belue[]; +extern const u8 gBerryPic_Liechi[]; +extern const u8 gBerryPalette_Liechi[]; +extern const u8 gBerryPic_Ganlon[]; +extern const u8 gBerryPalette_Ganlon[]; +extern const u8 gBerryPic_Salac[]; +extern const u8 gBerryPalette_Salac[]; +extern const u8 gBerryPic_Petaya[]; +extern const u8 gBerryPalette_Petaya[]; +extern const u8 gBerryPic_Apicot[]; +extern const u8 gBerryPalette_Apicot[]; +extern const u8 gBerryPic_Lansat[]; +extern const u8 gBerryPalette_Lansat[]; +extern const u8 gBerryPic_Starf[]; +extern const u8 gBerryPalette_Starf[]; +extern const u8 gBerryPic_Enigma[]; +extern const u8 gBerryPalette_Enigma[]; + +//credits +extern const u8 gCreditsCopyrightEnd_Gfx[]; + +//pokenav condition marker +extern const u8 gPokenavConditionMarker_Gfx[]; +extern const u16 gPokenavConditionMarker_Pal[]; #endif //GUARD_GRAPHICS_H diff --git a/include/gym_leader_rematch.h b/include/gym_leader_rematch.h new file mode 100644 index 000000000..ef0e5fef1 --- /dev/null +++ b/include/gym_leader_rematch.h @@ -0,0 +1,87 @@ +#ifndef GUARD_TRAINER_REMATCH_H +#define GUARD_TRAINER_REMATCH_H + +enum { + REMATCH_ROSE, + REMATCH_ANDRES, + REMATCH_DUSTY, + REMATCH_LOLA, + REMATCH_RICKY, + REMATCH_LILA_AND_ROY, + REMATCH_CRISTIN, + REMATCH_BROOKE, + REMATCH_WILTON, + REMATCH_VALERIE, + REMATCH_CINDY, + REMATCH_THALIA, + REMATCH_JESSICA, + REMATCH_WINSTON, + REMATCH_STEVE, + REMATCH_TONY, + REMATCH_NOB, + REMATCH_KOJI, + REMATCH_FERNANDO, + REMATCH_DALTON, + REMATCH_BERNIE, + REMATCH_ETHAN, + REMATCH_JOHN_AND_JAY, + REMATCH_JEFFREY, + REMATCH_CAMERON, + REMATCH_JACKI, + REMATCH_WALTER, + REMATCH_KAREN, + REMATCH_JERRY, + REMATCH_ANNA_AND_MEG, + REMATCH_ISABEL, + REMATCH_MIGUEL, + REMATCH_TIMOTHY, + REMATCH_SHELBY, + REMATCH_CALVIN, + REMATCH_ELLIOT, + REMATCH_ISAIAH, + REMATCH_MARIA, + REMATCH_ABIGAIL, + REMATCH_DYLAN, + REMATCH_KATELYN, + REMATCH_BENJAMIN, + REMATCH_PABLO, + REMATCH_NICOLAS, + REMATCH_ROBERT, + REMATCH_LAO, + REMATCH_CYNDY, + REMATCH_MADELINE, + REMATCH_JENNY, + REMATCH_DIANA, + REMATCH_AMY_AND_LIV, + REMATCH_ERNEST, + REMATCH_CORY, + REMATCH_EDWIN, + REMATCH_LYDIA, + REMATCH_ISAAC, + REMATCH_GABRIELLE, + REMATCH_CATHERINE, + REMATCH_JACKSON, + REMATCH_HALEY, + REMATCH_JAMES, + REMATCH_TRENT, + REMATCH_SAWYER, + REMATCH_KIRA_AND_DAN, + REMATCH_WALLY_3, + REMATCH_ROXANNE, + REMATCH_BRAWLY, + REMATCH_WATTSON, + REMATCH_FLANNERY, + REMATCH_NORMAN, + REMATCH_WINONA, + REMATCH_TATE_AND_LIZA, + REMATCH_JUAN, + REMATCH_SIDNEY, + REMATCH_PHOEBE, + REMATCH_GLACIA, + REMATCH_DRAKE, + REMATCH_WALLACE +}; + +void UpdateGymLeaderRematch(void); + +#endif //GUARD_TRAINER_REMATCH_H diff --git a/include/international_string_util.h b/include/international_string_util.h index e7876162e..426a2d48c 100644 --- a/include/international_string_util.h +++ b/include/international_string_util.h @@ -10,12 +10,12 @@ s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth); s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing); s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing); s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1); -s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2); +s32 sub_81DB3D8(const struct MenuAction *str, const u8* arg1, s32 arg2); // sub_81DB41C // CopyMonCategoryText // sub_81DB494 -// sub_81DB4DC -// sub_81DB554 +void PadNameString(u8 *dst, u8 padWith); +void sub_81DB554(u8 *, u8); // sub_81DB5AC u32 sub_81DB604(const u8 *); // sub_81DB620 diff --git a/include/intro.h b/include/intro.h new file mode 100644 index 000000000..b1bfe20a4 --- /dev/null +++ b/include/intro.h @@ -0,0 +1,14 @@ +#ifndef GUARD_INTRO_H +#define GUARD_INTRO_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations +void CB2_InitCopyrightScreenAfterBootup(void); +void CB2_InitCopyrightScreenAfterBootup(void); +void CB2_InitCopyrightScreenAfterTitleScreen(void); +void sub_816F2A8(u16, u16, u16, u16); + +#endif // GUARD_INTRO_H diff --git a/include/intro_credits_graphics.h b/include/intro_credits_graphics.h new file mode 100644 index 000000000..354d62e05 --- /dev/null +++ b/include/intro_credits_graphics.h @@ -0,0 +1,30 @@ +#ifndef GUARD_INTRO_CREDITS_GRAPHICS_H +#define GUARD_INTRO_CREDITS_GRAPHICS_H + +extern u16 gUnknown_0203BD24; +extern s16 gUnknown_0203BD26; +extern s16 gUnknown_0203BD28; + +extern const struct CompressedSpriteSheet gIntro2BrendanSpriteSheet[]; +extern const struct CompressedSpriteSheet gIntro2MaySpriteSheet[]; +extern const struct CompressedSpriteSheet gIntro2BicycleSpriteSheet[]; +extern const struct CompressedSpriteSheet gIntro2FlygonSpriteSheet[]; +extern const struct SpritePalette gUnknown_085F530C[]; +extern const struct CompressedSpriteSheet gUnknown_085F5334[]; +extern const struct CompressedSpriteSheet gUnknown_085F5344[]; +extern const struct CompressedSpriteSheet gUnknown_085F5354[]; +extern const struct CompressedSpriteSheet gUnknown_085F53AC[]; +extern const struct CompressedSpriteSheet gUnknown_085F53BC[]; +extern const struct SpritePalette gUnknown_085F5384[]; + +void load_intro_part2_graphics(u8 a); +void sub_817B150(u8 a); +void sub_817B1C8(u8); +void sub_817B3A8(u8); +u8 sub_817B3DC(u8 a, u16 b, u16 c, u16 d); +void sub_817B540(u8); +u8 intro_create_brendan_sprite(s16 a, s16 b); +u8 intro_create_may_sprite(s16 a, s16 b); +u8 intro_create_flygon_sprite(s16 a, s16 b); + +#endif // GUARD_INTRO_CREDITS_GRAPHICS_H diff --git a/include/item.h b/include/item.h index a136f03ec..881d3a3d4 100644 --- a/include/item.h +++ b/include/item.h @@ -1,11 +1,32 @@ -#ifndef ITEM_H -#define ITEM_H +#ifndef GUARD_ITEM_H +#define GUARD_ITEM_H + +// These constants are used in gItems +enum +{ + POCKET_NONE, + POCKET_ITEMS, + POCKET_POKE_BALLS, + POCKET_TM_HM, + POCKET_BERRIES, + POCKET_KEY_ITEMS, +}; + +enum +{ + ITEMS_POCKET, + BALLS_POCKET, + TMHM_POCKET, + BERRIES_POCKET, + KEYITEMS_POCKET, + POCKETS_COUNT +}; typedef void (*ItemUseFunc)(u8); struct Item { - u8 name[14]; + u8 name[ITEM_NAME_LENGTH]; u16 itemId; u16 price; u8 holdEffect; @@ -29,28 +50,41 @@ struct BagPocket extern struct BagPocket gBagPockets[]; -void GetBerryCountString(u8* dst, const u8* berryName, u32 quantity); -void CopyItemName(u16 itemId, u8 *string); -void CopyItemNameHandlePlural(u16 itemId, u8 *string, u32 quantity); +void ApplyNewEncryptionKeyToBagItems(u32 newKey); +void ApplyNewEncryptionKeyToBagItems_(u32 newKey); +void SetBagItemsPointers(void); +void CopyItemName(u16 itemId, u8 *dst); +void CopyItemNameHandlePlural(u16 itemId, u8 *dst, u32 quantity); +void GetBerryCountString(u8 *dst, const u8 *berryName, u32 quantity); bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); +bool8 HasAtLeastOneBerry(void); bool8 CheckBagHasSpace(u16 itemId, u16 count); bool8 AddBagItem(u16 itemId, u16 count); bool8 RemoveBagItem(u16 itemId, u16 count); u8 GetPocketByItemId(u16 itemId); -void ClearItemSlots(struct ItemSlot *itemSlots, u8 b); +void ClearItemSlots(struct ItemSlot *itemSlots, u8 itemCount); u8 CountUsedPCItemSlots(void); bool8 CheckPCHasItem(u16 itemId, u16 count); bool8 AddPCItem(u16 itemId, u16 count); void RemovePCItem(u8 index, u16 count); +void CompactPCItems(void); void SwapRegisteredBike(void); -const struct Item *ItemId_GetItem(u16 itemId); +u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 pocketPos); +u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 pocketPos); +void CompactItemsInBagPocket(struct BagPocket *bagPocket); +void SortBerriesOrTMHMs(struct BagPocket *bagPocket); +void MoveItemSlotInList(struct ItemSlot* itemSlots_, u32 from, u32 to_); +void ClearBag(void); +u16 CountTotalItemQuantityInBag(u16 itemId); +bool8 AddPyramidBagItem(u16 itemId, u16 count); +bool8 RemovePyramidBagItem(u16 itemId, u16 count); +const u8 *ItemId_GetName(u16 itemId); u16 ItemId_GetId(u16 itemId); u16 ItemId_GetPrice(u16 itemId); u8 ItemId_GetHoldEffect(u16 itemId); u8 ItemId_GetHoldEffectParam(u16 itemId); const u8 *ItemId_GetDescription(u16 itemId); -bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c); u8 ItemId_GetImportance(u16 itemId); u8 ItemId_GetUnknownValue(u16 itemId); u8 ItemId_GetPocket(u16 itemId); @@ -59,6 +93,5 @@ ItemUseFunc ItemId_GetFieldFunc(u16 itemId); u8 ItemId_GetBattleUsage(u16 itemId); ItemUseFunc ItemId_GetBattleFunc(u16 itemId); u8 ItemId_GetSecondaryId(u16 itemId); -u16 itemid_get_market_price(u16 itemId); -#endif // ITEM_H +#endif // GUARD_ITEM_H diff --git a/include/item_icon.h b/include/item_icon.h index a43b72f39..b702b2045 100644 --- a/include/item_icon.h +++ b/include/item_icon.h @@ -1,17 +1,16 @@ -// -// Created by scott on 10/20/2017. -// - #ifndef GUARD_ITEM_ICON_H #define GUARD_ITEM_ICON_H -extern EWRAM_DATA void *gUnknown_0203CEBC; -extern EWRAM_DATA void *gUnknown_0203CEC0; +extern void *gItemIconDecompressionBuffer; +extern void *gItemIcon4x4Buffer; -extern const struct SpriteTemplate gUnknown_08614FF4; +extern const struct SpriteTemplate gItemIconSpriteTemplate; bool8 AllocItemIconTemporaryBuffers(void); -void CopyItemIconPicTo4x4Buffer(void *src, void *dest); void FreeItemIconTemporaryBuffers(void); +void CopyItemIconPicTo4x4Buffer(const void *src, void *dest); +u8 AddItemIconSprite(u16 tilesTag, u16 paletteTag, u16 itemId); +u8 AddCustomItemIconSprite(struct SpriteTemplate *customSpriteTemplate, u16 tilesTag, u16 paletteTag, u16 itemId); +const void *GetItemIconPicOrPalette(u16 itemId, u8 which); #endif //GUARD_ITEM_ICON_H diff --git a/include/item_menu.h b/include/item_menu.h index 85655e9d5..8a474bc0f 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -2,11 +2,60 @@ #define GUARD_item_menu_H // Exported type declarations +struct BagStruct +{ + void (*bagCallback)(void); + u8 location; + u8 pocket; + u16 unk6; + u16 cursorPosition[5]; + u16 scrollPosition[5]; +}; + +extern struct BagStruct gUnknown_0203CE58; + +struct UnkBagStruct +{ + void (*unk0)(void); + u8 unk4[0x800]; + u8 unk804[12]; + u8 unk810[7]; + u8 unk817; + u8 unk818; + u8 unk819; + u8 unk81A; + u8 unk81B:4; + u8 unk81B_1:2; + u8 unk81B_3:1; + u8 unk81B_2:1; + u8 filler3[2]; + u8 unk81E; + u8 unk81F; + const u8* unk820; + u8 unk824; + u8 unk825; + u8 filler[2]; + u8 unk828; + u8 unk829[5]; + u8 unk82E[6]; + s16 unk834; + u8 filler4[0xE]; + u8 unk844[32][32]; + u8 filler2[4]; +}; + +extern struct UnkBagStruct *gUnknown_0203CE54; // Exported RAM declarations +extern u16 gSpecialVar_ItemId; + // Exported ROM declarations +void sub_81AAC14(void); void sub_81AAC50(void); void sub_81AAC70(void); +void bag_menu_mail_related(void); +void CB2_BagMenuFromStartMenu(void); +u8 sub_81ABB2C(u8 pocketId); #endif //GUARD_item_menu_H diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h new file mode 100644 index 000000000..aee7599df --- /dev/null +++ b/include/item_menu_icons.h @@ -0,0 +1,25 @@ +#ifndef GUARD_ITEM_MENU_ICONS +#define GUARD_ITEM_MENU_ICONS + +extern const struct CompressedSpriteSheet gUnknown_0857FB34; +extern const struct CompressedSpriteSheet gUnknown_0857FB3C; +extern const struct CompressedSpritePalette gUnknown_0857FB44; +extern const struct CompressedSpriteSheet gUnknown_0857FDEC; +extern const struct CompressedSpritePalette gUnknown_0857FDF4; + +void RemoveBagSprite(u8 id); +void AddBagVisualSprite(u8 bagPocketId); +void SetBagVisualPocketId(u8 bagPocketId, bool8 isSwitchingPockets); +void ShakeBagVisual(void); +void AddSwitchPocketRotatingBallSprite(s16 rotationDirection); +void AddBagItemIconSprite(u16 itemId, u8 id); +void RemoveBagItemIconSprite(u8 id); +void sub_80D4FAC(void); +void sub_80D4FC8(u8 arg0); +void sub_80D4FEC(u8 arg0); +u8 CreateBerryTagSprite(u8 id, s16 x, s16 y); +void FreeBerryTagSpritePalette(void); +u8 sub_80D511C(u8 berryId, u8 x, u8 y, bool8 startAffine); +u8 CreateBerryFlavorCircleSprite(s16 x); + +#endif // GUARD_ITEM_MENU_ICONS diff --git a/include/item_use.h b/include/item_use.h new file mode 100644 index 000000000..7874f7ee9 --- /dev/null +++ b/include/item_use.h @@ -0,0 +1,57 @@ +#ifndef GUARD_ITEM_USE_H +#define GUARD_ITEM_USE_H + +extern u16 gSpecialVar_ItemId; + +void ItemUseOutOfBattle_Mail(u8); +void ItemUseOutOfBattle_Bike(u8); +void ItemUseOnFieldCB_Bike(u8); +void ItemUseOutOfBattle_Rod(u8); +void ItemUseOnFieldCB_Rod(u8); +void ItemUseOutOfBattle_Itemfinder(u8); +void ItemUseOnFieldCB_Itemfinder(u8); +void RunItemfinderResults(u8); +void ExitItemfinder(u8); +bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8); +void sub_80C9720(u8); +void sub_80C9838(u8, s16, s16); +u8 GetPlayerDirectionTowardsHiddenItem(s16, s16); +void SetPlayerDirectionTowardsItem(u8); +void DisplayItemRespondingMessageAndExitItemfinder(u8); +void RotatePlayerAndExitItemfinder(u8); +void ItemUseOutOfBattle_PokeblockCase(u8); +void ItemUseOutOfBattle_CoinCase(u8); +void ItemUseOutOfBattle_PowderJar(u8); +void ItemUseOutOfBattle_SSTicket(u8); +void sub_80C9D00(u8); +void ItemUseOutOfBattle_WailmerPail(u8); +void sub_80C9D74(u8); +void ItemUseOutOfBattle_Medicine(u8); +void ItemUseOutOfBattle_ReduceEV(u8); +void ItemUseOutOfBattle_SacredAsh(u8); +void ItemUseOutOfBattle_PPRecovery(u8); +void ItemUseOutOfBattle_PPUp(u8); +void ItemUseOutOfBattle_RareCandy(u8); +void ItemUseOutOfBattle_TMHM(u8); +void sub_80C9EE4(u8); +void sub_80C9F10(u8); +void sub_80C9F80(u8); +void sub_80C9FC0(u8); +void ItemUseOutOfBattle_Repel(u8); +void ItemUseOutOfBattle_BlackWhiteFlute(u8); +void task08_080A1C44(u8); +u8 CanUseEscapeRopeOnCurrMap(void); +void ItemUseOutOfBattle_EscapeRope(u8); +void ItemUseOutOfBattle_EvolutionStone(u8); +void ItemUseInBattle_PokeBall(u8); +void ItemUseInBattle_StatIncrease(u8); +void ItemUseInBattle_Medicine(u8); +void ItemUseInBattle_PPRecovery(u8); +void ItemUseInBattle_Escape(u8); +void ItemUseOutOfBattle_EnigmaBerry(u8); +void ItemUseInBattle_EnigmaBerry(u8); +void ItemUseOutOfBattle_CannotUse(u8); +u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId); +void sub_80FDD10(u8); + +#endif // GUARD_ITEM_USE_H diff --git a/include/items.h b/include/items.h deleted file mode 100644 index 1f6c288c5..000000000 --- a/include/items.h +++ /dev/null @@ -1,392 +0,0 @@ -#ifndef GUARD_ITEMS_H -#define GUARD_ITEMS_H - -enum -{ - ITEM_NONE, // 0x000 - ITEM_MASTER_BALL, // 0x001 - ITEM_ULTRA_BALL, // 0x002 - ITEM_GREAT_BALL, // 0x003 - ITEM_POKE_BALL, // 0x004 - ITEM_SAFARI_BALL, // 0x005 - ITEM_NET_BALL, // 0x006 - ITEM_DIVE_BALL, // 0x007 - ITEM_NEST_BALL, // 0x008 - ITEM_REPEAT_BALL, // 0x009 - ITEM_TIMER_BALL, // 0x00a - ITEM_LUXURY_BALL, // 0x00b - ITEM_PREMIER_BALL, // 0x00c - ITEM_POTION, // 0x00d - ITEM_ANTIDOTE, // 0x00e - ITEM_BURN_HEAL, // 0x00f - ITEM_ICE_HEAL, // 0x010 - ITEM_AWAKENING, // 0x011 - ITEM_PARALYZE_HEAL, // 0x012 - ITEM_FULL_RESTORE, // 0x013 - ITEM_MAX_POTION, // 0x014 - ITEM_HYPER_POTION, // 0x015 - ITEM_SUPER_POTION, // 0x016 - ITEM_FULL_HEAL, // 0x017 - ITEM_REVIVE, // 0x018 - ITEM_MAX_REVIVE, // 0x019 - ITEM_FRESH_WATER, // 0x01a - ITEM_SODA_POP, // 0x01b - ITEM_LEMONADE, // 0x01c - ITEM_MOOMOO_MILK, // 0x01d - ITEM_ENERGY_POWDER, // 0x01e - ITEM_ENERGY_ROOT, // 0x01f - ITEM_HEAL_POWDER, // 0x020 - ITEM_REVIVAL_HERB, // 0x021 - ITEM_ETHER, // 0x022 - ITEM_MAX_ETHER, // 0x023 - ITEM_ELIXIR, // 0x024 - ITEM_MAX_ELIXIR, // 0x025 - ITEM_LAVA_COOKIE, // 0x026 - ITEM_BLUE_FLUTE, // 0x027 - ITEM_YELLOW_FLUTE, // 0x028 - ITEM_RED_FLUTE, // 0x029 - ITEM_BLACK_FLUTE, // 0x02a - ITEM_WHITE_FLUTE, // 0x02b - ITEM_BERRY_JUICE, // 0x02c - ITEM_SACRED_ASH, // 0x02d - ITEM_SHOAL_SALT, // 0x02e - ITEM_SHOAL_SHELL, // 0x02f - ITEM_RED_SHARD, // 0x030 - ITEM_BLUE_SHARD, // 0x031 - ITEM_YELLOW_SHARD, // 0x032 - ITEM_GREEN_SHARD, // 0x033 - 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, // 0x03f - ITEM_PROTEIN, // 0x040 - ITEM_IRON, // 0x041 - ITEM_CARBOS, // 0x042 - ITEM_CALCIUM, // 0x043 - ITEM_RARE_CANDY, // 0x044 - ITEM_PP_UP, // 0x045 - ITEM_ZINC, // 0x046 - ITEM_PP_MAX, // 0x047 - ITEM_048, - ITEM_GUARD_SPEC, // 0x049 - ITEM_DIRE_HIT, // 0x04a - ITEM_X_ATTACK, // 0x04b - ITEM_X_DEFEND, // 0x04c - ITEM_X_SPEED, // 0x04d - ITEM_X_ACCURACY, // 0x04e - ITEM_X_SPECIAL, // 0x04f - ITEM_POKE_DOLL, // 0x050 - ITEM_FLUFFY_TAIL, // 0x051 - ITEM_052, - ITEM_SUPER_REPEL, // 0x053 - ITEM_MAX_REPEL, // 0x054 - ITEM_ESCAPE_ROPE, // 0x055 - ITEM_REPEL, // 0x056 - ITEM_057, - ITEM_058, - ITEM_059, - ITEM_05A, - ITEM_05B, - ITEM_05C, - ITEM_SUN_STONE, // 0x05d - ITEM_MOON_STONE, // 0x05e - ITEM_FIRE_STONE, // 0x05f - ITEM_THUNDER_STONE, // 0x060 - ITEM_WATER_STONE, // 0x061 - ITEM_LEAF_STONE, // 0x062 - ITEM_063, - ITEM_064, - ITEM_065, - ITEM_066, - ITEM_TINY_MUSHROOM, // 0x067 - ITEM_BIG_MUSHROOM, // 0x068 - ITEM_069, - ITEM_PEARL, // 0x06a - ITEM_BIG_PEARL, // 0x06b - ITEM_STARDUST, // 0x06c - ITEM_STAR_PIECE, // 0x06d - ITEM_NUGGET, // 0x06e - ITEM_HEART_SCALE, // 0x06f - ITEM_070, - ITEM_071, - ITEM_072, - ITEM_073, - ITEM_074, - ITEM_075, - ITEM_076, - ITEM_077, - ITEM_078, - ITEM_ORANGE_MAIL, // 0x079 - ITEM_HARBOR_MAIL, // 0x07a - ITEM_GLITTER_MAIL, // 0x07b - ITEM_MECH_MAIL, // 0x07c - ITEM_WOOD_MAIL, // 0x07d - ITEM_WAVE_MAIL, // 0x07e - ITEM_BEAD_MAIL, // 0x07f - ITEM_SHADOW_MAIL, // 0x080 - ITEM_TROPIC_MAIL, // 0x081 - ITEM_DREAM_MAIL, // 0x082 - ITEM_FAB_MAIL, // 0x083 - ITEM_RETRO_MAIL, // 0x084 - ITEM_CHERI_BERRY, // 0x085 - ITEM_CHESTO_BERRY, // 0x086 - ITEM_PECHA_BERRY, // 0x087 - ITEM_RAWST_BERRY, // 0x088 - ITEM_ASPEAR_BERRY, // 0x089 - ITEM_LEPPA_BERRY, // 0x08a - ITEM_ORAN_BERRY, // 0x08b - ITEM_PERSIM_BERRY, // 0x08c - ITEM_LUM_BERRY, // 0x08d - ITEM_SITRUS_BERRY, // 0x08e - ITEM_FIGY_BERRY, // 0x08f - ITEM_WIKI_BERRY, // 0x090 - ITEM_MAGO_BERRY, // 0x091 - ITEM_AGUAV_BERRY, // 0x092 - ITEM_IAPAPA_BERRY, // 0x093 - ITEM_RAZZ_BERRY, // 0x094 - ITEM_BLUK_BERRY, // 0x095 - ITEM_NANAB_BERRY, // 0x096 - ITEM_WEPEAR_BERRY, // 0x097 - ITEM_PINAP_BERRY, // 0x098 - ITEM_POMEG_BERRY, // 0x099 - ITEM_KELPSY_BERRY, // 0x09a - ITEM_QUALOT_BERRY, // 0x09b - ITEM_HONDEW_BERRY, // 0x09c - ITEM_GREPA_BERRY, // 0x09d - ITEM_TAMATO_BERRY, // 0x09e - ITEM_CORNN_BERRY, // 0x09f - ITEM_MAGOST_BERRY, // 0x0a0 - ITEM_RABUTA_BERRY, // 0x0a1 - ITEM_NOMEL_BERRY, // 0x0a2 - ITEM_SPELON_BERRY, // 0x0a3 - ITEM_PAMTRE_BERRY, // 0x0a4 - ITEM_WATMEL_BERRY, // 0x0a5 - ITEM_DURIN_BERRY, // 0x0a6 - ITEM_BELUE_BERRY, // 0x0a7 - ITEM_LIECHI_BERRY, // 0x0a8 - ITEM_GANLON_BERRY, // 0x0a9 - ITEM_SALAC_BERRY, // 0x0aa - ITEM_PETAYA_BERRY, // 0x0ab - ITEM_APICOT_BERRY, // 0x0ac - ITEM_LANSAT_BERRY, // 0x0ad - ITEM_STARF_BERRY, // 0x0ae - ITEM_ENIGMA_BERRY, // 0x0af - ITEM_0B0, - ITEM_0B1, - ITEM_0B2, - ITEM_BRIGHT_POWDER, // 0x0b3 - ITEM_WHITE_HERB, // 0x0b4 - ITEM_MACHO_BRACE, // 0x0b5 - ITEM_EXP_SHARE, // 0x0b6 - ITEM_QUICK_CLAW, // 0x0b7 - ITEM_SOOTHE_BELL, // 0x0b8 - ITEM_MENTAL_HERB, // 0x0b9 - ITEM_CHOICE_BAND, // 0x0ba - ITEM_KINGS_ROCK, // 0x0bb - ITEM_SILVER_POWDER, // 0x0bc - ITEM_AMULET_COIN, // 0x0bd - ITEM_CLEANSE_TAG, // 0x0be - ITEM_SOUL_DEW, // 0x0bf - ITEM_DEEP_SEA_TOOTH, // 0x0c0 - ITEM_DEEP_SEA_SCALE, // 0x0c1 - ITEM_SMOKE_BALL, // 0x0c2 - ITEM_EVERSTONE, // 0x0c3 - ITEM_FOCUS_BAND, // 0x0c4 - ITEM_LUCKY_EGG, // 0x0c5 - ITEM_SCOPE_LENS, // 0x0c6 - ITEM_METAL_COAT, // 0x0c7 - ITEM_LEFTOVERS, // 0x0c8 - ITEM_DRAGON_SCALE, // 0x0c9 - ITEM_LIGHT_BALL, // 0x0ca - ITEM_SOFT_SAND, // 0x0cb - ITEM_HARD_STONE, // 0x0cc - ITEM_MIRACLE_SEED, // 0x0cd - ITEM_BLACK_GLASSES, // 0x0ce - ITEM_BLACK_BELT, // 0x0cf - ITEM_MAGNET, // 0x0d0 - ITEM_MYSTIC_WATER, // 0x0d1 - ITEM_SHARP_BEAK, // 0x0d2 - ITEM_POISON_BARB, // 0x0d3 - ITEM_NEVER_MELT_ICE, // 0x0d4 - ITEM_SPELL_TAG, // 0x0d5 - ITEM_TWISTED_SPOON, // 0x0d6 - ITEM_CHARCOAL, // 0x0d7 - ITEM_DRAGON_FANG, // 0x0d8 - ITEM_SILK_SCARF, // 0x0d9 - ITEM_UP_GRADE, // 0x0da - ITEM_SHELL_BELL, // 0x0db - ITEM_SEA_INCENSE, // 0x0dc - ITEM_LAX_INCENSE, // 0x0dd - ITEM_LUCKY_PUNCH, // 0x0de - ITEM_METAL_POWDER, // 0x0df - ITEM_THICK_CLUB, // 0x0e0 - ITEM_STICK, // 0x0e1 - 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, - ITEM_RED_SCARF, // 0x0fe - ITEM_BLUE_SCARF, // 0x0ff - ITEM_PINK_SCARF, // 0x100 - ITEM_GREEN_SCARF, // 0x101 - ITEM_YELLOW_SCARF, // 0x102 - ITEM_MACH_BIKE, // 0x103 - ITEM_COIN_CASE, // 0x104 - ITEM_ITEMFINDER, // 0x105 - ITEM_OLD_ROD, // 0x106 - ITEM_GOOD_ROD, // 0x107 - ITEM_SUPER_ROD, // 0x108 - ITEM_SS_TICKET, // 0x109 - ITEM_CONTEST_PASS, // 0x10a - ITEM_10B, - ITEM_WAILMER_PAIL, // 0x10c - ITEM_DEVON_GOODS, // 0x10d - ITEM_SOOT_SACK, // 0x10e - ITEM_BASEMENT_KEY, // 0x10f - ITEM_ACRO_BIKE, // 0x110 - ITEM_POKEBLOCK_CASE, // 0x111 - ITEM_LETTER, // 0x112 - ITEM_EON_TICKET, // 0x113 - ITEM_RED_ORB, // 0x114 - ITEM_BLUE_ORB, // 0x115 - ITEM_SCANNER, // 0x116 - ITEM_GO_GOGGLES, // 0x117 - ITEM_METEORITE, // 0x118 - ITEM_ROOM_1_KEY, // 0x119 - ITEM_ROOM_2_KEY, // 0x11a - ITEM_ROOM_4_KEY, // 0x11b - ITEM_ROOM_6_KEY, // 0x11c - ITEM_STORAGE_KEY, // 0x11d - ITEM_ROOT_FOSSIL, // 0x11e - ITEM_CLAW_FOSSIL, // 0x11f - ITEM_DEVON_SCOPE, // 0x120 - ITEM_TM01, // 0x121 - ITEM_TM02, // 0x122 - ITEM_TM03, // 0x123 - ITEM_TM04, // 0x124 - ITEM_TM05, // 0x125 - ITEM_TM06, // 0x126 - ITEM_TM07, // 0x127 - ITEM_TM08, // 0x128 - ITEM_TM09, // 0x129 - ITEM_TM10, // 0x12a - ITEM_TM11, // 0x12b - ITEM_TM12, // 0x12c - ITEM_TM13, // 0x12d - ITEM_TM14, // 0x12e - ITEM_TM15, // 0x12f - ITEM_TM16, // 0x130 - ITEM_TM17, // 0x131 - ITEM_TM18, // 0x132 - ITEM_TM19, // 0x133 - ITEM_TM20, // 0x134 - ITEM_TM21, // 0x135 - ITEM_TM22, // 0x136 - ITEM_TM23, // 0x137 - ITEM_TM24, // 0x138 - ITEM_TM25, // 0x139 - ITEM_TM26, // 0x13a - ITEM_TM27, // 0x13b - ITEM_TM28, // 0x13c - ITEM_TM29, // 0x13d - ITEM_TM30, // 0x13e - ITEM_TM31, // 0x13f - ITEM_TM32, // 0x140 - ITEM_TM33, // 0x141 - ITEM_TM34, // 0x142 - ITEM_TM35, // 0x143 - ITEM_TM36, // 0x144 - ITEM_TM37, // 0x145 - ITEM_TM38, // 0x146 - ITEM_TM39, // 0x147 - ITEM_TM40, // 0x148 - ITEM_TM41, // 0x149 - ITEM_TM42, // 0x14a - ITEM_TM43, // 0x14b - ITEM_TM44, // 0x14c - ITEM_TM45, // 0x14d - ITEM_TM46, // 0x14e - ITEM_TM47, // 0x14f - ITEM_TM48, // 0x150 - ITEM_TM49, // 0x151 - ITEM_TM50, // 0x152 - ITEM_HM01, // 0x153 - ITEM_HM02, // 0x154 - ITEM_HM03, // 0x155 - ITEM_HM04, // 0x156 - ITEM_HM05, // 0x157 - ITEM_HM06, // 0x158 - ITEM_HM07, // 0x159 - ITEM_HM08, // 0x15a - ITEM_15B, - ITEM_15C, - - // FireRed/LeafGreen - ITEM_OAKS_PARCEL, // 0x15d - ITEM_POKE_FLUTE, // 0x15e - ITEM_SECRET_KEY, // 0x15f - ITEM_BIKE_VOUCHER, // 0x160 - ITEM_GOLD_TEETH, // 0x161 - ITEM_OLD_AMBER, // 0x162 - ITEM_CARD_KEY, // 0x163 - ITEM_LIFT_KEY, // 0x164 - ITEM_HELIX_FOSSIL, // 0x165 - ITEM_DOME_FOSSIL, // 0x166 - ITEM_SILPH_SCOPE, // 0x167 - ITEM_BICYCLE, // 0x168 - ITEM_TOWN_MAP, // 0x169 - ITEM_VS_SEEKER, // 0x16a - ITEM_FAME_CHECKER, // 0x16b - ITEM_TM_CASE, // 0x16c - ITEM_BERRY_POUCH, // 0x16d - ITEM_TEACHY_TV, // 0x16e - ITEM_TRI_PASS, // 0x16f - ITEM_RAINBOW_PASS, // 0x170 - ITEM_TEA, // 0x171 - ITEM_MYSTIC_TICKET, // 0x172 - ITEM_AURORA_TICKET, // 0x173 - ITEM_POWDER_JAR, // 0x174 - ITEM_RUBY, // 0x175 - ITEM_SAPPHIRE, // 0x176 - - // Emerald - ITEM_MAGMA_EMBLEM, // 0x177 - ITEM_OLD_SEA_MAP, // 0x178 -}; - -#define NUM_TECHNICAL_MACHINES 50 -#define NUM_HIDDEN_MACHINES 8 - -#endif // GUARD_ITEMS_H diff --git a/include/landmark.h b/include/landmark.h new file mode 100644 index 000000000..395905033 --- /dev/null +++ b/include/landmark.h @@ -0,0 +1,6 @@ +#ifndef GUARD_LANDMARK_H +#define GUARD_LANDMARK_H + +const u8 *GetLandmarkName(u8 mapSection, u8 id, u8 count); + +#endif // GUARD_LANDMARK_H diff --git a/include/libgcnmultiboot.h b/include/libgcnmultiboot.h new file mode 100644 index 000000000..7d347df05 --- /dev/null +++ b/include/libgcnmultiboot.h @@ -0,0 +1,17 @@ +#ifndef GUARD_LIBGCMMULTIBOOT_H +#define GUARD_LIBGCNMULTIBOOT_H + +struct GcmbStruct +{ + u16 gcmb_field_0; + vu8 gcmb_field_2; + u8 filler3[0x2C - 0x3]; +}; + +void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct); +void GameCubeMultiBoot_ExecuteProgram(struct GcmbStruct *pStruct); +void GameCubeMultiBoot_Init(struct GcmbStruct *pStruct); +void GameCubeMultiBoot_HandleSerialInterrupt(struct GcmbStruct *pStruct); +void GameCubeMultiBoot_Quit(void); + +#endif // GUARD_LIBGCNMULTIBOOT_H diff --git a/include/librfu.h b/include/librfu.h index dbc8a41a6..9d131f027 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -47,7 +47,7 @@ enum RFU_UNK3A, RFU_UNK3B, RFU_UNK3C, - RFU_STOP_MODE, //3D + RFU_STOP_MODE, // 3D }; struct RfuPacket8 @@ -67,6 +67,33 @@ union RfuPacket struct RfuPacket8 rfuPacket8; }; +struct UnkLinkRfuStruct_02022B14Substruct +{ + u16 unk_00_0:4; + u16 unk_00_4:1; + u16 unk_00_5:1; + u16 unk_00_6:1; + u16 unk_00_7:1; + u16 unk_01_0:1; + u16 unk_01_1:1; + u16 unk_01_2:4; + u16 unk_01_6:2; + u8 playerTrainerId[2]; +}; + +struct __attribute__((packed)) UnkLinkRfuStruct_02022B14 +{ + struct UnkLinkRfuStruct_02022B14Substruct unk_00; + u8 unk_04[4]; + u16 species:10; + u16 type:6; + u8 unk_0a_0:7; + u8 unk_0a_7:1; + u8 playerGender:1; + u8 unk_0b_1:7; + u8 unk_0c; +}; + struct RfuStruct { vs32 unk_0; @@ -103,6 +130,125 @@ struct RfuIntrStruct u8 block2[0x30]; }; +struct RfuUnk1 +{ + u16 unk_0; + u8 unk_2; + u8 unk_3; + u8 fill_4[14]; + u8 unk_12; + u32 unk_14; + u32 unk_18; + struct RfuIntrStruct unk_1c; +}; + +struct RfuUnk2 +{ + u16 unk_0; + u16 unk_2; + u8 fill_4[0x16]; + u8 unk_1a; + u8 fill_1b[0x19]; + u16 unk_34; + u16 unk_36; + u8 fill_38[0x16]; + u8 unk_4e; + u8 fill_4f[0x12]; + u8 unk_61; + u8 fill_62[6]; + void *unk_68; + void *unk_6c; + u8 unk_70[0x70]; +}; + +struct RfuUnk3 +{ + u32 unk_0; + u32 unk_4; + u8 unk_8[0xD4]; + u32 unk_dc; +}; + +struct RfuUnk5Sub { + u16 unk_00; + u8 unk_02; + u16 unk_04; + struct UnkLinkRfuStruct_02022B14 unk_06; + u8 fill_13[2]; + u8 unk_15[8]; +}; + +struct RfuUnk5 +{ + u8 unk_00; + u8 unk_01; + u8 unk_02; + u8 unk_03; + u8 unk_04; + u8 unk_05; + u8 unk_06; + u8 unk_07; + u8 unk_08; + u8 filler_09[1]; + u8 unk_0a[4]; + u8 filler_0e[6]; + struct RfuUnk5Sub unk_14[4]; +}; + extern struct RfuStruct *gRfuState; +extern struct RfuUnk5 *gUnknown_03007890; +extern u32 *gUnknown_03007894; +extern struct RfuUnk3* gUnknown_03007898; +extern struct RfuUnk2* gUnknown_03007880[4]; +extern struct RfuUnk1* gUnknown_03007870[4]; +extern void* sub_82E53F4; +extern void rfu_STC_clearAPIVariables(void); + void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); +void rfu_REQ_stopMode(void); +void rfu_waitREQComplete(void); +u32 rfu_REQBN_softReset_and_checkID(void); +void rfu_REQ_sendData(u8); +void rfu_setMSCCallback(void (*func)(u16)); +void rfu_setREQCallback(void (*func)(u16, u16)); +bool8 rfu_getMasterSlave(void); +void rfu_REQBN_watchLink(u16 a0, u8 *a1, u8 *a2, u8 *a3); +bool16 rfu_syncVBlank(void); +void rfu_REQ_reset(void); +void rfu_REQ_configSystem(u16, u8, u8); +void rfu_REQ_configGameData(u8, u16, struct UnkLinkRfuStruct_02022B14 *, u8 *); +void rfu_REQ_startSearchChild(void); +void rfu_REQ_pollSearchChild(void); +void rfu_REQ_endSearchChild(void); +void rfu_REQ_startSearchParent(void); +void rfu_REQ_pollSearchParent(void); +void rfu_REQ_endSearchParent(void); +void rfu_REQ_startConnectParent(u16); +void rfu_REQ_pollConnectParent(void); +void rfu_REQ_endConnectParent(void); +void rfu_REQ_CHILD_startConnectRecovery(u8); +void rfu_REQ_CHILD_pollConnectRecovery(void); +void rfu_REQ_CHILD_endConnectRecovery(void); +void rfu_REQ_changeMasterSlave(void); +void rfu_REQ_RFUStatus(void); +void rfu_getRFUStatus(u8 *status); +u8 *rfu_getSTWIRecvBuffer(void); +u8 rfu_NI_CHILD_setSendGameName(u8 a0, u8 a1); +void rfu_clearSlot(u8 a0, u8 a1); +void rfu_clearAllSlot(void); +bool16 rfu_CHILD_getConnectRecoveryStatus(u8 *status); +bool16 rfu_getConnectParentStatus(u8 *status, u8 *a1); +bool16 rfu_UNI_PARENT_getDRAC_ACK(u8 *a0); +void rfu_REQ_disconnect(u8 who); +void rfu_changeSendTarget(u8 a0, u8 who, u8 a2); +void rfu_NI_stopReceivingData(u8 who); +u16 rfu_initializeAPI(u32 *unk0, u16 unk1, IntrFunc *interrupt, bool8 copyInterruptToRam); +void rfu_setTimerInterrupt(u8 which, IntrFunc *intr); +void rfu_setRecvBuffer(u8 a0, u8 a1, void *a2, size_t a3); +bool16 rfu_UNI_setSendData(u8 flag, void *ptr, u8 size); +void rfu_REQ_recvData(void); +void rfu_UNI_readySendData(u8 a0); +void rfu_UNI_clearRecvNewDataFlag(u8 a0); +void rfu_REQ_PARENT_resumeRetransmitAndChange(void); +void rfu_NI_setSendData(u8, u8, u8 *, u8); diff --git a/include/lilycove_lady.h b/include/lilycove_lady.h index c7776131b..f26285d68 100644 --- a/include/lilycove_lady.h +++ b/include/lilycove_lady.h @@ -6,8 +6,8 @@ void SetLilycoveLady(void); void sub_818DA78(void); void sub_818DEF4(void); void sub_818E564(void); -void sub_818E570(const struct LilycoveLadyQuiz *quiz); -bool8 sub_818E704(struct Pokeblock *pokeblock); +void sub_818E570(const LilycoveLady *lilycoveLady); +bool8 GivePokeblockToContestLady(struct Pokeblock *pokeblock); void sub_818E7E0(u8 *dest1, u8 *dest2); void sub_818E81C(u8 *dest); void sub_818E848(u8 *dest); diff --git a/include/link.h b/include/link.h index db13efbe8..9561728bd 100644 --- a/include/link.h +++ b/include/link.h @@ -2,10 +2,14 @@ #define GUARD_LINK_H #define MAX_LINK_PLAYERS 4 +#define MAX_RFU_PLAYERS 5 #define CMD_LENGTH 8 #define QUEUE_CAPACITY 50 #define BLOCK_BUFFER_SIZE 0x100 +#define LINK_SLAVE 0 +#define LINK_MASTER 8 + #define LINK_STAT_LOCAL_ID 0x00000003 #define LINK_STAT_PLAYER_COUNT 0x0000001C #define LINK_STAT_PLAYER_COUNT_SHIFT 2 @@ -15,7 +19,23 @@ #define LINK_STAT_CONN_ESTABLISHED_SHIFT 6 #define LINK_STAT_RECEIVED_NOTHING 0x00000100 #define LINK_STAT_RECEIVED_NOTHING_SHIFT 8 +#define LINK_STAT_UNK_FLAG_9 0x00000200 +#define LINK_STAT_UNK_FLAG_9_SHIFT 9 #define LINK_STAT_ERRORS 0x0007F000 +#define LINK_STAT_ERRORS_SHIFT 12 + +#define LINK_STAT_ERROR_HARDWARE 0x00001000 +#define LINK_STAT_ERROR_HARDWARE_SHIFT 12 +#define LINK_STAT_ERROR_CHECKSUM 0x00002000 +#define LINK_STAT_ERROR_CHECKSUM_SHIFT 13 +#define LINK_STAT_ERROR_QUEUE_FULL 0x00004000 +#define LINK_STAT_ERROR_QUEUE_FULL_SHIFT 14 +#define LINK_STAT_ERROR_LAG_MASTER 0x00010000 +#define LINK_STAT_ERROR_LAG_MASTER_SHIFT 16 +#define LINK_STAT_ERROR_INVALID_ID 0x00020000 +#define LINK_STAT_ERROR_INVALID_ID_SHIFT 17 +#define LINK_STAT_ERROR_LAG_SLAVE 0x00040000 +#define LINK_STAT_ERROR_LAG_SLAVE_SHIFT 18 #define EXTRACT_PLAYER_COUNT(status) \ (((status) & LINK_STAT_PLAYER_COUNT) >> LINK_STAT_PLAYER_COUNT_SHIFT) @@ -25,10 +45,41 @@ (((status) >> LINK_STAT_CONN_ESTABLISHED_SHIFT) & 1) #define EXTRACT_RECEIVED_NOTHING(status) \ (((status) >> LINK_STAT_RECEIVED_NOTHING_SHIFT) & 1) +#define EXTRACT_LINK_ERRORS(status) \ +(((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT) + +#define LINKCMD_SEND_LINK_TYPE 0x2222 +#define LINKCMD_0x2FFE 0x2FFE +#define LINKCMD_SEND_HELD_KEYS 0x4444 +#define LINKCMD_0x5555 0x5555 +#define LINKCMD_0x5566 0x5566 +#define LINKCMD_0x5FFF 0x5FFF +#define LINKCMD_0x6666 0x6666 +#define LINKCMD_0x7777 0x7777 +#define LINKCMD_CONT_BLOCK 0x8888 +#define LINKCMD_0xAAAA 0xAAAA +#define LINKCMD_0xAAAB 0xAAAB +#define LINKCMD_INIT_BLOCK 0xBBBB +#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE +#define LINKCMD_0xCCCC 0xCCCC + +struct LinkStatus +{ + u32 localId:2; + u32 playerCount:3; + u32 master:1; + u32 connEstablished:1; + u32 unused_7:1; + u32 receivedNothing:1; + u32 unused_9:7; + u32 errors:7; +}; #define MASTER_HANDSHAKE 0x8FFF #define SLAVE_HANDSHAKE 0xB9A0 +#define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT) + enum { LINK_STATE_START0, @@ -44,6 +95,9 @@ enum EXCHANGE_COMPLETE, EXCHANGE_TIMED_OUT, EXCHANGE_IN_PROGRESS, + EXCHANGE_STAT_4, + EXCHANGE_STAT_5, + EXCHANGE_STAT_6 }; enum @@ -68,24 +122,24 @@ struct LinkPlayer /* 0x08 */ u8 name[11]; /* 0x13 */ u8 gender; /* 0x14 */ u32 linkType; - /* 0x18 */ u16 lp_field_18; // battle bank in battles + /* 0x18 */ u16 id; // battler id in battles /* 0x1A */ u16 language; }; struct LinkPlayerBlock { - u8 magic1[16]; + char magic1[16]; struct LinkPlayer linkPlayer; - u8 magic2[16]; + char magic2[16]; }; // circular queues struct SendQueue { - u16 data[CMD_LENGTH][QUEUE_CAPACITY]; - u8 pos; - u8 count; + /* 0x000 */ u16 data[CMD_LENGTH][QUEUE_CAPACITY]; + /* 0x320 */ u8 pos; + /* 0x321 */ u8 count; }; struct RecvQueue @@ -97,29 +151,29 @@ struct RecvQueue struct Link { - u8 isMaster; // 0: slave, 8: master - u8 state; - u8 localId; // local multi-player ID - u8 playerCount; - u16 tempRecvBuffer[4]; - bool8 receivedNothing; - s8 serialIntrCounter; - bool8 handshakeAsMaster; - u8 link_field_F; + /* 0x000 */ u8 isMaster; // 0: slave, 8: master + /* 0x001 */ u8 state; + /* 0x002 */ u8 localId; // local multi-player ID + /* 0x003 */ u8 playerCount; + /* 0x004 */ u16 tempRecvBuffer[4]; + /* 0x00c */ bool8 receivedNothing; + /* 0x00d */ s8 serialIntrCounter; + /* 0x00e */ bool8 handshakeAsMaster; + /* 0x00f */ u8 link_field_F; // error conditions - bool8 hardwareError; // hardware reported an error - bool8 badChecksum; // checksum didn't match between devices - u8 queueFull; // send or recv queue out of space - u8 lag; // connection is lagging + /* 0x010 */ bool8 hardwareError; // hardware reported an error + /* 0x011 */ bool8 badChecksum; // checksum didn't match between devices + /* 0x012 */ u8 queueFull; // send or recv queue out of space + /* 0x013 */ u8 lag; // connection is lagging - u16 checksum; + /* 0x014 */ u16 checksum; - u8 sendCmdIndex; - u8 recvCmdIndex; + /* 0x016 */ u8 sendCmdIndex; + /* 0x017 */ u8 recvCmdIndex; - struct SendQueue sendQueue; - struct RecvQueue recvQueue; + /* 0x018 */ struct SendQueue sendQueue; + /* 0x33c */ struct RecvQueue recvQueue; }; struct BlockRequest @@ -131,29 +185,34 @@ struct BlockRequest extern const struct BlockRequest sBlockRequestLookupTable[5]; extern struct Link gLink; -extern u16 gRecvCmds[CMD_LENGTH][MAX_LINK_PLAYERS]; +extern u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH]; extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE]; extern u16 gLinkType; extern u32 gLinkStatus; -extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; +extern u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern u16 gSendCmd[CMD_LENGTH]; -extern u8 gShouldAdvanceLinkState; -extern struct LinkPlayer gLinkPlayers[]; +extern struct LinkPlayer gLinkPlayers[5]; extern u16 word_3002910[]; extern bool8 gReceivedRemoteLinkPlayers; +extern u32 gUnknown_020223C0; extern bool8 gLinkVSyncDisabled; +extern u32 gLinkStatus; -void Task_DestroySelf(u8); + +void c2_mystery_gift(void); +void sub_801867C(void); +bool8 IsWirelessAdapterConnected(void); +void Task_DestroySelf(u8 taskId); void OpenLink(void); void CloseLink(void); -u16 LinkMain2(u16 *); +u16 LinkMain2(const u16 *); void sub_8007B14(void); bool32 sub_8007B24(void); void ClearLinkCallback(void); void ClearLinkCallback_2(void); u8 GetLinkPlayerCount(void); void OpenLinkTimed(void); -u8 GetLinkPlayerDataExchangeStatusTimed(void); +u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper); bool8 IsLinkPlayerDataExchangeComplete(void); u32 GetLinkPlayerTrainerId(u8); void ResetLinkPlayers(void); @@ -161,11 +220,10 @@ void sub_8007E24(void); void sub_8007E4C(void); u8 GetMultiplayerId(void); u8 bitmask_all_link_players_but_self(void); -bool8 SendBlock(u8, void *, u16); +bool8 SendBlock(u8, const void *, u16); u8 GetBlockReceivedStatus(void); void ResetBlockReceivedFlags(void); void ResetBlockReceivedFlag(u8); -void SetLinkDebugValues(u32, u32); u8 GetLinkPlayerCount_2(void); bool8 IsLinkMaster(void); void CB2_LinkError(void); @@ -174,25 +232,75 @@ bool8 IsLinkConnectionEstablished(void); void SetSuppressLinkErrorMessage(bool8); bool8 HasLinkErrorOccurred(void); void ResetSerial(void); -u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]); +u32 LinkMain1(u8 *shouldAdvanceLinkState, u16 *sendCmd, u16 (*recvCmds)[CMD_LENGTH]); void LinkVSync(void); void Timer3Intr(void); void SerialCB(void); u8 GetLinkPlayerCount(void); bool32 InUnionRoom(void); - void sub_800E0E8(void); bool8 sub_800A520(void); -bool8 sub_8010500(void); -void sub_800DFB4(u8, u8); +void CreateWirelessStatusIndicatorSprite(u8, u8); void sub_800ADF8(void); void sub_800B488(void); -void sub_8009734(void); void sub_800A620(void); void sub_8011BD0(void); -u8 sub_800ABAC(void); -u8 sub_800ABBC(void); +u8 IsLinkMaster(void); void sub_800AC34(void); +bool8 HandleLinkConnection(void); +void SetLinkDebugValues(u32 seed, u32 flags); +void sub_800A418(void); +void SetSuppressLinkErrorMessage(bool8 flag); +void sub_800B524(struct LinkPlayer *linkPlayer); +u8 GetSioMultiSI(void); +void sub_800AAF4(void); +void sub_800AF18(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06); +void sub_800B348(void); +void sub_800B3A4(u32 who); +bool32 sub_800A07C(void); + +extern u16 gLinkPartnersHeldKeys[6]; +extern u32 gLinkDebugSeed; +extern struct LinkPlayerBlock gLocalLinkPlayerBlock; +extern bool8 gLinkErrorOccurred; +extern u32 gLinkDebugFlags; +extern bool8 gRemoteLinkPlayersNotReceived[MAX_LINK_PLAYERS]; +extern u8 gBlockReceivedStatus[MAX_LINK_PLAYERS]; +extern u16 gLinkHeldKeys; +extern u32 gLinkStatus; +extern u8 gUnknown_030030E4; +extern u8 gUnknown_030030E8; +extern u8 gUnknown_030030EC[MAX_LINK_PLAYERS]; +extern u8 gUnknown_030030F0[MAX_LINK_PLAYERS]; +extern u16 gUnknown_030030F4; +extern u8 gSuppressLinkErrorMessage; +extern u8 gWirelessCommType; +extern bool8 gSavedLinkPlayerCount; +extern u8 gSavedMultiplayerId; +extern struct LinkTestBGInfo gLinkTestBGInfo; +extern void (*gLinkCallback)(void); +extern bool8 gShouldAdvanceLinkState; +extern u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS]; +extern u8 gBlockRequestType; +extern u8 gLastSendQueueCount; +extern u8 gLastRecvQueueCount; +extern u16 gLinkSavedIme; +extern u32 gFiller_03003074; +extern u32 gFiller_03003154; +extern u32 gFiller_03003158; +extern u32 gFiller_0300315c; +extern u32 gFiller_03004138; +extern u32 gFiller_0300413C; +extern u32 gFiller_03003080; + +bool32 Link_AnyPartnersPlayingRubyOrSapphire(void); +bool32 sub_800A03C(void); +void sub_8009628(u8); +u8 sub_800AA48(void); +void sub_8009FAC(void); +bool8 sub_800A4D8(u8 a0); +u8 sub_800A9D8(void); +u8 sub_800A0C8(s32, s32); u16 *sub_801B058(void); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h new file mode 100644 index 000000000..c3ca75604 --- /dev/null +++ b/include/link_rfu.h @@ -0,0 +1,268 @@ +#ifndef GUARD_LINK_RFU_H +#define GUARD_LINK_RFU_H + +// Exported type declarations + +struct UnkLinkRfuStruct_02022B2C +{ + u8 unk_00; + u8 unk_01; + u16 unk_02; + u8 unk_04; + u16 unk_06; + struct UnkLinkRfuStruct_02022B14 *unk_08; + u8 *unk_0c; + u8 unk_10; + u8 unk_11; + u16 unk_12; + u16 unk_14; +}; + +struct UnkLinkRfuStruct_02022B44 +{ + u8 fill_00[6]; + u16 unk_06; + u8 fill_08[6]; + vu8 unk_0e; + u8 unk_0f; + u8 fill_10[0x54]; + u16 unk_64; + u8 fill_66[0x1d]; + u8 unk_83; + u8 fill_84[0x58]; +}; + +struct UnkRfuStruct_1 { + /* 0x000 */ u8 unk_00; + /* 0x001 */ u8 unk_01; + /* 0x002 */ vu8 unk_02; + /* 0x003 */ vu8 unk_03; + /* 0x004 */ u8 unk_04; + /* 0x005 */ u8 unk_05; + /* 0x006 */ u8 unk_06; + /* 0x007 */ u8 unk_07; + /* 0x008 */ u8 unk_08; + /* 0x009 */ u8 unk_09; + /* 0x00a */ u8 unk_0a; + /* 0x00b */ u8 unk_0b; + /* 0x00c */ u8 unk_0c; + /* 0x00d */ u8 unk_0d; + /* 0x00e */ u8 unk_0e; + /* 0x00f */ u8 unk_0f; + /* 0x010 */ u8 unk_10; + /* 0x011 */ u8 unk_11; + /* 0x012 */ u8 unk_12; + // aligned + /* 0x014 */ u16 unk_14; + /* 0x016 */ u16 unk_16; + /* 0x018 */ u16 unk_18; + /* 0x01a */ u16 unk_1a; + /* 0x01c */ u16 unk_1c; + /* 0x01e */ u16 unk_1e; + /* 0x020 */ const u16 *unk_20; + /* 0x024 */ u8 unk_24; + /* 0x026 */ u16 unk_26; + /* 0x028 */ u16 unk_28[4]; + /* 0x030 */ u8 unk_30; + // aligned + /* 0x032 */ u16 unk_32; + /* 0x034 */ u16 unk_34[4]; + /* 0x03c */ const struct UnkLinkRfuStruct_02022B2C *unk_3c; + /* 0x040 */ void (*unk_40)(u8, u8); + /* 0x044 */ void (*unk_44)(u16); + /* 0x048 */ u8 filler_48[8]; + /* 0x050 */ u32 unk_50[0x399]; + /* 0xeb4 */ u8 filler_e64[12]; +}; + +struct UnkRfuStruct_2_Sub_6c { + /* 0x00 */ u16 unk_00; + /* 0x02 */ u16 unk_02; + /* 0x04 */ const u8 *unk_04; + /* 0x08 */ u32 unk_08; + /* 0x0c */ u32 unk_0c; + /* 0x10 */ u8 unk_10; + /* 0x11 */ u8 unk_11; + /* 0x12 */ u8 unk_12; +}; + +struct UnkRfuStruct_2_Sub_124 { + /* 0x000 */ u8 unk_00[32][70]; + /* 0x8c0 */ vu8 unk_8c0; + /* 0x8c1 */ vu8 unk_8c1; + /* 0x8c2 */ vu8 unk_8c2; + /* 0x8c3 */ vu8 unk_8c3; +}; + +struct UnkRfuStruct_2_Sub_9e8 { + /* 0x000 */ u8 unk_00[40][14]; + /* 0x230 */ vu8 unk_230; + /* 0x231 */ vu8 unk_231; + /* 0x232 */ vu8 unk_232; + /* 0x233 */ vu8 unk_233; +}; + +struct UnkRfuStruct_2_Sub_c1c { + /* 0x00 */ u8 unk_00[2][14]; + /* 0x1c */ vu8 unk_1c; + /* 0x1d */ vu8 unk_1d; + /* 0x1e */ vu8 unk_1e; +}; + +struct UnkRfuStruct_Sub_Unused { + /* 0x000 */ u8 unk_00[2][256]; + /* 0x200 */ vu8 unk_200; + /* 0x201 */ vu8 unk_201; + /* 0x202 */ vu8 unk_202; + /* 0x203 */ vu8 unk_203; +}; + +struct UnkRfuStruct_2 { + /* 0x000 */ void (*unk_00)(void); + /* 0x004 */ u16 unk_04; + /* 0x006 */ u8 filler_06[4]; + /* 0x00a */ u16 unk_0a; + /* 0x00c */ u8 unk_0c; + /* 0x00d */ u8 playerCount; + /* 0x00e */ u8 unk_0e; + /* 0x00f */ u8 unk_0f; + /* 0x010 */ u16 unk_10; + /* 0x012 */ u16 unk_12; + /* 0x014 */ u8 unk_14[4][14]; + /* 0x04c */ u8 unk_4c[14]; + /* 0x05a */ u8 unk_5a; + /* 0x05b */ u8 unk_5b; + /* 0x05c */ u8 unk_5c[5]; + /* 0x061 */ u8 unk_61[5]; + /* 0x066 */ u8 unk_66; + /* 0x067 */ u8 unk_67; + /* 0x068 */ u8 filler_68[4]; + /* 0x06c */ struct UnkRfuStruct_2_Sub_6c unk_6c; + /* 0x080 */ struct UnkRfuStruct_2_Sub_6c unk_80[5]; + /* 0x0e4 */ u8 unk_e4[5]; + /* 0x0e9 */ u8 unk_e9[5]; + /* 0x0ee */ vu8 unk_ee; + /* 0x0ef */ u8 unk_ef; + /* 0x0f0 */ u8 unk_f0; + /* 0x0f1 */ u8 unk_f1; + /* 0x0f2 */ u16 unk_f2[6]; + /* 0x0fe */ u16 unk_fe; + /* 0x100 */ u16 unk_100; + /* 0x102 */ u8 unk_102; + /* 0x103 */ u8 filler_103[0x21]; + /* 0x124 */ struct UnkRfuStruct_2_Sub_124 unk_124; + /* 0x9e8 */ struct UnkRfuStruct_2_Sub_9e8 unk_9e8; + /* 0xc1c */ struct UnkRfuStruct_2_Sub_c1c unk_c1c; + /* 0xc3c */ vu8 unk_c3c; + /* 0xc3d */ u8 unk_c3d; + /* 0xc3e */ vu8 unk_c3e; + /* 0xc3f */ u8 unk_c3f[70]; + /* 0xc85 */ u8 unk_c85; + /* 0xc86 */ u8 unk_c86; + /* 0xc87 */ u8 unk_c87[5][7][2]; + /* 0xccd */ u8 unk_ccd; + /* 0xcce */ u8 unk_cce; + /* 0xccf */ u8 unk_ccf; + /* 0xcd0 */ vu8 unk_cd0; + /* 0xcd1 */ u8 unk_cd1[4]; + /* 0xcd5 */ u8 unk_cd5[4]; + /* 0xcd9 */ u8 unk_cd9; + /* 0xcda */ u8 unk_cda; + /* 0xcdb */ vu8 unk_cdb; + /* 0xcdc */ vu8 unk_cdc; + /* 0xcdd */ u8 unk_cdd; + /* 0xcde */ u8 unk_cde[4]; + /* 0xce2 */ u8 unk_ce2; + /* 0xce2 */ u8 unk_ce3; + /* 0xce4 */ u8 unk_ce4; + /* 0xce5 */ u8 unk_ce5; + /* 0xce5 */ u8 unk_ce6; + /* 0xce7 */ u8 unk_ce7; + /* 0xce8 */ u8 unk_ce8; + /* 0xce9 */ u8 unk_ce9; + /* 0xcea */ u8 unk_cea[4]; + /* 0xcee */ u8 unk_cee[4]; +}; // size = 0xcf4 + +struct UnkRfuStruct_8010A14 { + char unk_00[15]; + u8 unk_0f; + u8 unk_10[4]; + struct LinkPlayer unk_14[5]; + u8 fill_a0[0x5c]; +}; + +// Exported RAM declarations + +extern struct UnkRfuStruct_1 gUnknown_03004140; +extern struct UnkRfuStruct_2 gUnknown_03005000; + +// Exported ROM declarations +u32 sub_800BEC0(void); +void sub_800E700(void); +void sub_800EDD4(void); +void sub_800F6FC(u8 who); +void sub_800F728(u8 who); +bool32 sub_800F7E4(void); +void sub_800F804(void); +void sub_800F850(void); +u8 sub_800FCD8(void); +bool32 sub_800FE84(const u8 *src, size_t size); +void Rfu_set_zero(void); +u8 sub_80104F4(void); +u8 rfu_get_multiplayer_id(void); +bool8 sub_8010100(u8 a0); +bool8 sub_8010500(void); +bool8 Rfu_IsMaster(void); +void task_add_05_task_del_08FA224_when_no_RfuFunc(void); +void sub_8010434(void); +void sub_800E604(void); +void sub_800E174(void); +void sub_800E6D0(void); +bool32 sub_8010EC0(void); +bool32 sub_8010F1C(void); +bool32 sub_8011A80(void); +bool32 sub_800F0B8(void); +u32 sub_80124D4(void); +void RfuVSync(void); +void sub_80111B0(bool32 a0); +u8 sub_8011A74(void); +struct UnkLinkRfuStruct_02022B14 *sub_800F7DC(void); +void sub_8011068(u8 a0); +void sub_8011170(u32 a0); +void sub_8011A64(u8 a0, u16 a1); +u8 sub_801048C(bool32 a0); +void sub_800DF90(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2); +void sub_8010F84(u8 a0, u32 a1, u32 a2); +void sub_8011C10(u32 a0); +bool32 sub_8012240(void); +void sub_800EF38(void); +bool32 sub_80105EC(void); +bool32 sub_801064C(u16 a0, const u8 *a1); +void sub_8010688(u8 a0, u16 a1, const u8 *a2); +u32 sub_8010714(u16 a0, const u8 *a1); +void sub_8011DC0(const u8 *a0, u16 a1); +bool8 sub_800EF1C(void); +bool32 sub_800EF58(bool32 a0); +void sub_800E084(void); +void sub_801103C(void); +void sub_8011C5C(void); +void sub_80106D4(void); +void sub_800E3A8(void); +void sub_800ED10(void); +void sub_800ED28(void); +void sub_8011090(u8 a0, u32 a1, u32 a2); +void sub_8011FC8(u8 *a0, u16 a1); +void sub_8010FA0(bool32 a0, bool32 a1); +void sub_8010F60(void); +void sub_8010FCC(u32 a0, u32 a1, u32 a2); +void sub_8011C84(void); +void sub_8012188(const u8 *a0, struct UnkLinkRfuStruct_02022B14 *arg1, u8 arg2); +bool32 sub_8011B90(void); +void sub_800FE50(u16 *a0); +bool32 sub_800E540(u16 id, u8 *name); +void sub_8011DE0(u32 arg0); +u8 sub_801100C(int a0); +void sub_800EF7C(void); + +#endif //GUARD_LINK_RFU_H diff --git a/include/list_menu.h b/include/list_menu.h index 0249b06af..d38980213 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -1,56 +1,119 @@ #ifndef GUARD_LIST_MENU_H #define GUARD_LIST_MENU_H -// Exported type declarations +#define LIST_NOTHING_CHOSEN -1 +#define LIST_B_PRESSED -2 +#define LIST_HEADER -3 -// Exported RAM declarations +#define LIST_NO_MULTIPLE_SCROLL 0 +#define LIST_MULTIPLE_SCROLL_DPAD 1 +#define LIST_MULTIPLE_SCROLL_L_R 2 -struct ListMenuItem -{ - const u8 *unk_00; - s32 unk_04; +enum { + SCROLL_ARROW_LEFT, + SCROLL_ARROW_RIGHT, + SCROLL_ARROW_UP, + SCROLL_ARROW_DOWN }; struct ListMenu; +struct ListMenuItem +{ + const u8 *name; + s32 id; +}; + struct ListMenuTemplate { const struct ListMenuItem *items; - void (* unk_04)(u32, bool8, struct ListMenu *); - void (* unk_08)(u8, s32, u8); + void (* moveCursorFunc)(s32 itemIndex, bool8 onInit, struct ListMenu *list); + void (* itemPrintFunc)(u8 windowId, s32 itemId, u8 y); u16 totalItems; u16 maxShowed; - u8 unk_10; - u8 unk_11; - u8 unk_12; - u8 cursor_Y; - u32 upText_Y:4; // x1, x2, x4, x8 = xF - u32 cursorColor:4; // x10, x20, x40, x80 = xF0 - u32 fillColor:4; // x100, x200, x400, x800 = xF00 - u32 cursorShadowColor:4; // x1000, x2000, x4000, x8000 = xF000 - u32 unk_16_0:1; // x10000 - u32 spaceBetweenItems:6; // x20000, x40000, x80000, x100000, x200000, x400000 = x7E0000 - u32 unk_16_7:1; // x800000 - u32 unk_17_0:6; // x1000000, x2000000, x4000000, x8000000, x10000000, x20000000 = x3F000000 + u8 windowId; + u8 header_X; + u8 item_X; + u8 cursor_X; + u8 upText_Y:4; // x1, x2, x4, x8 = xF + u8 cursorPal:4; // x10, x20, x40, x80 = xF0 + u8 fillValue:4; // x1, x2, x4, x8 = xF + u8 cursorShadowPal:4; // x10, x20, x40, x80 = xF0 + u8 lettersSpacing:3; + u8 itemVerticalPadding:3; + u8 scrollMultiple:2; // x40, x80 = xC0 + u8 fontId:6; // x1, x2, x4, x8, x10, x20 = x3F + u8 cursorKind:2; // x40, x80 }; -struct ListMenu { - struct ListMenuTemplate _template; +struct ListMenu +{ + struct ListMenuTemplate template; u16 scrollOffset; u16 selectedRow; u8 unk_1C; u8 unk_1D; - u8 unk_1E; + u8 taskId; u8 unk_1F; }; -extern struct ListMenuTemplate gUnknown_03006310; +struct ListMenuWindowRect +{ + u8 x; + u8 y; + u8 width; + u8 height; + u8 palNum; +}; + +struct ScrollArrowsTemplate +{ + u8 firstArrowType; + u8 firstX; + u8 firstY; + u8 secondArrowType; + u8 secondX; + u8 secondY; + u16 fullyUpThreshold; + u16 fullyDownThreshold; + u16 tileTag; + u16 palTag; + u8 palNum; +}; + +struct CursorStruct +{ + u8 left; + u8 top; + u16 rowWidth; + u16 rowHeight; + u16 tileTag; + u16 palTag; + u8 palNum; +}; -// Exported ROM declarations +extern struct ScrollArrowsTemplate gTempScrollArrowTemplate; +extern struct ListMenuTemplate gMultiuseListMenuTemplate; -u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2); -s32 ListMenuHandleInput(u8 id); -void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2); -void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2); +s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum); +u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow); +u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *arg1, u16 scrollOffset, u16 selectedRow); +s32 ListMenuHandleInputGetItemId(u8 listTaskId); +void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow); +void RedrawListMenu(u8 listTaskId); +void ChangeListMenuPals(u8 listTaskId, u8 cursorPal, u8 fillValue, u8 cursorShadowPal); +void ChangeListMenuCoords(u8 listTaskId, u8 x, u8 y); +s32 ListMenuTestInput(struct ListMenuTemplate *template, u32 scrollOffset, u32 selectedRow, u16 keys, u16 *newScrollOffset, u16 *newSelectedRow); +void ListMenuGetCurrentItemArrayId(u8 listTaskId, u16 *arrayId); +void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow); +u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId); +void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal); +void ListMenuDefaultCursorMoveFunc(s32 arg0, u8 arg1, struct ListMenu *list); +s32 ListMenuGetUnkIndicatorsStructFields(u8 taskId, u8 field); +void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value); +u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate *arrowInfo, u16 *arg1); +u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *currItemPtr); +void RemoveScrollIndicatorArrowPair(u8 taskId); +void Task_ScrollIndicatorArrowPairOnMainMenu(u8 taskId); #endif //GUARD_LIST_MENU_H diff --git a/include/load_save.h b/include/load_save.h index 1f406bbad..5fb5f6c42 100644 --- a/include/load_save.h +++ b/include/load_save.h @@ -1,24 +1,35 @@ #ifndef GUARD_LOAD_SAVE_H #define GUARD_LOAD_SAVE_H +extern struct SaveBlock1 gSaveblock1; +extern struct SaveBlock2 gSaveblock2; +extern struct PokemonStorage gPokemonStorage; + extern bool32 gFlashMemoryPresent; +extern struct SaveBlock1 *gSaveBlock1Ptr; +extern struct SaveBlock2 *gSaveBlock2Ptr; +extern struct PokemonStorage *gPokemonStoragePtr; +void CheckForFlashMemory(void); void ClearSav2(void); void ClearSav1(void); -void CheckForFlashMemory(void); +void SetSaveBlocksPointers(u16 offset); void MoveSaveBlocks_ResetHeap(void); -bool32 GetSecretBase2Field_9(void); +u32 GetSecretBase2Field_9(void); void ClearSecretBase2Field_9(void); -void SetSecretBase2Field_9(void); -void SetSecretBase2Field_9_AndHideBG(void); -void ClearSecretBase2Field_9_2(void); +void sub_8076D48(void); +void sub_8076D5C(void); +void sav2_gender2_inplace_and_xFE(void); void SavePlayerParty(void); void LoadPlayerParty(void); +void SaveEventObjects(void); +void LoadEventObjects(void); void SaveSerializedGame(void); void LoadSerializedGame(void); void LoadPlayerBag(void); void SavePlayerBag(void); -void SetSaveBlocksPointers(u16); -void MoveSaveBlocks_ResetHeap(void); +void ApplyNewEncryptionKeyToHword(u16 *hWord, u32 newKey); +void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey); +void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); #endif // GUARD_LOAD_SAVE_H diff --git a/include/m4a.h b/include/m4a.h index 8c3380dd8..a1f413cf5 100644 --- a/include/m4a.h +++ b/include/m4a.h @@ -17,4 +17,9 @@ void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed); void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed); void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo); +extern struct MusicPlayerInfo gMPlayInfo_SE1; +extern struct MusicPlayerInfo gMPlayInfo_SE2; +extern struct MusicPlayerInfo gMPlayInfo_SE3; +extern struct SoundInfo gSoundInfo; + #endif //GUARD_M4A_H diff --git a/include/mail.h b/include/mail.h index 1a29d73b5..042586653 100644 --- a/include/mail.h +++ b/include/mail.h @@ -1,8 +1,6 @@ #ifndef GUARD_MAIL_H #define GUARD_MAIL_H -#include "items.h" - #define IS_ITEM_MAIL(itemId)((itemId == ITEM_ORANGE_MAIL \ || itemId == ITEM_HARBOR_MAIL \ || itemId == ITEM_GLITTER_MAIL \ @@ -16,10 +14,20 @@ || itemId == ITEM_FAB_MAIL \ || itemId == ITEM_RETRO_MAIL)) +// mail.h +void ReadMail(struct MailStruct *mail, void (*callback)(void), bool8 flag); +// mail_data.h +void ClearMailData(void); +void ClearMailStruct(struct MailStruct *mail); bool8 MonHasMail(struct Pokemon *mon); -void TakeMailFromMon(struct Pokemon *mon); +u8 GiveMailToMon(struct Pokemon *mon, u16 itemId); +u16 SpeciesToMailSpecies(u16 species, u32 personality); +u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer); u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail); -void ClearMailStruct(struct MailStruct *mail); +void TakeMailFromMon(struct Pokemon *mon); +void ClearMailItemId(u8 mailId); +u8 TakeMailFromMon2(struct Pokemon *mon); +bool8 ItemIsMail(u16 itemId); #endif // GUARD_MAIL_H diff --git a/include/mail_data.h b/include/mail_data.h deleted file mode 100644 index bf6540bad..000000000 --- a/include/mail_data.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef GUARD_MAIL_DATA_H -#define GUARD_MAIL_DATA_H - -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations - -u16 sub_80D45E8(u16, u16 *); - -#endif //GUARD_MAIL_DATA_H diff --git a/include/main.h b/include/main.h index e283d1754..3de34de13 100644 --- a/include/main.h +++ b/include/main.h @@ -42,14 +42,19 @@ struct Main /*0x439*/ u8 field_439_x4:1; }; -extern u8 gUnknown_3001764; -extern struct Main gMain; -extern bool8 gSoftResetDisabled; -extern bool8 gLinkVSyncDisabled; - extern const u8 gGameVersion; extern const u8 gGameLanguage; +extern u16 gKeyRepeatStartDelay; +extern bool8 gLinkTransferringData; +extern struct Main gMain; +extern u16 gKeyRepeatContinueDelay; +extern bool8 gSoftResetDisabled; +extern IntrFunc gIntrTable[]; +extern u8 gLinkVSyncDisabled; +extern u32 IntrMain_Buffer[]; +extern u8 gPcmDmaCounter; + void AgbMain(void); void SetMainCallback2(MainCallback callback); void InitKeys(void); @@ -60,5 +65,8 @@ void SetSerialCallback(IntrCallback callback); void InitFlashTimer(void); void DoSoftReset(void); void ClearPokemonCrySongs(void); +void RestoreSerialTimer3IntrHandlers(void); +void StartTimer1(void); +void SeedRngAndSetTrainerId(void); #endif // GUARD_MAIN_H diff --git a/include/main_menu.h b/include/main_menu.h new file mode 100644 index 000000000..08cd913dc --- /dev/null +++ b/include/main_menu.h @@ -0,0 +1,6 @@ +#ifndef GUARD_MAIN_MENU_H +#define GUARD_MAIN_MENU_H + +void CB2_InitMainMenu(void); + +#endif // GUARD_MAIN_MENU_H diff --git a/include/malloc.h b/include/malloc.h index 003ee1f03..6efa8fbef 100644 --- a/include/malloc.h +++ b/include/malloc.h @@ -1,6 +1,7 @@ #ifndef GUARD_MALLOC_H #define GUARD_MALLOC_H +#define HEAP_SIZE 0x1C000 #define malloc Alloc #define calloc(ct, sz) AllocZeroed((ct) * (sz)) #define free Free diff --git a/include/map_constants.h b/include/map_constants.h deleted file mode 100644 index 6199793c8..000000000 --- a/include/map_constants.h +++ /dev/null @@ -1,1342 +0,0 @@ -#ifndef GUARD_MAP_CONSTANTS_H -#define GUARD_MAP_CONSTANTS_H - -//-------------------------------------------------- -// Map Group 0 -//-------------------------------------------------- - -enum -{ - MAP_ID_PETALBURG_CITY, - MAP_ID_SLATEPORT_CITY, - MAP_ID_MAUVILLE_CITY, - MAP_ID_RUSTBORO_CITY, - MAP_ID_FORTREE_CITY, - MAP_ID_LILYCOVE_CITY, - MAP_ID_MOSSDEEP_CITY, - MAP_ID_SOOTOPOLIS_CITY, - MAP_ID_EVER_GRANDE_CITY, - MAP_ID_LITTLEROOT_TOWN, - MAP_ID_OLDALE_TOWN, - MAP_ID_DEWFORD_TOWN, - MAP_ID_LAVARIDGE_TOWN, - MAP_ID_FALLARBOR_TOWN, - MAP_ID_VERDANTURF_TOWN, - MAP_ID_PACIFIDLOG_TOWN, - MAP_ID_ROUTE101, - MAP_ID_ROUTE102, - MAP_ID_ROUTE103, - MAP_ID_ROUTE104, - MAP_ID_ROUTE105, - MAP_ID_ROUTE106, - MAP_ID_ROUTE107, - MAP_ID_ROUTE108, - MAP_ID_ROUTE109, - MAP_ID_ROUTE110, - MAP_ID_ROUTE111, - MAP_ID_ROUTE112, - MAP_ID_ROUTE113, - MAP_ID_ROUTE114, - MAP_ID_ROUTE115, - MAP_ID_ROUTE116, - MAP_ID_ROUTE117, - MAP_ID_ROUTE118, - MAP_ID_ROUTE119, - MAP_ID_ROUTE120, - MAP_ID_ROUTE121, - MAP_ID_ROUTE122, - MAP_ID_ROUTE123, - MAP_ID_ROUTE124, - MAP_ID_ROUTE125, - MAP_ID_ROUTE126, - MAP_ID_ROUTE127, - MAP_ID_ROUTE128, - MAP_ID_ROUTE129, - MAP_ID_ROUTE130, - MAP_ID_ROUTE131, - MAP_ID_ROUTE132, - MAP_ID_ROUTE133, - MAP_ID_ROUTE134, - MAP_ID_UNDERWATER1, - MAP_ID_UNDERWATER2, - MAP_ID_UNDERWATER3, - MAP_ID_UNDERWATER4, - MAP_ID_UNDERWATER5, - MAP_ID_UNDERWATER6, - MAP_ID_UNDERWATER7, -}; - -#define MAP_GROUP_PETALBURG_CITY 0 -#define MAP_GROUP_SLATEPORT_CITY 0 -#define MAP_GROUP_MAUVILLE_CITY 0 -#define MAP_GROUP_RUSTBORO_CITY 0 -#define MAP_GROUP_FORTREE_CITY 0 -#define MAP_GROUP_LILYCOVE_CITY 0 -#define MAP_GROUP_MOSSDEEP_CITY 0 -#define MAP_GROUP_SOOTOPOLIS_CITY 0 -#define MAP_GROUP_EVER_GRANDE_CITY 0 -#define MAP_GROUP_LITTLEROOT_TOWN 0 -#define MAP_GROUP_OLDALE_TOWN 0 -#define MAP_GROUP_DEWFORD_TOWN 0 -#define MAP_GROUP_LAVARIDGE_TOWN 0 -#define MAP_GROUP_FALLARBOR_TOWN 0 -#define MAP_GROUP_VERDANTURF_TOWN 0 -#define MAP_GROUP_PACIFIDLOG_TOWN 0 -#define MAP_GROUP_ROUTE101 0 -#define MAP_GROUP_ROUTE102 0 -#define MAP_GROUP_ROUTE103 0 -#define MAP_GROUP_ROUTE104 0 -#define MAP_GROUP_ROUTE105 0 -#define MAP_GROUP_ROUTE106 0 -#define MAP_GROUP_ROUTE107 0 -#define MAP_GROUP_ROUTE108 0 -#define MAP_GROUP_ROUTE109 0 -#define MAP_GROUP_ROUTE110 0 -#define MAP_GROUP_ROUTE111 0 -#define MAP_GROUP_ROUTE112 0 -#define MAP_GROUP_ROUTE113 0 -#define MAP_GROUP_ROUTE114 0 -#define MAP_GROUP_ROUTE115 0 -#define MAP_GROUP_ROUTE116 0 -#define MAP_GROUP_ROUTE117 0 -#define MAP_GROUP_ROUTE118 0 -#define MAP_GROUP_ROUTE119 0 -#define MAP_GROUP_ROUTE120 0 -#define MAP_GROUP_ROUTE121 0 -#define MAP_GROUP_ROUTE122 0 -#define MAP_GROUP_ROUTE123 0 -#define MAP_GROUP_ROUTE124 0 -#define MAP_GROUP_ROUTE125 0 -#define MAP_GROUP_ROUTE126 0 -#define MAP_GROUP_ROUTE127 0 -#define MAP_GROUP_ROUTE128 0 -#define MAP_GROUP_ROUTE129 0 -#define MAP_GROUP_ROUTE130 0 -#define MAP_GROUP_ROUTE131 0 -#define MAP_GROUP_ROUTE132 0 -#define MAP_GROUP_ROUTE133 0 -#define MAP_GROUP_ROUTE134 0 -#define MAP_GROUP_UNDERWATER1 0 -#define MAP_GROUP_UNDERWATER2 0 -#define MAP_GROUP_UNDERWATER3 0 -#define MAP_GROUP_UNDERWATER4 0 -#define MAP_GROUP_UNDERWATER5 0 -#define MAP_GROUP_UNDERWATER6 0 -#define MAP_GROUP_UNDERWATER7 0 -//-------------------------------------------------- -// Map Group 1 -//-------------------------------------------------- - -enum -{ - MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F, - MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, - MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F, - MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F, - MAP_ID_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB, -}; - -#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F 1 -#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 1 -#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_1F 1 -#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F 1 -#define MAP_GROUP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB 1 - -//-------------------------------------------------- -// Map Group 2 -//-------------------------------------------------- - -enum -{ - MAP_ID_OLDALE_TOWN_HOUSE1, - MAP_ID_OLDALE_TOWN_HOUSE2, - MAP_ID_OLDALE_TOWN_POKEMON_CENTER_1F, - MAP_ID_OLDALE_TOWN_POKEMON_CENTER_2F, - MAP_ID_OLDALE_TOWN_MART, -}; - -#define MAP_GROUP_OLDALE_TOWN_HOUSE1 2 -#define MAP_GROUP_OLDALE_TOWN_HOUSE2 2 -#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_1F 2 -#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_2F 2 -#define MAP_GROUP_OLDALE_TOWN_MART 2 - -//-------------------------------------------------- -// Map Group 3 -//-------------------------------------------------- - -enum -{ - MAP_ID_DEWFORD_TOWN_HOUSE1, - MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_1F, - MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_2F, - MAP_ID_DEWFORD_TOWN_GYM, - MAP_ID_DEWFORD_TOWN_HALL, - MAP_ID_DEWFORD_TOWN_HOUSE2, -}; - -#define MAP_GROUP_DEWFORD_TOWN_HOUSE1 3 -#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_1F 3 -#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_2F 3 -#define MAP_GROUP_DEWFORD_TOWN_GYM 3 -#define MAP_GROUP_DEWFORD_TOWN_HALL 3 -#define MAP_GROUP_DEWFORD_TOWN_HOUSE2 3 - -//-------------------------------------------------- -// Map Group 4 -//-------------------------------------------------- - -enum -{ - MAP_ID_LAVARIDGE_TOWN_HERB_SHOP, - MAP_ID_LAVARIDGE_TOWN_GYM_1F, - MAP_ID_LAVARIDGE_TOWN_GYM_B1F, - MAP_ID_LAVARIDGE_TOWN_HOUSE, - MAP_ID_LAVARIDGE_TOWN_MART, - MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_1F, - MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_2F, -}; - -#define MAP_GROUP_LAVARIDGE_TOWN_HERB_SHOP 4 -#define MAP_GROUP_LAVARIDGE_TOWN_GYM_1F 4 -#define MAP_GROUP_LAVARIDGE_TOWN_GYM_B1F 4 -#define MAP_GROUP_LAVARIDGE_TOWN_HOUSE 4 -#define MAP_GROUP_LAVARIDGE_TOWN_MART 4 -#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_1F 4 -#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_2F 4 - -//-------------------------------------------------- -// Map Group 5 -//-------------------------------------------------- - -enum -{ - MAP_ID_FALLARBOR_TOWN_MART, - MAP_ID_FALLARBOR_TOWN_TENT_LOBBY, - MAP_ID_FALLARBOR_TOWN_TENT_HALL, - MAP_ID_FALLARBOR_TOWN_TENT_ARENA, - MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_1F, - MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_2F, - MAP_ID_FALLARBOR_TOWN_HOUSE1, - MAP_ID_FALLARBOR_TOWN_HOUSE2, -}; - -#define MAP_GROUP_FALLARBOR_TOWN_MART 5 -#define MAP_GROUP_FALLARBOR_TOWN_TENT_LOBBY 5 -#define MAP_GROUP_FALLARBOR_TOWN_TENT_HALL 5 -#define MAP_GROUP_FALLARBOR_TOWN_TENT_ARENA 5 -#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_1F 5 -#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_2F 5 -#define MAP_GROUP_FALLARBOR_TOWN_HOUSE1 5 -#define MAP_GROUP_FALLARBOR_TOWN_HOUSE2 5 - -//-------------------------------------------------- -// Map Group 6 -//-------------------------------------------------- - -enum -{ - MAP_ID_VERDANTURF_TOWN_TENT_LOBBY, - MAP_ID_VERDANTURF_TOWN_TENT_HALL, - MAP_ID_VERDANTURF_TOWN_TENT_ARENA, - MAP_ID_VERDANTURF_TOWN_MART, - MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_1F, - MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_2F, - MAP_ID_VERDANTURF_TOWN_WANDAS_HOUSE, - MAP_ID_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE, - MAP_ID_VERDANTURF_TOWN_HOUSE, -}; - -#define MAP_GROUP_VERDANTURF_TOWN_TENT_LOBBY 6 -#define MAP_GROUP_VERDANTURF_TOWN_TENT_HALL 6 -#define MAP_GROUP_VERDANTURF_TOWN_TENT_ARENA 6 -#define MAP_GROUP_VERDANTURF_TOWN_MART 6 -#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_1F 6 -#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_2F 6 -#define MAP_GROUP_VERDANTURF_TOWN_WANDAS_HOUSE 6 -#define MAP_GROUP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE 6 -#define MAP_GROUP_VERDANTURF_TOWN_HOUSE 6 - -//-------------------------------------------------- -// Map Group 7 -//-------------------------------------------------- - -enum -{ - MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_1F, - MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_2F, - MAP_ID_PACIFIDLOG_TOWN_HOUSE1, - MAP_ID_PACIFIDLOG_TOWN_HOUSE2, - MAP_ID_PACIFIDLOG_TOWN_HOUSE3, - MAP_ID_PACIFIDLOG_TOWN_HOUSE4, - MAP_ID_PACIFIDLOG_TOWN_HOUSE5, -}; - -#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F 7 -#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F 7 -#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE1 7 -#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE2 7 -#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE3 7 -#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE4 7 -#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE5 7 - -//-------------------------------------------------- -// Map Group 8 -//-------------------------------------------------- - -enum -{ - MAP_ID_PETALBURG_CITY_WALLYS_HOUSE, - MAP_ID_PETALBURG_CITY_GYM, - MAP_ID_PETALBURG_CITY_HOUSE1, - MAP_ID_PETALBURG_CITY_HOUSE2, - MAP_ID_PETALBURG_CITY_POKEMON_CENTER_1F, - MAP_ID_PETALBURG_CITY_POKEMON_CENTER_2F, - MAP_ID_PETALBURG_CITY_MART, -}; - -#define MAP_GROUP_PETALBURG_CITY_WALLYS_HOUSE 8 -#define MAP_GROUP_PETALBURG_CITY_GYM 8 -#define MAP_GROUP_PETALBURG_CITY_HOUSE1 8 -#define MAP_GROUP_PETALBURG_CITY_HOUSE2 8 -#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_1F 8 -#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_2F 8 -#define MAP_GROUP_PETALBURG_CITY_MART 8 - -//-------------------------------------------------- -// Map Group 9 -//-------------------------------------------------- - -enum -{ - MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_1F, - MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_2F, - MAP_ID_SLATEPORT_CITY_TENT_LOBBY, - MAP_ID_SLATEPORT_CITY_TENT_HALL, - MAP_ID_SLATEPORT_CITY_TENT_ARENA, - MAP_ID_SLATEPORT_CITY_HOUSE1, - MAP_ID_SLATEPORT_CITY_POKEMON_FAN_CLUB, - MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_1F, - MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_2F, - MAP_ID_SLATEPORT_CITY_HARBOR, - MAP_ID_SLATEPORT_CITY_HOUSE2, - MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_1F, - MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_2F, - MAP_ID_SLATEPORT_CITY_MART, -}; - -#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_1F 9 -#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_2F 9 -#define MAP_GROUP_SLATEPORT_CITY_TENT_LOBBY 9 -#define MAP_GROUP_SLATEPORT_CITY_TENT_HALL 9 -#define MAP_GROUP_SLATEPORT_CITY_TENT_ARENA 9 -#define MAP_GROUP_SLATEPORT_CITY_HOUSE1 9 -#define MAP_GROUP_SLATEPORT_CITY_POKEMON_FAN_CLUB 9 -#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F 9 -#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F 9 -#define MAP_GROUP_SLATEPORT_CITY_HARBOR 9 -#define MAP_GROUP_SLATEPORT_CITY_HOUSE2 9 -#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_1F 9 -#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_2F 9 -#define MAP_GROUP_SLATEPORT_CITY_MART 9 - -//-------------------------------------------------- -// Map Group 10 -//-------------------------------------------------- - -enum -{ - MAP_ID_MAUVILLE_CITY_GYM, - MAP_ID_MAUVILLE_CITY_BIKE_SHOP, - MAP_ID_MAUVILLE_CITY_HOUSE1, - MAP_ID_MAUVILLE_CITY_GAME_CORNER, - MAP_ID_MAUVILLE_CITY_HOUSE2, - MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_1F, - MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_2F, - MAP_ID_MAUVILLE_CITY_MART, -}; - -#define MAP_GROUP_MAUVILLE_CITY_GYM 10 -#define MAP_GROUP_MAUVILLE_CITY_BIKE_SHOP 10 -#define MAP_GROUP_MAUVILLE_CITY_HOUSE1 10 -#define MAP_GROUP_MAUVILLE_CITY_GAME_CORNER 10 -#define MAP_GROUP_MAUVILLE_CITY_HOUSE2 10 -#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_1F 10 -#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_2F 10 -#define MAP_GROUP_MAUVILLE_CITY_MART 10 - -//-------------------------------------------------- -// Map Group 11 -//-------------------------------------------------- - -enum -{ - MAP_ID_RUSTBORO_CITY_DEVON_CORP_1F, - MAP_ID_RUSTBORO_CITY_DEVON_CORP_2F, - MAP_ID_RUSTBORO_CITY_DEVON_CORP_3F, - MAP_ID_RUSTBORO_CITY_GYM, - MAP_ID_RUSTBORO_CITY_POKEMON_SCHOOL, - MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_1F, - MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_2F, - MAP_ID_RUSTBORO_CITY_MART, - MAP_ID_RUSTBORO_CITY_FLAT1_1F, - MAP_ID_RUSTBORO_CITY_FLAT1_2F, - MAP_ID_RUSTBORO_CITY_HOUSE1, - MAP_ID_RUSTBORO_CITY_CUTTERS_HOUSE, - MAP_ID_RUSTBORO_CITY_HOUSE2, - MAP_ID_RUSTBORO_CITY_FLAT2_1F, - MAP_ID_RUSTBORO_CITY_FLAT2_2F, - MAP_ID_RUSTBORO_CITY_FLAT2_3F, - MAP_ID_RUSTBORO_CITY_HOUSE3, -}; - -#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_1F 11 -#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_2F 11 -#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_3F 11 -#define MAP_GROUP_RUSTBORO_CITY_GYM 11 -#define MAP_GROUP_RUSTBORO_CITY_POKEMON_SCHOOL 11 -#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_1F 11 -#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_2F 11 -#define MAP_GROUP_RUSTBORO_CITY_MART 11 -#define MAP_GROUP_RUSTBORO_CITY_FLAT1_1F 11 -#define MAP_GROUP_RUSTBORO_CITY_FLAT1_2F 11 -#define MAP_GROUP_RUSTBORO_CITY_HOUSE1 11 -#define MAP_GROUP_RUSTBORO_CITY_CUTTERS_HOUSE 11 -#define MAP_GROUP_RUSTBORO_CITY_HOUSE2 11 -#define MAP_GROUP_RUSTBORO_CITY_FLAT2_1F 11 -#define MAP_GROUP_RUSTBORO_CITY_FLAT2_2F 11 -#define MAP_GROUP_RUSTBORO_CITY_FLAT2_3F 11 -#define MAP_GROUP_RUSTBORO_CITY_HOUSE3 11 - -//-------------------------------------------------- -// Map Group 12 -//-------------------------------------------------- - -enum -{ - MAP_ID_FORTREE_CITY_HOUSE1, - MAP_ID_FORTREE_CITY_GYM, - MAP_ID_FORTREE_CITY_POKEMON_CENTER_1F, - MAP_ID_FORTREE_CITY_POKEMON_CENTER_2F, - MAP_ID_FORTREE_CITY_MART, - MAP_ID_FORTREE_CITY_HOUSE2, - MAP_ID_FORTREE_CITY_HOUSE3, - MAP_ID_FORTREE_CITY_HOUSE4, - MAP_ID_FORTREE_CITY_HOUSE5, - MAP_ID_FORTREE_CITY_DECORATION_SHOP, -}; - -#define MAP_GROUP_FORTREE_CITY_HOUSE1 12 -#define MAP_GROUP_FORTREE_CITY_GYM 12 -#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_1F 12 -#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_2F 12 -#define MAP_GROUP_FORTREE_CITY_MART 12 -#define MAP_GROUP_FORTREE_CITY_HOUSE2 12 -#define MAP_GROUP_FORTREE_CITY_HOUSE3 12 -#define MAP_GROUP_FORTREE_CITY_HOUSE4 12 -#define MAP_GROUP_FORTREE_CITY_HOUSE5 12 -#define MAP_GROUP_FORTREE_CITY_DECORATION_SHOP 12 - -//-------------------------------------------------- -// Map Group 13 -//-------------------------------------------------- - -enum -{ - MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F, - MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_2F, - MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F, - MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F, - MAP_ID_LILYCOVE_CITY_CONTEST_LOBBY, - MAP_ID_LILYCOVE_CITY_CONTEST_HALL, - MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_1F, - MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_2F, - MAP_ID_LILYCOVE_CITY_UNUSED_MART, - MAP_ID_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB, - MAP_ID_LILYCOVE_CITY_HARBOR, - MAP_ID_LILYCOVE_CITY_MOVE_DELETERS_HOUSE, - MAP_ID_LILYCOVE_CITY_HOUSE1, - MAP_ID_LILYCOVE_CITY_HOUSE2, - MAP_ID_LILYCOVE_CITY_HOUSE3, - MAP_ID_LILYCOVE_CITY_HOUSE4, - MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_1F, - MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_2F, - MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_3F, - MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_4F, - MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_5F, - MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP, - MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR, -}; - -#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F 13 -#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F 13 -#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F 13 -#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F 13 -#define MAP_GROUP_LILYCOVE_CITY_CONTEST_LOBBY 13 -#define MAP_GROUP_LILYCOVE_CITY_CONTEST_HALL 13 -#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_1F 13 -#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_2F 13 -#define MAP_GROUP_LILYCOVE_CITY_UNUSED_MART 13 -#define MAP_GROUP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB 13 -#define MAP_GROUP_LILYCOVE_CITY_HARBOR 13 -#define MAP_GROUP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE 13 -#define MAP_GROUP_LILYCOVE_CITY_HOUSE1 13 -#define MAP_GROUP_LILYCOVE_CITY_HOUSE2 13 -#define MAP_GROUP_LILYCOVE_CITY_HOUSE3 13 -#define MAP_GROUP_LILYCOVE_CITY_HOUSE4 13 -#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_1F 13 -#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_2F 13 -#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_3F 13 -#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_4F 13 -#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_5F 13 -#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP 13 -#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR 13 - -//-------------------------------------------------- -// Map Group 14 -//-------------------------------------------------- - -enum -{ - MAP_ID_MOSSDEEP_CITY_GYM, - MAP_ID_MOSSDEEP_CITY_HOUSE1, - MAP_ID_MOSSDEEP_CITY_HOUSE2, - MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_1F, - MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_2F, - MAP_ID_MOSSDEEP_CITY_MART, - MAP_ID_MOSSDEEP_CITY_HOUSE3, - MAP_ID_MOSSDEEP_CITY_STEVENS_HOUSE, - MAP_ID_MOSSDEEP_CITY_HOUSE4, - MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_1F, - MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_2F, - MAP_ID_MOSSDEEP_CITY_GAME_CORNER_1F, - MAP_ID_MOSSDEEP_CITY_GAME_CORNER_B1F, -}; - -#define MAP_GROUP_MOSSDEEP_CITY_GYM 14 -#define MAP_GROUP_MOSSDEEP_CITY_HOUSE1 14 -#define MAP_GROUP_MOSSDEEP_CITY_HOUSE2 14 -#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_1F 14 -#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_2F 14 -#define MAP_GROUP_MOSSDEEP_CITY_MART 14 -#define MAP_GROUP_MOSSDEEP_CITY_HOUSE3 14 -#define MAP_GROUP_MOSSDEEP_CITY_STEVENS_HOUSE 14 -#define MAP_GROUP_MOSSDEEP_CITY_HOUSE4 14 -#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_1F 14 -#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_2F 14 -#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_1F 14 -#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_B1F 14 - -//-------------------------------------------------- -// Map Group 15 -//-------------------------------------------------- - -enum -{ - MAP_ID_SOOTOPOLIS_CITY_GYM_1F, - MAP_ID_SOOTOPOLIS_CITY_GYM_B1F, - MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_1F, - MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_2F, - MAP_ID_SOOTOPOLIS_CITY_MART, - MAP_ID_SOOTOPOLIS_CITY_HOUSE1, - MAP_ID_SOOTOPOLIS_CITY_HOUSE2, - MAP_ID_SOOTOPOLIS_CITY_HOUSE3, - MAP_ID_SOOTOPOLIS_CITY_HOUSE4, - MAP_ID_SOOTOPOLIS_CITY_HOUSE5, - MAP_ID_SOOTOPOLIS_CITY_HOUSE6, - MAP_ID_SOOTOPOLIS_CITY_HOUSE7, - MAP_ID_SOOTOPOLIS_CITY_HOUSE8, - MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_1, - MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_2, -}; - -#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_1F 15 -#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_B1F 15 -#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F 15 -#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F 15 -#define MAP_GROUP_SOOTOPOLIS_CITY_MART 15 -#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE1 15 -#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE2 15 -#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE3 15 -#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE4 15 -#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE5 15 -#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE6 15 -#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE7 15 -#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE8 15 -#define MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_1 15 -#define MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_2 15 -//-------------------------------------------------- -// Map Group 16 -//-------------------------------------------------- - -enum -{ - MAP_ID_EVER_GRANDE_CITY_SIDNEYS_ROOM, - MAP_ID_EVER_GRANDE_CITY_PHOEBES_ROOM, - MAP_ID_EVER_GRANDE_CITY_GLACIAS_ROOM, - MAP_ID_EVER_GRANDE_CITY_DRAKES_ROOM, - MAP_ID_EVER_GRANDE_CITY_CHAMPIONS_ROOM, - MAP_ID_EVER_GRANDE_CITY_CORRIDOR1, - MAP_ID_EVER_GRANDE_CITY_CORRIDOR2, - MAP_ID_EVER_GRANDE_CITY_CORRIDOR3, - MAP_ID_EVER_GRANDE_CITY_CORRIDOR4, - MAP_ID_EVER_GRANDE_CITY_CORRIDOR5, - MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F, - MAP_ID_EVER_GRANDE_CITY_HALL_OF_FAME, - MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_1F, - MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_2F, - MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F, -}; - -#define MAP_GROUP_EVER_GRANDE_CITY_SIDNEYS_ROOM 16 -#define MAP_GROUP_EVER_GRANDE_CITY_PHOEBES_ROOM 16 -#define MAP_GROUP_EVER_GRANDE_CITY_GLACIAS_ROOM 16 -#define MAP_GROUP_EVER_GRANDE_CITY_DRAKES_ROOM 16 -#define MAP_GROUP_EVER_GRANDE_CITY_CHAMPIONS_ROOM 16 -#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR1 16 -#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR2 16 -#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR3 16 -#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR4 16 -#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR5 16 -#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F 16 -#define MAP_GROUP_EVER_GRANDE_CITY_HALL_OF_FAME 16 -#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_1F 16 -#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_2F 16 -#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F 16 - -//-------------------------------------------------- -// Map Group 17 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE104_MR_BRINEYS_HOUSE, - MAP_ID_ROUTE104_PRETTY_PETAL_FLOWER_SHOP, -}; - -#define MAP_GROUP_ROUTE104_MR_BRINEYS_HOUSE 17 -#define MAP_GROUP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP 17 - -//-------------------------------------------------- -// Map Group 18 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE111_WINSTRATE_FAMILYS_HOUSE, - MAP_ID_ROUTE111_OLD_LADYS_REST_STOP, -}; - -#define MAP_GROUP_ROUTE111_WINSTRATE_FAMILYS_HOUSE 18 -#define MAP_GROUP_ROUTE111_OLD_LADYS_REST_STOP 18 - -//-------------------------------------------------- -// Map Group 19 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE112_CABLE_CAR_STATION, - MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION, -}; - -#define MAP_GROUP_ROUTE112_CABLE_CAR_STATION 19 -#define MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION 19 - -//-------------------------------------------------- -// Map Group 20 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE114_FOSSIL_MANIACS_HOUSE, - MAP_ID_ROUTE114_FOSSIL_MANIACS_TUNNEL, - MAP_ID_ROUTE114_LANETTES_HOUSE, -}; - -#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_HOUSE 20 -#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_TUNNEL 20 -#define MAP_GROUP_ROUTE114_LANETTES_HOUSE 20 - -//-------------------------------------------------- -// Map Group 21 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE116_TUNNELERS_REST_HOUSE, -}; - -#define MAP_GROUP_ROUTE116_TUNNELERS_REST_HOUSE 21 - -//-------------------------------------------------- -// Map Group 22 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE117_POKEMON_DAY_CARE, -}; - -#define MAP_GROUP_ROUTE117_POKEMON_DAY_CARE 22 - -//-------------------------------------------------- -// Map Group 23 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE121_SAFARI_ZONE_ENTRANCE, -}; - -#define MAP_GROUP_ROUTE121_SAFARI_ZONE_ENTRANCE 23 - -//-------------------------------------------------- -// Map Group 24 -//-------------------------------------------------- - -enum -{ - MAP_ID_METEOR_FALLS_1F_1R, - MAP_ID_METEOR_FALLS_1F_2R, - MAP_ID_METEOR_FALLS_B1F_1R, - MAP_ID_METEOR_FALLS_B1F_2R, - MAP_ID_RUSTURF_TUNNEL, - MAP_ID_UNDERWATER_SOOTOPOLIS_CITY, - MAP_ID_DESERT_RUINS, - MAP_ID_GRANITE_CAVE_1F, - MAP_ID_GRANITE_CAVE_B1F, - MAP_ID_GRANITE_CAVE_B2F, - MAP_ID_GRANITE_CAVE_STEVENS_ROOM, - MAP_ID_PETALBURG_WOODS, - MAP_ID_MT_CHIMNEY, - MAP_ID_JAGGED_PASS, - MAP_ID_FIERY_PATH, - MAP_ID_MT_PYRE_1F, - MAP_ID_MT_PYRE_2F, - MAP_ID_MT_PYRE_3F, - MAP_ID_MT_PYRE_4F, - MAP_ID_MT_PYRE_5F, - MAP_ID_MT_PYRE_6F, - MAP_ID_MT_PYRE_EXTERIOR, - MAP_ID_MT_PYRE_SUMMIT, - MAP_ID_AQUA_HIDEOUT_1F, - MAP_ID_AQUA_HIDEOUT_B1F, - MAP_ID_AQUA_HIDEOUT_B2F, - MAP_ID_UNDERWATER_SEAFLOOR_CAVERN, - MAP_ID_SEAFLOOR_CAVERN_ENTRANCE, - MAP_ID_SEAFLOOR_CAVERN_ROOM1, - MAP_ID_SEAFLOOR_CAVERN_ROOM2, - MAP_ID_SEAFLOOR_CAVERN_ROOM3, - MAP_ID_SEAFLOOR_CAVERN_ROOM4, - MAP_ID_SEAFLOOR_CAVERN_ROOM5, - MAP_ID_SEAFLOOR_CAVERN_ROOM6, - MAP_ID_SEAFLOOR_CAVERN_ROOM7, - MAP_ID_SEAFLOOR_CAVERN_ROOM8, - MAP_ID_SEAFLOOR_CAVERN_ROOM9, - MAP_ID_CAVE_OF_ORIGIN_ENTRANCE, - MAP_ID_CAVE_OF_ORIGIN_1F, - MAP_ID_CAVE_OF_ORIGIN_B1F, - MAP_ID_CAVE_OF_ORIGIN_B2F, - MAP_ID_CAVE_OF_ORIGIN_B3F, - MAP_ID_CAVE_OF_ORIGIN_B4F, - MAP_ID_VICTORY_ROAD_1F, - MAP_ID_VICTORY_ROAD_B1F, - MAP_ID_VICTORY_ROAD_B2F, - MAP_ID_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM, - MAP_ID_SHOAL_CAVE_LOW_TIDE_INNER_ROOM, - MAP_ID_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM, - MAP_ID_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM, - MAP_ID_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM, - MAP_ID_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM, - MAP_ID_NEW_MAUVILLE_ENTRANCE, - MAP_ID_NEW_MAUVILLE_INSIDE, - MAP_ID_ABANDONED_SHIP_DECK, - MAP_ID_ABANDONED_SHIP_CORRIDORS_1F, - MAP_ID_ABANDONED_SHIP_ROOMS_1F, - MAP_ID_ABANDONED_SHIP_CORRIDORS_B1F, - MAP_ID_ABANDONED_SHIP_ROOMS_B1F, - MAP_ID_ABANDONED_SHIP_ROOMS2_B1F, - MAP_ID_ABANDONED_SHIP_UNDERWATER1, - MAP_ID_ABANDONED_SHIP_ROOM_B1F, - MAP_ID_ABANDONED_SHIP_ROOMS2_1F, - MAP_ID_ABANDONED_SHIP_CAPTAINS_OFFICE, - MAP_ID_ABANDONED_SHIP_UNDERWATER2, - MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS, - MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS, - MAP_ID_ISLAND_CAVE, - MAP_ID_ANCIENT_TOMB, - MAP_ID_UNDERWATER_ROUTE134, - MAP_ID_UNDERWATER_SEALED_CHAMBER, - MAP_ID_SEALED_CHAMBER_OUTER_ROOM, - MAP_ID_SEALED_CHAMBER_INNER_ROOM, - MAP_ID_SCORCHED_SLAB, - MAP_ID_UNUSED_AQUA_HIDEOUT_1F, - MAP_ID_UNUSED_AQUA_HIDEOUT_B1F, - MAP_ID_UNUSED_AQUA_HIDEOUT_B2F, - MAP_ID_SKY_PILLAR_ENTRANCE, - MAP_ID_SKY_PILLAR_OUTSIDE, - MAP_ID_SKY_PILLAR_1F, - MAP_ID_SKY_PILLAR_2F, - MAP_ID_SKY_PILLAR_3F, - MAP_ID_SKY_PILLAR_4F, - MAP_ID_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, - MAP_ID_SKY_PILLAR_5F, - MAP_ID_SKY_PILLAR_TOP, - MAP_ID_MAGMA_HIDEOUT_ENTRANCE, - MAP_ID_MAGMA_HIDEOUT_B1F, - MAP_ID_MAGMA_HIDEOUT_B2F, - MAP_ID_MAGMA_HIDEOUT_B3F, - MAP_ID_MAGMA_HIDEOUT_B4F, - MAP_ID_MAGMA_HIDEOUT_B5F, - MAP_ID_MAGMA_HIDEOUT_B6F, - MAP_ID_MAGMA_HIDEOUT_B7F, - MAP_ID_MIRAGE_TOWER_1F, - MAP_ID_MIRAGE_TOWER_2F, - MAP_ID_MIRAGE_TOWER_3F, - MAP_ID_MIRAGE_TOWER_4F, - MAP_ID_DESERT_UNDERPASS, - MAP_ID_ARTISAN_CAVE_1F, - MAP_ID_ARTISAN_CAVE_2F, - MAP_ID_UNKNOWN_UNDERWATER, - MAP_ID_MARINE_CAVE_1F, - MAP_ID_MARINE_CAVE_2F, - MAP_ID_TERRA_CAVE_1F, - MAP_ID_TERRA_CAVE_2F, - MAP_ID_ALTERING_CAVE, - MAP_ID_METEOR_FALLS_B1F_3R, -}; - -#define MAP_GROUP_METEOR_FALLS_1F_1R 24 -#define MAP_GROUP_METEOR_FALLS_1F_2R 24 -#define MAP_GROUP_METEOR_FALLS_B1F_1R 24 -#define MAP_GROUP_METEOR_FALLS_B1F_2R 24 -#define MAP_GROUP_RUSTURF_TUNNEL 24 -#define MAP_GROUP_UNDERWATER_SOOTOPOLIS_CITY 24 -#define MAP_GROUP_DESERT_RUINS 24 -#define MAP_GROUP_GRANITE_CAVE_1F 24 -#define MAP_GROUP_GRANITE_CAVE_B1F 24 -#define MAP_GROUP_GRANITE_CAVE_B2F 24 -#define MAP_GROUP_GRANITE_CAVE_STEVENS_ROOM 24 -#define MAP_GROUP_PETALBURG_WOODS 24 -#define MAP_GROUP_MT_CHIMNEY 24 -#define MAP_GROUP_JAGGED_PASS 24 -#define MAP_GROUP_FIERY_PATH 24 -#define MAP_GROUP_MT_PYRE_1F 24 -#define MAP_GROUP_MT_PYRE_2F 24 -#define MAP_GROUP_MT_PYRE_3F 24 -#define MAP_GROUP_MT_PYRE_4F 24 -#define MAP_GROUP_MT_PYRE_5F 24 -#define MAP_GROUP_MT_PYRE_6F 24 -#define MAP_GROUP_MT_PYRE_EXTERIOR 24 -#define MAP_GROUP_MT_PYRE_SUMMIT 24 -#define MAP_GROUP_AQUA_HIDEOUT_1F 24 -#define MAP_GROUP_AQUA_HIDEOUT_B1F 24 -#define MAP_GROUP_AQUA_HIDEOUT_B2F 24 -#define MAP_GROUP_UNDERWATER_SEAFLOOR_CAVERN 24 -#define MAP_GROUP_SEAFLOOR_CAVERN_ENTRANCE 24 -#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM1 24 -#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM2 24 -#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM3 24 -#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM4 24 -#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM5 24 -#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM6 24 -#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM7 24 -#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM8 24 -#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM9 24 -#define MAP_GROUP_CAVE_OF_ORIGIN_ENTRANCE 24 -#define MAP_GROUP_CAVE_OF_ORIGIN_1F 24 -#define MAP_GROUP_CAVE_OF_ORIGIN_B1F 24 -#define MAP_GROUP_CAVE_OF_ORIGIN_B2F 24 -#define MAP_GROUP_CAVE_OF_ORIGIN_B3F 24 -#define MAP_GROUP_CAVE_OF_ORIGIN_B4F 24 -#define MAP_GROUP_VICTORY_ROAD_1F 24 -#define MAP_GROUP_VICTORY_ROAD_B1F 24 -#define MAP_GROUP_VICTORY_ROAD_B2F 24 -#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM 24 -#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM 24 -#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM 24 -#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM 24 -#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM 24 -#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM 24 -#define MAP_GROUP_NEW_MAUVILLE_ENTRANCE 24 -#define MAP_GROUP_NEW_MAUVILLE_INSIDE 24 -#define MAP_GROUP_ABANDONED_SHIP_DECK 24 -#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_1F 24 -#define MAP_GROUP_ABANDONED_SHIP_ROOMS_1F 24 -#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_B1F 24 -#define MAP_GROUP_ABANDONED_SHIP_ROOMS_B1F 24 -#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_B1F 24 -#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER1 24 -#define MAP_GROUP_ABANDONED_SHIP_ROOM_B1F 24 -#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F 24 -#define MAP_GROUP_ABANDONED_SHIP_CAPTAINS_OFFICE 24 -#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER2 24 -#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS 24 -#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS 24 -#define MAP_GROUP_ISLAND_CAVE 24 -#define MAP_GROUP_ANCIENT_TOMB 24 -#define MAP_GROUP_UNDERWATER_ROUTE134 24 -#define MAP_GROUP_UNDERWATER_SEALED_CHAMBER 24 -#define MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM 24 -#define MAP_GROUP_SEALED_CHAMBER_INNER_ROOM 24 -#define MAP_GROUP_SCORCHED_SLAB 24 -#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_1F 24 -#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_B1F 24 -#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_B2F 24 -#define MAP_GROUP_SKY_PILLAR_ENTRANCE 24 -#define MAP_GROUP_SKY_PILLAR_OUTSIDE 24 -#define MAP_GROUP_SKY_PILLAR_1F 24 -#define MAP_GROUP_SKY_PILLAR_2F 24 -#define MAP_GROUP_SKY_PILLAR_3F 24 -#define MAP_GROUP_SKY_PILLAR_4F 24 -#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM 24 -#define MAP_GROUP_SKY_PILLAR_5F 24 -#define MAP_GROUP_SKY_PILLAR_TOP 24 -#define MAP_GROUP_MAGMA_HIDEOUT_ENTRANCE 24 -#define MAP_GROUP_MAGMA_HIDEOUT_B1F 24 -#define MAP_GROUP_MAGMA_HIDEOUT_B2F 24 -#define MAP_GROUP_MAGMA_HIDEOUT_B3F 24 -#define MAP_GROUP_MAGMA_HIDEOUT_B4F 24 -#define MAP_GROUP_MAGMA_HIDEOUT_B5F 24 -#define MAP_GROUP_MAGMA_HIDEOUT_B6F 24 -#define MAP_GROUP_MAGMA_HIDEOUT_B7F 24 -#define MAP_GROUP_MIRAGE_TOWER_1F 24 -#define MAP_GROUP_MIRAGE_TOWER_2F 24 -#define MAP_GROUP_MIRAGE_TOWER_3F 24 -#define MAP_GROUP_MIRAGE_TOWER_4F 24 -#define MAP_GROUP_DESERT_UNDERPASS 24 -#define MAP_GROUP_ARTISAN_CAVE_1F 24 -#define MAP_GROUP_ARTISAN_CAVE_2F 24 -#define MAP_GROUP_UNKNOWN_UNDERWATER 24 -#define MAP_GROUP_MARINE_CAVE_1F 24 -#define MAP_GROUP_MARINE_CAVE_2F 24 -#define MAP_GROUP_TERRA_CAVE_1F 24 -#define MAP_GROUP_TERRA_CAVE_2F 24 -#define MAP_GROUP_ALTERING_CAVE 24 -#define MAP_GROUP_METEOR_FALLS_B1F_3R 24 - -//-------------------------------------------------- -// Map Group 25 -//-------------------------------------------------- - -enum -{ - MAP_ID_SECRET_BASE_RED_CAVE1, - MAP_ID_SECRET_BASE_BROWN_CAVE1, - MAP_ID_SECRET_BASE_BLUE_CAVE1, - MAP_ID_SECRET_BASE_YELLOW_CAVE1, - MAP_ID_SECRET_BASE_TREE1, - MAP_ID_SECRET_BASE_SHRUB1, - MAP_ID_SECRET_BASE_RED_CAVE2, - MAP_ID_SECRET_BASE_BROWN_CAVE2, - MAP_ID_SECRET_BASE_BLUE_CAVE2, - MAP_ID_SECRET_BASE_YELLOW_CAVE2, - MAP_ID_SECRET_BASE_TREE2, - MAP_ID_SECRET_BASE_SHRUB2, - MAP_ID_SECRET_BASE_RED_CAVE3, - MAP_ID_SECRET_BASE_BROWN_CAVE3, - MAP_ID_SECRET_BASE_BLUE_CAVE3, - MAP_ID_SECRET_BASE_YELLOW_CAVE3, - MAP_ID_SECRET_BASE_TREE3, - MAP_ID_SECRET_BASE_SHRUB3, - MAP_ID_SECRET_BASE_RED_CAVE4, - MAP_ID_SECRET_BASE_BROWN_CAVE4, - MAP_ID_SECRET_BASE_BLUE_CAVE4, - MAP_ID_SECRET_BASE_YELLOW_CAVE4, - MAP_ID_SECRET_BASE_TREE4, - MAP_ID_SECRET_BASE_SHRUB4, - MAP_ID_SINGLE_BATTLE_COLOSSEUM, - MAP_ID_TRADE_CENTER, - MAP_ID_RECORD_CORNER, - MAP_ID_DOUBLE_BATTLE_COLOSSEUM, - MAP_ID_LINK_CONTEST_ROOM1, - MAP_ID_UNKNOWN_MAP_25_29, - MAP_ID_UNKNOWN_MAP_25_30, - MAP_ID_UNKNOWN_MAP_25_31, - MAP_ID_UNKNOWN_MAP_25_32, - MAP_ID_UNKNOWN_MAP_25_33, - MAP_ID_UNKNOWN_MAP_25_34, - MAP_ID_LINK_CONTEST_ROOM2, - MAP_ID_LINK_CONTEST_ROOM3, - MAP_ID_LINK_CONTEST_ROOM4, - MAP_ID_LINK_CONTEST_ROOM5, - MAP_ID_LINK_CONTEST_ROOM6, - MAP_ID_INSIDE_OF_TRUCK, - MAP_ID_SS_TIDAL_CORRIDOR, - MAP_ID_SS_TIDAL_LOWER_DECK, - MAP_ID_SS_TIDAL_ROOMS, - MAP_ID_TEST_ROOM_1, - MAP_ID_TEST_ROOM_2, - MAP_ID_TEST_ROOM_3, - MAP_ID_TEST_ROOM_4, - MAP_ID_TEST_ROOM_5, - MAP_ID_TEST_ROOM_6, - MAP_ID_TEST_ROOM_7, - MAP_ID_TEST_ROOM_8, - MAP_ID_TEST_ROOM_9, - MAP_ID_TEST_ROOM_10, - MAP_ID_TEST_ROOM_11, - MAP_ID_TEST_ROOM_12, - MAP_ID_TEST_ROOM_13, - MAP_ID_TEST_ROOM_14, - MAP_ID_TEST_ROOM_15, - MAP_ID_TEST_ROOM_16, - MAP_ID_UNION_ROOM, -}; - -#define MAP_GROUP_SECRET_BASE_RED_CAVE1 25 -#define MAP_GROUP_SECRET_BASE_BROWN_CAVE1 25 -#define MAP_GROUP_SECRET_BASE_BLUE_CAVE1 25 -#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE1 25 -#define MAP_GROUP_SECRET_BASE_TREE1 25 -#define MAP_GROUP_SECRET_BASE_SHRUB1 25 -#define MAP_GROUP_SECRET_BASE_RED_CAVE2 25 -#define MAP_GROUP_SECRET_BASE_BROWN_CAVE2 25 -#define MAP_GROUP_SECRET_BASE_BLUE_CAVE2 25 -#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE2 25 -#define MAP_GROUP_SECRET_BASE_TREE2 25 -#define MAP_GROUP_SECRET_BASE_SHRUB2 25 -#define MAP_GROUP_SECRET_BASE_RED_CAVE3 25 -#define MAP_GROUP_SECRET_BASE_BROWN_CAVE3 25 -#define MAP_GROUP_SECRET_BASE_BLUE_CAVE3 25 -#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE3 25 -#define MAP_GROUP_SECRET_BASE_TREE3 25 -#define MAP_GROUP_SECRET_BASE_SHRUB3 25 -#define MAP_GROUP_SECRET_BASE_RED_CAVE4 25 -#define MAP_GROUP_SECRET_BASE_BROWN_CAVE4 25 -#define MAP_GROUP_SECRET_BASE_BLUE_CAVE4 25 -#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE4 25 -#define MAP_GROUP_SECRET_BASE_TREE4 25 -#define MAP_GROUP_SECRET_BASE_SHRUB4 25 -#define MAP_GROUP_SINGLE_BATTLE_COLOSSEUM 25 -#define MAP_GROUP_TRADE_CENTER 25 -#define MAP_GROUP_RECORD_CORNER 25 -#define MAP_GROUP_DOUBLE_BATTLE_COLOSSEUM 25 -#define MAP_GROUP_LINK_CONTEST_ROOM1 25 -#define MAP_GROUP_UNKNOWN_MAP_25_29 25 -#define MAP_GROUP_UNKNOWN_MAP_25_30 25 -#define MAP_GROUP_UNKNOWN_MAP_25_31 25 -#define MAP_GROUP_UNKNOWN_MAP_25_32 25 -#define MAP_GROUP_UNKNOWN_MAP_25_33 25 -#define MAP_GROUP_UNKNOWN_MAP_25_34 25 -#define MAP_GROUP_LINK_CONTEST_ROOM2 25 -#define MAP_GROUP_LINK_CONTEST_ROOM3 25 -#define MAP_GROUP_LINK_CONTEST_ROOM4 25 -#define MAP_GROUP_LINK_CONTEST_ROOM5 25 -#define MAP_GROUP_LINK_CONTEST_ROOM6 25 -#define MAP_GROUP_INSIDE_OF_TRUCK 25 -#define MAP_GROUP_SS_TIDAL_CORRIDOR 25 -#define MAP_GROUP_SS_TIDAL_LOWER_DECK 25 -#define MAP_GROUP_SS_TIDAL_ROOMS 25 -#define MAP_GROUP_TEST_ROOM_1 25 -#define MAP_GROUP_TEST_ROOM_2 25 -#define MAP_GROUP_TEST_ROOM_3 25 -#define MAP_GROUP_TEST_ROOM_4 25 -#define MAP_GROUP_TEST_ROOM_5 25 -#define MAP_GROUP_TEST_ROOM_6 25 -#define MAP_GROUP_TEST_ROOM_7 25 -#define MAP_GROUP_TEST_ROOM_8 25 -#define MAP_GROUP_TEST_ROOM_9 25 -#define MAP_GROUP_TEST_ROOM_10 25 -#define MAP_GROUP_TEST_ROOM_11 25 -#define MAP_GROUP_TEST_ROOM_12 25 -#define MAP_GROUP_TEST_ROOM_13 25 -#define MAP_GROUP_TEST_ROOM_14 25 -#define MAP_GROUP_TEST_ROOM_15 25 -#define MAP_GROUP_TEST_ROOM_16 25 -#define MAP_GROUP_UNION_ROOM 25 -//-------------------------------------------------- -// Map Group 26 -//-------------------------------------------------- - -enum -{ - MAP_ID_SAFARI_ZONE_NORTHWEST, - MAP_ID_SAFARI_ZONE_NORTHEAST, - MAP_ID_SAFARI_ZONE_SOUTHWEST, - MAP_ID_SAFARI_ZONE_SOUTHEAST, - MAP_ID_BATTLE_FRONTIER_OUTSIDE_WEST, - MAP_ID_BATTLE_TOWER_LOBBY, - MAP_ID_BATTLE_TOWER_ELEVATOR, - MAP_ID_BATTLE_TOWER_CORRIDOR, - MAP_ID_BATTLE_TOWER_BATTLE_ROOM, - MAP_ID_SOUTHERN_ISLAND_EXTERIOR, - MAP_ID_SOUTHERN_ISLAND_INTERIOR, - MAP_ID_SAFARI_ZONE_REST_HOUSE, - MAP_ID_SAFARI_ZONE_EM_1, - MAP_ID_SAFARI_ZONE_EM_2, - MAP_ID_BATTLE_FRONTIER_OUTSIDE_EAST, - MAP_ID_BATTLE_FRONTIER_TAG_LINK, - MAP_ID_BATTLE_FRONTIER_TAG_LINK_CORRIDOR, - MAP_ID_BATTLE_FRONTIER_TAG_LINK_ARENA, - MAP_ID_BATTLE_DOME_LOBBY, - MAP_ID_BATTLE_DOME_CORRIDOR, - MAP_ID_BATTLE_DOME_ROOM, - MAP_ID_BATTLE_DOME_ARENA, - MAP_ID_BATTLE_PALACE_LOBBY, - MAP_ID_BATTLE_PALACE_CORRIDOR, - MAP_ID_BATTLE_PALACE_1F, - MAP_ID_BATTLE_PYRAMID_LOBBY, - MAP_ID_BATTLE_PYRAMID_UNKNOWN, - MAP_ID_BATTLE_PYRAMID_PEAK, - MAP_ID_BATTLE_ARENA_LOBBY, - MAP_ID_BATTLE_ARENA_CORRIDOR, - MAP_ID_BATTLE_ARENA_ARENA, - MAP_ID_BATTLE_FACTORY_LOBBY, - MAP_ID_BATTLE_FACTORY_CORRIDOR, - MAP_ID_BATTLE_FACTORY_ARENA, - MAP_ID_BATTLE_PALACE_2F, - MAP_ID_BATTLE_PALACE_3F, - MAP_ID_BATTLE_PALACE_4F, - MAP_ID_BATTLE_PALACE_5F, - MAP_ID_BATTLE_PALACE_6F, - MAP_ID_BATTLE_PALACE_TEST_ROOM, - MAP_ID_RANKING_HALL, - MAP_ID_STAT_RATER_HOUSE, - MAP_ID_BATTLE_FRONTIER_EXCHANGE, - MAP_ID_BATTLE_FRONTIER_MANIAC_HOUSE, - MAP_ID_BATTLE_FRONTIER_GAMBLING_HOUSE, - MAP_ID_BATTLE_FRONTIER_HOUSE1, - MAP_ID_BATTLE_FRONTIER_SCOTTS_HOUSE, - MAP_ID_BATTLE_FRONTIER_HOUSE2, - MAP_ID_BATTLE_FRONTIER_HOUSE3, - MAP_ID_BATTLE_FRONTIER_HOUSE4, - MAP_ID_BATTLE_FRONTIER_ENTRANCE_HALL, - MAP_ID_BATTLE_FRONTIER_HOUSE5, - MAP_ID_BATTLE_FRONTIER_UNUSED_HOUSE, - MAP_ID_BATTLE_FRONTIER_POKEMON_CENTER_1F, - MAP_ID_BATTLE_FRONTIER_POKEMON_CENTER_2F, - MAP_ID_BATTLE_FRONTIER_MART, - MAP_ID_FARAWAY_ISLAND_OUTSIDE, - MAP_ID_FARAWAY_ISLAND_FOREST, - MAP_ID_BIRTH_ISLAND_OUTSIDE, - MAP_ID_BIRTH_ISLAND_DOCKS, - MAP_ID_TRAINER_HILL_LOBBY, - MAP_ID_TRAINER_HILL_1F, - MAP_ID_TRAINER_HILL_2F, - MAP_ID_TRAINER_HILL_3F, - MAP_ID_TRAINER_HILL_4F, - MAP_ID_TRAINER_HILL_5F, - MAP_ID_NAVEL_ROCK_OUTSIDE, - MAP_ID_NAVEL_ROCK_DOCKS, - MAP_ID_NAVEL_ROCK_1F, - MAP_ID_NAVEL_ROCK_2F, - MAP_ID_NAVEL_ROCK_3F, - MAP_ID_NAVEL_ROCK_4F, - MAP_ID_NAVEL_ROCK_5F, - MAP_ID_NAVEL_ROCK_6F, - MAP_ID_NAVEL_ROCK_7F, - MAP_ID_NAVEL_ROCK_PEAK, - MAP_ID_NAVEL_ROCK_B1F, - MAP_ID_NAVEL_ROCK_B2F, - MAP_ID_NAVEL_ROCK_B3F, - MAP_ID_NAVEL_ROCK_B4F, - MAP_ID_NAVEL_ROCK_B5F, - MAP_ID_NAVEL_ROCK_B6F, - MAP_ID_NAVEL_ROCK_B7F, - MAP_ID_NAVEL_ROCK_B8F, - MAP_ID_NAVEL_ROCK_B9F, - MAP_ID_NAVEL_ROCK_B10F, - MAP_ID_NAVEL_ROCK_B11F, - MAP_ID_NAVEL_ROCK_INNER, - MAP_ID_TRAINER_HILL_ELEVATOR, -}; - -#define MAP_GROUP_SAFARI_ZONE_NORTHWEST 26 -#define MAP_GROUP_SAFARI_ZONE_NORTHEAST 26 -#define MAP_GROUP_SAFARI_ZONE_SOUTHWEST 26 -#define MAP_GROUP_SAFARI_ZONE_SOUTHEAST 26 -#define MAP_GROUP_BATTLE_FRONTIER_OUTSIDE_WEST 26 -#define MAP_GROUP_BATTLE_TOWER_LOBBY 26 -#define MAP_GROUP_BATTLE_TOWER_ELEVATOR 26 -#define MAP_GROUP_BATTLE_TOWER_CORRIDOR 26 -#define MAP_GROUP_BATTLE_TOWER_BATTLE_ROOM 26 -#define MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR 26 -#define MAP_GROUP_SOUTHERN_ISLAND_INTERIOR 26 -#define MAP_GROUP_SAFARI_ZONE_REST_HOUSE 26 -#define MAP_GROUP_SAFARI_ZONE_EM_1 26 -#define MAP_GROUP_SAFARI_ZONE_EM_2 26 -#define MAP_GROUP_BATTLE_FRONTIER_OUTSIDE_EAST 26 -#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK 26 -#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK_CORRIDOR 26 -#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK_ARENA 26 -#define MAP_GROUP_BATTLE_DOME_LOBBY 26 -#define MAP_GROUP_BATTLE_DOME_CORRIDOR 26 -#define MAP_GROUP_BATTLE_DOME_ROOM 26 -#define MAP_GROUP_BATTLE_DOME_ARENA 26 -#define MAP_GROUP_BATTLE_PALACE_LOBBY 26 -#define MAP_GROUP_BATTLE_PALACE_CORRIDOR 26 -#define MAP_GROUP_BATTLE_PALACE_1F 26 -#define MAP_GROUP_BATTLE_PYRAMID_LOBBY 26 -#define MAP_GROUP_BATTLE_PYRAMID_UNKNOWN 26 -#define MAP_GROUP_BATTLE_PYRAMID_PEAK 26 -#define MAP_GROUP_BATTLE_ARENA_LOBBY 26 -#define MAP_GROUP_BATTLE_ARENA_CORRIDOR 26 -#define MAP_GROUP_BATTLE_ARENA_ARENA 26 // rename -#define MAP_GROUP_BATTLE_FACTORY_LOBBY 26 -#define MAP_GROUP_BATTLE_FACTORY_CORRIDOR 26 -#define MAP_GROUP_BATTLE_FACTORY_ARENA 26 -#define MAP_GROUP_BATTLE_PALACE_2F 26 -#define MAP_GROUP_BATTLE_PALACE_3F 26 -#define MAP_GROUP_BATTLE_PALACE_4F 26 -#define MAP_GROUP_BATTLE_PALACE_5F 26 -#define MAP_GROUP_BATTLE_PALACE_6F 26 -#define MAP_GROUP_BATTLE_PALACE_TEST_ROOM 26 -#define MAP_GROUP_RANKING_HALL 26 -#define MAP_GROUP_STAT_RATER_HOUSE 26 -#define MAP_GROUP_BATTLE_FRONTIER_EXCHANGE 26 -#define MAP_GROUP_BATTLE_FRONTIER_MANIAC_HOUSE 26 -#define MAP_GROUP_BATTLE_FRONTIER_GAMBLING_HOUSE 26 -#define MAP_GROUP_BATTLE_FRONTIER_HOUSE1 26 -#define MAP_GROUP_BATTLE_FRONTIER_SCOTTS_HOUSE 26 -#define MAP_GROUP_BATTLE_FRONTIER_HOUSE2 26 -#define MAP_GROUP_BATTLE_FRONTIER_HOUSE3 26 -#define MAP_GROUP_BATTLE_FRONTIER_HOUSE4 26 -#define MAP_GROUP_BATTLE_FRONTIER_ENTRANCE_HALL 26 -#define MAP_GROUP_BATTLE_FRONTIER_HOUSE5 26 -#define MAP_GROUP_BATTLE_FRONTIER_UNUSED_HOUSE 26 -#define MAP_GROUP_BATTLE_FRONTIER_POKEMON_CENTER_1F 26 -#define MAP_GROUP_BATTLE_FRONTIER_POKEMON_CENTER_2F 26 -#define MAP_GROUP_BATTLE_FRONTIER_MART 26 -#define MAP_GROUP_FARAWAY_ISLAND_OUTSIDE 26 -#define MAP_GROUP_FARAWAY_ISLAND_FOREST 26 -#define MAP_GROUP_BIRTH_ISLAND_OUTSIDE 26 -#define MAP_GROUP_BIRTH_ISLAND_DOCKS 26 -#define MAP_GROUP_TRAINER_HILL_LOBBY 26 -#define MAP_GROUP_TRAINER_HILL_1F 26 -#define MAP_GROUP_TRAINER_HILL_2F 26 -#define MAP_GROUP_TRAINER_HILL_3F 26 -#define MAP_GROUP_TRAINER_HILL_4F 26 -#define MAP_GROUP_TRAINER_HILL_5F 26 -#define MAP_GROUP_NAVEL_ROCK_OUTSIDE 26 -#define MAP_GROUP_NAVEL_ROCK_DOCKS 26 -#define MAP_GROUP_NAVEL_ROCK_1F 26 -#define MAP_GROUP_NAVEL_ROCK_2F 26 -#define MAP_GROUP_NAVEL_ROCK_3F 26 -#define MAP_GROUP_NAVEL_ROCK_4F 26 -#define MAP_GROUP_NAVEL_ROCK_5F 26 -#define MAP_GROUP_NAVEL_ROCK_6F 26 -#define MAP_GROUP_NAVEL_ROCK_7F 26 -#define MAP_GROUP_NAVEL_ROCK_PEAK 26 -#define MAP_GROUP_NAVEL_ROCK_B1F 26 -#define MAP_GROUP_NAVEL_ROCK_B2F 26 -#define MAP_GROUP_NAVEL_ROCK_B3F 26 -#define MAP_GROUP_NAVEL_ROCK_B4F 26 -#define MAP_GROUP_NAVEL_ROCK_B5F 26 -#define MAP_GROUP_NAVEL_ROCK_B6F 26 -#define MAP_GROUP_NAVEL_ROCK_B7F 26 -#define MAP_GROUP_NAVEL_ROCK_B8F 26 -#define MAP_GROUP_NAVEL_ROCK_B9F 26 -#define MAP_GROUP_NAVEL_ROCK_B10F 26 -#define MAP_GROUP_NAVEL_ROCK_B11F 26 -#define MAP_GROUP_NAVEL_ROCK_INNER 26 -#define MAP_GROUP_TRAINER_HILL_ELEVATOR 26 -//-------------------------------------------------- -// Map Group 27 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE104_PROTOTYPE, - MAP_ID_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP, -}; - -#define MAP_GROUP_ROUTE104_PROTOTYPE 27 -#define MAP_GROUP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP 27 - -//-------------------------------------------------- -// Map Group 28 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE109_SEASHORE_HOUSE, -}; - -#define MAP_GROUP_ROUTE109_SEASHORE_HOUSE 28 - -//-------------------------------------------------- -// Map Group 29 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE110_TRICK_HOUSE_ENTRANCE, - MAP_ID_ROUTE110_TRICK_HOUSE_END, - MAP_ID_ROUTE110_TRICK_HOUSE_CORRIDOR, - MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE1, - MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE2, - MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE3, - MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE4, - MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE5, - MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE6, - MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE7, - MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE8, - MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE, - MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE, -}; - -#define MAP_GROUP_ROUTE110_TRICK_HOUSE_ENTRANCE 29 -#define MAP_GROUP_ROUTE110_TRICK_HOUSE_END 29 -#define MAP_GROUP_ROUTE110_TRICK_HOUSE_CORRIDOR 29 -#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE1 29 -#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE2 29 -#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE3 29 -#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE4 29 -#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE5 29 -#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE6 29 -#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE7 29 -#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE8 29 -#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE 29 -#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE 29 - -//-------------------------------------------------- -// Map Group 30 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE113_GLASS_WORKSHOP, -}; - -#define MAP_GROUP_ROUTE113_GLASS_WORKSHOP 30 - -//-------------------------------------------------- -// Map Group 31 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE123_BERRY_MASTERS_HOUSE, -}; - -#define MAP_GROUP_ROUTE123_BERRY_MASTERS_HOUSE 31 - -//-------------------------------------------------- -// Map Group 32 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F, - MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F, - MAP_ID_ROUTE119_HOUSE, -}; - -#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F 32 -#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_2F 32 -#define MAP_GROUP_ROUTE119_HOUSE 32 - -//-------------------------------------------------- -// Map Group 33 -//-------------------------------------------------- - -enum -{ - MAP_ID_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE, -}; - -#define MAP_GROUP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE 33 - -#endif // GUARD_MAP_CONSTANTS_H
\ No newline at end of file diff --git a/include/map_name_popup.h b/include/map_name_popup.h index 8a9043a3f..85d2f0795 100644 --- a/include/map_name_popup.h +++ b/include/map_name_popup.h @@ -7,5 +7,5 @@ // Exported ROM declarations void HideMapNamePopUpWindow(void); - +void ShowMapNamePopup(void); #endif //GUARD_MAP_NAME_POPUP_H diff --git a/include/map_obj_8097404.h b/include/map_obj_8097404.h deleted file mode 100644 index 27ffd18cb..000000000 --- a/include/map_obj_8097404.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// Created by scott on 9/7/2017. -// - -#ifndef GUARD_MAP_OBJ_8097404_H -#define GUARD_MAP_OBJ_8097404_H - -// Exported type declarations - -// Exported RAM declarations -extern void *gUnknown_020375B8; - -// Exported ROM declarations -void sub_8097AC8(struct Sprite *); -void npc_sync_anim_pause_bits(struct MapObject *); -void oamt_npc_ministep_reset(struct Sprite *, u8, u8); -u8 sub_8097F78(struct MapObject *); -bool8 obj_npc_ministep(struct Sprite *sprite); -bool8 sub_80976EC(struct Sprite *sprite); -void sub_80976DC(struct Sprite *, u8); -void sub_809783C(struct Sprite *, u8, u8, u8); -void DoShadowFieldEffect(struct MapObject *); -u8 sub_809785C(struct Sprite *); -u8 sub_80978E4(struct Sprite *); -void obj_anim_image_set_and_seek(struct Sprite *, u8, u8); -bool8 sub_80979BC(struct Sprite *); -void sub_8097750(struct Sprite *); -bool8 sub_8097758(struct Sprite *); -void sub_8097FA4(struct MapObject *); -void sub_8098044(u8); - -#endif //GUARD_MAP_OBJ_8097404_H diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h deleted file mode 100644 index a10648f2f..000000000 --- a/include/map_obj_lock.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef GUARD_MAP_OBJ_LOCK_H -#define GUARD_MAP_OBJ_LOCK_H - -bool8 sub_80983C4(void); -void ScriptFreezeMapObjects(void); -bool8 sub_809847C(void); -void LockSelectedMapObject(void); -void sub_8098630(void); -bool8 sub_8098734(void); - -#endif // GUARD_MAP_OBJ_LOCK_H diff --git a/include/map_object_constants.h b/include/map_object_constants.h deleted file mode 100644 index 79482b54a..000000000 --- a/include/map_object_constants.h +++ /dev/null @@ -1,239 +0,0 @@ -#ifndef GUARD_MAP_OBJECT_CONSTANTS_H -#define GUARD_MAP_OBJECT_CONSTANTS_H - -enum -{ - MAP_OBJ_GFX_BRENDAN_NORMAL, - MAP_OBJ_GFX_BRENDAN_MACH_BIKE, - MAP_OBJ_GFX_BRENDAN_SURFING, - MAP_OBJ_GFX_BRENDAN_FIELD_MOVE, - MAP_OBJ_GFX_QUINTY_PLUMP, - MAP_OBJ_GFX_LITTLE_BOY_1, - MAP_OBJ_GFX_LITTLE_GIRL_1, - MAP_OBJ_GFX_BOY_1, - MAP_OBJ_GFX_GIRL_1, - MAP_OBJ_GFX_BOY_2, - MAP_OBJ_GFX_GIRL_2, - MAP_OBJ_GFX_LITTLE_BOY_2, - MAP_OBJ_GFX_LITTLE_GIRL_2, - MAP_OBJ_GFX_BOY_3, - MAP_OBJ_GFX_GIRL_3, - MAP_OBJ_GFX_BOY_4, - MAP_OBJ_GFX_WOMAN_1, - MAP_OBJ_GFX_FAT_MAN, - MAP_OBJ_GFX_WOMAN_2, - MAP_OBJ_GFX_MAN_1, - MAP_OBJ_GFX_WOMAN_3, - MAP_OBJ_GFX_OLD_MAN_1, - MAP_OBJ_GFX_OLD_WOMAN_1, - MAP_OBJ_GFX_MAN_2, - MAP_OBJ_GFX_WOMAN_4, - MAP_OBJ_GFX_MAN_3, - MAP_OBJ_GFX_WOMAN_5, - MAP_OBJ_GFX_COOK, - MAP_OBJ_GFX_WOMAN_6, - MAP_OBJ_GFX_OLD_MAN_2, - MAP_OBJ_GFX_OLD_WOMAN_2, - MAP_OBJ_GFX_CAMPER, - MAP_OBJ_GFX_PICNICKER, - MAP_OBJ_GFX_MAN_4, - MAP_OBJ_GFX_WOMAN_7, - MAP_OBJ_GFX_YOUNGSTER, - MAP_OBJ_GFX_BUG_CATCHER, - MAP_OBJ_GFX_PSYCHIC_M, - MAP_OBJ_GFX_SCHOOL_KID_M, - MAP_OBJ_GFX_MANIAC, - MAP_OBJ_GFX_HEX_MANIAC, - MAP_OBJ_GFX_WOMAN_8, - MAP_OBJ_GFX_SWIMMER_M, - MAP_OBJ_GFX_SWIMMER_F, - MAP_OBJ_GFX_BLACK_BELT, - MAP_OBJ_GFX_BEAUTY, - MAP_OBJ_GFX_SCIENTIST_1, - MAP_OBJ_GFX_LASS, - MAP_OBJ_GFX_GENTLEMAN, - MAP_OBJ_GFX_SAILOR, - MAP_OBJ_GFX_FISHERMAN, - MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, - MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, - MAP_OBJ_GFX_TUBER_F, - MAP_OBJ_GFX_TUBER_M, - MAP_OBJ_GFX_HIKER, - MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, - MAP_OBJ_GFX_CYCLING_TRIATHLETE_F, - MAP_OBJ_GFX_NURSE, - MAP_OBJ_GFX_ITEM_BALL, - MAP_OBJ_GFX_BERRY_TREE, - MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES, - MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES, - MAP_OBJ_GFX_BRENDAN_ACRO_BIKE, - MAP_OBJ_GFX_PROF_BIRCH, - MAP_OBJ_GFX_MAN_5, - MAP_OBJ_GFX_MAN_6, - MAP_OBJ_GFX_REPORTER_M, - MAP_OBJ_GFX_REPORTER_F, - MAP_OBJ_GFX_BARD, - MAP_OBJ_GFX_HIPSTER, - MAP_OBJ_GFX_TRADER, - MAP_OBJ_GFX_STORYTELLER, - MAP_OBJ_GFX_GIDDY, - MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_1, - MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_2, - MAP_OBJ_GFX_UNUSED_NATU_DOLL, - MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL, - MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL, - MAP_OBJ_GFX_UNUSED_WOOPER_DOLL, - MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL, - MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL, - MAP_OBJ_GFX_CUTTABLE_TREE, - MAP_OBJ_GFX_MART_EMPLOYEE, - MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN, - MAP_OBJ_GFX_TEALA, - MAP_OBJ_GFX_BREAKABLE_ROCK, - MAP_OBJ_GFX_PUSHABLE_BOULDER, - MAP_OBJ_GFX_MR_BRINEYS_BOAT, - MAP_OBJ_GFX_MAY_NORMAL, - MAP_OBJ_GFX_MAY_MACH_BIKE, - MAP_OBJ_GFX_MAY_ACRO_BIKE, - MAP_OBJ_GFX_MAY_SURFING, - MAP_OBJ_GFX_MAY_FIELD_MOVE, - MAP_OBJ_GFX_TRUCK, - MAP_OBJ_GFX_MACHOKE_CARRYING_BOX, - MAP_OBJ_GFX_MACHOKE_FACING_AWAY, - MAP_OBJ_GFX_BIRCHS_BAG, - MAP_OBJ_GFX_POOCHYENA, - MAP_OBJ_GFX_ARTIST, - MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, - MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE, - MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE, - MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING, - MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE, - MAP_OBJ_GFX_RIVAL_MAY_NORMAL, - MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE, - MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE, - MAP_OBJ_GFX_RIVAL_MAY_SURFING, - MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE, - MAP_OBJ_GFX_CAMERAMAN, - MAP_OBJ_GFX_BRENDAN_UNDERWATER, - MAP_OBJ_GFX_MAY_UNDERWATER, - MAP_OBJ_GFX_MOVING_BOX, - MAP_OBJ_GFX_CABLE_CAR, - MAP_OBJ_GFX_SCIENTIST_2, - MAP_OBJ_GFX_MAN_7, - MAP_OBJ_GFX_AQUA_MEMBER_M, - MAP_OBJ_GFX_AQUA_MEMBER_F, - MAP_OBJ_GFX_MAGMA_MEMBER_M, - MAP_OBJ_GFX_MAGMA_MEMBER_F, - MAP_OBJ_GFX_SIDNEY, - MAP_OBJ_GFX_PHOEBE, - MAP_OBJ_GFX_GLACIA, - MAP_OBJ_GFX_DRAKE, - MAP_OBJ_GFX_ROXANNE, - MAP_OBJ_GFX_BRAWLY, - MAP_OBJ_GFX_WATTSON, - MAP_OBJ_GFX_FLANNERY, - MAP_OBJ_GFX_NORMAN, - MAP_OBJ_GFX_WINONA, - MAP_OBJ_GFX_LIZA, - MAP_OBJ_GFX_TATE, - MAP_OBJ_GFX_WALLACE, - MAP_OBJ_GFX_STEVEN, - MAP_OBJ_GFX_WALLY, - MAP_OBJ_GFX_LITTLE_BOY_3, - MAP_OBJ_GFX_BRENDAN_FISHING, - MAP_OBJ_GFX_MAY_FISHING, - MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN, - MAP_OBJ_GFX_SS_TIDAL, - MAP_OBJ_GFX_SUBMARINE_SHADOW, - MAP_OBJ_GFX_PICHU_DOLL, - MAP_OBJ_GFX_PIKACHU_DOLL, - MAP_OBJ_GFX_MARILL_DOLL, - MAP_OBJ_GFX_TOGEPI_DOLL, - MAP_OBJ_GFX_CYNDAQUIL_DOLL, - MAP_OBJ_GFX_CHIKORITA_DOLL, - MAP_OBJ_GFX_TOTODILE_DOLL, - MAP_OBJ_GFX_JIGGLYPUFF_DOLL, - MAP_OBJ_GFX_MEOWTH_DOLL, - MAP_OBJ_GFX_CLEFAIRY_DOLL, - MAP_OBJ_GFX_DITTO_DOLL, - MAP_OBJ_GFX_SMOOCHUM_DOLL, - MAP_OBJ_GFX_TREECKO_DOLL, - MAP_OBJ_GFX_TORCHIC_DOLL, - MAP_OBJ_GFX_MUDKIP_DOLL, - MAP_OBJ_GFX_DUSKULL_DOLL, - MAP_OBJ_GFX_WYNAUT_DOLL, - MAP_OBJ_GFX_BALTOY_DOLL, - MAP_OBJ_GFX_KECLEON_DOLL, - MAP_OBJ_GFX_AZURILL_DOLL, - MAP_OBJ_GFX_SKITTY_DOLL, - MAP_OBJ_GFX_SWABLU_DOLL, - MAP_OBJ_GFX_GULPIN_DOLL, - MAP_OBJ_GFX_LOTAD_DOLL, - MAP_OBJ_GFX_SEEDOT_DOLL, - MAP_OBJ_GFX_PIKA_CUSHION, - MAP_OBJ_GFX_ROUND_CUSHION, - MAP_OBJ_GFX_KISS_CUSHION, - MAP_OBJ_GFX_ZIGZAG_CUSHION, - MAP_OBJ_GFX_SPIN_CUSHION, - MAP_OBJ_GFX_DIAMOND_CUSHION, - MAP_OBJ_GFX_BALL_CUSHION, - MAP_OBJ_GFX_GRASS_CUSHION, - MAP_OBJ_GFX_FIRE_CUSHION, - MAP_OBJ_GFX_WATER_CUSHION, - MAP_OBJ_GFX_BIG_SNORLAX_DOLL, - MAP_OBJ_GFX_BIG_RHYDON_DOLL, - MAP_OBJ_GFX_BIG_LAPRAS_DOLL, - MAP_OBJ_GFX_BIG_VENUSAUR_DOLL, - MAP_OBJ_GFX_BIG_CHARIZARD_DOLL, - MAP_OBJ_GFX_BIG_BLASTOISE_DOLL, - MAP_OBJ_GFX_BIG_WAILMER_DOLL, - MAP_OBJ_GFX_BIG_REGIROCK_DOLL, - MAP_OBJ_GFX_BIG_REGICE_DOLL, - MAP_OBJ_GFX_BIG_REGISTEEL_DOLL, - MAP_OBJ_GFX_LATIAS, - MAP_OBJ_GFX_LATIOS, - MAP_OBJ_GFX_BOY_5, - MAP_OBJ_GFX_CONTEST_JUDGE, - MAP_OBJ_GFX_BRENDAN_WATERING, - MAP_OBJ_GFX_MAY_WATERING, - MAP_OBJ_GFX_BRENDAN_DECORATING, - MAP_OBJ_GFX_MAY_DECORATING, - MAP_OBJ_GFX_ARCHIE, - MAP_OBJ_GFX_MAXIE, - MAP_OBJ_GFX_KYOGRE_1, - MAP_OBJ_GFX_GROUDON_1, - MAP_OBJ_GFX_FOSSIL, - MAP_OBJ_GFX_REGIROCK, - MAP_OBJ_GFX_REGICE, - MAP_OBJ_GFX_REGISTEEL, - MAP_OBJ_GFX_SKITTY, - MAP_OBJ_GFX_KECLEON_1, - MAP_OBJ_GFX_KYOGRE_2, - MAP_OBJ_GFX_GROUDON_2, - MAP_OBJ_GFX_RAYQUAZA, - MAP_OBJ_GFX_ZIGZAGOON, - MAP_OBJ_GFX_PIKACHU, - MAP_OBJ_GFX_AZUMARILL, - MAP_OBJ_GFX_WINGULL, - MAP_OBJ_GFX_KECLEON_2, - MAP_OBJ_GFX_TUBER_M_SWIMMING, - MAP_OBJ_GFX_AZURILL, - MAP_OBJ_GFX_MOM, - MAP_OBJ_GFX_LINK_BRENDAN, - MAP_OBJ_GFX_LINK_MAY, -}; - -enum { - SHADOW_SIZE_S, - SHADOW_SIZE_M, - SHADOW_SIZE_L, - SHADOW_SIZE_XL -}; - -enum { - TRACKS_NONE, - TRACKS_FOOT, - TRACKS_BIKE_TIRE -}; - -#endif // GUARD_MAP_OBJECT_CONSTANTS_H diff --git a/include/match_call.h b/include/match_call.h new file mode 100644 index 000000000..9698e7cd3 --- /dev/null +++ b/include/match_call.h @@ -0,0 +1,13 @@ +#ifndef GUARD_MATCH_CALL_H +#define GUARD_MATCH_CALL_H + +enum { + MATCH_CALL_TYPE_NON_TRAINER, + MATCH_CALL_TYPE_TRAINER, + MATCH_CALL_TYPE_WALLY, + MATCH_CALL_TYPE_BIRCH, + MATCH_CALL_TYPE_MAY_BRENDAN, + MATCH_CALL_TYPE_GYMLEADER_ELITEFOUR +}; + +#endif //GUARD_MATCH_CALL_H diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h index aefc76083..9d71e81aa 100644 --- a/include/mauville_old_man.h +++ b/include/mauville_old_man.h @@ -2,7 +2,25 @@ #ifndef GUARD_MAUVILLE_OLD_MAN_H #define GUARD_MAUVILLE_OLD_MAN_H +enum MauvilleOldManType +{ + MAUVILLE_MAN_BARD, + MAUVILLE_MAN_HIPSTER, + MAUVILLE_MAN_TRADER, + MAUVILLE_MAN_STORYTELLER, + MAUVILLE_MAN_GIDDY +}; + +extern struct BardSong gBardSong; + void SetMauvilleOldMan(void); +u8 GetCurrentMauvilleOldMan(void); +void ScrSpecial_SetMauvilleOldManEventObjGfx(void); u8 sub_81201C8(void); +void sub_8120B70(OldMan *dest); +void sub_8120670(void); +void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 r1, u32 r6); +void SanitizeReceivedEmeraldOldMan(union OldMan * oldMan, u32 unused, u32 a2); +void ResetMauvilleOldManFlag(void); #endif // GUARD_MAUVILLE_OLD_MAN_H diff --git a/include/menu.h b/include/menu.h index e93d688e4..888d898b6 100644 --- a/include/menu.h +++ b/include/menu.h @@ -1,8 +1,14 @@ + #ifndef GUARD_MENU_H #define GUARD_MENU_H +#include "task.h" +#include "text.h" #include "window.h" +#define MENU_NOTHING_CHOSEN -2 +#define MENU_B_PRESSED -1 + struct MenuAction { const u8 *text; @@ -12,24 +18,71 @@ struct MenuAction } func; }; -void box_print(u8, u8, u8, u8, const void *, s8, const u8 *); +extern const u16 gUnknown_0860F074[]; + +void sub_81971D0(void); +void sub_8197200(void); +u16 sub_8197224(void); +void sub_81973A4(void); +void NewMenuHelpers_DrawDialogueFrame(u8, u8); +void sub_819746C(u8 windowId, bool8 copyToVram); +void NewMenuHelpers_DrawStdWindowFrame(u8, u8); +u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 fgColor, u8 bgColor, u8 shadowColor); +void PrintPlayerNameOnWindow(u8, const u8*, u16, u16); +void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback); +void sub_8197434(u8 windowId, bool8 copyToVram); +void SetStandardWindowBorderStyle(u8 a0, u8 a1); +void sub_8197930(void); +u8 GetPlayerTextSpeed(void); +void sub_81978B0(u16 arg0); + +void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextSubPrinter *, u16)); +void box_print(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str); void sub_8198070(u8 windowId, bool8 copyToVram); void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette); void schedule_bg_copy_tilemap_to_vram(u8 bgNum); -void PrintMenuTable(u8 idx, u8 nstrs, const struct MenuAction *strs); -void InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 idx, u8 nstrs,u8); +void PrintMenuTable(u8 windowId, u8 itemCount, const struct MenuAction *strs); +u8 InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 windowId, u8 numItems, u8 initialCursorPos); u8 GetMenuCursorPos(void); s8 ProcessMenuInput(void); s8 ProcessMenuInputNoWrapAround(void); void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y); void reset_temp_tile_data_buffers(void); -int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode); +void *decompress_and_copy_tile_data_to_vram(u8 bgId, const void *src, int size, u16 offset, u8 mode); bool8 free_temp_tile_data_buffers_if_possible(void); -u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd +struct WindowTemplate sub_8198A50(u8, u8, u8, u8, u8, u8, u16); void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); -s8 sub_8198C58(void); +void copy_decompressed_tile_data_to_vram_autofree(u8 bgId, const void *src, int size, u16 offset, u8 mode); +s8 ProcessMenuInputNoWrap_(void); +s8 ProcessMenuInput_other(void); void do_scheduled_bg_tilemap_copies_to_vram(void); void clear_scheduled_bg_copies_to_vram(void); +void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str); +void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u8 a3); +void sub_81995E4(u8 windowId, u8 optionsNo, const struct MenuAction *actions, const u8 *actionIds); +void sub_8197DF8(u8 windowId, bool8 copyToVram); +u16 sub_8198AA4(u8, u8, u8, u8, u8, u8, u16); +void *malloc_and_decompress(const void *src, int *sizeOut); +u16 copy_decompressed_tile_data_to_vram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode); +void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress); +void AddItemMenuActionTextPrinters (u8, u8, u8, u8, u8, u8, u8, const struct MenuAction*, const u8*); +void sub_8198DBC(u8, u8, u8, u8, u8, u8, u8, const struct MenuAction*, const u8*); +u8 sub_8199944(u8, u8, u8, u8, u8); +u8 sub_8199134(s8, s8); +u8 GetStartMenuWindowId(void); +void sub_819A2BC(u8, u8); +u8 MoveMenuCursor(s8 cursorDelta); +void NewMenuHelpers_DrawStdWindowFrame(u8 windowId, bool8 CopyToVram); +u8 sub_81979C4(u8 a1); +u8 sub_81983AC(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos); +void sub_819786C(u8 windowId, bool8 copyToVram); +void AddTextPrinterForMessage_2(bool8 allowSkippingDelayWithButtonPress); +void RemoveStartMenuWindow(void); +void sub_8197948(u8 initialCursorPos); +void sub_819A344(u8 a0, u8 *dest, u8 color); +void RemoveMapNamePopUpWindow(void); +u8 GetMapNamePopUpWindowId(void); +u8 AddMapNamePopUpWindow(void); #endif // GUARD_MENU_H diff --git a/include/menu_helpers.h b/include/menu_helpers.h index f083a10e2..387a89fdd 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -1,9 +1,12 @@ #ifndef GUARD_MENU_HELPERS_H #define GUARD_MENU_HELPERS_H +#include "task.h" + // Exported type declarations -struct YesNoFuncTable { +struct YesNoFuncTable +{ TaskFunc yesFunc; TaskFunc noFunc; }; @@ -11,10 +14,27 @@ struct YesNoFuncTable { // Exported RAM declarations // Exported ROM declarations - -void sub_812225C(u16 *, u16 *, u8, u8); -void sub_8122298(u16 *, u16 *, u8, u8, u8); +void ResetVramOamAndBgCntRegs(void); +void ResetAllBgsCoordinates(void); +void SetVBlankHBlankCallbacksToNull(void); +void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc); +bool16 RunTextPrintersRetIsActive(u8 textPrinterId); void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data); +void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo); +bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1); +u8 GetLRKeysState(void); +u8 sub_812210C(void); +bool8 sub_8122148(u16 itemId); +bool8 itemid_80BF6D8_mail_related(u16 itemId); bool8 sub_81221AC(void); +bool8 sub_81221EC(void); +void sub_812220C(struct ItemSlot *slots, u8 count, u8 *arg2, u8 *usedSlotsCount, u8 maxUsedSlotsCount); +void sub_812225C(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3); +void sub_8122298(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3, u8 arg4); +void LoadListMenuArrowsGfx(void); +void sub_8122344(u8 *spriteIds, u8 count); +void sub_81223B0(u8 *spriteIds, u8 count); +void sub_81223FC(u8 *spriteIds, u8 count, bool8 invisible); +void sub_8122448(u8 *spriteIds, u8 count, s16 x, u16 y); #endif //GUARD_MENU_HELPERS_H diff --git a/include/menu_indicators.h b/include/menu_indicators.h deleted file mode 100644 index d0baac810..000000000 --- a/include/menu_indicators.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef GUARD_MENU_INDICATORS_H -#define GUARD_MENU_INDICATORS_H - -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations -u8 AddScrollIndicatorArrowPairParametrized(u8, u8, u8, u8, s32, u16, u16, u16 *); -void RemoveScrollIndicatorArrowPair(u8); - -#endif //GUARD_MENU_INDICATORS_H diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h index d6743b788..86a67ab3e 100644 --- a/include/metatile_behavior.h +++ b/include/metatile_behavior.h @@ -1,7 +1,7 @@ #ifndef GUARD_METATILE_BEHAVIOR #define GUARD_METATILE_BEHAVIOR -bool8 ShouldDoJumpLandingDustEffect(u8); +bool8 MetatileBehavior_IsATile(u8); bool8 MetatileBehavior_IsEncounterTile(u8); bool8 MetatileBehavior_IsJumpEast(u8); bool8 MetatileBehavior_IsJumpWest(u8); @@ -74,7 +74,7 @@ bool8 MetatileBehavior_IsPuddle(u8); bool8 MetatileBehavior_IsTallGrass(u8); bool8 MetatileBehavior_IsLongGrass(u8); bool8 MetatileBehavior_IsBerryTreeSoil(u8); -bool8 MetatileBehavior_IsAsh(u8); +bool8 MetatileBehavior_IsAshGrass(u8); bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8); bool8 MetatileBehavior_IsBridge(u8); u8 MetatileBehavior_GetBridgeSth(u8); diff --git a/include/mon_markings.h b/include/mon_markings.h new file mode 100644 index 000000000..852e8b4eb --- /dev/null +++ b/include/mon_markings.h @@ -0,0 +1,24 @@ +#ifndef POKEEMERALD_MON_MARKINGS_H +#define POKEEMERALD_MON_MARKINGS_H + +struct PokemonMarkMenu +{ + /*0x0000*/ u16 baseTileTag; + /*0x0002*/ u16 basePaletteTag; + /*0x0004*/ u8 markings; // bit flags + /*0x0005*/ s8 cursorPos; + /*0x0006*/ bool8 markingsArray[4]; + /*0x000A*/ u8 cursorBaseY; + /*0x000B*/ bool8 spriteSheetLoadRequired; + /*0x000C*/ struct Sprite *menuWindowSprites[2]; // upper and lower halves of menu window + /*0x0014*/ struct Sprite *menuMarkingSprites[4]; + /*0x0024*/ struct Sprite *unkSprite; + /*0x0028*/ struct Sprite *menuTextSprite; + /*0x002C*/ const u8 *frameTiles; + /*0x0030*/ const u16 *framePalette; + /*0x0034*/ u8 menuWindowSpriteTiles[0x1000]; + /*0x1034*/ u8 filler1030[0x80]; + /*0x10B4*/ u8 tileLoadState; +}; // 10b8 + +#endif //POKEEMERALD_MON_MARKINGS_H diff --git a/include/moves.h b/include/moves.h deleted file mode 100644 index 682f59506..000000000 --- a/include/moves.h +++ /dev/null @@ -1,366 +0,0 @@ -#ifndef GUARD_MOVES_H -#define GUARD_MOVES_H - -enum -{ - MOVE_NONE, - MOVE_POUND, - MOVE_KARATE_CHOP, - MOVE_DOUBLE_SLAP, - MOVE_COMET_PUNCH, - MOVE_MEGA_PUNCH, - MOVE_PAY_DAY, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_THUNDER_PUNCH, - MOVE_SCRATCH, - MOVE_VICE_GRIP, - MOVE_GUILLOTINE, - MOVE_RAZOR_WIND, - MOVE_SWORDS_DANCE, - MOVE_CUT, - MOVE_GUST, - MOVE_WING_ATTACK, - MOVE_WHIRLWIND, - MOVE_FLY, - MOVE_BIND, - MOVE_SLAM, - MOVE_VINE_WHIP, - MOVE_STOMP, - MOVE_DOUBLE_KICK, - MOVE_MEGA_KICK, - MOVE_JUMP_KICK, - MOVE_ROLLING_KICK, - MOVE_SAND_ATTACK, - MOVE_HEADBUTT, - MOVE_HORN_ATTACK, - MOVE_FURY_ATTACK, - MOVE_HORN_DRILL, - MOVE_TACKLE, - MOVE_BODY_SLAM, - MOVE_WRAP, - MOVE_TAKE_DOWN, - MOVE_THRASH, - MOVE_DOUBLE_EDGE, - MOVE_TAIL_WHIP, - MOVE_POISON_STING, - MOVE_TWINEEDLE, - MOVE_PIN_MISSILE, - MOVE_LEER, - MOVE_BITE, - MOVE_GROWL, - MOVE_ROAR, - MOVE_SING, - MOVE_SUPERSONIC, - MOVE_SONIC_BOOM, - MOVE_DISABLE, - MOVE_ACID, - MOVE_EMBER, - MOVE_FLAMETHROWER, - MOVE_MIST, - MOVE_WATER_GUN, - MOVE_HYDRO_PUMP, - MOVE_SURF, - MOVE_ICE_BEAM, - MOVE_BLIZZARD, - MOVE_PSYBEAM, - MOVE_BUBBLE_BEAM, - MOVE_AURORA_BEAM, - MOVE_HYPER_BEAM, - MOVE_PECK, - MOVE_DRILL_PECK, - MOVE_SUBMISSION, - MOVE_LOW_KICK, - MOVE_COUNTER, - MOVE_SEISMIC_TOSS, - MOVE_STRENGTH, - MOVE_ABSORB, - MOVE_MEGA_DRAIN, - MOVE_LEECH_SEED, - MOVE_GROWTH, - MOVE_RAZOR_LEAF, - MOVE_SOLAR_BEAM, - MOVE_POISON_POWDER, - MOVE_STUN_SPORE, - MOVE_SLEEP_POWDER, - MOVE_PETAL_DANCE, - MOVE_STRING_SHOT, - MOVE_DRAGON_RAGE, - MOVE_FIRE_SPIN, - MOVE_THUNDER_SHOCK, - MOVE_THUNDERBOLT, - MOVE_THUNDER_WAVE, - MOVE_THUNDER, - MOVE_ROCK_THROW, - MOVE_EARTHQUAKE, - MOVE_FISSURE, - MOVE_DIG, - MOVE_TOXIC, - MOVE_CONFUSION, - MOVE_PSYCHIC, - MOVE_HYPNOSIS, - MOVE_MEDITATE, - MOVE_AGILITY, - MOVE_QUICK_ATTACK, - MOVE_RAGE, - MOVE_TELEPORT, - MOVE_NIGHT_SHADE, - MOVE_MIMIC, - MOVE_SCREECH, - MOVE_DOUBLE_TEAM, - MOVE_RECOVER, - MOVE_HARDEN, - MOVE_MINIMIZE, - MOVE_SMOKESCREEN, - MOVE_CONFUSE_RAY, - MOVE_WITHDRAW, - MOVE_DEFENSE_CURL, - MOVE_BARRIER, - MOVE_LIGHT_SCREEN, - MOVE_HAZE, - MOVE_REFLECT, - MOVE_FOCUS_ENERGY, - MOVE_BIDE, - MOVE_METRONOME, - MOVE_MIRROR_MOVE, - MOVE_SELF_DESTRUCT, - MOVE_EGG_BOMB, - MOVE_LICK, - MOVE_SMOG, - MOVE_SLUDGE, - MOVE_BONE_CLUB, - MOVE_FIRE_BLAST, - MOVE_WATERFALL, - MOVE_CLAMP, - MOVE_SWIFT, - MOVE_SKULL_BASH, - MOVE_SPIKE_CANNON, - MOVE_CONSTRICT, - MOVE_AMNESIA, - MOVE_KINESIS, - MOVE_SOFT_BOILED, - MOVE_HI_JUMP_KICK, - MOVE_GLARE, - MOVE_DREAM_EATER, - MOVE_POISON_GAS, - MOVE_BARRAGE, - MOVE_LEECH_LIFE, - MOVE_LOVELY_KISS, - MOVE_SKY_ATTACK, - MOVE_TRANSFORM, - MOVE_BUBBLE, - MOVE_DIZZY_PUNCH, - MOVE_SPORE, - MOVE_FLASH, - MOVE_PSYWAVE, - MOVE_SPLASH, - MOVE_ACID_ARMOR, - MOVE_CRABHAMMER, - MOVE_EXPLOSION, - MOVE_FURY_SWIPES, - MOVE_BONEMERANG, - MOVE_REST, - MOVE_ROCK_SLIDE, - MOVE_HYPER_FANG, - MOVE_SHARPEN, - MOVE_CONVERSION, - MOVE_TRI_ATTACK, - MOVE_SUPER_FANG, - MOVE_SLASH, - MOVE_SUBSTITUTE, - MOVE_STRUGGLE, - MOVE_SKETCH, - MOVE_TRIPLE_KICK, - MOVE_THIEF, - MOVE_SPIDER_WEB, - MOVE_MIND_READER, - MOVE_NIGHTMARE, - MOVE_FLAME_WHEEL, - MOVE_SNORE, - MOVE_CURSE, - MOVE_FLAIL, - MOVE_CONVERSION_2, - MOVE_AEROBLAST, - MOVE_COTTON_SPORE, - MOVE_REVERSAL, - MOVE_SPITE, - MOVE_POWDER_SNOW, - MOVE_PROTECT, - MOVE_MACH_PUNCH, - MOVE_SCARY_FACE, - MOVE_FAINT_ATTACK, - MOVE_SWEET_KISS, - MOVE_BELLY_DRUM, - MOVE_SLUDGE_BOMB, - MOVE_MUD_SLAP, - MOVE_OCTAZOOKA, - MOVE_SPIKES, - MOVE_ZAP_CANNON, - MOVE_FORESIGHT, - MOVE_DESTINY_BOND, - MOVE_PERISH_SONG, - MOVE_ICY_WIND, - MOVE_DETECT, - MOVE_BONE_RUSH, - MOVE_LOCK_ON, - MOVE_OUTRAGE, - MOVE_SANDSTORM, - MOVE_GIGA_DRAIN, - MOVE_ENDURE, - MOVE_CHARM, - MOVE_ROLLOUT, - MOVE_FALSE_SWIPE, - MOVE_SWAGGER, - MOVE_MILK_DRINK, - MOVE_SPARK, - MOVE_FURY_CUTTER, - MOVE_STEEL_WING, - MOVE_MEAN_LOOK, - MOVE_ATTRACT, - MOVE_SLEEP_TALK, - MOVE_HEAL_BELL, - MOVE_RETURN, - MOVE_PRESENT, - MOVE_FRUSTRATION, - MOVE_SAFEGUARD, - MOVE_PAIN_SPLIT, - MOVE_SACRED_FIRE, - MOVE_MAGNITUDE, - MOVE_DYNAMIC_PUNCH, - MOVE_MEGAHORN, - MOVE_DRAGON_BREATH, - MOVE_BATON_PASS, - MOVE_ENCORE, - MOVE_PURSUIT, - MOVE_RAPID_SPIN, - MOVE_SWEET_SCENT, - MOVE_IRON_TAIL, - MOVE_METAL_CLAW, - MOVE_VITAL_THROW, - MOVE_MORNING_SUN, - MOVE_SYNTHESIS, - MOVE_MOONLIGHT, - MOVE_HIDDEN_POWER, - MOVE_CROSS_CHOP, - MOVE_TWISTER, - MOVE_RAIN_DANCE, - MOVE_SUNNY_DAY, - MOVE_CRUNCH, - MOVE_MIRROR_COAT, - MOVE_PSYCH_UP, - MOVE_EXTREME_SPEED, - MOVE_ANCIENT_POWER, - MOVE_SHADOW_BALL, - MOVE_FUTURE_SIGHT, - MOVE_ROCK_SMASH, - MOVE_WHIRLPOOL, - MOVE_BEAT_UP, - MOVE_FAKE_OUT, - MOVE_UPROAR, - MOVE_STOCKPILE, - MOVE_SPIT_UP, - MOVE_SWALLOW, - MOVE_HEAT_WAVE, - MOVE_HAIL, - MOVE_TORMENT, - MOVE_FLATTER, - MOVE_WILL_O_WISP, - MOVE_MEMENTO, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_SMELLING_SALT, - MOVE_FOLLOW_ME, - MOVE_NATURE_POWER, - MOVE_CHARGE, - MOVE_TAUNT, - MOVE_HELPING_HAND, - MOVE_TRICK, - MOVE_ROLE_PLAY, - MOVE_WISH, - MOVE_ASSIST, - MOVE_INGRAIN, - MOVE_SUPERPOWER, - MOVE_MAGIC_COAT, - MOVE_RECYCLE, - MOVE_REVENGE, - MOVE_BRICK_BREAK, - MOVE_YAWN, - MOVE_KNOCK_OFF, - MOVE_ENDEAVOR, - MOVE_ERUPTION, - MOVE_SKILL_SWAP, - MOVE_IMPRISON, - MOVE_REFRESH, - MOVE_GRUDGE, - MOVE_SNATCH, - MOVE_SECRET_POWER, - MOVE_DIVE, - MOVE_ARM_THRUST, - MOVE_CAMOUFLAGE, - MOVE_TAIL_GLOW, - MOVE_LUSTER_PURGE, - MOVE_MIST_BALL, - MOVE_FEATHER_DANCE, - MOVE_TEETER_DANCE, - MOVE_BLAZE_KICK, - MOVE_MUD_SPORT, - MOVE_ICE_BALL, - MOVE_NEEDLE_ARM, - MOVE_SLACK_OFF, - MOVE_HYPER_VOICE, - MOVE_POISON_FANG, - MOVE_CRUSH_CLAW, - MOVE_BLAST_BURN, - MOVE_HYDRO_CANNON, - MOVE_METEOR_MASH, - MOVE_ASTONISH, - MOVE_WEATHER_BALL, - MOVE_AROMATHERAPY, - MOVE_FAKE_TEARS, - MOVE_AIR_CUTTER, - MOVE_OVERHEAT, - MOVE_ODOR_SLEUTH, - MOVE_ROCK_TOMB, - MOVE_SILVER_WIND, - MOVE_METAL_SOUND, - MOVE_GRASS_WHISTLE, - MOVE_TICKLE, - MOVE_COSMIC_POWER, - MOVE_WATER_SPOUT, - MOVE_SIGNAL_BEAM, - MOVE_SHADOW_PUNCH, - MOVE_EXTRASENSORY, - MOVE_SKY_UPPERCUT, - MOVE_SAND_TOMB, - MOVE_SHEER_COLD, - MOVE_MUDDY_WATER, - MOVE_BULLET_SEED, - MOVE_AERIAL_ACE, - MOVE_ICICLE_SPEAR, - MOVE_IRON_DEFENSE, - MOVE_BLOCK, - MOVE_HOWL, - MOVE_DRAGON_CLAW, - MOVE_FRENZY_PLANT, - MOVE_BULK_UP, - MOVE_BOUNCE, - MOVE_MUD_SHOT, - MOVE_POISON_TAIL, - MOVE_COVET, - MOVE_VOLT_TACKLE, - MOVE_MAGICAL_LEAF, - MOVE_WATER_SPORT, - MOVE_CALM_MIND, - MOVE_LEAF_BLADE, - MOVE_DRAGON_DANCE, - MOVE_ROCK_BLAST, - MOVE_SHOCK_WAVE, - MOVE_WATER_PULSE, - MOVE_DOOM_DESIRE, - MOVE_PSYCHO_BOOST, -}; -extern const u8 gMoveNames[][13]; - -#define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST - -#endif // GUARD_MOVES_H diff --git a/include/multiboot_pokemon_colosseum.h b/include/multiboot_pokemon_colosseum.h new file mode 100644 index 000000000..33e4bc33c --- /dev/null +++ b/include/multiboot_pokemon_colosseum.h @@ -0,0 +1,6 @@ +#ifndef GUARD_MULTIBOOT_POKEMON_COLOSSEUM_H +#define GUARD_MULTIBOOT_POKEMON_COLOSSEUM_H + +extern const u16 gMultiBootProgram_PokemonColosseum_Start[0x14000]; + +#endif // GUARD_MULTIBOOT_POKEMON_COLOSSEUM_H diff --git a/include/mystery_event_menu.h b/include/mystery_event_menu.h new file mode 100644 index 000000000..8801789d9 --- /dev/null +++ b/include/mystery_event_menu.h @@ -0,0 +1,6 @@ +#ifndef GUARD_MYSTERY_EVENT_MENU_H +#define GUARD_MYSTERY_EVENT_MENU_H + +void CB2_InitMysteryEventMenu(void); + +#endif // GUARD_MYSTERY_EVENT_MENU_H diff --git a/include/mystery_event_msg.h b/include/mystery_event_msg.h new file mode 100644 index 000000000..465b60ccb --- /dev/null +++ b/include/mystery_event_msg.h @@ -0,0 +1,16 @@ +#ifndef GUARD_MYSTERY_EVENT_MSG_H +#define GUARD_MYSTERY_EVENT_MSG_H + +extern const u8 gText_MysteryGiftBerry[]; +extern const u8 gText_MysteryGiftBerryTransform[]; +extern const u8 gText_MysteryGiftBerryObtained[]; +extern const u8 gText_MysteryGiftSpecialRibbon[]; +extern const u8 gText_MysteryGiftNationalDex[]; +extern const u8 gText_MysteryGiftRareWord[]; +extern const u8 gText_MysteryGiftSentOver[]; +extern const u8 gText_MysteryGiftFullParty[]; +extern const u8 gText_MysteryGiftNewTrainer[]; +extern const u8 gText_MysteryGiftNewAdversaryInBattleTower[]; +extern const u8 gText_MysteryGiftCantBeUsed[]; + +#endif // GUARD_MYSTERY_EVENT_MSG_H diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h index ab23a8d00..991cab53a 100644 --- a/include/mystery_event_script.h +++ b/include/mystery_event_script.h @@ -1,7 +1,9 @@ #ifndef GUARD_MYSTERY_EVENT_SCRIPT_H #define GUARD_MYSTERY_EVENT_SCRIPT_H -u32 RunMysteryEventScript(u8 *); +void sub_8153870(u8 *script); +bool32 sub_8153884(u32 *a0); +u32 RunMysteryEventScript(u8 *script); void SetMysteryEventScriptStatus(u32 val); u16 GetRecordMixingGift(void); diff --git a/include/naming_screen.h b/include/naming_screen.h index 3d69b834f..b04cb19b6 100644 --- a/include/naming_screen.h +++ b/include/naming_screen.h @@ -1,12 +1,89 @@ #ifndef GUARD_NAMING_SCREEN_H #define GUARD_NAMING_SCREEN_H -#define NAMING_SCREEN_PLAYER 0 -#define NAMING_SCREEN_BOX 1 -#define NAMING_SCREEN_CAUGHT_MON 2 -#define NAMING_SCREEN_3 3 -#define NAMING_SCREEN_WALDA 4 +#include "main.h" -void DoNamingScreen(u8 caseId, u8* dst, u16 monSpecies, u8 monGender, u32 monPersonality, void (*callback)(void)); +#define KBEVENT_NONE 0 +#define KBEVENT_PRESSED_A 5 +#define KBEVENT_PRESSED_B 6 +#define KBEVENT_PRESSED_SELECT 8 +#define KBEVENT_PRESSED_START 9 + +enum +{ + NAMING_SCREEN_PLAYER, + NAMING_SCREEN_BOX, + NAMING_SCREEN_CAUGHT_MON, + NAMING_SCREEN_3, + NAMING_SCREEN_WALDA, +}; + +struct NamingScreenTemplate +{ + u8 copyExistingString; + u8 maxChars; + u8 iconFunction; + u8 addGenderIcon; + u8 initialPage; + u8 unused; + const u8 *title; +}; + +struct NamingScreenData { + /*0x0*/ u8 tilemapBuffer1[0x800]; + /*0x800*/ u8 tilemapBuffer2[0x800]; + /*0x800*/ u8 tilemapBuffer3[0x800]; + /*0x1800*/ u8 textBuffer[0x10]; + /*0x1810*/ u8 tileBuffer[0x600]; + /*0x1E10*/ u8 state; + /*0x1E11*/ u8 windows[5]; + /*0x1E16*/ u16 inputCharBaseXPos; + /*0x1E18*/ u16 bg1vOffset; + /*0x1E1A*/ u16 bg2vOffset; + /*0x1E1C*/ u16 bg1Priority; + /*0x1E1E*/ u16 bg2Priority; + /*0x1E20*/ u8 bgToReveal; + /*0x1E21*/ u8 bgToHide; + /*0x1E22*/ u8 currentPage; + /*0x1E23*/ u8 cursorSpriteId; + /*0x1E24*/ u8 selectBtnFrameSpriteId; + /*0x1E25*/ u8 keyRepeatStartDelayCopy; + /*0x1E28*/ const struct NamingScreenTemplate *template; + /*0x1E2C*/ u8 templateNum; + /*0x1E30*/ u8 *destBuffer; + /*0x1E34*/ u16 monSpecies; + /*0x1E36*/ u16 monGender; + /*0x1E38*/ u32 monPersonality; + /*0x1E3C*/ MainCallback returnCallback; +}; + +enum +{ + PAGE_UPPER, + PAGE_LOWER, + PAGE_OTHERS, +}; + +enum +{ + MAIN_STATE_BEGIN_FADE_IN, + MAIN_STATE_WAIT_FADE_IN, + MAIN_STATE_HANDLE_INPUT, + MAIN_STATE_MOVE_TO_OK_BUTTON, + MAIN_STATE_START_PAGE_SWAP, + MAIN_STATE_WAIT_PAGE_SWAP, + MAIN_STATE_6, + MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE, + MAIN_STATE_BEGIN_FADE_OUT, +}; + +enum +{ + INPUT_STATE_DISABLED, + INPUT_STATE_ENABLED, + INPUT_STATE_2, +}; + +void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback); #endif // GUARD_NAMING_SCREEN_H diff --git a/include/new_game.h b/include/new_game.h index 2088d1826..7e1169ec3 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -4,12 +4,7 @@ void WriteUnalignedWord(u32 var, u8 *dataPtr); u32 ReadUnalignedWord(u8* dataPtr); void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom); -void InitPlayerTrainerId(void); -void SetDefaultOptions(void); -void ClearPokedexFlags(void); -void WarpToTruck(void); void NewGameInitData(void); -void ResetMiniGamesResults(void); void sub_808447C(void); void Sav2_ClearSetDefault(void); diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h deleted file mode 100644 index 42b8c60b1..000000000 --- a/include/new_menu_helpers.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef GUARD_NEW_MENU_HELPERS_H -#define GUARD_NEW_MENU_HELPERS_H - -#include "text.h" -#include "task.h" - -void sub_81973A4(void); -void sub_81973C4(u8, u8); -void sub_819746C(u8 windowId, bool8 copyToVram); -void sub_81973FC(u8, u8); -u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor); -void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback); -void sub_8197434(u8 a0, u8 a1); -void SetStandardWindowBorderStyle(u8 a0, u8 a1); -void sub_8197930(void); - -#endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/option_menu.h b/include/option_menu.h new file mode 100644 index 000000000..b23a73c4c --- /dev/null +++ b/include/option_menu.h @@ -0,0 +1,6 @@ +#ifndef GUARD_OPTION_MENU_H +#define GUARD_OPTION_MENU_H + +void CB2_InitOptionMenu(void); + +#endif // GUARD_OPTION_MENU_H diff --git a/include/overworld.h b/include/overworld.h index 43ddc2dec..341e44278 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -1,7 +1,5 @@ -#ifndef GUARD_ROM4_H -#define GUARD_ROM4_H - -#include "main.h" +#ifndef GUARD_OVERWORLD_H +#define GUARD_OVERWORLD_H struct UnkPlayerStruct { @@ -9,65 +7,140 @@ struct UnkPlayerStruct u8 player_field_1; }; -struct LinkPlayerMapObject +struct LinkPlayerEventObject { u8 active; u8 linkPlayerId; - u8 mapObjId; + u8 eventObjId; u8 mode; }; -struct UCoords32 -{ - u32 x, y; -}; +// Exported RAM declarations +extern struct WarpData gUnknown_020322DC; +extern struct LinkPlayerEventObject gLinkPlayerEventObjects[4]; -extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; -extern MainCallback gFieldCallback; +extern u16 *gBGTilemapBuffers1; +extern u16 *gBGTilemapBuffers2; +extern u16 *gBGTilemapBuffers3; -void IncrementGameStat(u8 index); +extern void (*gFieldCallback)(void); -void Overworld_SetMapObjTemplateCoords(u8, s16, s16); -void Overworld_SetMapObjTemplateMovementType(u8, u8); +// Exported ROM declarations +extern const struct UCoords32 gUnknown_08339D64[]; +void DoWhiteOut(void); +void Overworld_ResetStateAfterFly(void); +void Overworld_ResetStateAfterTeleport(void); +void Overworld_ResetStateAfterDigEscRope(void); +void ResetGameStats(void); +void IncrementGameStat(u8 index); +u32 GetGameStat(u8 index); +void SetGameStat(u8 index, u32 value); +void ApplyNewEncryptionKeyToGameStats(u32 newKey); +void LoadEventObjTemplatesFromHeader(void); +void LoadSaveblockEventObjScripts(void); +void Overworld_SetEventObjTemplateCoords(u8 localId, s16 x, s16 y); +void Overworld_SetEventObjTemplateMovementType(u8 localId, u8 movementType); +const struct MapLayout *GetMapLayout(void); +void ApplyCurrentWarp(void); +void set_warp2_warp3_to_neg_1(void); +void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +bool32 warp_data_is_not_neg_1(struct WarpData *warp); +struct MapHeader const *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum); +struct MapHeader const *const warp1_get_mapheader(void); +void set_current_map_header_from_sav1_save_old_name(void); +void LoadSaveblockMapHeader(void); +void update_camera_pos_from_warpid(void); +void warp_in(void); void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); - -void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); -void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -void Overworld_SetHealLocationWarp(u8); +void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId); +void saved_warp2_set(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId); +void saved_warp2_set_2(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); +void sub_8084CCC(u8 a1); +void Overworld_SetWarpDestToLastHealLoc(void); +void Overworld_SetHealLocationWarp(u8 healLocationId); +void sub_8084D5C(s16 a1, s16 a2); void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -void sub_8084E2C(s8, s8, s8, s8, s8); -void sub_8084E80(s8, s8, s8, s8, s8); -void sub_8084EBC(s16, s16); - +void sub_8084E14(void); +void sub_8084E2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void warp1_set_to_warp2(void); +void sub_8084E80(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void sub_8084EBC(s16 x, s16 y); +void warp1_set_to_sav1w(void); +void sub_8084F2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void sub_8084F6C(u8 a1); +void sub_8084FAC(void); +const struct MapConnection *GetMapConnection(u8 dir); +bool8 sub_8084FF8(u8 dir, u16 x, u16 y); +bool8 sub_8085058(u16 x, u16 y); +bool8 sub_8085078(u16 x, u16 y); +void mliX_load_map(u8 mapGroup, u8 mapNum); void player_avatar_init_params_reset(void); - -void Overworld_SetFlashLevel(s32 a1); -//u8 Overworld_GetFlashLevel(void); -void sub_8085524(u16); - -void Overworld_SetSavedMusic(u16); +void walkrun_find_lowest_active_bit_in_bitfield(void); +bool32 Overworld_IsBikingAllowed(void); +void SetDefaultFlashLevel(void); +void Overworld_SetFlashLevel(s32 flashLevel); +u8 Overworld_GetFlashLevel(void); +void sub_8085524(u16 mapLayoutId); +void sub_8085540(u8 var); +u8 sub_808554C(void); +u16 GetLocationMusic(struct WarpData *warp); +u16 GetCurrLocationDefaultMusic(void); +u16 GetWarpDestinationMusic(void); +void Overworld_ResetMapMusic(void); +void Overworld_PlaySpecialMapMusic(void); +void Overworld_SetSavedMusic(u16 songNum); +void Overworld_ClearSavedMusic(void); void Overworld_ChangeMusicToDefault(void); -void Overworld_ChangeMusicTo(u16); - +void Overworld_ChangeMusicTo(u16 newMusic); +u8 GetMapMusicFadeoutSpeed(void); +void music_something(void); +bool8 sub_80859A0(void); +void Overworld_FadeOutMapMusic(void); +void UpdateAmbientCry(s16 *state, u16 *delayCounter); +u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum); +u8 GetMapTypeByWarpData(struct WarpData *warp); +u8 Overworld_GetMapTypeOfSaveblockLocation(void); +u8 get_map_light_from_warp0(void); +bool8 is_map_type_1_2_3_5_or_6(u8 mapType); +bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType); +bool8 Overworld_MapTypeIsIndoors(u8 mapType); +u8 sav1_saved_warp2_map_get_name(void); +u8 sav1_map_get_name(void); +u8 GetCurrentMapBattleScene(void); +void overworld_free_bg_tilemaps(void); bool32 is_c1_link_related_active(void); - -void strange_npc_table_clear(void); -const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16); -void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *); -void sub_8086230(void); -void c2_exit_to_overworld_2_switch(void); +void CB1_Overworld(void); +void CB2_OverworldBasic(void); +void CB2_Overworld(void); +void SetMainCallback1(void (*cb)(void)); +void sub_8085E94(void *a0); +void CB2_NewGame(void); +void CB2_WhiteOut(void); +void CB2_LoadMap(void); +void sub_8086024(void); +void sub_8086074(void); +void CB2_ReturnToField(void); +void CB2_ReturnToFieldLocal(void); +void CB2_ReturnToFieldLink(void); +void c2_8056854(void); +void CB2_ReturnToFieldWithOpenMenu(void); +void CB2_ReturnToFieldContinueScript(void); +void CB2_ReturnToFieldContinueScriptPlayMapMusic(void); +void sub_80861E8(void); +void CB2_ContinueSavedGame(void); +void sub_8086C2C(void); +u32 sub_8087214(void); +bool32 sub_808727C(void); +u16 sub_8087288(void); +u16 sub_808729C(void); +u16 sub_80872B0(void); +u16 sub_80872C4(void); bool32 sub_8087598(void); -void c2_exit_to_overworld_1_continue_scripts_restart_music(void); -void warp_in(void); -u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum); -void sub_8086194(void); -void sub_8084CCC(u8 spawn); -void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum); -void c2_load_new_map(void); -void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); -void mapldr_default(void); -void overworld_free_bg_tilemaps(void); -void sub_80861B0(void); +bool32 sub_80875C8(void); +bool32 sub_8087634(void); +bool32 sub_808766C(void); +void ClearLinkPlayerEventObjects(void); -#endif //GUARD_ROM4_H +#endif // GUARD_OVERWORLD_H diff --git a/include/palette.h b/include/palette.h index d3bcd2271..d14fa1fcd 100644 --- a/include/palette.h +++ b/include/palette.h @@ -1,8 +1,6 @@ #ifndef GUARD_PALETTE_H #define GUARD_PALETTE_H -#include "global.h" - #define gPaletteFade_selectedPalettes (gPaletteFade.multipurpose1) // normal and fast fade #define gPaletteFade_blendCnt (gPaletteFade.multipurpose1) // hardware fade #define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade @@ -14,7 +12,7 @@ enum { FAST_FADE_IN_FROM_WHITE, - FAST_FADE_OUT_TO_WHTIE, + FAST_FADE_OUT_TO_WHITE, FAST_FADE_IN_FROM_BLACK, FAST_FADE_OUT_TO_BLACK, }; @@ -26,16 +24,16 @@ struct PaletteFadeControl u16 y:5; // blend coefficient u16 targetY:5; // target blend coefficient u16 blendColor:15; - u16 active:1; + bool16 active:1; u16 multipurpose2:6; - u16 yDec:1; // whether blend coefficient is decreasing - u16 bufferTransferDisabled:1; + bool16 yDec:1; // whether blend coefficient is decreasing + bool16 bufferTransferDisabled:1; u16 mode:2; - u16 shouldResetBlendRegisters:1; - u16 hardwareFadeFinishing:1; + bool16 shouldResetBlendRegisters:1; + bool16 hardwareFadeFinishing:1; u16 softwareFadeFinishingCounter:5; - u16 softwareFadeFinishing:1; - u16 objPaletteToggle:1; + bool16 softwareFadeFinishing:1; + bool16 objPaletteToggle:1; u8 deltaY:4; // rate of change of blend coefficient }; @@ -67,5 +65,6 @@ void BeginFastPaletteFade(u8); void BeginHardwarePaletteFade(u8, u8, u8, u8, u8); void BlendPalettes(u32, u8, u16); void BlendPalettesUnfaded(u32, u8, u16); +void sub_80A2C44(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7); #endif // GUARD_PALETTE_H diff --git a/include/party_menu.h b/include/party_menu.h index 7a7d59cd0..6e1344213 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -1,8 +1,58 @@ #ifndef GUARD_PARTY_MENU_H #define GUARD_PARTY_MENU_H +#include "task.h" + +enum +{ + AILMENT_NONE, + AILMENT_PSN, + AILMENT_PRZ, + AILMENT_SLP, + AILMENT_FRZ, + AILMENT_BRN +}; + +enum +{ + PARTY_CHOOSE_MON, + PARTY_MUST_CHOOSE_MON, + PARTY_CANT_SWITCH, + PARTY_USE_ITEM_ON, + PARTY_ABILITY_PREVENTS, + PARTY_GIVE_ITEM, +}; + +struct Struct203CEC8 +{ + u8 filler[0x9]; + s8 unk9; + s8 unkA; + u8 unkB; + u8 filler2[0x2]; +}; + +extern struct Struct203CEC8 gUnknown_0203CEC8; + bool8 pokemon_has_move(struct Pokemon *, u16); void sub_81B58A8(void); void DoWallyTutorialBagMenu(void); +u8 pokemon_ailments_get_primary(u32 status); +u8 *GetMonNickname(struct Pokemon *mon, u8 *dst); +u8 GetCursorSelectionMonId(void); +bool8 FieldCallback_PrepareFadeInFromMenu(void); +void sub_81B7F60(void); + +void sub_81B0FCC(u8 partyIdx, u8 a); +void sub_81B1370(u8 taskId); +void display_pokemon_menu_message(u8 windowId); +void sub_81B1F18(u8 taskId, u8 pokemonIdx, s8 a, s16 hp, TaskFunc func); +void sub_81B1B5C(void *a, u8 b); +u8 sub_81B1BD4(); +void sub_81B8448(); +void sub_81B8518(u8 unused); +u8 sub_81B1360(void); +void sub_81B8904(u8 arg0, void (*callback)(void)); +void OpenPartyMenuInBattle(u8 caseId); #endif // GUARD_PARTY_MENU_H diff --git a/include/player_pc.h b/include/player_pc.h index b14d1ede3..bd060faa8 100644 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -1,12 +1,88 @@ #ifndef GUARD_PLAYER_PC_H #define GUARD_PLAYER_PC_H +// local task defines +#define PAGE_INDEX data[0] +#define ITEMS_ABOVE_TOP data[1] +#define NUM_ITEMS data[1] +#define NUM_QUANTITY_ROLLER data[3] +#define NUM_PAGE_ITEMS data[4] +// not used +#define CURRENT_ITEM_STORAGE_MENU data[3] +// not used +#define SWAP_ITEM_INDEX data[8] +#define SWITCH_MODE_ACTIVE data[9] + +// this is potentially an ewram access occuring in high ewram. TODO: investigate this further. +#define NEW_GAME_PC_ITEMS(i, type) ((u16)((u16 *)gNewGamePCItems + type)[i * 2]) + +// defined and used in the above macro +enum +{ + PC_ITEM_ID, + PC_QUANTITY +}; + +// player PC menu options +enum +{ + PLAYERPC_MENU_ITEMSTORAGE, + PLAYERPC_MENU_MAILBOX, + PLAYERPC_MENU_DECORATION, + PLAYERPC_MENU_TURNOFF +}; + +// item storage menus +enum +{ + ITEMPC_MENU_WITHDRAW, + ITEMPC_MENU_DEPOSIT, + ITEMPC_MENU_TOSS, + ITEMPC_MENU_EXIT +}; + +// mailbox mail options +enum +{ + MAILBOX_READ, + MAILBOX_MOVE_TO_BAG, + MAILBOX_GIVE, + MAILBOX_CANCEL, +}; + +// special item description handlers +enum +{ + ITEMPC_SWITCH_WHICH_ITEM = 0xFFF7, + ITEMPC_OKAY_TO_THROW_AWAY, + ITEMPC_TOO_IMPORTANT, + ITEMPC_NO_MORE_ROOM, + ITEMPC_THREW_AWAY_ITEM, + ITEMPC_HOW_MANY_TO_TOSS, + ITEMPC_WITHDREW_THING, + ITEMPC_HOW_MANY_TO_WITHDRAW, + ITEMPC_GO_BACK_TO_PREV +}; + +struct PlayerPCItemPageStruct +{ + u16 cursorPos; + u16 itemsAbove; + u8 pageItems; + u8 count; + u8 filler[3]; + u8 scrollIndicatorId; +}; + // Exported type declarations // Exported RAM declarations +extern struct PlayerPCItemPageStruct playerPCItemPageInfo; // Exported ROM declarations +extern const struct MenuAction gMailboxMailOptions[]; -void sub_816B060(u8 taskId); +void ReshowPlayerPC(u8 taskId); +void sub_816B31C(void); #endif //GUARD_PLAYER_PC_H diff --git a/include/pokeball.h b/include/pokeball.h index 76f084465..84178b5b2 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -1,8 +1,32 @@ #ifndef GUARD_POKEBALL_H #define GUARD_POKEBALL_H -u8 sub_80753E8(u16, u8); +enum +{ + BALL_POKE, + BALL_GREAT, + BALL_SAFARI, + BALL_ULTRA, + BALL_MASTER, + BALL_NET, + BALL_DIVE, + BALL_NEST, + BALL_REPEAT, + BALL_TIMER, + BALL_LUXURY, + BALL_PREMIER, + POKEBALL_COUNT +}; + +#define POKEBALL_PLAYER_SENDOUT 0xFF +#define POKEBALL_OPPONENT_SENDOUT 0xFE + +u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow); +void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species); +u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h); void sub_8076918(u8 bank); void DoHitAnimHealthboxEffect(u8 bank); +void LoadBallGfx(u8 ballId); +void FreeBallGfx(u8 ballId); #endif // GUARD_POKEBALL_H diff --git a/include/pokeblock.h b/include/pokeblock.h index b0e93f0e5..6dd07b689 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -1,6 +1,9 @@ #ifndef GUARD_POKEBLOCK_H #define GUARD_POKEBLOCK_H +#define GFX_TAG_POKEBLOCK 14818 +#define GFX_TAG_POKEBLOCK_CASE 14800 + enum { PBLOCK_CLR_BLACK, @@ -22,24 +25,44 @@ enum PBLOCK_FEEL, }; -void ClearPokeblocks(void); -s16 PokeblockGetGain(u8, const struct Pokeblock *); - -/* -void sub_810B96C(void); -u8 sub_810BA50(s16, s16, u8); -u8 sub_810C9B0(struct Pokeblock *); -s16 GetPokeblockData(const struct Pokeblock *, u8); -u8 sub_810C9E8(struct Pokeblock *); -void sub_810BA7C(u8); -bool8 PokeblockClearIfExists(u8); -u8 sub_810CB68(u8, u8*); -void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest); +enum +{ + PBLOCK_CASE_FIELD, + PBLOCK_CASE_BATTLE, + PBLOCK_CASE_FEEDER, + PBLOCK_CASE_GIVE +}; + +// use pokeblock +extern u8 gPokeblockMonId; +extern s16 gPokeblockGain; + +void ChooseMonToGivePokeblock(struct Pokeblock *pokeblock, void (*callback)(void)); + +// pokeblock feed void CB2_PreparePokeblockFeedScene(void); -#include "main.h" +// pokeblock +extern const s8 gPokeblockFlavorCompatibilityTable[]; +extern const u8 *const gPokeblockNames[]; +extern const struct CompressedSpriteSheet gPokeblockCase_SpriteSheet; +extern const struct CompressedSpritePalette gPokeblockCase_SpritePal; -void sub_8136130(struct Pokeblock *, MainCallback); -*/ +void OpenPokeblockCase(u8 caseId, void (*callback)(void)); +void OpenPokeblockCaseInBattle(void); +void OpenPokeblockCaseOnFeeder(void); +void ResetPokeblockScrollPositions(void); +u8 CreatePokeblockCaseSprite(s16 x, s16 y, u8 subpriority); +void ClearPokeblocks(void); +u8 GetHighestPokeblocksFlavorLevel(const struct Pokeblock *pokeblock); +u8 GetPokeblocksFeel(const struct Pokeblock *pokeblock); +s8 GetFirstFreePokeblockSlot(void); +bool32 AddPokeblock(const struct Pokeblock *pokeblock); +bool32 TryClearPokeblock(u8 pkblId); +s16 GetPokeblockData(const struct Pokeblock *pokeblock, u8 field); +s16 PokeblockGetGain(u8 nature, const struct Pokeblock *pokeblock); +void PokeblockCopyName(const struct Pokeblock *pokeblock, u8 *dest); +bool8 CopyMonFavoritePokeblockName(u8 nature, u8 *dest); +u8 GetPokeblocksFlavor(const struct Pokeblock *pokeblock); #endif // GUARD_POKEBLOCK_H diff --git a/include/pokedex.h b/include/pokedex.h index 236feac45..f9e236588 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -2,7 +2,7 @@ #define GUARD_POKEDEX_H void ResetPokedex(void); -void CopyMonCategoryText(u16 species, u8 *dst); +void CopyMonCategoryText(u32 species, u8 *dst); u16 GetPokedexHeightWeight(u16 dexNum, u8 data); u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); @@ -17,7 +17,6 @@ enum }; s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); -u16 pokedex_count(u8); -u16 sub_80C0844(u8); +u16 sub_80C0E9C(u16, s16, s16, u16); #endif // GUARD_POKEDEX_H diff --git a/include/pokedex_area_screen.h b/include/pokedex_area_screen.h new file mode 100755 index 000000000..2fb5ade51 --- /dev/null +++ b/include/pokedex_area_screen.h @@ -0,0 +1,6 @@ +#ifndef GUARD_POKEDEX_AREA_SCREEN_H +#define GUARD_POKEDEX_AREA_SCREEN_H + +void sub_813D3D8(u16, u8*); + +#endif // GUARD_POKEDEX_AREA_SCREEN_H diff --git a/include/pokedex_cry_screen.h b/include/pokedex_cry_screen.h new file mode 100755 index 000000000..6b5cc13f2 --- /dev/null +++ b/include/pokedex_cry_screen.h @@ -0,0 +1,19 @@ +#ifndef GUARD_POKEDEX_CRY_SCREEN_H +#define GUARD_POKEDEX_CRY_SCREEN_H + +struct CryRelatedStruct +{ + u16 unk0; + u8 unk2; + u8 paletteNo; + u8 xPos; + u8 yPos; +}; + +bool8 sub_8145354(struct CryRelatedStruct*, u8); +void sub_814545C(u8); +void sub_8145534(u16); +void sub_8145914(void); +bool8 sub_8145850(struct CryRelatedStruct*, u8); + +#endif diff --git a/include/pokemon.h b/include/pokemon.h index 1eb052f4e..a60ad66be 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -1,6 +1,9 @@ #ifndef GUARD_POKEMON_H #define GUARD_POKEMON_H +#include "constants/pokemon.h" +#include "sprite.h" + #define MON_DATA_PERSONALITY 0 #define MON_DATA_OT_ID 1 #define MON_DATA_NICKNAME 2 @@ -107,82 +110,11 @@ #define MON_FEMALE 0xFE #define MON_GENDERLESS 0xFF -#define TYPE_NORMAL 0x00 -#define TYPE_FIGHTING 0x01 -#define TYPE_FLYING 0x02 -#define TYPE_POISON 0x03 -#define TYPE_GROUND 0x04 -#define TYPE_ROCK 0x05 -#define TYPE_BUG 0x06 -#define TYPE_GHOST 0x07 -#define TYPE_STEEL 0x08 -#define TYPE_MYSTERY 0x09 -#define TYPE_FIRE 0x0a -#define TYPE_WATER 0x0b -#define TYPE_GRASS 0x0c -#define TYPE_ELECTRIC 0x0d -#define TYPE_PSYCHIC 0x0e -#define TYPE_ICE 0x0f -#define TYPE_DRAGON 0x10 -#define TYPE_DARK 0x11 - -#define NUMBER_OF_MON_TYPES 0x12 - -#define PARTY_SIZE 6 #define MAX_TOTAL_EVS 510 #define NUM_STATS 6 #define UNOWN_FORM_COUNT 28 #define MAX_MON_LEVEL 100 -enum -{ - EGG_GROUP_NONE, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - EGG_GROUP_BUG, - EGG_GROUP_FLYING, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_WATER_3, - EGG_GROUP_MINERAL, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_WATER_2, - EGG_GROUP_DITTO, - EGG_GROUP_DRAGON, - EGG_GROUP_UNDISCOVERED -}; - -enum -{ - NATURE_HARDY, - NATURE_LONELY, - NATURE_BRAVE, - NATURE_ADAMANT, - NATURE_NAUGHTY, - NATURE_BOLD, - NATURE_DOCILE, - NATURE_RELAXED, - NATURE_IMPISH, - NATURE_LAX, - NATURE_TIMID, - NATURE_HASTY, - NATURE_SERIOUS, - NATURE_JOLLY, - NATURE_NAIVE, - NATURE_MODEST, - NATURE_MILD, - NATURE_QUIET, - NATURE_BASHFUL, - NATURE_RASH, - NATURE_CALM, - NATURE_GENTLE, - NATURE_SASSY, - NATURE_CAREFUL, - NATURE_QUIRKY, -}; - struct PokemonSubstruct0 { u16 species; @@ -308,31 +240,44 @@ struct PokemonStorage /*0x83C2*/ u8 boxWallpapers[14]; }; -struct UnknownPokemonStruct +struct UnknownPokemonSubStruct2 { u16 species; - u16 heldItem; u16 moves[4]; - u8 level; - u8 ppBonuses; - u8 hpEV; - u8 attackEV; - u8 defenseEV; - u8 speedEV; - u8 spAttackEV; - u8 spDefenseEV; - u32 otId; - u32 hpIV:5; - u32 attackIV:5; - u32 defenseIV:5; - u32 speedIV:5; - u32 spAttackIV:5; - u32 spDefenseIV:5; - u32 gap:1; - u32 altAbility:1; - u32 personality; - u8 nickname[POKEMON_NAME_LENGTH + 1]; - u8 friendship; + u16 item; +}; + +struct UnknownPokemonStruct2 +{ + u8 field_0_0 : 5; + u8 field_0_1 : 2; + u8 field_1; + u8 field_2; + u8 field_3; + struct UnknownPokemonSubStruct2 mons[3]; + u8 field_28[23]; + u8 language; +}; + +struct UnknownPokemonStruct3 +{ + u8 field_0[48]; + u16 field_30; + u8 field_32[38]; +}; + +struct Unknown_806F160_Struct +{ + u8 field_0_0 : 4; + u8 field_0_1 : 4; + u8 field_1; + u8 magic; + u8 field_3_0 : 4; + u8 field_3_1 : 4; + void *bytes; + u8 **byteArrays; + struct SpriteTemplate *templates; + struct SpriteFrameImage *frameImages; }; #define BATTLE_STATS_NO 8 @@ -375,28 +320,6 @@ struct BattlePokemon /*0x54*/ u32 otId; }; -enum -{ - STAT_STAGE_HP, // 0 - STAT_STAGE_ATK, // 1 - STAT_STAGE_DEF, // 2 - STAT_STAGE_SPEED, // 3 - STAT_STAGE_SPATK, // 4 - STAT_STAGE_SPDEF, // 5 - STAT_STAGE_ACC, // 6 - STAT_STAGE_EVASION, // 7 -}; - -enum -{ - STAT_HP, // 0 - STAT_ATK, // 1 - STAT_DEF, // 2 - STAT_SPD, // 3 - STAT_SPATK, // 4 - STAT_SPDEF, // 5 -}; - struct BaseStats { /* 0x00 */ u8 baseHP; @@ -511,26 +434,28 @@ struct Evolution #define EVOS_PER_MON 5 -struct EvolutionData -{ - struct Evolution evolutions[EVOS_PER_MON]; -}; - extern u8 gPlayerPartyCount; extern struct Pokemon gPlayerParty[PARTY_SIZE]; extern u8 gEnemyPartyCount; extern struct Pokemon gEnemyParty[PARTY_SIZE]; +extern struct SpriteTemplate gMultiuseSpriteTemplate; +extern struct PokemonStorage* gPokemonStoragePtr; + +extern const struct BattleMove gBattleMoves[]; +extern const u8 gFacilityClassToPicIndex[]; +extern const u8 gFacilityClassToTrainerClass[]; extern const struct BaseStats gBaseStats[]; extern const u8 *const gItemEffectTable[]; -extern const struct EvolutionData gEvolutionTable[]; -extern struct PokemonStorage* gPokemonStoragePtr; +extern const struct Evolution gEvolutionTable[][EVOS_PER_MON]; extern const u32 gExperienceTables[][MAX_MON_LEVEL + 1]; extern const u16 *const gLevelUpLearnsets[]; - -u8 CountAliveMonsInBattle(u8 caseId); -#define BATTLE_ALIVE_EXCEPT_ACTIVE 0 -#define BATTLE_ALIVE_ATK_SIDE 1 -#define BATTLE_ALIVE_DEF_SIDE 2 +extern const u8 gUnknown_08329D22[]; +extern const u8 gUnknown_08329D26[]; +extern const u8 gUnknown_08329D2A[]; +extern const u8 gStatStageRatios[][2]; +extern const u16 gUnknown_08329D54[]; +extern const struct SpriteTemplate gUnknown_08329D98[]; +extern const struct CompressedSpritePalette gMonPaletteTable[]; void ZeroBoxMonData(struct BoxPokemon *boxMon); void ZeroMonData(struct Pokemon *mon); @@ -544,26 +469,45 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level); void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality); void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId); void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread); -u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon); +void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src); +void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lvl50); +void sub_8068528(struct Pokemon *mon, const struct UnknownPokemonStruct2 *src, u8 monId); +void CreateMonWithEVSpreadPersonalityOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId); +void sub_80686FC(struct Pokemon *mon, struct UnknownPokemonStruct *dest); +void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId); +bool8 sub_80688F8(u8 caseId, u8 battlerId); +void SetDeoxysStats(void); +u16 sub_8068B48(void); +u16 sub_8068BB0(void); +void CreateObedientEnemyMon(void); void CalculateMonStats(struct Pokemon *mon); +void BoxMonToMon(const struct BoxPokemon *src, struct Pokemon *dest); u8 GetLevelFromMonExp(struct Pokemon *mon); u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon); u16 GiveMoveToMon(struct Pokemon *mon, u16 move); u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move); -void MonRestorePP(struct Pokemon *mon); void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot); void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot); void GiveMonInitialMoveset(struct Pokemon *mon); void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon); +u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove); void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move); void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); +s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef); +u8 CountAliveMonsInBattle(u8 caseId); +#define BATTLE_ALIVE_EXCEPT_ACTIVE 0 +#define BATTLE_ALIVE_ATK_SIDE 1 +#define BATTLE_ALIVE_DEF_SIDE 2 + +u8 GetDefaultMoveTarget(u8 battlerId); u8 GetMonGender(struct Pokemon *mon); u8 GetBoxMonGender(struct BoxPokemon *boxMon); u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality); -void EncryptBoxMon(struct BoxPokemon *boxMon); -void DecryptBoxMon(struct BoxPokemon *boxMon); +void SetMultiuseSpriteTemplateToPokemon(u16 species, u8 battlerPosition); +void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition); +void SetMultiuseSpriteTemplateToTrainerFront(u16 arg0, u8 battlerPosition); // These are full type signatures for GetMonData() and GetBoxMonData(), // but they are not used since some code erroneously omits the third arg. @@ -572,92 +516,105 @@ void DecryptBoxMon(struct BoxPokemon *boxMon); u32 GetMonData(); u32 GetBoxMonData(); -void SetMonData(struct Pokemon *mon, s32 field, const void *data); -void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *data); +void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg); +void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg); void CopyMon(void *dest, void *src, size_t size); u8 GiveMonToPlayer(struct Pokemon *mon); -u8 SendMonToPC(struct Pokemon *mon); +u8 SendMonToPC(struct Pokemon* mon); u8 CalculatePlayerPartyCount(void); u8 CalculateEnemyPartyCount(void); - +u8 GetMonsStateToDoubles(void); +u8 GetMonsStateToDoubles_2(void); u8 GetAbilityBySpecies(u16 species, bool8 altAbility); u8 GetMonAbility(struct Pokemon *mon); void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord); u8 GetSecretBaseTrainerPicIndex(void); -u8 GetSecretBaseTrainerNameIndex(void); +u8 GetSecretBaseTrainerClass(void); bool8 IsPlayerPartyAndPokemonStorageFull(void); bool8 IsPokemonStorageFull(void); void GetSpeciesName(u8 *name, u16 species); u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex); void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex); void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex); -void CopyPlayerPartyMonToBattleData(u8 battleIndex, u8 partyIndex); - +void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex); +bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); +bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e); +bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battlerId); +u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); +u8 *sub_806CF78(u16 itemId); u8 GetNature(struct Pokemon *mon); u8 GetNatureFromPersonality(u32 personality); - -u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex); - -void MonRestorePP(struct Pokemon *); -void BoxMonRestorePP(struct BoxPokemon *); - +u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); +u16 HoennPokedexNumToSpecies(u16 hoennNum); u16 NationalPokedexNumToSpecies(u16 nationalNum); -u16 NationalToHoennOrder(u16); -u16 SpeciesToNationalPokedexNum(u16); -u16 HoennToNationalOrder(u16); +u16 NationalToHoennOrder(u16 nationalNum); +u16 SpeciesToNationalPokedexNum(u16 species); +u16 SpeciesToHoennPokedexNum(u16 species); +u16 HoennToNationalOrder(u16 hoennNum); u16 SpeciesToCryId(u16 species); -void DrawSpindaSpots(u16, u32, u8 *, u8); -void AdjustFriendship(struct Pokemon *, u8); -u8 CheckPartyHasHadPokerus(struct Pokemon *, u8); -void UpdatePartyPokerusTime(u16); -u32 CanMonLearnTMHM(struct Pokemon *, u8); -u32 CanSpeciesLearnTMHM(u16 species, u8 tm); -u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); -void ClearBattleMonForms(void); -const u8 *GetMonFrontSpritePal(struct Pokemon *mon); -const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16, u32, u32); -const struct CompressedSpritePalette *sub_80409C8(u16, u32, u32); -bool8 IsOtherTrainer(u32, u8 *); -void SetWildMonHeldItem(void); -u16 GetMonEVCount(struct Pokemon *); - -const struct CompressedSpritePalette *sub_806E794(struct Pokemon *mon); -const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality); -bool32 IsHMMove2(u16 move); -bool8 IsPokeSpriteNotFlipped(u16 species); -bool8 IsMonShiny(struct Pokemon *mon); -bool8 IsShinyOtIdPersonality(u32 otId, u32 personality); - +void sub_806D544(u16 species, u32 personality, u8 *dest); +void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4); +void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); +bool8 sub_806D7EC(void); +bool16 GetLinkTrainerFlankId(u8 id); +s32 GetBattlerMultiplayerId(u16 a1); +u8 GetTrainerEncounterMusicId(u16 trainerOpponentId); +u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex); +void AdjustFriendship(struct Pokemon *mon, u8 event); void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies); -bool8 IsTradedMon(struct Pokemon *mon); -void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality); -s32 GetBankMultiplayerId(u16 a1); -bool16 sub_806D82C(u8 id); -u16 MonTryLearningNewMove(struct Pokemon* mon, bool8); -void sub_8068AA4(void); // sets stats for deoxys -bool8 HasTwoFramesAnimation(u16 species); -u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); +u16 GetMonEVCount(struct Pokemon *mon); void RandomlyGivePartyPokerus(struct Pokemon *party); u8 CheckPartyPokerus(struct Pokemon *party, u8 selection); u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); void UpdatePartyPokerusTime(u16 days); void PartySpreadPokerus(struct Pokemon *party); -s8 GetMonFlavourRelation(struct Pokemon *mon, u8 a2); -s8 GetFlavourRelationByPersonality(u32 personality, u8 a2); -u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); -u8 GetDefaultMoveTarget(u8 atkBank); -u16 PlayerGenderToFrontTrainerPicId(u8 playerGender); -void sub_806A1C0(u16 arg0, u8 bankIdentity); -void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity); -u8 GetSecretBaseTrainerPicIndex(void); bool8 TryIncrementMonLevel(struct Pokemon *mon); -void BoxMonToMon(struct BoxPokemon *srcMon, struct Pokemon *dstMon); +u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm); +u32 CanSpeciesLearnTMHM(u16 species, u8 tm); +u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves); - -#include "sprite.h" - -void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); +u8 GetNumberOfRelearnableMoves(struct Pokemon *mon); +u16 SpeciesToPokedexNum(u16 species); +bool32 sub_806E3F8(u16 species); +void ClearBattleMonForms(void); +u16 GetBattleBGM(void); +void PlayBattleBGM(void); +void PlayMapChosenOrBattleBGM(u16 songId); +void sub_806E694(u16 songId); +const u8 *GetMonFrontSpritePal(struct Pokemon *mon); +const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality); +const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon); +const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality); +bool32 IsHMMove2(u16 move); +bool8 IsMonSpriteNotFlipped(u16 species); +s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor); +s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor); +bool8 IsTradedMon(struct Pokemon *mon); +bool8 IsOtherTrainer(u32 otId, u8 *otName); +void MonRestorePP(struct Pokemon *mon); +void BoxMonRestorePP(struct BoxPokemon *boxMon); +void SetMonPreventsSwitchingString(void); +void SetWildMonHeldItem(void); +bool8 IsMonShiny(struct Pokemon *mon); +bool8 IsShinyOtIdPersonality(u32 otId, u32 personality); +const u8 *GetTrainerPartnerName(void); void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); +void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); +void PokemonSummaryDoMonAnimation(struct Sprite* sprite, u16 species, bool8 oneFrame); +void sub_806EE98(void); void BattleAnimateBackSprite(struct Sprite* sprite, u16 species); +u8 sub_806EF08(u8 arg0); +u8 sub_806EF84(u8 arg0, u8 arg1); +u16 sub_806EFF0(u16 arg0); +u16 FacilityClassToPicIndex(u16 facilityClass); +u16 PlayerGenderToFrontTrainerPicId(u8 playerGender); +void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality); +const u8 *GetTrainerClassNameFromId(u16 trainerId); +const u8 *GetTrainerNameFromId(u16 trainerId); +bool8 HasTwoFramesAnimation(u16 species); +bool8 sub_806F104(void); +struct Unknown_806F160_Struct *sub_806F2AC(u8 id, u8 arg1); +void sub_806F47C(u8 id); +u8 *sub_806F4F8(u8 id, u8 arg1); #endif // GUARD_POKEMON_H diff --git a/include/pokemon_3.h b/include/pokemon_3.h index 5c9862d57..263839b19 100644 --- a/include/pokemon_3.h +++ b/include/pokemon_3.h @@ -1,7 +1,10 @@ #ifndef GUARD_POKEMON_3_H #define GUARD_POKEMON_3_H +u16 sub_806EFF0(u16); const u8* GetTrainerClassNameFromId(u16 trainerId); const u8* GetTrainerNameFromId(u16 trainerId); +void PlayMapChosenOrBattleBGM(u16 song); +u8 GetTrainerEncounterMusicId(u16 trainerOpponentId); #endif // GUARD_POKEMON_3_H diff --git a/include/pokemon_animation.h b/include/pokemon_animation.h index 42fc10809..c1ab8d817 100644 --- a/include/pokemon_animation.h +++ b/include/pokemon_animation.h @@ -1,7 +1,10 @@ #ifndef GUARD_POKEMON_ANIMATION_H #define GUARD_POKEMON_ANIMATION_H -void LaunchAnimationTaskForFrontSprite(struct Sprite* sprite, u8 frontAnimId); -void LaunchAnimationTaskForBackSprite(struct Sprite* sprite, u8 backAnimId); +u8 GetSpeciesBackAnimSet(u16 species); +void LaunchAnimationTaskForFrontSprite(struct Sprite *sprite, u8 frontAnimId); +void StartMonSummaryAnimation(struct Sprite *sprite, u8 frontAnimId); +void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet); +void SetSpriteCB_MonAnimDummy(struct Sprite *sprite); #endif // GUARD_POKEMON_ANIMATION_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index b6d21823e..f1c8a3e61 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -1,12 +1,20 @@ #ifndef GUARD_POKEMON_ICON_H #define GUARD_POKEMON_ICON_H +const u8 *GetMonIconTiles(u16 species, bool32); const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo); const u16 *GetValidMonIconPalettePtr(u16 speciesId); +u16 GetUnownLetterByPersonality(u32 personality); u16 sub_80D2E84(u16 speciesId); -void sub_80D2F68(u16 iconId); -u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5); -void sub_80D2FF0(u16 iconId); +void LoadMonIconPalettes(void); +void LoadMonIconPalette(u16 species); +void FreeMonIconPalettes(void); +u8 sub_80D2D78(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, bool32 extra); +void FreeMonIconPalette(u16 species); void sub_80D2EF8(struct Sprite *sprite); +u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, bool32 extra); +u8 UpdateMonIconFrame(struct Sprite *sprite); +void LoadMonIconPalette(u16 species); +void sub_80D328C(struct Sprite *sprite); #endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_item_effects.h b/include/pokemon_item_effects.h deleted file mode 100644 index 505cc0f25..000000000 --- a/include/pokemon_item_effects.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef GUARD_POKEMON_ITEM_EFFECTS -#define GUARD_POKEMON_ITEM_EFFECTS - -#include "pokemon.h" - -// TODO once pokemon item effects is decompiled -/* -struct PokemonItemEffect -{ - //field 0 - u8 xAtk : 4; // x1, x2, x4, x8 = xF - u8 field_0_x10 : 1; // x10 - u8 critRatioUp : 1; // x20 - u8 field_0_x40 : 1; // x40 - u8 cureInfatuation : 1; // x80 - - /*field 1 - u8 xSpeed : 4; // x1, x2, x4, x8 = xF - u8 xDefense : 4; // x10, x20, x40, xF0 - - /*field 2 - u8 xSpAtk : 4; // x1, x2, x4, x8 = xF - u8 xAccuracy : 4; // x10, x20, x40, xF0 - - /*field 3 - u8 cureConfusion : 1; // x1 - u8 cureParalysis : 1; // x2 - u8 cureFreeze : 1; // x4 - u8 cureBurn : 1; // x8 - u8 curePoison : 1; // x10 - u8 cureSleep : 1; // x20 - u8 field_3_x40 : 1; // x40 - u8 cantLowerStats : 1; // x80 - - /*field 4 - u8 hpEv : 1; // x1 - u8 attackEv : 1; // x2 - u8 healHp : 1; // x4 - u8 field_4_x8 : 1; // x8 - u8 field_4_x10 : 1; // x10 - u8 ppUp : 1; // x20 - u8 levelUp : 1; // x40 - u8 evolutionStone : 1; // x80 - - /*field 5 - u8 defEv: 1; // x1 - u8 speedEv : 1; // x2 - u8 spDefEv : 1; // x4 - u8 spAtkEv : 1; // x8 - u8 ppMax : 1; // x10 - u8 field_5_x20 : 1; // x20 - u8 field_5_x40 : 1; // x40 - u8 field_5_x80 : 1; // x80 - - /*field 6 - u8 value; -}; -*/ - -bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 itemId, u8 partyId, u8 monMoveIndex, u8 a5); - -#endif // GUARD_POKEMON_ITEM_EFFECTS diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h new file mode 100755 index 000000000..adadcea03 --- /dev/null +++ b/include/pokemon_summary_screen.h @@ -0,0 +1,6 @@ +#ifndef GUARD_POKEMON_SUMMARY_SCREEN_H +#define GUARD_POKEMON_SUMMARY_SCREEN_H + +void sub_81C4F98(u8, void(*)(void)); + +#endif // GUARD_POKEMON_SUMMARY_SCREEN_H diff --git a/include/pokenav.h b/include/pokenav.h new file mode 100644 index 000000000..2bca4db94 --- /dev/null +++ b/include/pokenav.h @@ -0,0 +1,27 @@ +#ifndef GUARD_POKENAV_H +#define GUARD_POKENAV_H +#include "player_pc.h" + +bool8 sub_81D5C18(void); +bool8 sub_81D20BC(void *arg0); +bool8 sub_81D312C(void *arg0); +void sub_81D1ED4(void *arg0); +void sub_81D2108(void *arg0); +void sub_81D20AC(void *arg0); +void sub_81D2230(void *arg0); +void sub_81D3464(void *arg0); +void sub_81D3480(void *arg0, u8 arg1); +void sub_81D2754(void *arg0, void *arg1); +void sub_81D1F84(void *arg0, void *arg1, void *arg2); +const u8 *sub_81D62AC(void); +u8 sub_81D1C84(u8); +u8 sub_81D1DC0(struct PlayerPCItemPageStruct *); +void sub_81D1E90(struct PlayerPCItemPageStruct *); +void sub_81D1EC0(void); +void sub_81D1D04(u8); +bool8 sub_81D1C44(u8); +void sub_81D5FB4(u16*); +bool8 sub_81D4A58(struct EventObject*); + + +#endif //GUARD_POKENAV_H diff --git a/include/rng.h b/include/random.h index ae98e575f..79a9d71dc 100644 --- a/include/rng.h +++ b/include/random.h @@ -1,5 +1,5 @@ -#ifndef GUARD_RNG_H -#define GUARD_RNG_H +#ifndef GUARD_RANDOM_H +#define GUARD_RANDOM_H extern u32 gRngValue; extern u32 gRng2Value; @@ -15,4 +15,4 @@ u16 Random2(void); void SeedRng(u16 seed); void SeedRng2(u16 seed); -#endif // GUARD_RNG_H +#endif // GUARD_RANDOM_H diff --git a/include/rayquaza_scene.h b/include/rayquaza_scene.h new file mode 100644 index 000000000..fe66b3df0 --- /dev/null +++ b/include/rayquaza_scene.h @@ -0,0 +1,17 @@ +#ifndef GUARD_RAYQUAZA_SCENE_H +#define GUARD_RAYQUAZA_SCENE_H + +void DoRayquazaScene(u8 animId, bool8 onlyOneAnim, void (*callback)(void)); + +enum +{ + RAY_ANIM_DUO_FIGHT_PRE, + RAY_ANIM_DUO_FIGHT, + RAY_ANIM_TAKES_FLIGHT, + RAY_ANIM_DESCENDS, + RAY_ANIM_CHARGES, + RAY_ANIM_CHACES_AWAY, + RAY_ANIM_END +}; + +#endif // GUARD_RAYQUAZA_SCENE_H diff --git a/include/record_mixing.h b/include/record_mixing.h new file mode 100644 index 000000000..3cd4d649e --- /dev/null +++ b/include/record_mixing.h @@ -0,0 +1,35 @@ +#ifndef GUARD_RECORD_MIXING_H +#define GUARD_RECORD_MIXING_H + +// Exported type declarations +struct UnkRecordMixingStruct2a +{ + u8 playerId[4]; + u16 field_4; + u8 playerName[PLAYER_NAME_LENGTH]; + u8 language; +}; + +struct UnkRecordMixingStruct2b +{ + u8 playerId1[4]; + u8 playerId2[4]; + u16 field_8; + u8 playerName1[PLAYER_NAME_LENGTH]; + u8 playerName2[PLAYER_NAME_LENGTH]; + u8 language; +}; + +struct UnkRecordMixingStruct2 +{ + struct UnkRecordMixingStruct2a field_0[9][2]; + struct UnkRecordMixingStruct2b field_120[2]; +}; + +// Exported RAM declarations + +// Exported ROM declarations +void sub_80E6BE8(void); +void sub_80E8260(struct UnkRecordMixingStruct2 *arg0); + +#endif //GUARD_RECORD_MIXING_H diff --git a/include/recorded_battle.h b/include/recorded_battle.h index adc4c6c85..81c88a15e 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -7,25 +7,25 @@ extern u8 gUnknown_0203C7B4; void sub_8184DA4(u8 arg0); void sub_8184E58(void); -void RecordedBattle_SetBankAction(u8 bank, u8 action); -void RecordedBattle_ClearBankAction(u8 bank, u8 bytesToClear); -u8 RecordedBattle_ReadBankAction(u8 bank); +void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action); +void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear); +u8 RecordedBattle_GetBattlerAction(u8 battlerId); u8 sub_81850D0(void); u8 sub_81850DC(u8 *arg0); void sub_81851A8(u8 *arg0); bool32 CanCopyRecordedBattleSaveData(void); u32 MoveRecordedBattleToSaveData(void); void PlayRecordedBattle(void (*CB2_After)(void)); -u8 sub_8185EA0(void); +u8 GetRecordedBattleFrontierFacility(void); u8 sub_8185EAC(void); void RecordedBattle_SaveParties(void); -u8 GetActiveBankLinkPlayerGender(void); +u8 GetActiveBattlerLinkPlayerGender(void); void sub_8185F84(void); void sub_8185F90(u16 arg0); u8 sub_8185FAC(void); u8 GetBattleStyleInRecordedBattle(void); u8 GetTextSpeedInRecordedBattle(void); -void RecordedBattle_CopyBankMoves(void); +void RecordedBattle_CopyBattlerMoves(void); void sub_818603C(u8 arg0); u32 GetAiScriptsInRecordedBattle(void); void sub_8186444(void); diff --git a/include/region_map.h b/include/region_map.h index 91384d166..af331ad81 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -5,223 +5,6 @@ // Exported type declarations -enum { - MAPSEC_LITTLEROOT_TOWN, - MAPSEC_OLDALE_TOWN, - MAPSEC_DEWFORD_TOWN, - MAPSEC_LAVARIDGE_TOWN, - MAPSEC_FALLARBOR_TOWN, - MAPSEC_VERDANTURF_TOWN, - MAPSEC_PACIFIDLOG_TOWN, - MAPSEC_PETALBURG_CITY, - MAPSEC_SLATEPORT_CITY, - MAPSEC_MAUVILLE_CITY, - MAPSEC_RUSTBORO_CITY, - MAPSEC_FORTREE_CITY, - MAPSEC_LILYCOVE_CITY, - MAPSEC_MOSSDEEP_CITY, - MAPSEC_SOOTOPOLIS_CITY, - MAPSEC_EVER_GRANDE_CITY, - MAPSEC_ROUTE_101, - MAPSEC_ROUTE_102, - MAPSEC_ROUTE_103, - MAPSEC_ROUTE_104, - MAPSEC_ROUTE_105, - MAPSEC_ROUTE_106, - MAPSEC_ROUTE_107, - MAPSEC_ROUTE_108, - MAPSEC_ROUTE_109, - MAPSEC_ROUTE_110, - MAPSEC_ROUTE_111, - MAPSEC_ROUTE_112, - MAPSEC_ROUTE_113, - MAPSEC_ROUTE_114, - MAPSEC_ROUTE_115, - MAPSEC_ROUTE_116, - MAPSEC_ROUTE_117, - MAPSEC_ROUTE_118, - MAPSEC_ROUTE_119, - MAPSEC_ROUTE_120, - MAPSEC_ROUTE_121, - MAPSEC_ROUTE_122, - MAPSEC_ROUTE_123, - MAPSEC_ROUTE_124, - MAPSEC_ROUTE_125, - MAPSEC_ROUTE_126, - MAPSEC_ROUTE_127, - MAPSEC_ROUTE_128, - MAPSEC_ROUTE_129, - MAPSEC_ROUTE_130, - MAPSEC_ROUTE_131, - MAPSEC_ROUTE_132, - MAPSEC_ROUTE_133, - MAPSEC_ROUTE_134, - MAPSEC_UNDERWATER_124, - MAPSEC_UNDERWATER_125, - MAPSEC_UNDERWATER_126, - MAPSEC_UNDERWATER_127, - MAPSEC_UNDERWATER_SOOTOPOLIS, - MAPSEC_GRANITE_CAVE, - MAPSEC_MT_CHIMNEY, - MAPSEC_SAFARI_ZONE, - MAPSEC_BATTLE_FRONTIER, - MAPSEC_PETALBURG_WOODS, - MAPSEC_RUSTURF_TUNNEL, - MAPSEC_ABANDONED_SHIP, - MAPSEC_NEW_MAUVILLE, - MAPSEC_METEOR_FALLS, - MAPSEC_METEOR_FALLS2, - MAPSEC_MT_PYRE, - MAPSEC_AQUA_HIDEOUT_OLD, - MAPSEC_SHOAL_CAVE, - MAPSEC_SEAFLOOR_CAVERN, - MAPSEC_UNDERWATER_128, - MAPSEC_VICTORY_ROAD, - MAPSEC_MIRAGE_ISLAND, - MAPSEC_CAVE_OF_ORIGIN, - MAPSEC_SOUTHERN_ISLAND, - MAPSEC_FIERY_PATH, - MAPSEC_FIERY_PATH2, - MAPSEC_JAGGED_PASS, - MAPSEC_JAGGED_PASS2, - MAPSEC_SEALED_CHAMBER, - MAPSEC_UNDERWATER_SEALED_CHAMBER, - MAPSEC_SCORCHED_SLAB, - MAPSEC_ISLAND_CAVE, - MAPSEC_DESERT_RUINS, - MAPSEC_ANCIENT_TOMB, - MAPSEC_INSIDE_OF_TRUCK, - MAPSEC_SKY_PILLAR, - MAPSEC_SECRET_BASE, - MAPSEC_DYNAMIC, - MAPSEC_PALLET_TOWN, - MAPSEC_VIRIDIAN_CITY, - MAPSEC_PEWTER_CITY, - MAPSEC_CERULEAN_CITY, - MAPSEC_LAVENDER_TOWN, - MAPSEC_VERMILION_CITY, - MAPSEC_CELADON_CITY, - MAPSEC_FUCHSIA_CITY, - MAPSEC_CINNABAR_ISLAND, - MAPSEC_INDIGO_PLATEAU, - MAPSEC_SAFFRON_CITY, - MAPSEC_ROUTE_4, - MAPSEC_ROUTE_10, - MAPSEC_ROUTE_1, - MAPSEC_ROUTE_2, - MAPSEC_ROUTE_3, - MAPSEC_ROUTE_4_2, - MAPSEC_ROUTE_5, - MAPSEC_ROUTE_6, - MAPSEC_ROUTE_7, - MAPSEC_ROUTE_8, - MAPSEC_ROUTE_9, - MAPSEC_ROUTE_10_2, - MAPSEC_ROUTE_11, - MAPSEC_ROUTE_12, - MAPSEC_ROUTE_13, - MAPSEC_ROUTE_14, - MAPSEC_ROUTE_15, - MAPSEC_ROUTE_16, - MAPSEC_ROUTE_17, - MAPSEC_ROUTE_18, - MAPSEC_ROUTE_19, - MAPSEC_ROUTE_20, - MAPSEC_ROUTE_21, - MAPSEC_ROUTE_22, - MAPSEC_ROUTE_23, - MAPSEC_ROUTE_24, - MAPSEC_ROUTE_25, - MAPSEC_VIRIDIAN_FOREST, - MAPSEC_MT_MOON, - MAPSEC_S_S_ANNE, - MAPSEC_UNDERGROUND_PATH, - MAPSEC_UNDERGROUND_PATH_2, - MAPSEC_DIGLETTS_CAVE, - MAPSEC_KANTO_VICTORY_ROAD, - MAPSEC_ROCKET_HIDEOUT, - MAPSEC_SILPH_CO, - MAPSEC_POKEMON_MANSION, - MAPSEC_KANTO_SAFARI_ZONE, - MAPSEC_POKEMON_LEAGUE, - MAPSEC_ROCK_TUNNEL, - MAPSEC_SEAFOAM_ISLANDS, - MAPSEC_POKEMON_TOWER, - MAPSEC_CERULEAN_CAVE, - MAPSEC_POWER_PLANT, - MAPSEC_ONE_ISLAND, - MAPSEC_TWO_ISLAND, - MAPSEC_THREE_ISLAND, - MAPSEC_FOUR_ISLAND, - MAPSEC_FIVE_ISLAND, - MAPSEC_SEVEN_ISLAND, - MAPSEC_SIX_ISLAND, - MAPSEC_KINDLE_ROAD, - MAPSEC_TREASURE_BEACH, - MAPSEC_CAPE_BRINK, - MAPSEC_BOND_BRIDGE, - MAPSEC_THREE_ISLE_PORT, - MAPSEC_SEVII_ISLE_6, - MAPSEC_SEVII_ISLE_7, - MAPSEC_SEVII_ISLE_8, - MAPSEC_SEVII_ISLE_9, - MAPSEC_RESORT_GORGEOUS, - MAPSEC_WATER_LABYRINTH, - MAPSEC_FIVE_ISLE_MEADOW, - MAPSEC_MEMORIAL_PILLAR, - MAPSEC_OUTCAST_ISLAND, - MAPSEC_GREEN_PATH, - MAPSEC_WATER_PATH, - MAPSEC_RUIN_VALLEY, - MAPSEC_TRAINER_TOWER, - MAPSEC_CANYON_ENTRANCE, - MAPSEC_SEVAULT_CANYON, - MAPSEC_TANOBY_RUINS, - MAPSEC_SEVII_ISLE_22, - MAPSEC_SEVII_ISLE_23, - MAPSEC_SEVII_ISLE_24, - MAPSEC_NAVEL_ROCK, - MAPSEC_MT_EMBER, - MAPSEC_BERRY_FOREST, - MAPSEC_ICEFALL_CAVE, - MAPSEC_ROCKET_WAREHOUSE, - MAPSEC_TRAINER_TOWER_2, - MAPSEC_DOTTED_HOLE, - MAPSEC_LOST_CAVE, - MAPSEC_PATTERN_BUSH, - MAPSEC_ALTERING_CAVE, - MAPSEC_TANOBY_CHAMBERS, - MAPSEC_THREE_ISLE_PATH, - MAPSEC_TANOBY_KEY, - MAPSEC_BIRTH_ISLAND, - MAPSEC_MONEAN_CHAMBER, - MAPSEC_LIPTOO_CHAMBER, - MAPSEC_WEEPTH_CHAMBER, - MAPSEC_DILFORD_CHAMBER, - MAPSEC_SCUFIB_CHAMBER, - MAPSEC_RIXY_CHAMBER, - MAPSEC_VIAPOIS_CHAMBER, - MAPSEC_EMBER_SPA, - MAPSEC_SPECIAL_AREA, - MAPSEC_AQUA_HIDEOUT, - MAPSEC_MAGMA_HIDEOUT, - MAPSEC_MIRAGE_TOWER, - MAPSEC_BIRTH_ISLAND_2, - MAPSEC_FARAWAY_ISLAND, - MAPSEC_ARTISAN_CAVE, - MAPSEC_MARINE_CAVE, - MAPSEC_UNDERWATER_MARINE_CAVE, - MAPSEC_TERRA_CAVE, - MAPSEC_UNDERWATER_TERRA_CAVE, - MAPSEC_UNDERWATER_UNK1, - MAPSEC_UNDERWATER_129, - MAPSEC_DESERT_UNDERPASS, - MAPSEC_ALTERING_CAVE_2, - MAPSEC_NAVEL_ROCK2, - MAPSEC_TRAINER_HILL, - MAPSEC_NONE -}; - enum { INPUT_EVENT_NONE, @@ -310,5 +93,6 @@ void CreateRegionMapPlayerIcon(u16 x, u16 y); void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); u8 *GetMapName(u8 *, u16, u16); bool32 sub_8124668(u8 mapSecId); +u8 *sub_81245DC(u8 *dest, u16 mapSecId); #endif //GUARD_REGION_MAP_H diff --git a/include/reset_rtc_screen.h b/include/reset_rtc_screen.h new file mode 100644 index 000000000..5807dec99 --- /dev/null +++ b/include/reset_rtc_screen.h @@ -0,0 +1,6 @@ +#ifndef GUARD_RESET_RTC_SCREEN_H +#define GUARD_RESET_RTC_SCREEN_H + +void CB2_InitResetRtcScreen(void); + +#endif // GUARD_RESET_RTC_SCREEN_H diff --git a/include/reset_save_heap.h b/include/reset_save_heap.h new file mode 100644 index 000000000..12fd186ec --- /dev/null +++ b/include/reset_save_heap.h @@ -0,0 +1,12 @@ +#ifndef GUARD_RESET_SAVE_HEAP_H +#define GUARD_RESET_SAVE_HEAP_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +void sub_81700F8(void); + +#endif //GUARD_RESET_SAVE_HEAP_H diff --git a/include/rom6.h b/include/rom6.h index b4a972794..96c3b3ca2 100644 --- a/include/rom6.h +++ b/include/rom6.h @@ -1,9 +1,18 @@ #ifndef GUARD_ROM6_H #define GUARD_ROM6_H -void sub_81357FC(u8, void(void)); +void OpenPokeblockCase(u8, void(void)); u8 GetLeadMonIndex(void); u8 GetSSTidalLocation(u8 *grp, u8 *num, s16 *x, s16 *y); void sub_813BADC(bool8); +bool8 sub_813B9C0(void); +void UpdateMirageRnd(u16 days); +void UpdateBirchState(u16 days); +void UpdateFrontierManiac(u16 days); +void UpdateFrontierGambler(u16 days); +void SetShoalItemFlag(u16 days); + +bool8 CheckObjectGraphicsInFrontOfPlayer(u8); +u8 oei_task_add(void); #endif //GUARD_ROM6_H diff --git a/include/rom_8011DC0.h b/include/rom_8011DC0.h new file mode 100644 index 000000000..fd8c35f56 --- /dev/null +++ b/include/rom_8011DC0.h @@ -0,0 +1,12 @@ +#ifndef GUARD_rom_8011DC0_H +#define GUARD_rom_8011DC0_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +void sub_8018438(void); + +#endif //GUARD_rom_8011DC0_H diff --git a/include/rom_8034C54.h b/include/rom_8034C54.h new file mode 100644 index 000000000..9ad84ca13 --- /dev/null +++ b/include/rom_8034C54.h @@ -0,0 +1,26 @@ +#ifndef GUARD_ROM_8034C54_H +#define GUARD_ROM_8034C54_H + +struct UnkStruct3 +{ + u8 field_0_0:2; + u8 shape:2; + u8 size:2; + u8 priority:2; + u8 field_1; + u8 xDelta; + s16 x; + s16 y; + const struct SpriteSheet *spriteSheet; + const struct SpritePalette *spritePal; +}; + +bool32 sub_8034C54(u32 count); +void sub_8034CC8(void); +bool32 sub_8034D14(u32 id, s32 arg1, const struct UnkStruct3 *arg2); +void sub_8035044(u32 id, s32 arg1); +void sub_80353DC(u32 id); +void sub_803547C(u32 id, bool32 arg1); +u8 sub_80355F8(u32 arg0, u32 arg1); + +#endif // GUARD_ROM_8034C54_H diff --git a/include/rom_81BE66C.h b/include/rom_81BE66C.h index 5b4f80249..900daf4e7 100644 --- a/include/rom_81BE66C.h +++ b/include/rom_81BE66C.h @@ -6,7 +6,7 @@ #define GUARD_ROM_81BE66C_H bool32 InTrainerHill(void); -bool8 FieldObjectIsFarawayIslandMew(struct MapObject *); +bool8 EventObjectIsFarawayIslandMew(struct EventObject *); u32 sub_81D427C(void); #endif //GUARD_ROM_81BE66C_H diff --git a/include/rotating_gate.h b/include/rotating_gate.h new file mode 100644 index 000000000..50a838953 --- /dev/null +++ b/include/rotating_gate.h @@ -0,0 +1,8 @@ +#ifndef GUARD_ROTATING_GATE_H +#define GUARD_ROTATING_GATE_H + +void RotatingGatePuzzleCameraUpdate(s16, s16); +void RotatingGate_InitPuzzleAndGraphics(); +u32 CheckForRotatingGatePuzzleCollision(u8, s16, s16); + +#endif // GUARD_ROTATING_GATE_H diff --git a/include/roulette_util.h b/include/roulette_util.h new file mode 100644 index 000000000..f59c4e44c --- /dev/null +++ b/include/roulette_util.h @@ -0,0 +1,17 @@ +#ifndef GUARD_ROULETTE_UTIL_H +#define GUARD_ROULETTE_UTIL_H + +// structures +struct InnerStruct203CF18 +{ + u8 filler[0xC4]; +}; + +void sub_8151B68(struct InnerStruct203CF18 *, const u8*); +void sub_8151B3C(struct InnerStruct203CF18 *); +void sub_8151CA8(struct InnerStruct203CF18 *, u8, u8); +void sub_8151C50(struct InnerStruct203CF18 *, u8, u8); +void sub_8151D28(struct InnerStruct203CF18 *, u8, u8); +void sub_8151E50(struct InnerStruct203CF18 *); + +#endif // GUARD_ROULETTE_UTIL_H diff --git a/include/safari_zone.h b/include/safari_zone.h index 9a81894b8..39ee3ccb3 100644 --- a/include/safari_zone.h +++ b/include/safari_zone.h @@ -13,6 +13,8 @@ void ExitSafariMode(void); bool8 SafariZoneTakeStep(void); void SafariZoneRetirePrompt(void); +void CB2_EndSafariBattle(void); + struct Pokeblock *SafariZoneGetActivePokeblock(void); void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index); diff --git a/include/save.h b/include/save.h index 3bd1ff8cf..7b271129a 100644 --- a/include/save.h +++ b/include/save.h @@ -47,19 +47,19 @@ enum // Do save types enum { - NORMAL_SAVE, - LINK_SAVE, - //EREADER_SAVE, // depreciated in Emerald - LINK2_SAVE, // unknown 2nd link save - HOF_SAVE, - DIFFERENT_FILE_SAVE, - HOF_DELETE_SAVE // unused + SAVE_NORMAL, + SAVE_LINK, + //EREADER_SAVE, // deprecated in Emerald + SAVE_LINK2, // unknown 2nd link save + SAVE_HALL_OF_FAME, + SAVE_OVERWRITE_DIFFERENT_FILE, + SAVE_HALL_OF_FAME_ERASE_BEFORE // unused }; #define SECTION_ID_RECORDED_BATTLE 31 void ClearSaveData(void); -void ResetSaveCounters(void); +void Save_ResetSaveCounters(void); bool32 SetDamagedSectorBits(u8 op, u8 bit); u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location); u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location); @@ -88,8 +88,11 @@ u8 sub_81533E0(void); u8 sub_8153408(void); u8 sub_8153430(void); bool8 sub_8153474(void); -u8 sub_81534D0(u8 a1); +u8 Save_LoadGameData(u8 a1); u16 sub_815355C(void); +u8 sub_81534D0(u8); +u8 sub_8153430(void); +bool8 sub_8153474(void); u32 TryCopySpecialSaveSection(u8 sector, u8* dst); u32 sub_8153634(u8 sector, u8* src); void sub_8153688(u8 taskId); diff --git a/include/scanline_effect.h b/include/scanline_effect.h new file mode 100644 index 000000000..eb837e7e2 --- /dev/null +++ b/include/scanline_effect.h @@ -0,0 +1,47 @@ +#ifndef GUARD_SCANLINE_EFFECT_H +#define GUARD_SCANLINE_EFFECT_H + +// DMA control value to transfer a single 16-bit value at HBlank +#define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1) + +#define SCANLINE_EFFECT_REG_BG0HOFS (REG_ADDR_BG0HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG0VOFS (REG_ADDR_BG0VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG1HOFS (REG_ADDR_BG1HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG1VOFS (REG_ADDR_BG1VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG2HOFS (REG_ADDR_BG2HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG2VOFS (REG_ADDR_BG2VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG3HOFS (REG_ADDR_BG3HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG3VOFS (REG_ADDR_BG3VOFS - REG_ADDR_BG0HOFS) + +struct ScanlineEffectParams +{ + volatile void *dmaDest; + u32 dmaControl; + u8 initState; + u8 unused9; +}; + +struct ScanlineEffect +{ + void *dmaSrcBuffers[2]; + volatile void *dmaDest; + u32 dmaControl; + void (*setFirstScanlineReg)(void); + u8 srcBuffer; + u8 state; + u8 unused16; + u8 unused17; + u8 waveTaskId; +}; + +extern struct ScanlineEffect gScanlineEffect; + +extern u16 gScanlineEffectRegBuffers[2][0x3C0]; + +void ScanlineEffect_Stop(void); +void ScanlineEffect_Clear(void); +void ScanlineEffect_SetParams(struct ScanlineEffectParams); +void ScanlineEffect_InitHBlankDmaTransfer(void); +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7); + +#endif // GUARD_SCANLINE_EFFECT_H diff --git a/include/script_menu.h b/include/script_menu.h index 717eda041..0555d0f78 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -9,5 +9,8 @@ bool8 ScriptMenu_YesNo(u8 var1, u8 var2); bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3); bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void); +u8 convert_pixel_width_to_tile_width(s32); +u8 CreateWindowFromRect(u8, u8, u8, u8); +void sub_80E2A78(u8); #endif //GUARD_SCRIPT_MENU_H diff --git a/include/secret_base.h b/include/secret_base.h index 630a36773..c20533698 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -8,6 +8,13 @@ // Exported ROM declarations void sub_80E9578(void); void sub_80E980C(void); +void sub_80EB18C(struct SecretBaseRecord *dest); +void sub_80E9914(void); u8 *GetSecretBaseMapName(u8 *dest); +const u8 *GetSecretBaseTrainerLoseText(void); +void sub_80E8EE0(struct MapEvents const *events); +void sub_80E9238(u8 flagIn); +bool8 CurrentMapIsSecretBase(void); +void sub_80EA3E4(u8 taskId); #endif //GUARD_SECRET_BASE_H diff --git a/include/shop.h b/include/shop.h index d3e86408c..9b14a672e 100644 --- a/include/shop.h +++ b/include/shop.h @@ -6,5 +6,6 @@ extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3]; void CreatePokemartMenu(const u16 *); void CreateDecorationShop1Menu(const u16 *); void CreateDecorationShop2Menu(const u16 *); +void CB2_ExitSellMenu(void); #endif // GUARD_SHOP_H diff --git a/include/songs.h b/include/songs.h deleted file mode 100644 index 5a1fff00c..000000000 --- a/include/songs.h +++ /dev/null @@ -1,466 +0,0 @@ -#ifndef GUARD_SONGS_H -#define GUARD_SONGS_H - -enum -{ - /*0x00*/ SE_STOP, - /*0x01*/ SE_KAIFUKU, - /*0x02*/ SE_PC_LOGON, - /*0x03*/ SE_PC_OFF, - /*0x04*/ SE_PC_ON, - /*0x05*/ SE_SELECT, - /*0x06*/ SE_WIN_OPEN, - /*0x07*/ SE_WALL_HIT, - /*0x08*/ SE_DOOR, - /*0x09*/ SE_KAIDAN, - /*0x0A*/ SE_DANSA, - /*0x0B*/ SE_JITENSYA, - /*0x0C*/ SE_KOUKA_L, // Goggle told me Kouka means 'effectiveness' which makes sense, because - /*0x0D*/ SE_KOUKA_M, // those three sounds play whenever you use a move - /*0x0E*/ SE_KOUKA_H, - /*0x0F*/ SE_BOWA2, - /*0x10*/ SE_POKE_DEAD, - /*0x11*/ SE_NIGERU, - /*0x12*/ SE_JIDO_DOA, - /*0x13*/ SE_NAMINORI, - /*0x14*/ SE_BAN, - /*0x15*/ SE_PIN, - /*0x16*/ SE_BOO, - /*0x17*/ SE_BOWA, - /*0x18*/ SE_JYUNI, - /*0x19*/ SE_A, - /*0x1A*/ SE_I, - /*0x1B*/ SE_U, - /*0x1C*/ SE_E, - /*0x1D*/ SE_O, - /*0x1E*/ SE_N, - /*0x1F*/ SE_SEIKAI, - /*0x20*/ SE_HAZURE, - /*0x21*/ SE_EXP, - /*0x22*/ SE_JITE_PYOKO, - /*0x23*/ SE_MU_PACHI, - /*0x24*/ SE_TK_KASYA, - /*0x25*/ SE_FU_ZAKU, - /*0x26*/ SE_FU_ZAKU2, - /*0x27*/ SE_FU_ZUZUZU, - /*0x28*/ SE_RU_GASHIN, - /*0x29*/ SE_RU_GASYAN, - /*0x2A*/ SE_RU_BARI, - /*0x2B*/ SE_RU_HYUU, - /*0x2C*/ SE_KI_GASYAN, - /*0x2D*/ SE_TK_WARPIN, - /*0x2E*/ SE_TK_WARPOUT, - /*0x2F*/ SE_TU_SAA, - /*0x30*/ SE_HI_TURUN, - /*0x31*/ SE_TRACK_MOVE, - /*0x32*/ SE_TRACK_STOP, - /*0x33*/ SE_TRACK_HAIK, - /*0x34*/ SE_TRACK_DOOR, - /*0x35*/ SE_MOTER, - /*0x36*/ SE_CARD, - /*0x37*/ SE_SAVE, - /*0x38*/ SE_KON, - /*0x39*/ SE_KON2, - /*0x3A*/ SE_KON3, - /*0x3B*/ SE_KON4, - /*0x3C*/ SE_SUIKOMU, - /*0x3D*/ SE_NAGERU, - SE_TOY_C, - SE_TOY_D, - SE_TOY_E, - SE_TOY_F, - SE_TOY_G, - SE_TOY_A, - SE_TOY_B, - SE_TOY_C1, - SE_MIZU, - SE_HASHI, - SE_DAUGI, - SE_PINPON, - SE_FUUSEN1, - SE_FUUSEN2, - SE_FUUSEN3, - SE_TOY_KABE, - SE_TOY_DANGO, - SE_DOKU, - SE_ESUKA, - SE_T_AME, - SE_T_AME_E, - SE_T_OOAME, - SE_T_OOAME_E, - SE_T_KOAME, - SE_T_KOAME_E, - SE_T_KAMI, - SE_T_KAMI2, - SE_ELEBETA, - /*0x5A*/ SE_HINSI, - /*0x5B*/ SE_EXPMAX, - /*0x5C*/ SE_TAMAKORO, - /*0x5D*/ SE_TAMAKORO_E, - /*0x5E*/ SE_BASABASA, - /*0x5F*/ SE_REGI, - SE_C_GAJI, - SE_C_MAKU_U, - SE_C_MAKU_D, - SE_C_PASI, - SE_C_SYU, - SE_C_PIKON, - /*0x66*/ SE_REAPOKE, - /*0x67*/ SE_OP_BASYU, - /*0x68*/ SE_BT_START, - SE_DENDOU, - SE_JIHANKI, - SE_TAMA, - SE_Z_SCROLL, - /*0x6D*/ SE_Z_PAGE, - /*0x6E*/ SE_PN_ON, - /*0x6F*/ SE_PN_OFF, - /*0x70*/ SE_Z_SEARCH, - /*0x71*/ SE_TAMAGO, - /*0x72*/ SE_TB_START, - /*0x73*/ SE_TB_KON, - /*0x74*/ SE_TB_KARA, - /*0x75*/ SE_BIDORO, - /*0x76*/ SE_W085, - /*0x77*/ SE_W085B, - /*0x78*/ SE_W231, - /*0x79*/ SE_W171, - /*0x7A*/ SE_W233, - /*0x7B*/ SE_W233B, - /*0x7C*/ SE_W145, - /*0x7D*/ SE_W145B, - /*0x7E*/ SE_W145C, - /*0x7F*/ SE_W240, - /*0x80*/ SE_W015, - /*0x81*/ SE_W081, - /*0x82*/ SE_W081B, - /*0x83*/ SE_W088, - /*0x84*/ SE_W016, - /*0x85*/ SE_W016B, - /*0x86*/ SE_W003, - /*0x87*/ SE_W104, - /*0x88*/ SE_W013, - /*0x89*/ SE_W196, - /*0x8A*/ SE_W086, - /*0x8B*/ SE_W004, - /*0x8C*/ SE_W025, - /*0x8D*/ SE_W025B, - SE_W152, - SE_W026, - SE_W172, - SE_W172B, - SE_W053, - SE_W007, - SE_W092, - SE_W221, - SE_W221B, - SE_W052, - SE_W036, - SE_W059, - SE_W059B, - SE_W010, - SE_W011, - SE_W017, - SE_W019, - SE_W028, - SE_W013B, - SE_W044, - SE_W029, - SE_W057, - SE_W056, - SE_W250, - SE_W030, - SE_W039, - SE_W054, - SE_W077, - SE_W020, - SE_W082, - SE_W047, - SE_W195, - SE_W006, - SE_W091, - SE_W146, - SE_W120, - SE_W153, - SE_W071B, - SE_W071, - SE_W103, - /*0xB6*/ SE_W062, - /*0xB7*/ SE_W062B, - /*0xB8*/ SE_W048, - /*0xB9*/ SE_W187, - /*0xBA*/ SE_W118, - /*0xBB*/ SE_W155, - /*0xBC*/ SE_W122, - /*0xBD*/ SE_W060, - /*0xBE*/ SE_W185, - /*0xBF*/ SE_W014, - /*0xC0*/ SE_W043, - /*0xC1*/ SE_W207, - /*0xC2*/ SE_W207B, - /*0xC3*/ SE_W215, - /*0xC4*/ SE_W109, - /*0xC5*/ SE_W173, - /*0xC6*/ SE_W280, - /*0xC7*/ SE_W202, - /*0xC8*/ SE_W060B, - /*0xC9*/ SE_W076, - /*0xCA*/ SE_W080, - /*0xCB*/ SE_W100, - /*0xCC*/ SE_W107, - SE_W166, - SE_W129, - SE_W115, - SE_W112, - SE_W197, - SE_W199, - SE_W236, - SE_W204, - SE_W268, - SE_W070, - SE_W063, - SE_W127, - SE_W179, - SE_W151, - SE_W201, - SE_W161, - SE_W161B, - SE_W227, - SE_W227B, - SE_W226, - SE_W208, - SE_W213, - SE_W213B, - SE_W234, - SE_W260, - SE_W328, - SE_W320, - SE_W255, - SE_W291, - SE_W089, - SE_W239, - SE_W230, - SE_W281, - SE_W327, - SE_W287, - SE_W257, - SE_W253, - SE_W258, - SE_W322, - SE_W298, - SE_W287B, - SE_W114, - SE_W063B, - BGM_STOP = 349, - /*0x15E*/ BGM_TETSUJI, - /*0x15F*/ BGM_FIELD13, - /*0x160*/ BGM_KACHI22, - /*0x161*/ BGM_KACHI2, - /*0x162*/ BGM_KACHI3, - /*0x163*/ BGM_KACHI5, - /*0x164*/ BGM_PCC, - /*0x165*/ BGM_NIBI, - /*0x166*/ BGM_SUIKUN, - /*0x167*/ BGM_DOORO1, - /*0x168*/ BGM_DOORO_X1, - /*0x169*/ BGM_DOORO_X3, - /*0x16A*/ BGM_MACHI_S2, - /*0x16B*/ BGM_MACHI_S4, - /*0x16C*/ BGM_GIM, - /*0x16D*/ BGM_NAMINORI, - /*0x16E*/ BGM_DAN01, - /*0x16F*/ BGM_FANFA1, - /*0x170*/ BGM_ME_ASA, - /*0x171*/ BGM_ME_BACHI, - /*0x172*/ BGM_FANFA4, - /*0x173*/ BGM_FANFA5, - /*0x174*/ BGM_ME_WAZA, - /*0x175*/ BGM_BIJYUTU, - /*0x176*/ BGM_DOORO_X4, - /*0x177*/ BGM_FUNE_KAN, - /*0x178*/ BGM_ME_SHINKA, - /*0x179*/ BGM_SHINKA, - /*0x17A*/ BGM_ME_WASURE, - /*0x17B*/ BGM_SYOUJOEYE, - /*0x17C*/ BGM_BOYEYE, - /*0x17D*/ BGM_DAN02, - /*0x17E*/ BGM_MACHI_S3, - /*0x17F*/ BGM_ODAMAKI, - /*0x180*/ BGM_B_TOWER, - /*0x181*/ BGM_SWIMEYE, - /*0x182*/ BGM_DAN03, - /*0x183*/ BGM_ME_KINOMI, - /*0x184*/ BGM_ME_TAMA, - /*0x185*/ BGM_ME_B_BIG, - /*0x186*/ BGM_ME_B_SMALL, - /*0x187*/ BGM_ME_ZANNEN, - /*0x188*/ BGM_BD_TIME, - /*0x189*/ BGM_TEST1, - /*0x18A*/ BGM_TEST2, - /*0x18B*/ BGM_TEST3, - /*0x18C*/ BGM_TEST4, - /*0x18D*/ BGM_TEST, - /*0x18E*/ BGM_GOMACHI0, - /*0x18F*/ BGM_GOTOWN, - /*0x190*/ BGM_POKECEN, - /*0x191*/ BGM_NEXTROAD, - /*0x192*/ BGM_GRANROAD, - /*0x193*/ BGM_CYCLING, - /*0x194*/ BGM_FRIENDLY, - /*0x195*/ BGM_MISHIRO, - /*0x196*/ BGM_TOZAN, - /*0x197*/ BGM_GIRLEYE, - /*0x198*/ BGM_MINAMO, - /*0x199*/ BGM_ASHROAD, - /*0x19A*/ BGM_EVENT0, - /*0x19B*/ BGM_DEEPDEEP, - /*0x19C*/ BGM_KACHI1, - /*0x19D*/ BGM_TITLE3, - /*0x19E*/ BGM_DEMO1, - /*0x19F*/ BGM_GIRL_SUP, - /*0x1A0*/ BGM_HAGESHII, - /*0x1A1*/ BGM_KAKKOII, - /*0x1A2*/ BGM_KAZANBAI, - /*0x1A3*/ BGM_AQA_0, - /*0x1A4*/ BGM_TSURETEK, - /*0x1A5*/ BGM_BOY_SUP, - /*0x1A6*/ BGM_RAINBOW, - /*0x1A7*/ BGM_AYASII, - /*0x1A8*/ BGM_KACHI4, - /*0x1A9*/ BGM_ROPEWAY, - /*0x1AA*/ BGM_CASINO, - /*0x1AB*/ BGM_HIGHTOWN, - /*0x1AC*/ BGM_SAFARI, - BGM_C_ROAD, - BGM_AJITO, - BGM_M_BOAT, - BGM_M_DUNGON, - BGM_FINECITY, - BGM_MACHUPI, - BGM_P_SCHOOL, - BGM_DENDOU, - BGM_TONEKUSA, - BGM_MABOROSI, - BGM_CON_FAN, - BGM_CONTEST0, - BGM_MGM0, - BGM_T_BATTLE, - BGM_OOAME, - BGM_HIDERI, - BGM_RUNECITY, - BGM_CON_K, - BGM_EIKOU_R, - BGM_KARAKURI, - BGM_HUTAGO, - BGM_SITENNOU, - BGM_YAMA_EYE, - BGM_CONLOBBY, - BGM_INTER_V, - BGM_DAIGO, - BGM_THANKFOR, - BGM_END, - /*0x1C9*/ BGM_BATTLE_FRONTIER, // human-readable names start here because we don't know the actual filenames - BGM_BATTLE_ARENA, - BGM_ME_BATTLE_POINTS, // ME_ as in messagebox? Used for KINOMI (berries) and stuff above - BGM_ME_MATCH_CALL, - BGM_BATTLE_PYRAMID, - BGM_BATTLE_PYRAMID_SUMMIT, - BGM_BATTLE_PALACE, - BGM_FANFA_RAYQUAZA, - BGM_BATTLE_TOWER, - BGM_ME_BATTLE_SYMBOL, - BGM_BATTLE_DOME_TOURNAMENT, - BGM_BATTLE_PIKE, - BGM_BATTLE_FACTORY, - BGM_BATTLE_LEGENDARY, - BGM_BATTLE_FRONTIER_BRAIN, - BGM_BATTLE_MEW, - BGM_BATTLE_DOME, // end of the human-readable names - /*0x1DA*/ BGM_BATTLE27, // wild - BGM_BATTLE31, // aqua/magma grunt - BGM_BATTLE20, // trainer - BGM_BATTLE32, // gym leader - BGM_BATTLE33, // champion - BGM_BATTLE36, // regi - BGM_BATTLE34, // weather trio - BGM_BATTLE35, // rival - BGM_BATTLE38, // elite four - BGM_BATTLE30, // aqua/magma leader - /*0x1E4*/ BGM_FRLG_FOLLOW_ME, // FR/LG names not known, human-readable again! - BGM_FRLG_GAMECORNER, - BGM_FRLG_ROCKET_HIDEOUT, - BGM_FRLG_GYM, - BGM_FRLG_JIGGLYPUFF, - BGM_FRLG_OPENING, - BGM_FRLG_TITLE, - BGM_FRLG_CINNABAR_ISLAND, - BGM_FRLG_LAVENDER_TOWN, - BGM_FRLG_HEALING_TEST, - BGM_FRLG_BICYCLE, - BGM_FRLG_SUSPICIOUS_EYE, - BGM_FRLG_GIRL_EYE, - BGM_FRLG_BOY_EYE, - BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME, - BGM_FRLG_VIRIDIAN_FOREST, - BGM_FRLG_MT_MOON, - BGM_FRLG_POKEMON_MANSION, - BGM_FRLG_CREDITS, - BGM_FRLG_ROUTE_1, - BGM_FRLG_ROUTE_24, - BGM_FRLG_ROUTE_3, - BGM_FRLG_ROUTE_11, - BGM_FRLG_INDIGO_PLATEAU, - BGM_FRLG_BATTLE_LEADER, - BGM_FRLG_BATTLE_TRAINER, - BGM_FRLG_BATTLE_WILD_POKEMON, - BGM_FRLG_BATTLE_CHAMPION, - BGM_FRLG_PALLET_TOWN, - BGM_FRLG_OAK_LAB, - BGM_FRLG_PROF_OAK, - BGM_FRLG_POKEMON_CENTER, - BGM_FRLG_SS_ANNE, - BGM_FRLG_SURF, - BGM_FRLG_POKEMON_TOWER, - BGM_FRLG_SILPH, - BGM_FRLG_CERULEAN_CITY, - BGM_FRLG_CELADON_CITY, - BGM_FRLG_KACHI_TRAINER, // KACHI used in RS test - victory - BGM_FRLG_KACHI_WILD_POKEMON, - BGM_FRLG_KACHI_LEADER, - BGM_FRLG_VERMILION_CITY, - BGM_FRLG_VIRIDIAN_CITY, - BGM_FRLG_RIVAL, - BGM_FRLG_RIVAL_POSTBATTLE, - BGM_FRLG_ME_POKEDEX_EVAL, - BGM_FRLG_ME_KEYITEM, - BGM_FRLG_FANFA_POKEMON_CAUGHT, - BGM_FRLG_FANFA_TRAINERCARD_PHOTO, - BGM_FRLG_GAMEFREAK_LOGO, - BGM_FRLG_CAUGHT_POKEMON, - BGM_FRLG_GAME_EXPLANATION_START, - BGM_FRLG_GAME_EXPLANATION_MIDDLE, - BGM_FRLG_GAME_EXPLANATION_END, - BGM_FRLG_POKEMON_JUMP, - BGM_FRLG_UNION_ROOM, - BGM_FRLG_POKEMON_NETWORK_CENTER, - BGM_FRLG_MYSTERY_GIFT, - BGM_FRLG_DODRIO_BERRY_PICK, - BGM_FRLG_MT_EMBER, - BGM_FRLG_TEACHY_TV_EPISODE, - BGM_FRLG_SEVII_ISLANDS, - BGM_FRLG_TANOBY_RUINS, - BGM_FRLG_ISLAND_ONE, - BGM_FRLG_ISLAND_FOUR, - BGM_FRLG_ISLAND_SIX, - BGM_FRLG_FLUTE, - BGM_FRLG_BATTLE_DEOXYS, - BGM_FRLG_BATTLE_MEWTWO, - BGM_FRLG_BATTLE_LEGENDARY, - BGM_FRLG_LEADER_EYE, - BGM_FRLG_DEOXYS_EYE, - BGM_FRLG_TRAINER_TOWER, - BGM_FRLG_HALL_OF_FAME_PALLET_TOWN, - /*0x22E*/BGM_FRLG_TEACHY_TV, -}; - -#endif // GUARD_SONGS_H diff --git a/include/species.h b/include/species.h deleted file mode 100644 index ac0797418..000000000 --- a/include/species.h +++ /dev/null @@ -1,454 +0,0 @@ -#ifndef GUARD_SPECIES_H -#define GUARD_SPECIES_H - -enum -{ - SPECIES_NONE, // 0x000 - SPECIES_BULBASAUR, // 0x001 - SPECIES_IVYSAUR, // 0x002 - SPECIES_VENUSAUR, // 0x003 - SPECIES_CHARMANDER, // 0x004 - SPECIES_CHARMELEON, // 0x005 - SPECIES_CHARIZARD, // 0x006 - SPECIES_SQUIRTLE, // 0x007 - SPECIES_WARTORTLE, // 0x008 - SPECIES_BLASTOISE, // 0x009 - SPECIES_CATERPIE, // 0x00a - SPECIES_METAPOD, // 0x00b - SPECIES_BUTTERFREE, // 0x00c - SPECIES_WEEDLE, // 0x00d - SPECIES_KAKUNA, // 0x00e - SPECIES_BEEDRILL, // 0x00f - SPECIES_PIDGEY, // 0x010 - SPECIES_PIDGEOTTO, // 0x011 - SPECIES_PIDGEOT, // 0x012 - SPECIES_RATTATA, // 0x013 - SPECIES_RATICATE, // 0x014 - SPECIES_SPEAROW, // 0x015 - SPECIES_FEAROW, // 0x016 - SPECIES_EKANS, // 0x017 - SPECIES_ARBOK, // 0x018 - SPECIES_PIKACHU, // 0x019 - SPECIES_RAICHU, // 0x01a - SPECIES_SANDSHREW, // 0x01b - SPECIES_SANDSLASH, // 0x01c - SPECIES_NIDORAN_F, // 0x01d - SPECIES_NIDORINA, // 0x01e - SPECIES_NIDOQUEEN, // 0x01f - SPECIES_NIDORAN_M, // 0x020 - SPECIES_NIDORINO, // 0x021 - SPECIES_NIDOKING, // 0x022 - SPECIES_CLEFAIRY, // 0x023 - SPECIES_CLEFABLE, // 0x024 - SPECIES_VULPIX, // 0x025 - SPECIES_NINETALES, // 0x026 - SPECIES_JIGGLYPUFF, // 0x027 - SPECIES_WIGGLYTUFF, // 0x028 - SPECIES_ZUBAT, // 0x029 - SPECIES_GOLBAT, // 0x02a - SPECIES_ODDISH, // 0x02b - SPECIES_GLOOM, // 0x02c - SPECIES_VILEPLUME, // 0x02d - SPECIES_PARAS, // 0x02e - SPECIES_PARASECT, // 0x02f - SPECIES_VENONAT, // 0x030 - SPECIES_VENOMOTH, // 0x031 - SPECIES_DIGLETT, // 0x032 - SPECIES_DUGTRIO, // 0x033 - SPECIES_MEOWTH, // 0x034 - SPECIES_PERSIAN, // 0x035 - SPECIES_PSYDUCK, // 0x036 - SPECIES_GOLDUCK, // 0x037 - SPECIES_MANKEY, // 0x038 - SPECIES_PRIMEAPE, // 0x039 - SPECIES_GROWLITHE, // 0x03a - SPECIES_ARCANINE, // 0x03b - SPECIES_POLIWAG, // 0x03c - SPECIES_POLIWHIRL, // 0x03d - SPECIES_POLIWRATH, // 0x03e - SPECIES_ABRA, // 0x03f - SPECIES_KADABRA, // 0x040 - SPECIES_ALAKAZAM, // 0x041 - SPECIES_MACHOP, // 0x042 - SPECIES_MACHOKE, // 0x043 - SPECIES_MACHAMP, // 0x044 - SPECIES_BELLSPROUT, // 0x045 - SPECIES_WEEPINBELL, // 0x046 - SPECIES_VICTREEBEL, // 0x047 - SPECIES_TENTACOOL, // 0x048 - SPECIES_TENTACRUEL, // 0x049 - SPECIES_GEODUDE, // 0x04a - SPECIES_GRAVELER, // 0x04b - SPECIES_GOLEM, // 0x04c - SPECIES_PONYTA, // 0x04d - SPECIES_RAPIDASH, // 0x04e - SPECIES_SLOWPOKE, // 0x04f - SPECIES_SLOWBRO, // 0x050 - SPECIES_MAGNEMITE, // 0x051 - SPECIES_MAGNETON, // 0x052 - SPECIES_FARFETCHD, // 0x053 - SPECIES_DODUO, // 0x054 - SPECIES_DODRIO, // 0x055 - SPECIES_SEEL, // 0x056 - SPECIES_DEWGONG, // 0x057 - SPECIES_GRIMER, // 0x058 - SPECIES_MUK, // 0x059 - SPECIES_SHELLDER, // 0x05a - SPECIES_CLOYSTER, // 0x05b - SPECIES_GASTLY, // 0x05c - SPECIES_HAUNTER, // 0x05d - SPECIES_GENGAR, // 0x05e - SPECIES_ONIX, // 0x05f - SPECIES_DROWZEE, // 0x060 - SPECIES_HYPNO, // 0x061 - SPECIES_KRABBY, // 0x062 - SPECIES_KINGLER, // 0x063 - SPECIES_VOLTORB, // 0x064 - SPECIES_ELECTRODE, // 0x065 - SPECIES_EXEGGCUTE, // 0x066 - SPECIES_EXEGGUTOR, // 0x067 - SPECIES_CUBONE, // 0x068 - SPECIES_MAROWAK, // 0x069 - SPECIES_HITMONLEE, // 0x06a - SPECIES_HITMONCHAN, // 0x06b - SPECIES_LICKITUNG, // 0x06c - SPECIES_KOFFING, // 0x06d - SPECIES_WEEZING, // 0x06e - SPECIES_RHYHORN, // 0x06f - SPECIES_RHYDON, // 0x070 - SPECIES_CHANSEY, // 0x071 - SPECIES_TANGELA, // 0x072 - SPECIES_KANGASKHAN, // 0x073 - SPECIES_HORSEA, // 0x074 - SPECIES_SEADRA, // 0x075 - SPECIES_GOLDEEN, // 0x076 - SPECIES_SEAKING, // 0x077 - SPECIES_STARYU, // 0x078 - SPECIES_STARMIE, // 0x079 - SPECIES_MR_MIME, // 0x07a - SPECIES_SCYTHER, // 0x07b - SPECIES_JYNX, // 0x07c - SPECIES_ELECTABUZZ, // 0x07d - SPECIES_MAGMAR, // 0x07e - SPECIES_PINSIR, // 0x07f - SPECIES_TAUROS, // 0x080 - SPECIES_MAGIKARP, // 0x081 - SPECIES_GYARADOS, // 0x082 - SPECIES_LAPRAS, // 0x083 - SPECIES_DITTO, // 0x084 - SPECIES_EEVEE, // 0x085 - SPECIES_VAPOREON, // 0x086 - SPECIES_JOLTEON, // 0x087 - SPECIES_FLAREON, // 0x088 - SPECIES_PORYGON, // 0x089 - SPECIES_OMANYTE, // 0x08a - SPECIES_OMASTAR, // 0x08b - SPECIES_KABUTO, // 0x08c - SPECIES_KABUTOPS, // 0x08d - SPECIES_AERODACTYL, // 0x08e - SPECIES_SNORLAX, // 0x08f - SPECIES_ARTICUNO, // 0x090 - SPECIES_ZAPDOS, // 0x091 - SPECIES_MOLTRES, // 0x092 - SPECIES_DRATINI, // 0x093 - SPECIES_DRAGONAIR, // 0x094 - SPECIES_DRAGONITE, // 0x095 - SPECIES_MEWTWO, // 0x096 - SPECIES_MEW, // 0x097 - SPECIES_CHIKORITA, // 0x098 - SPECIES_BAYLEEF, // 0x099 - SPECIES_MEGANIUM, // 0x09a - SPECIES_CYNDAQUIL, // 0x09b - SPECIES_QUILAVA, // 0x09c - SPECIES_TYPHLOSION, // 0x09d - SPECIES_TOTODILE, // 0x09e - SPECIES_CROCONAW, // 0x09f - SPECIES_FERALIGATR, // 0x0a0 - SPECIES_SENTRET, // 0x0a1 - SPECIES_FURRET, // 0x0a2 - SPECIES_HOOTHOOT, // 0x0a3 - SPECIES_NOCTOWL, // 0x0a4 - SPECIES_LEDYBA, // 0x0a5 - SPECIES_LEDIAN, // 0x0a6 - SPECIES_SPINARAK, // 0x0a7 - SPECIES_ARIADOS, // 0x0a8 - SPECIES_CROBAT, // 0x0a9 - SPECIES_CHINCHOU, // 0x0aa - SPECIES_LANTURN, // 0x0ab - SPECIES_PICHU, // 0x0ac - SPECIES_CLEFFA, // 0x0ad - SPECIES_IGGLYBUFF, // 0x0ae - SPECIES_TOGEPI, // 0x0af - SPECIES_TOGETIC, // 0x0b0 - SPECIES_NATU, // 0x0b1 - SPECIES_XATU, // 0x0b2 - SPECIES_MAREEP, // 0x0b3 - SPECIES_FLAAFFY, // 0x0b4 - SPECIES_AMPHAROS, // 0x0b5 - SPECIES_BELLOSSOM, // 0x0b6 - SPECIES_MARILL, // 0x0b7 - SPECIES_AZUMARILL, // 0x0b8 - SPECIES_SUDOWOODO, // 0x0b9 - SPECIES_POLITOED, // 0x0ba - SPECIES_HOPPIP, // 0x0bb - SPECIES_SKIPLOOM, // 0x0bc - SPECIES_JUMPLUFF, // 0x0bd - SPECIES_AIPOM, // 0x0be - SPECIES_SUNKERN, // 0x0bf - SPECIES_SUNFLORA, // 0x0c0 - SPECIES_YANMA, // 0x0c1 - SPECIES_WOOPER, // 0x0c2 - SPECIES_QUAGSIRE, // 0x0c3 - SPECIES_ESPEON, // 0x0c4 - SPECIES_UMBREON, // 0x0c5 - SPECIES_MURKROW, // 0x0c6 - SPECIES_SLOWKING, // 0x0c7 - SPECIES_MISDREAVUS, // 0x0c8 - SPECIES_UNOWN, // 0x0c9 - SPECIES_WOBBUFFET, // 0x0ca - SPECIES_GIRAFARIG, // 0x0cb - SPECIES_PINECO, // 0x0cc - SPECIES_FORRETRESS, // 0x0cd - SPECIES_DUNSPARCE, // 0x0ce - SPECIES_GLIGAR, // 0x0cf - SPECIES_STEELIX, // 0x0d0 - SPECIES_SNUBBULL, // 0x0d1 - SPECIES_GRANBULL, // 0x0d2 - SPECIES_QWILFISH, // 0x0d3 - SPECIES_SCIZOR, // 0x0d4 - SPECIES_SHUCKLE, // 0x0d5 - SPECIES_HERACROSS, // 0x0d6 - SPECIES_SNEASEL, // 0x0d7 - SPECIES_TEDDIURSA, // 0x0d8 - SPECIES_URSARING, // 0x0d9 - SPECIES_SLUGMA, // 0x0da - SPECIES_MAGCARGO, // 0x0db - SPECIES_SWINUB, // 0x0dc - SPECIES_PILOSWINE, // 0x0dd - SPECIES_CORSOLA, // 0x0de - SPECIES_REMORAID, // 0x0df - SPECIES_OCTILLERY, // 0x0e0 - SPECIES_DELIBIRD, // 0x0e1 - SPECIES_MANTINE, // 0x0e2 - SPECIES_SKARMORY, // 0x0e3 - SPECIES_HOUNDOUR, // 0x0e4 - SPECIES_HOUNDOOM, // 0x0e5 - SPECIES_KINGDRA, // 0x0e6 - SPECIES_PHANPY, // 0x0e7 - SPECIES_DONPHAN, // 0x0e8 - SPECIES_PORYGON2, // 0x0e9 - SPECIES_STANTLER, // 0x0ea - SPECIES_SMEARGLE, // 0x0eb - SPECIES_TYROGUE, // 0x0ec - SPECIES_HITMONTOP, // 0x0ed - SPECIES_SMOOCHUM, // 0x0ee - SPECIES_ELEKID, // 0x0ef - SPECIES_MAGBY, // 0x0f0 - SPECIES_MILTANK, // 0x0f1 - SPECIES_BLISSEY, // 0x0f2 - SPECIES_RAIKOU, // 0x0f3 - SPECIES_ENTEI, // 0x0f4 - SPECIES_SUICUNE, // 0x0f5 - SPECIES_LARVITAR, // 0x0f6 - SPECIES_PUPITAR, // 0x0f7 - SPECIES_TYRANITAR, // 0x0f8 - SPECIES_LUGIA, // 0x0f9 - SPECIES_HO_OH, // 0x0fa - SPECIES_CELEBI, // 0x0fb - - SPECIES_OLD_UNOWN_B, - SPECIES_OLD_UNOWN_C, - SPECIES_OLD_UNOWN_D, - SPECIES_OLD_UNOWN_E, - SPECIES_OLD_UNOWN_F, - SPECIES_OLD_UNOWN_G, - SPECIES_OLD_UNOWN_H, - SPECIES_OLD_UNOWN_I, - SPECIES_OLD_UNOWN_J, - SPECIES_OLD_UNOWN_K, - SPECIES_OLD_UNOWN_L, - SPECIES_OLD_UNOWN_M, - SPECIES_OLD_UNOWN_N, - SPECIES_OLD_UNOWN_O, - SPECIES_OLD_UNOWN_P, - SPECIES_OLD_UNOWN_Q, - SPECIES_OLD_UNOWN_R, - SPECIES_OLD_UNOWN_S, - SPECIES_OLD_UNOWN_T, - SPECIES_OLD_UNOWN_U, - SPECIES_OLD_UNOWN_V, - SPECIES_OLD_UNOWN_W, - SPECIES_OLD_UNOWN_X, - SPECIES_OLD_UNOWN_Y, - SPECIES_OLD_UNOWN_Z, - - SPECIES_TREECKO, // 0x115 - SPECIES_GROVYLE, // 0x116 - SPECIES_SCEPTILE, // 0x117 - SPECIES_TORCHIC, // 0x118 - SPECIES_COMBUSKEN, // 0x119 - SPECIES_BLAZIKEN, // 0x11a - SPECIES_MUDKIP, // 0x11b - SPECIES_MARSHTOMP, // 0x11c - SPECIES_SWAMPERT, // 0x11d - SPECIES_POOCHYENA, // 0x11e - SPECIES_MIGHTYENA, // 0x11f - SPECIES_ZIGZAGOON, // 0x120 - SPECIES_LINOONE, // 0x121 - SPECIES_WURMPLE, // 0x122 - SPECIES_SILCOON, // 0x123 - SPECIES_BEAUTIFLY, // 0x124 - SPECIES_CASCOON, // 0x125 - SPECIES_DUSTOX, // 0x126 - SPECIES_LOTAD, // 0x127 - SPECIES_LOMBRE, // 0x128 - SPECIES_LUDICOLO, // 0x129 - SPECIES_SEEDOT, // 0x12a - SPECIES_NUZLEAF, // 0x12b - SPECIES_SHIFTRY, // 0x12c - SPECIES_NINCADA, // 0x12d - SPECIES_NINJASK, // 0x12e - SPECIES_SHEDINJA, // 0x12f - SPECIES_TAILLOW, // 0x130 - SPECIES_SWELLOW, // 0x131 - SPECIES_SHROOMISH, // 0x132 - SPECIES_BRELOOM, // 0x133 - SPECIES_SPINDA, // 0x134 - SPECIES_WINGULL, // 0x135 - SPECIES_PELIPPER, // 0x136 - SPECIES_SURSKIT, // 0x137 - SPECIES_MASQUERAIN, // 0x138 - SPECIES_WAILMER, // 0x139 - SPECIES_WAILORD, // 0x13a - SPECIES_SKITTY, // 0x13b - SPECIES_DELCATTY, // 0x13c - SPECIES_KECLEON, // 0x13d - SPECIES_BALTOY, // 0x13e - SPECIES_CLAYDOL, // 0x13f - SPECIES_NOSEPASS, // 0x140 - SPECIES_TORKOAL, // 0x141 - SPECIES_SABLEYE, // 0x142 - SPECIES_BARBOACH, // 0x143 - SPECIES_WHISCASH, // 0x144 - SPECIES_LUVDISC, // 0x145 - SPECIES_CORPHISH, // 0x146 - SPECIES_CRAWDAUNT, // 0x147 - SPECIES_FEEBAS, // 0x148 - SPECIES_MILOTIC, // 0x149 - SPECIES_CARVANHA, // 0x14a - SPECIES_SHARPEDO, // 0x14b - SPECIES_TRAPINCH, // 0x14c - SPECIES_VIBRAVA, // 0x14d - SPECIES_FLYGON, // 0x14e - SPECIES_MAKUHITA, // 0x14f - SPECIES_HARIYAMA, // 0x150 - SPECIES_ELECTRIKE, // 0x151 - SPECIES_MANECTRIC, // 0x152 - SPECIES_NUMEL, // 0x153 - SPECIES_CAMERUPT, // 0x154 - SPECIES_SPHEAL, // 0x155 - SPECIES_SEALEO, // 0x156 - SPECIES_WALREIN, // 0x157 - SPECIES_CACNEA, // 0x158 - SPECIES_CACTURNE, // 0x159 - SPECIES_SNORUNT, // 0x15a - SPECIES_GLALIE, // 0x15b - SPECIES_LUNATONE, // 0x15c - SPECIES_SOLROCK, // 0x15d - SPECIES_AZURILL, // 0x15e - SPECIES_SPOINK, // 0x15f - SPECIES_GRUMPIG, // 0x160 - SPECIES_PLUSLE, // 0x161 - SPECIES_MINUN, // 0x162 - SPECIES_MAWILE, // 0x163 - SPECIES_MEDITITE, // 0x164 - SPECIES_MEDICHAM, // 0x165 - SPECIES_SWABLU, // 0x166 - SPECIES_ALTARIA, // 0x167 - SPECIES_WYNAUT, // 0x168 - SPECIES_DUSKULL, // 0x169 - SPECIES_DUSCLOPS, // 0x16a - SPECIES_ROSELIA, // 0x16b - SPECIES_SLAKOTH, // 0x16c - SPECIES_VIGOROTH, // 0x16d - SPECIES_SLAKING, // 0x16e - SPECIES_GULPIN, // 0x16f - SPECIES_SWALOT, // 0x170 - SPECIES_TROPIUS, // 0x171 - SPECIES_WHISMUR, // 0x172 - SPECIES_LOUDRED, // 0x173 - SPECIES_EXPLOUD, // 0x174 - SPECIES_CLAMPERL, // 0x175 - SPECIES_HUNTAIL, // 0x176 - SPECIES_GOREBYSS, // 0x177 - SPECIES_ABSOL, // 0x178 - SPECIES_SHUPPET, // 0x179 - SPECIES_BANETTE, // 0x17a - SPECIES_SEVIPER, // 0x17b - SPECIES_ZANGOOSE, // 0x17c - SPECIES_RELICANTH, // 0x17d - SPECIES_ARON, // 0x17e - SPECIES_LAIRON, // 0x17f - SPECIES_AGGRON, // 0x180 - SPECIES_CASTFORM, // 0x181 - SPECIES_VOLBEAT, // 0x182 - SPECIES_ILLUMISE, // 0x183 - SPECIES_LILEEP, // 0x184 - SPECIES_CRADILY, // 0x185 - SPECIES_ANORITH, // 0x186 - SPECIES_ARMALDO, // 0x187 - SPECIES_RALTS, // 0x188 - SPECIES_KIRLIA, // 0x189 - SPECIES_GARDEVOIR, // 0x18a - SPECIES_BAGON, // 0x18b - SPECIES_SHELGON, // 0x18c - SPECIES_SALAMENCE, // 0x18d - SPECIES_BELDUM, // 0x18e - SPECIES_METANG, // 0x18f - SPECIES_METAGROSS, // 0x190 - SPECIES_REGIROCK, // 0x191 - SPECIES_REGICE, // 0x192 - SPECIES_REGISTEEL, // 0x193 - SPECIES_KYOGRE, // 0x194 - SPECIES_GROUDON, // 0x195 - SPECIES_RAYQUAZA, // 0x196 - SPECIES_LATIAS, // 0x197 - SPECIES_LATIOS, // 0x198 - SPECIES_JIRACHI, // 0x199 - SPECIES_DEOXYS, // 0x19a - SPECIES_CHIMECHO, // 0x19b - SPECIES_EGG, // 0x19c - - SPECIES_UNOWN_B, - SPECIES_UNOWN_C, - SPECIES_UNOWN_D, - SPECIES_UNOWN_E, - SPECIES_UNOWN_F, - SPECIES_UNOWN_G, - SPECIES_UNOWN_H, - SPECIES_UNOWN_I, - SPECIES_UNOWN_J, - SPECIES_UNOWN_K, - SPECIES_UNOWN_L, - SPECIES_UNOWN_M, - SPECIES_UNOWN_N, - SPECIES_UNOWN_O, - SPECIES_UNOWN_P, - SPECIES_UNOWN_Q, - SPECIES_UNOWN_R, - SPECIES_UNOWN_S, - SPECIES_UNOWN_T, - SPECIES_UNOWN_U, - SPECIES_UNOWN_V, - SPECIES_UNOWN_W, - SPECIES_UNOWN_X, - SPECIES_UNOWN_Y, - SPECIES_UNOWN_Z, - SPECIES_UNOWN_EMARK, - SPECIES_UNOWN_QMARK, -}; - -#define NUM_SPECIES SPECIES_EGG -extern const u8 gSpeciesNames[][11]; - -#endif // GUARD_SPECIES_H diff --git a/include/sprite.h b/include/sprite.h index 531314079..f972d09cc 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -2,6 +2,7 @@ #define GUARD_SPRITE_H #define MAX_SPRITES 64 +#define SPRITE_INVALID_TAG 0xFFFF struct SpriteSheet { @@ -120,10 +121,6 @@ union AffineAnimCmd {.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}} #define AFFINEANIMCMD_END \ {.type = AFFINEANIMCMDTYPE_END} -#define AFFINEANIMCMD_LOOP(_count) \ - {.loop = {.type = AFFINEANIMCMDTYPE_LOOP, .count = _count}} -#define AFFINEANIMCMD_JUMP(_target) \ - {.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}} struct AffineAnimState { @@ -190,36 +187,29 @@ struct Sprite /*0x2A*/ u8 animNum; /*0x2B*/ u8 animCmdIndex; /*0x2C*/ u8 animDelayCounter:6; - u8 animPaused:1; - u8 affineAnimPaused:1; + bool8 animPaused:1; + bool8 affineAnimPaused:1; /*0x2D*/ u8 animLoopCounter; // general purpose data fields - /*0x2E*/ s16 data0; - /*0x30*/ s16 data1; - /*0x32*/ s16 data2; - /*0x34*/ s16 data3; - /*0x36*/ s16 data4; - /*0x38*/ s16 data5; - /*0x3A*/ s16 data6; - /*0x3C*/ s16 data7; - - /*0x3E*/ u16 inUse:1; //1 - u16 coordOffsetEnabled:1; //2 - u16 invisible:1; //4 - u16 flags_3:1; //8 - u16 flags_4:1; //0x10 - u16 flags_5:1; //0x20 - u16 flags_6:1; //0x40 - u16 flags_7:1; //0x80 - /*0x3F*/ u16 hFlip:1; //1 - u16 vFlip:1; //2 - u16 animBeginning:1; //4 - u16 affineAnimBeginning:1; //8 - u16 animEnded:1; //0x10 - u16 affineAnimEnded:1; //0x20 - u16 usingSheet:1; //0x40 - u16 flags_f:1; //0x80 + /*0x2E*/ s16 data[8]; + + /*0x3E*/ bool16 inUse:1; //1 + bool16 coordOffsetEnabled:1; //2 + bool16 invisible:1; //4 + bool16 flags_3:1; //8 + bool16 flags_4:1; //0x10 + bool16 flags_5:1; //0x20 + bool16 flags_6:1; //0x40 + bool16 flags_7:1; //0x80 + /*0x3F*/ bool16 hFlip:1; //1 + bool16 vFlip:1; //2 + bool16 animBeginning:1; //4 + bool16 affineAnimBeginning:1; //8 + bool16 animEnded:1; //0x10 + bool16 affineAnimEnded:1; //0x20 + bool16 usingSheet:1; //0x40 + bool16 flags_f:1; //0x80 /*0x40*/ u16 sheetTileStart; @@ -240,10 +230,12 @@ struct OamMatrix extern const struct OamData gDummyOamData; extern const union AnimCmd *const gDummySpriteAnimTable[]; extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[]; +extern const struct SpriteTemplate gDummySpriteTemplate; extern s16 gSpriteCoordOffsetX; extern s16 gSpriteCoordOffsetY; extern struct Sprite gSprites[]; +extern struct OamMatrix gOamMatrices[]; void ResetSpriteData(void); void AnimateSprites(void); diff --git a/include/start_menu.h b/include/start_menu.h index 6c7cb3237..5551b149d 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -1,6 +1,16 @@ #ifndef GUARD_START_MENU_H #define GUARD_START_MENU_H +extern bool8 (*gMenuCallback)(void); // Defined in sym_common.txt + +void sub_809FA18(void); +void sub_809FA34(u8 taskId); +void ShowStartMenu(void); +void sub_809FDD4(void); +void SaveGame(void); +void sub_80A0514(void); +void sub_80A08CC(void); +void HideStartMenu(void); void AppendToList(u8* list, u8* pos, u8 newEntry); #endif // GUARD_START_MENU_H diff --git a/include/starter_choose.h b/include/starter_choose.h index 61bc17735..18af478aa 100644 --- a/include/starter_choose.h +++ b/include/starter_choose.h @@ -1,6 +1,11 @@ #ifndef GUARD_STARTER_CHOOSE_H #define GUARD_STARTER_CHOOSE_H +extern const u16 gBirchBagGrassPal[2][16]; +extern const u8 gBirchBagTilemap[]; +extern const u8 gBirchGrassTilemap[]; +extern const u8 gBirchHelpGfx[]; + u16 GetStarterPokemon(u16 chosenStarterId); void CB2_ChooseStarter(void); diff --git a/include/strings.h b/include/strings.h index 08e2b4bba..4736fdc5d 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1,45 +1,62 @@ #ifndef GUARD_STRINGS_H #define GUARD_STRINGS_H -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations - extern const u8 gText_FromSpace[]; + extern const u8 gText_Lv50[]; extern const u8 gText_OpenLevel[]; + extern const u8 gText_Mom[]; extern const u8 gText_Dad[]; + extern const u8 gText_Cool[]; extern const u8 gText_Beauty[]; extern const u8 gText_Cute[]; extern const u8 gText_Smart[]; extern const u8 gText_Tough[]; + extern const u8 gText_Single[]; extern const u8 gText_Double[]; + +extern const u8 gText_Spicy[]; +extern const u8 gText_Dry[]; +extern const u8 gText_Sweet[]; +extern const u8 gText_Bitter[]; +extern const u8 gText_Sour[]; + +extern const u8 gText_StowCase[]; +extern const u8 gText_LvVar1[]; + extern const u8 gText_Spicy2[]; extern const u8 gText_Dry2[]; extern const u8 gText_Sweet2[]; extern const u8 gText_Bitter2[]; extern const u8 gText_Sour2[]; + extern const u8 gText_Excellent[]; extern const u8 gText_VeryGood[]; extern const u8 gText_Good[]; extern const u8 gText_SoSo[]; extern const u8 gText_Bad[]; extern const u8 gText_TheWorst[]; + extern const u8 gText_Slots[]; extern const u8 gText_Roulette[]; extern const u8 gText_Jackpot[]; + extern const u8 gText_First[]; extern const u8 gText_Second[]; extern const u8 gText_Third[]; + extern const u8 gText_NoDecorations[]; extern const u8 gText_NoDecorationsInUse[]; + extern const u8 gText_Exit[]; extern const u8 gText_Cancel[]; + +extern const u8 gText_ThrowAwayVar1[]; +extern const u8 gText_Var1ThrownAway[]; + extern const u8 gText_Color161Shadow161[]; extern const u8 gText_GoBackPrevMenu[]; extern const u8 gText_CantPlaceInRoom[]; @@ -56,12 +73,18 @@ extern const u8 gText_NoDecorationHere[]; extern const u8 gText_DecorationWillBeDiscarded[]; extern const u8 gText_CantThrowAwayInUse[]; extern const u8 gText_DecorationThrownAway[]; + +extern const u8 gText_PokeBalls[]; +extern const u8 gText_Berries[]; +extern const u8 gText_Berry[]; + extern const u8 gText_Desk[]; extern const u8 gText_Chair[]; extern const u8 gText_Plant[]; extern const u8 gText_Ornament[]; extern const u8 gText_Mat[]; extern const u8 gText_Poster[]; + extern const u8 gText_PutOutSelectedDecorItem[]; extern const u8 gText_StoreChosenDecorInPC[]; extern const u8 gText_ThrowAwayUnwantedDecors[]; @@ -82,5 +105,361 @@ extern const u8 gText_NoRegistry[]; extern const u8 gText_OkayToDeleteFromRegistry[]; extern const u8 gText_RegisteredDataDeleted[]; extern const u8 gUnknown_085EA79D[]; +extern const u8 gText_CommErrorEllipsis[]; +extern const u8 gText_MoveCloserToLinkPartner[]; +extern const u8 gText_CommErrorCheckConnections[]; +extern const u8 gText_ABtnTitleScreen[]; +extern const u8 gText_ABtnRegistrationCounter[]; +extern const u8 gText_MixingRecords[]; +extern const u8 gText_RecordMixingComplete[]; +extern const u8 gText_EmptyString2[]; +extern const u8 gText_Confirm3[]; +extern const u8 gText_Cancel4[]; +extern const u8 gText_IsThisTheCorrectTime[]; +extern const u8 gText_PkmnFainted3[]; +extern const u8 gText_Coins[]; + +extern const u8 gText_Var1AteTheVar2[]; +extern const u8 gText_Var1HappilyAteVar2[]; +extern const u8 gText_Var1DisdainfullyAteVar2[]; + +extern const u8 gText_RedPokeblock[]; +extern const u8 gText_BluePokeblock[]; +extern const u8 gText_PinkPokeblock[]; +extern const u8 gText_GreenPokeblock[]; +extern const u8 gText_YellowPokeblock[]; +extern const u8 gText_PurplePokeblock[]; +extern const u8 gText_IndigoPokeblock[]; +extern const u8 gText_BrownPokeblock[]; +extern const u8 gText_LiteBluePokeblock[]; +extern const u8 gText_OlivePokeblock[]; +extern const u8 gText_GrayPokeblock[]; +extern const u8 gText_BlackPokeblock[]; +extern const u8 gText_WhitePokeblock[]; +extern const u8 gText_GoldPokeblock[]; + +extern const u8 gMenuText_Use[]; +extern const u8 gMenuText_Toss[]; +extern const u8 gMenuText_Give[]; +extern const u8 gMenuText_Give2[]; +extern const u8 gMenuText_Register[]; +extern const u8 gMenuText_Check[]; +extern const u8 gMenuText_Walk[]; +extern const u8 gMenuText_Deselect[]; +extern const u8 gMenuText_CheckTag[]; +extern const u8 gMenuText_Confirm[]; +extern const u8 gMenuText_Show[]; +extern const u8 gMenuText_Give2[]; + +extern const u8 gText_Cancel2[]; + +extern const u8 gText_WithdrawPokemon[]; +extern const u8 gText_WithdrawMonDescription[]; +extern const u8 gText_DepositPokemon[]; +extern const u8 gText_DepositMonDescription[]; +extern const u8 gText_MovePokemon[]; +extern const u8 gText_MoveMonDescription[]; +extern const u8 gText_MoveItems[]; +extern const u8 gText_MoveItemsDescription[]; +extern const u8 gText_SeeYa[]; +extern const u8 gText_SeeYaDescription[]; + +extern const u8 gText_EggNickname[]; +extern const u8 gText_Pokemon[]; +extern const u8 gText_InGameClockUsable[]; + +// reset rtc screen texts +extern const u8 gText_Day[]; +extern const u8 gText_Colon3[]; +extern const u8 gText_Confirm2[]; +extern const u8 gText_PresentTime[]; +extern const u8 gText_PreviousTime[]; +extern const u8 gText_ResetRTCConfirmCancel[]; +extern const u8 gText_NoSaveFileCantSetTime[]; +extern const u8 gText_PleaseResetTime[]; +extern const u8 gText_ClockHasBeenReset[]; +extern const u8 gText_SaveCompleted[]; +extern const u8 gText_SaveFailed[]; + +// menu texts +extern const u8 gText_MenuPokedex[]; +extern const u8 gText_MenuPokemon[]; +extern const u8 gText_MenuBag[]; +extern const u8 gText_MenuPokenav[]; +extern const u8 gText_MenuPlayer[]; +extern const u8 gText_MenuSave[]; +extern const u8 gText_MenuOption[]; +extern const u8 gText_MenuExit[]; +extern const u8 gText_MenuRetire[]; +extern const u8 gText_MenuRest[]; +extern const u8 gText_Floor1[]; +extern const u8 gText_Floor2[]; +extern const u8 gText_Floor3[]; +extern const u8 gText_Floor4[]; +extern const u8 gText_Floor5[]; +extern const u8 gText_Floor6[]; +extern const u8 gText_Floor7[]; +extern const u8 gText_Peak[]; +extern const u8 gText_SafariBallStock[]; +extern const u8 gText_BattlePyramidFloor[]; + +// save menu texts +extern const u8 gText_ConfirmSave[]; +extern const u8 gText_DifferentSaveFile[]; +extern const u8 gText_AlreadySavedFile[]; +extern const u8 gText_SavingDontTurnOff[]; +extern const u8 gText_PlayerSavedGame[]; +extern const u8 gText_SaveError[]; +extern const u8 gText_SavingDontTurnOffPower[]; +extern const u8 gText_SavingPlayer[]; +extern const u8 gText_SavingBadges[]; +extern const u8 gText_SavingPokedex[]; +extern const u8 gText_SavingTime[]; + +// Battle pyramid menu texts +extern const u8 gText_BattlePyramidConfirmRest[]; +extern const u8 gText_BattlePyramidConfirmRetire[]; + +// option menu texts +extern const u8 gText_TextSpeedSlow[]; +extern const u8 gText_TextSpeedMid[]; +extern const u8 gText_TextSpeedFast[]; +extern const u8 gText_BattleSceneOn[]; +extern const u8 gText_BattleSceneOff[]; +extern const u8 gText_BattleStyleShift[]; +extern const u8 gText_BattleStyleSet[]; +extern const u8 gText_SoundMono[]; +extern const u8 gText_SoundStereo[]; +extern const u8 gText_FrameTypeNumber[]; +extern const u8 gText_FrameType[]; +extern const u8 gText_ButtonTypeNormal[]; +extern const u8 gText_ButtonTypeLR[]; +extern const u8 gText_ButtonTypeLEqualsA[]; +extern const u8 gText_Option[]; +extern const u8 gText_OptionMenu[]; +extern const u8 gText_TextSpeed[]; +extern const u8 gText_BattleScene[]; +extern const u8 gText_BattleStyle[]; +extern const u8 gText_Sound[]; +extern const u8 gText_Frame[]; +extern const u8 gText_OptionMenuCancel[]; +extern const u8 gText_ButtonMode[]; + +extern const u8 gText_MaleSymbol[]; +extern const u8 gText_FemaleSymbol[]; + +extern const u8 gText_SelectorArrow3[]; +extern const u8 gText_YesNo[]; + +// main menu/birch speech text +extern const u8 gText_SaveFileErased[]; +extern const u8 gText_SaveFileCorrupted[]; +extern const u8 gJPText_No1MSubCircuit[]; +extern const u8 gText_BatteryRunDry[]; +extern const u8 gText_MainMenuNewGame[]; +extern const u8 gText_MainMenuOption[]; +extern const u8 gText_MainMenuContinue[]; +extern const u8 gText_MainMenuMysteryGift2[]; +extern const u8 gText_MainMenuMysteryEvents[]; +extern const u8 gText_MainMenuMysteryGift[]; +extern const u8 gText_WirelessNotConnected[]; +extern const u8 gText_MysteryGiftCantUse[]; +extern const u8 gText_MysteryEventsCantUse[]; +extern const u8 gText_Birch_Welcome[]; +extern const u8 gText_ThisIsAPokemon[]; +extern const u8 gText_Birch_MainSpeech[]; +extern const u8 gText_Birch_AndYouAre[]; +extern const u8 gText_Birch_BoyOrGirl[]; +extern const u8 gText_Birch_WhatsYourName[]; +extern const u8 gText_Birch_SoItsPlayer[]; +extern const u8 gText_Birch_YourePlayer[]; +extern const u8 gText_Birch_AreYouReady[]; +extern const u8 gText_ContinueMenuPlayer[]; +extern const u8 gText_ContinueMenuTime[]; +extern const u8 gText_ContinueMenuPokedex[]; +extern const u8 gText_ContinueMenuBadges[]; +extern const u8 gText_BirchBoy[]; +extern const u8 gText_BirchGirl[]; +extern const u8 gText_DefaultNameStu[]; +extern const u8 gText_DefaultNameMilton[]; +extern const u8 gText_DefaultNameTom[]; +extern const u8 gText_DefaultNameKenny[]; +extern const u8 gText_DefaultNameReid[]; +extern const u8 gText_DefaultNameJude[]; +extern const u8 gText_DefaultNameJaxson[]; +extern const u8 gText_DefaultNameEaston[]; +extern const u8 gText_DefaultNameWalker[]; +extern const u8 gText_DefaultNameTeru[]; +extern const u8 gText_DefaultNameJohnny[]; +extern const u8 gText_DefaultNameBrett[]; +extern const u8 gText_DefaultNameSeth[]; +extern const u8 gText_DefaultNameTerry[]; +extern const u8 gText_DefaultNameCasey[]; +extern const u8 gText_DefaultNameDarren[]; +extern const u8 gText_DefaultNameLandon[]; +extern const u8 gText_DefaultNameCollin[]; +extern const u8 gText_DefaultNameStanley[]; +extern const u8 gText_DefaultNameQuincy[]; +extern const u8 gText_DefaultNameKimmy[]; +extern const u8 gText_DefaultNameTiara[]; +extern const u8 gText_DefaultNameBella[]; +extern const u8 gText_DefaultNameJayla[]; +extern const u8 gText_DefaultNameAllie[]; +extern const u8 gText_DefaultNameLianna[]; +extern const u8 gText_DefaultNameSara[]; +extern const u8 gText_DefaultNameMonica[]; +extern const u8 gText_DefaultNameCamila[]; +extern const u8 gText_DefaultNameAubree[]; +extern const u8 gText_DefaultNameRuthie[]; +extern const u8 gText_DefaultNameHazel[]; +extern const u8 gText_DefaultNameNadine[]; +extern const u8 gText_DefaultNameTanja[]; +extern const u8 gText_DefaultNameYasmin[]; +extern const u8 gText_DefaultNameNicola[]; +extern const u8 gText_DefaultNameLillie[]; +extern const u8 gText_DefaultNameTerra[]; +extern const u8 gText_DefaultNameLucy[]; +extern const u8 gText_DefaultNameHalie[]; + +// mystery event menu text +extern const u8 gText_EventSafelyLoaded[]; +extern const u8 gText_LoadErrorEndingSession[]; +extern const u8 gText_PressAToLoadEvent[]; +extern const u8 gText_LoadingEvent[]; +extern const u8 gText_DontRemoveCableTurnOff[]; +extern const u8 gText_LinkStandby2[]; + +// berry tag screen text +extern const u8 gBerryFirmnessString_VerySoft[]; +extern const u8 gBerryFirmnessString_Soft[]; +extern const u8 gBerryFirmnessString_Hard[]; +extern const u8 gBerryFirmnessString_VeryHard[]; +extern const u8 gBerryFirmnessString_SuperHard[]; +extern const u8 gText_BerryTag[]; +extern const u8 gText_UnkF908Var1Var2[]; +extern const u8 gText_SizeSlash[]; +extern const u8 gText_Var1DotVar2[]; +extern const u8 gText_ThreeMarks[]; +extern const u8 gText_FirmSlash[]; + +// item menu screen text +extern const u8 gText_CloseBag[]; +extern const u8 gText_ClearTo11Var1Clear5Var2[]; +extern const u8 gText_UnkF908Var1Clear7Var2[]; +extern const u8 gText_xVar1[]; +extern const u8 gText_ReturnToVar1[]; +extern const u8 gText_SelectorArrow2[]; +extern const u8 gText_MoveVar1Where[]; +extern const u8 gText_Var1IsSelected[]; +extern const u8 gText_TossHowManyVar1s[]; +extern const u8 gText_ConfirmTossItems[]; +extern const u8 gText_ThrewAwayVar2Var1s[]; +extern const u8 gText_CantWriteMail[]; +extern const u8 gText_NoPokemon[]; +extern const u8 gText_Var1CantBeHeld[]; +extern const u8 gText_Var1CantBeHeldHere[]; +extern const u8 gText_CantBuyKeyItem[]; +extern const u8 gText_HowManyToSell[]; +extern const u8 gText_ICanPayVar1[]; +extern const u8 gText_TurnedOverVar1ForVar2[]; +extern const u8 gText_DepositHowManyVar1[]; +extern const u8 gText_CantStoreImportantItems[]; +extern const u8 gText_DepositedVar2Var1s[]; +extern const u8 gText_NoRoomForItems[]; +extern const u8 gText_ThreeDashes[]; + +// party menu text +extern const u8 gText_PkmnHPRestoredByVar2[]; +extern const u8 gText_CantBeUsedOnPkmn[]; + +//pokedex text +extern const u8 gText_CryOf[]; +extern const u8 gText_SizeComparedTo[]; +extern const u8 gText_PokedexRegistration[]; +extern const u8 gText_UnkCtrlF908Clear01[]; +extern const u8 sText_TenDashes2[]; +extern const u8 gText_5MarksPokemon[]; +extern const u8 gText_UnkHeight[]; +extern const u8 gText_UnkWeight[]; +extern const u8 gText_HTHeight[]; +extern const u8 gText_WTWeight[]; +extern const u8 gText_SearchingPleaseWait[]; +extern const u8 gText_SearchCompleted[]; +extern const u8 gUnknown_085E8785[]; +extern const u8 gText_SelectorArrow[]; + +// birch dex rating text +extern const u8 gBirchDexRatingText_LessThan10[]; +extern const u8 gBirchDexRatingText_LessThan20[]; +extern const u8 gBirchDexRatingText_LessThan30[]; +extern const u8 gBirchDexRatingText_LessThan40[]; +extern const u8 gBirchDexRatingText_LessThan50[]; +extern const u8 gBirchDexRatingText_LessThan60[]; +extern const u8 gBirchDexRatingText_LessThan70[]; +extern const u8 gBirchDexRatingText_LessThan80[]; +extern const u8 gBirchDexRatingText_LessThan90[]; +extern const u8 gBirchDexRatingText_LessThan100[]; +extern const u8 gBirchDexRatingText_LessThan110[]; +extern const u8 gBirchDexRatingText_LessThan120[]; +extern const u8 gBirchDexRatingText_LessThan130[]; +extern const u8 gBirchDexRatingText_LessThan140[]; +extern const u8 gBirchDexRatingText_LessThan150[]; +extern const u8 gBirchDexRatingText_LessThan160[]; +extern const u8 gBirchDexRatingText_LessThan170[]; +extern const u8 gBirchDexRatingText_LessThan180[]; +extern const u8 gBirchDexRatingText_LessThan190[]; +extern const u8 gBirchDexRatingText_LessThan200[]; +extern const u8 gBirchDexRatingText_DexCompleted[]; + +// player pc text +extern const u8 gText_WhatWouldYouLike[]; +extern const u8 gText_NoMailHere[]; + +extern const u8 gText_TakeOutItemsFromPC[]; +extern const u8 gText_StoreItemsInPC[]; +extern const u8 gText_ThrowAwayItemsInPC[]; +extern const u8 gText_GoBackPrevMenu[]; + +extern const u8 gText_ItemStorage[]; +extern const u8 gText_Mailbox[]; +extern const u8 gText_Decoration[]; +extern const u8 gText_TurnOff[]; + +extern const u8 gText_WithdrawItem[]; +extern const u8 gText_DepositItem[]; +extern const u8 gText_TossItem[]; +extern const u8 gText_Cancel[]; + +extern const u8 gText_Read[]; +extern const u8 gText_MoveToBag[]; +extern const u8 gText_Give2[]; +extern const u8 gText_Cancel2[]; + +extern const u8 gText_NoItems[]; +extern const u8 gText_WhatToDoWithVar1sMail[]; +extern const u8 gText_MessageWillBeLost[]; +extern const u8 gText_BagIsFull[]; + +extern const u8 gText_MailToBagMessageErased[]; +extern const u8 gText_GoBackPrevMenu[]; +extern const u8 gText_WithdrawHowManyItems[]; +extern const u8 gText_WithdrawXItems[]; +extern const u8 gText_TossHowManyVar1s[]; +extern const u8 gText_ThrewAwayVar2Var1s[]; +extern const u8 gText_NoRoomInBag[]; +extern const u8 gText_TooImportantToToss[]; +extern const u8 gText_ConfirmTossItems[]; +extern const u8 gText_MoveVar1Where[]; + +extern const u8 gText_Friend[]; +extern const u8 gText_Tristan[]; +extern const u8 gText_Philip[]; +extern const u8 gText_Dennis[]; +extern const u8 gText_Roberto[]; +extern const u8 gText_FiveMarks[]; + +extern const u8 gText_TotalRecordWLD[]; +extern const u8 gText_PlayersBattleResults[]; +extern const u8 gText_WinLoseDraw[]; #endif //GUARD_STRINGS_H diff --git a/include/text.h b/include/text.h index 594661717..92def780c 100644 --- a/include/text.h +++ b/include/text.h @@ -2,7 +2,17 @@ #define GUARD_TEXT_H #define CHAR_SPACE 0x00 +#define CHAR_PLUS 0x2E #define CHAR_0 0xA1 +#define CHAR_1 0xA2 +#define CHAR_2 0xA3 +#define CHAR_3 0xA4 +#define CHAR_4 0xA5 +#define CHAR_5 0xA6 +#define CHAR_6 0xA7 +#define CHAR_7 0xA8 +#define CHAR_8 0xA9 +#define CHAR_9 0xAA #define CHAR_QUESTION_MARK 0xAC #define CHAR_PERIOD 0xAD #define CHAR_HYPHEN 0xAE @@ -65,6 +75,7 @@ #define CHAR_x 0xEC #define CHAR_y 0xED #define CHAR_z 0xEE +#define CHAR_SPECIAL_F7 0xF7 #define CHAR_SPECIAL_F9 0xF9 #define CHAR_COLON 0xF0 #define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog @@ -74,9 +85,19 @@ #define CHAR_NEWLINE 0xFE #define EOS 0xFF // end of string +#define EXT_CTRL_CODE_COLOR 0x1 +#define EXT_CTRL_CODE_HIGHLIGHT 0x2 +#define EXT_CTRL_CODE_SHADOW 0x3 + #define TEXT_COLOR_TRANSPARENT 0x0 #define TEXT_COLOR_WHITE 0x1 #define TEXT_COLOR_DARK_GREY 0x2 +// 0x3 +#define TEXT_COLOR_RED 0x4 +// 0x5 +#define TEXT_COLOR_GREEN 0x6 +// 0x7 +#define TEXT_COLOR_BLUE 0x8 // battle placeholders are located in battle_message.h @@ -85,6 +106,19 @@ #define NUM_TEXT_PRINTERS 32 +#define TEXT_SPEED_FF 0xFF + +enum { + FONTATTR_MAX_LETTER_WIDTH, + FONTATTR_MAX_LETTER_HEIGHT, + FONTATTR_LETTER_SPACING, + FONTATTR_LINE_SPACING, + FONTATTR_COLOR_LOWNIBBLE, // dunno what this is yet + FONTATTR_COLOR_FOREGROUND, + FONTATTR_COLOR_BACKGROUND, + FONTATTR_COLOR_SHADOW +}; + struct TextPrinterSubStruct { u8 font_type:4; // 0x14 @@ -113,7 +147,7 @@ struct TextSubPrinter // TODO: Better name u8 letterSpacing; u8 lineSpacing; u8 fontColor_l:4; // 0xC - u8 fontColor_h:4; + u8 fgColor:4; u8 bgColor:4; u8 shadowColor:4; }; @@ -146,7 +180,7 @@ struct FontInfo u8 letterSpacing; u8 lineSpacing; u8 fontColor_l:4; - u8 fontColor_h:4; + u8 fgColor:4; u8 bgColor:4; u8 shadowColor:4; }; @@ -175,13 +209,6 @@ typedef struct { extern TextFlags gTextFlags; -struct __attribute__((packed)) TextColor -{ - u8 fgColor; - u8 bgColor; - u8 shadowColor; -}; - extern u8 gStringVar1[]; extern u8 gStringVar2[]; extern u8 gStringVar3[]; @@ -208,6 +235,7 @@ void DecompressGlyphTile(const u16 *src, u16 *dest); u8 GetLastTextColor(u8 colorType); void CopyGlyphToWindow(struct TextPrinter *x); void ClearTextSpan(struct TextPrinter *textPrinter, u32 width); +u8 GetMenuCursorDimensionByFont(u8, u8); u16 Font0Func(struct TextPrinter *textPrinter); u16 Font1Func(struct TextPrinter *textPrinter); diff --git a/include/text_window.h b/include/text_window.h index da3fb301e..53a6df2e9 100644 --- a/include/text_window.h +++ b/include/text_window.h @@ -1,22 +1,27 @@ #ifndef GUARD_TEXT_WINDOW_H #define GUARD_TEXT_WINDOW_H +#define WINDOW_FRAMES_COUNT 20 + struct TilesPal { - u32* tiles; - u16* pal; + const u8 *tiles; + const u16 *pal; }; -const struct TilesPal* sub_8098758(u8 id); -void copy_textbox_border_tile_patterns_to_vram(u8 windowId, u16 destOffset, u8 palOffset); -void sub_809882C(u8 windowId, u16 destOffset, u8 palOffset); -void sub_80987D4(u8 windowId, u8 frameId, u16 destOffset, u8 palOffset); -void box_border_load_tiles_and_pal(u8 windowId, u16 destOffset, u8 palOffset); +extern const u8 gTextWindowFrame1_Gfx[]; +extern const u16 gTextWindowFrame1_Pal[]; + +const struct TilesPal *GetWindowFrameTilesPal(u8 id); +void LoadMessageBoxGfx(u8 windowId, u16 destOffset, u8 palOffset); +void LoadUserWindowBorderGfx(u8 windowId, u16 destOffset, u8 palOffset); +void LoadWindowGfx(u8 windowId, u8 frameId, u16 destOffset, u8 palOffset); +void LoadUserWindowBorderGfx_(u8 windowId, u16 destOffset, u8 palOffset); void sub_8098858(u8 windowId, u16 tileNum, u8 palNum); void sub_80989E0(u8 windowId, u16 tileNum, u8 palNum); void rbox_fill_rectangle(u8 windowId); -const u16* stdpal_get(u8 id); -const u16* GetOverworldTextboxPalettePtr(void); +const u16 *stdpal_get(u8 id); +const u16 *GetOverworldTextboxPalettePtr(void); void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset); #endif // GUARD_TEXT_WINDOW_H diff --git a/include/time_events.h b/include/time_events.h new file mode 100644 index 000000000..fd6d29f39 --- /dev/null +++ b/include/time_events.h @@ -0,0 +1,8 @@ +#ifndef GUARD_TIME_EVENTS_H +#define GUARD_TIME_EVENTS_H + +void UpdateMirageRnd(u16); +u8 IsMirageIslandPresent(void); +void UpdateBirchState(u16); + +#endif // GUARD_TIME_EVENTS_H diff --git a/include/title_screen.h b/include/title_screen.h new file mode 100644 index 000000000..b660792fc --- /dev/null +++ b/include/title_screen.h @@ -0,0 +1,8 @@ +#ifndef GUARD_TITLE_SCREEN_H +#define GUARD_TITLE_SCREEN_H + +extern const u16 gUnknown_0853FF70[]; + +void CB2_InitTitleScreen(void); + +#endif // GUARD_TITLE_SCREEN_H diff --git a/include/trade.h b/include/trade.h new file mode 100644 index 000000000..af4da0015 --- /dev/null +++ b/include/trade.h @@ -0,0 +1,14 @@ +#ifndef GUARD_TRADE_H +#define GUARD_TRADE_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +s32 sub_807A728(void); +void sub_80773AC(void); +void sub_807AE50(void); + +#endif //GUARD_TRADE_H diff --git a/include/trader.h b/include/trader.h index 71fd1f7c2..c07ea81bd 100644 --- a/include/trader.h +++ b/include/trader.h @@ -7,5 +7,7 @@ void sub_8133DA0(u8 taskId); void sub_8133E1C(u8 taskId); +void TraderSetup(void); +void Trader_ResetFlag(void); #endif //GUARD_TRADER_H diff --git a/include/trainer_card.h b/include/trainer_card.h new file mode 100644 index 000000000..af603444f --- /dev/null +++ b/include/trainer_card.h @@ -0,0 +1,39 @@ +#ifndef GUARD_TRAINER_CARD_H +#define GUARD_TRAINER_CARD_H + +struct TrainerCard +{ + /*0x00*/ u8 gender; + /*0x01*/ u8 stars; + /*0x02*/ bool8 hasPokedex; + /*0x03*/ bool8 var_3; + /*0x04*/ bool8 var_4; + /*0x05*/ u8 var_5; + /*0x06*/ u16 firstHallOfFameA; + /*0x08*/ u16 firstHallOfFameB; + /*0x0A*/ u16 firstHallOfFameC; + /*0x0C*/ u16 pokedexSeen; + /*0x0E*/ u16 trainerId; + /*0x10*/ u16 playTimeHours; + /*0x12*/ u16 playTimeMinutes; + /*0x14*/ u16 linkBattleWins; + /*0x16*/ u16 linkBattleLosses; + /*0x18*/ u16 battleTowerWins; + /*0x1A*/ u16 battleTowerLosses; + /*0x1C*/ u16 contestsWithFriends; + /*0x1E*/ u16 pokeblocksWithFriends; + /*0x20*/ u16 pokemonTrades; + /*0x22*/ u16 var_22; + /*0x24*/ u32 money; + /*0x28*/ u16 var_28[4]; + /*0x30*/ u8 playerName[8]; + /*0x38*/ u8 emeraldAddedUnknownFields[0x64-0x38]; +}; + +extern struct TrainerCard gTrainerCards[4]; + +void sub_80C3120(struct TrainerCard *arg0, u16 *arg1, u8 gameVersion); +void sub_80C4E74(u8 arg0, void (*callback)(void)); +void sub_80C30A4(u16 *arg0); + +#endif // GUARD_TRAINER_CARD_H diff --git a/include/trainer_classes.h b/include/trainer_classes.h deleted file mode 100644 index e5e26b359..000000000 --- a/include/trainer_classes.h +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef GUARD_TRAINER_CLASSES_H -#define GUARD_TRAINER_CLASSES_H - -enum -{ - CLASS_PKMN_TRAINER0, // 0 - CLASS_PKMN_TRAINER1, // 1 - CLASS_HIKER, // 2 - CLASS_TEAM_AQUA, // 3 - CLASS_PKMN_BREEDER, // 4 - CLASS_COOLTRAINER, // 5 - CLASS_BIRDKEEPER, // 6 - CLASS_COLLECTOR, // 7 - CLASS_SWIMMER_MALE, // 8 - CLASS_TEAM_MAGMA, // 9 - CLASS_EXPERT, // 0xA - CLASS_AQUA_ADMIN, // 0xB - CLASS_BLACK_BELT, // 0xC - CLASS_AQUA_LEADER, // 0xD - CLASS_HEX_MANIAC, // 0xE - CLASS_AROMA_LADY, // 0xF - CLASS_RUIN_MANIAC, // 0x10 - CLASS_INTERVIEWER, // 0x11 - CLASS_TUBER_FEMALE, // 0x12 - CLASS_TUBER_MALE, // 0x13 - CLASS_LADY, // 0x14 - CLASS_BEAUTY, // 0x15 - CLASS_RICH_BOY, // 0x16 - CLASS_POKEMANIAC, // 0x17 - CLASS_GUITARIST, // 0x18 - CLASS_KINDLER, // 0x19 - CLASS_CAMPER, // 0x1A - CLASS_PICKNICKER, // 0x1B - CLASS_BUG_MANIAC, // 0x1C - CLASS_PSYCHIC, // 0x1D - CLASS_GENTLEMAN, // 0x1E - CLASS_ELITE_FOUR, // 0x1F - CLASS_LEADER, // 0x20 - CLASS_SCHOOL_KID, // 0x21 - CLASS_SCHOOL_SR_JR, // 0x22 - CLASS_WINSTRATE, // 0x23 - CLASS_POKE_FAN, // 0x24 - CLASS_YOUNGSTER, // 0x25 - CLASS_CHAMPION, // 0x26 - CLASS_FISHERMAN, // 0x27 - CLASS_TRIATHLETE, // 0x28 - CLASS_DRAGON_TAMER, // 0x29 - CLASS_NINJA_BOY, // 0x2A - CLASS_BATTLE_GIRL, // 0x2B - CLASS_PARASOL_LADY, // 0x2C - CLASS_SWIMMER_FEMALE, // 0x2D - CLASS_TWINS, // 0x2E - CLASS_SAILOR, // 0x2F - CLASS_COOLTRAINER_2, // 0x30 - CLASS_MAGMA_ADMIN, // 0x31 - CLASS_PKMN_TRAINER_RIVAL, // 0x32 - CLASS_BUG_CATCHER, // 0x33 - CLASS_PKMN_RANGER, // 0x34 - CLASS_MAGMA_LEADER, // 0x35 - CLASS_LASS, // 0x36 - CLASS_YOUNG_COUPLE, // 0x37 - CLASS_OLD_COUPLE, // 0x38 - CLASS_SIS_AND_BRO, // 0x39 - CLASS_SALON_MAIDEN, // 0x3A - CLASS_DOME_ACE, // 0x3B - CLASS_PALACE_MAVEN, // 0x3C - CLASS_ARENA_TYCOON, // 0x3D - CLASS_FACTORY_HEAD, // 0x3E - CLASS_PIKE_QUEEN, // 0x3F - CLASS_PYRAMID_KING, // 0x40 - CLASS_PKMN_TRAINER2, // 0x41 -}; - -#endif // GUARD_TRAINER_CLASSES_H diff --git a/include/trainer_front_sprites.h b/include/trainer_front_sprites.h deleted file mode 100644 index 3259bec88..000000000 --- a/include/trainer_front_sprites.h +++ /dev/null @@ -1,101 +0,0 @@ -#ifndef GUARD_TRAINER_FRONT_SPRITES_H -#define GUARD_TRAINER_FRONT_SPRITES_H - -enum -{ - TRAINER_FRONT_PIC_HIKER, - TRAINER_FRONT_PIC_AQUA_GRUNT_M, - TRAINER_FRONT_PIC_PKMN_BREEDER_F, - TRAINER_FRONT_PIC_COOLTRAINER_M, - TRAINER_FRONT_PIC_BIRD_KEEPER, - TRAINER_FRONT_PIC_COLLECTOR, - TRAINER_FRONT_PIC_AQUA_GRUNT_F, - TRAINER_FRONT_PIC_SWIMMER_M, - TRAINER_FRONT_PIC_MAGMA_GRUNT_M, - TRAINER_FRONT_PIC_EXPERT_M, - TRAINER_FRONT_PIC_AQUA_ADMIN_M, - TRAINER_FRONT_PIC_BLACK_BELT, - TRAINER_FRONT_PIC_AQUA_ADMIN_F, - TRAINER_FRONT_PIC_AQUA_LEADER, - TRAINER_FRONT_PIC_HEX_MANIAC, - TRAINER_FRONT_PIC_AROMA_LADY, - TRAINER_FRONT_PIC_RUIN_MANIAC, - TRAINER_FRONT_PIC_INTERVIEWER, - TRAINER_FRONT_PIC_TUBER_F, - TRAINER_FRONT_PIC_TUBER_M, - TRAINER_FRONT_PIC_COOLTRAINER_F, - TRAINER_FRONT_PIC_LADY, - TRAINER_FRONT_PIC_BEAUTY, - TRAINER_FRONT_PIC_RICH_BOY, - TRAINER_FRONT_PIC_EXPERT_F, - TRAINER_FRONT_PIC_POKE_MANIAC, - TRAINER_FRONT_PIC_MAGMA_GRUNT_F, - TRAINER_FRONT_PIC_GUITARIST, - TRAINER_FRONT_PIC_KINDLER, - TRAINER_FRONT_PIC_CAMPER, - TRAINER_FRONT_PIC_PICNICKER, - TRAINER_FRONT_PIC_BUG_MANIAC, - TRAINER_FRONT_PIC_PKMN_BREEDER_M, - TRAINER_FRONT_PIC_PSYCHIC_M, - TRAINER_FRONT_PIC_PSYCHIC_F, - TRAINER_FRONT_PIC_GENTLEMAN, - TRAINER_FRONT_PIC_SIDNEY, - TRAINER_FRONT_PIC_PHOEBE, - TRAINER_FRONT_PIC_GLACIA, - TRAINER_FRONT_PIC_DRAKE, - TRAINER_FRONT_PIC_ROXANNE, - TRAINER_FRONT_PIC_BRAWLY, - TRAINER_FRONT_PIC_WATTSON, - TRAINER_FRONT_PIC_FLANNERY, - TRAINER_FRONT_PIC_NORMAN, - TRAINER_FRONT_PIC_WINONA, - TRAINER_FRONT_PIC_TATE_LIZA, - TRAINER_FRONT_PIC_JUAN, - TRAINER_FRONT_PIC_SCHOOL_KID_M, - TRAINER_FRONT_PIC_SCHOOL_KID_F, - TRAINER_FRONT_PIC_SR_JR, - TRAINER_FRONT_PIC_POKFAN_M, - TRAINER_FRONT_PIC_POKFAN_F, - TRAINER_FRONT_PIC_YOUNGSTER, - TRAINER_FRONT_PIC_WALLACE, - TRAINER_FRONT_PIC_FISHERMAN, - TRAINER_FRONT_PIC_TRIATHLETE_BIKER_M, - TRAINER_FRONT_PIC_TRIATHLETE_BIKER_F, - TRAINER_FRONT_PIC_TRIATHLETE_JOGGER_M, - TRAINER_FRONT_PIC_TRIATHLETE_JOGGER_F, - TRAINER_FRONT_PIC_TRIATHLETE_SWIMMER_M, - TRAINER_FRONT_PIC_TRIATHLETE_SWIMMER_F, - TRAINER_FRONT_PIC_DRAGON_TAMER, - TRAINER_FRONT_PIC_NINJA_BOY, - TRAINER_FRONT_PIC_BATTLE_GIRL, - TRAINER_FRONT_PIC_PARASOL_LADY, - TRAINER_FRONT_PIC_SWIMMER_F, - TRAINER_FRONT_PIC_TWINS, - TRAINER_FRONT_PIC_SAILOR, - TRAINER_FRONT_PIC_MAGMA_ADMIN_M, - TRAINER_FRONT_PIC_WALLY, - TRAINER_FRONT_PIC_BRENDAN_E, - TRAINER_FRONT_PIC_MAY_E, - TRAINER_FRONT_PIC_BUG_CATCHER, - TRAINER_FRONT_PIC_PKMN_RANGER_M, - TRAINER_FRONT_PIC_PKMN_RANGER_F, - TRAINER_FRONT_PIC_MAGMA_LEADER, - TRAINER_FRONT_PIC_LASS, - TRAINER_FRONT_PIC_YOUNG_COUPLE, - TRAINER_FRONT_PIC_OLD_COUPLE, - TRAINER_FRONT_PIC_SIS_AND_BRO, - TRAINER_FRONT_PIC_STEVEN, - TRAINER_FRONT_PIC_ANABEL, - TRAINER_FRONT_PIC_TUCKER, - TRAINER_FRONT_PIC_SPENSER, - TRAINER_FRONT_PIC_GRETA, - TRAINER_FRONT_PIC_NOLAND, - TRAINER_FRONT_PIC_LUCY, - TRAINER_FRONT_PIC_BRANDON, - TRAINER_FRONT_PIC_RED, - TRAINER_FRONT_PIC_LEAF, - TRAINER_FRONT_PIC_BRENDAN_RS, - TRAINER_FRONT_PIC_MAY_RS -}; - -#endif // GUARD_TRAINER_FRONT_SPRITES_H diff --git a/include/trainer_ids.h b/include/trainer_ids.h deleted file mode 100644 index 65c80187f..000000000 --- a/include/trainer_ids.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef GUARD_TRAINER_IDS_H -#define GUARD_TRAINER_IDS_H - -#define NO_OF_TRAINERS 854 -#define TRAINER_ID_STEVEN 804 - -#endif // GUARD_TRAINER_IDS_H diff --git a/include/trainer_see.h b/include/trainer_see.h index ab035d9f8..43f8b82d2 100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h @@ -1,8 +1,30 @@ #ifndef GUARD_TRAINER_SEE_H #define GUARD_TRAINER_SEE_H -void sub_80B4578(struct MapObject *); -u8 sub_80B47BC(void); -void sub_8155D78(struct MapObject *); +struct ApproachingTrainer +{ + u8 eventObjectId; + u8 radius; // plus 1 + const u8 *trainerScriptPtr; + u8 taskId; +}; -#endif //GUARD_TRAINER_SEE_H +extern u16 gUnknown_03006080; +extern u8 gUnknown_03006084[4]; +extern struct ApproachingTrainer gApproachingTrainers[2]; +extern u8 gNoOfApproachingTrainers; +extern u8 gUnknown_030060AC; +extern u8 gApproachingTrainerId; + +bool8 CheckForTrainersWantingBattle(void); +void sub_80B4578(struct EventObject *var); +void EndTrainerApproach(void); +void sub_80B45D0(void); +u8 FldEff_ExclamationMarkIcon(void); +u8 FldEff_QuestionMarkIcon(void); +u8 FldEff_HeartIcon(void); +u8 GetCurrentApproachingTrainerEventObjectId(void); +u8 GetChosenApproachingTrainerEventObjectId(u8 arrayId); +void sub_80B4808(void); + +#endif // GUARD_TRAINER_SEE_H diff --git a/include/tv.h b/include/tv.h index 3f48af569..17be8c43c 100644 --- a/include/tv.h +++ b/include/tv.h @@ -4,15 +4,49 @@ extern u8 *const gTVStringVarPtrs[3]; void ClearTVShowData(void); -void PutPokemonTodayCaughtOnAir(void); +void sub_80EE184(void); +void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove); +void sub_80EE8C8(u16 winStreak, u8 facility); +void DoTVShow(void); +void DoTVShowInSearchOfTrainers(void); +void sub_80EDCE8(void); +void sub_80EE2CC(void); +void sub_80EE72C(void); +void sub_80EED10(void); +void sub_80EED34(void); +void sub_80EED60(u16 delta); +void sub_80F01B8(void); +void ReceiveTvShowsData(void *src, u32 size, u8 masterIdx); +void sub_80EE4DC(struct Pokemon *pokemon, u8 ribbonMonDataIdx); u32 GetPlayerIDAsU32(void); bool8 GetPriceReduction(u8 newsKind); +void sub_80F14F8(TVShow *shows); +size_t CountDigits(int value); u8 GetRibbonCount(struct Pokemon *pokemon); -void TV_PutSecretBaseVisitOnTheAir(void); -void sub_80EE184(void); +void sub_80EDE70(u16 nCoinsSpent); +void sub_80EDE84(u16 nCoinsSpent); +void sub_80EDD78(u16 nCoinsPaidOut); void sub_80EEA70(void); +void sub_80EDB44(void); +void sub_80EDC60(const u16 *words); +void sub_80EDA80(void); +void ReceivePokeNewsData(void *src, u32 size, u8 masterIdx); +void sub_80F0BB8(void); +void sub_80ED950(bool8 flag); +void sub_80EEC80(void); +void sub_80EECA4(void); +void sub_80EECC8(void); +void sub_80EECEC(void); +void sub_80F1208(TVShow *shows); +void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed); void sub_80F14F8(TVShow *shows); size_t sub_80EF370(int value); +bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language); void SetPokemonAnglerSpecies(u16 species); +void UpdateTVShowsPerDay(u16 days); +void PutPokemonTodayCaughtOnAir(void); +void TV_PutSecretBaseVisitOnTheAir(void); +void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlayer, u16 speciesOpponent); +void UpdateTVScreensOnMap(int, int); #endif //GUARD_TV_H diff --git a/include/unk_transition.h b/include/unk_transition.h new file mode 100644 index 000000000..a9caac419 --- /dev/null +++ b/include/unk_transition.h @@ -0,0 +1,13 @@ +#ifndef GUARD_UNK_TRANSITION_H +#define GUARD_UNK_TRANSITION_H + +void Phase2Task_34(u8 taskId); +void Phase2Task_35(u8 taskId); +void Phase2Task_36(u8 taskId); +void Phase2Task_37(u8 taskId); +void Phase2Task_38(u8 taskId); +void Phase2Task_39(u8 taskId); +void Phase2Task_40(u8 taskId); +void Phase2Task_41(u8 taskId); + +#endif // GUARD_UNK_TRANSITION_H diff --git a/include/unknown_task.h b/include/unknown_task.h deleted file mode 100644 index 9c6968c30..000000000 --- a/include/unknown_task.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef GUARD_unknown_task_H -#define GUARD_unknown_task_H - -// Exported type declarations -struct UnknownTaskStruct -{ - volatile void *dest; - u32 control; - u8 unk8; - u8 unk9; -}; - -extern struct UnknownTaskStruct gUnknown_0831AC70; - -// Exported RAM declarations - -// Exported ROM declarations -void remove_some_task(void); -void sub_80BA038(struct UnknownTaskStruct arg0); -void sub_80BA0A8(void); - -#endif // GUARD_unknown_task_H diff --git a/include/vars.h b/include/vars.h deleted file mode 100644 index 763b7379d..000000000 --- a/include/vars.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef GUARD_VARS_H -#define GUARD_VARS_H - -#define VAR_0x3F20 0x3F20 - -#define VAR_0x4000 0x4000 -#define VAR_0x4001 0x4001 -#define VAR_0x4002 0x4002 -#define VAR_0x4003 0x4003 -#define VAR_0x4004 0x4004 -#define VAR_0x4005 0x4005 -#define VAR_0x4006 0x4006 -#define VAR_0x4007 0x4007 -#define VAR_0x4008 0x4008 -#define VAR_0x4009 0x4009 -#define VAR_0x400A 0x400A -#define VAR_0x4010 0x4010 -#define VAR_0x4011 0x4011 -#define VAR_0x401F 0x401F -#define VAR_RECYCLE_GOODS 0x4020 -#define VAR_REPEL_STEP_COUNT 0x4021 -#define VAR_ICE_STEP_COUNT 0x4022 -#define VAR_FIRST_POKE 0x4023 -#define VAR_MIRAGE_RND_H 0x4024 -#define VAR_MIRAGE_RND_L 0x4025 -#define VAR_SECRET_BASE_MAP 0x4026 - -#define VAR_HAPPINESS_STEP_COUNTER 0x402A -#define VAR_POISON_STEP_COUNTER 0x402B -#define VAR_RESET_RTC_ENABLE 0x402C - -#define VAR_0x4037 0x4037 -#define VAR_ALTERING_CAVE_WILD_SET 0x403E -#define VAR_DAYS 0x4040 - -#define VAR_DEPT_STORE_FLOOR 0x4043 -#define VAR_STORAGE_UNKNOWN 0x4036 -#define VAR_POKELOT_PRIZE 0x4045 -#define VAR_NATIONAL_DEX 0x4046 -#define VAR_SEEDOT_SIZE_RECORD 0x4047 -#define VAR_ASH_GATHER_COUNT 0x4048 -#define VAR_BIRCH_STATE 0x4049 -#define VAR_CRUISE_STEP_COUNT 0x404A -#define VAR_POKELOT_RND1 0x404B -#define VAR_POKELOT_RND2 0x404C - -#define VAR_LOTAD_SIZE_RECORD 0x404F - -#define VAR_0x4054 0x4054 - -#define VAR_0x4089 0x4089 -#define VAR_0x4095 0x4095 -#define VAR_0x4097 0x4097 -#define VAR_0x409a 0x409a -#define VAR_PORTHOLE 0x40B4 - -#define VAR_0x40BC 0x40BC -#define VAR_0x40C2 0x40C2 - -#define VAR_FRONTIER_FACILITY 0x40CF - -#define VAR_DAILY_SLOTS 0x40E6 -#define VAR_DAILY_WILDS 0x40E7 -#define VAR_DAILY_BLENDER 0x40E8 -#define VAR_DAILY_PLANTED_BERRIES 0x40E9 -#define VAR_DAILY_PICKED_BERRIES 0x40EA -#define VAR_DAILY_ROULETTE 0x40EB -#define VAR_0x40EC 0x40EC -#define VAR_0x40ED 0x40ED -#define VAR_0x40EE 0x40EE -#define VAR_0x40EF 0x40EF -#define VAR_0x40F0 0x40F0 -#define VAR_DAILY_BP 0x40F1 - -#endif // GUARD_VARS_H diff --git a/include/wallclock.h b/include/wallclock.h new file mode 100644 index 000000000..48697c19f --- /dev/null +++ b/include/wallclock.h @@ -0,0 +1,6 @@ +#ifndef GUARD_WALLCLOCK_H +#define GUARD_WALLCLOCK_H + +void Cb2_StartWallClock(void); + +#endif //GUARD_WALLCLOCK_H diff --git a/include/window.h b/include/window.h index b630cd316..1a6ff3808 100644 --- a/include/window.h +++ b/include/window.h @@ -52,7 +52,7 @@ void PutWindowTilemap(u8 windowId); void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette); void ClearWindowTilemap(u8 windowId); void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height); -void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height); +void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height); void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight); void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset); @@ -68,5 +68,11 @@ void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, u8 *pixels, u16 srcX, u16 src void CopyWindowToVram8Bit(u8 windowId, u8 mode); extern struct Window gWindows[]; +extern void* gUnknown_03002F70[]; +extern u32 filler_03002F58; +extern u32 filler_03002F5C; +extern u32 filler_03002F64; + +extern u8 gUnknown_03002F60; #endif // GUARD_WINDOW_H |