pokegold/engine/pokemon/caught_nickname.asm

131 lines
2.3 KiB
NASM

CheckPartyFullAfterContest:
ld a, [wContestMonSpecies]
and a
jp z, .DidntCatchAnything
ld [wCurPartySpecies], a
ld [wCurSpecies], a
call GetBaseData
ld hl, wPartyCount
ld a, [hl]
cp PARTY_LENGTH
jp nc, .TryAddToBox
inc a
ld [hl], a
ld c, a
ld b, 0
add hl, bc
ld a, [wContestMonSpecies]
ld [hli], a
ld [wCurSpecies], a
ld a, -1
ld [hl], a
ld hl, wPartyMon1Species
ld a, [wPartyCount]
dec a
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld d, h
ld e, l
ld hl, wContestMon
ld bc, PARTYMON_STRUCT_LENGTH
call CopyBytes
ld a, [wPartyCount]
dec a
ld hl, wPartyMonOTs
call SkipNames
ld d, h
ld e, l
ld hl, wPlayerName
call CopyBytes
ld a, [wCurPartySpecies]
ld [wNamedObjectIndex], a
call GetPokemonName
ld hl, wStringBuffer1
ld de, wMonOrItemNameBuffer
ld bc, MON_NAME_LENGTH
call CopyBytes
call GiveANickname_YesNo
jr c, .Party_SkipNickname
ld a, [wPartyCount]
dec a
ld [wCurPartyMon], a
xor a
ld [wMonType], a
ld de, wMonOrItemNameBuffer
callfar InitNickname
.Party_SkipNickname:
ld a, [wPartyCount]
dec a
ld hl, wPartyMonNicknames
call SkipNames
ld d, h
ld e, l
ld hl, wMonOrItemNameBuffer
call CopyBytes
xor a
ld [wContestMonSpecies], a
and a ; BUGCONTEST_CAUGHT_MON
ld [wScriptVar], a
ret
.TryAddToBox:
ld a, BANK(sBoxCount)
call OpenSRAM
ld hl, sBoxCount
ld a, [hl]
cp MONS_PER_BOX
call CloseSRAM
jr nc, .BoxFull
xor a
ld [wCurPartyMon], a
ld hl, wContestMon
ld de, wBufferMon
ld bc, BOXMON_STRUCT_LENGTH
call CopyBytes
ld hl, wPlayerName
ld de, wBufferMonOT
ld bc, NAME_LENGTH
call CopyBytes
callfar InsertPokemonIntoBox
ld a, [wCurPartySpecies]
ld [wNamedObjectIndex], a
call GetPokemonName
call GiveANickname_YesNo
ld hl, wStringBuffer1
jr c, .Box_SkipNickname
ld a, BOXMON
ld [wMonType], a
ld de, wMonOrItemNameBuffer
callfar InitNickname
ld hl, wMonOrItemNameBuffer
.Box_SkipNickname:
ld a, BANK(sBoxMonNicknames)
call OpenSRAM
ld de, sBoxMonNicknames
ld bc, MON_NAME_LENGTH
call CopyBytes
call CloseSRAM
.BoxFull:
xor a
ld [wContestMon], a
ld a, BUGCONTEST_BOXED_MON
ld [wScriptVar], a
ret
.DidntCatchAnything:
ld a, BUGCONTEST_NO_CATCH
ld [wScriptVar], a
ret
GiveANickname_YesNo:
ld hl, CaughtAskNicknameText
call PrintText
jp YesNoBox
CaughtAskNicknameText:
text_far _CaughtAskNicknameText
text_end