shithub: pokered

ref: ccb01731fe8cd44ae4c8840ee8ddc02e6bdea97e
dir: /engine/battle/move_effects/one_hit_ko.asm/

View raw version
OneHitKOEffect_:
	ld hl, wDamage
	xor a
	ld [hli], a
	ld [hl], a ; set the damage output to zero
	dec a
	ld [wCriticalHitOrOHKO], a
	ld hl, wBattleMonSpeed + 1
	ld de, wEnemyMonSpeed + 1
	ld a, [H_WHOSETURN]
	and a
	jr z, .compareSpeed
	ld hl, wEnemyMonSpeed + 1
	ld de, wBattleMonSpeed + 1
.compareSpeed
; set damage to 65535 and OHKO flag is the user's current speed is higher than the target's
	ld a, [de]
	dec de
	ld b, a
	ld a, [hld]
	sub b
	ld a, [de]
	ld b, a
	ld a, [hl]
	sbc b
	jr c, .userIsSlower
	ld hl, wDamage
	ld a, $ff
	ld [hli], a
	ld [hl], a
	ld a, $2
	ld [wCriticalHitOrOHKO], a
	ret
.userIsSlower
; keep damage at 0 and set move missed flag if target's current speed is higher instead
	ld a, $1
	ld [wMoveMissed], a
	ret