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
218
219
220
221
222
223
224
225
226
227
|
PrepMysteryGiftDataToSend: ; 2c642 (b:4642)
ld de, wMysteryGiftStaging
ld a, $1
ld [de], a
inc de ; wc801
ld a, BANK(sGameData)
call GetSRAMBank
ld hl, sPlayerData + PlayerID - wPlayerData
ld a, [hli]
ld [de], a
ld b, a
inc de
ld a, [hl]
ld [de], a
ld c, a
inc de ; wc803
push bc
ld hl, sPlayerData + PlayerName - wPlayerData
ld bc, NAME_LENGTH
call CopyBytes
push de ; wc80e
ld hl, sPokemonData + PokedexCaught - wPokemonData
ld b, EndPokedexCaught - PokedexCaught
call CountSetBits
pop de
pop bc
ld a, [wd265]
ld [de], a
inc de ; wc80f
call CloseSRAM
call Random
and $1
ld [de], a
inc de ; wc810
call .RandomSample
ld [de], a
inc de ; wc811
ld a, c
ld c, b
ld b, a
call .RandomSample
ld [de], a
inc de ; wc812
ld a, BANK(sBackupMysteryGiftItem)
call GetSRAMBank
ld a, [sBackupMysteryGiftItem]
ld [de], a
inc de
ld a, [sBackupMysteryGiftItem + 1]
ld [de], a
ld a, $14
ld [wca00], a
call CloseSRAM
ld hl, wMysteryGiftStaging
ld de, wMysteryGiftPlayerData
ld bc, wMysteryGiftPlayerDataEnd - wMysteryGiftPlayerData
jp CopyBytes
.RandomSample: ; 2c6ac (b:46ac)
push de
call Random
cp $19 ; 10 percent
jr c, .tenpercent
call Random
and $7
ld d, a
rl d
ld e, $80
.loop
rlc e
dec a
jr nz, .loop
ld a, e
and c
jr z, .skip
ld a, $1
.skip
add d
jr .done
.tenpercent
call Random
cp $32 ; 20 percent
jr c, .twopercent
call Random
and $3
ld d, a
rl d
ld e, $80
.loop2
rlc e
dec a
jr nz, .loop2
ld a, e
and b
jr z, .skip2
ld a, $1
.skip2
add d
add $10
jr .done
.twopercent
call Random
cp $32 ; 50 ; 20 percent
jr c, .pointfourpercent
ld a, b
swap a
and $7
add $18
jr .done
.pointfourpercent
ld a, b
and $80
ld a, $20
jr z, .done
ld a, $21
.done
pop de
ret
MysteryGiftGetItemHeldEffect: ; 2c708 (b:4708)
ld a, c
cp $25 ; 37
jr nc, MysteryGiftFallbackItem
ld hl, MysteryGiftItems
ld b, 0
add hl, bc
ld c, [hl]
ret
MysteryGiftGetDecoration: ; 2c715 (b:4715)
ld a, c
cp $25 ; 37
jr nc, MysteryGiftFallbackItem
ld hl, MysteryGiftDecos
ld b, 0
add hl, bc
ld c, [hl]
ret
MysteryGiftFallbackItem: ; 2c722 (b:4722)
ld c, DECO_POLKADOT_BED ; GREAT_BALL
ret
; 2c725 (b:4725)
MysteryGiftItems: ; 2c725
db BERRY
db PRZCUREBERRY
db MINT_BERRY
db ICE_BERRY
db BURNT_BERRY
db PSNCUREBERRY
db GUARD_SPEC
db X_DEFEND
db X_ATTACK
db BITTER_BERRY
db DIRE_HIT
db X_SPECIAL
db X_ACCURACY
db EON_MAIL
db MORPH_MAIL
db MUSIC_MAIL
db MIRACLEBERRY
db GOLD_BERRY
db REVIVE
db GREAT_BALL
db SUPER_REPEL
db MAX_REPEL
db ELIXER
db ETHER
db WATER_STONE
db FIRE_STONE
db LEAF_STONE
db THUNDERSTONE
db MAX_ETHER
db MAX_ELIXER
db MAX_REVIVE
db SCOPE_LENS
db HP_UP
db PP_UP
db RARE_CANDY
db BLUESKY_MAIL
db MIRAGE_MAIL
; 2c74a
MysteryGiftDecos: ; 2c74a
db DECOFLAG_PIKACHU_DOLL
db DECOFLAG_BULBASAUR_DOLL
db DECOFLAG_CHARMANDER_DOLL
db DECOFLAG_SQUIRTLE_DOLL
db DECOFLAG_POLIWAG_DOLL
db DECOFLAG_DIGLETT_DOLL
db DECOFLAG_STARMIE_DOLL
db DECOFLAG_MAGIKARP_DOLL
db DECOFLAG_ODDISH_DOLL
db DECOFLAG_GENGAR_DOLL
db DECOFLAG_CLEFAIRY_POSTER
db DECOFLAG_JIGGLYPUFF_POSTER
db DECOFLAG_SNES
db DECOFLAG_SHELLDER_DOLL
db DECOFLAG_VOLTORB_DOLL
db DECOFLAG_WEEDLE_DOLL
db DECOFLAG_MAGNAPLANT
db DECOFLAG_TROPICPLANT
db DECOFLAG_FAMICOM
db DECOFLAG_N64
db DECOFLAG_SURF_PIKACHU_DOLL
db DECOFLAG_JIGGLYPUFF_DOLL
db DECOFLAG_PINK_BED
db DECOFLAG_POLKADOT_BED
db DECOFLAG_RED_CARPET
db DECOFLAG_BLUE_CARPET
db DECOFLAG_YELLOW_CARPET
db DECOFLAG_GREEN_CARPET
db DECOFLAG_JUMBOPLANT
db DECOFLAG_VIRTUAL_BOY
db DECOFLAG_MACHOP_DOLL
db DECOFLAG_PIKACHU_POSTER
db DECOFLAG_TENTACOOL_DOLL
db DECOFLAG_BIG_ONIX_DOLL
db DECOFLAG_PIKACHU_BED
db DECOFLAG_GRIMER_DOLL
db DECOFLAG_UNOWN_DOLL
; 2c76f
|