mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-29 12:27:20 -05:00
Defined more in-dungeon structs and enums (#53)
* Defined DungeonEntity * Rename EntityType enums * Revert EntityType rename * Defined more in-dungeon structs and enums * Added more dungeon global structs/enums * Prefixed dungeonGlobalData with g * Fixed compile errors * Removed some CRLFs * Fixed compile after merge * Revert Makefile * Rename DungeonEntityData.entityType Co-authored-by: Seth Barberee <seth.barberee@gmail.com> * Renamed symbols per PR comments Co-authored-by: Cheng Hann Gan <chenghann_gan@ultimatesoftware.com> Co-authored-by: Seth Barberee <seth.barberee@gmail.com>
This commit is contained in:
84
include/constants/ability.h
Normal file
84
include/constants/ability.h
Normal file
@@ -0,0 +1,84 @@
|
||||
#ifndef GUARD_CONSTANTS_ABILITY_H
|
||||
#define GUARD_CONSTANTS_ABILITY_H
|
||||
|
||||
enum Ability
|
||||
{
|
||||
ABILITY_STENCH = 0x1,
|
||||
ABILITY_THICK_FAT = 0x2,
|
||||
ABILITY_RAIN_DISH = 0x3,
|
||||
ABILITY_DRIZZLE = 0x4,
|
||||
ABILITY_ARENA_TRAP = 0x5,
|
||||
ABILITY_INTIMIDATE = 0x6,
|
||||
ABILITY_ROCK_HEAD = 0x7,
|
||||
ABILITY_AIR_LOCK = 0x8,
|
||||
ABILITY_HYPER_CUTTER = 0x9,
|
||||
ABILITY_SHADOW_TAG = 0xA,
|
||||
ABILITY_SPEED_BOOST = 0xB,
|
||||
ABILITY_BATTLE_ARMOR = 0xC,
|
||||
ABILITY_STURDY = 0xD,
|
||||
ABILITY_SUCTION_CUPS = 0xE,
|
||||
ABILITY_CLEAR_BODY = 0xF,
|
||||
ABILITY_TORRENT = 0x10,
|
||||
ABILITY_GUTS = 0x11,
|
||||
ABILITY_ROUGH_SKIN = 0x12,
|
||||
ABILITY_SHELL_ARMOR = 0x13,
|
||||
ABILITY_NATURAL_CURE = 0x14,
|
||||
ABILITY_DAMP = 0x15,
|
||||
ABILITY_LIMBER = 0x16,
|
||||
ABILITY_MAGNET_PULL = 0x17,
|
||||
ABILITY_WHITE_SMOKE = 0x18,
|
||||
ABILITY_SYNCHRONIZE = 0x19,
|
||||
ABILITY_OVERGROW = 0x1A,
|
||||
ABILITY_SWIFT_SWIM = 0x1B,
|
||||
ABILITY_SAND_STREAM = 0x1C,
|
||||
ABILITY_SAND_VEIL = 0x1D,
|
||||
ABILITY_KEEN_EYE = 0x1E,
|
||||
ABILITY_INNER_FOCUS = 0x1F,
|
||||
ABILITY_STATIC = 0x20,
|
||||
ABILITY_SHED_SKIN = 0x21,
|
||||
ABILITY_HUGE_POWER = 0x22,
|
||||
ABILITY_VOLT_ABSORB = 0x23,
|
||||
ABILITY_WATER_ABSORB = 0x24,
|
||||
ABILITY_FORECAST = 0x25,
|
||||
ABILITY_SERENE_GRACE = 0x26,
|
||||
ABILITY_POISON_POINT = 0x27,
|
||||
ABILITY_TRACE = 0x28,
|
||||
ABILITY_OBLIVIOUS = 0x29,
|
||||
ABILITY_TRUANT = 0x2A,
|
||||
ABILITY_RUN_AWAY = 0x2B,
|
||||
ABILITY_STICKY_HOLD = 0x2C,
|
||||
ABILITY_CLOUD_NINE = 0x2D,
|
||||
ABILITY_ILLUMINATE = 0x2E,
|
||||
ABILITY_EARLY_BIRD = 0x2F,
|
||||
ABILITY_HUSTLE = 0x30,
|
||||
ABILITY_DROUGHT = 0x31,
|
||||
ABILITY_LIGHTNINGROD = 0x32,
|
||||
ABILITY_COMPOUNDEYES = 0x33,
|
||||
ABILITY_MARVEL_SCALE = 0x34,
|
||||
ABILITY_WONDER_GUARD = 0x35,
|
||||
ABILITY_INSOMNIA = 0x36,
|
||||
ABILITY_LEVITATE = 0x37,
|
||||
ABILITY_PLUS = 0x38,
|
||||
ABILITY_PRESSURE = 0x39,
|
||||
ABILITY_LIQUID_OOZE = 0x3A,
|
||||
ABILITY_COLOR_CHANGE = 0x3B,
|
||||
ABILITY_SOUNDPROOF = 0x3C,
|
||||
ABILITY_EFFECT_SPORE = 0x3D,
|
||||
ABILITY_FLAME_BODY = 0x3E,
|
||||
ABILITY_MINUS = 0x3F,
|
||||
ABILITY_OWN_TEMPO = 0x40,
|
||||
ABILITY_MAGMA_ARMOR = 0x41,
|
||||
ABILITY_WATER_VEIL = 0x42,
|
||||
ABILITY_SWARM = 0x43,
|
||||
ABILITY_CUTE_CHARM = 0x44,
|
||||
ABILITY_IMMUNITY = 0x45,
|
||||
ABILITY_BLAZE = 0x46,
|
||||
ABILITY_PICKUP = 0x47,
|
||||
ABILITY_FLASH_FIRE = 0x48,
|
||||
ABILITY_VITAL_SPIRIT = 0x49,
|
||||
ABILITY_CHLOROPHYLL = 0x4A,
|
||||
ABILITY_PURE_POWER = 0x4B,
|
||||
ABILITY_SHIELD_DUST = 0x4C
|
||||
};
|
||||
|
||||
#endif
|
||||
16
include/constants/direction.h
Normal file
16
include/constants/direction.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#ifndef GUARD_CONSTANTS_DIRECTION_H
|
||||
#define GUARD_CONSTANTS_DIRECTION_H
|
||||
|
||||
enum Direction
|
||||
{
|
||||
DIRECTION_SOUTH,
|
||||
DIRECTION_SOUTHEAST,
|
||||
DIRECTION_EAST,
|
||||
DIRECTION_NORTHEAST,
|
||||
DIRECTION_NORTH,
|
||||
DIRECTION_NORTHWEST,
|
||||
DIRECTION_WEST,
|
||||
DIRECTION_SOUTHWEST
|
||||
};
|
||||
|
||||
#endif
|
||||
106
include/constants/dungeon.h
Normal file
106
include/constants/dungeon.h
Normal file
@@ -0,0 +1,106 @@
|
||||
#ifndef GUARD_CONSTANTS_DUNGEON_H
|
||||
#define GUARD_CONSTANTS_DUNGEON_H
|
||||
|
||||
enum Dungeon
|
||||
{
|
||||
DUNGEON_TINY_WOODS = 0,
|
||||
DUNGEON_THUNDERWAVE_CAVE = 1,
|
||||
DUNGEON_MT_STEEL = 2,
|
||||
DUNGEON_SINISTER_WOODS = 3,
|
||||
DUNGEON_SILENT_CHASM = 4,
|
||||
DUNGEON_MT_THUNDER = 5,
|
||||
DUNGEON_MT_THUNDER_PEAK = 6,
|
||||
DUNGEON_GREAT_CANYON = 7,
|
||||
DUNGEON_LAPIS_CAVE = 8,
|
||||
DUNGEON_MT_BLAZE = 9,
|
||||
DUNGEON_MT_BLAZE_PEAK = 10,
|
||||
DUNGEON_FROSTY_FOREST = 11,
|
||||
DUNGEON_FROSTY_GROTTO = 12,
|
||||
DUNGEON_MT_FREEZE = 13,
|
||||
DUNGEON_MT_FREEZE_PEAK = 14,
|
||||
DUNGEON_MAGMA_CAVERN = 15,
|
||||
DUNGEON_MAGMA_CAVERN_PIT = 16,
|
||||
DUNGEON_SKY_TOWER = 17,
|
||||
DUNGEON_SKY_TOWER_SUMMIT = 18,
|
||||
DUNGEON_STORMY_SEA = 19,
|
||||
DUNGEON_SILVER_TRENCH = 20,
|
||||
DUNGEON_METEOR_CAVE = 21,
|
||||
DUNGEON_MT_FREEZE_PEAK_2 = 22, // Duplicate
|
||||
DUNGEON_WESTERN_CAVE = 23,
|
||||
DUNGEON_BOSS_3 = 24,
|
||||
DUNGEON_BOSS_4 = 25,
|
||||
DUNGEON_WISH_CAVE = 26,
|
||||
DUNGEON_BURIED_RELIC = 27,
|
||||
DUNGEON_PITFALL_VALLEY = 28,
|
||||
DUNGEON_NORTHERN_RANGE = 29,
|
||||
DUNGEON_BOSS_9 = 30,
|
||||
DUNGEON_DESERT_REGION = 31,
|
||||
DUNGEON_SOUTHERN_CAVERN = 32,
|
||||
DUNGEON_WYVERN_HILL = 33,
|
||||
DUNGEON_FIERY_FIELD = 34,
|
||||
DUNGEON_NORTHWIND_FIELD = 35,
|
||||
DUNGEON_SOLAR_CAVE = 36,
|
||||
DUNGEON_LIGHTNING_FIELD = 37,
|
||||
DUNGEON_DARKNIGHT_RELIC = 38,
|
||||
DUNGEON_WONDROUS_SEA = 39,
|
||||
DUNGEON_MURKY_CAVE = 40,
|
||||
DUNGEON_GRAND_SEA = 41,
|
||||
DUNGEON_UPROAR_FOREST = 42,
|
||||
DUNGEON_ODDITY_CAVE = 43,
|
||||
DUNGEON_REMAINS_ISLAND = 44,
|
||||
DUNGEON_MARVELOUS_SEA = 45,
|
||||
DUNGEON_FANTASY_STRAIT = 46,
|
||||
DUNGEON_ROCK_PATH = 47,
|
||||
DUNGEON_SNOW_PATH = 48,
|
||||
DUNGEON_AUTOPILOT = 49,
|
||||
DUNGEON_D50 = 50,
|
||||
DUNGEON_D51 = 51,
|
||||
DUNGEON_NORMAL_MAZE = 52,
|
||||
DUNGEON_HOWLING_FOREST = 53,
|
||||
DUNGEON_D54 = 54,
|
||||
DUNGEON_POISON_MAZE = 55,
|
||||
DUNGEON_WATERFALL_POND = 56,
|
||||
DUNGEON_UNKNOWN_RELIC = 57,
|
||||
DUNGEON_JOYOUS_TOWER = 58,
|
||||
DUNGEON_FAR_OFF_SEA = 59,
|
||||
DUNGEON_MT_FARAWAY = 60,
|
||||
DUNGEON_D61 = 61,
|
||||
DUNGEON_PURITY_FOREST = 62,
|
||||
DUNGEON_OUT_ON_RESCUE = 63,
|
||||
DUNGEON_JOIN_LOCATION_LEADER = 64, // Displays as "???".
|
||||
DUNGEON_JOIN_LOCATION_PARTNER = 65, // Displays as "Tiny Woods".
|
||||
DUNGEON_UNKNOWN_WORLD = 66,
|
||||
DUNGEON_FROSTY_GROTTO_2 = 67, // Duplicate
|
||||
DUNGEON_HOWLING_FOREST_2 = 68, // Duplicate
|
||||
DUNGEON_POKEMON_SQUARE = 69,
|
||||
DUNGEON_POKEMON_SQUARE_2 = 70, // Duplicate
|
||||
DUNGEON_RESCUE_TEAM_BASE = 71,
|
||||
DUNGEON_RESCUE_TEAM_BASE_2 = 72, // Duplicate
|
||||
DUNGEON_AGB_SLOT = 73,
|
||||
DUNGEON_JOIN_LOCATION_CLIENT_POKEMON = 74,
|
||||
DUNGEON_NORMAL_MAZE_2 = 75, // Duplicate
|
||||
DUNGEON_FIRE_MAZE = 76,
|
||||
DUNGEON_WATER_MAZE = 77,
|
||||
DUNGEON_GRASS_MAZE = 78,
|
||||
DUNGEON_ELECTRIC_MAZE = 79,
|
||||
DUNGEON_ICE_MAZE = 80,
|
||||
DUNGEON_FIGHTING_MAZE = 81,
|
||||
DUNGEON_GROUND_MAZE = 82,
|
||||
DUNGEON_FLYING_MAZE = 83,
|
||||
DUNGEON_PSYCHIC_MAZE = 84,
|
||||
DUNGEON_POISON_MAZE_2 = 85, // Duplicate
|
||||
DUNGEON_BUG_MAZE = 86,
|
||||
DUNGEON_ROCK_MAZE = 87,
|
||||
DUNGEON_GHOST_MAZE = 88,
|
||||
DUNGEON_DRAGON_MAZE = 89,
|
||||
DUNGEON_DARK_MAZE = 90,
|
||||
DUNGEON_STEEL_MAZE = 91,
|
||||
DUNGEON_TEAM_SHIFTY = 92,
|
||||
DUNGEON_TEAM_CONSTRICTOR = 93,
|
||||
DUNGEON_TEAM_HYDRO = 94,
|
||||
DUNGEON_TEAM_RUMBLEROCK = 95,
|
||||
DUNGEON_RESCUE_TEAM_2 = 96,
|
||||
DUNGEON_RESCUE_TEAM_MAZE = 97,
|
||||
};
|
||||
|
||||
#endif
|
||||
44
include/constants/dungeon_action.h
Normal file
44
include/constants/dungeon_action.h
Normal file
@@ -0,0 +1,44 @@
|
||||
#ifndef GUARD_CONSTANTS_DUNGEON_ACTION_H
|
||||
#define GUARD_CONSTANTS_DUNGEON_ACTION_H
|
||||
|
||||
enum DungeonAction
|
||||
{
|
||||
DUNGEON_ACTION_WAIT = 0x1,
|
||||
DUNGEON_ACTION_WALK = 0x2,
|
||||
// Switching between Pokémon in the moves menu.
|
||||
DUNGEON_ACTION_NEXT_POKEMON_MOVES = 0x6,
|
||||
DUNGEON_ACTION_PREVIOUS_POKEMON_MOVES = 0x7,
|
||||
DUNGEON_ACTION_PLACE_ITEM = 0x8,
|
||||
// Some actions are different between the leader and AI-controlled Pokémon.
|
||||
DUNGEON_ACTION_TAKE_ITEM_LEADER = 0x9, // Picking up an item underfoot.
|
||||
DUNGEON_ACTION_THROW_ITEM_LEADER = 0xB,
|
||||
DUNGEON_ACTION_CONSUME_ITEM_LEADER = 0xD,
|
||||
DUNGEON_ACTION_USE_ITEM_LEADER = 0x12,
|
||||
DUNGEON_ACTION_TALK_FIELD = 0x13, // Talking to another Pokémon by facing them and interacting.
|
||||
DUNGEON_ACTION_USE_MOVE_LEADER = 0x14,
|
||||
DUNGEON_ACTION_USE_MOVE_AI = 0x15,
|
||||
DUNGEON_ACTION_STRUGGLE = 0x17, // Using the Struggle move.
|
||||
DUNGEON_ACTION_CHECK_MOVES = 0x19,
|
||||
DUNGEON_ACTION_CHANGE_TACTICS = 0x1A,
|
||||
DUNGEON_ACTION_CHECK_POKEMON_SUMMARY = 0x1B,
|
||||
DUNGEON_ACTION_TALK_MENU = 0x1C, // Talking to another Pokémon via the menu.
|
||||
DUNGEON_ACTION_SET_MOVE = 0x1E, // Registering a move.
|
||||
DUNGEON_ACTION_CONSUME_ITEM_AI = 0x23,
|
||||
DUNGEON_ACTION_THROW_ITEM_AI = 0x24,
|
||||
DUNGEON_ACTION_THROW_STRAIGHT_THROWN_ITEM_LEADER = 0x27,
|
||||
DUNGEON_ACTION_USE_LINK_BOX = 0x2C,
|
||||
DUNGEON_ACTION_GIVE_UP = 0x2E,
|
||||
DUNGEON_ACTION_CHANGE_IQ_SKILLS = 0x30,
|
||||
DUNGEON_ACTION_USE_ORB = 0x31,
|
||||
DUNGEON_ACTION_REGULAR_ATTACK = 0x32,
|
||||
DUNGEON_ACTION_UNSET_MOVE = 0x33,
|
||||
DUNGEON_ACTION_GIVE_HELD_ITEM = 0x36,
|
||||
DUNGEON_ACTION_TAKE_HELD_ITEM = 0x37,
|
||||
DUNGEON_ACTION_HAVE_SECOND_THOUGHTS = 0x39, // Happens with invalid actions, like attempting to eat a non-consumable item.
|
||||
DUNGEON_ACTION_SET_ITEM = 0x3C,
|
||||
DUNGEON_ACTION_UNSET_ITEM = 0x3D,
|
||||
DUNGEON_ACTION_TAKE_ITEM_AI = 0x3F,
|
||||
DUNGEON_ACTION_THROW_ARC_THROWN_ITEM_LEADER = 0x41, // Throwing Gravelerocks and Geo Pebbles.
|
||||
};
|
||||
|
||||
#endif
|
||||
31
include/constants/iq_skill.h
Normal file
31
include/constants/iq_skill.h
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef GUARD_CONSTANTS_IQ_SKILL_H
|
||||
#define GUARD_CONSTANTS_IQ_SKILL_H
|
||||
|
||||
enum IQSkill
|
||||
{
|
||||
IQ_SKILL_TYPE_ADVANTAGE_MASTER = 0x1,
|
||||
IQ_SKILL_ITEM_CATCHER = 0x2,
|
||||
IQ_SKILL_COURSE_CHECKER = 0x3,
|
||||
IQ_SKILL_SURE_HIT_ATTACKER = 0x4,
|
||||
IQ_SKILL_QUICK_DODGER = 0x5,
|
||||
IQ_SKILL_PP_CHECKER = 0x6,
|
||||
IQ_SKILL_NONTRAITOR = 0x7,
|
||||
IQ_SKILL_STATUS_CHECKER = 0x8,
|
||||
IQ_SKILL_EXP_GO_GETTER = 0x9,
|
||||
IQ_SKILL_EFFICIENCY_EXPERT = 0xA,
|
||||
IQ_SKILL_WEAK_TYPE_PICKER = 0xB,
|
||||
IQ_SKILL_ALL_TERRAIN_HIKER = 0xC,
|
||||
IQ_SKILL_SUPER_MOBILE = 0xD,
|
||||
IQ_SKILL_TRAP_AVOIDER = 0xE,
|
||||
IQ_SKILL_HOUSE_AVOIDER = 0xF,
|
||||
IQ_SKILL_ENERGY_SAVER = 0x10,
|
||||
IQ_SKILL_NONSLEEPER = 0x11,
|
||||
IQ_SKILL_SELF_CURER = 0x12,
|
||||
IQ_SKILL_TRAP_SEER = 0x13,
|
||||
IQ_SKILL_LAVA_EVADER = 0x14,
|
||||
IQ_SKILL_DEDICATED_TRAVELER = 0x15,
|
||||
IQ_SKILL_ITEM_MASTER = 0x16,
|
||||
IQ_SKILL_EXCLUSIVE_MOVE_USER = 0x17
|
||||
};
|
||||
|
||||
#endif
|
||||
474
include/constants/move.h
Normal file
474
include/constants/move.h
Normal file
@@ -0,0 +1,474 @@
|
||||
#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
|
||||
124
include/constants/status.h
Normal file
124
include/constants/status.h
Normal file
@@ -0,0 +1,124 @@
|
||||
#ifndef GUARD_CONSTANTS_STATUS_H
|
||||
#define GUARD_CONSTANTS_STATUS_H
|
||||
|
||||
enum SleepStatus
|
||||
{
|
||||
SLEEP_STATUS_SLEEP = 1,
|
||||
SLEEP_STATUS_SLEEPLESS = 2,
|
||||
SLEEP_STATUS_NIGHTMARE = 3,
|
||||
SLEEP_STATUS_YAWNING = 4,
|
||||
SLEEP_STATUS_NAPPING = 5
|
||||
};
|
||||
|
||||
enum NonVolatileStatus
|
||||
{
|
||||
NON_VOLATILE_STATUS_BURNED = 1,
|
||||
NON_VOLATILE_STATUS_POISONED = 2,
|
||||
NON_VOLATILE_STATUS_BADLY_POISONED = 3,
|
||||
NON_VOLATILE_STATUS_PARALYZED = 4
|
||||
};
|
||||
|
||||
enum ImmobilizeStatus
|
||||
{
|
||||
IMMOBILIZE_STATUS_FROZEN = 1,
|
||||
IMMOBILIZE_STATUS_IMMOBILIZED = 2,
|
||||
IMMOBILIZE_STATUS_WRAPPED_AROUND_FOE = 3,
|
||||
IMMOBILIZE_STATUS_WRAPPED_BY_FOE = 4,
|
||||
IMMOBILIZE_STATUS_INGRAIN = 5,
|
||||
IMMOBILIZE_STATUS_PETRIFIED = 6,
|
||||
IMMOBILIZE_STATUS_SQUEEZED = 7
|
||||
};
|
||||
|
||||
enum ChargingStatus
|
||||
{
|
||||
CHARGING_STATUS_BIDE = 0x1,
|
||||
CHARGING_STATUS_SOLARBEAM = 0x2,
|
||||
CHARGING_STATUS_SKY_ATTACK = 0x3,
|
||||
CHARGING_STATUS_RAZOR_WIND = 0x4,
|
||||
CHARGING_STATUS_FOCUS_PUNCH = 0x5,
|
||||
CHARGING_STATUS_SKULL_BASH = 0x6,
|
||||
CHARGING_STATUS_FLY = 0x7,
|
||||
CHARGING_STATUS_BOUNCE = 0x8,
|
||||
CHARGING_STATUS_DIVE = 0x9,
|
||||
CHARGING_STATUS_DIG = 0xA,
|
||||
CHARGING_STATUS_CHARGE = 0xB,
|
||||
CHARGING_STATUS_RAGE = 0xC
|
||||
};
|
||||
|
||||
enum ProtectionStatus
|
||||
{
|
||||
PROTECTION_STATUS_REFLECT = 0x1,
|
||||
PROTECTION_STATUS_SAFEGUARD = 0x2,
|
||||
PROTECTION_STATUS_LIGHT_SCREEN = 0x3,
|
||||
PROTECTION_STATUS_COUNTER = 0x4,
|
||||
PROTECTION_STATUS_MAGIC_COAT = 0x5,
|
||||
PROTECTION_STATUS_WISH = 0x6,
|
||||
PROTECTION_STATUS_PROTECT = 0x7,
|
||||
PROTECTION_STATUS_MIRROR_COAT = 0x8,
|
||||
PROTECTION_STATUS_ENDURE = 0x9,
|
||||
PROTECTION_STATUS_MINI_COUNTER = 0xA,
|
||||
PROTECTION_STATUS_MIRROR_MOVE = 0xB,
|
||||
PROTECTION_STATUS_CONVERSION_2 = 0xC,
|
||||
PROTECTION_STATUS_VITAL_THROW = 0xD,
|
||||
PROTECTION_STATUS_MIST = 0xE
|
||||
};
|
||||
|
||||
enum WaitingStatus
|
||||
{
|
||||
WAITING_STATUS_CURSED = 1,
|
||||
WAITING_STATUS_DECOY = 2,
|
||||
WAITING_STATUS_SNATCH = 3
|
||||
};
|
||||
|
||||
enum LinkedStatus
|
||||
{
|
||||
LINKED_STATUS_LEECH_SEED = 1,
|
||||
LINKED_STATUS_DESTINY_BOND = 2
|
||||
};
|
||||
|
||||
enum MoveStatus
|
||||
{
|
||||
MOVE_STATUS_SURE_SHOT = 1,
|
||||
MOVE_STATUS_WHIFFER = 2,
|
||||
MOVE_STATUS_SET_DAMAGE = 3,
|
||||
MOVE_STATUS_FOCUS_ENERGY = 4
|
||||
};
|
||||
|
||||
enum ItemStatus
|
||||
{
|
||||
ITEM_STATUS_LONG_TOSS = 1,
|
||||
ITEM_STATUS_PIERCE = 2
|
||||
};
|
||||
|
||||
enum TransformStatus
|
||||
{
|
||||
TRANSFORM_STATUS_INVISIBLE = 1,
|
||||
TRANSFORM_STATUS_TRANSFORMED = 2,
|
||||
TRANSFORM_STATUS_MOBILE = 3
|
||||
};
|
||||
|
||||
enum EyesightStatus
|
||||
{
|
||||
EYESIGHT_STATUS_BLINKER = 1,
|
||||
EYESIGHT_STATUS_CROSS_EYED = 2,
|
||||
EYESIGHT_STATUS_EYEDROPS = 3
|
||||
};
|
||||
|
||||
enum VolatileStatus
|
||||
{
|
||||
VOLATILE_STATUS_CRINGING = 1,
|
||||
VOLATILE_STATUS_CONFUSED = 2,
|
||||
VOLATILE_STATUS_PAUSED = 3,
|
||||
VOLATILE_STATUS_COWERING = 4,
|
||||
VOLATILE_STATUS_TAUNTED = 5,
|
||||
VOLATILE_STATUS_ENCORE = 6,
|
||||
VOLATILE_STATUS_INFATUATED = 7
|
||||
};
|
||||
|
||||
enum TargetingDecoy
|
||||
{
|
||||
TARGETING_DECOY_TEAM = 1,
|
||||
TARGETING_DECOY_WILD = 2
|
||||
};
|
||||
|
||||
#endif
|
||||
19
include/constants/tactic.h
Normal file
19
include/constants/tactic.h
Normal file
@@ -0,0 +1,19 @@
|
||||
#ifndef GUARD_CONSTANTS_TACTIC_H
|
||||
#define GUARD_CONSTANTS_TACTIC_H
|
||||
|
||||
enum Tactic
|
||||
{
|
||||
TACTIC_LETS_GO_TOGETHER = 0x0,
|
||||
TACTIC_GO_THE_OTHER_WAY = 0x1,
|
||||
TACTIC_GO_AFTER_FOES = 0x2,
|
||||
TACTIC_AVOID_THE_FIRST_HIT = 0x3,
|
||||
TACTIC_ALL_FOR_ONE = 0x4, // Unused
|
||||
TACTIC_GROUP_SAFETY = 0x5, // Unused
|
||||
TACTIC_AVOID_TROUBLE = 0x6,
|
||||
TACTIC_BE_PATIENT = 0x7,
|
||||
TACTIC_KEEP_YOUR_DISTANCE = 0x8,
|
||||
TACTIC_WAIT_THERE = 0x9,
|
||||
TACTIC_GET_AWAY = 0xA
|
||||
};
|
||||
|
||||
#endif
|
||||
28
include/constants/trap.h
Normal file
28
include/constants/trap.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#ifndef GUARD_CONSTANTS_TRAP_H
|
||||
#define GUARD_CONSTANTS_TRAP_H
|
||||
|
||||
enum TrapType
|
||||
{
|
||||
TRIP_TRAP = 0x0,
|
||||
MUD_TRAP = 0x1,
|
||||
STICKY_TRAP = 0x2,
|
||||
GRIMY_TRAP = 0x3,
|
||||
SUMMON_TRAP = 0x4,
|
||||
PITFALL_TRAP = 0x5,
|
||||
WARP_TRAP = 0x6,
|
||||
WHIRLWIND_TRAP = 0x7,
|
||||
SPIN_TRAP = 0x8,
|
||||
SLUMBER_TRAP = 0x9,
|
||||
SLOW_TRAP = 0xA,
|
||||
SEAL_TRAP = 0xB,
|
||||
POISON_TRAP = 0xC,
|
||||
SELFDESTRUCT_TRAP = 0xD,
|
||||
EXPLOSION_TRAP = 0xE,
|
||||
PP_ZERO_TRAP = 0xF,
|
||||
CHESTNUT_TRAP = 0x10,
|
||||
WONDER_TILE = 0x11,
|
||||
POKEMON_TRAP = 0x12,
|
||||
SPIKE_TRAP = 0x13
|
||||
};
|
||||
|
||||
#endif
|
||||
25
include/constants/type.h
Normal file
25
include/constants/type.h
Normal file
@@ -0,0 +1,25 @@
|
||||
#ifndef GUARD_CONSTANTS_TYPE_H
|
||||
#define GUARD_CONSTANTS_TYPE_H
|
||||
|
||||
enum Type
|
||||
{
|
||||
TYPE_NORMAL = 0x1,
|
||||
TYPE_FIRE = 0x2,
|
||||
TYPE_WATER = 0x3,
|
||||
TYPE_GRASS = 0x4,
|
||||
TYPE_ELECTRIC = 0x5,
|
||||
TYPE_ICE = 0x6,
|
||||
TYPE_FIGHTING = 0x7,
|
||||
TYPE_POISON = 0x8,
|
||||
TYPE_GROUND = 0x9,
|
||||
TYPE_FLYING = 0xA,
|
||||
TYPE_PSYCHIC = 0xB,
|
||||
TYPE_BUG = 0xC,
|
||||
TYPE_ROCK = 0xD,
|
||||
TYPE_GHOST = 0xE,
|
||||
TYPE_DRAGON = 0xF,
|
||||
TYPE_DARK = 0x10,
|
||||
TYPE_STEEL = 0x11
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,44 +1,227 @@
|
||||
#ifndef GUARD_DUNGEON_ENTITY_H
|
||||
#define GUARD_DUNGEON_ENTITY_H
|
||||
|
||||
struct subStruct_8048524
|
||||
#include "item.h"
|
||||
#include "constants/move.h"
|
||||
|
||||
struct DungeonEntityData
|
||||
{
|
||||
/* 0x0 */ u8 unk0;
|
||||
/* 0x1 */ u8 unk1;
|
||||
/* 0x2 */ s16 species;
|
||||
/* 0x4 */ s16 transformSpecies;
|
||||
// This has different purposes for Pokémon, items, and traps.
|
||||
// Pokemon: MovementFlag
|
||||
// Items: ItemFlag
|
||||
// Traps: TrapType
|
||||
/* 0x0 */ u8 flags;
|
||||
/* 0x1 */ bool8 moving;
|
||||
/* 0x2 */ u16 entityID; // Pokémon species or item ID.
|
||||
// Everything from here on only applies to Pokémon.
|
||||
/* 0x4 */ u16 transformSpecies; // Shows a different Pokémon when using Transform.
|
||||
/* 0x6 */ bool8 isEnemy;
|
||||
/* 0x7 */ bool8 isLeader;
|
||||
/* 0x8 */ u8 shopKeeper;
|
||||
/* 0x8 */ u8 shopkeeperMode;
|
||||
/* 0x9 */ u8 level;
|
||||
/* 0xA */ u16 partyIndex;
|
||||
/* 0xA */ u8 partyIndex; // Leader is 0, partner is 1, etc.
|
||||
u8 fillB;
|
||||
/* 0xC */ u16 IQ;
|
||||
/* 0xE */ s16 HP;
|
||||
/* 0x10 */ s16 maxHP;
|
||||
/* 0x12 */ s16 bossHPBackup;
|
||||
u8 fill14[0x46 - 0x14];
|
||||
/* 0x10 */ u16 maxHP;
|
||||
// Bosses have higher HP than normal for their level. This is the max HP they would normally have given their level.
|
||||
/* 0x12 */ u16 originalHP;
|
||||
/* 0x14 */ u8 attack;
|
||||
/* 0x15 */ u8 specialAttack;
|
||||
/* 0x16 */ u8 defense;
|
||||
/* 0x17 */ u8 specialDefense;
|
||||
/* 0x18 */ u32 expPoints;
|
||||
// Temporary stat boosts/drops from effects like Growl or Swords Dance.
|
||||
// These start at 10 and are in the range [1, 19].
|
||||
/* 0x1C */ s16 attackStage;
|
||||
/* 0x1E */ s16 specialAttackStage;
|
||||
/* 0x20 */ s16 defenseStage;
|
||||
/* 0x22 */ s16 specialDefenseStage;
|
||||
/* 0x24 */ s16 accuracyStage;
|
||||
/* 0x26 */ s16 evasionStage;
|
||||
// // When a Fire-type move is used on a Pokémon with Flash Fire, this value increases the power of the Pokémon's Fire-type moves.
|
||||
/* 0x28 */ s16 flashFireBoost;
|
||||
u8 fill2A[0x2C - 0x2A];
|
||||
// These start at 0x1000, and are halved by certain moves like Screech to lower the corresponding stat.
|
||||
/* 0x2C */ s32 attackMultiplier;
|
||||
/* 0x30 */ s32 specialAttackMultiplier;
|
||||
/* 0x34 */ s32 defenseMultiplier;
|
||||
/* 0x38 */ s32 specialDefenseMultiplier;
|
||||
u8 fill3C[0x3E - 0x3C];
|
||||
/* 0x3E */ u8 hiddenPowerType;
|
||||
u8 fill3F;
|
||||
/* 0x40 */ u8 joinLocation; // Uses the dungeon index in dungeon.h.
|
||||
u8 fill41[0x44 - 0x41];
|
||||
/* 0x44 */ u16 action;
|
||||
/* 0x46 */ s8 facingDir;
|
||||
u8 fill47[0x8C - 0x47];
|
||||
u8 unk8C[4];
|
||||
u8 fill90[0xA4 - 0x90];
|
||||
u8 fill47;
|
||||
// Additional parameter alongside actionIndex. Used for things like indiciating which move a Pokémon should use from its moveset.
|
||||
/* 0x48 */ u8 actionUseIndex;
|
||||
u8 fill49[0x4C - 0x49];
|
||||
// Position of the Pokémon the last time it threw an item.
|
||||
/* 0x4C */ s16 lastItemThrowPositionX;
|
||||
/* 0x4E */ s16 lastItemThrowPositionY;
|
||||
u8 fill50[0x58 - 0x50];
|
||||
// Position of the target that the Pokémon wants throw an item at.
|
||||
/* 0x58 */ s16 itemTargetPositionX;
|
||||
/* 0x5A */ s16 itemTargetPositionY;
|
||||
/* 0x5C */ u8 type1;
|
||||
/* 0x5D */ u8 type2;
|
||||
/* 0x5E */ u8 ability1;
|
||||
/* 0x5F */ u8 ability2;
|
||||
// Same format as ItemSlot struct.
|
||||
/* 0x60 */ u8 heldItemFlags;
|
||||
/* 0x61 */ u8 heldItemNumItems;
|
||||
/* 0x62 */ u8 heldItemIndex;
|
||||
u8 fill63[0x68 - 0x63];
|
||||
/* 0x68 */ s16 previousPosition1X;
|
||||
/* 0x6A */ s16 previousPosition1Y;
|
||||
/* 0x6C */ s16 previousPosition2X;
|
||||
/* 0x6E */ s16 previousPosition2Y;
|
||||
/* 0x70 */ s16 previousPosition3X;
|
||||
/* 0x72 */ s16 previousPosition3Y;
|
||||
/* 0x74 */ s16 previousPosition4X;
|
||||
/* 0x76 */ s16 previousPosition4Y;
|
||||
/* 0x78 */ u8 movementAction;
|
||||
/* 0x79 */ bool8 notAdjacentToTarget;
|
||||
/* 0x7A */ bool8 hasTarget;
|
||||
/* 0x7B */ bool8 turnAround;
|
||||
/* 0x7C */ u16 targetPokemonSpawnIndex;
|
||||
u8 fill7E[0x80 - 0x7E];
|
||||
/* 0x80 */ u32 targetPokemon;
|
||||
u8 fill84[0x88 - 0x84];
|
||||
/* 0x88 */ s16 targetMovePositionX;
|
||||
/* 0x8A */ s16 targetMovePositionY;
|
||||
// Bitwise flags corresponding to selected IQ skills.
|
||||
/* 0x8C */ u8 IQSkillsSelected[4]; // IQ skills selected in the IQ skills menu.
|
||||
/* 0x90 */ u8 IQSkillsEnabled[4];
|
||||
/* 0x94 */ u8 tactics;
|
||||
u8 fill95[0xA4 - 0x95];
|
||||
/* 0xA4 */ u8 clientFlags;
|
||||
u8 fillA5[0xAC - 0xA5];
|
||||
/* 0xAC */ u8 statusCondition;
|
||||
u8 fillAD[0xF7 - 0xAD];
|
||||
u8 fillA5[0xA8 - 0xA5];
|
||||
// Statuses are split into groups based on which ones can't overlap.
|
||||
// See status.h for which statuses are in each group.
|
||||
/* 0xA8 */ u8 sleepStatus;
|
||||
/* 0xA9 */ u8 sleepStatusTurnsLeft;
|
||||
u8 fillAA[0xAC - 0xAA];
|
||||
/* 0xAC */ u8 nonVolatileStatus;
|
||||
/* 0xAD */ u8 nonVolatileStatusTurnsLeft;
|
||||
/* 0xAE */ u8 nonVolatileStatusDamageTimer;
|
||||
u8 fillAF;
|
||||
/* 0xB0 */ u8 immobilizeStatus;
|
||||
u8 fillB1[0xB8 - 0xB1];
|
||||
/* 0xB8 */ u8 immobilizeStatusTurnsLeft;
|
||||
/* 0xB9 */ u8 immobilizeStatusDamageTimer;
|
||||
u8 fillBA[0xBC - 0xBA];
|
||||
/* 0xBC */ u8 volatileStatus;
|
||||
/* 0xBD */ u8 volatileStatusTurnsLeft;
|
||||
u8 fillBE[0xC0 - 0xBE];
|
||||
/* 0xC0 */ u8 chargingStatus;
|
||||
/* 0xC1 */ u8 chargingStatusTurnsLeft;
|
||||
/* 0xC2 */ u8 chargingStatusMoveIndex; // The position of the move in the Pokémon's moveset that triggered the status.
|
||||
u8 fillC3;
|
||||
/* 0xC4 */ u8 protectionStatus;
|
||||
/* 0xC5 */ u8 protectionStatusTurnsLeft;
|
||||
u8 fillC6[0xC8 - 0xC6];
|
||||
/* 0xC8 */ u8 waitingStatus;
|
||||
/* 0xC9 */ bool8 enemyDecoy; // True if the Pokémon is a decoy and a wild Pokémon (i.e., not an allied Pokémon).
|
||||
u8 fillCA;
|
||||
/* 0xCB */ u8 waitingStatusTurnsLeft;
|
||||
/* 0xCC */ u8 cursedDamageTimer;
|
||||
u8 fillCD[0xD0 - 0xCD];
|
||||
/* 0xD0 */ u8 linkedStatus;
|
||||
u8 fillD1[0xD9 - 0xD1];
|
||||
/* 0xD9 */ u8 linkedStatusTurnsLeft;
|
||||
/* 0xDA */ u8 linkedStatusDamageTimer;
|
||||
u8 fillDB;
|
||||
/* 0xDC */ u8 moveStatus;
|
||||
/* 0xDD */ u8 moveStatusTurnsLeft;
|
||||
u8 fillDE[0xE0 - 0xDE];
|
||||
/* 0xE0 */ u8 itemStatus;
|
||||
u8 fillE1[0xE4 - 0xE1];
|
||||
/* 0xE4 */ u8 transformStatus;
|
||||
/* 0xE5 */ u8 transformStatusTurnsLeft;
|
||||
u8 fillE6[0xE8 - 0xE6];
|
||||
/* 0xE8 */ u8 eyesightStatus;
|
||||
u8 fillE9;
|
||||
/* 0xEA */ u8 eyesightStatusTurnsLeft;
|
||||
u8 fillEB;
|
||||
/* 0xEC */ bool8 muzzledStatus;
|
||||
/* 0xED */ u8 muzzledTurnsLeft;
|
||||
u8 fillEE[0xF0 - 0xEE];
|
||||
/* 0xF0 */ bool8 radarStatus;
|
||||
/* 0xF1 */ bool8 scanningStatus;
|
||||
/* 0xF2 */ bool8 stairSpotterStatus;
|
||||
u8 fillF3;
|
||||
/* 0xF4 */ bool8 grudgeStatus;
|
||||
/* 0xF5 */ bool8 exposedStatus;
|
||||
u8 fillF7;
|
||||
/* 0xF7 */ bool8 isBoss;
|
||||
u8 fillF8[0xFB - 0xF8];
|
||||
u8 fillF8[0xFA - 0xF8];
|
||||
/* 0xFA */ u8 terrifiedTurnsLeft; // Doubles as a bool for whether the Pokémon is terrified.
|
||||
u8 unkFB;
|
||||
u8 fillFC[0x112 - 0xFC];
|
||||
/* 0xFC */ bool8 forceUseItem; // If true, an AI Pokémon is forced to try using their held item next turn. Unknown when this is set in regular gameplay.
|
||||
/* 0xFD */ u8 perishSongTimer; // When this reaches 0, the Pokémon faints from Perish Song. Doubles as a bool for whether the Pokémon is afflicted by Perish Song.
|
||||
u8 fillFE[0x100 - 0xFE];
|
||||
/* 0x100 */ u8 targetingDecoy; // If the Pokémon is targeting a decoy, this indicates whether the decoy target is a team or wild Pokémon.
|
||||
u8 fill101[0x104 - 0x101];
|
||||
/* 0x104 */ u8 movementSpeed;
|
||||
u8 fill105[0x108 - 0x105];
|
||||
// The turn counter for movement speed up/down is split into five timers each. Multiple timers are used if the Pokémon is affected by multiple
|
||||
// speed-up/slow effects at once, like using Agility twice.
|
||||
/* 0x108 */ u8 speedUpTurnsLeft[5];
|
||||
/* 0x10D */ u8 slowTurnsLeft[5];
|
||||
/* 0x112 */ u8 stockpileCount;
|
||||
u8 fill113[0x13C - 0x113];
|
||||
u8 fill113;
|
||||
// When true, an AI Pokémon will move in a random direction every turn.
|
||||
// Unclear where this is set in-game; it is not set by statuses (e.g., confusion) or mission clients.
|
||||
/* 0x114 */ bool8 moveRandomly;
|
||||
u8 fill115[0x118 - 0x115];
|
||||
/* 0x118 */ struct PokemonMove moves[4];
|
||||
/* 0x138 */ u8 struggleMoveFlags;
|
||||
u8 fill139[0x13C - 0x139];
|
||||
/* 0x13C */ u32 belly;
|
||||
u8 fill140[0x15C - 0x140];
|
||||
/* 0x140 */ u32 maxBelly;
|
||||
/* 0x144 */ bool8 movingIntoTarget; // True if an AI Pokémon is following another Pokémon and is already adjacent to them.
|
||||
/* 0x145 */ bool8 recalculateFollow; // Used by the AI to defer a movement decision until after all other Pokémon have moved.
|
||||
u8 fill146;
|
||||
/* 0x147 */ bool8 waiting; // True if an AI Pokémon decided to do nothing this turn.
|
||||
/* 0x148 */ bool8 attacking;
|
||||
u8 fill149[0x14E - 0x149];
|
||||
/* 0x14E */ u16 visualFlags;
|
||||
/* 0x150 */ u16 previousVisualFlags;
|
||||
u8 fill152[0x15C - 0x152];
|
||||
u8 unk15C;
|
||||
u8 unk15D;
|
||||
u8 unk15E;
|
||||
u8 unk15F;
|
||||
u8 fill160[0x174 - 0x160];
|
||||
u8 fill160[0x16C - 0x160];
|
||||
/* 0x16C */ s16 targetPositionX;
|
||||
/* 0x16E */ s16 targetPositionY;
|
||||
/* 0x170 */ s16 posPixelX;
|
||||
/* 0x172 */ s16 posPixelY;
|
||||
u32 unk174;
|
||||
u8 fill178[0x184 - 0x178];
|
||||
// Previous value of targetPosition for movement, 1 and 2 moves ago.
|
||||
/* 0x184 */ s16 previousTargetMovePosition1X;
|
||||
/* 0x186 */ s16 previousTargetMovePosition1Y;
|
||||
/* 0x188 */ s32 previousTargetMovePosition2X;
|
||||
/* 0x18C */ s32 previousTargetMovePosition2Y;
|
||||
/* 0x190 */ u8 lastMoveDirection; // The last direction that the Pokémon moved in.
|
||||
u8 fill191[0x194 - 0x191];
|
||||
// Number of tiles that the Pokémon moved last, multiplied by 0x100.
|
||||
/* 0x194 */ s32 lastMoveIncrementX;
|
||||
/* 0x198 */ s32 lastMoveIncrementY;
|
||||
/* 0x19C */ u8 walkAnimationCounter; // Set when the Pokémon starts moving, and counts down until the Pokémon's walk animation stops.
|
||||
u8 fill19D[0x1F4 - 0x19D];
|
||||
/* 0x1F4 */ u8 numMoveTiles; // Number of tiles to move in a turn. Can be greater than 1 if the user's movement speed is boosted.
|
||||
u8 fill1F5;
|
||||
/* 0x1F6 */ bool8 notMoving;
|
||||
u8 fill1F7[0x1FA - 0x1F7];
|
||||
/* 0x1FA */ u8 mobileTurnTimer; // When a Pokémon can pass through walls in a hallway, this counts up to 200 before the Pokémon turns in a random direction.
|
||||
u8 fill1FB;
|
||||
/* 0x1FC */ u16 expGainedInTurn; // Used to accumulate experience when multiple enemies are defeated in one turn.
|
||||
u8 fill1FE[0x208 - 0x1FE];
|
||||
};
|
||||
|
||||
// Used for Pokémon, items, and traps.
|
||||
@@ -57,7 +240,7 @@ struct DungeonEntity
|
||||
/* 0x14 */ s32 prevPosPixelX;
|
||||
/* 0x18 */ s32 prevPosPixelY;
|
||||
u8 fill1C[0x20 - 0x1C];
|
||||
/* 0x20 */ bool8 active; // Turned off when a Pokémon faints.
|
||||
/* 0x20 */ bool8 visible; // Turned off when a Pokémon faints.
|
||||
u8 fill21[0x25 - 0x21];
|
||||
/* 0x25 */ u8 roomIndex;
|
||||
// The global spawn index counter starts at 10. Each Pokémon that spawns increments the counter and
|
||||
@@ -89,10 +272,10 @@ struct DungeonEntity
|
||||
u8 fill52[0x54 - 0x52];
|
||||
/* 0x54 */ u16 spriteGlobalIndex;
|
||||
u8 fill56[0x6C - 0x56];
|
||||
/* 0x6C */ u8 facingDirection;
|
||||
/* 0x6D */ u8 facingDirection2; // Duplicate of 0x6C?
|
||||
/* 0x6C */ u8 facingDir;
|
||||
/* 0x6D */ u8 facingDir2; // Duplicate of 0x6C?
|
||||
u8 fill6D[0x70 - 0x6D];
|
||||
struct subStruct_8048524 *unk70;
|
||||
/* 0x70 */ struct DungeonEntityData *entityData;
|
||||
};
|
||||
|
||||
enum EntityType
|
||||
@@ -102,16 +285,42 @@ enum EntityType
|
||||
ENTITY_TRAP = 3
|
||||
};
|
||||
|
||||
enum FacingDirection
|
||||
enum MovementFlag
|
||||
{
|
||||
SOUTH,
|
||||
SOUTHEAST,
|
||||
EAST,
|
||||
NORTHEAST,
|
||||
NORTH,
|
||||
NORTHWEST,
|
||||
WEST,
|
||||
SOUTHWEST
|
||||
MOVEMENT_FLAG_SWAPPED_PLACES = 1 << 5,
|
||||
MOVEMENT_FLAG_SWAPPED_PLACES_PETRIFIED = 1 << 15 // Set if the Pokémon is petrified and the leader cures them by swapping places.
|
||||
};
|
||||
|
||||
enum ShopkeeperMode
|
||||
{
|
||||
SHOPKEEPER_FRIENDLY = 1,
|
||||
// These two modes trigger if an explosion damages the shopkeeper. The shopkeeper attacks the side that damaged it.
|
||||
SHOPKEEPER_AGGRESSIVE_TO_WILD = 2,
|
||||
SHOPKEEPER_AGGRESSIVE_TO_PLAYER = 3
|
||||
};
|
||||
|
||||
enum MovementAction
|
||||
{
|
||||
MOVEMENT_ACTION_FOLLOW = 1,
|
||||
MOVEMENT_ACTION_WANDER = 2,
|
||||
MOVEMENT_ACTION_RUN_AWAY_WANDER = 3,
|
||||
MOVEMENT_ACTION_EXIT_ROOM = 4,
|
||||
MOVEMENT_ACTION_RUN_AWAY_FROM_ENEMY = 5,
|
||||
MOVEMENT_ACTION_FACE_RANDOM_DIRECTION = 6,
|
||||
MOVEMENT_ACTION_TAKE_ITEM = 7
|
||||
};
|
||||
|
||||
enum ClientFlag
|
||||
{
|
||||
CLIENT_FLAGS_CLIENT = 1, // Used for mission clients that need rescuing.
|
||||
CLIENT_FLAGS_DONT_MOVE = 3 // Used for Diglett in the Skarmory boss fight.
|
||||
};
|
||||
|
||||
enum VisualFlag
|
||||
{
|
||||
// Set if Run Away's visual effect (green smoke cloud) has been triggered on this floor.
|
||||
// Prevents the effect from showing again if the Pokémon stops running away and then starts running away again.
|
||||
VISUAL_FLAG_RUN_AWAY = 2
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
93
include/dungeon_global_data.h
Normal file
93
include/dungeon_global_data.h
Normal file
@@ -0,0 +1,93 @@
|
||||
#ifndef GUARD_DUNGEON_DATA_H
|
||||
#define GUARD_DUNGEON_DATA_H
|
||||
|
||||
#define DUNGEON_MAX_SIZE_X 55
|
||||
#define DUNGEON_MAX_SIZE_Y 31
|
||||
|
||||
#include "constants/species.h"
|
||||
#include "dungeon_entity.h"
|
||||
#include "map.h"
|
||||
|
||||
struct DungeonGlobalData
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 fill5[0x7 - 0x5];
|
||||
u8 unk7;
|
||||
u8 fill8[0xF - 0x8];
|
||||
/* 0xF */ bool8 inputAllowed; // Whether the game is currently accepting input. Set to false while action animations play.
|
||||
u8 fill10;
|
||||
u8 unk11;
|
||||
u8 fill12[0x16D - 0x12];
|
||||
u8 unk16D;
|
||||
u8 fill16E[0x179 - 0x16E];
|
||||
/* 0x179 */ bool8 pokemonExposed; // True if a Pokémon on the floor has the Exposed status.
|
||||
u8 fill17A[0x645 - 0x17A];
|
||||
/* 0x645 */ u8 floorNumber;
|
||||
u8 fill646[0x65C - 0x646];
|
||||
u8 unk65C;
|
||||
u8 fill65D[0x660 - 0x65D];
|
||||
/* 0x660 */ u8 speedTurnCounter; // Handles turn order when Pokémon have different movement speeds.
|
||||
u8 fill661[0x666 - 0x661];
|
||||
/* 0x666 */ u16 turnsLeft; // Turns remaining before getting swept out of the dungeon.
|
||||
u8 fill668[0x66A - 0x668];
|
||||
u16 unk66A;
|
||||
u8 fill66C[0x671 - 0x66C];
|
||||
/* 0x671 */ bool8 monsterHouseActive;
|
||||
u8 fill672[0x363C - 0x672];
|
||||
/* 0x363C */ u8 expYieldRankings[NUM_SPECIES];
|
||||
u8 fill37E3[0x37FC - 0x37D9];
|
||||
/* 0x37FC */ bool8 decoyActive;
|
||||
u8 fill37FD[0x3A0E - 0x37FD];
|
||||
/* 0x3A0E */ s16 tileset;
|
||||
u8 fill3A10[0x3A14 - 0x3A10];
|
||||
/* 0x3A14 */ s16 bossBattleIndex;
|
||||
u8 fill3A16[0x3A18 - 0x3A16];
|
||||
/* 0x3A18 */ struct MapTile mapTiles[DUNGEON_MAX_SIZE_X * DUNGEON_MAX_SIZE_Y];
|
||||
u8 fill54BC[0xE23C - 0xD9F0];
|
||||
s16 unkE23C;
|
||||
s16 unkE23E;
|
||||
u8 fillE240[0xE264 - 0xE240];
|
||||
/* 0xE264 */ u8 weather; // Uses the weather constants in weather.h.
|
||||
u8 unkE265;
|
||||
/* 0xE266 */ u8 weatherDamageTimer; // Timer for applying sandstorm/hail damage periodically.
|
||||
u8 fillE266[0xE26B - 0xE267];
|
||||
u8 unkE26B;
|
||||
u8 weatherTurnsLeft;
|
||||
u8 fillE26D[0xE270 - 0xE26D];
|
||||
/* 0xE270 */ u8 startingWeather; // The weather at the start of the floor. If the weather changes, then expires, revert back to the starting weather.
|
||||
u8 fillE271[0xE277 - 0xE271];
|
||||
/* 0xE277 */ u8 mudSportTurnsLeft;
|
||||
/* 0xE278 */ u8 waterSportTurnsLeft;
|
||||
u8 fillE279[0xE8C0 - 0xE279];
|
||||
/* 0xE8C0 */ u32 mapEntityPointers[DUNGEON_MAX_SIZE_X * DUNGEON_MAX_SIZE_Y];
|
||||
u8 fill10364[0x10844 - 0x10364];
|
||||
/* 0x10844 */ u16 numRoomExits[MAX_ROOM_COUNT];
|
||||
u8 fill10874[0x10884 - 0x10874];
|
||||
/* 0x10884 */ struct RoomExit roomExits[MAX_ROOM_COUNT][32]; // Arrays of room exits for each room.
|
||||
u8 fill11444[0x1356C - 0x11484];
|
||||
u8 unk1356C;
|
||||
u8 fill1356D[0x1357C - 0x1356D];
|
||||
/* 0x1357C */ struct DungeonEntity *teamPokemon[4];
|
||||
/* 0x1358C */ struct DungeonEntity *wildPokemon[0x10];
|
||||
/* 0x135CC */ struct DungeonEntity *allPokemon[0x14]; // Contains both team and wild Pokémon
|
||||
/* 0x1361C */ struct DungeonEntity *clientPokemon[2]; // Not sure how large this array is.
|
||||
u8 fill13624[0x181F8 - 0x13624];
|
||||
/* 0x181F8 */ struct DungeonEntity *leader; // Pointer to the team leader.
|
||||
u32 unk181FC;
|
||||
u32 unk18200;
|
||||
u32 unk18204;
|
||||
u8 unk18208;
|
||||
/* 0x18209 */ u8 visibility; // Dungeon light level.
|
||||
/* 0x1820A */ bool8 displayBlinker; // Blacks out the screen when the player has the Blinker status.
|
||||
u8 unk1820B;
|
||||
u32 unk1820C;
|
||||
/* 0x18210 */ bool8 displayCrossEyed; // Displays Subsitute and flower sprites when the player has the Cross-Eyed status.
|
||||
u8 fill18211[0x18217 - 0x18211];
|
||||
u8 unk18217;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,47 +0,0 @@
|
||||
#ifndef GUARD_GUNKNOWN_203B418_H
|
||||
#define GUARD_GUNKNOWN_203B418_H
|
||||
|
||||
#include "dungeon_entity.h"
|
||||
|
||||
struct unkStruct_203B418
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 fill5[2];
|
||||
u8 unk7;
|
||||
u8 fill8[0x11 - 8];
|
||||
u8 unk11;
|
||||
u8 fill12[0x16D - 0x12];
|
||||
u8 unk16D;
|
||||
u8 fill16E[0x65C - 0x16E];
|
||||
u8 unk65C;
|
||||
u8 fill65D[0x66A - 0x65D];
|
||||
u16 unk66A;
|
||||
u8 fill66B[0xE23C - 0x66C];
|
||||
s16 unkE23C;
|
||||
s16 unkE23E;
|
||||
u8 fillE240[0xE265 - 0xE240];
|
||||
u8 unkE265;
|
||||
u8 fillE266[0xE26B - 0xE266];
|
||||
u8 unkE26B;
|
||||
u8 unkE26C;
|
||||
u8 fillE26D[0x1356C - 0xE26D];
|
||||
u8 unk1356C;
|
||||
u8 fill1356D[0x1358C - 0x1356D];
|
||||
struct DungeonEntity *unk1358C[0x10];
|
||||
u8 fill135CC[0x181FC - 0x135CC];
|
||||
u32 unk181FC;
|
||||
u32 unk18200;
|
||||
u32 unk18204;
|
||||
u8 unk18208[3];
|
||||
u8 unk1820B;
|
||||
u32 unk1820C;
|
||||
u32 unk18210;
|
||||
u8 padding2[3];
|
||||
u8 unk18217;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -12,8 +12,11 @@ struct Item
|
||||
/* 0xD */ u8 icon;
|
||||
/* 0xE */ u16 fill;
|
||||
/* 0x10 */ u8 *descriptionPointer;
|
||||
/* 0x14 */ bool8 unkFood1[2];
|
||||
/* 0x16 */ u8 throwDmg;
|
||||
// Determines how the AI can use the item.
|
||||
// Index 0: Item can be used on self.
|
||||
// Index 1: Item can be thrown at allies.
|
||||
// Index 2: Item can be thrown at enemies.
|
||||
/* 0x14 */ bool8 aiFlags[3];
|
||||
/* 0x17 */ u8 fill2;
|
||||
/* 0x18 */ s16 move;
|
||||
/* 0x1A */ u8 order; // Numbered order they are in storage
|
||||
@@ -25,7 +28,7 @@ struct Item
|
||||
|
||||
struct ItemSlot
|
||||
{
|
||||
u8 unk0; // some sort of flags, bit 0 seems to indicate an empty slot
|
||||
u8 itemFlags;
|
||||
u8 numItems;
|
||||
u8 itemIndex;
|
||||
};
|
||||
@@ -84,6 +87,14 @@ enum ItemCategory
|
||||
ITEM_CATEGORY_ORBS
|
||||
};
|
||||
|
||||
enum ItemFlag
|
||||
{
|
||||
ITEM_FLAG_EXISTS = 1 << 0,
|
||||
ITEM_FLAG_FOR_SALE = 1 << 1,
|
||||
ITEM_FLAG_STICKY = 1 << 3,
|
||||
ITEM_FLAG_SET = 1 << 4 // This item can be thrown by pressing L+R instead of having to go to the bag menu.
|
||||
};
|
||||
|
||||
// see https://bulbapedia.bulbagarden.net/wiki/List_of_items_by_index_number_(Rescue_Team)
|
||||
enum ItemID {
|
||||
ITEM_ID_NOTHING,
|
||||
@@ -343,7 +354,7 @@ u8 GetItemPalette(u8 itemIndex);
|
||||
u8 GetItemCategory(u8 itemIndex);
|
||||
u32 GetItemUnkThrow(u8 itemIndex, u32 r1);
|
||||
u8 *GetItemDescription(u8 itemIndex);
|
||||
u32 GetItemUnkFood(u8 itemIndex, u32 r1);
|
||||
u32 GetItemAIFlags(u8 itemIndex, u32 r1);
|
||||
s32 GetNumberOfFilledInventorySlots(void);
|
||||
bool8 IsThrowableItem(u8 itemIndex);
|
||||
void xxx_init_itemslot_8090A8C(struct ItemSlot *param_1,u8 itemIndex,u8 param_3);
|
||||
|
||||
61
include/map.h
Normal file
61
include/map.h
Normal file
@@ -0,0 +1,61 @@
|
||||
#ifndef GUARD_MAP_H
|
||||
#define GUARD_MAP_H
|
||||
|
||||
#include "dungeon_entity.h"
|
||||
|
||||
#define MAX_ROOM_COUNT 24 // Empirical max, not sure if the code supports any more.
|
||||
|
||||
struct MapTile
|
||||
{
|
||||
/* 0x0 */ u8 tileFlags;
|
||||
/* 0x1 */ bool8 stairs;
|
||||
u8 fill2[0x9 - 0x2];
|
||||
/* 0x9 */ u8 roomIndex;
|
||||
// Bitwise flags for whether Pokémon can move to an adjacent tile. Bits correspond to directions in direction.h.
|
||||
// Different sets of flags are used for Pokémon that can cross special terrain.
|
||||
/* 0xA */ u8 canMoveAdjacent;
|
||||
/* 0xB */ u8 canMoveAdjacentLiquid;
|
||||
/* 0xC */ u8 canMoveAdjacentCrevice;
|
||||
/* 0xD */ u8 canMoveAdjacentWall;
|
||||
u8 fillE[0x10 - 0xE];
|
||||
/* 0x10 */ struct DungeonEntity *pokemon; // Pokémon on the tile.
|
||||
/* 0x14 */ struct DungeonEntity *mapObject; // Item or trap on the tile.
|
||||
};
|
||||
|
||||
struct MapRoom
|
||||
{
|
||||
u8 fill0[0x2 - 0x0];
|
||||
// All coordinates are inclusive.
|
||||
/* 0x2 */ s16 startX;
|
||||
/* 0x4 */ s16 startY;
|
||||
/* 0x6 */ s16 endX;
|
||||
/* 0x8 */ s16 endY;
|
||||
u8 fillA[0x1C - 0xA];
|
||||
};
|
||||
|
||||
struct RoomExit
|
||||
{
|
||||
s16 x;
|
||||
s16 y;
|
||||
};
|
||||
|
||||
enum TileFlag
|
||||
{
|
||||
TILE_TYPE_FLOOR = 1 << 0,
|
||||
TILE_TYPE_LIQUID = 1 << 2, // Water or lava depending on the dungeon.
|
||||
TILE_TYPE_ROOM_EXIT = 1 << 3,
|
||||
TILE_TYPE_MAP_EDGE = 1 << 4,
|
||||
TILE_TYPE_SHOP = 1 << 5,
|
||||
TILE_TYPE_MONSTER_HOUSE = 1 << 6,
|
||||
TILE_TYPE_STAIRS = 1 << 9
|
||||
};
|
||||
|
||||
enum CrossableTerrain
|
||||
{
|
||||
CROSSABLE_TERRAIN_REGULAR = 0,
|
||||
CROSSABLE_TERRAIN_LIQUID = 1,
|
||||
CROSSABLE_TERRAIN_CREVICE = 2,
|
||||
CROSSABLE_TERRAIN_WALL = 3,
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -24,7 +24,7 @@ struct unkPokeSubStruct_4 {
|
||||
u16 fill6;
|
||||
};
|
||||
|
||||
struct unkPokeSubStruct_2C
|
||||
struct unkPokeSubStruct_2C
|
||||
{
|
||||
u8 unk0;
|
||||
u8 fill1;
|
||||
@@ -138,13 +138,13 @@ struct gPokemon
|
||||
/* 0x10 */ u16 dialogue_sprites;
|
||||
/* 0x12 */ u8 unk12;
|
||||
/* 0x13 */ u8 types[2];
|
||||
/* 0x15 */ u8 walkable_tiles;
|
||||
/* 0x15 */ u8 walkable_tiles; // Uses the CrossableTerrain enum in map.h.
|
||||
/* 0x16 */ u8 friend_area;
|
||||
/* 0x17 */ u8 abilities[2];
|
||||
/* 0x19 */ u8 shadow_size;
|
||||
/* 0x1A */ u8 unk1A;
|
||||
/* 0x1B */ u8 unk1B;
|
||||
/* 0x1C */ bool8 isMoving;
|
||||
/* 0x1C */ bool8 isMoving; // Set to false for Pokémon who don't move unless they're the leader, like Kakuna.
|
||||
/* 0x1D */ u8 unk1D;
|
||||
/* 0x1E */ u16 base_hp;
|
||||
/* 0x20 */ s32 base_exp;
|
||||
@@ -155,7 +155,7 @@ struct gPokemon
|
||||
/* 0x30 */ u8 unk30;
|
||||
/* 0x31 */ u8 unk31;
|
||||
/* 0x32 */ u8 unk32;
|
||||
/* 0x33 */ bool8 unk33;
|
||||
/* 0x33 */ bool8 toolboxEnabled; // If false, the AI can't use items. Doesn't seem to be used, as it's true for all Pokémon.
|
||||
/* 0x34 */ struct EvolveStruct1 pre;
|
||||
/* 0x38 */ struct EvolveNeeds need;
|
||||
/* 0x3C */ s16 dexInternal[2]; // dexNo and internalNo
|
||||
@@ -165,7 +165,7 @@ struct gPokemon
|
||||
|
||||
|
||||
// https://www.pokecommunity.com/showthread.php?t=407371
|
||||
struct LevelData
|
||||
struct LevelData
|
||||
{
|
||||
s32 expRequired;
|
||||
u8 gainHP;
|
||||
@@ -177,19 +177,18 @@ struct LevelData
|
||||
u16 fillA;
|
||||
};
|
||||
|
||||
struct unkStruct_808E218_arg
|
||||
struct unkStruct_808E218_arg
|
||||
{
|
||||
u16 unk0[NUM_SPECIES];
|
||||
u32 count;
|
||||
};
|
||||
|
||||
struct unkStruct_808E218
|
||||
struct unkStruct_808E218
|
||||
{
|
||||
// leveldata? (same size)
|
||||
struct unkStruct_808E6F4 unk0[3];
|
||||
};
|
||||
|
||||
|
||||
void LoadMonsterParameters(void);
|
||||
struct unkStruct_203B45C *GetRecruitedPokemon(void);
|
||||
void InitializeRecruitedPokemon(void);
|
||||
@@ -212,7 +211,7 @@ u16 GetLowKickDmg(s16 index);
|
||||
u16 GetSizeOrbDmg(s16 index);
|
||||
u8 GetFriendArea(s16 index);
|
||||
u16 GetBaseHP(s16 index);
|
||||
bool8 GetUnk33(s16 index);
|
||||
bool8 IsToolboxEnabled(s16 index);
|
||||
u8 GetUnk12(s16 index);
|
||||
s16 GetPokemonEvolveFrom(s16 index);
|
||||
u16 GetPokemonAttSpatt(s16 index, u32 r1);
|
||||
@@ -237,4 +236,4 @@ void SavePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* pokem
|
||||
void RestorePokemonStruct(struct unkStruct_8094924*, struct PokemonStruct*);
|
||||
|
||||
|
||||
#endif // GUARD_POKEMON_H
|
||||
#endif // GUARD_POKEMON_H
|
||||
|
||||
Reference in New Issue
Block a user