pokecrystal-board/engine/events/lucky_number.asm

228 lines
3.2 KiB
NASM
Raw Normal View History

2018-06-24 07:09:41 -07:00
CheckForLuckyNumberWinners:
xor a
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
ld [wTempByteValue], a
2018-01-23 14:39:09 -08:00
ld a, [wPartyCount]
and a
ret z
ld d, a
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1ID
ld bc, wPartySpecies
.PartyLoop:
ld a, [bc]
inc bc
cp EGG
call nz, .CompareLuckyNumberToMonID
push bc
ld bc, PARTYMON_STRUCT_LENGTH
add hl, bc
pop bc
dec d
jr nz, .PartyLoop
ld a, BANK(sBox)
call OpenSRAM
ld a, [sBoxCount]
and a
jr z, .SkipOpenBox
ld d, a
ld hl, sBoxMon1ID
ld bc, sBoxSpecies
.OpenBoxLoop:
ld a, [bc]
inc bc
cp EGG
jr z, .SkipOpenBoxMon
call .CompareLuckyNumberToMonID
jr nc, .SkipOpenBoxMon
ld a, TRUE
ld [wTempByteValue], a
.SkipOpenBoxMon:
push bc
ld bc, BOXMON_STRUCT_LENGTH
add hl, bc
pop bc
dec d
jr nz, .OpenBoxLoop
.SkipOpenBox:
call CloseSRAM
ld c, $0
.BoxesLoop:
ld a, [wCurBox]
and $f
cp c
jr z, .SkipBox
ld hl, .BoxBankAddresses
ld b, 0
add hl, bc
add hl, bc
add hl, bc
ld a, [hli]
call OpenSRAM
ld a, [hli]
ld h, [hl]
ld l, a ; hl now contains the address of the loaded box in SRAM
ld a, [hl]
and a
jr z, .SkipBox ; no mons in this box
push bc
ld b, h
ld c, l
inc bc
ld de, sBoxMon1ID - sBox
add hl, de
ld d, a
.BoxNLoop:
ld a, [bc]
inc bc
cp EGG
jr z, .SkipBoxMon
2018-01-23 14:39:09 -08:00
call .CompareLuckyNumberToMonID ; sets wScriptVar and wCurPartySpecies appropriately
jr nc, .SkipBoxMon
ld a, TRUE
ld [wTempByteValue], a
.SkipBoxMon:
push bc
ld bc, BOXMON_STRUCT_LENGTH
add hl, bc
pop bc
dec d
jr nz, .BoxNLoop
pop bc
.SkipBox:
inc c
ld a, c
cp NUM_BOXES
jr c, .BoxesLoop
call CloseSRAM
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
and a
ret z ; found nothing
farcall StubbedTrainerRankings_LuckyNumberShow
ld a, [wTempByteValue]
and a
push af
2018-01-23 14:39:09 -08:00
ld a, [wCurPartySpecies]
ld [wNamedObjectIndex], a
call GetPokemonName
ld hl, .LuckyNumberMatchPartyText
pop af
jr z, .print
ld hl, .LuckyNumberMatchPCText
.print
jp PrintText
2018-06-24 07:09:41 -07:00
.CompareLuckyNumberToMonID:
push bc
push de
push hl
ld d, h
ld e, l
2020-11-03 16:53:07 -08:00
ld hl, wMonIDDigitsBuffer
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
2018-07-28 22:13:25 -07:00
ld hl, wLuckyNumberDigitsBuffer
ld de, wLuckyIDNumber
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
ld b, 5
ld c, 0
2018-07-28 22:13:25 -07:00
ld hl, wLuckyNumberDigitsBuffer + 4
2020-11-03 16:53:07 -08:00
ld de, wMonIDDigitsBuffer + 4
.loop
ld a, [de]
cp [hl]
jr nz, .done
dec de
dec hl
inc c
dec b
jr nz, .loop
.done
pop hl
push hl
2019-11-23 17:56:22 -08:00
ld de, MON_SPECIES - MON_ID
add hl, de
ld a, [hl]
pop hl
pop de
push af
ld a, c
ld b, 1
cp 5
jr z, .okay
ld b, 2
cp 3
jr nc, .okay
ld b, 3
cp 2
jr nz, .nomatch
.okay
inc b
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
and a
jr z, .bettermatch
cp b
jr c, .nomatch
.bettermatch
dec b
ld a, b
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
pop bc
ld a, b
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
pop bc
scf
ret
.nomatch
pop bc
pop bc
and a
ret
2018-06-24 07:09:41 -07:00
.BoxBankAddresses:
table_width 3, CheckForLuckyNumberWinners.BoxBankAddresses
dba sBox1
dba sBox2
dba sBox3
dba sBox4
dba sBox5
dba sBox6
dba sBox7
dba sBox8
dba sBox9
dba sBox10
dba sBox11
dba sBox12
dba sBox13
dba sBox14
assert_table_length NUM_BOXES
.LuckyNumberMatchPartyText:
text_far _LuckyNumberMatchPartyText
text_end
.LuckyNumberMatchPCText:
text_far _LuckyNumberMatchPCText
text_end
2018-06-24 07:09:41 -07:00
PrintTodaysLuckyNumber:
2018-01-23 14:39:09 -08:00
ld hl, wStringBuffer3
ld de, wLuckyIDNumber
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
ld a, "@"
2018-01-23 14:39:09 -08:00
ld [wStringBuffer3 + 5], a
ret