summaryrefslogtreecommitdiff
path: root/data/moves
diff options
context:
space:
mode:
authorDaniel Harding <33dannye@gmail.com>2020-05-16 21:42:24 -0500
committerGitHub <noreply@github.com>2020-05-16 21:42:24 -0500
commit8a924f1f783572ff395f617f99546b4c949c8b04 (patch)
tree1b6c7de331cb983256651b11b8adf413a3a434f1 /data/moves
parent88d7e9a34a8b610b358cec1ccc6660634ca9ce80 (diff)
parented94962edf1668aba3f60938e8a5ba8040e2a59c (diff)
Merge pull request #30 from entrpntr/spring-cleaning
Spring Cleaning
Diffstat (limited to 'data/moves')
-rw-r--r--data/moves/animations.asm221
-rw-r--r--data/moves/critical_hit_moves.asm9
-rw-r--r--data/moves/effects.asm2077
-rw-r--r--data/moves/effects_pointers.asm159
-rw-r--r--data/moves/effects_priorities.asm8
-rw-r--r--data/moves/flail_reversal_power.asm8
-rw-r--r--data/moves/grammar.asm101
-rw-r--r--data/moves/magnitude_power.asm9
-rw-r--r--data/moves/metronome_exception_moves.asm17
-rw-r--r--data/moves/names.asm252
-rw-r--r--data/moves/present_power.asm6
-rw-r--r--data/moves/tmhm_moves.asm66
12 files changed, 2807 insertions, 126 deletions
diff --git a/data/moves/animations.asm b/data/moves/animations.asm
index badbf7ba..0e1033a6 100644
--- a/data/moves/animations.asm
+++ b/data/moves/animations.asm
@@ -481,7 +481,7 @@ BattleAnim_SendOutMon:
BattleAnim_ReturnMon:
anim_sound 0, 0, SFX_BALL_POOF
-BattleAnim_BatonPass_branch_c9486:
+.anim:
anim_bgeffect ANIM_BG_RETURN_MON, $0, $1, $0
anim_wait 32
anim_ret
@@ -679,7 +679,7 @@ BattleAnim_KarateChop:
BattleAnim_Doubleslap:
anim_1gfx ANIM_GFX_HIT
- anim_if_param_equal $1, BattleAnim_Doubleslap_branch_c961b
+ anim_if_param_equal $1, .alternate
anim_sound 0, 1, SFX_DOUBLESLAP
anim_obj ANIM_OBJ_08, 144, 48, $0
anim_wait 6
@@ -687,7 +687,7 @@ BattleAnim_Doubleslap:
anim_wait 8
anim_ret
-BattleAnim_Doubleslap_branch_c961b:
+.alternate:
anim_sound 0, 1, SFX_DOUBLESLAP
anim_obj ANIM_OBJ_08, 120, 48, $0
anim_wait 6
@@ -697,7 +697,7 @@ BattleAnim_Doubleslap_branch_c961b:
BattleAnim_CometPunch:
anim_1gfx ANIM_GFX_HIT
- anim_if_param_equal $1, BattleAnim_CometPunch_branch_c9641
+ anim_if_param_equal $1, .alternate
anim_sound 0, 1, SFX_COMET_PUNCH
anim_obj ANIM_OBJ_06, 144, 48, $0
anim_wait 6
@@ -705,7 +705,7 @@ BattleAnim_CometPunch:
anim_wait 8
anim_ret
-BattleAnim_CometPunch_branch_c9641:
+.alternate:
anim_sound 0, 1, SFX_COMET_PUNCH
anim_obj ANIM_OBJ_06, 120, 64, $0
anim_wait 6
@@ -713,7 +713,6 @@ BattleAnim_CometPunch_branch_c9641:
anim_wait 8
anim_ret
-BattleAnim_Bide_branch_c9651:
BattleAnim_MegaPunch:
anim_1gfx ANIM_GFX_HIT
anim_bgeffect ANIM_BG_1F, $40, $2, $0
@@ -750,7 +749,7 @@ BattleAnim_Stomp:
BattleAnim_DoubleKick:
anim_1gfx ANIM_GFX_HIT
- anim_if_param_equal $1, BattleAnim_DoubleKick_branch_c96bd
+ anim_if_param_equal $1, .alternate
anim_sound 0, 1, SFX_DOUBLE_KICK
anim_obj ANIM_OBJ_07, 144, 48, $0
anim_wait 6
@@ -758,7 +757,7 @@ BattleAnim_DoubleKick:
anim_wait 8
anim_ret
-BattleAnim_DoubleKick_branch_c96bd:
+.alternate:
anim_sound 0, 1, SFX_DOUBLE_KICK
anim_obj ANIM_OBJ_07, 120, 64, $0
anim_wait 6
@@ -768,7 +767,7 @@ BattleAnim_DoubleKick_branch_c96bd:
BattleAnim_JumpKick:
anim_1gfx ANIM_GFX_HIT
- anim_if_param_equal $1, BattleAnim_JumpKick_branch_c96f1
+ anim_if_param_equal $1, .alternate
anim_sound 0, 1, SFX_JUMP_KICK
anim_obj ANIM_OBJ_07, 112, 72, $0
anim_obj ANIM_OBJ_07, 100, 60, $0
@@ -780,7 +779,7 @@ BattleAnim_JumpKick:
anim_wait 16
anim_ret
-BattleAnim_JumpKick_branch_c96f1:
+.alternate:
anim_wait 8
anim_sound 0, 0, SFX_DOUBLE_KICK
anim_obj ANIM_OBJ_04, 44, 88, $0
@@ -790,7 +789,7 @@ BattleAnim_JumpKick_branch_c96f1:
BattleAnim_HiJumpKick:
anim_1gfx ANIM_GFX_HIT
anim_bgeffect ANIM_BG_1F, $40, $2, $0
- anim_if_param_equal $1, BattleAnim_HiJumpKick_branch_c971e
+ anim_if_param_equal $1, .alternate
anim_wait 32
anim_sound 0, 1, SFX_JUMP_KICK
anim_obj ANIM_OBJ_07, 112, 72, $0
@@ -801,7 +800,7 @@ BattleAnim_HiJumpKick:
anim_wait 16
anim_ret
-BattleAnim_HiJumpKick_branch_c971e:
+.alternate:
anim_wait 16
anim_sound 0, 0, SFX_DOUBLE_KICK
anim_obj ANIM_OBJ_04, 44, 88, $0
@@ -882,7 +881,7 @@ BattleAnim_Ember:
BattleAnim_FirePunch:
anim_2gfx ANIM_GFX_HIT, ANIM_GFX_FIRE
anim_obj ANIM_OBJ_0A, 136, 56, $43
- anim_call BattleAnim_FirePunch_branch_cbbcc
+ anim_call BattleAnimSub_Fire
anim_wait 16
anim_ret
@@ -978,7 +977,7 @@ BattleAnim_FireBlast:
BattleAnim_IcePunch:
anim_2gfx ANIM_GFX_HIT, ANIM_GFX_ICE
anim_obj ANIM_OBJ_0A, 136, 56, $43
- anim_call BattleAnim_IcePunch_branch_cbbdf
+ anim_call BattleAnimSub_Ice
anim_wait 32
anim_ret
@@ -1231,7 +1230,7 @@ BattleAnim_Solarbeam:
.FireSolarBeam
anim_1gfx ANIM_GFX_BEAM
anim_bgeffect ANIM_BG_06, $0, $2, $0
- anim_call BattleAnim_Solarbeam_branch_cbb39
+ anim_call BattleAnimSub_Beam
anim_wait 48
anim_ret
@@ -1291,7 +1290,7 @@ BattleAnim_Thunder:
anim_ret
BattleAnim_RazorWind:
- anim_if_param_equal $1, BattleAnim_RazorWind_branch_c9fb5
+ anim_if_param_equal $1, BattleAnim_FocusEnergy
anim_1gfx ANIM_GFX_WHIP
anim_bgeffect ANIM_BG_06, $0, $1, $0
.loop
@@ -1357,12 +1356,12 @@ BattleAnim_Selfdestruct:
anim_1gfx ANIM_GFX_EXPLOSION
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $24
anim_if_param_equal $1, .loop
- anim_call BattleAnim_Selfdestruct_branch_cbb8f
+ anim_call BattleAnimSub_Explosion2
anim_wait 16
anim_ret
.loop
- anim_call BattleAnim_Selfdestruct_branch_cbb62
+ anim_call BattleAnimSub_Explosion1
anim_wait 5
anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
anim_loop 2, .loop
@@ -1374,12 +1373,12 @@ BattleAnim_Explosion:
anim_bgeffect ANIM_BG_1F, $60, $4, $10
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $24
anim_if_param_equal $1, .loop
- anim_call BattleAnim_Explosion_branch_cbb8f
+ anim_call BattleAnimSub_Explosion2
anim_wait 16
anim_ret
.loop
- anim_call BattleAnim_Explosion_branch_cbb62
+ anim_call BattleAnimSub_Explosion1
anim_wait 5
anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
anim_loop 2, .loop
@@ -1388,7 +1387,7 @@ BattleAnim_Explosion:
BattleAnim_Acid:
anim_1gfx ANIM_GFX_POISON
- anim_call BattleAnim_Acid_branch_cbc35
+ anim_call BattleAnimSub_Acid
anim_wait 64
anim_ret
@@ -1483,7 +1482,7 @@ BattleAnim_HyperBeam:
anim_bgeffect ANIM_BG_1F, $30, $4, $10
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $40
anim_bgeffect ANIM_BG_06, $0, $2, $0
- anim_call BattleAnim_HyperBeam_branch_cbb39
+ anim_call BattleAnimSub_Beam
anim_wait 48
anim_ret
@@ -1492,7 +1491,7 @@ BattleAnim_AuroraBeam:
anim_bgeffect ANIM_BG_06, $0, $2, $0
anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
anim_wait 64
- anim_call BattleAnim_AuroraBeam_branch_cbb39
+ anim_call BattleAnimSub_Beam
anim_wait 48
anim_incobj 5
anim_wait 64
@@ -1517,7 +1516,7 @@ BattleAnim_Scratch:
BattleAnim_FurySwipes:
anim_1gfx ANIM_GFX_CUT
- anim_if_param_equal $1, BattleAnim_FurySwipes_branch_c9dd9
+ anim_if_param_equal $1, .alternate
anim_sound 0, 1, SFX_SCRATCH
anim_obj ANIM_OBJ_37, 144, 48, $0
anim_obj ANIM_OBJ_37, 140, 44, $0
@@ -1526,7 +1525,7 @@ BattleAnim_FurySwipes:
anim_wait 32
anim_ret
-BattleAnim_FurySwipes_branch_c9dd9:
+.alternate:
anim_sound 0, 1, SFX_SCRATCH
anim_obj ANIM_OBJ_38, 120, 48, $0
anim_obj ANIM_OBJ_38, 124, 44, $0
@@ -1586,27 +1585,27 @@ BattleAnim_Teleport:
anim_incbgeffect ANIM_BG_TELEPORT
anim_call BattleAnim_ShowMon_0
anim_bgeffect ANIM_BG_06, $0, $1, $0
- anim_call BattleAnim_Teleport_branch_cbb12
+ anim_call BattleAnimSub_WarpAway
anim_wait 64
anim_ret
BattleAnim_Fly:
- anim_if_param_equal $1, BattleAnim_Fly_branch_c9e89
- anim_if_param_equal $2, BattleAnim_Fly_branch_c9e82
+ anim_if_param_equal $1, .turn1
+ anim_if_param_equal $2, .miss
anim_1gfx ANIM_GFX_HIT
anim_sound 0, 1, SFX_WING_ATTACK
anim_obj ANIM_OBJ_01, 136, 56, $0
anim_wait 32
-BattleAnim_Fly_branch_c9e82:
+.miss:
anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
anim_wait 32
anim_ret
-BattleAnim_Fly_branch_c9e89:
+.turn1:
anim_1gfx ANIM_GFX_SPEED
anim_bgeffect ANIM_BG_06, $0, $1, $0
anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
- anim_call BattleAnim_Fly_branch_cbb12
+ anim_call BattleAnimSub_WarpAway
anim_wait 64
anim_ret
@@ -1726,9 +1725,6 @@ BattleAnim_Softboiled:
anim_ret
BattleAnim_FocusEnergy:
-BattleAnim_RazorWind_branch_c9fb5:
-BattleAnim_SkullBash_branch_c9fb5:
-BattleAnim_SkyAttack_branch_c9fb5:
anim_1gfx ANIM_GFX_SPEED
anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_16, $0, $1, $40
@@ -1756,7 +1752,7 @@ BattleAnim_SkyAttack_branch_c9fb5:
anim_ret
BattleAnim_Bide:
- anim_if_param_equal $0, BattleAnim_Bide_branch_c9651
+ anim_if_param_equal $0, BattleAnim_MegaPunch
anim_1gfx ANIM_GFX_HIT
anim_call BattleAnim_TargetObj_1Row
anim_sound 0, 0, SFX_ESCAPE_ROPE
@@ -1844,7 +1840,7 @@ BattleAnim_Growl:
anim_bgeffect ANIM_BG_06, $0, $2, $0
anim_cry $0
.loop
- anim_call BattleAnim_Growl_branch_cbbbc
+ anim_call BattleAnimSub_Sound
anim_wait 16
anim_loop 3, .loop
anim_wait 9
@@ -1865,7 +1861,7 @@ BattleAnim_Roar:
anim_bgeffect ANIM_BG_06, $0, $2, $0
anim_cry $1
.loop
- anim_call BattleAnim_Roar_branch_cbbbc
+ anim_call BattleAnimSub_Sound
anim_wait 16
anim_loop 3, .loop
anim_wait 16
@@ -1919,7 +1915,7 @@ BattleAnim_ConfuseRay:
BattleAnim_Leer:
anim_1gfx ANIM_GFX_BEAM
anim_bgeffect ANIM_BG_06, $0, $2, $0
- anim_call BattleAnim_Leer_branch_cbadc
+ anim_call BattleAnimSub_ShakeEnemy
anim_wait 16
anim_ret
@@ -2045,7 +2041,7 @@ BattleAnim_Dig:
BattleAnim_SandAttack:
anim_1gfx ANIM_GFX_SAND
- anim_call BattleAnim_SandAttack_branch_cbc5b
+ anim_call BattleAnimSub_SandOrMud
anim_ret
BattleAnim_StringShot:
@@ -2350,7 +2346,7 @@ BattleAnim_Transform:
anim_call BattleAnim_TargetObj_2Row
anim_sound 0, 0, SFX_PSYBEAM
anim_bgeffect ANIM_BG_WAVE_DEFORM_USER, $0, $1, $0
- anim_wait 48
+ anim_wait 48
anim_transform
anim_incbgeffect ANIM_BG_WAVE_DEFORM_USER
anim_wait 48
@@ -2451,7 +2447,7 @@ BattleAnim_Crabhammer:
anim_ret
BattleAnim_SkullBash:
- anim_if_param_equal $1, BattleAnim_SkullBash_branch_c9fb5
+ anim_if_param_equal $1, BattleAnim_FocusEnergy
anim_1gfx ANIM_GFX_HIT
anim_bgeffect ANIM_BG_1F, $14, $2, $0
anim_wait 32
@@ -2551,9 +2547,9 @@ BattleAnim_Flash:
BattleAnim_Substitute:
anim_sound 0, 0, SFX_SURF
- anim_if_param_equal $3, BattleAnim_Substitute_branch_ca77c
- anim_if_param_equal $2, BattleAnim_Substitute_branch_ca76e
- anim_if_param_equal $1, BattleAnim_Substitute_branch_ca760
+ anim_if_param_equal $3, .dropsub2
+ anim_if_param_equal $2, .raisesub
+ anim_if_param_equal $1, .dropsub
anim_1gfx ANIM_GFX_SMOKE
anim_bgeffect ANIM_BG_26, $0, $1, $0
anim_wait 48
@@ -2563,7 +2559,7 @@ BattleAnim_Substitute:
anim_wait 32
anim_ret
-BattleAnim_Substitute_branch_ca760:
+.dropsub:
anim_bgeffect ANIM_BG_26, $0, $1, $0
anim_wait 48
anim_dropsub
@@ -2571,7 +2567,7 @@ BattleAnim_Substitute_branch_ca760:
anim_wait 32
anim_ret
-BattleAnim_Substitute_branch_ca76e:
+.raisesub:
anim_bgeffect ANIM_BG_26, $0, $1, $0
anim_wait 48
anim_raisesub
@@ -2579,7 +2575,7 @@ BattleAnim_Substitute_branch_ca76e:
anim_wait 32
anim_ret
-BattleAnim_Substitute_branch_ca77c:
+.dropsub2:
anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
anim_wait 48
anim_dropsub
@@ -2592,7 +2588,7 @@ BattleAnim_Minimize:
anim_1gfx ANIM_GFX_HIT
anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_WAVE_DEFORM_USER, $0, $1, $0
- anim_wait 48
+ anim_wait 48
anim_minimizeopp
anim_incbgeffect ANIM_BG_WAVE_DEFORM_USER
anim_wait 48
@@ -2600,7 +2596,7 @@ BattleAnim_Minimize:
anim_ret
BattleAnim_SkyAttack:
- anim_if_param_equal $1, BattleAnim_SkyAttack_branch_c9fb5
+ anim_if_param_equal $1, BattleAnim_FocusEnergy
anim_1gfx ANIM_GFX_SKY_ATTACK
anim_bgeffect ANIM_BG_26, $0, $1, $0
anim_wait 32
@@ -2640,9 +2636,9 @@ BattleAnim_Lick:
BattleAnim_TriAttack:
anim_3gfx ANIM_GFX_FIRE, ANIM_GFX_ICE, ANIM_GFX_LIGHTNING
- anim_call BattleAnim_TriAttack_branch_cbbcc
+ anim_call BattleAnimSub_Fire
anim_wait 16
- anim_call BattleAnim_TriAttack_branch_cbbdf
+ anim_call BattleAnimSub_Ice
anim_wait 16
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $4
anim_sound 0, 1, SFX_THUNDER
@@ -2681,7 +2677,7 @@ BattleAnim_DreamEater:
anim_bgp $1b
anim_obp0 $27
anim_sound 6, 3, SFX_WATER_GUN
- anim_call BattleAnim_DreamEater_branch_cbab3
+ anim_call BattleAnimSub_Drain
anim_wait 128
anim_wait 48
anim_ret
@@ -2689,7 +2685,7 @@ BattleAnim_DreamEater:
BattleAnim_LeechLife:
anim_1gfx ANIM_GFX_BUBBLE
anim_sound 6, 3, SFX_WATER_GUN
- anim_call BattleAnim_LeechLife_branch_cbab3
+ anim_call BattleAnimSub_Drain
anim_wait 128
anim_wait 48
anim_ret
@@ -2698,7 +2694,7 @@ BattleAnim_Harden:
anim_1gfx ANIM_GFX_REFLECT
anim_obp0 $0
anim_call BattleAnim_TargetObj_1Row
- anim_call BattleAnim_Harden_branch_cbc43
+ anim_call BattleAnimSub_Metallic
anim_call BattleAnim_ShowMon_0
anim_ret
@@ -2725,7 +2721,7 @@ BattleAnim_Glare:
anim_1gfx ANIM_GFX_BEAM
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $20
anim_bgeffect ANIM_BG_06, $0, $2, $0
- anim_call BattleAnim_Glare_branch_cbadc
+ anim_call BattleAnimSub_ShakeEnemy
anim_wait 16
anim_ret
@@ -2985,16 +2981,16 @@ BattleAnim_PsychicM:
BattleAnim_Sludge:
anim_1gfx ANIM_GFX_POISON
- anim_call BattleAnim_Sludge_branch_cbc15
+ anim_call BattleAnimSub_Sludge
anim_wait 56
anim_ret
BattleAnim_Toxic:
anim_1gfx ANIM_GFX_POISON
anim_bgeffect ANIM_BG_BLACK_HUES, $0, $8, $0
- anim_call BattleAnim_Toxic_branch_cbc35
+ anim_call BattleAnimSub_Acid
anim_wait 32
- anim_call BattleAnim_Toxic_branch_cbc15
+ anim_call BattleAnimSub_Sludge
anim_wait 64
anim_ret
@@ -3116,8 +3112,8 @@ BattleAnim_Sketch:
BattleAnim_TripleKick:
anim_1gfx ANIM_GFX_HIT
- anim_if_param_equal $1, BattleAnim_TripleKick_branch_cac95
- anim_if_param_equal $2, BattleAnim_TripleKick_branch_caca5
+ anim_if_param_equal $1, .alternate1
+ anim_if_param_equal $2, .alternate2
anim_sound 0, 1, SFX_MEGA_KICK
anim_obj ANIM_OBJ_07, 144, 48, $0
anim_wait 6
@@ -3125,7 +3121,7 @@ BattleAnim_TripleKick:
anim_wait 8
anim_ret
-BattleAnim_TripleKick_branch_cac95:
+.alternate1:
anim_sound 0, 1, SFX_DOUBLE_KICK
anim_obj ANIM_OBJ_07, 120, 64, $0
anim_wait 6
@@ -3133,7 +3129,7 @@ BattleAnim_TripleKick_branch_cac95:
anim_wait 8
anim_ret
-BattleAnim_TripleKick_branch_caca5:
+.alternate2:
anim_sound 0, 1, SFX_DOUBLE_KICK
anim_obj ANIM_OBJ_07, 132, 32, $0
anim_wait 6
@@ -3223,7 +3219,7 @@ BattleAnim_Snore:
anim_bgeffect ANIM_BG_1F, $60, $2, $0
anim_sound 0, 0, SFX_SNORE
.loop
- anim_call BattleAnim_Snore_branch_cbbbc
+ anim_call BattleAnimSub_Sound
anim_wait 16
anim_loop 2, .loop
anim_wait 8
@@ -3380,7 +3376,7 @@ BattleAnim_PowderSnow:
anim_loop 2, .loop
anim_bgeffect ANIM_BG_WHITE_HUES, $0, $8, $0
anim_wait 40
- anim_call BattleAnim_PowderSnow_branch_cbbdf
+ anim_call BattleAnimSub_Ice
anim_wait 32
anim_ret
@@ -3420,7 +3416,7 @@ BattleAnim_ScaryFace:
anim_1gfx ANIM_GFX_BEAM
anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
anim_bgeffect ANIM_BG_06, $0, $2, $0
- anim_call BattleAnim_ScaryFace_branch_cbadc
+ anim_call BattleAnimSub_ShakeEnemy
anim_wait 64
anim_ret
@@ -3501,14 +3497,14 @@ BattleAnim_SludgeBomb:
anim_sound 6, 2, SFX_SLUDGE_BOMB
anim_obj ANIM_OBJ_SLUDGE_BOMB, 64, 92, $10
anim_wait 36
- anim_call BattleAnim_SludgeBomb_branch_cbc15
+ anim_call BattleAnimSub_Sludge
anim_wait 64
anim_ret
BattleAnim_MudSlap:
anim_1gfx ANIM_GFX_SAND
anim_obp0 $fc
- anim_call BattleAnim_MudSlap_branch_cbc5b
+ anim_call BattleAnimSub_SandOrMud
anim_ret
BattleAnim_Octazooka:
@@ -3572,13 +3568,13 @@ BattleAnim_DestinyBond:
anim_1gfx ANIM_GFX_ANGELS
anim_bgp $1b
anim_obp0 $0
- anim_if_param_equal $1, BattleAnim_DestinyBond_branch_cb104
+ anim_if_param_equal $1, .fainted
anim_sound 6, 2, SFX_WHIRLWIND
anim_obj ANIM_OBJ_DESTINY_BOND, 44, 120, $2
anim_wait 128
anim_ret
-BattleAnim_DestinyBond_branch_cb104:
+.fainted:
anim_obj ANIM_OBJ_DESTINY_BOND, 132, 76, $0
anim_sound 0, 1, SFX_KINESIS
anim_bgeffect ANIM_BG_RETURN_MON, $0, $0, $0
@@ -3701,7 +3697,7 @@ BattleAnim_GigaDrain:
anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_1C, $0, $0, $10
anim_sound 6, 3, SFX_GIGA_DRAIN
- anim_call BattleAnim_GigaDrain_branch_cbab3
+ anim_call BattleAnimSub_Drain
anim_wait 48
anim_wait 128
anim_incbgeffect ANIM_BG_1C
@@ -3858,7 +3854,7 @@ BattleAnim_SteelWing:
anim_obp0 $0
anim_sound 0, 0, SFX_RAGE
anim_call BattleAnim_TargetObj_1Row
- anim_call BattleAnim_SteelWing_branch_cbc43
+ anim_call BattleAnimSub_Metallic
anim_call BattleAnim_ShowMon_0
anim_1gfx ANIM_GFX_HIT
anim_resetobp0
@@ -3967,7 +3963,7 @@ BattleAnim_Present:
anim_1gfx ANIM_GFX_EXPLOSION
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $12
.loop
- anim_call BattleAnim_Present_branch_cbb8f
+ anim_call BattleAnimSub_Explosion2
anim_wait 16
anim_jumpuntil .loop
anim_ret
@@ -4078,7 +4074,7 @@ BattleAnim_Dynamicpunch:
anim_obj ANIM_OBJ_0A, 136, 56, $43
anim_wait 16
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $12
- anim_call BattleAnim_Dynamicpunch_branch_cbb8f
+ anim_call BattleAnimSub_Explosion2
anim_wait 16
anim_ret
@@ -4108,7 +4104,7 @@ BattleAnim_BatonPass:
anim_1gfx ANIM_GFX_MISC
anim_obj ANIM_OBJ_BATON_PASS, 44, 104, $20
anim_sound 0, 0, SFX_BATON_PASS
- anim_call BattleAnim_BatonPass_branch_c9486
+ anim_call BattleAnim_ReturnMon.anim
anim_wait 64
anim_ret
@@ -4126,13 +4122,13 @@ BattleAnim_Encore:
BattleAnim_Pursuit:
anim_1gfx ANIM_GFX_HIT
- anim_if_param_equal $1, BattleAnim_Pursuit_branch_cb62b
+ anim_if_param_equal $1, .pursued
anim_sound 0, 1, SFX_COMET_PUNCH
anim_obj ANIM_OBJ_01, 136, 56, $0
anim_wait 16
anim_ret
-BattleAnim_Pursuit_branch_cb62b:
+.pursued:
anim_bgeffect ANIM_BG_HIDE_MON, $0, $0, $0
anim_wait 4
anim_call BattleAnim_UserObj_1Row
@@ -4194,7 +4190,7 @@ BattleAnim_IronTail:
anim_obp0 $0
anim_sound 0, 0, SFX_RAGE
anim_call BattleAnim_TargetObj_1Row
- anim_call BattleAnim_IronTail_branch_cbc43
+ anim_call BattleAnimSub_Metallic
anim_wait 4
anim_1gfx ANIM_GFX_HIT
anim_resetobp0
@@ -4212,7 +4208,7 @@ BattleAnim_MetalClaw:
anim_obp0 $0
anim_sound 0, 0, SFX_RAGE
anim_call BattleAnim_TargetObj_1Row
- anim_call BattleAnim_MetalClaw_branch_cbc43
+ anim_call BattleAnimSub_Metallic
anim_call BattleAnim_ShowMon_0
anim_1gfx ANIM_GFX_CUT
anim_resetobp0
@@ -4255,11 +4251,11 @@ BattleAnim_MorningSun:
anim_loop 5, .loop
anim_wait 32
anim_if_param_equal 0, .zero
- anim_call BattleAnim_MorningSun_branch_cbc6a
+ anim_call BattleAnimSub_Glimmer
anim_ret
.zero
- anim_call BattleAnim_MorningSun_branch_cbc80
+ anim_call BattleAnimSub_Glimmer2
anim_ret
BattleAnim_Synthesis:
@@ -4272,11 +4268,11 @@ BattleAnim_Synthesis:
anim_incbgeffect ANIM_BG_18
anim_call BattleAnim_ShowMon_0
anim_if_param_equal $1, .one
- anim_call BattleAnim_Synthesis_branch_cbc6a
+ anim_call BattleAnimSub_Glimmer
anim_ret
.one
- anim_call BattleAnim_Synthesis_branch_cbc80
+ anim_call BattleAnimSub_Glimmer2
anim_ret
BattleAnim_Crunch:
@@ -4308,11 +4304,11 @@ BattleAnim_Moonlight:
anim_sound 0, 0, SFX_MOONLIGHT
anim_wait 63
anim_if_param_equal $3, .three
- anim_call BattleAnim_Moonlight_branch_cbc6a
+ anim_call BattleAnimSub_Glimmer
anim_ret
.three
- anim_call BattleAnim_Moonlight_branch_cbc80
+ anim_call BattleAnimSub_Glimmer2
anim_ret
BattleAnim_HiddenPower:
@@ -4596,9 +4592,7 @@ BattleAnim_BeatUp:
anim_call BattleAnim_ShowMon_0
anim_ret
-BattleAnim_DreamEater_branch_cbab3:
-BattleAnim_GigaDrain_branch_cbab3:
-BattleAnim_LeechLife_branch_cbab3:
+BattleAnimSub_Drain:
anim_obj ANIM_OBJ_71, 132, 44, $0
anim_obj ANIM_OBJ_71, 132, 44, $8
anim_obj ANIM_OBJ_71, 132, 44, $10
@@ -4609,9 +4603,7 @@ BattleAnim_LeechLife_branch_cbab3:
anim_obj ANIM_OBJ_71, 132, 44, $38
anim_ret
-BattleAnim_Glare_branch_cbadc:
-BattleAnim_Leer_branch_cbadc:
-BattleAnim_ScaryFace_branch_cbadc:
+BattleAnimSub_ShakeEnemy:
anim_sound 6, 2, SFX_LEER
anim_obj ANIM_OBJ_4E, 72, 84, $0
anim_obj ANIM_OBJ_4E, 64, 80, $0
@@ -4625,8 +4617,7 @@ BattleAnim_ScaryFace_branch_cbadc:
anim_obj ANIM_OBJ_4F, 122, 50, $0
anim_ret
-BattleAnim_Fly_branch_cbb12:
-BattleAnim_Teleport_branch_cbb12:
+BattleAnimSub_WarpAway:
anim_sound 0, 0, SFX_WARP_TO
anim_obj ANIM_OBJ_44, 44, 108, $0
anim_obj ANIM_OBJ_44, 44, 100, $0
@@ -4637,9 +4628,7 @@ BattleAnim_Teleport_branch_cbb12:
anim_obj ANIM_OBJ_44, 44, 60, $0
anim_ret
-BattleAnim_AuroraBeam_branch_cbb39:
-BattleAnim_HyperBeam_branch_cbb39:
-BattleAnim_Solarbeam_branch_cbb39:
+BattleAnimSub_Beam:
anim_sound 0, 0, SFX_HYPER_BEAM
anim_obj ANIM_OBJ_27, 64, 92, $0
anim_wait 4
@@ -4654,8 +4643,7 @@ BattleAnim_Solarbeam_branch_cbb39:
anim_obj ANIM_OBJ_28, 126, 62, $0
anim_ret
-BattleAnim_Explosion_branch_cbb62:
-BattleAnim_Selfdestruct_branch_cbb62:
+BattleAnimSub_Explosion1:
anim_sound 0, 0, SFX_EGG_BOMB
anim_obj ANIM_OBJ_17, 24, 64, $0
anim_wait 5
@@ -4672,10 +4660,7 @@ BattleAnim_Selfdestruct_branch_cbb62:
anim_obj ANIM_OBJ_17, 40, 84, $0
anim_ret
-BattleAnim_Dynamicpunch_branch_cbb8f:
-BattleAnim_Explosion_branch_cbb8f:
-BattleAnim_Present_branch_cbb8f:
-BattleAnim_Selfdestruct_branch_cbb8f:
+BattleAnimSub_Explosion2:
anim_sound 0, 1, SFX_EGG_BOMB
anim_obj ANIM_OBJ_17, 148, 32, $0
anim_wait 5
@@ -4692,16 +4677,13 @@ BattleAnim_Selfdestruct_branch_cbb8f:
anim_obj ANIM_OBJ_17, 132, 52, $0
anim_ret
-BattleAnim_Growl_branch_cbbbc:
-BattleAnim_Roar_branch_cbbbc:
-BattleAnim_Snore_branch_cbbbc:
+BattleAnimSub_Sound:
anim_obj ANIM_OBJ_4B, 64, 76, $0
anim_obj ANIM_OBJ_4B, 64, 88, $1
anim_obj ANIM_OBJ_4B, 64, 100, $2
anim_ret
-BattleAnim_FirePunch_branch_cbbcc:
-BattleAnim_TriAttack_branch_cbbcc:
+BattleAnimSub_Fire:
anim_sound 0, 1, SFX_EMBER
.loop
anim_obj ANIM_OBJ_BURNED, 136, 56, $10
@@ -4710,9 +4692,7 @@ BattleAnim_TriAttack_branch_cbbcc:
anim_loop 4, .loop
anim_ret
-BattleAnim_IcePunch_branch_cbbdf:
-BattleAnim_PowderSnow_branch_cbbdf:
-BattleAnim_TriAttack_branch_cbbdf:
+BattleAnimSub_Ice:
anim_sound 0, 1, SFX_SHINE
anim_obj ANIM_OBJ_12, 128, 42, $0
anim_wait 6
@@ -4732,9 +4712,7 @@ BattleAnim_TriAttack_branch_cbbdf:
anim_obj ANIM_OBJ_12, 128, 70, $0
anim_ret
-BattleAnim_SludgeBomb_branch_cbc15:
-BattleAnim_Sludge_branch_cbc15:
-BattleAnim_Toxic_branch_cbc15:
+BattleAnimSub_Sludge:
.loop
anim_sound 0, 1, SFX_TOXIC
anim_obj ANIM_OBJ_1A, 132, 72, $0
@@ -4748,8 +4726,7 @@ BattleAnim_Toxic_branch_cbc15:
anim_loop 5, .loop
anim_ret
-BattleAnim_Acid_branch_cbc35:
-BattleAnim_Toxic_branch_cbc35:
+BattleAnimSub_Acid:
.loop
anim_sound 6, 2, SFX_BUBBLEBEAM
anim_obj ANIM_OBJ_19, 64, 92, $10
@@ -4757,10 +4734,7 @@ BattleAnim_Toxic_branch_cbc35:
anim_loop 8, .loop
anim_ret
-BattleAnim_Harden_branch_cbc43:
-BattleAnim_IronTail_branch_cbc43:
-BattleAnim_MetalClaw_branch_cbc43:
-BattleAnim_SteelWing_branch_cbc43:
+BattleAnimSub_Metallic:
anim_sound 0, 0, SFX_SHINE
anim_bgeffect ANIM_BG_17, $0, $1, $40
anim_wait 8
@@ -4771,8 +4745,7 @@ BattleAnim_SteelWing_branch_cbc43:
anim_incbgeffect ANIM_BG_17
anim_ret
-BattleAnim_MudSlap_branch_cbc5b:
-BattleAnim_SandAttack_branch_cbc5b:
+BattleAnimSub_SandOrMud:
.loop
anim_sound 6, 2, SFX_MENU
anim_obj ANIM_OBJ_58, 64, 92, $4
@@ -4781,9 +4754,7 @@ BattleAnim_SandAttack_branch_cbc5b:
anim_wait 32
anim_ret
-BattleAnim_Moonlight_branch_cbc6a:
-BattleAnim_MorningSun_branch_cbc6a:
-BattleAnim_Synthesis_branch_cbc6a:
+BattleAnimSub_Glimmer:
anim_sound 0, 0, SFX_METRONOME
anim_obj ANIM_OBJ_GLIMMER, 44, 64, $0
anim_wait 5
@@ -4793,9 +4764,7 @@ BattleAnim_Synthesis_branch_cbc6a:
anim_wait 21
anim_ret
-BattleAnim_Moonlight_branch_cbc80:
-BattleAnim_MorningSun_branch_cbc80:
-BattleAnim_Synthesis_branch_cbc80:
+BattleAnimSub_Glimmer2:
anim_sound 0, 0, SFX_METRONOME
.loop
anim_obj ANIM_OBJ_GLIMMER, 24, 64, $0
diff --git a/data/moves/critical_hit_moves.asm b/data/moves/critical_hit_moves.asm
new file mode 100644
index 00000000..4a473057
--- /dev/null
+++ b/data/moves/critical_hit_moves.asm
@@ -0,0 +1,9 @@
+CriticalHitMoves:
+ db KARATE_CHOP
+ db RAZOR_WIND
+ db RAZOR_LEAF
+ db CRABHAMMER
+ db SLASH
+ db AEROBLAST
+ db CROSS_CHOP
+ db -1
diff --git a/data/moves/effects.asm b/data/moves/effects.asm
new file mode 100644
index 00000000..8e5b5c17
--- /dev/null
+++ b/data/moves/effects.asm
@@ -0,0 +1,2077 @@
+INCLUDE "data/moves/effects_pointers.asm"
+
+MoveEffects: ; used only for BANK(MoveEffects)
+
+NormalHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+DoSleep:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ checksafeguard
+ sleeptarget
+ endmove
+
+PoisonHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ poisontarget
+ endmove
+
+LeechHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ draintarget
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+BurnHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ burntarget
+ endmove
+
+FreezeHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ freezetarget
+ endmove
+
+ParalyzeHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ paralyzetarget
+ endmove
+
+Selfdestruct:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ selfdestruct
+ moveanimnosub
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+DreamEater:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ eatdream
+ checkfaint
+ buildopponentrage
+ endmove
+
+MirrorMove:
+ checkobedience
+ usedmovetext
+ doturn
+ mirrormove
+ endmove
+
+AttackUp:
+ checkobedience
+ usedmovetext
+ doturn
+ attackup
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+DefenseUp:
+ checkobedience
+ usedmovetext
+ doturn
+ defenseup
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+SpeedUp:
+ checkobedience
+ usedmovetext
+ doturn
+ speedup
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+SpecialAttackUp:
+ checkobedience
+ usedmovetext
+ doturn
+ specialattackup
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+SpecialDefenseUp:
+ checkobedience
+ usedmovetext
+ doturn
+ specialdefenseup
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+AccuracyUp:
+ checkobedience
+ usedmovetext
+ doturn
+ accuracyup
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+EvasionUp:
+ checkobedience
+ usedmovetext
+ doturn
+ lowersub
+ evasionup
+ statupanim
+ lowersubnoanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+AttackUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ attackup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+DefenseUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ defenseup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+SpeedUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ speedup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+SpecialAttackUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ specialattackup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+SpecialDefenseUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ specialdefenseup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+AccuracyUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ accuracyup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+EvasionUp2:
+ checkobedience
+ usedmovetext
+ doturn
+ evasionup2
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
+
+AttackDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ attackdown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+DefenseDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ defensedown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+SpeedDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ speeddown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+SpecialAttackDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ specialattackdown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+SpecialDefenseDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ specialdefensedown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+AccuracyDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ accuracydown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+EvasionDown:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ evasiondown
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+AttackDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ attackdown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+DefenseDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ defensedown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+SpeedDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ speeddown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+SpecialAttackDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ specialattackdown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+SpecialDefenseDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ specialdefensedown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+AccuracyDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ accuracydown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+EvasionDown2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ evasiondown2
+ lowersub
+ statdownanim
+ raisesub
+ statdownmessage
+ statdownfailtext
+ endmove
+
+AttackDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ attackdown
+ statdownmessage
+ endmove
+
+DefenseDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ effectchance ; bug: duplicate effectchance shouldn't be here
+ defensedown
+ statdownmessage
+ endmove
+
+SpeedDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ speeddown
+ statdownmessage
+ endmove
+
+SpecialAttackDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ specialattackdown
+ statdownmessage
+ endmove
+
+SpecialDefenseDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ specialdefensedown
+ statdownmessage
+ endmove
+
+AccuracyDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ accuracydown
+ statdownmessage
+ endmove
+
+EvasionDownHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ evasiondown
+ statdownmessage
+ endmove
+
+DefenseUpHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ defenseup
+ statupmessage
+ endmove
+
+AttackUpHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ attackup
+ statupmessage
+ endmove
+
+AllUpHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ allstatsup
+ endmove
+
+PayDay:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ payday
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Conversion:
+ checkobedience
+ usedmovetext
+ doturn
+ conversion
+ endmove
+
+ResetStats:
+ checkobedience
+ usedmovetext
+ doturn
+ resetstats
+ endmove
+
+Bide:
+ storeenergy
+ checkobedience
+ doturn
+ usedmovetext
+ unleashenergy
+ resettypematchup
+ checkhit
+ moveanim
+ bidefailtext
+ applydamage
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Rampage:
+ checkrampage
+ checkobedience
+ doturn
+ rampage
+ usedmovetext
+ checkhit
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ clearmissdamage
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+ForceSwitch:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ forceswitch
+ endmove
+
+MultiHit:
+ checkobedience
+ usedmovetext
+ doturn
+ startloop
+ lowersub
+ checkhit
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ clearmissdamage
+ moveanimnosub
+ failuretext
+ applydamage
+ criticaltext
+ cleartext
+ supereffectivelooptext
+ checkfaint
+ buildopponentrage
+ endloop
+ raisesub
+ kingsrock
+ endmove
+
+PoisonMultiHit:
+ checkobedience
+ usedmovetext
+ doturn
+ startloop
+ lowersub
+ checkhit
+ effectchance
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ clearmissdamage
+ moveanimnosub
+ failuretext
+ applydamage
+ criticaltext
+ cleartext
+ supereffectivelooptext
+ checkfaint
+ buildopponentrage
+ endloop
+ raisesub
+ kingsrock
+ poisontarget
+ endmove
+
+FlinchHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ flinchtarget
+ endmove
+
+OHKOHit:
+ checkobedience
+ usedmovetext
+ doturn
+ stab
+ ohko
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ endmove
+
+RecoilHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ recoil
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Mist:
+ checkobedience
+ usedmovetext
+ doturn
+ mist
+ endmove
+
+FocusEnergy:
+ checkobedience
+ usedmovetext
+ doturn
+ focusenergy
+ endmove
+
+DoConfuse:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ checksafeguard
+ confuse
+ endmove
+
+ConfuseHit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ confusetarget
+ endmove
+
+Heal:
+ checkobedience
+ usedmovetext
+ doturn
+ heal
+ endmove
+
+Transform:
+ checkobedience
+ usedmovetext
+ doturn
+ transform
+ endmove
+
+LightScreen:
+Reflect:
+ checkobedience
+ usedmovetext
+ doturn
+ screen
+ endmove
+
+TriAttack:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ tristatuschance
+ endmove
+
+Toxic:
+DoPoison:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ stab
+ checksafeguard
+ poison
+ endmove
+
+DoParalyze:
+ checkobedience
+ usedmovetext
+ doturn
+ stab
+ checkhit
+ checksafeguard
+ paralyze
+ endmove
+
+SkyAttack:
+ checkcharge
+ checkobedience
+ doturn
+ charge
+ usedmovetext
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ flinchtarget
+ kingsrock
+ endmove
+
+Substitute:
+ checkobedience
+ usedmovetext
+ doturn
+ substitute
+ endmove
+
+HyperBeam:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ rechargenextturn
+ checkfaint
+ buildopponentrage
+ endmove
+
+Rage:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ checkhit
+ ragedamage
+ damagevariation
+ moveanim
+ failuretext
+ rage
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Mimic:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ mimic
+ endmove
+
+Metronome:
+ checkobedience
+ usedmovetext
+ doturn
+ metronome
+ endmove
+
+LeechSeed:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ leechseed
+ endmove
+
+Splash:
+ checkobedience
+ usedmovetext
+ doturn
+ splash
+ endmove
+
+Disable:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ disable
+ endmove
+
+RazorWind:
+ checkcharge
+ checkobedience
+ doturn
+ charge
+ usedmovetext
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Fly:
+ checkcharge
+ checkobedience
+ doturn
+ charge
+ usedmovetext
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanimnosub
+ raisesub
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+TrapTarget:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ clearmissdamage
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ traptarget
+ endmove
+
+SuperFang:
+Psywave:
+StaticDamage:
+ checkobedience
+ usedmovetext
+ doturn
+ constantdamage
+ checkhit
+ resettypematchup
+ moveanim
+ failuretext
+ applydamage
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Reversal:
+ checkobedience
+ usedmovetext
+ doturn
+ constantdamage
+ stab
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Counter:
+ checkobedience
+ usedmovetext
+ doturn
+ counter
+ moveanim
+ failuretext
+ applydamage
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Encore:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ encore
+ endmove
+
+PainSplit:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ painsplit
+ endmove
+
+Snore:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ snore
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ flinchtarget
+ kingsrock
+ endmove
+
+Conversion2:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ conversion2
+ endmove
+
+LockOn:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ lockon
+ endmove
+
+Sketch:
+ checkobedience
+ usedmovetext
+ doturn
+ sketch
+ endmove
+
+DefrostOpponent:
+ checkobedience
+ usedmovetext
+ doturn
+ defrostopponent
+ endmove
+
+SleepTalk:
+ checkobedience
+ usedmovetext
+ doturn
+ sleeptalk
+ endmove
+
+DestinyBond:
+ checkobedience
+ usedmovetext
+ doturn
+ destinybond
+ endmove
+
+Spite:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ spite
+ endmove
+
+FalseSwipe:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ falseswipe
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+HealBell:
+ checkobedience
+ usedmovetext
+ doturn
+ healbell
+ endmove
+
+TripleKick:
+ checkobedience
+ usedmovetext
+ doturn
+ startloop
+ lowersub
+ checkhit
+ critical
+ damagestats
+ damagecalc
+ triplekick
+ stab
+ damagevariation
+ clearmissdamage
+ moveanimnosub
+ failuretext
+ applydamage
+ criticaltext
+ cleartext
+ supereffectivelooptext
+ checkfaint
+ buildopponentrage
+ kickcounter
+ endloop
+ raisesub
+ kingsrock
+ endmove
+
+Thief:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ thief
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+MeanLook:
+ checkobedience
+ usedmovetext
+ doturn
+ arenatrap
+ endmove
+
+Nightmare:
+ checkobedience
+ usedmovetext
+ doturn
+ nightmare
+ endmove
+
+FlameWheel:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ defrost
+ checkfaint
+ buildopponentrage
+ burntarget
+ endmove
+
+Curse:
+ checkobedience
+ usedmovetext
+ doturn
+ curse
+ endmove
+
+Protect:
+ checkobedience
+ usedmovetext
+ doturn
+ protect
+ endmove
+
+Spikes:
+ checkobedience
+ usedmovetext
+ doturn
+ spikes
+ endmove
+
+Foresight:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ foresight
+ endmove
+
+PerishSong:
+ checkobedience
+ usedmovetext
+ doturn
+ perishsong
+ endmove
+
+Sandstorm:
+ checkobedience
+ usedmovetext
+ doturn
+ startsandstorm
+ endmove
+
+Endure:
+ checkobedience
+ usedmovetext
+ doturn
+ endure
+ endmove
+
+Rollout:
+ checkcurl
+ checkobedience
+ doturn
+ usedmovetext
+ critical
+ damagestats
+ damagecalc
+ stab
+ checkhit
+ rolloutpower
+ damagevariation
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Swagger:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ switchturn
+ attackup2
+ switchturn
+ lowersub
+ statupanim
+ raisesub
+ failuretext
+ switchturn
+ statupmessage
+ switchturn
+ confusetarget
+ endmove
+
+FuryCutter:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ checkhit
+ furycutter
+ damagevariation
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Attract:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ attract
+ endmove
+
+Return:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ happinesspower
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Present:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ critical
+ damagestats
+ present
+ damagecalc
+ stab
+ damagevariation
+ clearmissdamage
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Frustration:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ frustrationpower
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Safeguard:
+ checkobedience
+ usedmovetext
+ doturn
+ safeguard
+ endmove
+
+SacredFire:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ defrost
+ checkfaint
+ buildopponentrage
+ burntarget
+ endmove
+
+Magnitude:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ getmagnitude
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ doubleundergrounddamage
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+BatonPass:
+ checkobedience
+ usedmovetext
+ doturn
+ batonpass
+ endmove
+
+Pursuit:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ pursuit
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+RapidSpin:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ clearhazards
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+MorningSun:
+ checkobedience
+ usedmovetext
+ doturn
+ healmorn
+ endmove
+
+Synthesis:
+ checkobedience
+ usedmovetext
+ doturn
+ healday
+ endmove
+
+Moonlight:
+ checkobedience
+ usedmovetext
+ doturn
+ healnite
+ endmove
+
+HiddenPower:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ hiddenpower
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+RainDance:
+ checkobedience
+ usedmovetext
+ doturn
+ startrain
+ endmove
+
+SunnyDay:
+ checkobedience
+ usedmovetext
+ doturn
+ startsun
+ endmove
+
+FakeOut:
+ checkobedience
+ usedmovetext
+ doturn
+ checkhit
+ fakeout
+ moveanim
+ failuretext
+ endmove
+
+BellyDrum:
+ checkobedience
+ usedmovetext
+ doturn
+ bellydrum
+ endmove
+
+PsychUp:
+ checkobedience
+ usedmovetext
+ doturn
+ psychup
+ endmove
+
+MirrorCoat:
+ checkobedience
+ usedmovetext
+ doturn
+ mirrorcoat
+ moveanim
+ failuretext
+ applydamage
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+SkullBash:
+ checkcharge
+ checkobedience
+ doturn
+ charge
+ usedmovetext
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endturn
+ defenseup
+ statupmessage
+ endmove
+
+Twister:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ doubleflyingdamage
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ flinchtarget
+ endmove
+
+Earthquake:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ doubleundergrounddamage
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ endmove
+
+FutureSight:
+ checkfuturesight
+ checkobedience
+ usedmovetext
+ doturn
+ damagestats
+ damagecalc
+ futuresight
+ damagevariation ; skip here if last turn
+ checkhit
+ moveanimnosub
+ failuretext
+ applydamage
+ checkfaint
+ buildopponentrage
+ endmove
+
+Gust:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ doubleflyingdamage
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ endmove
+
+Stomp:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ doubleminimizedamage
+ checkhit
+ effectchance
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ flinchtarget
+ endmove
+
+Solarbeam:
+ checkcharge
+ checkobedience
+ doturn
+ skipsuncharge
+ charge
+ usedmovetext
+ critical
+ damagestats
+ damagecalc
+ stab
+ damagevariation
+ checkhit
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ kingsrock
+ endmove
+
+Thunder:
+ checkobedience
+ usedmovetext
+ doturn
+ critical
+ damagestats
+ damagecalc
+ thunderaccuracy
+ checkhit
+ effectchance
+ stab
+ damagevariation
+ moveanim
+ failuretext
+ applydamage
+ criticaltext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ paralyzetarget
+ endmove
+
+Teleport:
+ checkobedience
+ usedmovetext
+ doturn
+ teleport
+ endmove
+
+BeatUp:
+ checkobedience
+ usedmovetext
+ movedelay
+ doturn
+ startloop
+ lowersub
+ checkhit
+ critical
+ beatup
+ damagecalc
+ damagevariation
+ clearmissdamage
+ moveanimnosub
+ failuretext
+ applydamage
+ criticaltext
+ cleartext
+ supereffectivetext
+ checkfaint
+ buildopponentrage
+ endloop
+ beatupfailtext
+ raisesub
+ kingsrock
+ endmove
+
+DefenseCurl:
+ checkobedience
+ usedmovetext
+ doturn
+ defenseup
+ curl
+ lowersub
+ statupanim
+ raisesub
+ statupmessage
+ statupfailtext
+ endmove
diff --git a/data/moves/effects_pointers.asm b/data/moves/effects_pointers.asm
new file mode 100644
index 00000000..94834de7
--- /dev/null
+++ b/data/moves/effects_pointers.asm
@@ -0,0 +1,159 @@
+MoveEffectsPointers:
+; entries correspond to EFFECT_* constants
+ dw NormalHit
+ dw DoSleep
+ dw PoisonHit
+ dw LeechHit
+ dw BurnHit
+ dw FreezeHit
+ dw ParalyzeHit
+ dw Selfdestruct
+ dw DreamEater
+ dw MirrorMove
+ dw AttackUp
+ dw DefenseUp
+ dw SpeedUp
+ dw SpecialAttackUp
+ dw SpecialDefenseUp
+ dw AccuracyUp
+ dw EvasionUp
+ dw NormalHit
+ dw AttackDown
+ dw DefenseDown
+ dw SpeedDown
+ dw SpecialAttackDown
+ dw SpecialDefenseDown
+ dw AccuracyDown
+ dw EvasionDown
+ dw ResetStats
+ dw Bide
+ dw Rampage
+ dw ForceSwitch
+ dw MultiHit
+ dw Conversion
+ dw FlinchHit
+ dw Heal
+ dw Toxic
+ dw PayDay
+ dw LightScreen
+ dw TriAttack
+ dw NormalHit
+ dw OHKOHit
+ dw RazorWind
+ dw SuperFang
+ dw StaticDamage
+ dw TrapTarget
+ dw NormalHit
+ dw MultiHit
+ dw NormalHit
+ dw Mist
+ dw FocusEnergy
+ dw RecoilHit
+ dw DoConfuse
+ dw AttackUp2
+ dw DefenseUp2
+ dw SpeedUp2
+ dw SpecialAttackUp2
+ dw SpecialDefenseUp2
+ dw AccuracyUp2
+ dw EvasionUp2
+ dw Transform
+ dw AttackDown2
+ dw DefenseDown2
+ dw SpeedDown2
+ dw SpecialAttackDown2
+ dw SpecialDefenseDown2
+ dw AccuracyDown2
+ dw EvasionDown2
+ dw Reflect
+ dw DoPoison
+ dw DoParalyze
+ dw AttackDownHit
+ dw DefenseDownHit
+ dw SpeedDownHit
+ dw SpecialAttackDownHit
+ dw SpecialDefenseDownHit
+ dw AccuracyDownHit
+ dw EvasionDownHit
+ dw SkyAttack
+ dw ConfuseHit
+ dw PoisonMultiHit
+ dw NormalHit
+ dw Substitute
+ dw HyperBeam
+ dw Rage
+ dw Mimic
+ dw Metronome
+ dw LeechSeed
+ dw Splash
+ dw Disable
+ dw StaticDamage
+ dw Psywave
+ dw Counter
+ dw Encore
+ dw PainSplit
+ dw Snore
+ dw Conversion2
+ dw LockOn
+ dw Sketch
+ dw DefrostOpponent
+ dw SleepTalk
+ dw DestinyBond
+ dw Reversal
+ dw Spite
+ dw FalseSwipe
+ dw HealBell
+ dw NormalHit
+ dw TripleKick
+ dw Thief
+ dw MeanLook
+ dw Nightmare
+ dw FlameWheel
+ dw Curse
+ dw NormalHit
+ dw Protect
+ dw Spikes
+ dw Foresight
+ dw PerishSong
+ dw Sandstorm
+ dw Endure
+ dw Rollout
+ dw Swagger
+ dw FuryCutter
+ dw Attract
+ dw Return
+ dw Present
+ dw Frustration
+ dw Safeguard
+ dw SacredFire
+ dw Magnitude
+ dw BatonPass
+ dw Pursuit
+ dw RapidSpin
+ dw NormalHit
+ dw NormalHit
+ dw MorningSun
+ dw Synthesis
+ dw Moonlight
+ dw HiddenPower
+ dw RainDance
+ dw SunnyDay
+ dw DefenseUpHit
+ dw AttackUpHit
+ dw AllUpHit
+ dw FakeOut
+ dw BellyDrum
+ dw PsychUp
+ dw MirrorCoat
+ dw SkullBash
+ dw Twister
+ dw Earthquake
+ dw FutureSight
+ dw Gust
+ dw Stomp
+ dw Solarbeam
+ dw Thunder
+ dw Teleport
+ dw BeatUp
+ dw Fly
+ dw DefenseCurl
diff --git a/data/moves/effects_priorities.asm b/data/moves/effects_priorities.asm
new file mode 100644
index 00000000..dfdb636a
--- /dev/null
+++ b/data/moves/effects_priorities.asm
@@ -0,0 +1,8 @@
+MoveEffectPriorities:
+ db EFFECT_PROTECT, 3
+ db EFFECT_ENDURE, 3
+ db EFFECT_PRIORITY_HIT, 2
+ db EFFECT_FORCE_SWITCH, 0
+ db EFFECT_COUNTER, 0
+ db EFFECT_MIRROR_COAT, 0
+ db -1
diff --git a/data/moves/flail_reversal_power.asm b/data/moves/flail_reversal_power.asm
new file mode 100644
index 00000000..fb915905
--- /dev/null
+++ b/data/moves/flail_reversal_power.asm
@@ -0,0 +1,8 @@
+FlailReversalPower:
+ ; hp bar pixels, power
+ db HP_BAR_LENGTH_PX / 48, 200
+ db HP_BAR_LENGTH_PX / 12, 150
+ db HP_BAR_LENGTH_PX / 5, 100
+ db HP_BAR_LENGTH_PX / 3, 80
+ db HP_BAR_LENGTH_PX * 2 / 3, 40
+ db HP_BAR_LENGTH_PX, 20
diff --git a/data/moves/grammar.asm b/data/moves/grammar.asm
new file mode 100644
index 00000000..f2474808
--- /dev/null
+++ b/data/moves/grammar.asm
@@ -0,0 +1,101 @@
+; Used by GetMoveGrammar (see engine/battle/used_move_text.asm)
+; Each move is given an identifier for what usedmovetext to use (0-4).
+; Made redundant in English localization, where all are just "[mon]¯used [move]!"
+
+MoveGrammar:
+; 0: originally "[mon]の¯[move]¯つかった!" ("[mon]¯used¯[move]!")
+ db SWORDS_DANCE
+ db GROWTH
+ db STRENGTH
+ db HARDEN
+ db MINIMIZE
+ db SMOKESCREEN
+ db WITHDRAW
+ db DEFENSE_CURL
+ db EGG_BOMB
+ db SMOG
+ db BONE_CLUB
+ db FLASH
+ db SPLASH
+ db ACID_ARMOR
+ db BONEMERANG
+ db REST
+ db SHARPEN
+ db SUBSTITUTE
+ db MIND_READER
+ db SNORE
+ db PROTECT
+ db SPIKES
+ db ENDURE
+ db ROLLOUT
+ db SWAGGER
+ db SLEEP_TALK
+ db HIDDEN_POWER
+ db PSYCH_UP
+ db EXTREMESPEED
+ db 0 ; end set
+
+; 1: originally "[mon]の¯[move]した!" ("[mon]¯did [move]!")
+ db RECOVER
+ db TELEPORT
+ db BIDE
+ db SELFDESTRUCT
+ db AMNESIA
+ db FLAIL
+ db 0 ; end set
+
+; 2: originally "[mon]の¯[move]¯した!" ("[mon]¯did¯[move]!")
+ db MEDITATE
+ db AGILITY
+ db MIMIC
+ db DOUBLE_TEAM
+ db BARRAGE
+ db TRANSFORM
+ db STRUGGLE
+ db SCARY_FACE
+ db 0 ; end set
+
+; 3: originally "[mon]の¯[move] こうげき!" ("[mon]'s¯[move] attack!")
+ db POUND
+ db SCRATCH
+ db VICEGRIP
+ db WING_ATTACK
+ db FLY
+ db BIND
+ db SLAM
+ db HORN_ATTACK
+ db WRAP
+ db THRASH
+ db TAIL_WHIP
+ db LEER
+ db BITE
+ db GROWL
+ db ROAR
+ db SING
+ db PECK
+ db ABSORB
+ db STRING_SHOT
+ db EARTHQUAKE
+ db FISSURE
+ db DIG
+ db TOXIC
+ db SCREECH
+ db METRONOME
+ db LICK
+ db CLAMP
+ db CONSTRICT
+ db POISON_GAS
+ db BUBBLE
+ db SLASH
+ db SPIDER_WEB
+ db NIGHTMARE
+ db CURSE
+ db FORESIGHT
+ db CHARM
+ db ATTRACT
+ db ROCK_SMASH
+ db 0 ; end set
+
+; 4: originally "[mon]の¯[move]!" ("[mon]'s¯[move]!")
+; Any move not listed above uses this grammar.
+ db -1 ; end
diff --git a/data/moves/magnitude_power.asm b/data/moves/magnitude_power.asm
new file mode 100644
index 00000000..632a0c03
--- /dev/null
+++ b/data/moves/magnitude_power.asm
@@ -0,0 +1,9 @@
+MagnitudePower:
+ ; chance, power, magnitude #
+ db 5 percent + 1, 10, 4 ; 5%
+ db 15 percent, 30, 5 ; 10%
+ db 35 percent, 50, 6 ; 20%
+ db 65 percent + 1, 70, 7 ; 30%
+ db 85 percent + 1, 90, 8 ; 20%
+ db 95 percent, 110, 9 ; 10%
+ db 100 percent, 150, 10 ; 5%
diff --git a/data/moves/metronome_exception_moves.asm b/data/moves/metronome_exception_moves.asm
new file mode 100644
index 00000000..a5aa4413
--- /dev/null
+++ b/data/moves/metronome_exception_moves.asm
@@ -0,0 +1,17 @@
+; Metronome cannot turn into these moves.
+
+MetronomeExcepts:
+ db NO_MOVE
+ db METRONOME
+ db STRUGGLE
+ db SKETCH
+ db MIMIC
+ db COUNTER
+ db MIRROR_COAT
+ db PROTECT
+ db DETECT
+ db ENDURE
+ db DESTINY_BOND
+ db SLEEP_TALK
+ db THIEF
+ db -1
diff --git a/data/moves/names.asm b/data/moves/names.asm
new file mode 100644
index 00000000..cfc7ac54
--- /dev/null
+++ b/data/moves/names.asm
@@ -0,0 +1,252 @@
+MoveNames::
+ db "POUND@"
+ db "KARATE CHOP@"
+ db "DOUBLESLAP@"
+ db "COMET PUNCH@"
+ db "MEGA PUNCH@"
+ db "PAY DAY@"
+ db "FIRE PUNCH@"
+ db "ICE PUNCH@"
+ db "THUNDERPUNCH@"
+ db "SCRATCH@"
+ db "VICEGRIP@"
+ db "GUILLOTINE@"
+ db "RAZOR WIND@"
+ db "SWORDS DANCE@"
+ db "CUT@"
+ db "GUST@"
+ db "WING ATTACK@"
+ db "WHIRLWIND@"
+ db "FLY@"
+ db "BIND@"
+ db "SLAM@"
+ db "VINE WHIP@"
+ db "STOMP@"
+ db "DOUBLE KICK@"
+ db "MEGA KICK@"
+ db "JUMP KICK@"
+ db "ROLLING KICK@"
+ db "SAND-ATTACK@"
+ db "HEADBUTT@"
+ db "HORN ATTACK@"
+ db "FURY ATTACK@"
+ db "HORN DRILL@"
+ db "TACKLE@"
+ db "BODY SLAM@"
+ db "WRAP@"
+ db "TAKE DOWN@"
+ db "THRASH@"
+ db "DOUBLE-EDGE@"
+ db "TAIL WHIP@"
+ db "POISON STING@"
+ db "TWINEEDLE@"
+ db "PIN MISSILE@"
+ db "LEER@"
+ db "BITE@"
+ db "GROWL@"
+ db "ROAR@"
+ db "SING@"
+ db "SUPERSONIC@"
+ db "SONICBOOM@"
+ db "DISABLE@"
+ db "ACID@"
+ db "EMBER@"
+ db "FLAMETHROWER@"
+ db "MIST@"
+ db "WATER GUN@"
+ db "HYDRO PUMP@"
+ db "SURF@"
+ db "ICE BEAM@"
+ db "BLIZZARD@"
+ db "PSYBEAM@"
+ db "BUBBLEBEAM@"
+ db "AURORA BEAM@"
+ db "HYPER BEAM@"
+ db "PECK@"
+ db "DRILL PECK@"
+ db "SUBMISSION@"
+ db "LOW KICK@"
+ db "COUNTER@"
+ db "SEISMIC TOSS@"
+ db "STRENGTH@"
+ db "ABSORB@"
+ db "MEGA DRAIN@"
+ db "LEECH SEED@"
+ db "GROWTH@"
+ db "RAZOR LEAF@"
+ db "SOLARBEAM@"
+ db "POISONPOWDER@"
+ db "STUN SPORE@"
+ db "SLEEP POWDER@"
+ db "PETAL DANCE@"
+ db "STRING SHOT@"
+ db "DRAGON RAGE@"
+ db "FIRE SPIN@"
+ db "THUNDERSHOCK@"
+ db "THUNDERBOLT@"
+ db "THUNDER WAVE@"
+ db "THUNDER@"
+ db "ROCK THROW@"
+ db "EARTHQUAKE@"
+ db "FISSURE@"
+ db "DIG@"
+ db "TOXIC@"
+ db "CONFUSION@"
+ db "PSYCHIC@"
+ db "HYPNOSIS@"
+ db "MEDITATE@"
+ db "AGILITY@"
+ db "QUICK ATTACK@"
+ db "RAGE@"
+ db "TELEPORT@"
+ db "NIGHT SHADE@"
+ db "MIMIC@"
+ db "SCREECH@"
+ db "DOUBLE TEAM@"
+ db "RECOVER@"
+ db "HARDEN@"
+ db "MINIMIZE@"
+ db "SMOKESCREEN@"
+ db "CONFUSE RAY@"
+ db "WITHDRAW@"
+ db "DEFENSE CURL@"
+ db "BARRIER@"
+ db "LIGHT SCREEN@"
+ db "HAZE@"
+ db "REFLECT@"
+ db "FOCUS ENERGY@"
+ db "BIDE@"
+ db "METRONOME@"
+ db "MIRROR MOVE@"
+ db "SELFDESTRUCT@"
+ db "EGG BOMB@"
+ db "LICK@"
+ db "SMOG@"
+ db "SLUDGE@"
+ db "BONE CLUB@"
+ db "FIRE BLAST@"
+ db "WATERFALL@"
+ db "CLAMP@"
+ db "SWIFT@"
+ db "SKULL BASH@"
+ db "SPIKE CANNON@"
+ db "CONSTRICT@"
+ db "AMNESIA@"
+ db "KINESIS@"
+ db "SOFTBOILED@"
+ db "HI JUMP KICK@"
+ db "GLARE@"
+ db "DREAM EATER@"
+ db "POISON GAS@"
+ db "BARRAGE@"
+ db "LEECH LIFE@"
+ db "LOVELY KISS@"
+ db "SKY ATTACK@"
+ db "TRANSFORM@"
+ db "BUBBLE@"
+ db "DIZZY PUNCH@"
+ db "SPORE@"
+ db "FLASH@"
+ db "PSYWAVE@"
+ db "SPLASH@"
+ db "ACID ARMOR@"
+ db "CRABHAMMER@"
+ db "EXPLOSION@"
+ db "FURY SWIPES@"
+ db "BONEMERANG@"
+ db "REST@"
+ db "ROCK SLIDE@"
+ db "HYPER FANG@"
+ db "SHARPEN@"
+ db "CONVERSION@"
+ db "TRI ATTACK@"
+ db "SUPER FANG@"
+ db "SLASH@"
+ db "SUBSTITUTE@"
+ db "STRUGGLE@"
+ db "SKETCH@"
+ db "TRIPLE KICK@"
+ db "THIEF@"
+ db "SPIDER WEB@"
+ db "MIND READER@"
+ db "NIGHTMARE@"
+ db "FLAME WHEEL@"
+ db "SNORE@"
+ db "CURSE@"
+ db "FLAIL@"
+ db "CONVERSION2@"
+ db "AEROBLAST@"
+ db "COTTON SPORE@"
+ db "REVERSAL@"
+ db "SPITE@"
+ db "POWDER SNOW@"
+ db "PROTECT@"
+ db "MACH PUNCH@"
+ db "SCARY FACE@"
+ db "FAINT ATTACK@"
+ db "SWEET KISS@"
+ db "BELLY DRUM@"
+ db "SLUDGE BOMB@"
+ db "MUD-SLAP@"
+ db "OCTAZOOKA@"
+ db "SPIKES@"
+ db "ZAP CANNON@"
+ db "FORESIGHT@"
+ db "DESTINY BOND@"
+ db "PERISH SONG@"
+ db "ICY WIND@"
+ db "DETECT@"
+ db "BONE RUSH@"
+ db "LOCK-ON@"
+ db "OUTRAGE@"
+ db "SANDSTORM@"
+ db "GIGA DRAIN@"
+ db "ENDURE@"
+ db "CHARM@"
+ db "ROLLOUT@"
+ db "FALSE SWIPE@"
+ db "SWAGGER@"
+ db "MILK DRINK@"
+ db "SPARK@"
+ db "FURY CUTTER@"
+ db "STEEL WING@"
+ db "MEAN LOOK@"
+ db "ATTRACT@"
+ db "SLEEP TALK@"
+ db "HEAL BELL@"
+ db "RETURN@"
+ db "PRESENT@"
+ db "FRUSTRATION@"
+ db "SAFEGUARD@"
+ db "PAIN SPLIT@"
+ db "SACRED FIRE@"
+ db "MAGNITUDE@"
+ db "DYNAMICPUNCH@"
+ db "MEGAHORN@"
+ db "DRAGONBREATH@"
+ db "BATON PASS@"
+ db "ENCORE@"
+ db "PURSUIT@"
+ db "RAPID SPIN@"
+ db "SWEET SCENT@"
+ db "IRON TAIL@"
+ db "METAL CLAW@"
+ db "VITAL THROW@"
+ db "MORNING SUN@"
+ db "SYNTHESIS@"
+ db "MOONLIGHT@"
+ db "HIDDEN POWER@"
+ db "CROSS CHOP@"
+ db "TWISTER@"
+ db "RAIN DANCE@"
+ db "SUNNY DAY@"
+ db "CRUNCH@"
+ db "MIRROR COAT@"
+ db "PSYCH UP@"
+ db "EXTREMESPEED@"
+ db "ANCIENTPOWER@"
+ db "SHADOW BALL@"
+ db "FUTURE SIGHT@"
+ db "ROCK SMASH@"
+ db "WHIRLPOOL@"
+ db "BEAT UP@"
diff --git a/data/moves/present_power.asm b/data/moves/present_power.asm
new file mode 100644
index 00000000..9f85b8a6
--- /dev/null
+++ b/data/moves/present_power.asm
@@ -0,0 +1,6 @@
+PresentPower:
+ ; chance, power
+ db 40 percent, 40 ; 40% chance
+ db 70 percent + 1, 80 ; 30% chance
+ db 80 percent, 120 ; 10% chance
+ db -1 ; 20% chance to heal instead
diff --git a/data/moves/tmhm_moves.asm b/data/moves/tmhm_moves.asm
new file mode 100644
index 00000000..81c7d0ba
--- /dev/null
+++ b/data/moves/tmhm_moves.asm
@@ -0,0 +1,66 @@
+TMHMMoves:
+; entries correspond to *_TMNUM enums (see constants/item_constants.asm)
+; TMs
+ db DYNAMICPUNCH
+ db HEADBUTT
+ db CURSE
+ db ROLLOUT
+ db ROAR
+ db TOXIC
+ db ZAP_CANNON
+ db ROCK_SMASH
+ db PSYCH_UP
+ db HIDDEN_POWER
+ db SUNNY_DAY
+ db SWEET_SCENT
+ db SNORE
+ db BLIZZARD
+ db HYPER_BEAM
+ db ICY_WIND
+ db PROTECT
+ db RAIN_DANCE
+ db GIGA_DRAIN
+ db ENDURE
+ db FRUSTRATION
+ db SOLARBEAM
+ db IRON_TAIL
+ db DRAGONBREATH
+ db THUNDER
+ db EARTHQUAKE
+ db RETURN
+ db DIG
+ db PSYCHIC_M
+ db SHADOW_BALL
+ db MUD_SLAP
+ db DOUBLE_TEAM
+ db ICE_PUNCH
+ db SWAGGER
+ db SLEEP_TALK
+ db SLUDGE_BOMB
+ db SANDSTORM
+ db FIRE_BLAST
+ db SWIFT
+ db DEFENSE_CURL
+ db THUNDERPUNCH
+ db DREAM_EATER
+ db DETECT
+ db REST
+ db ATTRACT
+ db THIEF
+ db STEEL_WING
+ db FIRE_PUNCH
+ db FURY_CUTTER
+ db NIGHTMARE
+; HMs
+ db CUT
+ db FLY
+ db SURF
+ db STRENGTH
+ db FLASH
+ db WHIRLPOOL
+ db WATERFALL
+; Move tutor (Crystal-only)
+ db 0
+ db 0
+ db 0
+ db 0 ; end