diff options
-rw-r--r-- | battle/effect_commands.asm | 98 | ||||
-rw-r--r-- | battle/effects/curse.asm | 98 |
2 files changed, 99 insertions, 97 deletions
diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm index 5ac336ed9..a7dda2bf4 100644 --- a/battle/effect_commands.asm +++ b/battle/effect_commands.asm @@ -9542,103 +9542,7 @@ BattleCommand53: ; 37563 ; 37588 -BattleCommand54: ; 37588 -; curse - - ld de, BattleMonType1 - ld bc, PlayerStatLevels - ld a, [hBattleTurn] - and a - jr z, .go - ld de, EnemyMonType1 - ld bc, EnemyStatLevels - -.go - -; Curse is different for Ghost-types. - - ld a, [de] - cp GHOST - jr z, .ghost - inc de - ld a, [de] - cp GHOST - jr z, .ghost - - -; If no stats can be increased, don't. - -; Attack - ld a, [bc] - cp 13 ; max - jr c, .raise - -; Defense - inc bc - ld a, [bc] - cp 13 ; max - jr nc, .cantraise - -.raise - -; Raise Attack and Defense, and lower Speed. - - ld a, $1 - ld [$c689], a - call Function0x37e01 - ld a, $2 - call Function0x36532 - call SwitchTurn - call BattleCommand8d - call ResetMiss - call SwitchTurn - call BattleCommand70 - call BattleCommand8c - call ResetMiss - call BattleCommand71 - jp BattleCommand8c - - -.ghost - -; Cut HP in half and put a curse on the opponent. - - call CheckHiddenOpponent - jr nz, .failed - - call CheckSubstituteOpp - jr nz, .failed - - ld a, BATTLE_VARS_SUBSTATUS1_OPP - call GetBattleVarPair - bit 1, [hl] - jr nz, .failed - - set 1, [hl] - call Function0x37e01 - ld hl, GetHalfMaxHP - call CallBankF - ld hl, Function3cc3f - call CallBankF - call UpdateUserInParty - ld hl, PutACurseText - jp StdBattleTextBox - -.failed - call Function0x37e77 - jp PrintButItFailed - - -.cantraise - -; Can't raise either stat. - - ld b, $8 ; ABILITY - call GetStatName - call Function0x37e77 - ld hl, WontRiseAnymoreText - jp StdBattleTextBox -; 37618 +INCLUDE "battle/effects/curse.asm" BattleCommand55: ; 37618 diff --git a/battle/effects/curse.asm b/battle/effects/curse.asm new file mode 100644 index 000000000..41ffc3a8d --- /dev/null +++ b/battle/effects/curse.asm @@ -0,0 +1,98 @@ +BattleCommand54: ; 37588 +; curse + + ld de, BattleMonType1 + ld bc, PlayerStatLevels + ld a, [hBattleTurn] + and a + jr z, .go + ld de, EnemyMonType1 + ld bc, EnemyStatLevels + +.go + +; Curse is different for Ghost-types. + + ld a, [de] + cp GHOST + jr z, .ghost + inc de + ld a, [de] + cp GHOST + jr z, .ghost + + +; If no stats can be increased, don't. + +; Attack + ld a, [bc] + cp 13 ; max + jr c, .raise + +; Defense + inc bc + ld a, [bc] + cp 13 ; max + jr nc, .cantraise + +.raise + +; Raise Attack and Defense, and lower Speed. + + ld a, $1 + ld [$c689], a + call Function0x37e01 + ld a, $2 + call Function0x36532 + call SwitchTurn + call BattleCommand8d + call ResetMiss + call SwitchTurn + call BattleCommand70 + call BattleCommand8c + call ResetMiss + call BattleCommand71 + jp BattleCommand8c + + +.ghost + +; Cut HP in half and put a curse on the opponent. + + call CheckHiddenOpponent + jr nz, .failed + + call CheckSubstituteOpp + jr nz, .failed + + ld a, BATTLE_VARS_SUBSTATUS1_OPP + call GetBattleVarPair + bit 1, [hl] + jr nz, .failed + + set 1, [hl] + call Function0x37e01 + ld hl, GetHalfMaxHP + call CallBankF + ld hl, Function3cc3f + call CallBankF + call UpdateUserInParty + ld hl, PutACurseText + jp StdBattleTextBox + +.failed + call Function0x37e77 + jp PrintButItFailed + + +.cantraise + +; Can't raise either stat. + + ld b, $8 ; ABILITY + call GetStatName + call Function0x37e77 + ld hl, WontRiseAnymoreText + jp StdBattleTextBox +; 37618 + |