mirror of
https://github.com/thornAvery/jep-hack.git
synced 2025-09-17 02:30:50 +12:00
71 lines
1.2 KiB
NASM
71 lines
1.2 KiB
NASM
BattleCommand_Metronome:
|
|
call ClearLastMove
|
|
call CheckUserIsCharging
|
|
jr nz, .charging
|
|
|
|
ld a, [wBattleAnimParam]
|
|
push af
|
|
call BattleCommand_LowerSub
|
|
pop af
|
|
ld [wBattleAnimParam], a
|
|
|
|
.charging
|
|
call LoadMoveAnim
|
|
|
|
.GetMove:
|
|
call ChooseRandomMove
|
|
|
|
; None of the moves in MetronomeExcepts.
|
|
ld de, 2
|
|
ld hl, MetronomeExcepts
|
|
call IsInWordArray
|
|
jr c, .GetMove
|
|
ld h, b
|
|
ld l, c
|
|
call GetMoveIDFromIndex
|
|
|
|
; No moves the user already has.
|
|
ld b, a
|
|
call CheckUserMove
|
|
jr z, .GetMove
|
|
|
|
ld a, BATTLE_VARS_MOVE
|
|
call GetBattleVarAddr
|
|
ld [hl], b
|
|
call UpdateMoveData
|
|
jp ResetTurn
|
|
|
|
ChooseRandomMove:
|
|
; chooses a random valid move and returns it in bc
|
|
call BattleRandom
|
|
if HIGH(NUM_ATTACKS)
|
|
maskbits HIGH(NUM_ATTACKS) + 1
|
|
if HIGH(NUM_ATTACKS) & (HIGH(NUM_ATTACKS) + 1)
|
|
; if HIGH(NUM_ATTACKS) is not one less than a power of two
|
|
cp HIGH(NUM_ATTACKS) + 1
|
|
jr nc, ChooseRandomMove
|
|
endc
|
|
ld b, a
|
|
call BattleRandom
|
|
ld c, a
|
|
or b
|
|
jr z, ChooseRandomMove
|
|
if LOW(NUM_ATTACKS) != $ff
|
|
ld a, b
|
|
cp HIGH(NUM_ATTACKS)
|
|
ret nz
|
|
ld a, c
|
|
cp LOW(NUM_ATTACKS) + 1
|
|
jr nc, ChooseRandomMove
|
|
endc
|
|
else
|
|
cp NUM_ATTACKS
|
|
jr nc, ChooseRandomMove
|
|
inc a
|
|
ld c, a
|
|
ld b, 0
|
|
endc
|
|
ret
|
|
|
|
INCLUDE "data/moves/metronome_exception_moves.asm"
|