pokecrystal-board/engine/items/mart.asm

864 lines
14 KiB
NASM
Raw Permalink Normal View History

2015-11-11 11:12:46 -08:00
const_def
const MARTTEXT_HOW_MANY
const MARTTEXT_COSTS_THIS_MUCH
const MARTTEXT_NOT_ENOUGH_COINS
2015-11-11 11:12:46 -08:00
const MARTTEXT_BAG_FULL
const MARTTEXT_HERE_YOU_GO
const MARTTEXT_SOLD_OUT
2018-06-24 07:09:41 -07:00
OpenMartDialog::
2015-11-11 11:12:46 -08:00
call GetMart
ld a, c
ld [wMartType], a
2015-11-11 11:12:46 -08:00
call LoadMartPointer
ld a, [wMartType]
2015-11-11 11:12:46 -08:00
ld hl, .dialogs
rst JumpTable
ret
.dialogs
dw MartDialog
dw HerbShop
dw BargainShop
dw Pharmacist
dw RooftopSale
2018-06-24 07:09:41 -07:00
MartDialog:
ld a, MARTTYPE_STANDARD
ld [wMartType], a
xor a ; STANDARDMART_HOWMAYIHELPYOU
ld [wMartJumptableIndex], a
2015-11-11 11:12:46 -08:00
call StandardMart
ret
2018-06-24 07:09:41 -07:00
HerbShop:
2015-11-11 11:12:46 -08:00
call FarReadMart
call LoadStandardMenuHeader
ld hl, HerbShopLadyIntroText
2019-04-08 05:15:10 -07:00
call MartTextbox
2015-11-11 11:12:46 -08:00
call BuyMenu
ld hl, HerbalLadyComeAgainText
2019-04-08 05:15:10 -07:00
call MartTextbox
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
BargainShop:
2015-11-11 11:12:46 -08:00
ld b, BANK(BargainShopData)
ld de, BargainShopData
call LoadMartPointer
call ReadMart
call LoadStandardMenuHeader
ld hl, BargainShopIntroText
2019-04-08 05:15:10 -07:00
call MartTextbox
2015-11-11 11:12:46 -08:00
call BuyMenu
ld hl, wBargainShopFlags
ld a, [hli]
or [hl]
jr z, .skip_set
ld hl, wDailyFlags1
set DAILYFLAGS1_GOLDENROD_UNDERGROUND_BARGAIN_F, [hl]
2015-11-11 11:12:46 -08:00
.skip_set
ld hl, BargainShopComeAgainText
2019-04-08 05:15:10 -07:00
call MartTextbox
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
Pharmacist:
2015-11-11 11:12:46 -08:00
call FarReadMart
call LoadStandardMenuHeader
ld hl, PharmacyIntroText
2019-04-08 05:15:10 -07:00
call MartTextbox
2015-11-11 11:12:46 -08:00
call BuyMenu
ld hl, PharmacyComeAgainText
2019-04-08 05:15:10 -07:00
call MartTextbox
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
RooftopSale:
ld b, BANK(RooftopSaleMart1)
ld de, RooftopSaleMart1
ld hl, wStatusFlags
2018-01-22 12:40:43 -08:00
bit STATUSFLAGS_HALL_OF_FAME_F, [hl]
2015-11-11 11:12:46 -08:00
jr z, .ok
ld b, BANK(RooftopSaleMart2)
ld de, RooftopSaleMart2
2015-11-11 11:12:46 -08:00
.ok
call LoadMartPointer
call ReadMart
call LoadStandardMenuHeader
ld hl, MartWelcomeText
2019-04-08 05:15:10 -07:00
call MartTextbox
2015-11-11 11:12:46 -08:00
call BuyMenu
ld hl, MartComeAgainText
2019-04-08 05:15:10 -07:00
call MartTextbox
2015-11-11 11:12:46 -08:00
ret
INCLUDE "data/items/rooftop_sale.asm"
2015-11-11 11:12:46 -08:00
2018-06-24 07:09:41 -07:00
LoadMartPointer:
2015-11-11 11:12:46 -08:00
ld a, b
2018-01-23 14:39:09 -08:00
ld [wMartPointerBank], a
2015-11-11 11:12:46 -08:00
ld a, e
2018-01-23 14:39:09 -08:00
ld [wMartPointer], a
2015-11-11 11:12:46 -08:00
ld a, d
2018-01-23 14:39:09 -08:00
ld [wMartPointer + 1], a
ld hl, wCurMartCount
assert wCurMartCount + 1 == wCurMartItems
2015-11-11 11:12:46 -08:00
xor a
ld bc, 16
2015-11-11 11:12:46 -08:00
call ByteFill
xor a ; STANDARDMART_HOWMAYIHELPYOU
ld [wMartJumptableIndex], a
2015-11-11 11:12:46 -08:00
ld [wBargainShopFlags], a
2018-01-23 14:39:09 -08:00
ld [wFacingDirection], a
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
GetMart:
2015-11-11 11:12:46 -08:00
ld a, e
2020-11-03 07:13:06 -08:00
cp NUM_MARTS
2015-11-11 11:12:46 -08:00
jr c, .IsAMart
2016-01-27 09:25:12 -08:00
ld b, BANK(DefaultMart)
2015-11-11 11:12:46 -08:00
ld de, DefaultMart
ret
.IsAMart:
2015-11-11 11:12:46 -08:00
ld hl, Marts
add hl, de
add hl, de
2015-11-11 11:12:46 -08:00
ld e, [hl]
inc hl
ld d, [hl]
2016-01-27 09:25:12 -08:00
ld b, BANK(Marts)
2015-11-11 11:12:46 -08:00
ret
; StandardMart.MartFunctions indexes
const_def
const STANDARDMART_HOWMAYIHELPYOU ; 0
const STANDARDMART_TOPMENU ; 1
const STANDARDMART_BUY ; 2
const STANDARDMART_SELL ; 3
const STANDARDMART_QUIT ; 4
const STANDARDMART_ANYTHINGELSE ; 5
DEF STANDARDMART_EXIT EQU -1
2018-06-24 07:09:41 -07:00
StandardMart:
2015-11-11 11:12:46 -08:00
.loop
ld a, [wMartJumptableIndex]
2015-11-11 11:12:46 -08:00
ld hl, .MartFunctions
rst JumpTable
ld [wMartJumptableIndex], a
cp STANDARDMART_EXIT
2015-11-11 11:12:46 -08:00
jr nz, .loop
ret
.MartFunctions:
; entries correspond to STANDARDMART_* constants
2015-11-11 11:12:46 -08:00
dw .HowMayIHelpYou
dw .TopMenu
dw .Buy
dw .Sell
dw .Quit
dw .AnythingElse
2018-06-24 07:09:41 -07:00
.HowMayIHelpYou:
call LoadStandardMenuHeader
ld hl, MartWelcomeText
call PrintText1bpp
ld a, STANDARDMART_TOPMENU
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
.TopMenu:
ld hl, MenuHeader_BuySell
call CopyMenuHeader
2015-12-15 15:59:49 -08:00
call VerticalMenu
2015-11-11 11:12:46 -08:00
jr c, .quit
2015-12-15 15:59:49 -08:00
ld a, [wMenuCursorY]
2015-11-11 11:12:46 -08:00
cp $1
jr z, .buy
cp $2
jr z, .sell
.quit
ld a, STANDARDMART_QUIT
2015-11-11 11:12:46 -08:00
ret
.buy
ld a, STANDARDMART_BUY
2015-11-11 11:12:46 -08:00
ret
.sell
ld a, STANDARDMART_SELL
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
.Buy:
2015-11-11 11:12:46 -08:00
call ExitMenu
call FarReadMart
call BuyMenu
and a
ld a, STANDARDMART_ANYTHINGELSE
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
.Sell:
2015-11-11 11:12:46 -08:00
call ExitMenu
call SellMenu
ld a, STANDARDMART_ANYTHINGELSE
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
.Quit:
2015-11-11 11:12:46 -08:00
call ExitMenu
ld hl, MartComeAgainText
2019-04-08 05:15:10 -07:00
call MartTextbox
ld a, STANDARDMART_EXIT
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
.AnythingElse:
call LoadStandardMenuHeader
ld hl, MartAskMoreText
call PrintText1bpp
ld a, STANDARDMART_TOPMENU
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
FarReadMart:
2018-01-23 14:39:09 -08:00
ld hl, wMartPointer
2015-11-11 11:12:46 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
ld de, wCurMartCount
.CopyMart:
2018-01-23 14:39:09 -08:00
ld a, [wMartPointerBank]
2015-11-11 11:12:46 -08:00
call GetFarByte
ld [de], a
inc hl
inc de
cp -1
jr nz, .CopyMart
ld hl, wMartItem1BCD
ld de, wCurMartItems
.ReadMartItem:
2015-11-11 11:12:46 -08:00
ld a, [de]
inc de
cp -1
jr z, .done
push de
call GetMartItemPrice
pop de
jr .ReadMartItem
.done
ret
2018-06-24 07:09:41 -07:00
GetMartItemPrice:
2018-01-23 14:39:09 -08:00
; Return the price of item a in BCD at hl and in tiles at wStringBuffer1.
2015-11-11 11:12:46 -08:00
push hl
2018-01-23 14:39:09 -08:00
ld [wCurItem], a
2017-12-24 09:47:30 -08:00
farcall GetItemPrice
2015-11-11 11:12:46 -08:00
pop hl
2018-06-24 07:09:41 -07:00
GetMartPrice:
2018-01-23 14:39:09 -08:00
; Return price de in BCD at hl and in tiles at wStringBuffer1.
2015-11-11 11:12:46 -08:00
push hl
ld a, d
2018-01-23 14:39:09 -08:00
ld [wStringBuffer2], a
2015-11-11 11:12:46 -08:00
ld a, e
2018-01-23 14:39:09 -08:00
ld [wStringBuffer2 + 1], a
ld hl, wStringBuffer1
ld de, wStringBuffer2
2015-11-11 11:12:46 -08:00
lb bc, PRINTNUM_LEADINGZEROS | 2, 6 ; 6 digits
call PrintNum
pop hl
2018-01-23 14:39:09 -08:00
ld de, wStringBuffer1
2015-11-11 11:12:46 -08:00
ld c, 6 / 2 ; 6 digits
.loop
call .CharToNybble
swap a
ld b, a
call .CharToNybble
or b
ld [hli], a
dec c
jr nz, .loop
ret
2018-06-24 07:09:41 -07:00
.CharToNybble:
2015-11-11 11:12:46 -08:00
ld a, [de]
inc de
cp " "
jr nz, .not_space
ld a, "0"
.not_space
sub "0"
ret
2018-06-24 07:09:41 -07:00
ReadMart:
2015-11-11 11:12:46 -08:00
; Load the mart pointer. Mart data is local (no need for bank).
2018-01-23 14:39:09 -08:00
ld hl, wMartPointer
2015-11-11 11:12:46 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
push hl
; set hl to the first item
inc hl
ld bc, wMartItem1BCD
ld de, wCurMartItems
2015-11-11 11:12:46 -08:00
.loop
; copy the items to wCurMartItems
2015-11-11 11:12:46 -08:00
ld a, [hli]
ld [de], a
inc de
; -1 is the terminator
cp -1
jr z, .done
push de
; copy the price to de
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
; convert the price to 3-byte BCD at [bc]
push hl
ld h, b
ld l, c
call GetMartPrice
ld b, h
ld c, l
pop hl
pop de
jr .loop
.done
pop hl
ld a, [hl]
ld [wCurMartCount], a
2015-11-11 11:12:46 -08:00
ret
INCLUDE "data/items/bargain_shop.asm"
2015-11-11 11:12:46 -08:00
2018-06-24 07:09:41 -07:00
BuyMenu:
2015-11-11 11:12:46 -08:00
call FadeToMenu
2017-12-24 09:47:30 -08:00
farcall BlankScreen
2015-11-11 11:12:46 -08:00
xor a
2017-12-09 16:41:03 -08:00
ld [wMenuScrollPositionBackup], a
2015-11-11 11:12:46 -08:00
ld a, 1
ld [wMenuCursorPositionBackup], a
2015-11-11 11:12:46 -08:00
.loop
call BuyMenuLoop ; menu loop
jr nc, .loop
call CloseSubmenu
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
LoadBuyMenuText:
2015-11-11 11:12:46 -08:00
; load text from a nested table
; which table is in wMartType
2015-11-11 11:12:46 -08:00
; which entry is in register a
push af
call GetMartDialogGroup ; gets a pointer from GetMartDialogGroup.MartTextFunctionPointers
ld a, [hli]
ld h, [hl]
ld l, a
pop af
ld e, a
ld d, 0
add hl, de
add hl, de
2015-11-11 11:12:46 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
call PrintText1bpp
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
MartAskPurchaseQuantity:
2015-11-11 11:12:46 -08:00
call GetMartDialogGroup ; gets a pointer from GetMartDialogGroup.MartTextFunctionPointers
inc hl
inc hl
2015-11-11 11:12:46 -08:00
ld a, [hl]
and a
jp z, StandardMartAskPurchaseQuantity
cp 1
jp z, BargainShopAskPurchaseQuantity
jp RooftopSaleAskPurchaseQuantity
2018-06-24 07:09:41 -07:00
GetMartDialogGroup:
ld a, [wMartType]
2015-11-11 11:12:46 -08:00
ld e, a
ld d, 0
ld hl, .MartTextFunctionPointers
add hl, de
add hl, de
add hl, de
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
.MartTextFunctionPointers:
2015-11-11 11:12:46 -08:00
dwb .StandardMartPointers, 0
dwb .HerbShopPointers, 0
dwb .BargainShopPointers, 1
dwb .PharmacyPointers, 0
dwb .StandardMartPointers, 2
2018-06-24 07:09:41 -07:00
.StandardMartPointers:
dw MartHowManyText
dw MartFinalPriceText
dw MartNoCoinsText
dw MartPackFullText
dw MartThanksText
2015-11-11 11:12:46 -08:00
dw BuyMenuLoop
2018-06-24 07:09:41 -07:00
.HerbShopPointers:
dw HerbalLadyHowManyText
dw HerbalLadyFinalPriceText
dw HerbalLadyNoCoinsText
dw HerbalLadyPackFullText
dw HerbalLadyThanksText
2015-11-11 11:12:46 -08:00
dw BuyMenuLoop
2018-06-24 07:09:41 -07:00
.BargainShopPointers:
2015-11-11 11:12:46 -08:00
dw BuyMenuLoop
dw BargainShopFinalPriceText
dw BargainShopNoFundsText
dw BargainShopPackFullText
dw BargainShopThanksText
dw BargainShopSoldOutText
2015-11-11 11:12:46 -08:00
2018-06-24 07:09:41 -07:00
.PharmacyPointers:
dw PharmacyHowManyText
dw PharmacyFinalPriceText
dw PharmacyNoCoinsText
dw PharmacyPackFullText
dw PharmacyThanksText
2015-11-11 11:12:46 -08:00
dw BuyMenuLoop
2018-06-24 07:09:41 -07:00
BuyMenuLoop:
farcall PlaceCoinsTopRight
2015-11-11 11:12:46 -08:00
call UpdateSprites
ld hl, MenuHeader_Buy
call CopyMenuHeader
ld a, [wMenuCursorPositionBackup]
ld [wMenuCursorPosition], a
2017-12-09 16:41:03 -08:00
ld a, [wMenuScrollPositionBackup]
2015-11-23 13:04:53 -08:00
ld [wMenuScrollPosition], a
2015-12-17 19:31:16 -08:00
call ScrollingMenu
2015-11-23 13:04:53 -08:00
ld a, [wMenuScrollPosition]
2017-12-09 16:41:03 -08:00
ld [wMenuScrollPositionBackup], a
2015-12-15 15:59:49 -08:00
ld a, [wMenuCursorY]
ld [wMenuCursorPositionBackup], a
call SpeechTextbox1bpp
2015-12-15 15:59:49 -08:00
ld a, [wMenuJoypad]
2015-11-11 11:12:46 -08:00
cp B_BUTTON
jr z, .set_carry
cp A_BUTTON
jr z, .useless_pointer
.useless_pointer
call MartAskPurchaseQuantity
jr c, .cancel
2015-12-18 17:07:09 -08:00
call MartConfirmPurchase
2015-11-11 11:12:46 -08:00
jr c, .cancel
ld de, wCoins
ld bc, hCoinsTemp
ld a, 3 ; useless load
call CompareCoins
2015-11-11 11:12:46 -08:00
jr c, .insufficient_funds
2018-01-23 14:39:09 -08:00
ld hl, wNumItems
2015-11-11 11:12:46 -08:00
call ReceiveItem
jr nc, .insufficient_bag_space
ld a, [wMartItemID]
ld e, a
ld d, 0
2015-11-11 11:12:46 -08:00
ld b, SET_FLAG
ld hl, wBargainShopFlags
call FlagAction
call PlayTransactionSound
ld de, wCoins
ld bc, hCoinsTemp
call TakeCoins
2015-11-11 11:12:46 -08:00
ld a, MARTTEXT_HERE_YOU_GO
call LoadBuyMenuText
call JoyWaitAorB
.cancel
call SpeechTextbox1bpp
2015-11-11 11:12:46 -08:00
and a
ret
.set_carry
scf
ret
.insufficient_bag_space
ld a, MARTTEXT_BAG_FULL
call LoadBuyMenuText
call JoyWaitAorB
and a
ret
.insufficient_funds
ld a, MARTTEXT_NOT_ENOUGH_COINS
2015-11-11 11:12:46 -08:00
call LoadBuyMenuText
call JoyWaitAorB
and a
ret
StandardMartAskPurchaseQuantity:
ld a, MAX_ITEM_STACK
ld [wItemQuantity], a
2015-11-11 11:12:46 -08:00
ld a, MARTTEXT_HOW_MANY
call LoadBuyMenuText
2017-12-24 09:47:30 -08:00
farcall SelectQuantityToBuy
2015-11-11 11:12:46 -08:00
call ExitMenu
ret
2018-06-24 07:09:41 -07:00
MartConfirmPurchase:
predef PartyMonItemName
2015-11-11 11:12:46 -08:00
ld a, MARTTEXT_COSTS_THIS_MUCH
call LoadBuyMenuText
call YesNoBox
ret
BargainShopAskPurchaseQuantity:
ld a, 1
ld [wItemQuantityChange], a
2015-11-11 11:12:46 -08:00
ld a, [wMartItemID]
ld e, a
ld d, 0
2015-11-11 11:12:46 -08:00
ld b, CHECK_FLAG
ld hl, wBargainShopFlags
call FlagAction
ld a, c
and a
jr nz, .SoldOut
ld a, [wMartItemID]
ld e, a
ld d, 0
2018-01-23 14:39:09 -08:00
ld hl, wMartPointer
2015-11-11 11:12:46 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
inc hl
add hl, de
add hl, de
add hl, de
2015-11-11 11:12:46 -08:00
inc hl
ld a, [hli]
ldh [hCoinsTemp + 2], a
2015-11-11 11:12:46 -08:00
ld a, [hl]
ldh [hCoinsTemp + 1], a
2015-11-11 11:12:46 -08:00
xor a
ldh [hCoinsTemp], a
2015-11-11 11:12:46 -08:00
and a
ret
.SoldOut:
2015-11-11 11:12:46 -08:00
ld a, MARTTEXT_SOLD_OUT
call LoadBuyMenuText
call JoyWaitAorB
scf
ret
RooftopSaleAskPurchaseQuantity:
ld a, MARTTEXT_HOW_MANY
call LoadBuyMenuText
call .GetSalePrice
ld a, MAX_ITEM_STACK
ld [wItemQuantity], a
2017-12-24 09:47:30 -08:00
farcall RooftopSale_SelectQuantityToBuy
2015-11-11 11:12:46 -08:00
call ExitMenu
ret
2018-06-24 07:09:41 -07:00
.GetSalePrice:
2015-11-11 11:12:46 -08:00
ld a, [wMartItemID]
ld e, a
ld d, 0
2018-01-23 14:39:09 -08:00
ld hl, wMartPointer
2015-11-11 11:12:46 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
inc hl
add hl, de
add hl, de
add hl, de
2015-11-11 11:12:46 -08:00
inc hl
ld e, [hl]
inc hl
ld d, [hl]
ret
MartHowManyText:
text_far _MartHowManyText
text_end
2015-11-11 11:12:46 -08:00
MartFinalPriceText:
text_far _MartFinalPriceText
text_end
2015-11-11 11:12:46 -08:00
MenuHeader_Buy:
db MENU_BACKUP_TILES ; flags
menu_coords 1, 3, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
dw .MenuData
2015-11-11 11:12:46 -08:00
db 1 ; default option
.MenuData
db SCROLLINGMENU_DISPLAY_ARROWS | SCROLLINGMENU_ENABLE_FUNCTION3 ; flags
2015-11-11 11:12:46 -08:00
db 4, 8 ; rows, columns
db SCROLLINGMENU_ITEMS_NORMAL ; item format
dbw 0, wCurMartCount
2015-11-11 11:12:46 -08:00
dba PlaceMenuItemName
dba .PrintBCDPrices
2015-11-23 13:04:53 -08:00
dba UpdateItemDescription
2015-11-11 11:12:46 -08:00
2018-06-24 07:09:41 -07:00
.PrintBCDPrices:
2015-12-17 14:51:32 -08:00
ld a, [wScrollingMenuCursorPosition]
2015-11-11 11:12:46 -08:00
ld c, a
ld b, 0
ld hl, wMartItem1BCD
add hl, bc
add hl, bc
add hl, bc
2015-11-11 11:12:46 -08:00
push de
ld d, h
ld e, l
pop hl
ld bc, SCREEN_WIDTH
add hl, bc
ld c, PRINTNUM_LEADINGZEROS | PRINTNUM_COINS | 3
2015-11-11 11:12:46 -08:00
call PrintBCDNumber
ret
HerbShopLadyIntroText:
text_far _HerbShopLadyIntroText
text_end
2015-11-11 11:12:46 -08:00
HerbalLadyHowManyText:
text_far _HerbalLadyHowManyText
text_end
2015-11-11 11:12:46 -08:00
HerbalLadyFinalPriceText:
text_far _HerbalLadyFinalPriceText
text_end
2015-11-11 11:12:46 -08:00
HerbalLadyThanksText:
text_far _HerbalLadyThanksText
text_end
2015-11-11 11:12:46 -08:00
HerbalLadyPackFullText:
text_far _HerbalLadyPackFullText
text_end
2015-11-11 11:12:46 -08:00
HerbalLadyNoCoinsText:
text_far _HerbalLadyNoCoinsText
text_end
2015-11-11 11:12:46 -08:00
HerbalLadyComeAgainText:
text_far _HerbalLadyComeAgainText
text_end
2015-11-11 11:12:46 -08:00
BargainShopIntroText:
text_far _BargainShopIntroText
text_end
2015-11-11 11:12:46 -08:00
BargainShopFinalPriceText:
text_far _BargainShopFinalPriceText
text_end
2015-11-11 11:12:46 -08:00
BargainShopThanksText:
text_far _BargainShopThanksText
text_end
2015-11-11 11:12:46 -08:00
BargainShopPackFullText:
text_far _BargainShopPackFullText
text_end
2015-11-11 11:12:46 -08:00
BargainShopSoldOutText:
text_far _BargainShopSoldOutText
text_end
2015-11-11 11:12:46 -08:00
BargainShopNoFundsText:
text_far _BargainShopNoFundsText
text_end
2015-11-11 11:12:46 -08:00
BargainShopComeAgainText:
text_far _BargainShopComeAgainText
text_end
2015-11-11 11:12:46 -08:00
PharmacyIntroText:
text_far _PharmacyIntroText
text_end
2015-11-11 11:12:46 -08:00
PharmacyHowManyText:
text_far _PharmacyHowManyText
text_end
2015-11-11 11:12:46 -08:00
PharmacyFinalPriceText:
text_far _PharmacyFinalPriceText
text_end
2015-11-11 11:12:46 -08:00
PharmacyThanksText:
text_far _PharmacyThanksText
text_end
2015-11-11 11:12:46 -08:00
PharmacyPackFullText:
text_far _PharmacyPackFullText
text_end
2015-11-11 11:12:46 -08:00
PharmacyNoCoinsText:
text_far _PharmacyNoCoinsText
text_end
2015-11-11 11:12:46 -08:00
PharmacyComeAgainText:
text_far _PharmacyComeAgainText
text_end
2015-11-11 11:12:46 -08:00
2018-06-24 07:09:41 -07:00
SellMenu:
2015-11-11 11:12:46 -08:00
call DisableSpriteUpdates
2017-12-24 09:47:30 -08:00
farcall DepositSellInitPackBuffers
2015-12-18 17:07:09 -08:00
.loop
2017-12-24 09:47:30 -08:00
farcall DepositSellPack
2018-01-11 12:36:11 -08:00
ld a, [wPackUsedItem]
2015-11-11 11:12:46 -08:00
and a
2015-12-18 17:07:09 -08:00
jp z, .quit
call .TryToSellItem
jr .loop
2015-11-11 11:12:46 -08:00
2015-12-18 17:07:09 -08:00
.quit
call ReturnToMapWithSpeechTextbox
2015-11-11 11:12:46 -08:00
and a
ret
.NothingToSell: ; unreferenced
2015-12-18 17:07:09 -08:00
ld hl, .NothingToSellText
2019-04-08 05:15:10 -07:00
call MenuTextboxBackup
2015-11-11 11:12:46 -08:00
and a
ret
.NothingToSellText:
text_far _NothingToSellText
text_end
2015-11-11 11:12:46 -08:00
2018-06-24 07:09:41 -07:00
.TryToSellItem:
2017-12-24 09:47:30 -08:00
farcall CheckItemMenu
ld a, [wItemAttributeValue]
2015-12-26 18:59:03 -08:00
ld hl, .dw
2015-11-11 11:12:46 -08:00
rst JumpTable
ret
2018-06-24 07:09:41 -07:00
.dw
2015-11-11 11:12:46 -08:00
dw .try_sell
dw .cant_buy
dw .cant_buy
dw .cant_buy
dw .try_sell
dw .try_sell
dw .try_sell
2018-06-24 07:09:41 -07:00
.cant_buy
2015-11-11 11:12:46 -08:00
ret
2018-06-24 07:09:41 -07:00
.try_sell
2017-12-24 09:47:30 -08:00
farcall _CheckTossableItem
ld a, [wItemAttributeValue]
2015-11-11 11:12:46 -08:00
and a
jr z, .okay_to_sell
ld hl, MartCantBuyText
call PrintText1bpp
2015-11-11 11:12:46 -08:00
and a
ret
.okay_to_sell
ld hl, MartSellHowManyText
call PrintText1bpp
farcall PlaceCoinsAtTopLeftOfTextbox
2017-12-24 09:47:30 -08:00
farcall SelectQuantityToSell
2015-11-11 11:12:46 -08:00
call ExitMenu
jr c, .declined
hlcoord 1, 14
lb bc, 3, 18
call ClearBox
ld hl, MartSellPriceText
2019-04-08 05:15:10 -07:00
call PrintTextboxText
2015-11-11 11:12:46 -08:00
call YesNoBox
jr c, .declined
ld de, wCoins
ld bc, hCoinsTemp
call GiveCoins
2015-11-11 11:12:46 -08:00
ld a, [wMartItemID]
2018-01-23 14:39:09 -08:00
ld hl, wNumItems
2015-11-11 11:12:46 -08:00
call TossItem
predef PartyMonItemName
2015-11-11 11:12:46 -08:00
hlcoord 1, 14
lb bc, 3, 18
call ClearBox
ld hl, MartBoughtText
2019-04-08 05:15:10 -07:00
call PrintTextboxText
2015-11-11 11:12:46 -08:00
call PlayTransactionSound
farcall PlaceCoinsBottomLeft
2015-11-11 11:12:46 -08:00
call JoyWaitAorB
.declined
call ExitMenu
and a
ret
MartSellHowManyText:
text_far _MartSellHowManyText
text_end
2015-11-11 11:12:46 -08:00
MartSellPriceText:
text_far _MartSellPriceText
text_end
2015-11-11 11:12:46 -08:00
MartWelcomeText:
text_far _MartWelcomeText
text_end
2015-11-11 11:12:46 -08:00
MenuHeader_BuySell:
db MENU_BACKUP_TILES ; flags
menu_coords 0, 0, 7, 8
dw .MenuData
2015-11-11 11:12:46 -08:00
db 1 ; default option
.MenuData
db STATICMENU_CURSOR ; strings
2015-11-11 11:12:46 -08:00
db 3 ; items
db "BUY@"
db "SELL@"
db "QUIT@"
MartThanksText:
text_far _MartThanksText
text_end
2015-11-11 11:12:46 -08:00
MartNoCoinsText:
text_far _MartNoCoinsText
text_end
2015-11-11 11:12:46 -08:00
MartPackFullText:
text_far _MartPackFullText
text_end
2015-11-11 11:12:46 -08:00
MartCantBuyText:
text_far _MartCantBuyText
text_end
2015-11-11 11:12:46 -08:00
MartComeAgainText:
text_far _MartComeAgainText
text_end
2015-11-11 11:12:46 -08:00
MartAskMoreText:
text_far _MartAskMoreText
text_end
2015-11-11 11:12:46 -08:00
MartBoughtText:
text_far _MartBoughtText
text_end
2015-11-11 11:12:46 -08:00
2018-06-24 07:09:41 -07:00
PlayTransactionSound:
2015-11-11 11:12:46 -08:00
call WaitSFX
ld de, SFX_TRANSACTION
call PlaySFX
ret
2019-04-08 05:15:10 -07:00
MartTextbox:
call MenuTextbox
2015-11-11 11:12:46 -08:00
call JoyWaitAorB
call ExitMenu
ret