You've already forked pokecrystal-board
mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-09-08 08:13:02 -07:00
Move-unique effect commands consistently go in engine/battle/move_effects/
This commit is contained in:
119
engine/battle/move_effects/sketch.asm
Normal file
119
engine/battle/move_effects/sketch.asm
Normal file
@@ -0,0 +1,119 @@
|
||||
BattleCommand_Sketch: ; 35a74
|
||||
; sketch
|
||||
|
||||
call ClearLastMove
|
||||
; Don't sketch during a link battle
|
||||
ld a, [wLinkMode]
|
||||
and a
|
||||
jr z, .not_linked
|
||||
call AnimateFailedMove
|
||||
jp PrintNothingHappened
|
||||
|
||||
.not_linked
|
||||
; If the opponent has a substitute up, fail.
|
||||
call CheckSubstituteOpp
|
||||
jp nz, .fail
|
||||
; If the opponent is transformed, fail.
|
||||
ld a, BATTLE_VARS_SUBSTATUS5_OPP
|
||||
call GetBattleVarAddr
|
||||
bit SUBSTATUS_TRANSFORMED, [hl]
|
||||
jp nz, .fail
|
||||
; Get the user's moveset in its party struct.
|
||||
; This move replacement shall be permanent.
|
||||
; Pointer will be in de.
|
||||
ld a, MON_MOVES
|
||||
call UserPartyAttr
|
||||
ld d, h
|
||||
ld e, l
|
||||
; Get the battle move structs.
|
||||
ld hl, BattleMonMoves
|
||||
ld a, [hBattleTurn]
|
||||
and a
|
||||
jr z, .get_last_move
|
||||
ld hl, EnemyMonMoves
|
||||
.get_last_move
|
||||
ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP
|
||||
call GetBattleVar
|
||||
ld [wTypeMatchup], a
|
||||
ld b, a
|
||||
; Fail if move is invalid or is Struggle.
|
||||
and a
|
||||
jr z, .fail
|
||||
cp STRUGGLE
|
||||
jr z, .fail
|
||||
; Fail if user already knows that move
|
||||
ld c, NUM_MOVES
|
||||
.does_user_already_know_move
|
||||
ld a, [hli]
|
||||
cp b
|
||||
jr z, .fail
|
||||
dec c
|
||||
jr nz, .does_user_already_know_move
|
||||
; Find Sketch in the user's moveset.
|
||||
; Pointer in hl, and index in c.
|
||||
dec hl
|
||||
ld c, NUM_MOVES
|
||||
.find_sketch
|
||||
dec c
|
||||
ld a, [hld]
|
||||
cp SKETCH
|
||||
jr nz, .find_sketch
|
||||
inc hl
|
||||
; The Sketched move is loaded to that slot.
|
||||
ld a, b
|
||||
ld [hl], a
|
||||
; Copy the base PP from that move.
|
||||
push bc
|
||||
push hl
|
||||
dec a
|
||||
ld hl, Moves + MOVE_PP
|
||||
call GetMoveAttr
|
||||
pop hl
|
||||
ld bc, BattleMonPP - BattleMonMoves
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
pop bc
|
||||
|
||||
ld a, [hBattleTurn]
|
||||
and a
|
||||
jr z, .user_trainer
|
||||
ld a, [wBattleMode]
|
||||
dec a
|
||||
jr nz, .user_trainer
|
||||
; wildmon
|
||||
ld a, [hl]
|
||||
push bc
|
||||
ld hl, wWildMonPP
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
ld hl, wWildMonMoves
|
||||
add hl, bc
|
||||
pop bc
|
||||
ld [hl], b
|
||||
jr .done_copy
|
||||
|
||||
.user_trainer
|
||||
ld a, [hl]
|
||||
push af
|
||||
ld l, c
|
||||
ld h, 0
|
||||
add hl, de
|
||||
ld a, b
|
||||
ld [hl], a
|
||||
pop af
|
||||
ld de, MON_PP - MON_MOVES
|
||||
add hl, de
|
||||
ld [hl], a
|
||||
.done_copy
|
||||
call GetMoveName
|
||||
call AnimateCurrentMove
|
||||
|
||||
ld hl, SketchedText
|
||||
jp StdBattleTextBox
|
||||
|
||||
.fail
|
||||
call AnimateFailedMove
|
||||
jp PrintDidntAffect
|
||||
|
||||
; 35b16
|
||||
Reference in New Issue
Block a user