diff options
Diffstat (limited to 'engine/battle/moveEffects/recoil_effect.asm')
-rw-r--r-- | engine/battle/moveEffects/recoil_effect.asm | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/engine/battle/moveEffects/recoil_effect.asm b/engine/battle/moveEffects/recoil_effect.asm index 0460b208..7fc90c44 100644 --- a/engine/battle/moveEffects/recoil_effect.asm +++ b/engine/battle/moveEffects/recoil_effect.asm @@ -1,36 +1,37 @@ -RecoilEffect_: ; 1392c (4:792c) +RecoilEffect_: ld a, [H_WHOSETURN] and a - ld a, [W_PLAYERMOVENUM] + ld a, [wPlayerMoveNum] ld hl, wBattleMonMaxHP - jr z, .asm_1393d - ld a, [W_ENEMYMOVENUM] + jr z, .recoilEffect + ld a, [wEnemyMoveNum] ld hl, wEnemyMonMaxHP -.asm_1393d +.recoilEffect ld d, a - ld a, [W_DAMAGE] + ld a, [wDamage] ld b, a - ld a, [W_DAMAGE + 1] + ld a, [wDamage + 1] ld c, a srl b rr c ld a, d - cp STRUGGLE - jr z, .asm_13953 + cp STRUGGLE ; struggle deals 50% recoil damage + jr z, .gotRecoilDamage srl b rr c -.asm_13953 +.gotRecoilDamage ld a, b or c - jr nz, .asm_13958 - inc c -.asm_13958 + jr nz, .updateHP + inc c ; minimum recoil damage is 1 +.updateHP +; substract 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, $fff2 + ld bc, wBattleMonHP - wBattleMonMaxHP add hl, bc pop bc ld a, [hl] @@ -43,26 +44,27 @@ RecoilEffect_: ; 1392c (4:792c) sbc b ld [hl], a ld [wHPBarNewHP+1], a - jr nc, .asm_13982 + 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 -.asm_13982 - hlCoord 10, 9 +.getHPBarCoords + coord hl, 10, 9 ld a, [H_WHOSETURN] and a ld a, $1 - jr z, .asm_13990 - hlCoord 2, 2 + jr z, .updateHPBar + coord hl, 2, 2 xor a -.asm_13990 +.updateHPBar ld [wHPBarType], a predef UpdateHPBar2 ld hl, HitWithRecoilText jp PrintText -HitWithRecoilText: ; 1399e (4:799e) +HitWithRecoilText: TX_FAR _HitWithRecoilText db "@" |