mirror of https://github.com/pret/pokecrystal.git
239 lines
3.5 KiB
NASM
239 lines
3.5 KiB
NASM
|
GetFirstPokemonHappiness: ; 718d
|
||
|
ld hl, PartyMon1Happiness
|
||
|
ld bc, PARTYMON_STRUCT_LENGTH
|
||
|
ld de, PartySpecies
|
||
|
.loop
|
||
|
ld a, [de]
|
||
|
cp EGG
|
||
|
jr nz, .done
|
||
|
inc de
|
||
|
add hl, bc
|
||
|
jr .loop
|
||
|
|
||
|
.done
|
||
|
ld [wd265], a
|
||
|
ld a, [hl]
|
||
|
ld [ScriptVar], a
|
||
|
call GetPokemonName
|
||
|
jp CopyPokemonName_Buffer1_Buffer3
|
||
|
|
||
|
CheckFirstMonIsEgg: ; 71ac
|
||
|
ld a, [PartySpecies]
|
||
|
ld [wd265], a
|
||
|
cp EGG
|
||
|
ld a, $1
|
||
|
jr z, .egg
|
||
|
xor a
|
||
|
|
||
|
.egg
|
||
|
ld [ScriptVar], a
|
||
|
call GetPokemonName
|
||
|
jp CopyPokemonName_Buffer1_Buffer3
|
||
|
|
||
|
ChangeHappiness: ; 71c2
|
||
|
; Perform happiness action c on CurPartyMon
|
||
|
|
||
|
ld a, [CurPartyMon]
|
||
|
inc a
|
||
|
ld e, a
|
||
|
ld d, 0
|
||
|
ld hl, PartySpecies - 1
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
cp EGG
|
||
|
ret z
|
||
|
|
||
|
push bc
|
||
|
ld hl, PartyMon1Happiness
|
||
|
ld bc, PARTYMON_STRUCT_LENGTH
|
||
|
ld a, [CurPartyMon]
|
||
|
call AddNTimes
|
||
|
pop bc
|
||
|
|
||
|
ld d, h
|
||
|
ld e, l
|
||
|
|
||
|
push de
|
||
|
ld a, [de]
|
||
|
cp 100
|
||
|
ld e, 0
|
||
|
jr c, .ok
|
||
|
inc e
|
||
|
cp 200
|
||
|
jr c, .ok
|
||
|
inc e
|
||
|
|
||
|
.ok
|
||
|
dec c
|
||
|
ld b, 0
|
||
|
ld hl, .Actions
|
||
|
rept 3
|
||
|
add hl, bc
|
||
|
endr
|
||
|
ld d, 0
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
cp 100
|
||
|
pop de
|
||
|
|
||
|
ld a, [de]
|
||
|
jr nc, .negative
|
||
|
add [hl]
|
||
|
jr nc, .done
|
||
|
ld a, -1
|
||
|
jr .done
|
||
|
|
||
|
.negative
|
||
|
add [hl]
|
||
|
jr c, .done
|
||
|
xor a
|
||
|
|
||
|
.done
|
||
|
ld [de], a
|
||
|
ld a, [wBattleMode]
|
||
|
and a
|
||
|
ret z
|
||
|
ld a, [CurPartyMon]
|
||
|
ld b, a
|
||
|
ld a, [wPartyMenuCursor]
|
||
|
cp b
|
||
|
ret nz
|
||
|
ld a, [de]
|
||
|
ld [BattleMonHappiness], 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
|
||
|
db +10, +6, +4 ; Gained a level in the place where it was caught
|
||
|
|
||
|
StepHappiness:: ; 725a
|
||
|
; Raise the party's happiness by 1 point every other step cycle.
|
||
|
|
||
|
ld hl, wHappinessStepCount
|
||
|
ld a, [hl]
|
||
|
inc a
|
||
|
and 1
|
||
|
ld [hl], a
|
||
|
ret nz
|
||
|
|
||
|
ld de, PartyCount
|
||
|
ld a, [de]
|
||
|
and a
|
||
|
ret z
|
||
|
|
||
|
ld c, a
|
||
|
ld hl, PartyMon1Happiness
|
||
|
.loop
|
||
|
inc de
|
||
|
ld a, [de]
|
||
|
cp EGG
|
||
|
jr z, .next
|
||
|
inc [hl]
|
||
|
jr nz, .next
|
||
|
ld [hl], $ff
|
||
|
|
||
|
.next
|
||
|
push de
|
||
|
ld de, PARTYMON_STRUCT_LENGTH
|
||
|
add hl, de
|
||
|
pop de
|
||
|
dec c
|
||
|
jr nz, .loop
|
||
|
ret
|
||
|
|
||
|
DaycareStep:: ; 7282
|
||
|
|
||
|
ld a, [wDaycareMan]
|
||
|
bit 0, a
|
||
|
jr z, .daycare_lady
|
||
|
|
||
|
ld a, [wBreedMon1Level] ; level
|
||
|
cp 100
|
||
|
jr nc, .daycare_lady
|
||
|
ld hl, wBreedMon1Exp + 2 ; exp
|
||
|
inc [hl]
|
||
|
jr nz, .daycare_lady
|
||
|
dec hl
|
||
|
inc [hl]
|
||
|
jr nz, .daycare_lady
|
||
|
dec hl
|
||
|
inc [hl]
|
||
|
ld a, [hl]
|
||
|
cp 5242880 / $10000
|
||
|
jr c, .daycare_lady
|
||
|
ld a, 5242880 / $10000
|
||
|
ld [hl], a
|
||
|
|
||
|
.daycare_lady
|
||
|
ld a, [wDaycareLady]
|
||
|
bit 0, a
|
||
|
jr z, .check_egg
|
||
|
|
||
|
ld a, [wBreedMon2Level] ; level
|
||
|
cp 100
|
||
|
jr nc, .check_egg
|
||
|
ld hl, wBreedMon2Exp + 2 ; exp
|
||
|
inc [hl]
|
||
|
jr nz, .check_egg
|
||
|
dec hl
|
||
|
inc [hl]
|
||
|
jr nz, .check_egg
|
||
|
dec hl
|
||
|
inc [hl]
|
||
|
ld a, [hl]
|
||
|
cp 5242880 / $10000
|
||
|
jr c, .check_egg
|
||
|
ld a, 5242880 / $10000
|
||
|
ld [hl], a
|
||
|
|
||
|
.check_egg
|
||
|
ld hl, wDaycareMan
|
||
|
bit 5, [hl] ; egg
|
||
|
ret z
|
||
|
ld hl, wStepsToEgg
|
||
|
dec [hl]
|
||
|
ret nz
|
||
|
|
||
|
call Random
|
||
|
ld [hl], a
|
||
|
callab CheckBreedmonCompatibility
|
||
|
ld a, [wd265]
|
||
|
cp 230
|
||
|
ld b, -1 + 32 percent
|
||
|
jr nc, .okay
|
||
|
ld a, [wd265]
|
||
|
cp 170
|
||
|
ld b, 16 percent
|
||
|
jr nc, .okay
|
||
|
ld a, [wd265]
|
||
|
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]
|
||
|
set 6, [hl]
|
||
|
ret
|