summaryrefslogtreecommitdiff
path: root/battle/effects
diff options
context:
space:
mode:
Diffstat (limited to 'battle/effects')
-rw-r--r--battle/effects/rollout.asm29
-rwxr-xr-xbattle/effects/transform.asm141
2 files changed, 156 insertions, 14 deletions
diff --git a/battle/effects/rollout.asm b/battle/effects/rollout.asm
index fe4c9189b..4ce9ab3d8 100644
--- a/battle/effects/rollout.asm
+++ b/battle/effects/rollout.asm
@@ -36,17 +36,17 @@ BattleCommand_RolloutPower: ; 37734
ld hl, PlayerRolloutCount
ld a, [hBattleTurn]
and a
- jr z, .asm_37747
+ jr z, .got_rollout_count
ld hl, EnemyRolloutCount
-.asm_37747
+.got_rollout_count
ld a, [hl]
and a
- jr nz, .asm_37750
+ jr nz, .skip_set_rampage
ld a, 1
- ld [wc73e], a
+ ld [wSomeoneIsRampaging], a
-.asm_37750
+.skip_set_rampage
ld a, [AttackMissed]
and a
jr z, .hit
@@ -61,38 +61,39 @@ BattleCommand_RolloutPower: ; 37734
ld a, [hl]
ld b, a
cp MAX_ROLLOUT_COUNT
- jr c, .asm_3776e
+ jr c, .not_done_with_rollout
ld a, BATTLE_VARS_SUBSTATUS1
call GetBattleVarAddr
res SUBSTATUS_ROLLOUT, [hl]
- jr .asm_37775
+ jr .done_with_substatus_flag
-.asm_3776e
+.not_done_with_rollout
ld a, BATTLE_VARS_SUBSTATUS1
call GetBattleVarAddr
set SUBSTATUS_ROLLOUT, [hl]
-.asm_37775
+.done_with_substatus_flag
ld a, BATTLE_VARS_SUBSTATUS2
call GetBattleVar
bit SUBSTATUS_CURLED, a
- jr z, .asm_3777f
+ jr z, .not_curled
inc b
-.asm_3777f
+.not_curled
+.loop
dec b
- jr z, .asm_37790
+ jr z, .done_damage
ld hl, CurDamage + 1
sla [hl]
dec hl
rl [hl]
- jr nc, .asm_3777f
+ jr nc, .loop
ld a, $ff
ld [hli], a
ld [hl], a
-.asm_37790
+.done_damage
ret
; 37791
diff --git a/battle/effects/transform.asm b/battle/effects/transform.asm
new file mode 100755
index 000000000..eb80aea8a
--- /dev/null
+++ b/battle/effects/transform.asm
@@ -0,0 +1,141 @@
+
+BattleCommand_Transform: ; 371cd
+; transform
+
+ call ClearLastMove
+ ld a, BATTLE_VARS_SUBSTATUS5_OPP
+ call GetBattleVarAddr
+ bit SUBSTATUS_TRANSFORMED, [hl]
+ jp nz, BattleEffect_ButItFailed
+ call CheckHiddenOpponent
+ jp nz, BattleEffect_ButItFailed
+ xor a
+ ld [wNumHits], a
+ ld [FXAnimIDHi], a
+ ld a, $1
+ ld [wKickCounter], a
+ ld a, BATTLE_VARS_SUBSTATUS4
+ call GetBattleVarAddr
+ bit SUBSTATUS_SUBSTITUTE, [hl]
+ push af
+ jr z, .mimic_substitute
+ call CheckUserIsCharging
+ jr nz, .mimic_substitute
+ ld a, SUBSTITUTE
+ call LoadAnim
+.mimic_substitute
+ ld a, BATTLE_VARS_SUBSTATUS5
+ call GetBattleVarAddr
+ set SUBSTATUS_TRANSFORMED, [hl]
+ call ResetActorDisable
+ ld hl, BattleMonSpecies
+ ld de, EnemyMonSpecies
+ ld a, [hBattleTurn]
+ and a
+ jr nz, .got_mon_species
+ ld hl, EnemyMonSpecies
+ ld de, BattleMonSpecies
+ xor a
+ ld [CurMoveNum], a
+.got_mon_species
+ push hl
+ ld a, [hli]
+ ld [de], a
+ inc hl
+ inc de
+ inc de
+ ld bc, NUM_MOVES
+ call CopyBytes
+ ld a, [hBattleTurn]
+ and a
+ jr z, .mimic_enemy_backup
+ ld a, [de]
+ ld [wEnemyBackupDVs], a
+ inc de
+ ld a, [de]
+ ld [wEnemyBackupDVs + 1], a
+ dec de
+.mimic_enemy_backup
+; copy DVs
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+; move pointer to stats
+ ld bc, BattleMonStats - BattleMonPP
+ add hl, bc
+ push hl
+ ld h, d
+ ld l, e
+ add hl, bc
+ ld d, h
+ ld e, l
+ pop hl
+ ld bc, BattleMonStructEnd - BattleMonStats
+ call CopyBytes
+; init the power points
+ ld bc, BattleMonMoves - BattleMonStructEnd
+ add hl, bc
+ push de
+ ld d, h
+ ld e, l
+ pop hl
+ ld bc, BattleMonPP - BattleMonStructEnd
+ add hl, bc
+ ld b, NUM_MOVES
+.pp_loop
+ ld a, [de]
+ inc de
+ and a
+ jr z, .done_move
+ cp SKETCH
+ ld a, 1
+ jr z, .done_move
+ ld a, 5
+.done_move
+ ld [hli], a
+ dec b
+ jr nz, .pp_loop
+ pop hl
+ ld a, [hl]
+ ld [wNamedObjectIndexBuffer], a
+ call GetPokemonName
+ ld hl, EnemyStats
+ ld de, PlayerStats
+ ld bc, 2 * 5
+ call BattleSideCopy
+ ld hl, EnemyStatLevels
+ ld de, PlayerStatLevels
+ ld bc, 8
+ call BattleSideCopy
+ call _CheckBattleScene
+ jr c, .mimic_anims
+ ld a, [hBattleTurn]
+ and a
+ ld a, [wPlayerMinimized]
+ jr z, .got_byte
+ ld a, [wEnemyMinimized]
+.got_byte
+ and a
+ jr nz, .mimic_anims
+ call LoadMoveAnim
+ jr .after_anim
+
+.mimic_anims
+ call BattleCommand_MoveDelay
+ call BattleCommand_RaiseSubNoAnim
+.after_anim
+ xor a
+ ld [wNumHits], a
+ ld [FXAnimIDHi], a
+ ld a, $2
+ ld [wKickCounter], a
+ pop af
+ ld a, SUBSTITUTE
+ call nz, LoadAnim
+ ld hl, TransformedText
+ jp StdBattleTextBox
+
+; 372c6