diff options
-rwxr-xr-x | engine/pokemon/caught_data.asm | 130 | ||||
-rw-r--r-- | main.asm | 6 |
2 files changed, 131 insertions, 5 deletions
diff --git a/engine/pokemon/caught_data.asm b/engine/pokemon/caught_data.asm new file mode 100755 index 00000000..408e284a --- /dev/null +++ b/engine/pokemon/caught_data.asm @@ -0,0 +1,130 @@ +CheckPartyFullAfterContest: + ld a, [wContestMon] + 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, [wContestMon] + 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, wPartyMonOT + call SkipNames + ld d, h + ld e, l + ld hl, wPlayerName + call CopyBytes + ld a, [wCurPartySpecies] + ld [wNamedObjectIndexBuffer], 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 + 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 [wNamedObjectIndexBuffer], 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 @@ -375,11 +375,7 @@ SECTION "bank31_2", ROMX INCLUDE "engine/events/pokerus/check_pokerus.asm" INCLUDE "engine/events/lucky_number.asm" - -CheckPartyFullAfterContest:: - dr $c7bbf, $c7cd0 -GiveANickname_YesNo:: - dr $c7cd0, $c7cde +INCLUDE "engine/pokemon/caught_data.asm" SECTION "bank32", ROMX |