Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pret
GitHub Repository: pret/pokered
Path: blob/master/scripts/Daycare.asm
1270 views
1
Daycare_Script:
2
jp EnableAutoTextBoxDrawing
3
4
Daycare_TextPointers:
5
def_text_pointers
6
dw_const DaycareGentlemanText, TEXT_DAYCARE_GENTLEMAN
7
8
DaycareGentlemanText:
9
text_asm
10
call SaveScreenTilesToBuffer2
11
ld a, [wDayCareInUse]
12
and a
13
jp nz, .daycareInUse
14
ld hl, .IntroText
15
call PrintText
16
call YesNoChoice
17
ld a, [wCurrentMenuItem]
18
and a
19
ld hl, .ComeAgainText
20
jp nz, .done
21
ld a, [wPartyCount]
22
dec a
23
ld hl, .OnlyHaveOneMonText
24
jp z, .done
25
ld hl, .WhichMonText
26
call PrintText
27
xor a
28
ld [wUpdateSpritesEnabled], a
29
ld [wPartyMenuTypeOrMessageID], a
30
ld [wMenuItemToSwap], a
31
call DisplayPartyMenu
32
push af
33
call GBPalWhiteOutWithDelay3
34
call RestoreScreenTilesAndReloadTilePatterns
35
call LoadGBPal
36
pop af
37
ld hl, .AllRightThenText
38
jp c, .done
39
callfar KnowsHMMove
40
ld hl, .CantAcceptMonWithHMText
41
jp c, .done
42
xor a
43
ld [wPartyAndBillsPCSavedMenuItem], a
44
ld a, [wWhichPokemon]
45
ld hl, wPartyMonNicks
46
call GetPartyMonName
47
ld hl, .WillLookAfterMonText
48
call PrintText
49
ld a, 1
50
ld [wDayCareInUse], a
51
ld a, PARTY_TO_DAYCARE
52
ld [wMoveMonType], a
53
call MoveMon
54
xor a
55
ld [wRemoveMonFromBox], a
56
call RemovePokemon
57
ld a, [wCurPartySpecies]
58
call PlayCry
59
ld hl, .ComeSeeMeInAWhileText
60
jp .done
61
62
.daycareInUse
63
xor a
64
ld hl, wDayCareMonName
65
call GetPartyMonName
66
ld a, DAYCARE_DATA
67
ld [wMonDataLocation], a
68
call LoadMonData
69
callfar CalcLevelFromExperience
70
ld a, d
71
cp MAX_LEVEL
72
jr c, .skipCalcExp
73
74
ld d, MAX_LEVEL
75
callfar CalcExperience
76
ld hl, wDayCareMonExp
77
ldh a, [hExperience]
78
ld [hli], a
79
ldh a, [hExperience + 1]
80
ld [hli], a
81
ldh a, [hExperience + 2]
82
ld [hl], a
83
ld d, MAX_LEVEL
84
85
.skipCalcExp
86
xor a
87
ld [wDayCareNumLevelsGrown], a
88
ld hl, wDayCareMonBoxLevel
89
ld a, [hl]
90
ld [wDayCareStartLevel], a
91
cp d
92
ld [hl], d
93
ld hl, .MonNeedsMoreTimeText
94
jr z, .next
95
ld a, [wDayCareStartLevel]
96
ld b, a
97
ld a, d
98
sub b
99
ld [wDayCareNumLevelsGrown], a
100
ld hl, .MonHasGrownText
101
102
.next
103
call PrintText
104
ld a, [wPartyCount]
105
cp PARTY_LENGTH
106
ld hl, .NoRoomForMonText
107
jp z, .leaveMonInDayCare
108
ld de, wDayCareTotalCost
109
xor a
110
ld [de], a
111
inc de
112
ld [de], a
113
ld hl, wDayCarePerLevelCost
114
ld a, $1
115
ld [hli], a
116
ld [hl], $0
117
ld a, [wDayCareNumLevelsGrown]
118
inc a
119
ld b, a
120
ld c, 2
121
.calcPriceLoop
122
push hl
123
push de
124
push bc
125
predef AddBCDPredef
126
pop bc
127
pop de
128
pop hl
129
dec b
130
jr nz, .calcPriceLoop
131
ld hl, .OweMoneyText
132
call PrintText
133
ld a, MONEY_BOX
134
ld [wTextBoxID], a
135
call DisplayTextBoxID
136
call YesNoChoice
137
ld hl, .AllRightThenText
138
ld a, [wCurrentMenuItem]
139
and a
140
jp nz, .leaveMonInDayCare
141
ld hl, wDayCareTotalCost
142
ldh [hMoney], a
143
ld a, [hli]
144
ldh [hMoney + 1], a
145
ld a, [hl]
146
ldh [hMoney + 2], a
147
call HasEnoughMoney
148
jr nc, .enoughMoney
149
ld hl, .NotEnoughMoneyText
150
jp .leaveMonInDayCare
151
152
.enoughMoney
153
xor a
154
ld [wDayCareInUse], a
155
ld hl, wDayCareNumLevelsGrown
156
ld [hli], a
157
inc hl
158
ld de, wPlayerMoney + 2
159
ld c, $3
160
predef SubBCDPredef
161
ld a, SFX_PURCHASE
162
call PlaySoundWaitForCurrent
163
ld a, MONEY_BOX
164
ld [wTextBoxID], a
165
call DisplayTextBoxID
166
ld hl, .HeresYourMonText
167
call PrintText
168
ld a, DAYCARE_TO_PARTY
169
ld [wMoveMonType], a
170
call MoveMon
171
ld a, [wDayCareMonSpecies]
172
ld [wCurPartySpecies], a
173
ld a, [wPartyCount]
174
dec a
175
push af
176
ld bc, wPartyMon2 - wPartyMon1
177
push bc
178
ld hl, wPartyMon1Moves
179
call AddNTimes
180
ld d, h
181
ld e, l
182
ld a, 1
183
ld [wLearningMovesFromDayCare], a
184
predef WriteMonMoves
185
pop bc
186
pop af
187
188
; set mon's HP to max
189
ld hl, wPartyMon1HP
190
call AddNTimes
191
ld d, h
192
ld e, l
193
ld bc, wPartyMon1MaxHP - wPartyMon1HP
194
add hl, bc
195
ld a, [hli]
196
ld [de], a
197
inc de
198
ld a, [hl]
199
ld [de], a
200
201
ld a, [wCurPartySpecies]
202
call PlayCry
203
ld hl, .GotMonBackText
204
jr .done
205
206
.leaveMonInDayCare
207
ld a, [wDayCareStartLevel]
208
ld [wDayCareMonBoxLevel], a
209
210
.done
211
call PrintText
212
jp TextScriptEnd
213
214
.IntroText:
215
text_far _DaycareGentlemanIntroText
216
text_end
217
218
.WhichMonText:
219
text_far _DaycareGentlemanWhichMonText
220
text_end
221
222
.WillLookAfterMonText:
223
text_far _DaycareGentlemanWillLookAfterMonText
224
text_end
225
226
.ComeSeeMeInAWhileText:
227
text_far _DaycareGentlemanComeSeeMeInAWhileText
228
text_end
229
230
.MonHasGrownText:
231
text_far _DaycareGentlemanMonHasGrownText
232
text_end
233
234
.OweMoneyText:
235
text_far _DaycareGentlemanOweMoneyText
236
text_end
237
238
.GotMonBackText:
239
text_far _DaycareGentlemanGotMonBackText
240
text_end
241
242
.MonNeedsMoreTimeText:
243
text_far _DaycareGentlemanMonNeedsMoreTimeText
244
text_end
245
246
.AllRightThenText:
247
text_far _DaycareGentlemanAllRightThenText
248
.ComeAgainText:
249
text_far _DaycareGentlemanComeAgainText
250
text_end
251
252
.NoRoomForMonText:
253
text_far _DaycareGentlemanNoRoomForMonText
254
text_end
255
256
.OnlyHaveOneMonText:
257
text_far _DaycareGentlemanOnlyHaveOneMonText
258
text_end
259
260
.CantAcceptMonWithHMText:
261
text_far _DaycareGentlemanCantAcceptMonWithHMText
262
text_end
263
264
.HeresYourMonText:
265
text_far _DaycareGentlemanHeresYourMonText
266
text_end
267
268
.NotEnoughMoneyText:
269
text_far _DaycareGentlemanNotEnoughMoneyText
270
text_end
271
272