summaryrefslogtreecommitdiff
path: root/engine/events/happiness_egg.asm
blob: 6c8b918cdbece826e1e3558d321660651183e984 (plain)
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