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 ld a, [wPartyCount] dec a ld hl, wPartyMon1Level call GetPartyLocation ld a, [hl] ld [wCurPartyLevel], a call SetCaughtData ld a, [wPartyCount] dec a ld hl, wPartyMon1CaughtLocation call GetPartyLocation ld a, [hl] and CAUGHT_GENDER_MASK ld [hl], a 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: ld a, BANK(sBoxMon1Level) call OpenSRAM ld a, [sBoxMon1Level] ld [wCurPartyLevel], a call CloseSRAM call SetBoxMonCaughtData ld a, BANK(sBoxMon1CaughtLocation) call OpenSRAM ld hl, sBoxMon1CaughtLocation ld a, [hl] and CAUGHT_GENDER_MASK ld [hl], a call CloseSRAM 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 PrintText1bpp jp YesNoBox CaughtAskNicknameText: text_far _CaughtAskNicknameText text_end SetCaughtData: ld a, [wPartyCount] dec a ld hl, wPartyMon1CaughtLevel call GetPartyLocation SetBoxmonOrEggmonCaughtData: ld a, [wTimeOfDay] inc a rrca rrca and CAUGHT_TIME_MASK ; caught in eve becomes $0 ld b, a ld a, [wCurPartyLevel] or b ld [hli], a ld a, [wMapGroup] ld b, a ld a, [wMapNumber] ld c, a call GetWorldMapLocation ld b, a ld a, [wPlayerGender] rrca ; shift bit 0 (PLAYERGENDER_FEMALE_F) to bit 7 (CAUGHT_GENDER_MASK) or b ld [hl], a ret SetBoxMonCaughtData: ld a, BANK(sBoxMon1CaughtLevel) call OpenSRAM ld hl, sBoxMon1CaughtLevel call SetBoxmonOrEggmonCaughtData call CloseSRAM ret SetGiftBoxMonCaughtData: push bc ld a, BANK(sBoxMon1CaughtLevel) call OpenSRAM ld hl, sBoxMon1CaughtLevel pop bc call SetGiftMonCaughtData call CloseSRAM ret SetGiftPartyMonCaughtData: ld a, [wPartyCount] dec a ld hl, wPartyMon1CaughtLevel push bc call GetPartyLocation pop bc SetGiftMonCaughtData: xor a ld [hli], a ld a, LANDMARK_GIFT rrc b or b ld [hl], a ret SetEggMonCaughtData: ld a, [wCurPartyMon] ld hl, wPartyMon1CaughtLevel call GetPartyLocation ld a, [wCurPartyLevel] push af ld a, CAUGHT_EGG_LEVEL ld [wCurPartyLevel], a call SetBoxmonOrEggmonCaughtData pop af ld [wCurPartyLevel], a ret