summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--battle/effect_commands.asm98
-rw-r--r--battle/effects/curse.asm98
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
+