pokecrystal/engine/pokemon/tempmon.asm

128 lines
1.8 KiB
NASM

CopyMonToTempMon:
; gets the BaseData of a mon
; and copies the party_struct to wTempMon
ld a, [wCurPartyMon]
ld e, a
call GetMonSpecies
ld a, [wCurPartySpecies]
ld [wCurSpecies], a
call GetBaseData
ld a, [wMonType]
ld hl, wPartyMon1Species
ld bc, PARTYMON_STRUCT_LENGTH
and a
jr z, .copywholestruct
ld hl, wOTPartyMon1Species
ld bc, PARTYMON_STRUCT_LENGTH
cp OTPARTYMON
jr z, .copywholestruct
ld bc, BOXMON_STRUCT_LENGTH
callfar CopyBoxmonToTempMon
jr .done
.copywholestruct
ld a, [wCurPartyMon]
call AddNTimes
ld de, wTempMon
ld bc, PARTYMON_STRUCT_LENGTH
call CopyBytes
.done
ret
CalcBufferMonStats:
ld bc, wBufferMon
jr _TempMonStatsCalculation
CalcTempmonStats:
ld bc, wTempMon
_TempMonStatsCalculation:
ld hl, MON_LEVEL
add hl, bc
ld a, [hl]
ld [wCurPartyLevel], a
ld hl, MON_MAXHP
add hl, bc
ld d, h
ld e, l
ld hl, MON_STAT_EXP - 1
add hl, bc
push bc
ld b, TRUE
predef CalcMonStats
pop bc
ld hl, MON_HP
add hl, bc
ld d, h
ld e, l
ld a, [wCurPartySpecies]
cp EGG
jr nz, .not_egg
xor a
ld [de], a
inc de
ld [de], a
jr .zero_status
.not_egg
push bc
ld hl, MON_MAXHP
add hl, bc
ld bc, 2
call CopyBytes
pop bc
.zero_status
ld hl, MON_STATUS
add hl, bc
xor a
ld [hli], a
ld [hl], a
ret
GetMonSpecies:
; [wMonType] has the type of the mon
; e = Nr. of mon (i.e. [wCurPartyMon])
ld a, [wMonType]
and a ; PARTYMON
jr z, .partymon
cp OTPARTYMON
jr z, .otpartymon
cp BOXMON
jr z, .boxmon
cp TEMPMON
jr z, .breedmon
; WILDMON
.partymon
ld hl, wPartySpecies
jr .done
.otpartymon
ld hl, wOTPartySpecies
jr .done
.boxmon
ld a, BANK(sBoxSpecies)
call GetSRAMBank
ld hl, sBoxSpecies
call .done
call CloseSRAM
ret
.breedmon
ld a, [wBreedMon1Species]
jr .done2
.done
ld d, 0
add hl, de
ld a, [hl]
.done2
ld [wCurPartySpecies], a
ret