summaryrefslogtreecommitdiff
path: root/event/mom_phone.asm
diff options
context:
space:
mode:
Diffstat (limited to 'event/mom_phone.asm')
-rwxr-xr-xevent/mom_phone.asm285
1 files changed, 285 insertions, 0 deletions
diff --git a/event/mom_phone.asm b/event/mom_phone.asm
new file mode 100755
index 000000000..b2bf0d2fd
--- /dev/null
+++ b/event/mom_phone.asm
@@ -0,0 +1,285 @@
+MomTriesToBuySomething:: ; fcfec
+ ld a, [wMapReentryScriptQueueFlag]
+ and a
+ ret nz
+ call GetMapHeaderPhoneServiceNybble
+ and a
+ ret nz
+ xor a
+ ld [wdc18], a
+ call CheckBalance_MomItem2
+ ret nc
+ call Functionfd0c3
+ ret nc
+ ld b, BANK(UnknownScript_0xfd00f)
+ ld de, UnknownScript_0xfd00f
+ callba LoadScriptBDE
+ scf
+ ret
+; fd00f
+
+UnknownScript_0xfd00f: ; 0xfd00f
+ callasm Functionfd017
+ farjump Script_ReceivePhoneCall
+; 0xfd017
+
+Functionfd017: ; fd017
+ call MomBuysItem_DeductFunds
+ call Functionfd0eb
+ ld a, [wdc18]
+ and a
+ jr nz, .ok
+ ld hl, wdc17
+ inc [hl]
+.ok
+ ld a, 1
+ ld [wCurrentCaller], a
+ ld bc, wd03f
+ ld hl, 0
+ add hl, bc
+ ld [hl], 0
+ inc hl
+ ld [hl], 1
+ ld hl, 9
+ add hl, bc
+ ld a, $3f
+ ld [hli], a
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hl], a
+ ret
+; fd044
+
+CheckBalance_MomItem2: ; fd044
+ ld a, [wdc17]
+ cp 10
+ jr nc, .nope
+ call GetItemFromMom
+ ld a, [hli]
+ ld [hMoneyTemp], a
+ ld a, [hli]
+ ld [hMoneyTemp + 1], a
+ ld a, [hli]
+ ld [hMoneyTemp + 2], a
+ ld de, wMomsMoney
+ ld bc, hMoneyTemp
+ callba CompareMoney
+ jr nc, .have_enough_money
+
+.nope
+ jr .check_have_2300
+
+.have_enough_money
+ scf
+ ret
+
+.check_have_2300
+ ld hl, hMoneyTemp
+ ld [hl], (2300 / $10000) ; $00
+ inc hl
+ ld [hl], ((2300 % $10000) / $100) ; $08
+ inc hl
+ ld [hl], (2300 % $100) ; $fc
+.loop
+ ld de, wdc19
+ ld bc, wMomsMoney
+ callba CompareMoney
+ jr z, .exact
+ jr nc, .less_than
+ call Functionfd099
+ jr .loop
+
+.less_than
+ xor a
+ ret
+
+.exact
+ call Functionfd099
+ ld a, 5
+ call RandomRange
+ inc a
+ ld [wdc18], a
+ scf
+ ret
+; fd099
+
+Functionfd099: ; fd099
+ ld de, wdc19
+ ld bc, hMoneyTemp
+ callba AddMoney
+ ret
+; fd0a6
+
+
+MomBuysItem_DeductFunds: ; fd0a6 (3f:50a6)
+ call GetItemFromMom
+ ld de, 3
+ add hl, de
+ ld a, [hli]
+ ld [hMoneyTemp], a
+ ld a, [hli]
+ ld [hMoneyTemp + 1], a
+ ld a, [hli]
+ ld [hMoneyTemp + 2], a
+ ld de, wMomsMoney
+ ld bc, hMoneyTemp
+ callba TakeMoney
+ ret
+
+
+Functionfd0c3: ; fd0c3
+ call GetItemFromMom
+ ld de, 6
+ add hl, de
+ ld a, [hli]
+ cp 1
+ jr z, .not_doll
+ ld a, [hl]
+ ld c, a
+ ld b, 1
+ callba DecorationFlagAction_c
+ scf
+ ret
+
+.not_doll
+ ld a, [hl]
+ ld [CurItem], a
+ ld a, $1
+ ld [wItemQuantityChangeBuffer], a
+ ld hl, PCItems
+ call ReceiveItem
+ ret
+; fd0eb
+
+
+Functionfd0eb: ; fd0eb (3f:50eb)
+ call GetItemFromMom
+ ld de, 6 ; field
+ add hl, de
+ ld a, [hli]
+ ld de, Script_MomBoughtItem
+ cp 1
+ ret z
+ ld de, Script_MomBoughtDoll
+ ret
+; fd0fd (3f:50fd)
+
+Script_MomBoughtItem: ; 0xfd0fd
+ writetext _MomText_HiHowAreYou
+ writetext _MomText_FoundAnItem
+ writetext _MomText_BoughtWithYourMoney
+ writetext _MomText_ItsInPC
+ end
+; 0xfd10a
+
+Script_MomBoughtDoll: ; 0xfd10a
+ writetext _MomText_HiHowAreYou
+ writetext _MomText_FoundADoll
+ writetext _MomText_BoughtWithYourMoney
+ writetext _MomText_ItsInRoom
+ end
+; 0xfd117
+
+
+GetItemFromMom: ; fd117
+ ld a, [wdc18]
+ and a
+ jr z, .zero
+ dec a
+ ld de, MomItems_1
+ jr .incave
+
+.zero
+ ld a, [wdc17]
+ cp 10 ; length of MomItems_2
+ jr c, .ok
+ xor a
+
+.ok
+ ld de, MomItems_2
+
+.incave
+ ld l, a
+ ld h, 0
+rept 3 ; multiply hl by 8
+ add hl, hl
+endr
+ add hl, de
+ ret
+; fd136
+
+momitem: macro
+; money to trigger, cost, kind, item
+ dt \1
+ dt \2
+ db \3, \4
+ENDM
+
+
+MomItems_1: ; fd136
+ momitem 0, 600, MOM_ITEM, SUPER_POTION
+ momitem 0, 90, MOM_ITEM, ANTIDOTE
+ momitem 0, 180, MOM_ITEM, POKE_BALL
+ momitem 0, 450, MOM_ITEM, ESCAPE_ROPE
+ momitem 0, 500, MOM_ITEM, GREAT_BALL
+; fd15e
+
+MomItems_2: ; fd15e
+ momitem 900, 600, MOM_ITEM, SUPER_POTION
+ momitem 4000, 270, MOM_ITEM, REPEL
+ momitem 7000, 600, MOM_ITEM, SUPER_POTION
+ momitem 10000, 1800, MOM_DOLL, DECO_CHARMANDER_DOLL
+ momitem 15000, 3000, MOM_ITEM, MOON_STONE
+ momitem 19000, 600, MOM_ITEM, SUPER_POTION
+ momitem 30000, 4800, MOM_DOLL, DECO_CLEFAIRY_DOLL
+ momitem 40000, 900, MOM_ITEM, HYPER_POTION
+ momitem 50000, 8000, MOM_DOLL, DECO_PIKACHU_DOLL
+ momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL
+; fd1ae
+
+ db 0, 0, 0 ; XXX
+
+_MomText_HiHowAreYou: ; 0xfd1b1
+ ; Hi, ! How are you?
+ text_jump UnknownText_0x1bc615
+ db "@"
+; 0xfd1b6
+
+_MomText_FoundAnItem: ; 0xfd1b6
+ ; I found a useful item shopping, so
+ text_jump UnknownText_0x1bc62a
+ db "@"
+; 0xfd1bb
+
+_MomText_BoughtWithYourMoney: ; 0xfd1bb
+ ; I bought it with your money. Sorry!
+ text_jump UnknownText_0x1bc64e
+ db "@"
+; 0xfd1c0
+
+_MomText_ItsInPC: ; 0xfd1c0
+ ; It's in your PC. You'll like it!
+ text_jump UnknownText_0x1bc673
+ db "@"
+; 0xfd1c5
+
+_MomText_FoundADoll: ; 0xfd1c5
+ ; While shopping today, I saw this adorable doll, so
+ text_jump UnknownText_0x1bc693
+ db "@"
+; 0xfd1ca
+
+_MomText_ItsInRoom: ; 0xfd1ca
+ ; It's in your room. You'll love it!
+ text_jump UnknownText_0x1bc6c7
+ db "@"
+; 0xfd1cf
+
+ db 0 ; XXX
+
+Functionfd1d0: ; fd1d0
+ ret
+; fd1d1
+
+ ret ; XXX