mirror of https://github.com/pret/pokecrystal.git
83 lines
1.4 KiB
NASM
83 lines
1.4 KiB
NASM
BillsGrandfather:
|
|
farcall SelectMonFromParty
|
|
jr c, .cancel
|
|
ld a, [wCurPartySpecies]
|
|
ld [wScriptVar], a
|
|
ld [wNamedObjectIndexBuffer], a
|
|
call GetPokemonName
|
|
jp CopyPokemonName_Buffer1_Buffer3
|
|
|
|
.cancel
|
|
xor a
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
OlderHaircutBrother:
|
|
ld hl, HappinessData_OlderHaircutBrother
|
|
jr HaircutOrGrooming
|
|
|
|
YoungerHaircutBrother:
|
|
ld hl, HappinessData_YoungerHaircutBrother
|
|
jr HaircutOrGrooming
|
|
|
|
DaisysGrooming:
|
|
ld hl, HappinessData_DaisysGrooming
|
|
; fallthrough
|
|
|
|
HaircutOrGrooming:
|
|
push hl
|
|
farcall SelectMonFromParty
|
|
pop hl
|
|
jr c, .nope
|
|
ld a, [wCurPartySpecies]
|
|
cp EGG
|
|
jr z, .egg
|
|
push hl
|
|
call GetCurNick
|
|
call CopyPokemonName_Buffer1_Buffer3
|
|
pop hl
|
|
call Random
|
|
; Bug: Subtracting $ff from $ff fails to set c.
|
|
; This can result in overflow into the next data array.
|
|
; In the case of getting a grooming from Daisy, we bleed
|
|
; into CopyPokemonName_Buffer1_Buffer3, which passes
|
|
; $d0 to ChangeHappiness and returns $73 to the script.
|
|
; The end result is that there is a 0.4% chance your
|
|
; Pokemon's happiness will not change at all.
|
|
.loop
|
|
sub [hl]
|
|
jr c, .ok
|
|
inc hl
|
|
inc hl
|
|
inc hl
|
|
jr .loop
|
|
|
|
.ok
|
|
inc hl
|
|
ld a, [hli]
|
|
ld [wScriptVar], a
|
|
ld c, [hl]
|
|
call ChangeHappiness
|
|
ret
|
|
|
|
.nope
|
|
xor a
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
.egg
|
|
ld a, 1
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
INCLUDE "data/events/happiness_probabilities.asm"
|
|
|
|
CopyPokemonName_Buffer1_Buffer3:
|
|
ld hl, wStringBuffer1
|
|
ld de, wStringBuffer3
|
|
ld bc, MON_NAME_LENGTH
|
|
jp CopyBytes
|
|
|
|
DummyPredef1:
|
|
ret
|