Comment GeneratePartyMonStats

This commit is contained in:
mid-kid 2018-02-08 19:41:12 +01:00
parent 8ddffef8b8
commit 89c5f0adf0
2 changed files with 60 additions and 17 deletions

View File

@ -10,4 +10,4 @@ PnP_HiddenPlaces:
map ROUTE_16
map ROUTE_14
map CINNABAR_POKECENTER_2F_BETA
PnP_HiddenPlacesEnd
PnP_HiddenPlacesEnd:

View File

@ -47,6 +47,7 @@ TryAddMonToParty: ; d88c
ld hl, wPlayerName
ld bc, NAME_LENGTH
call CopyBytes
; Only initialize the nickname for party mon
ld a, [wMonType]
and a
jr nz, .skipnickname
@ -76,24 +77,34 @@ TryAddMonToParty: ; d88c
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
GeneratePartyMonStats: ; d906
; wBattleMode specifies whether it's a wild mon or not.
; wMonType specifies whether it's an opposing mon or not.
; wCurPartySpecies/wCurPartyLevel specify the species and level.
; hl points to the wPartyMon struct to fill.
ld e, l
ld d, h
push hl
; Initialize the species
ld a, [wCurPartySpecies]
ld [wCurSpecies], a
call GetBaseData
ld a, [wBaseDexNo]
ld [de], a
inc de
; Copy the item if it's a wild mon
ld a, [wBattleMode]
and a
ld a, $0
jr z, .skipitem
ld a, [wEnemyMonItem]
.skipitem
ld [de], a
inc de
; Copy the moves if it's a wild mon
push de
ld h, d
ld l, e
@ -124,15 +135,19 @@ GeneratePartyMonStats: ; d906
.next
pop de
rept 4
rept NUM_MOVES
inc de
endr
; Initialize ID.
ld a, [wPlayerID]
ld [de], a
inc de
ld a, [wPlayerID + 1]
ld [de], a
inc de
; Initialize Exp.
push de
ld a, [wCurPartyLevel]
ld d, a
@ -147,24 +162,28 @@ endr
ld a, [hProduct + 3]
ld [de], a
inc de
; Initialize stat experience.
xor a
ld b, $a
ld b, MON_DVS - MON_STAT_EXP
.loop
ld [de], a
inc de
dec b
jr nz, .loop
pop hl
push hl
ld a, [wMonType]
and $f
jr z, .generateDVs
jr z, .registerpokedex
push hl
farcall GetTrainerDVs
pop hl
jr .initializetrainermonstats
jr .initializeDVs
.generateDVs
.registerpokedex
ld a, [wCurPartySpecies]
ld [wd265], a
dec a
@ -174,23 +193,26 @@ endr
dec a
call SetSeenAndCaughtMon
pop de
pop hl
push hl
ld a, [wBattleMode]
and a
jr nz, .copywildmonstats
jr nz, .copywildmonDVs
call Random
ld b, a
call Random
ld c, a
.initializetrainermonstats
.initializeDVs
ld a, b
ld [de], a
inc de
ld a, c
ld [de], a
inc de
; Initialize PP.
push hl
push de
inc hl
@ -201,24 +223,37 @@ endr
rept 4
inc de
endr
ld a, 70
; Initialize happiness.
ld a, BASE_HAPPINESS
ld [de], a
inc de
xor a
; PokerusStatus
ld [de], a
inc de
; CaughtData/CaughtTime/CaughtLevel
ld [de], a
inc de
; CaughtGender/CaughtLocation
ld [de], a
inc de
; Initialize level.
ld a, [wCurPartyLevel]
ld [de], a
inc de
xor a
; Status
ld [de], a
inc de
; Unused
ld [de], a
inc de
; Initialize HP.
ld bc, 10
add hl, bc
ld a, $1
@ -231,9 +266,9 @@ endr
ld a, [hProduct + 3]
ld [de], a
inc de
jr .next2
jr .initstats
.copywildmonstats
.copywildmonDVs
ld a, [wEnemyMonDVs]
ld [de], a
inc de
@ -252,19 +287,27 @@ endr
jr nz, .wildmonpploop
pop hl
; Initialize happiness.
ld a, BASE_HAPPINESS
ld [de], a
inc de
xor a
; PokerusStatus
ld [de], a
inc de
; CaughtData/CaughtTime/CaughtLevel
ld [de], a
inc de
; CaughtGender/CaughtLocation
ld [de], a
inc de
; Initialize level.
ld a, [wCurPartyLevel]
ld [de], a
inc de
ld hl, wEnemyMonStatus
; Copy wEnemyMonStatus
ld a, [hli]
@ -282,15 +325,15 @@ endr
ld [de], a
inc de
.next2
.initstats
ld a, [wBattleMode]
dec a
jr nz, .generatestats
ld hl, wEnemyMonMaxHP
ld bc, 2 * 6 ; MaxHP + 5 Stats
ld bc, PARTYMON_STRUCT_LENGTH - MON_MAXHP
call CopyBytes
pop hl
jr .next3
jr .registerunowndex
.generatestats
pop hl
@ -299,7 +342,7 @@ endr
ld b, $0 ; if b = 1, then stat calculation takes stat exp into account.
call CalcPkmnStats
.next3
.registerunowndex
ld a, [wMonType]
and $f
jr nz, .done