pokered/engine/battle/moveEffects/transform_effect.asm

149 lines
2.7 KiB
NASM
Raw Normal View History

TransformEffect_: ; 3bab1 (e:7ab1)
ld hl, wBattleMonSpecies
ld de, wEnemyMonSpecies
ld bc, W_ENEMYBATTSTATUS3
ld a, [W_ENEMYBATTSTATUS1]
ld a, [H_WHOSETURN]
and a
jr nz, .hitTest
ld hl, wEnemyMonSpecies
ld de, wBattleMonSpecies
ld bc, W_PLAYERBATTSTATUS3
ld [wPlayerMoveListIndex], a
ld a, [W_PLAYERBATTSTATUS1]
.hitTest
bit Invulnerable, a ; is mon invulnerable to typical attacks? (fly/dig)
jp nz, .failed
push hl
push de
push bc
ld hl, W_PLAYERBATTSTATUS2
ld a, [H_WHOSETURN]
and a
jr z, .transformEffect
ld hl, W_ENEMYBATTSTATUS2
.transformEffect
; animation(s) played are different if target has Substitute up
2015-06-11 22:41:33 +00:00
bit HasSubstituteUp, [hl]
push af
2015-07-12 22:51:04 +00:00
ld hl, HideSubstituteShowMonAnim
ld b, BANK(HideSubstituteShowMonAnim)
call nz, Bankswitch
ld a, [W_OPTIONS]
add a
ld hl, PlayCurrentMoveAnimation
ld b, BANK(PlayCurrentMoveAnimation)
jr nc, .gotAnimToPlay
ld hl, AnimationTransformMon
ld b, BANK(AnimationTransformMon)
.gotAnimToPlay
call Bankswitch
2015-07-12 22:51:04 +00:00
ld hl, ReshowSubstituteAnim
ld b, BANK(ReshowSubstituteAnim)
pop af
call nz, Bankswitch
pop bc
ld a, [bc]
set Transformed, a ; mon is now Transformed
ld [bc], a
pop de
pop hl
push hl
2015-06-11 22:41:33 +00:00
; transform user into opposing Pokemon
; species
2015-06-11 22:41:33 +00:00
ld a, [hl]
ld [de], a
2015-06-11 22:41:33 +00:00
; type 1, type 2, catch rate, and moves
ld bc, $5
2015-06-11 22:41:33 +00:00
add hl, bc
inc de
inc de
inc de
inc de
inc de
inc bc
inc bc
call CopyData
ld a, [H_WHOSETURN]
and a
jr z, .next
; save enemy mon DVs in wcceb/wccec (enemy turn only)
ld a, [de]
ld [wcceb], a
inc de
ld a, [de]
ld [wccec], a
dec de
.next
; DVs
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
2015-06-11 22:41:33 +00:00
; Attack, Defense, Speed, and Special stats
inc hl
inc hl
inc hl
inc de
inc de
inc de
ld bc, $8
call CopyData
2015-06-11 22:41:33 +00:00
ld bc, wBattleMonMoves - wBattleMonPP
add hl, bc ; ld hl, wBattleMonMoves
ld b, NUM_MOVES
.copyPPLoop
; 5 PP for all moves
ld a, [hli]
and a
jr z, .lessThanFourMoves
ld a, $5
ld [de], a
inc de
dec b
jr nz, .copyPPLoop
jr .copyStats
.lessThanFourMoves
; 0 PP for blank moves
xor a
ld [de], a
inc de
dec b
jr nz, .lessThanFourMoves
.copyStats
; original (unmodified) stats and stat mods
pop hl
ld a, [hl]
ld [wd11e], a
call GetMonName
ld hl, wEnemyMonUnmodifiedAttack
ld de, wPlayerMonUnmodifiedAttack
call .copyBasedOnTurn ; original (unmodified) stats
ld hl, wEnemyMonStatMods
ld de, wPlayerMonStatMods
call .copyBasedOnTurn ; stat mods
ld hl, TransformedText
jp PrintText
.copyBasedOnTurn
ld a, [H_WHOSETURN]
and a
jr z, .gotStatsOrModsToCopy
push hl
ld h, d
ld l, e
pop de
.gotStatsOrModsToCopy
ld bc, $8
jp CopyData
.failed
ld hl, PrintButItFailedText_
jp BankswitchEtoF
TransformedText: ; 3bb92 (e:7b92)
TX_FAR _TransformedText
db "@"