1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- RecoilEffect_:
- ld a, [H_WHOSETURN]
- and a
- ld a, [wPlayerMoveNum]
- ld hl, wBattleMonMaxHP
- jr z, .recoilEffect
- ld a, [wEnemyMoveNum]
- ld hl, wEnemyMonMaxHP
- .recoilEffect
- ld d, a
- ld a, [wDamage]
- ld b, a
- ld a, [wDamage + 1]
- ld c, a
- srl b
- rr c
- ld a, d
- cp STRUGGLE ; struggle deals 50% recoil damage
- jr z, .gotRecoilDamage
- srl b
- rr c
- .gotRecoilDamage
- ld a, b
- or c
- jr nz, .updateHP
- inc c ; minimum recoil damage is 1
- .updateHP
- ; subtract HP from user due to the recoil damage
- ld a, [hli]
- ld [wHPBarMaxHP+1], a
- ld a, [hl]
- ld [wHPBarMaxHP], a
- push bc
- ld bc, wBattleMonHP - wBattleMonMaxHP
- add hl, bc
- pop bc
- ld a, [hl]
- ld [wHPBarOldHP], a
- sub c
- ld [hld], a
- ld [wHPBarNewHP], a
- ld a, [hl]
- ld [wHPBarOldHP+1], a
- sbc b
- ld [hl], a
- ld [wHPBarNewHP+1], a
- jr nc, .getHPBarCoords
- ; if recoil damage is higher than the Pokemon's HP, set its HP to 0
- xor a
- ld [hli], a
- ld [hl], a
- ld hl, wHPBarNewHP
- ld [hli], a
- ld [hl], a
- .getHPBarCoords
- coord hl, 10, 9
- ld a, [H_WHOSETURN]
- and a
- ld a, $1
- jr z, .updateHPBar
- coord hl, 2, 2
- xor a
- .updateHPBar
- ld [wHPBarType], a
- predef UpdateHPBar2
- ld hl, HitWithRecoilText
- jp PrintText
- HitWithRecoilText:
- TX_FAR _HitWithRecoilText
- db "@"
|