1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
GetFirstPokemonHappiness:
ld hl, wPartyMon1Happiness
ld bc, $30
ld de, wPartySpecies
.asm_7275
ld a, [de]
cp EGG
jr nz, .asm_727e
inc de
add hl, bc
jr .asm_7275
.asm_727e
ld [wd151], a
ld a, [hl]
ld [wScriptVar], a
call GetPokemonName
jp CopyPokemonName_Buffer1_Buffer3
CheckFirstMonIsEgg:
ld a, [wPartySpecies]
ld [wd151], a
cp EGG
ld a, $1
jr z, .asm_7298
xor a
.asm_7298
ld [wScriptVar], a
call GetPokemonName
jp CopyPokemonName_Buffer1_Buffer3
ChangeHappiness: ; 72a1 (1:72a1)
ld a, [wCurPartyMon]
inc a
ld e, a
ld d, $0
ld hl, wPartyCount
add hl, de
ld a, [hl]
cp $fd
ret z
push bc
ld hl, wPartyMon1Happiness
ld bc, $30
ld a, [wCurPartyMon]
call AddNTimes
pop bc
ld d, h
ld e, l
push de
ld a, [de]
cp $64
ld e, $0
jr c, .asm_72ce
inc e
cp $c8
jr c, .asm_72ce
inc e
.asm_72ce
dec c
ld b, $0
ld hl, .Actions
add hl, bc
add hl, bc
add hl, bc
ld d, $0
add hl, de
ld a, [hl]
cp $64
pop de
ld a, [de]
jr nc, .asm_72e8
add [hl]
jr nc, .asm_72ec
ld a, $ff
jr .asm_72ec
.asm_72e8
add [hl]
jr c, .asm_72ec
xor a
.asm_72ec
ld [de], a
ld a, [wBattleMode]
and a
ret z
ld a, [wCurPartyMon]
ld b, a
ld a, [wPartyMenuCursor]
cp b
ret nz
ld a, [de]
ld [wBattleMonHappiness], a
ret
.Actions:
db +5, +3, +2 ; Gained a level
db +5, +3, +2 ; Vitamin
db +1, +1, +0 ; X Item
db +3, +2, +1 ; Battled a Gym Leader
db +1, +1, +0 ; Learned a move
db -1, -1, -1 ; Lost to an enemy
db -5, -5, -10 ; Fainted due to poison
db -5, -5, -10 ; Lost to a much stronger enemy
db +1, +1, +1 ; Haircut (Y1)
db +3, +3, +1 ; Haircut (Y2)
db +5, +5, +2 ; Haircut (Y3)
db +1, +1, +1 ; Haircut (O1)
db +3, +3, +1 ; Haircut (O2)
db +10, +10, +4 ; Haircut (O3)
db -5, -5, -10 ; Used Heal Powder or Energypowder (bitter)
db -10, -10, -15 ; Used Energy Root (bitter)
db -15, -15, -20 ; Used Revival Herb (bitter)
db +3, +3, +1 ; Grooming
StepHappiness::
ld hl, wd9c1
ld a, [hl]
inc a
and $1
ld [hl], a
ret nz
ld de, wPartyCount
ld a, [de]
and a
ret z
ld c, a
ld hl, wPartyMon1Happiness
.asm_7349
inc de
ld a, [de]
cp EGG
jr z, .asm_7354
inc [hl]
jr nz, .asm_7354
ld [hl], $ff
.asm_7354
push de
ld de, $30
add hl, de
pop de
dec c
jr nz, .asm_7349
ret
MAX_EXP EQU 5242880
DaycareStep::
CheckFlag ENGINE_DAY_CARE_MAN_HAS_MON
jr z, .daycare_lady
ld a, [wBreedMon1Level]
cp MAX_LEVEL
jr nc, .daycare_lady
ld hl, wBreedMon1Exp + 2
inc [hl]
jr nz, .daycare_lady
dec hl
inc [hl]
jr nz, .daycare_lady
dec hl
inc [hl]
ld a, [hl]
cp MAX_EXP / $10000
jr c, .daycare_lady
ld a, MAX_EXP / $10000
ld [hl], a
.daycare_lady
CheckFlag ENGINE_DAY_CARE_LADY_HAS_MON
jr z, .check_egg
ld a, [wBreedMon2Level]
cp MAX_LEVEL
jr nc, .check_egg
ld hl, wBreedMon2Exp + 2
inc [hl]
jr nz, .check_egg
dec hl
inc [hl]
jr nz, .check_egg
dec hl
inc [hl]
ld a, [hl]
cp MAX_EXP / $10000
jr c, .check_egg
ld a, MAX_EXP / $10000
ld [hl], a
.check_egg
ld hl, wDayCareMan
bit 5, [hl]
ret z
ld hl, wStepsToEgg
dec [hl]
ret nz
call Random
ld [hl], a
callfar CheckBreedmonCompatibility
ld a, [wd151]
cp 230
ld b, -1 + 32 percent
jr nc, .okay
ld a, [wd151]
cp 170
ld b, 16 percent
jr nc, .okay
ld a, [wd151]
cp 110
ld b, 12 percent
jr nc, .okay
ld b, 4 percent
.okay
call Random
cp b
ret nc
ld hl, wDayCareMan
res 5, [hl]
SetFlagForceReuseHL ENGINE_DAY_CARE_MAN_HAS_EGG
ret
|