mirror of
https://github.com/pret/pokered.git
synced 2024-10-22 22:55:31 +00:00
255 lines
4.4 KiB
NASM
Executable file
255 lines
4.4 KiB
NASM
Executable file
CeladonMartRoofScript:
|
|
jp EnableAutoTextBoxDrawing
|
|
|
|
CeladonMartRoofScript_GetDrinksInBag:
|
|
; construct a list of all drinks in the player's bag
|
|
xor a
|
|
ld [wFilteredBagItemsCount], a
|
|
ld de, wFilteredBagItems
|
|
ld hl, CeladonMartRoofDrinkList
|
|
.loop
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .done
|
|
push hl
|
|
push de
|
|
ld [wd11e], a
|
|
ld b, a
|
|
predef GetQuantityOfItemInBag
|
|
pop de
|
|
pop hl
|
|
ld a, b
|
|
and a
|
|
jr z, .loop ; if the item isn't in the bag
|
|
ld a, [wd11e]
|
|
ld [de], a
|
|
inc de
|
|
push hl
|
|
ld hl, wFilteredBagItemsCount
|
|
inc [hl]
|
|
pop hl
|
|
jr .loop
|
|
.done
|
|
ld a, $ff
|
|
ld [de], a
|
|
ret
|
|
|
|
CeladonMartRoofDrinkList:
|
|
db FRESH_WATER
|
|
db SODA_POP
|
|
db LEMONADE
|
|
db $00
|
|
|
|
CeladonMartRoofScript_GiveDrinkToGirl:
|
|
ld hl, wd730
|
|
set 6, [hl]
|
|
ld hl, CeladonMartRoofText_484ee
|
|
call PrintText
|
|
xor a
|
|
ld [wCurrentMenuItem], a
|
|
ld a, A_BUTTON | B_BUTTON
|
|
ld [wMenuWatchedKeys], a
|
|
ld a, [wFilteredBagItemsCount]
|
|
dec a
|
|
ld [wMaxMenuItem], a
|
|
ld a, 2
|
|
ld [wTopMenuItemY], a
|
|
ld a, 1
|
|
ld [wTopMenuItemX], a
|
|
ld a, [wFilteredBagItemsCount]
|
|
dec a
|
|
ld bc, 2
|
|
ld hl, 3
|
|
call AddNTimes
|
|
dec l
|
|
ld b, l
|
|
ld c, 12
|
|
coord hl, 0, 0
|
|
call TextBoxBorder
|
|
call UpdateSprites
|
|
call CeladonMartRoofScript_PrintDrinksInBag
|
|
ld hl, wd730
|
|
res 6, [hl]
|
|
call HandleMenuInput
|
|
bit 1, a ; pressed b
|
|
ret nz
|
|
ld hl, wFilteredBagItems
|
|
ld a, [wCurrentMenuItem]
|
|
ld d, 0
|
|
ld e, a
|
|
add hl, de
|
|
ld a, [hl]
|
|
ld [hItemToRemoveID], a
|
|
cp FRESH_WATER
|
|
jr z, .gaveFreshWater
|
|
cp SODA_POP
|
|
jr z, .gaveSodaPop
|
|
; gave Lemonade
|
|
CheckEvent EVENT_GOT_TM49
|
|
jr nz, .alreadyGaveDrink
|
|
ld hl, CeladonMartRoofText_48515
|
|
call PrintText
|
|
call RemoveItemByIDBank12
|
|
lb bc, TM_49, 1
|
|
call GiveItem
|
|
jr nc, .bagFull
|
|
ld hl, ReceivedTM49Text
|
|
call PrintText
|
|
SetEvent EVENT_GOT_TM49
|
|
ret
|
|
.gaveSodaPop
|
|
CheckEvent EVENT_GOT_TM48
|
|
jr nz, .alreadyGaveDrink
|
|
ld hl, CeladonMartRoofText_48504
|
|
call PrintText
|
|
call RemoveItemByIDBank12
|
|
lb bc, TM_48, 1
|
|
call GiveItem
|
|
jr nc, .bagFull
|
|
ld hl, CeladonMartRoofText_4850a
|
|
call PrintText
|
|
SetEvent EVENT_GOT_TM48
|
|
ret
|
|
.gaveFreshWater
|
|
CheckEvent EVENT_GOT_TM13
|
|
jr nz, .alreadyGaveDrink
|
|
ld hl, CeladonMartRoofText_484f3
|
|
call PrintText
|
|
call RemoveItemByIDBank12
|
|
lb bc, TM_13, 1
|
|
call GiveItem
|
|
jr nc, .bagFull
|
|
ld hl, CeladonMartRoofText_484f9
|
|
call PrintText
|
|
SetEvent EVENT_GOT_TM13
|
|
ret
|
|
.bagFull
|
|
ld hl, CeladonMartRoofText_48526
|
|
jp PrintText
|
|
.alreadyGaveDrink
|
|
ld hl, CeladonMartRoofText_4852c
|
|
jp PrintText
|
|
|
|
RemoveItemByIDBank12:
|
|
jpba RemoveItemByID
|
|
|
|
CeladonMartRoofText_484ee:
|
|
TX_FAR _CeladonMartRoofText_484ee
|
|
db "@"
|
|
|
|
CeladonMartRoofText_484f3:
|
|
TX_FAR _CeladonMartRoofText_484f3
|
|
TX_WAIT
|
|
db "@"
|
|
|
|
CeladonMartRoofText_484f9:
|
|
TX_FAR _CeladonMartRoofText_484f9
|
|
TX_SFX_ITEM_1
|
|
TX_FAR _CeladonMartRoofText_484fe
|
|
TX_WAIT
|
|
db "@"
|
|
|
|
CeladonMartRoofText_48504:
|
|
TX_FAR _CeladonMartRoofText_48504
|
|
TX_WAIT
|
|
db "@"
|
|
|
|
CeladonMartRoofText_4850a:
|
|
TX_FAR _CeladonMartRoofText_4850a
|
|
TX_SFX_ITEM_1
|
|
TX_FAR _CeladonMartRoofText_4850f
|
|
TX_WAIT
|
|
db "@"
|
|
|
|
CeladonMartRoofText_48515:
|
|
TX_FAR _CeladonMartRoofText_48515
|
|
TX_WAIT
|
|
db "@"
|
|
|
|
ReceivedTM49Text:
|
|
TX_FAR _ReceivedTM49Text
|
|
TX_SFX_ITEM_1
|
|
TX_FAR _CeladonMartRoofText_48520
|
|
TX_WAIT
|
|
db "@"
|
|
|
|
CeladonMartRoofText_48526:
|
|
TX_FAR _CeladonMartRoofText_48526
|
|
TX_WAIT
|
|
db "@"
|
|
|
|
CeladonMartRoofText_4852c:
|
|
TX_FAR _CeladonMartRoofText_4852c
|
|
TX_WAIT
|
|
db "@"
|
|
|
|
CeladonMartRoofScript_PrintDrinksInBag:
|
|
ld hl, wFilteredBagItems
|
|
xor a
|
|
ld [hItemCounter], a
|
|
.loop
|
|
ld a, [hli]
|
|
cp $ff
|
|
ret z
|
|
push hl
|
|
ld [wd11e], a
|
|
call GetItemName
|
|
coord hl, 2, 2
|
|
ld a, [hItemCounter]
|
|
ld bc, SCREEN_WIDTH * 2
|
|
call AddNTimes
|
|
ld de, wcd6d
|
|
call PlaceString
|
|
ld hl, hItemCounter
|
|
inc [hl]
|
|
pop hl
|
|
jr .loop
|
|
|
|
CeladonMartRoofTextPointers:
|
|
dw CeladonMartRoofText1
|
|
dw CeladonMartRoofText2
|
|
dw CeladonMartRoofText5
|
|
dw CeladonMartRoofText5
|
|
dw CeladonMartRoofText5
|
|
dw CeladonMartRoofText6
|
|
|
|
CeladonMartRoofText1:
|
|
TX_FAR _CeladonMartRoofText1
|
|
db "@"
|
|
|
|
CeladonMartRoofText2:
|
|
TX_ASM
|
|
call CeladonMartRoofScript_GetDrinksInBag
|
|
ld a, [wFilteredBagItemsCount]
|
|
and a
|
|
jr z, .noDrinksInBag
|
|
ld a, 1
|
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
ld hl, CeladonMartRoofText4
|
|
call PrintText
|
|
call YesNoChoice
|
|
ld a, [wCurrentMenuItem]
|
|
and a
|
|
jr nz, .done
|
|
call CeladonMartRoofScript_GiveDrinkToGirl
|
|
jr .done
|
|
.noDrinksInBag
|
|
ld hl, CeladonMartRoofText3
|
|
call PrintText
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
CeladonMartRoofText3:
|
|
TX_FAR _CeladonMartRoofText_48598
|
|
db "@"
|
|
|
|
CeladonMartRoofText4:
|
|
TX_FAR _CeladonMartRoofText4
|
|
db "@"
|
|
|
|
CeladonMartRoofText5:
|
|
TX_VENDING_MACHINE
|
|
|
|
CeladonMartRoofText6:
|
|
TX_FAR _CeladonMartRoofText6
|
|
db "@"
|