summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xengine/pokemon/caught_data.asm130
-rw-r--r--main.asm6
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
diff --git a/main.asm b/main.asm
index add56aef..92d5d6a9 100644
--- a/main.asm
+++ b/main.asm
@@ -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