diff options
Diffstat (limited to 'scripts/CeladonMartRoof.asm')
-rwxr-xr-x | scripts/CeladonMartRoof.asm | 255 |
1 files changed, 255 insertions, 0 deletions
diff --git a/scripts/CeladonMartRoof.asm b/scripts/CeladonMartRoof.asm new file mode 100755 index 00000000..35c740b2 --- /dev/null +++ b/scripts/CeladonMartRoof.asm @@ -0,0 +1,255 @@ +CeladonMartRoof_Script: + 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 + +CeladonMartRoof_TextPointers: + 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 "@" |