summaryrefslogtreecommitdiff
path: root/battle/effects/metronome.asm
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2013-12-01 14:19:57 -0500
committeryenatch <yenatch@gmail.com>2013-12-01 14:19:57 -0500
commitd7cdd0ac7383fd120a2b8114af08541058cb691c (patch)
tree54ab2531a047f3275dbe66a0f28dca1a3e5eddeb /battle/effects/metronome.asm
parentd7bf70f3c902ce9380e05ccd6828b5e8973d4ae1 (diff)
split out some more move effects
Diffstat (limited to 'battle/effects/metronome.asm')
-rw-r--r--battle/effects/metronome.asm62
1 files changed, 62 insertions, 0 deletions
diff --git a/battle/effects/metronome.asm b/battle/effects/metronome.asm
new file mode 100644
index 000000000..fd3d151f0
--- /dev/null
+++ b/battle/effects/metronome.asm
@@ -0,0 +1,62 @@
+BattleCommand34: ; 37418
+; metronome
+
+ call Function0x372d8
+ call Function0x34548
+ jr nz, .asm_3742b
+
+ ld a, [$c689]
+ push af
+ call BattleCommand0a
+ pop af
+ ld [$c689], a
+
+.asm_3742b
+ call Function0x37e36
+
+.GetMove
+ call BattleRandom
+
+; No invalid moves.
+ cp NUM_ATTACKS + 1
+ jr nc, .GetMove
+
+; None of the moves in MetronomeExcepts.
+ push af
+ ld de, 1
+ ld hl, MetronomeExcepts
+ call IsInArray
+ pop bc
+ jr c, .GetMove
+
+; No moves the user already has.
+ ld a, b
+ call CheckUserMove
+ jr z, .GetMove
+
+
+ ld a, BATTLE_VARS_MOVE
+ call _GetBattleVar
+ ld [hl], b
+ call UpdateMoveData
+ jp ResetTurn
+; 37454
+
+
+MetronomeExcepts: ; 37454
+ 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
+; 37462
+