ref: aa51dbc61245d5b4949c1872b3d3e915a981ded3
dir: /engine/events/haircut.asm/
BillsGrandfather: ; 73f7 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 YoungerHaircutBrother: ; 7413 ld hl, HappinessData_YoungerHaircutBrother jr HaircutOrGrooming OlderHaircutBrother: ; 7418 ld hl, HappinessData_OlderHaircutBrother jr HaircutOrGrooming DaisysGrooming: ; 741d ld hl, HappinessData_DaisysGrooming ; fallthrough HaircutOrGrooming: ; 7420 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: ; 746e ld hl, wStringBuffer1 ld de, wStringBuffer3 ld bc, MON_NAME_LENGTH jp CopyBytes DummyPredef1: ; 747a ret