shithub: pokecrystal

ref: a71b7a92b7443ef60df96890e56917d67db9b80b
dir: /engine/battle/move_effects/present.asm/

View raw version
BattleCommand_Present: ; 37874
; present

	ld a, [wLinkMode]
	cp LINK_COLOSSEUM
	jr z, .colosseum_skippush
	push bc
	push de
.colosseum_skippush

	call BattleCommand_Stab

	ld a, [wLinkMode]
	cp LINK_COLOSSEUM
	jr z, .colosseum_skippop
	pop de
	pop bc
.colosseum_skippop

	ld a, [wTypeMatchup]
	and a
	jp z, AnimateFailedMove
	ld a, [wAttackMissed]
	and a
	jp nz, AnimateFailedMove

	push bc
	call BattleRandom
	ld b, a
	ld hl, PresentPower
	ld c, 0
.next
	ld a, [hli]
	cp -1
	jr z, .heal_effect ; 378a4 $11
	cp b
	jr nc, .got_power ; 378a7 $4
	inc c
	inc hl
	jr .next ; 378ab $f4

.got_power
	ld a, c
	ld [wPresentPower], a
	call AnimateCurrentMoveEitherSide
	ld d, [hl]
	pop bc
	ret

.heal_effect
	pop bc
	ld a, 3
	ld [wPresentPower], a
	call AnimateCurrentMove
	call BattleCommand_SwitchTurn
	ld hl, AICheckPlayerMaxHP
	ld a, [hBattleTurn]
	and a
	jr z, .got_hp_fn_pointer ; 378c9 $3
	ld hl, AICheckEnemyMaxHP
.got_hp_fn_pointer
	ld a, BANK(AICheckPlayerMaxHP)
	rst FarCall
	jr c, .already_fully_healed ; 378d1 $20

	ld hl, GetQuarterMaxHP
	call CallBattleCore
	call BattleCommand_SwitchTurn
	ld hl, RestoreHP
	call CallBattleCore
	call BattleCommand_SwitchTurn
	ld hl, RegainedHealthText
	call StdBattleTextBox
	call BattleCommand_SwitchTurn
	call UpdateOpponentInParty
	jr .do_animation ; 378f1 $11

.already_fully_healed
	call BattleCommand_SwitchTurn
	call _CheckBattleScene
	jr nc, .do_animation ; 378f9 $9
	call AnimateFailedMove
	ld hl, RefusedGiftText
	call StdBattleTextBox
.do_animation
	jp EndMoveEffect

INCLUDE "data/moves/present_power.asm"