#ifndef GUARD_CONSTANTS_MOVE_H #define GUARD_CONSTANTS_MOVE_H enum MoveFlags { MOVE_FLAG_EXISTS = 1 << 0, MOVE_FLAG_LINKED = 1 << 1, // This move is linked with the previous move in the Pokémon's moveset. MOVE_FLAG_ENABLED = 1 << 2, // Enabled for the AI to use. MOVE_FLAG_SET = 1 << 3, // This move can be triggered by pressing L+A instead of having to go to the move menu. MOVE_FLAG_LAST_USED = 1 << 4, // The most recent move used by the Pokémon. MOVE_FLAG_DISABLED = 1 << 5 // Disabled by an effect like Taunt. }; struct MoveData { u8 fill0[0x8 - 0x0]; // Determines the range of moves. /* 0x8 */ u16 targetingFlags; /* 0xA */ u16 aiTargetingFlags; // The AI consider certain moves to have different range than they actually do. /* 0xC */ u8 maxPP; /* 0xD */ u8 defaultMoveWeight; u8 fillE[0x10 - 0xE]; // Used by the AI to determine how often to use Spikes. // Values exist for all other moves, though they seem to be unused. /* 0x10 */ u8 moveUseChance; u8 fill11[0x17 - 0x11]; /* 0x17 */ bool8 cannotHitFrozen; // Used by Status Checker to determine if a move can be used on a frozen target. /* 0x18 */ bool8 dealsDirectDamage; }; struct PokemonMove { u8 moveFlags; bool8 sealed; u16 moveID; u8 pp; u8 powerBoost; // How much the move is boosted by Ginsengs. }; enum TargetingFlag { TARGETING_FLAG_TARGET_OTHER = 0x0, TARGETING_FLAG_HEAL_TEAM = 0x1, TARGETING_FLAG_SWAP_POSITIONS = 0x2, TARGETING_FLAG_ATTACK_ALL = 0x5, TARGETING_FLAG_BOOST_TEAM = 0x6, TARGETING_FLAG_DONT_USE = 0xF, TARGETING_FLAG_TARGET_FRONTAL_CONE = 0x10, TARGETING_FLAG_TARGET_AROUND = 0x20, TARGETING_FLAG_TARGET_ROOM = 0x30, TARGETING_FLAG_TARGET_2_TILES_AHEAD = 0x40, TARGETING_FLAG_TARGET_LINE = 0x50, TARGETING_FLAG_TARGET_FLOOR = 0x60, TARGETING_FLAG_SELF_HEAL = 0x70, TARGETING_FLAG_CUT_CORNERS = 0x80, TARGETING_FLAG_SET_TRAP = 0x100, TARGETING_FLAG_HEAL_HP = 0x200, TARGETING_FLAG_HEAL_STATUS = 0x300, TARGETING_FLAG_DREAM_EATER = 0x400, TARGETING_FLAG_HEAL_ALL = 0x500, TARGETING_FLAG_EXPOSE = 0x600, }; enum MoveID { MOVE_IRON_TAIL = 0x1, MOVE_ICE_BALL = 0x2, MOVE_YAWN = 0x3, MOVE_LOVELY_KISS = 0x4, MOVE_NIGHTMARE = 0x5, MOVE_MORNING_SUN = 0x6, MOVE_VITAL_THROW = 0x7, MOVE_DIG = 0x8, MOVE_THRASH = 0x9, MOVE_SWEET_SCENT = 0xA, MOVE_CHARM = 0xB, MOVE_RAIN_DANCE = 0xC, MOVE_CONFUSE_RAY = 0xD, MOVE_HAIL = 0xE, MOVE_AROMATHERAPY = 0xF, MOVE_BUBBLE = 0x10, MOVE_ENCORE = 0x11, MOVE_CUT = 0x12, MOVE_RAGE = 0x13, MOVE_SUPER_FANG = 0x14, MOVE_PAIN_SPLIT = 0x15, MOVE_TORMENT = 0x16, MOVE_STRING_SHOT = 0x17, MOVE_SWAGGER = 0x18, MOVE_SNORE = 0x19, MOVE_HEAL_BELL = 0x1A, MOVE_SCREECH = 0x1B, MOVE_ROCK_THROW = 0x1C, MOVE_ROCK_SMASH = 0x1D, MOVE_ROCK_SLIDE = 0x1E, MOVE_WEATHER_BALL = 0x1F, MOVE_WHIRLPOOL = 0x20, MOVE_FAKE_TEARS = 0x21, MOVE_SING = 0x22, MOVE_SPITE = 0x23, MOVE_AIR_CUTTER = 0x24, MOVE_SMOKESCREEN = 0x25, MOVE_PURSUIT = 0x26, MOVE_DOUBLESLAP = 0x27, MOVE_MIRROR_MOVE = 0x28, MOVE_OVERHEAT = 0x29, MOVE_AURORA_BEAM = 0x2A, MOVE_MEMENTO = 0x2B, MOVE_OCTAZOOKA = 0x2C, MOVE_FLATTER = 0x2D, MOVE_ASTONISH = 0x2E, MOVE_WILL_O_WISP = 0x2F, MOVE_RETURN = 0x30, MOVE_GRUDGE = 0x31, MOVE_STRENGTH = 0x32, MOVE_COUNTER = 0x33, MOVE_FLAME_WHEEL = 0x34, MOVE_FLAMETHROWER = 0x35, MOVE_ODOR_SLEUTH = 0x36, MOVE_SHARPEN = 0x37, MOVE_DOUBLE_TEAM = 0x38, MOVE_GUST = 0x39, MOVE_HARDEN = 0x3A, MOVE_DISABLE = 0x3B, MOVE_RAZOR_WIND = 0x3C, MOVE_BIDE = 0x3D, MOVE_CRUNCH = 0x3E, MOVE_BITE = 0x3F, MOVE_THUNDER = 0x40, MOVE_THUNDERPUNCH = 0x41, MOVE_ENDEAVOR = 0x42, MOVE_FACADE = 0x43, MOVE_KARATE_CHOP = 0x44, MOVE_CLAMP = 0x45, MOVE_WITHDRAW = 0x46, MOVE_CONSTRICT = 0x47, MOVE_BRICK_BREAK = 0x48, MOVE_ROCK_TOMB = 0x49, MOVE_FOCUS_ENERGY = 0x4A, MOVE_FOCUS_PUNCH = 0x4B, MOVE_GIGA_DRAIN = 0x4C, MOVE_REVERSAL = 0x4D, MOVE_SMELLINGSALT = 0x4E, MOVE_SPORE = 0x4F, MOVE_LEECH_LIFE = 0x50, MOVE_SLASH = 0x51, MOVE_SILVER_WIND = 0x52, MOVE_METAL_SOUND = 0x53, MOVE_GRASSWHISTLE = 0x54, MOVE_TICKLE = 0x55, MOVE_SPIDER_WEB = 0x56, MOVE_CRABHAMMER = 0x57, MOVE_HAZE = 0x58, MOVE_MEAN_LOOK = 0x59, MOVE_CROSS_CHOP = 0x5A, MOVE_OUTRAGE = 0x5B, MOVE_LOW_KICK = 0x5C, MOVE_ANCIENTPOWER = 0x5D, MOVE_SYNTHESIS = 0x5E, MOVE_AGILITY = 0x5F, MOVE_RAPID_SPIN = 0x60, MOVE_ICY_WIND = 0x61, MOVE_MIND_READER = 0x62, MOVE_COSMIC_POWER = 0x63, MOVE_SKY_ATTACK = 0x64, MOVE_POWDER_SNOW = 0x65, MOVE_FOLLOW_ME = 0x66, MOVE_METEOR_MASH = 0x67, MOVE_ENDURE = 0x68, MOVE_ROLLOUT = 0x69, MOVE_SCARY_FACE = 0x6A, MOVE_PSYBEAM = 0x6B, MOVE_PSYWAVE = 0x6C, MOVE_PSYCHIC = 0x6D, MOVE_PSYCHO_BOOST = 0x6E, MOVE_HYPNOSIS = 0x6F, MOVE_UPROAR = 0x70, MOVE_WATER_SPOUT = 0x71, MOVE_SIGNAL_BEAM = 0x72, MOVE_PSYCH_UP = 0x73, MOVE_SUBMISSION = 0x74, MOVE_RECOVER = 0x75, MOVE_EARTHQUAKE = 0x76, MOVE_NATURE_POWER = 0x77, MOVE_LICK = 0x78, MOVE_FLAIL = 0x79, MOVE_TAIL_WHIP = 0x7A, MOVE_SELFDESTRUCT = 0x7B, MOVE_STUN_SPORE = 0x7C, MOVE_BIND = 0x7D, MOVE_SHADOW_PUNCH = 0x7E, MOVE_SHADOW_BALL = 0x7F, MOVE_CHARGE = 0x80, MOVE_THUNDERBOLT = 0x81, MOVE_MIST = 0x82, MOVE_FISSURE = 0x83, MOVE_EXTREMESPEED = 0x84, MOVE_EXTRASENSORY = 0x85, MOVE_SAFEGUARD = 0x86, MOVE_ABSORB = 0x87, MOVE_SKY_UPPERCUT = 0x88, MOVE_SKILL_SWAP = 0x89, MOVE_SKETCH = 0x8A, MOVE_HEADBUTT = 0x8B, MOVE_DOUBLE_EDGE = 0x8C, MOVE_SANDSTORM = 0x8D, MOVE_SAND_ATTACK = 0x8E, MOVE_SAND_TOMB = 0x8F, MOVE_SPARK = 0x90, MOVE_SWIFT = 0x91, MOVE_KINESIS = 0x92, MOVE_SMOG = 0x93, MOVE_GROWTH = 0x94, MOVE_SACRED_FIRE = 0x95, MOVE_SHEER_COLD = 0x96, MOVE_SOLARBEAM = 0x97, MOVE_SONICBOOM = 0x98, MOVE_FLY = 0x99, MOVE_TACKLE = 0x9A, MOVE_EXPLOSION = 0x9B, MOVE_DIVE = 0x9C, MOVE_FIRE_BLAST = 0x9D, MOVE_WATERFALL = 0x9E, MOVE_MUDDY_WATER = 0x9F, MOVE_STOCKPILE = 0xA0, MOVE_SLAM = 0xA1, MOVE_TWISTER = 0xA2, MOVE_BULLET_SEED = 0xA3, MOVE_TWINEEDLE = 0xA4, MOVE_SOFTBOILED = 0xA5, MOVE_EGG_BOMB = 0xA6, MOVE_FAINT_ATTACK = 0xA7, MOVE_BARRAGE = 0xA8, MOVE_MINIMIZE = 0xA9, MOVE_SEISMIC_TOSS = 0xAA, MOVE_SUPERSONIC = 0xAB, MOVE_TAUNT = 0xAC, MOVE_MOONLIGHT = 0xAD, MOVE_PECK = 0xAE, MOVE_ARM_THRUST = 0xAF, MOVE_HORN_ATTACK = 0xB0, MOVE_HORN_DRILL = 0xB1, MOVE_WING_ATTACK = 0xB2, MOVE_AERIAL_ACE = 0xB3, MOVE_ICICLE_SPEAR = 0xB4, MOVE_SWORDS_DANCE = 0xB5, MOVE_VINE_WHIP = 0xB6, MOVE_CONVERSION = 0xB7, MOVE_CONVERSION_2 = 0xB8, MOVE_HELPING_HAND = 0xB9, MOVE_IRON_DEFENSE = 0xBA, MOVE_TELEPORT = 0xBB, MOVE_THUNDERSHOCK = 0xBC, MOVE_SHOCK_WAVE = 0xBD, MOVE_QUICK_ATTACK = 0xBE, MOVE_SWEET_KISS = 0xBF, MOVE_THUNDER_WAVE = 0xC0, MOVE_ZAP_CANNON = 0xC1, MOVE_BLOCK = 0xC2, MOVE_HOWL = 0xC3, MOVE_POISON_GAS = 0xC4, MOVE_TOXIC = 0xC5, MOVE_POISON_FANG = 0xC6, MOVE_POISONPOWDER = 0xC7, MOVE_POISON_STING = 0xC8, MOVE_SPIKE_CANNON = 0xC9, MOVE_ACID_ARMOR = 0xCA, MOVE_TAKE_DOWN = 0xCB, MOVE_JUMP_KICK = 0xCC, MOVE_BOUNCE = 0xCD, MOVE_HI_JUMP_KICK = 0xCE, MOVE_TRI_ATTACK = 0xCF, MOVE_DRAGON_CLAW = 0xD0, MOVE_TRICK = 0xD1, MOVE_TRIPLE_KICK = 0xD2, MOVE_DRILL_PECK = 0xD3, MOVE_MUD_SPORT = 0xD4, MOVE_MUD_SLAP = 0xD5, MOVE_THIEF = 0xD6, MOVE_AMNESIA = 0xD7, MOVE_NIGHT_SHADE = 0xD8, MOVE_GROWL = 0xD9, MOVE_SLACK_OFF = 0xDA, MOVE_SURF = 0xDB, MOVE_ROLE_PLAY = 0xDC, MOVE_NEEDLE_ARM = 0xDD, MOVE_DOUBLE_KICK = 0xDE, MOVE_SUNNY_DAY = 0xDF, MOVE_LEER = 0xE0, MOVE_WISH = 0xE1, MOVE_FAKE_OUT = 0xE2, MOVE_SLEEP_TALK = 0xE3, MOVE_PAY_DAY = 0xE4, MOVE_ASSIST = 0xE5, MOVE_HEAT_WAVE = 0xE6, MOVE_SLEEP_POWDER = 0xE7, MOVE_REST = 0xE8, MOVE_INGRAIN = 0xE9, MOVE_CONFUSION = 0xEA, MOVE_BODY_SLAM = 0xEB, MOVE_SWALLOW = 0xEC, MOVE_CURSE = 0xED, MOVE_FRENZY_PLANT = 0xEE, MOVE_HYDRO_CANNON = 0xEF, MOVE_HYDRO_PUMP = 0xF0, MOVE_HYPER_VOICE = 0xF1, MOVE_HYPER_BEAM = 0xF2, MOVE_SUPERPOWER = 0xF3, MOVE_STEEL_WING = 0xF4, MOVE_SPIT_UP = 0xF5, MOVE_DYNAMICPUNCH = 0xF6, MOVE_GUILLOTINE = 0xF7, MOVE_VICEGRIP = 0xF8, MOVE_KNOCK_OFF = 0xF9, MOVE_POUND = 0xFA, MOVE_RAZOR_LEAF = 0xFB, MOVE_BATON_PASS = 0xFC, MOVE_PETAL_DANCE = 0xFD, MOVE_SPLASH = 0xFE, MOVE_BUBBLEBEAM = 0xFF, MOVE_DOOM_DESIRE = 0x100, MOVE_BELLY_DRUM = 0x101, MOVE_BARRIER = 0x102, MOVE_LIGHT_SCREEN = 0x103, MOVE_SCRATCH = 0x104, MOVE_HYPER_FANG = 0x105, MOVE_EMBER = 0x106, MOVE_SECRET_POWER = 0x107, MOVE_DIZZY_PUNCH = 0x108, MOVE_BULK_UP = 0x109, MOVE_IMPRISON = 0x10A, MOVE_FEATHERDANCE = 0x10B, MOVE_WHIRLWIND = 0x10C, MOVE_BEAT_UP = 0x10D, MOVE_BLIZZARD = 0x10E, MOVE_STOMP = 0x10F, MOVE_BLAST_BURN = 0x110, MOVE_FLASH = 0x111, MOVE_TEETER_DANCE = 0x112, MOVE_CRUSH_CLAW = 0x113, MOVE_BLAZE_KICK = 0x114, MOVE_PRESENT = 0x115, MOVE_ERUPTION = 0x116, MOVE_SLUDGE = 0x117, MOVE_SLUDGE_BOMB = 0x118, MOVE_GLARE = 0x119, MOVE_TRANSFORM = 0x11A, MOVE_POISON_TAIL = 0x11B, MOVE_ROAR = 0x11C, MOVE_BONE_RUSH = 0x11D, MOVE_CAMOUFLAGE = 0x11E, MOVE_COVET = 0x11F, MOVE_TAIL_GLOW = 0x120, MOVE_BONE_CLUB = 0x121, MOVE_BONEMERANG = 0x122, MOVE_FIRE_SPIN = 0x123, MOVE_FIRE_PUNCH = 0x124, MOVE_PERISH_SONG = 0x125, MOVE_WRAP = 0x126, MOVE_SPIKES = 0x127, MOVE_MAGNITUDE = 0x128, MOVE_MAGICAL_LEAF = 0x129, MOVE_MAGIC_COAT = 0x12A, MOVE_MUD_SHOT = 0x12B, MOVE_MACH_PUNCH = 0x12C, MOVE_PROTECT = 0x12D, MOVE_DEFENSE_CURL = 0x12E, MOVE_ROLLING_KICK = 0x12F, MOVE_SUBSTITUTE = 0x130, MOVE_DETECT = 0x131, MOVE_PIN_MISSILE = 0x132, MOVE_WATER_SPORT = 0x133, MOVE_WATER_GUN = 0x134, MOVE_MIST_BALL = 0x135, MOVE_WATER_PULSE = 0x136, MOVE_FURY_ATTACK = 0x137, MOVE_FURY_SWIPES = 0x138, MOVE_DESTINY_BOND = 0x139, MOVE_FALSE_SWIPE = 0x13A, MOVE_FORESIGHT = 0x13B, MOVE_MIRROR_COAT = 0x13C, MOVE_FUTURE_SIGHT = 0x13D, MOVE_MILK_DRINK = 0x13E, MOVE_CALM_MIND = 0x13F, MOVE_MEGA_DRAIN = 0x140, MOVE_MEGA_KICK = 0x141, MOVE_MEGA_PUNCH = 0x142, MOVE_MEGAHORN = 0x143, MOVE_HIDDEN_POWER = 0x144, MOVE_METAL_CLAW = 0x145, MOVE_ATTRACT = 0x146, MOVE_MIMIC = 0x147, MOVE_FRUSTRATION = 0x148, MOVE_LEECH_SEED = 0x149, MOVE_METRONOME = 0x14A, MOVE_DREAM_EATER = 0x14B, MOVE_ACID = 0x14C, MOVE_MEDITATE = 0x14D, MOVE_SNATCH = 0x14E, MOVE_LUSTER_PURGE = 0x14F, MOVE_LEAF_BLADE = 0x150, MOVE_RECYCLE = 0x151, MOVE_REFLECT = 0x152, MOVE_REFRESH = 0x153, MOVE_REVENGE = 0x154, MOVE_DRAGON_RAGE = 0x155, MOVE_DRAGONBREATH = 0x156, MOVE_DRAGON_DANCE = 0x157, MOVE_ICE_PUNCH = 0x158, MOVE_ICE_BEAM = 0x159, MOVE_FURY_CUTTER = 0x15A, MOVE_COMET_PUNCH = 0x15B, MOVE_SKULL_BASH = 0x15C, MOVE_LOCK_ON = 0x15D, MOVE_ROCK_BLAST = 0x15E, MOVE_COTTON_SPORE = 0x15F, MOVE_STRUGGLE = 0x160, MOVE_AEROBLAST = 0x161, MOVE_VOLT_TACKLE = 0x162, MOVE_REGULAR_ATTACK = 0x163, MOVE_WIDE_SLASH = 0x168, MOVE_EXCAVATE = 0x169, // Unused MOVE_SPIN_SLASH = 0x16A, // Unused // Orb effects MOVE_SEE_TRAP = 0x16B, MOVE_TAKEAWAY = 0x16C, MOVE_REBOUND = 0x16D, MOVE_BLOOP_SLASH = 0x16E, MOVE_SWITCHER = 0x16F, MOVE_BLOWBACK = 0x170, MOVE_WARP = 0x171, MOVE_TRANSFER = 0x172, MOVE_SLOW_DOWN = 0x173, MOVE_SPEED_BOOST = 0x174, MOVE_SEARCHLIGHT = 0x175, MOVE_PETRIFY = 0x176, MOVE_STAY_AWAY = 0x177, MOVE_POUNCE = 0x178, MOVE_TRAWL = 0x179, MOVE_CLEANSE = 0x17A, MOVE_OBSERVER = 0x17B, MOVE_DECOY_MAKER = 0x17C, MOVE_SIESTA = 0x17D, MOVE_TOTTER = 0x17E, MOVE_TWO_EDGE = 0x17F, MOVE_NO_MOVE = 0x180, MOVE_ESCAPE = 0x181, MOVE_SCAN = 0x182, MOVE_POWER_EARS = 0x183, MOVE_DROUGHT = 0x184, MOVE_TRAP_BUSTER = 0x185, MOVE_WILD_CALL = 0x186, MOVE_INVISIFY = 0x187, MOVE_ONE_SHOT = 0x188, MOVE_HP_GAUGE = 0x189, MOVE_VACUUM_CUT = 0x18A, MOVE_REVIVER = 0x18B, MOVE_SHOCKER = 0x18C, MOVE_ECHO = 0x18D, MOVE_FAMISH = 0x18E, MOVE_ONE_ROOM = 0x18F, MOVE_FILL_IN = 0x190, MOVE_TRAPPER = 0x191, MOVE_POSSESS = 0x192, MOVE_ITEMIZE = 0x193, MOVE_HURL = 0x196, MOVE_MOBILE = 0x197, MOVE_ITEM_TOSS = 0x198, MOVE_SEE_STAIRS = 0x199, MOVE_LONG_TOSS = 0x19A, MOVE_PIERCE = 0x19B }; #endif