Lucky Number Show Diff

Created Diff never expires
4 removals
224 lines
4 additions
224 lines
CheckForLuckyNumberWinners:
CheckForLuckyNumberWinners:
xor a
xor a
ld [wScriptVar], a
ld [wScriptVar], a
ld [wTempByteValue], a
ld [wTempByteValue], a
ld a, [wPartyCount]
ld a, [wPartyCount]
and a
and a
ret z
ret z
ld d, a
ld d, a
ld hl, wPartyMon1ID
ld hl, wPartyMon1ID
ld bc, wPartySpecies
ld bc, wPartySpecies
.PartyLoop:
.PartyLoop:
ld a, [bc]
ld a, [bc]
inc bc
inc bc
cp EGG
cp EGG
call nz, .CompareLuckyNumberToMonID
call nz, .CompareLuckyNumberToMonID
push bc
push bc
ld bc, PARTYMON_STRUCT_LENGTH
ld bc, PARTYMON_STRUCT_LENGTH
add hl, bc
add hl, bc
pop bc
pop bc
dec d
dec d
jr nz, .PartyLoop
jr nz, .PartyLoop
ld a, BANK(sBox)
ld a, BANK(sBox)
call OpenSRAM
call GetSRAMBank
ld a, [sBoxCount]
ld a, [sBoxCount]
and a
and a
jr z, .SkipOpenBox
jr z, .SkipOpenBox
ld d, a
ld d, a
ld hl, sBoxMon1ID
ld hl, sBoxMon1ID
ld bc, sBoxSpecies
ld bc, sBoxSpecies
.OpenBoxLoop:
.OpenBoxLoop:
ld a, [bc]
ld a, [bc]
inc bc
inc bc
cp EGG
cp EGG
jr z, .SkipOpenBoxMon
jr z, .SkipOpenBoxMon
call .CompareLuckyNumberToMonID
call .CompareLuckyNumberToMonID
jr nc, .SkipOpenBoxMon
jr nc, .SkipOpenBoxMon
ld a, TRUE
ld a, TRUE
ld [wTempByteValue], a
ld [wTempByteValue], a


.SkipOpenBoxMon:
.SkipOpenBoxMon:
push bc
push bc
ld bc, BOXMON_STRUCT_LENGTH
ld bc, BOXMON_STRUCT_LENGTH
add hl, bc
add hl, bc
pop bc
pop bc
dec d
dec d
jr nz, .OpenBoxLoop
jr nz, .OpenBoxLoop


.SkipOpenBox:
.SkipOpenBox:
call CloseSRAM
call CloseSRAM
ld c, $0
ld c, $0
.BoxesLoop:
.BoxesLoop:
ld a, [wCurBox]
ld a, [wCurBox]
and $f
and $f
cp c
cp c
jr z, .SkipBox
jr z, .SkipBox
ld hl, .BoxBankAddresses
ld hl, .BoxBankAddresses
ld b, 0
ld b, 0
add hl, bc
add hl, bc
add hl, bc
add hl, bc
add hl, bc
add hl, bc
ld a, [hli]
ld a, [hli]
call OpenSRAM
call GetSRAMBank
ld a, [hli]
ld a, [hli]
ld h, [hl]
ld h, [hl]
ld l, a ; hl now contains the address of the loaded box in SRAM
ld l, a ; hl now contains the address of the loaded box in SRAM
ld a, [hl]
ld a, [hl]
and a
and a
jr z, .SkipBox ; no mons in this box
jr z, .SkipBox ; no mons in this box
push bc
push bc
ld b, h
ld b, h
ld c, l
ld c, l
inc bc
inc bc
ld de, sBoxMon1ID - sBox
ld de, sBoxMon1ID - sBox
add hl, de
add hl, de
ld d, a
ld d, a
.BoxNLoop:
.BoxNLoop:
ld a, [bc]
ld a, [bc]
inc bc
inc bc
cp EGG
cp EGG
jr z, .SkipBoxMon
jr z, .SkipBoxMon


call .CompareLuckyNumberToMonID ; sets wScriptVar and wCurPartySpecies appropriately
call .CompareLuckyNumberToMonID ; sets wScriptVar and wCurPartySpecies appropriately
jr nc, .SkipBoxMon
jr nc, .SkipBoxMon
ld a, TRUE
ld a, TRUE
ld [wTempByteValue], a
ld [wTempByteValue], a


.SkipBoxMon:
.SkipBoxMon:
push bc
push bc
ld bc, BOXMON_STRUCT_LENGTH
ld bc, BOXMON_STRUCT_LENGTH
add hl, bc
add hl, bc
pop bc
pop bc
dec d
dec d
jr nz, .BoxNLoop
jr nz, .BoxNLoop
pop bc
pop bc


