333 lines
7.0 KiB
TypeScript
333 lines
7.0 KiB
TypeScript
/** Battle constants under their PRET names (constants/*.asm and
|
|
* macros/scripts/battle_commands.asm). `npm run check:reference` compares
|
|
* every entry with the pinned source, so a wrong value cannot ship. */
|
|
export const C = {
|
|
// Move effects (constants/move_effect_constants.asm)
|
|
EFFECT_NORMAL_HIT: 0,
|
|
EFFECT_LEECH_HIT: 3,
|
|
EFFECT_SELFDESTRUCT: 7,
|
|
EFFECT_DREAM_EATER: 8,
|
|
EFFECT_ALWAYS_HIT: 17,
|
|
EFFECT_ATTACK_DOWN: 18,
|
|
EFFECT_EVASION_DOWN: 24,
|
|
EFFECT_BIDE: 26,
|
|
EFFECT_RAMPAGE: 27,
|
|
EFFECT_MULTI_HIT: 29,
|
|
EFFECT_CONVERSION: 30,
|
|
EFFECT_TOXIC: 33,
|
|
EFFECT_RAZOR_WIND: 39,
|
|
EFFECT_DOUBLE_HIT: 44,
|
|
EFFECT_JUMP_KICK: 45,
|
|
EFFECT_ATTACK_DOWN_2: 58,
|
|
EFFECT_EVASION_DOWN_2: 64,
|
|
EFFECT_ATTACK_DOWN_HIT: 68,
|
|
EFFECT_ACCURACY_DOWN_HIT: 73,
|
|
EFFECT_EVASION_DOWN_HIT: 74,
|
|
EFFECT_SKY_ATTACK: 75,
|
|
EFFECT_CONFUSE_HIT: 76,
|
|
EFFECT_POISON_MULTI_HIT: 77,
|
|
EFFECT_RAGE: 81,
|
|
EFFECT_SPLASH: 85,
|
|
EFFECT_SNORE: 92,
|
|
EFFECT_PRIORITY_HIT: 103,
|
|
EFFECT_TRIPLE_KICK: 104,
|
|
EFFECT_PROTECT: 111,
|
|
EFFECT_ENDURE: 116,
|
|
EFFECT_ROLLOUT: 117,
|
|
EFFECT_SWAGGER: 118,
|
|
EFFECT_FURY_CUTTER: 119,
|
|
EFFECT_SKULL_BASH: 145,
|
|
EFFECT_FUTURE_SIGHT: 148,
|
|
EFFECT_SOLARBEAM: 151,
|
|
EFFECT_THUNDER: 152,
|
|
EFFECT_BEAT_UP: 154,
|
|
EFFECT_FLY: 155,
|
|
|
|
EFFECT_SLEEP: 1,
|
|
EFFECT_HEAL: 32,
|
|
EFFECT_LIGHT_SCREEN: 35,
|
|
EFFECT_MIST: 46,
|
|
EFFECT_FOCUS_ENERGY: 47,
|
|
EFFECT_CONFUSE: 49,
|
|
EFFECT_TRANSFORM: 57,
|
|
EFFECT_REFLECT: 65,
|
|
EFFECT_SUBSTITUTE: 79,
|
|
EFFECT_LEECH_SEED: 84,
|
|
EFFECT_DISABLE: 86,
|
|
EFFECT_ENCORE: 90,
|
|
EFFECT_SLEEP_TALK: 97,
|
|
EFFECT_MEAN_LOOK: 106,
|
|
EFFECT_NIGHTMARE: 107,
|
|
EFFECT_SPIKES: 112,
|
|
EFFECT_FORESIGHT: 113,
|
|
EFFECT_PERISH_SONG: 114,
|
|
EFFECT_SANDSTORM: 115,
|
|
EFFECT_ATTRACT: 120,
|
|
EFFECT_SAFEGUARD: 124,
|
|
EFFECT_RAIN_DANCE: 136,
|
|
EFFECT_SUNNY_DAY: 137,
|
|
EFFECT_TELEPORT: 153,
|
|
EFFECT_MORNING_SUN: 132,
|
|
EFFECT_SYNTHESIS: 133,
|
|
EFFECT_MOONLIGHT: 134,
|
|
EFFECT_POISON: 66,
|
|
EFFECT_PARALYZE: 67,
|
|
EFFECT_ATTACK_UP: 10,
|
|
EFFECT_EVASION_UP: 16,
|
|
EFFECT_ATTACK_UP_2: 50,
|
|
EFFECT_EVASION_UP_2: 56,
|
|
|
|
// Moves (constants/move_constants.asm)
|
|
GUST: 16,
|
|
WHIRLWIND: 18,
|
|
FLY: 19,
|
|
THUNDER: 87,
|
|
EARTHQUAKE: 89,
|
|
FISSURE: 90,
|
|
DIG: 91,
|
|
MIMIC: 102,
|
|
MINIMIZE: 107,
|
|
SUBSTITUTE: 164,
|
|
STRUGGLE: 165,
|
|
FLAME_WHEEL: 172,
|
|
SNORE: 173,
|
|
SLEEP_TALK: 214,
|
|
SACRED_FIRE: 221,
|
|
MAGNITUDE: 222,
|
|
VITAL_THROW: 233,
|
|
TWISTER: 239,
|
|
|
|
// Types (constants/type_constants.asm)
|
|
NORMAL: 0,
|
|
FLYING: 2,
|
|
POISON: 3,
|
|
FIRE: 20,
|
|
SPECIAL: 20,
|
|
ICE: 25,
|
|
|
|
// Species and items
|
|
PIKACHU: 25,
|
|
FARFETCH_D: 83,
|
|
CUBONE: 104,
|
|
MAROWAK: 105,
|
|
CHANSEY: 113,
|
|
MAGIKARP: 129,
|
|
DITTO: 132,
|
|
UNOWN: 201,
|
|
NO_ITEM: 0,
|
|
LUCKY_PUNCH: 30,
|
|
METAL_POWDER: 35,
|
|
STICK: 105,
|
|
THICK_CLUB: 118,
|
|
EXP_SHARE: 57,
|
|
CLEANSE_TAG: 94,
|
|
LUCKY_EGG: 126,
|
|
LIGHT_BALL: 163,
|
|
|
|
// Held item effects (constants/item_data_constants.asm)
|
|
HELD_BERRY: 1,
|
|
HELD_LEFTOVERS: 3,
|
|
HELD_RESTORE_PP: 6,
|
|
HELD_HEAL_POISON: 10,
|
|
HELD_HEAL_PARALYZE: 14,
|
|
HELD_HEAL_STATUS: 15,
|
|
HELD_HEAL_CONFUSION: 16,
|
|
HELD_PREVENT_POISON: 20,
|
|
HELD_PREVENT_BURN: 21,
|
|
HELD_PREVENT_FREEZE: 22,
|
|
HELD_PREVENT_SLEEP: 23,
|
|
HELD_PREVENT_PARALYZE: 24,
|
|
HELD_PREVENT_CONFUSE: 25,
|
|
HELD_ESCAPE: 72,
|
|
HELD_CRITICAL_UP: 73,
|
|
HELD_QUICK_CLAW: 74,
|
|
HELD_FLINCH: 75,
|
|
HELD_ATTACK_UP: 31,
|
|
HELD_EVASION_UP: 37,
|
|
HELD_BRIGHTPOWDER: 77,
|
|
HELD_FOCUS_BAND: 79,
|
|
|
|
// Stats and levels
|
|
ATTACK: 0,
|
|
DEFENSE: 1,
|
|
SPEED: 2,
|
|
SP_ATTACK: 3,
|
|
SP_DEFENSE: 4,
|
|
ACCURACY: 5,
|
|
EVASION: 6,
|
|
BASE_STAT_LEVEL: 7,
|
|
MAX_STAT_LEVEL: 13,
|
|
MAX_LEVEL: 100,
|
|
PP_MASK: 63,
|
|
NUM_MOVES: 4,
|
|
BASE_HAPPINESS: 70,
|
|
START_MONEY: 3000,
|
|
MAX_MONEY: 999999,
|
|
|
|
// Status bits and masks
|
|
SLP_MASK: 7,
|
|
PSN: 3,
|
|
BRN: 4,
|
|
FRZ: 5,
|
|
PAR: 6,
|
|
|
|
// Substatus bits, by byte: 1 (Nightmare..In Love), 2 (Curled),
|
|
// 3 (Bide..Confused), 4 (X Accuracy..Leech Seed), 5 (Toxic..Can't Run)
|
|
SUBSTATUS_NIGHTMARE: 0,
|
|
SUBSTATUS_CURSE: 1,
|
|
SUBSTATUS_PROTECT: 2,
|
|
SUBSTATUS_IDENTIFIED: 3,
|
|
SUBSTATUS_PERISH: 4,
|
|
SUBSTATUS_ENDURE: 5,
|
|
SUBSTATUS_ROLLOUT: 6,
|
|
SUBSTATUS_IN_LOVE: 7,
|
|
SUBSTATUS_CURLED: 0,
|
|
SUBSTATUS_BIDE: 0,
|
|
SUBSTATUS_RAMPAGE: 1,
|
|
SUBSTATUS_IN_LOOP: 2,
|
|
SUBSTATUS_FLINCHED: 3,
|
|
SUBSTATUS_CHARGED: 4,
|
|
SUBSTATUS_UNDERGROUND: 5,
|
|
SUBSTATUS_FLYING: 6,
|
|
SUBSTATUS_CONFUSED: 7,
|
|
SUBSTATUS_X_ACCURACY: 0,
|
|
SUBSTATUS_MIST: 1,
|
|
SUBSTATUS_FOCUS_ENERGY: 2,
|
|
SUBSTATUS_SUBSTITUTE: 4,
|
|
SUBSTATUS_RECHARGE: 5,
|
|
SUBSTATUS_RAGE: 6,
|
|
SUBSTATUS_LEECH_SEED: 7,
|
|
SUBSTATUS_TOXIC: 0,
|
|
SUBSTATUS_TRANSFORMED: 3,
|
|
SUBSTATUS_ENCORED: 4,
|
|
SUBSTATUS_LOCK_ON: 5,
|
|
SUBSTATUS_DESTINY_BOND: 6,
|
|
SUBSTATUS_CANT_RUN: 7,
|
|
|
|
// Screens, weather and effectiveness
|
|
SCREENS_SPIKES: 0,
|
|
SCREENS_SAFEGUARD: 2,
|
|
SCREENS_LIGHT_SCREEN: 3,
|
|
SCREENS_REFLECT: 4,
|
|
SCREENS_UNUSED: 5,
|
|
WEATHER_SANDSTORM: 3,
|
|
WEATHER_NONE: 0,
|
|
WEATHER_RAIN: 1,
|
|
WEATHER_SUN: 2,
|
|
NO_EFFECT: 0,
|
|
NOT_VERY_EFFECTIVE: 5,
|
|
EFFECTIVE: 10,
|
|
SUPER_EFFECTIVE: 20,
|
|
STAB_DAMAGE: 128,
|
|
EFFECTIVENESS_MASK: 127,
|
|
BASE_PRIORITY: 1,
|
|
|
|
// Battle modes, types and results
|
|
WILD_BATTLE: 1,
|
|
TRAINER_BATTLE: 2,
|
|
HELD_AMULET_COIN: 76,
|
|
BATTLETYPE_NORMAL: 0,
|
|
BATTLETYPE_DEBUG: 2,
|
|
BATTLETYPE_TUTORIAL: 3,
|
|
BATTLETYPE_ROAMING: 5,
|
|
BATTLETYPE_CONTEST: 6,
|
|
BATTLETYPE_FORCESHINY: 7,
|
|
BATTLETYPE_TRAP: 9,
|
|
BATTLETYPE_FORCEITEM: 10,
|
|
BATTLETYPE_CELEBI: 11,
|
|
BATTLETYPE_SUICUNE: 12,
|
|
WIN: 0,
|
|
LOSE: 1,
|
|
DRAW: 2,
|
|
MORN_F: 0,
|
|
DAY_F: 1,
|
|
NITE_F: 2,
|
|
} as const;
|
|
|
|
/** Battle command IDs (macros/scripts/battle_commands.asm). */
|
|
export const COMMAND = {
|
|
checkturn: 1,
|
|
checkobedience: 2,
|
|
usedmovetext: 3,
|
|
doturn: 4,
|
|
critical: 5,
|
|
damagestats: 6,
|
|
stab: 7,
|
|
damagevariation: 8,
|
|
checkhit: 9,
|
|
lowersub: 10,
|
|
moveanimnosub: 11,
|
|
raisesub: 12,
|
|
failuretext: 13,
|
|
applydamage: 14,
|
|
criticaltext: 15,
|
|
supereffectivetext: 16,
|
|
checkfaint: 17,
|
|
buildopponentrage: 18,
|
|
poisontarget: 19,
|
|
sleeptarget: 20,
|
|
draintarget: 21,
|
|
burntarget: 23,
|
|
freezetarget: 24,
|
|
paralyzetarget: 25,
|
|
flinchtarget: 37,
|
|
recoil: 39,
|
|
confuse: 42,
|
|
confusetarget: 43,
|
|
poison: 47,
|
|
paralyze: 48,
|
|
splash: 54,
|
|
kingsrock: 77,
|
|
foresight: 87,
|
|
damagecalc: 98,
|
|
checksafeguard: 101,
|
|
healmorn: 106,
|
|
healday: 107,
|
|
healnite: 108,
|
|
attackup: 112,
|
|
defenseup: 113,
|
|
speedup: 114,
|
|
specialattackup: 115,
|
|
specialdefenseup: 116,
|
|
accuracyup: 117,
|
|
evasionup: 118,
|
|
attackup2: 119,
|
|
defenseup2: 120,
|
|
speedup2: 121,
|
|
specialattackup2: 122,
|
|
specialdefenseup2: 123,
|
|
accuracyup2: 124,
|
|
evasionup2: 125,
|
|
attackdown: 126,
|
|
defensedown: 127,
|
|
speeddown: 128,
|
|
specialattackdown: 129,
|
|
specialdefensedown: 130,
|
|
accuracydown: 131,
|
|
evasiondown: 132,
|
|
attackdown2: 133,
|
|
defensedown2: 134,
|
|
speeddown2: 135,
|
|
specialattackdown2: 136,
|
|
specialdefensedown2: 137,
|
|
accuracydown2: 138,
|
|
evasiondown2: 139,
|
|
statupmessage: 140,
|
|
statdownmessage: 141,
|
|
statupfailtext: 142,
|
|
statdownfailtext: 143,
|
|
effectchance: 144,
|
|
statdownanim: 145,
|
|
statupanim: 146,
|
|
switchturn: 147,
|
|
rage: 151,
|
|
doubleflyingdamage: 152,
|
|
ragedamage: 162,
|
|
clearmissdamage: 169,
|
|
movedelay: 170,
|
|
moveanim: 171,
|
|
curl: 175,
|
|
endmove: 0xff,
|
|
endturn: 0xfe,
|
|
} as const;
|