pokecrystal-board/event/daycare.asm
2015-12-13 20:33:56 -05:00

769 lines
12 KiB
NASM
Executable File

Special_DayCareMan: ; 166d6
ld hl, wDaycareMan
bit 0, [hl]
jr nz, .asm_166fe
ld hl, wDaycareMan
ld a, $0
call Function1678f
jr c, .asm_16724
call Function16798
jr c, .asm_16721
callba Functionde2a
ld hl, wDaycareMan
set 0, [hl]
call Function167f6
call Function16a3b
ret
.asm_166fe
callba Functione698
ld hl, wBreedMon1Nick
call Function1686d
call Function16807
jr c, .asm_16721
callba Functiondd21
call Function16850
ld hl, wDaycareMan
res 0, [hl]
res 5, [hl]
jr .asm_16724
.asm_16721
call Function1689b
.asm_16724
ld a, $13
call Function1689b
ret
; 1672a
Special_DayCareLady: ; 1672a
ld hl, wDaycareLady
bit 0, [hl]
jr nz, .asm_16752
ld hl, wDaycareLady
ld a, $2
call Function16781
jr c, .asm_1677b
call Function16798
jr c, .asm_16778
callba Functionde37
ld hl, wDaycareLady
set 0, [hl]
call Function167f6
call Function16a3b
ret
.asm_16752
callba Functione6b3
ld hl, wBreedMon2Nick
call Function1686d
call Function16807
jr c, .asm_16778
callba Functiondd42
call Function16850
ld hl, wDaycareLady
res 0, [hl]
ld hl, wDaycareMan
res 5, [hl]
jr .asm_1677b
.asm_16778
call Function1689b
.asm_1677b
ld a, $13
call Function1689b
ret
; 16781
Function16781: ; 16781
bit 7, [hl]
jr nz, .asm_16788
set 7, [hl]
inc a
.asm_16788
call Function1689b
call YesNoBox
ret
; 1678f
Function1678f: ; 1678f
set 7, [hl]
call Function1689b
call YesNoBox
ret
; 16798
Function16798: ; 16798
ld a, [PartyCount]
cp 2
jr c, .asm_167e5
ld a, 4
call Function1689b
ld b, 6
callba SelectTradeOrDaycareMon
jr c, .asm_167dd
ld a, [CurPartySpecies]
cp EGG
jr z, .asm_167e1
callba CheckCurPartyMonFainted
jr c, .asm_167e9
ld hl, PartyMon1Item
ld bc, PARTYMON_STRUCT_LENGTH
ld a, [CurPartyMon]
call AddNTimes
ld d, [hl]
callba ItemIsMail
jr c, .asm_167ed
ld hl, PartyMonNicknames
ld a, [CurPartyMon]
call GetNick
and a
ret
.asm_167dd
ld a, $12
scf
ret
.asm_167e1
ld a, $6
scf
ret
.asm_167e5
ld a, $7
scf
ret
.asm_167e9
ld a, $8
scf
ret
.asm_167ed
ld a, $a
scf
ret
; 167f1
UnknownText_0x167f1: ; 0x167f1
;
text_jump UnknownText_0x1bdaa7
db "@"
; 0x167f6
Function167f6: ; 167f6
ld a, $5
call Function1689b
ld a, [CurPartySpecies]
call PlayCry
ld a, $9
call Function1689b
ret
; 16807
Function16807: ; 16807
ld a, [StringBuffer2 + 1]
and a
jr nz, .asm_16819
ld a, $f
call Function1689b
call YesNoBox
jr c, .asm_16844
jr .asm_1682d
.asm_16819
ld a, $b
call Function1689b
call YesNoBox
jr c, .asm_16844
ld a, $c
call Function1689b
call YesNoBox
jr c, .asm_16844
.asm_1682d
ld de, Money
ld bc, StringBuffer2 + 2
callba CompareMoney
jr c, .asm_16848
ld a, [PartyCount]
cp $6
jr nc, .asm_1684c
and a
ret
.asm_16844
ld a, $12
scf
ret
.asm_16848
ld a, $11
scf
ret
.asm_1684c
ld a, $10
scf
ret
; 16850
Function16850: ; 16850
ld bc, StringBuffer2 + 2
ld de, Money
callba TakeMoney
ld a, $d
call Function1689b
ld a, [CurPartySpecies]
call PlayCry
ld a, $e
call Function1689b
ret
; 1686d
Function1686d: ; 1686d
ld a, b
ld [StringBuffer2], a
ld a, d
ld [StringBuffer2 + 1], a
ld de, StringBuffer1
ld bc, NAME_LENGTH
call CopyBytes
ld hl, 0
ld bc, $64
ld a, [StringBuffer2 + 1]
call AddNTimes
ld de, $64
add hl, de
xor a
ld [StringBuffer2 + 2], a
ld a, h
ld [StringBuffer2 + 3], a
ld a, l
ld [StringBuffer2 + 4], a
ret
; 1689b
Function1689b: ; 1689b
ld e, a
ld d, 0
ld hl, TextTable_168aa
rept 2
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
call PrintText
ret
; 168aa
TextTable_168aa: ; 168aa
dw UnknownText_0x168d2
dw UnknownText_0x168d7
dw UnknownText_0x168dc
dw UnknownText_0x168e1
dw UnknownText_0x168e6
dw UnknownText_0x168ff
dw UnknownText_0x168f0
dw UnknownText_0x168eb
dw UnknownText_0x168fa
dw UnknownText_0x16904
dw UnknownText_0x168f5
dw UnknownText_0x16909
dw UnknownText_0x1690e
dw UnknownText_0x16913
dw UnknownText_0x16918
dw UnknownText_0x1691d
dw UnknownText_0x16922
dw UnknownText_0x16927
dw UnknownText_0x1692c
dw UnknownText_0x16931
; 168d2
UnknownText_0x168d2: ; 0x168d2
; I'm the DAY-CARE MAN. Want me to raise a #MON?
text_jump UnknownText_0x1bdaa9
db "@"
; 0x168d7
UnknownText_0x168d7: ; 0x168d7
; I'm the DAY-CARE MAN. Do you know about EGGS? I was raising #MON with my wife, you see. We were shocked to find an EGG! How incredible is that? So, want me to raise a #MON?
text_jump UnknownText_0x1bdad8
db "@"
; 0x168dc
UnknownText_0x168dc: ; 0x168dc
; I'm the DAY-CARE LADY. Should I raise a #MON for you?
text_jump UnknownText_0x1bdb85
db "@"
; 0x168e1
UnknownText_0x168e1: ; 0x168e1
; I'm the DAY-CARE LADY. Do you know about EGGS? My husband and I were raising some #MON, you see. We were shocked to find an EGG! How incredible could that be? Should I raise a #MON for you?
text_jump UnknownText_0x1bdbbb
db "@"
; 0x168e6
UnknownText_0x168e6: ; 0x168e6
; What should I raise for you?
text_jump UnknownText_0x1bdc79
db "@"
; 0x168eb
UnknownText_0x168eb: ; 0x168eb
; Oh? But you have just one #MON.
text_jump UnknownText_0x1bdc97
db "@"
; 0x168f0
UnknownText_0x168f0: ; 0x168f0
; Sorry, but I can't accept an EGG.
text_jump UnknownText_0x1bdcb8
db "@"
; 0x168f5
UnknownText_0x168f5: ; 0x168f5
; Remove MAIL before you come see me.
text_jump UnknownText_0x1bdcda
db "@"
; 0x168fa
UnknownText_0x168fa: ; 0x168fa
; If you give me that, what will you battle with?
text_jump UnknownText_0x1bdcff
db "@"
; 0x168ff
UnknownText_0x168ff: ; 0x168ff
; OK. I'll raise your @ .
text_jump UnknownText_0x1bdd30
db "@"
; 0x16904
UnknownText_0x16904: ; 0x16904
; Come back for it later.
text_jump UnknownText_0x1bdd4b
db "@"
; 0x16909
UnknownText_0x16909: ; 0x16909
; Are we geniuses or what? Want to see your @ ?
text_jump UnknownText_0x1bdd64
db "@"
; 0x1690e
UnknownText_0x1690e: ; 0x1690e
; Your @ has grown a lot. By level, it's grown by @ . If you want your #MON back, it will cost ¥@ .
text_jump UnknownText_0x1bdd96
db "@"
; 0x16913
UnknownText_0x16913: ; 0x16913
; Perfect! Here's your #MON.
text_jump UnknownText_0x1bde04
db "@"
; 0x16918
UnknownText_0x16918: ; 0x16918
; got back @ .
text_jump UnknownText_0x1bde1f
db "@"
; 0x1691d
UnknownText_0x1691d: ; 0x1691d
; Huh? Back already? Your @ needs a little more time with us. If you want your #MON back, it will cost ¥100.
text_jump UnknownText_0x1bde32
db "@"
; 0x16922
UnknownText_0x16922: ; 0x16922
; You have no room for it.
text_jump UnknownText_0x1bdea2
db "@"
; 0x16927
UnknownText_0x16927: ; 0x16927
; You don't have enough money.
text_jump UnknownText_0x1bdebc
db "@"
; 0x1692c
UnknownText_0x1692c: ; 0x1692c
; Oh, fine then.
text_jump UnknownText_0x1bded9
db "@"
; 0x16931
UnknownText_0x16931: ; 0x16931
; Come again.
text_jump UnknownText_0x1bdee9
db "@"
; 0x16936
Special_DayCareManOutside: ; 16936
ld hl, wDaycareMan
bit 6, [hl]
jr nz, Function16949
ld hl, UnknownText_0x16944
call PrintText
ret
UnknownText_0x16944: ; 0x16944
; Not yet…
text_jump UnknownText_0x1bdef6
db "@"
; 0x16949
Function16949: ; 16949
ld hl, UnknownText_0x16993
call PrintText
call YesNoBox
jr c, .asm_1697c
ld a, [PartyCount]
cp PARTY_LENGTH
jr nc, .asm_16987
call Function169ac
ld hl, wDaycareMan
res 6, [hl]
call Function16a3b
ld hl, UnknownText_0x16998
call PrintText
ld de, SFX_GET_EGG_FROM_DAYCARE_LADY
call PlaySFX
ld c, 120
call DelayFrames
ld hl, UnknownText_0x1699d
jr .asm_1697f
.asm_1697c
ld hl, UnknownText_0x169a2
.asm_1697f
call PrintText
xor a
ld [ScriptVar], a
ret
.asm_16987
ld hl, UnknownText_0x169a7
call PrintText
ld a, $1
ld [ScriptVar], a
ret
; 16993
UnknownText_0x16993: ; 0x16993
; Ah, it's you! We were raising your #MON, and my goodness, were we surprised! Your #MON had an EGG! We don't know how it got there, but your #MON had it. You want it?
text_jump UnknownText_0x1bdf00
db "@"
; 0x16998
UnknownText_0x16998: ; 0x16998
; received the EGG!
text_jump UnknownText_0x1bdfa5
db "@"
; 0x1699d
UnknownText_0x1699d: ; 0x1699d
; Take good care of it.
text_jump UnknownText_0x1bdfba
db "@"
; 0x169a2
UnknownText_0x169a2: ; 0x169a2
; Well then, I'll keep it. Thanks!
text_jump UnknownText_0x1bdfd1
db "@"
; 0x169a7
UnknownText_0x169a7: ; 0x169a7
; You have no room in your party. Come back later.
text_jump UnknownText_0x1bdff2
db "@"
; 0x169ac
Function169ac: ; 169ac
ld a, [wEggMonLevel]
ld [CurPartyLevel], a
ld hl, PartyCount
ld a, [hl]
cp PARTY_LENGTH
jr nc, .asm_16a2f
inc a
ld [hl], a
ld c, a
ld b, 0
add hl, bc
ld a, EGG
ld [hli], a
ld a, [wEggMonSpecies]
ld [CurSpecies], a
ld [CurPartySpecies], a
ld a, $ff
ld [hl], a
ld hl, PartyMonNicknames
ld bc, PKMN_NAME_LENGTH
call Function16a31
ld hl, wEggNick
call CopyBytes
ld hl, PartyMonOT
ld bc, NAME_LENGTH
call Function16a31
ld hl, wEggOT
call CopyBytes
ld hl, PartyMon1
ld bc, PARTYMON_STRUCT_LENGTH
call Function16a31
ld hl, wEggMon
ld bc, wEggMonEnd - wEggMon
call CopyBytes
call GetBaseData
ld a, [PartyCount]
dec a
ld hl, PartyMon1
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld b, h
ld c, l
ld hl, MON_ID + 1
add hl, bc
push hl
ld hl, MON_MAXHP
add hl, bc
ld d, h
ld e, l
pop hl
push bc
ld b, $0
predef CalcPkmnStats
pop bc
ld hl, MON_HP
add hl, bc
xor a
ld [hli], a
ld [hl], a
and a
ret
.asm_16a2f
scf
ret
; 16a31
Function16a31: ; 16a31
ld a, [PartyCount]
dec a
call AddNTimes
ld d, h
ld e, l
ret
; 16a3b
Function16a3b: ; 16a3b
ld a, [wDaycareLady]
bit 0, a
ret z
ld a, [wDaycareMan]
bit 0, a
ret z
callab CheckBreedmonCompatibility
ld a, [wd265]
and a
ret z
inc a
ret z
ld hl, wDaycareMan
set 5, [hl]
.asm_16a59
call Random
cp 150
jr c, .asm_16a59
ld [wStepsToEgg], a
jp Function16a66
; 16a66
Function16a66: ; 16a66
xor a
ld hl, wEggMon
ld bc, wEggMonEnd - wEggMon
call ByteFill
ld hl, wEggNick
ld bc, PKMN_NAME_LENGTH
call ByteFill
ld hl, wEggOT
ld bc, NAME_LENGTH
call ByteFill
ld a, [wBreedMon1DVs]
ld [TempMonDVs], a
ld a, [wBreedMon1DVs + 1]
ld [TempMonDVs + 1], a
ld a, [wBreedMon1Species]
ld [CurPartySpecies], a
ld a, $3
ld [MonType], a
ld a, [wBreedMon1Species]
cp DITTO
ld a, $1
jr z, .asm_16ab6
ld a, [wBreedMon2Species]
cp DITTO
ld a, $0
jr z, .asm_16ab6
callba GetGender
ld a, $0
jr z, .asm_16ab6
inc a
.asm_16ab6
ld [wDittoInDaycare], a
and a
ld a, [wBreedMon1Species]
jr z, .asm_16ac2
ld a, [wBreedMon2Species]
.asm_16ac2
ld [CurPartySpecies], a
callab GetPreEvolution
callab GetPreEvolution
ld a, EGG_LEVEL
ld [CurPartyLevel], a
ld a, [CurPartySpecies]
cp NIDORAN_F
jr nz, .asm_16ae8
call Random
cp $80
ld a, NIDORAN_F
jr c, .asm_16ae8
ld a, NIDORAN_M
.asm_16ae8
ld [CurPartySpecies], a
ld [CurSpecies], a
ld [wEggMonSpecies], a
call GetBaseData
ld hl, wEggNick
ld de, String_16be0
call CopyName2
ld hl, PlayerName
ld de, wEggOT
ld bc, NAME_LENGTH
call CopyBytes
xor a
ld [wEggMonItem], a
ld de, wEggMonMoves
xor a
ld [Buffer1], a
predef FillMoves
callba InitEggMoves
ld hl, wEggMonID
ld a, [PlayerID]
ld [hli], a
ld a, [PlayerID + 1]
ld [hl], a
ld a, [CurPartyLevel]
ld d, a
callab CalcExpAtLevel
ld hl, wEggMonExp
ld a, [hMultiplicand]
ld [hli], a
ld a, [$ffb5]
ld [hli], a
ld a, [$ffb6]
ld [hl], a
xor a
ld b, $a
ld hl, wEggMonStatExp
.asm_16b46
ld [hli], a
dec b
jr nz, .asm_16b46
ld hl, wEggMonDVs
call Random
ld [hli], a
ld [TempMonDVs], a
call Random
ld [hld], a
ld [TempMonDVs + 1], a
ld de, wBreedMon1DVs
ld a, [wBreedMon1Species]
cp DITTO
jr z, .asm_16b98
ld de, wBreedMon2DVs
ld a, [wBreedMon2Species]
cp DITTO
jr z, .asm_16b98
ld a, $3
ld [MonType], a
push hl
callba GetGender
pop hl
ld de, wBreedMon1DVs
ld bc, wBreedMon2DVs
jr c, .asm_16bab
jr z, .asm_16b90
ld a, [wDittoInDaycare]
and a
jr z, .asm_16b98
ld d, b
ld e, c
jr .asm_16b98
.asm_16b90
ld a, [wDittoInDaycare]
and a
jr nz, .asm_16b98
ld d, b
ld e, c
.asm_16b98
ld a, [de]
inc de
and $f
ld b, a
ld a, [hl]
and $f0
add b
ld [hli], a
ld a, [de]
and $7
ld b, a
ld a, [hl]
and $f8
add b
ld [hl], a
.asm_16bab
ld hl, StringBuffer1
ld de, wd050
ld bc, NAME_LENGTH
call CopyBytes
ld hl, wEggMonMoves
ld de, wEggMonPP
predef FillPP
ld hl, wd050
ld de, StringBuffer1
ld bc, NAME_LENGTH
call CopyBytes
ld a, [BaseEggSteps]
ld hl, wEggMonHappiness
ld [hli], a
xor a
rept 2
ld [hli], a
endr
ld [hl], a
ld a, [CurPartyLevel]
ld [wEggMonLevel], a
ret
; 16be0
String_16be0: ; 16be0
db "EGG@"
; 16be4