.SkipBox:
.SkipBox:
inc c
inc c
ld a, c
ld a, c
cp NUM_BOXES_JAPANESE
cp NUM_BOXES
jr c, .BoxesLoop
jr c, .BoxesLoop


call CloseSRAM
call CloseSRAM
ld a, [wScriptVar]
ld a, [wScriptVar]
and a
and a
ret z ; found nothing
ret z ; found nothing
farcall StubbedTrainerRankings_LuckyNumberShow
ld a, [wTempByteValue]
ld a, [wTempByteValue]
and a
and a
push af
push af
ld a, [wCurPartySpecies]
ld a, [wCurPartySpecies]
ld [wNamedObjectIndexBuffer], a
ld [wNamedObjectIndexBuffer], a
call GetPokemonName
call GetPokemonName
ld hl, .LuckyNumberMatchPartyText
ld hl, .LuckyNumberMatchPartyText
pop af
pop af
jr z, .print
jr z, .print
ld hl, .LuckyNumberMatchPCText
ld hl, .LuckyNumberMatchPCText


.print
.print
jp PrintText
jp PrintText


.CompareLuckyNumberToMonID:
.CompareLuckyNumberToMonID:
push bc
push bc
push de
push de
push hl
push hl
ld d, h
ld d, h
ld e, l
ld e, l
ld hl, wBuffer1
ld hl, wBuffer1
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
call PrintNum
ld hl, wLuckyNumberDigitsBuffer
ld hl, wLuckyNumberDigitsBuffer
ld de, wLuckyIDNumber
ld de, wLuckyIDNumber
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
call PrintNum
ld b, 5
ld b, 5
ld c, 0
ld c, 0
ld hl, wLuckyNumberDigitsBuffer + 4
ld hl, wLuckyNumberDigitsBuffer + 4
ld de, wBuffer1 + 4
ld de, wBuffer1 + 4
.loop
.loop
ld a, [de]
ld a, [de]
cp [hl]
cp [hl]
jr nz, .done
jr nz, .done
dec de
dec de
dec hl
dec hl
inc c
inc c
dec b
dec b
jr nz, .loop
jr nz, .loop


.done
.done
pop hl
pop hl
push hl
push hl
ld de, MON_SPECIES - MON_ID
ld de, MON_SPECIES - MON_ID
add hl, de
add hl, de
ld a, [hl]
ld a, [hl]
pop hl
pop hl
pop de
pop de
push af
push af
ld a, c
ld a, c
ld b, 1
ld b, 1
cp 5
cp 5
jr z, .okay
jr z, .okay
ld b, 2
ld b, 2
cp 3
cp 3
jr nc, .okay
jr nc, .okay
ld b, 3
ld b, 3
cp 2
cp 2
jr nz, .nomatch
jr nz, .nomatch


.okay
.okay
inc b
inc b
ld a, [wScriptVar]
ld a, [wScriptVar]
and a
and a
jr z, .bettermatch
jr z, .bettermatch
cp b
cp b
jr c, .nomatch
jr c, .nomatch


.bettermatch
.bettermatch
dec b
dec b
ld a, b
ld a, b
ld [wScriptVar], a
ld [wScriptVar], a
pop bc
pop bc
ld a, b
ld a, b
ld [wCurPartySpecies], a
ld [wCurPartySpecies], a
pop bc
pop bc
scf
scf
ret
ret


.nomatch
.nomatch
pop bc
pop bc
pop bc
pop bc
and a
and a
ret
ret


.BoxBankAddresses:
.BoxBankAddresses:
dba sBox1
dba sBox1
dba sBox2
dba sBox2
dba sBox3
dba sBox3
dba sBox4
dba sBox4
dba sBox5
dba sBox5
dba sBox6
dba sBox6
dba sBox7
dba sBox7
dba sBox8
dba sBox8
dba sBox9
dba sBox9
dba sBox10
dba sBox10
dba sBox11
dba sBox11
dba sBox12
dba sBox12
dba sBox13
dba sBox13
dba sBox14
dba sBox14


.LuckyNumberMatchPartyText:
.LuckyNumberMatchPartyText:
text_far _LuckyNumberMatchPartyText
text_far _LuckyNumberMatchPartyText
text_end
text_end


.LuckyNumberMatchPCText:
.LuckyNumberMatchPCText:
text_far _LuckyNumberMatchPCText
text_far _LuckyNumberMatchPCText
text_end
text_end


PrintTodaysLuckyNumber:
PrintTodaysLuckyNumber:
ld hl, wStringBuffer3
ld hl, wStringBuffer3
ld de, wLuckyIDNumber
ld de, wLuckyIDNumber
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
call PrintNum
ld a, "@"
ld a, "@"
ld [wStringBuffer3 + 5], a
ld [wStringBuffer3 + 5], a
ret
ret