const_def const SEER_INTRO const SEER_CANT_TELL const SEER_MET_AT const SEER_TIME_LEVEL const SEER_TRADED const SEER_CANCEL const SEER_EGG const SEER_LEVEL_ONLY const_def const SEERACTION_MET const SEERACTION_TRADED const SEERACTION_CANT_TELL_1 const SEERACTION_CANT_TELL_2 const SEERACTION_LEVEL_ONLY PokeSeer: ld a, SEER_INTRO call PrintSeerText call JoyWaitAorB ld b, PARTY_LENGTH farcall SelectMonFromParty jr c, .cancel ld a, [wCurPartySpecies] cp EGG jr z, .egg call IsAPokemon jr c, .no_mon call ReadCaughtData call SeerAction ret .cancel ld a, SEER_CANCEL call PrintSeerText ret .no_mon ret .egg ld a, SEER_EGG call PrintSeerText ret SeerAction: ld a, [wSeerAction] ld hl, SeerActions rst JumpTable ret SeerActions: dw SeerAction0 dw SeerAction1 dw SeerAction2 dw SeerAction3 dw SeerAction4 SeerAction0: ld a, SEER_MET_AT call PrintSeerText ld a, SEER_TIME_LEVEL call PrintSeerText call SeerAdvice ret SeerAction1: call GetCaughtOT ld a, SEER_TRADED call PrintSeerText ld a, SEER_TIME_LEVEL call PrintSeerText call SeerAdvice ret SeerAction2: ld a, SEER_CANT_TELL call PrintSeerText ret SeerAction3: ld a, SEER_CANT_TELL call PrintSeerText ret SeerAction4: ld a, SEER_LEVEL_ONLY call PrintSeerText call SeerAdvice ret ReadCaughtData: ld a, MON_CAUGHTDATA call GetPartyParamLocation ld a, [hli] ld [wSeerCaughtData], a ld a, [hld] ld [wSeerCaughtGender], a or [hl] jr z, .error ld a, SEERACTION_TRADED ld [wSeerAction], a ld a, MON_ID call GetPartyParamLocation ld a, [wPlayerID] cp [hl] jr nz, .traded inc hl ld a, [wPlayerID + 1] ; cp [hl] jr nz, .traded ld a, SEERACTION_MET ld [wSeerAction], a .traded call GetCaughtLevel call GetCaughtOT call GetCaughtName call GetCaughtTime call GetCaughtLocation and a ret .error ld a, SEERACTION_CANT_TELL_1 ld [wSeerAction], a ret GetCaughtName: ld a, [wCurPartyMon] ld hl, wPartyMonNicknames ld bc, MON_NAME_LENGTH call AddNTimes ld de, wSeerNickname ld bc, MON_NAME_LENGTH call CopyBytes ret GetCaughtLevel: ld a, "@" ld hl, wSeerCaughtLevelString ld bc, 4 call ByteFill ; caught level ; Limited to between 1 and 63 since it's a 6-bit quantity. ld a, [wSeerCaughtData] and CAUGHT_LEVEL_MASK jr z, .unknown cp CAUGHT_EGG_LEVEL ; egg marker value jr nz, .print ld a, EGG_LEVEL ; egg hatch level .print ld [wSeerCaughtLevel], a ld hl, wSeerCaughtLevelString ld de, wSeerCaughtLevel lb bc, PRINTNUM_RIGHTALIGN | 1, 3 call PrintNum ret .unknown ld de, wSeerCaughtLevelString ld hl, .unknown_level ld bc, 4 call CopyBytes ret .unknown_level db "???@" GetCaughtTime: ld a, [wSeerCaughtData] and CAUGHT_TIME_MASK jr z, .none rlca rlca dec a ld hl, .times call GetNthString ld d, h ld e, l ld hl, wSeerTimeOfDay call CopyName2 and a ret .none ld de, wSeerTimeOfDay call UnknownCaughtData ret .times db "Morning@" db "Day@" db "Night@" UnknownCaughtData: ld hl, .unknown ld bc, NAME_LENGTH call CopyBytes ret .unknown db "Unknown@" GetCaughtLocation: ld a, [wSeerCaughtGender] and CAUGHT_LOCATION_MASK jr z, .Unknown cp EVENT_LOCATION jr z, .event cp GIFT_LOCATION jr z, .fail ld e, a farcall GetLandmarkName ld hl, wStringBuffer1 ld de, wSeerCaughtLocation ld bc, 17 call CopyBytes and a ret .Unknown: ld de, wSeerCaughtLocation jp UnknownCaughtData .event ld a, SEERACTION_LEVEL_ONLY ld [wSeerAction], a scf ret .fail ld a, SEERACTION_CANT_TELL_2 ld [wSeerAction], a scf ret GetCaughtOT: ld a, [wCurPartyMon] ld hl, wPartyMonOT ld bc, NAME_LENGTH call AddNTimes ld de, wSeerOTName ld bc, NAME_LENGTH call CopyBytes ; this routine is useless in Western localizations ld hl, .male ld a, [wSeerCaughtGender] bit 7, a jr z, .got_grammar ld hl, .female .got_grammar ld de, wSeerOTNameGrammar ld a, "@" ld [de], a ret .male db "@" .female db "@" PrintSeerText: ld e, a ld d, 0 ld hl, SeerTexts add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a call PrintText ret SeerTexts: dw SeerIntroText dw SeerCantTellText dw SeerMetAtText dw SeerTimeLevelText dw SeerTradedText dw SeerCancelText dw SeerEggText dw SeerLevelOnlyText SeerIntroText: ; I see all. I know all… Certainly, I know of your #MON! text_jump UnknownText_0x1c475f db "@" SeerCantTellText: ; Whaaaat? I can't tell a thing! How could I not know of this? text_jump UnknownText_0x1c4797 db "@" SeerMetAtText: ; Hm… I see you met @ here: @ ! text_jump UnknownText_0x1c47d4 db "@" SeerTimeLevelText: ; The time was @ ! Its level was @ ! Am I good or what? text_jump UnknownText_0x1c47fa db "@" SeerTradedText: ; Hm… @ came from @ in a trade? @ was where @ met @ ! text_jump UnknownText_0x1c4837 db "@" SeerLevelOnlyText: ; What!? Incredible! I don't understand how, but it is incredible! You are special. I can't tell where you met it, but it was at level @ . Am I good or what? text_jump UnknownText_0x1c487f db "@" SeerEggText: ; Hey! That's an EGG! You can't say that you've met it yet… text_jump UnknownText_0x1c491d db "@" SeerCancelText: ; Fufufu! I saw that you'd do nothing! text_jump UnknownText_0x1c4955 db "@" SeerAdvice: ld a, MON_LEVEL call GetPartyParamLocation ld a, [wSeerCaughtLevel] ld c, a ld a, [hl] sub c ld c, a ld hl, SeerAdviceTexts ld de, 3 .next cp [hl] jr c, .print jr z, .print add hl, de jr .next .print inc hl ld a, [hli] ld h, [hl] ld l, a call PrintText ret SeerAdviceTexts: ; level, text dbw 9, SeerAdvice1 dbw 29, SeerAdvice2 dbw 59, SeerAdvice3 dbw 89, SeerAdvice4 dbw 100, SeerAdvice5 dbw 255, SeerAdvice1 SeerAdvice1: ; Incidentally… It would be wise to raise your #MON with a little more care. text_jump UnknownText_0x1c497a db "@" SeerAdvice2: ; Incidentally… It seems to have grown a little. @ seems to be becoming more confident. text_jump UnknownText_0x1c49c6 db "@" SeerAdvice3: ; Incidentally… @ has grown. It's gained much strength. text_jump UnknownText_0x1c4a21 db "@" SeerAdvice4: ; Incidentally… It certainly has grown mighty! This @ must have come through numerous #MON battles. It looks brimming with confidence. text_jump UnknownText_0x1c4a5b db "@" SeerAdvice5: ; Incidentally… I'm impressed by your dedication. It's been a long time since I've seen a #MON as mighty as this @ . I'm sure that seeing @ in battle would excite anyone. text_jump UnknownText_0x1c4ae5 db "@" GetCaughtGender: ld hl, MON_CAUGHTGENDER add hl, bc ld a, [hl] and CAUGHT_LOCATION_MASK jr z, .genderless cp EVENT_LOCATION jr z, .genderless ld a, [hl] and CAUGHT_GENDER_MASK jr nz, .male ld c, CAUGHT_BY_GIRL ret .male ld c, CAUGHT_BY_BOY ret .genderless ld c, CAUGHT_BY_UNKNOWN ret