2014-05-22 22:13:20 +00:00
|
|
|
Func_137aa: ; 137aa (4:77aa)
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [W_ISLINKBATTLE] ; W_ISLINKBATTLE
|
2014-05-22 22:13:20 +00:00
|
|
|
cp $4
|
|
|
|
jr nz, .asm_137eb
|
2014-06-14 11:12:40 +00:00
|
|
|
ld a, [wEnemyMonPartyPos]
|
|
|
|
ld hl, wEnemyMon1Status
|
|
|
|
ld bc, wEnemyMon2 - wEnemyMon1
|
2014-05-22 22:13:20 +00:00
|
|
|
call AddNTimes
|
2014-06-14 11:12:40 +00:00
|
|
|
ld a, [wEnemyMonStatus] ; wcfe9
|
2014-05-22 22:13:20 +00:00
|
|
|
ld [hl], a
|
|
|
|
call ClearScreen
|
|
|
|
callab Func_372d6
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [wcf0b]
|
2014-05-22 22:13:20 +00:00
|
|
|
cp $1
|
|
|
|
ld de, YouWinText
|
|
|
|
jr c, .asm_137de
|
|
|
|
ld de, YouLoseText
|
|
|
|
jr z, .asm_137de
|
|
|
|
ld de, DrawText
|
|
|
|
.asm_137de
|
2014-05-26 21:04:56 +00:00
|
|
|
FuncCoord 6, 8
|
2014-05-22 22:13:20 +00:00
|
|
|
ld hl, Coord
|
|
|
|
call PlaceString
|
|
|
|
ld c, $c8
|
|
|
|
call DelayFrames
|
|
|
|
jr .asm_1380a
|
|
|
|
.asm_137eb
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [wcf0b]
|
2014-05-22 22:13:20 +00:00
|
|
|
and a
|
|
|
|
jr nz, .asm_13813
|
2014-05-26 21:04:56 +00:00
|
|
|
ld hl, wcce5
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a, [hli]
|
|
|
|
or [hl]
|
|
|
|
inc hl
|
|
|
|
or [hl]
|
|
|
|
jr z, .asm_1380a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld de, wPlayerMoney + 2 ; wd349
|
2014-05-22 22:13:20 +00:00
|
|
|
ld c, $3
|
2014-06-16 20:57:26 +00:00
|
|
|
predef AddBCDPredef
|
2014-05-22 22:13:20 +00:00
|
|
|
ld hl, PickUpPayDayMoneyText
|
|
|
|
call PrintText
|
|
|
|
.asm_1380a
|
|
|
|
xor a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wccd4], a
|
2014-06-16 20:57:26 +00:00
|
|
|
predef Func_3ad1c
|
2014-05-22 22:13:20 +00:00
|
|
|
.asm_13813
|
|
|
|
xor a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wd083], a
|
|
|
|
ld [wc02a], a
|
|
|
|
ld [W_ISINBATTLE], a ; W_ISINBATTLE
|
|
|
|
ld [W_BATTLETYPE], a ; wd05a
|
|
|
|
ld [W_MOVEMISSED], a ; W_MOVEMISSED
|
|
|
|
ld [W_CUROPPONENT], a ; wd059
|
|
|
|
ld [wd11f], a
|
|
|
|
ld [wd120], a
|
|
|
|
ld [wd078], a
|
|
|
|
ld hl, wcc2b
|
2014-05-22 22:13:20 +00:00
|
|
|
ld [hli], a
|
|
|
|
ld [hli], a
|
|
|
|
ld [hli], a
|
|
|
|
ld [hl], a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wListScrollOffset], a ; wcc36
|
|
|
|
ld hl, wd060
|
2014-05-22 22:13:20 +00:00
|
|
|
ld b, $18
|
|
|
|
.asm_1383e
|
|
|
|
ld [hli], a
|
|
|
|
dec b
|
|
|
|
jr nz, .asm_1383e
|
2014-05-26 21:04:56 +00:00
|
|
|
ld hl, wd72c
|
2014-05-22 22:13:20 +00:00
|
|
|
set 0, [hl]
|
|
|
|
call WaitForSoundToFinish
|
|
|
|
call GBPalWhiteOut
|
|
|
|
ld a, $ff
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wd42f], a
|
2014-05-22 22:13:20 +00:00
|
|
|
ret
|
|
|
|
|
|
|
|
YouWinText: ; 13853 (4:7853)
|
|
|
|
db "YOU WIN@"
|
|
|
|
|
|
|
|
YouLoseText: ; 1385b (4:785b)
|
|
|
|
db "YOU LOSE@"
|
|
|
|
|
|
|
|
DrawText: ; 13864 (4:7864)
|
|
|
|
db " DRAW@"
|
|
|
|
|
|
|
|
PickUpPayDayMoneyText: ; 1386b (4:786b)
|
|
|
|
TX_FAR _PickUpPayDayMoneyText
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
Func_13870: ; 13870 (4:7870)
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [wcc57]
|
2014-05-22 22:13:20 +00:00
|
|
|
and a
|
|
|
|
ret nz
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [wd736]
|
2014-05-22 22:13:20 +00:00
|
|
|
and a
|
|
|
|
ret nz
|
|
|
|
callab Func_c49d
|
|
|
|
jr nc, .asm_13888
|
|
|
|
.asm_13884
|
|
|
|
ld a, $1
|
|
|
|
and a
|
|
|
|
ret
|
|
|
|
.asm_13888
|
|
|
|
callab Func_128d8
|
|
|
|
jr z, .asm_13884
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [wd0db]
|
2014-05-22 22:13:20 +00:00
|
|
|
and a
|
|
|
|
jr z, .asm_1389e
|
|
|
|
dec a
|
|
|
|
jr z, .asm_13905
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wd0db], a
|
2014-05-22 22:13:20 +00:00
|
|
|
.asm_1389e
|
2014-05-26 21:04:56 +00:00
|
|
|
FuncCoord 9, 9
|
2014-05-22 22:13:20 +00:00
|
|
|
ld hl, Coord
|
|
|
|
ld c, [hl]
|
|
|
|
ld a, [W_GRASSTILE]
|
|
|
|
cp c
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [W_GRASSRATE] ; W_GRASSRATE
|
2014-05-22 22:13:20 +00:00
|
|
|
jr z, .asm_138c4
|
|
|
|
ld a, $14
|
|
|
|
cp c
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [W_WATERRATE] ; wEnemyMon1Species
|
2014-05-22 22:13:20 +00:00
|
|
|
jr z, .asm_138c4
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [W_CURMAP] ; W_CURMAP
|
2014-05-22 22:13:20 +00:00
|
|
|
cp REDS_HOUSE_1F
|
|
|
|
jr c, .asm_13912
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [W_CURMAPTILESET] ; W_CURMAPTILESET
|
2014-05-22 22:13:20 +00:00
|
|
|
cp FOREST ; Viridian Forest/Safari Zone
|
|
|
|
jr z, .asm_13912
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [W_GRASSRATE] ; W_GRASSRATE
|
2014-05-22 22:13:20 +00:00
|
|
|
.asm_138c4
|
|
|
|
ld b, a
|
2014-05-24 18:40:38 +00:00
|
|
|
ld a, [hRandomAdd]
|
2014-05-22 22:13:20 +00:00
|
|
|
cp b
|
|
|
|
jr nc, .asm_13912
|
2014-05-24 18:40:38 +00:00
|
|
|
ld a, [hRandomSub]
|
2014-05-22 22:13:20 +00:00
|
|
|
ld b, a
|
|
|
|
ld hl, WildMonEncounterSlotChances ; $7918
|
|
|
|
.asm_138d0
|
|
|
|
ld a, [hli]
|
|
|
|
cp b
|
|
|
|
jr nc, .asm_138d7
|
|
|
|
inc hl
|
|
|
|
jr .asm_138d0
|
|
|
|
.asm_138d7
|
|
|
|
ld c, [hl]
|
2014-05-26 21:04:56 +00:00
|
|
|
ld hl, W_GRASSMONS ; wd888
|
|
|
|
FuncCoord 8, 9
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a, [Coord]
|
|
|
|
cp $14
|
|
|
|
jr nz, .asm_138e5
|
2014-06-14 11:12:40 +00:00
|
|
|
ld hl, W_WATERMONS ; wd8a5 (aliases: wEnemyMon1HP)
|
2014-05-22 22:13:20 +00:00
|
|
|
.asm_138e5
|
|
|
|
ld b, $0
|
|
|
|
add hl, bc
|
|
|
|
ld a, [hli]
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [W_CURENEMYLVL], a ; W_CURENEMYLVL
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a, [hl]
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wcf91], a
|
2014-06-14 11:12:40 +00:00
|
|
|
ld [wEnemyMonSpecies2], a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [wd0db]
|
2014-05-22 22:13:20 +00:00
|
|
|
and a
|
|
|
|
jr z, .asm_13916
|
2014-06-14 11:12:40 +00:00
|
|
|
ld a, [wPartyMon1Level] ; wPartyMon1Level
|
2014-05-22 22:13:20 +00:00
|
|
|
ld b, a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [W_CURENEMYLVL] ; W_CURENEMYLVL
|
2014-05-22 22:13:20 +00:00
|
|
|
cp b
|
|
|
|
jr c, .asm_13912
|
|
|
|
jr .asm_13916
|
|
|
|
.asm_13905
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wd0db], a
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a, $d2
|
|
|
|
ld [H_DOWNARROWBLINKCNT2], a ; $ff8c
|
|
|
|
call EnableAutoTextBoxDrawing
|
|
|
|
call DisplayTextID
|
|
|
|
.asm_13912
|
|
|
|
ld a, $1
|
|
|
|
and a
|
|
|
|
ret
|
|
|
|
.asm_13916
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
|
|
|
|
WildMonEncounterSlotChances: ; 13918 (4:7918)
|
|
|
|
; There are 10 slots for wild pokemon, and this is the table that defines how common each of
|
|
|
|
; those 10 slots is. A random number is generated and then the first byte of each pair in this
|
|
|
|
; table is compared against that random number. If the random number is less than or equal
|
|
|
|
; to the first byte, then that slot is chosen. The second byte is double the slot number.
|
|
|
|
db $32, $00 ; 51/256 = 19.9% chance of slot 0
|
|
|
|
db $65, $02 ; 51/256 = 19.9% chance of slot 1
|
|
|
|
db $8C, $04 ; 39/256 = 15.2% chance of slot 2
|
|
|
|
db $A5, $06 ; 25/256 = 9.8% chance of slot 3
|
|
|
|
db $BE, $08 ; 25/256 = 9.8% chance of slot 4
|
|
|
|
db $D7, $0A ; 25/256 = 9.8% chance of slot 5
|
|
|
|
db $E4, $0C ; 13/256 = 5.1% chance of slot 6
|
|
|
|
db $F1, $0E ; 13/256 = 5.1% chance of slot 7
|
|
|
|
db $FC, $10 ; 11/256 = 4.3% chance of slot 8
|
|
|
|
db $FF, $12 ; 3/256 = 1.2% chance of slot 9
|
|
|
|
|
|
|
|
RecoilEffect_: ; 1392c (4:792c)
|
|
|
|
ld a, [H_WHOSETURN] ; $fff3
|
|
|
|
and a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [W_PLAYERMOVENUM] ; wcfd2
|
2014-06-14 11:12:40 +00:00
|
|
|
ld hl, wBattleMonMaxHP ; wd023
|
2014-05-22 22:13:20 +00:00
|
|
|
jr z, .asm_1393d
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [W_ENEMYMOVENUM] ; W_ENEMYMOVENUM
|
2014-06-14 11:12:40 +00:00
|
|
|
ld hl, wEnemyMonMaxHP ; wEnemyMonMaxHP
|
2014-05-22 22:13:20 +00:00
|
|
|
.asm_1393d
|
|
|
|
ld d, a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a, [W_DAMAGE] ; W_DAMAGE
|
2014-05-22 22:13:20 +00:00
|
|
|
ld b, a
|
|
|
|
ld a, [W_DAMAGE + 1]
|
|
|
|
ld c, a
|
|
|
|
srl b
|
|
|
|
rr c
|
|
|
|
ld a, d
|
|
|
|
cp STRUGGLE
|
|
|
|
jr z, .asm_13953
|
|
|
|
srl b
|
|
|
|
rr c
|
|
|
|
.asm_13953
|
|
|
|
ld a, b
|
|
|
|
or c
|
|
|
|
jr nz, .asm_13958
|
|
|
|
inc c
|
|
|
|
.asm_13958
|
|
|
|
ld a, [hli]
|
|
|
|
ld [wHPBarMaxHP+1], a
|
|
|
|
ld a, [hl]
|
|
|
|
ld [wHPBarMaxHP], a
|
|
|
|
push bc
|
|
|
|
ld bc, $fff2
|
|
|
|
add hl, bc
|
|
|
|
pop bc
|
|
|
|
ld a, [hl]
|
|
|
|
ld [wHPBarOldHP], a
|
|
|
|
sub c
|
|
|
|
ld [hld], a
|
|
|
|
ld [wHPBarNewHP], a
|
|
|
|
ld a, [hl]
|
|
|
|
ld [wHPBarOldHP+1], a
|
|
|
|
sbc b
|
|
|
|
ld [hl], a
|
|
|
|
ld [wHPBarNewHP+1], a
|
|
|
|
jr nc, .asm_13982
|
|
|
|
xor a
|
|
|
|
ld [hli], a
|
|
|
|
ld [hl], a
|
|
|
|
ld hl, wHPBarNewHP
|
|
|
|
ld [hli], a
|
|
|
|
ld [hl], a
|
|
|
|
.asm_13982
|
2014-05-26 21:04:56 +00:00
|
|
|
FuncCoord 10, 9
|
2014-05-22 22:13:20 +00:00
|
|
|
ld hl, Coord
|
|
|
|
ld a, [H_WHOSETURN] ; $fff3
|
|
|
|
and a
|
|
|
|
ld a, $1
|
|
|
|
jr z, .asm_13990
|
2014-05-26 21:04:56 +00:00
|
|
|
FuncCoord 2, 2
|
2014-05-22 22:13:20 +00:00
|
|
|
ld hl, Coord
|
|
|
|
xor a
|
|
|
|
.asm_13990
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wListMenuID], a ; wListMenuID
|
2014-06-16 20:57:26 +00:00
|
|
|
predef UpdateHPBar2
|
2014-05-22 22:13:20 +00:00
|
|
|
ld hl, HitWithRecoilText ; $799e
|
|
|
|
jp PrintText
|
|
|
|
HitWithRecoilText: ; 1399e (4:799e)
|
|
|
|
TX_FAR _HitWithRecoilText
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
ConversionEffect_: ; 139a3 (4:79a3)
|
2014-06-14 11:12:40 +00:00
|
|
|
ld hl, wEnemyMonType1
|
|
|
|
ld de, wBattleMonType1
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a, [H_WHOSETURN]
|
|
|
|
and a
|
|
|
|
ld a, [W_ENEMYBATTSTATUS1]
|
|
|
|
jr z, .asm_139b8
|
|
|
|
push hl
|
|
|
|
ld h, d
|
|
|
|
ld l, e
|
|
|
|
pop de
|
|
|
|
ld a, [W_PLAYERBATTSTATUS1]
|
|
|
|
.asm_139b8
|
|
|
|
bit 6, a ; is mon immune to typical attacks (dig/fly)
|
|
|
|
jr nz, PrintButItFailedText
|
|
|
|
ld a, [hli]
|
|
|
|
ld [de], a
|
|
|
|
inc de
|
|
|
|
ld a, [hl]
|
|
|
|
ld [de], a
|
|
|
|
ld hl, Func_3fba8
|
|
|
|
call Func_139d5
|
|
|
|
ld hl, ConvertedTypeText
|
|
|
|
jp PrintText
|
|
|
|
|
|
|
|
ConvertedTypeText: ; 139cd (4:79cd)
|
|
|
|
TX_FAR _ConvertedTypeText
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
PrintButItFailedText: ; 139d2 (4:79d2)
|
|
|
|
ld hl, PrintButItFailedText_
|
|
|
|
Func_139d5: ; 139d5 (4:79d5)
|
|
|
|
ld b, BANK(PrintButItFailedText_)
|
|
|
|
jp Bankswitch
|
|
|
|
|
|
|
|
HazeEffect_: ; 139da (4:79da)
|
|
|
|
ld a, $7
|
|
|
|
ld hl, wPlayerMonAttackMod
|
|
|
|
call Func_13a43
|
|
|
|
ld hl, wEnemyMonAttackMod
|
|
|
|
call Func_13a43
|
2014-05-26 21:04:56 +00:00
|
|
|
ld hl, wcd12
|
2014-06-14 11:12:40 +00:00
|
|
|
ld de, wBattleMonAttack
|
2014-05-22 22:13:20 +00:00
|
|
|
call Func_13a4a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld hl, wcd26
|
2014-06-14 11:12:40 +00:00
|
|
|
ld de, wEnemyMonAttack
|
2014-05-22 22:13:20 +00:00
|
|
|
call Func_13a4a
|
2014-06-14 11:12:40 +00:00
|
|
|
ld hl, wEnemyMonStatus
|
2014-05-22 22:13:20 +00:00
|
|
|
ld de, wEnemySelectedMove
|
|
|
|
ld a, [H_WHOSETURN]
|
|
|
|
and a
|
|
|
|
jr z, .asm_13a09
|
2014-06-14 11:12:40 +00:00
|
|
|
ld hl, wBattleMonStatus
|
2014-05-22 22:13:20 +00:00
|
|
|
dec de
|
|
|
|
|
|
|
|
.asm_13a09
|
|
|
|
ld a, [hl]
|
|
|
|
ld [hl], $0
|
|
|
|
and $27
|
|
|
|
jr z, .asm_13a13
|
|
|
|
ld a, $ff
|
|
|
|
ld [de], a
|
|
|
|
|
|
|
|
.asm_13a13
|
|
|
|
xor a
|
|
|
|
ld [W_PLAYERDISABLEDMOVE], a
|
|
|
|
ld [W_ENEMYDISABLEDMOVE], a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld hl, wccee
|
2014-05-22 22:13:20 +00:00
|
|
|
ld [hli], a
|
|
|
|
ld [hl], a
|
|
|
|
ld hl, W_PLAYERBATTSTATUS1
|
|
|
|
call Func_13a37
|
|
|
|
ld hl, W_ENEMYBATTSTATUS1
|
|
|
|
call Func_13a37
|
|
|
|
ld hl, Func_3fba8
|
|
|
|
call Func_139d5
|
|
|
|
ld hl, StatusChangesEliminatedText
|
|
|
|
jp PrintText
|
|
|
|
|
|
|
|
Func_13a37: ; 13a37 (4:7a37)
|
|
|
|
res 7, [hl]
|
|
|
|
inc hl
|
|
|
|
ld a, [hl]
|
|
|
|
and $78
|
|
|
|
ld [hli], a
|
|
|
|
ld a, [hl]
|
|
|
|
and $f8
|
|
|
|
ld [hl], a
|
|
|
|
ret
|
|
|
|
|
|
|
|
Func_13a43: ; 13a43 (4:7a43)
|
|
|
|
ld b, $8
|
|
|
|
.loop
|
|
|
|
ld [hli], a
|
|
|
|
dec b
|
|
|
|
jr nz, .loop
|
|
|
|
ret
|
|
|
|
|
|
|
|
Func_13a4a: ; 13a4a (4:7a4a)
|
|
|
|
ld b, $8
|
|
|
|
.loop
|
|
|
|
ld a, [hli]
|
|
|
|
ld [de], a
|
|
|
|
inc de
|
|
|
|
dec b
|
|
|
|
jr nz, .loop
|
|
|
|
ret
|
|
|
|
|
|
|
|
StatusChangesEliminatedText: ; 13a53 (4:7a53)
|
|
|
|
TX_FAR _StatusChangesEliminatedText
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
GetTrainerName_: ; 13a58 (4:7a58)
|
2014-05-26 21:04:56 +00:00
|
|
|
ld hl, W_GRASSRATE ; W_GRASSRATE
|
|
|
|
ld a, [W_ISLINKBATTLE] ; W_ISLINKBATTLE
|
2014-05-22 22:13:20 +00:00
|
|
|
and a
|
|
|
|
jr nz, .rival
|
2014-05-26 21:04:56 +00:00
|
|
|
ld hl, W_RIVALNAME ; wd34a
|
|
|
|
ld a, [W_TRAINERCLASS] ; wd031
|
2014-05-22 22:13:20 +00:00
|
|
|
cp SONY1
|
|
|
|
jr z, .rival
|
|
|
|
cp SONY2
|
|
|
|
jr z, .rival
|
|
|
|
cp SONY3
|
|
|
|
jr z, .rival
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wd0b5], a
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a, TRAINER_NAME
|
|
|
|
ld [W_LISTTYPE], a
|
|
|
|
ld a, $e
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wPredefBank], a
|
2014-05-22 22:13:20 +00:00
|
|
|
call GetName
|
2014-05-26 21:04:56 +00:00
|
|
|
ld hl, wcd6d
|
2014-05-22 22:13:20 +00:00
|
|
|
.rival
|
|
|
|
ld de, W_TRAINERNAME
|
|
|
|
ld bc, $d
|
|
|
|
jp CopyData
|