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:
90
engine/battle/move_effects/substitute.asm
Normal file
90
engine/battle/move_effects/substitute.asm
Normal file
@@ -0,0 +1,90 @@
|
||||
BattleCommand_Substitute: ; 36e7c
|
||||
; substitute
|
||||
|
||||
call BattleCommand_MoveDelay
|
||||
ld hl, BattleMonMaxHP
|
||||
ld de, PlayerSubstituteHP
|
||||
ld a, [hBattleTurn]
|
||||
and a
|
||||
jr z, .got_hp
|
||||
ld hl, EnemyMonMaxHP
|
||||
ld de, EnemySubstituteHP
|
||||
.got_hp
|
||||
|
||||
ld a, BATTLE_VARS_SUBSTATUS4
|
||||
call GetBattleVar
|
||||
bit SUBSTATUS_SUBSTITUTE, a
|
||||
jr nz, .already_has_sub
|
||||
|
||||
ld a, [hli]
|
||||
ld b, [hl]
|
||||
srl a
|
||||
rr b
|
||||
srl a
|
||||
rr b
|
||||
dec hl
|
||||
dec hl
|
||||
ld a, b
|
||||
ld [de], a
|
||||
ld a, [hld]
|
||||
sub b
|
||||
ld e, a
|
||||
ld a, [hl]
|
||||
sbc 0
|
||||
ld d, a
|
||||
jr c, .too_weak_to_sub
|
||||
ld a, d
|
||||
or e
|
||||
jr z, .too_weak_to_sub
|
||||
ld [hl], d
|
||||
inc hl
|
||||
ld [hl], e
|
||||
|
||||
ld a, BATTLE_VARS_SUBSTATUS4
|
||||
call GetBattleVarAddr
|
||||
set SUBSTATUS_SUBSTITUTE, [hl]
|
||||
|
||||
ld hl, wPlayerWrapCount
|
||||
ld de, wPlayerTrappingMove
|
||||
ld a, [hBattleTurn]
|
||||
and a
|
||||
jr z, .player
|
||||
ld hl, wEnemyWrapCount
|
||||
ld de, wEnemyTrappingMove
|
||||
.player
|
||||
|
||||
xor a
|
||||
ld [hl], a
|
||||
ld [de], a
|
||||
call _CheckBattleScene
|
||||
jr c, .no_anim
|
||||
|
||||
xor a
|
||||
ld [wNumHits], a
|
||||
ld [FXAnimID + 1], a
|
||||
ld [wKickCounter], a
|
||||
ld a, SUBSTITUTE
|
||||
call LoadAnim
|
||||
jr .finish
|
||||
|
||||
.no_anim
|
||||
call BattleCommand_RaiseSubNoAnim
|
||||
.finish
|
||||
ld hl, MadeSubstituteText
|
||||
call StdBattleTextBox
|
||||
jp RefreshBattleHuds
|
||||
|
||||
.already_has_sub
|
||||
call CheckUserIsCharging
|
||||
call nz, BattleCommand_RaiseSub
|
||||
ld hl, HasSubstituteText
|
||||
jr .jp_stdbattletextbox
|
||||
|
||||
.too_weak_to_sub
|
||||
call CheckUserIsCharging
|
||||
call nz, BattleCommand_RaiseSub
|
||||
ld hl, TooWeakSubText
|
||||
.jp_stdbattletextbox
|
||||
jp StdBattleTextBox
|
||||
|
||||
; 36f0b
|
||||
Reference in New Issue
Block a user