Add BottleVendor sells milk, remove behavior from Maple witch

This commit is contained in:
scawful
2024-12-20 11:00:31 -05:00
parent 704dd78901
commit a304b96bc0
3 changed files with 119 additions and 69 deletions

View File

@@ -0,0 +1,109 @@
pushpc
; BottleVendor_OutOfStock
org $05EAC2 : JSL BottleVendor_MilkHandler
pullpc
BottleVendor_MilkHandler:
{
LDA.l $7EF34C : BNE +
LDA.b #$D4
JSL Sprite_ShowSolicitedMessage
RTL
+
JSR BottleVendor_SellMilk
RTL
}
BottleVendor_SellMilk:
{
LDA.w SprMiscA, X
JSL JumpTableLocal
dw BottleVendor_Idle
dw BottleVendor_BoughtMilkBottle
dw BottleVendor_NotEnoughRupees
dw BottleVendor_HandlePlayerResponse
dw BottleVendor_ComeBackAgain
dw BottleVendor_NoAvailableBottles
BottleVendor_Idle:
{
%PlayAnimation(0,1,16)
JSL Sprite_PlayerCantPassThrough
%ShowSolicitedMessage($0187) : BCC .didnt_talk
LDA.b #$03 : STA.w SprMiscA, X
.didnt_talk
RTS
}
BottleVendor_BoughtMilkBottle:
{
REP #$20
LDA.l $7EF360 : CMP.w #$1E ; 30 rupees
SEP #$30
BCC .not_enough_rupees
LDA.l $7EF35C : CMP.b #$02 : BEQ .bottle1_available
LDA.l $7EF35D : CMP.b #$02 : BEQ .bottle2_available
LDA.l $7EF35E : CMP.b #$02 : BEQ .bottle3_available
LDA.l $7EF35F : CMP.b #$02 : BEQ .bottle4_available
LDA.b #$05 : STA.w SprMiscA, X
RTS
.bottle1_available
LDA.b #$0A : STA.l $7EF35C : JMP .finish_storage
.bottle2_available
LDA.b #$0A : STA.l $7EF35D : JMP .finish_storage
.bottle3_available
LDA.b #$0A : STA.l $7EF35E : JMP .finish_storage
.bottle4_available
LDA.b #$0A : STA.l $7EF35F
.finish_storage
REP #$20
LDA.l $7EF360
SEC : SBC.w #$1E ; Subtract 30 rupees
STA.l $7EF360
SEP #$30
%ShowUnconditionalMessage($0188) ; Thank you!
STZ.w SprMiscA, X
RTS
.not_enough_rupees
LDA.b #$02 : STA.w SprMiscA, X
RTS
}
BottleVendor_NotEnoughRupees:
{
%ShowUnconditionalMessage($0189) ; You don't have enough rupees!
STZ.w SprMiscA, X
RTS
}
BottleVendor_HandlePlayerResponse:
{
LDA $1CE8 : BEQ .player_said_yes
LDA.b #$04 : STA.w SprMiscA, X
RTS
.player_said_yes
LDA.b #$01 : STA.w SprMiscA, X
RTS
}
BottleVendor_ComeBackAgain:
{
%ShowUnconditionalMessage($018B) ; Come back again!
STZ.w SprMiscA, X
RTS
}
BottleVendor_NoAvailableBottles:
{
%ShowUnconditionalMessage($033)
STZ.w SprMiscA, X
SEC
RTS
}
}

View File

@@ -145,82 +145,20 @@ Sprite_Mermaid_Main:
LDA.w SprAction, X
JSL JumpTableLocal
dw MapleIdle
dw Maple_BoughtMilkBottle
dw Maple_NotEnoughRupees
dw Maple_HandlePlayerResponse
dw Maple_ComeBackAgain
dw Maple_Idle
dw Maple_HandleDreams
MapleIdle:
Maple_Idle:
{
%PlayAnimation(0,1,16)
JSL Sprite_PlayerCantPassThrough
%ShowSolicitedMessage($0187) : BCC .didnt_talk
%GotoAction(3) ; Handle player response
.didnt_talk
%ShowSolicitedMessage($0187) : BCC +
INC.w SprAction, X
+
RTS
}
Maple_BoughtMilkBottle:
Maple_HandleDreams:
{
REP #$20
LDA.l $7EF360 : CMP.w #$1E ; 30 rupees
SEP #$30
BCC .not_enough_rupees
LDA.l $7EF35C : CMP.b #$02 : BEQ .bottle1_available
LDA.l $7EF35D : CMP.b #$02 : BEQ .bottle2_available
LDA.l $7EF35E : CMP.b #$02 : BEQ .bottle3_available
LDA.l $7EF35F : CMP.b #$02 : BEQ .bottle4_available
%ShowUnconditionalMessage($033)
%GotoAction(0)
RTS
.bottle1_available
LDA.b #$0A : STA.l $7EF35C : JMP .finish_storage
.bottle2_available
LDA.b #$0A : STA.l $7EF35D : JMP .finish_storage
.bottle3_available
LDA.b #$0A : STA.l $7EF35E : JMP .finish_storage
.bottle4_available
LDA.b #$0A : STA.l $7EF35F
.finish_storage
REP #$20
LDA.l $7EF360
SEC : SBC.w #$1E ; Subtract 30 rupees
STA.l $7EF360
SEP #$30
%ShowUnconditionalMessage($0188) ; Thank you!
%GotoAction(0)
RTS
.not_enough_rupees
%GotoAction(2)
RTS
}
Maple_NotEnoughRupees:
{
%ShowUnconditionalMessage($0189) ; You don't have enough rupees!
%GotoAction(0)
RTS
}
Maple_HandlePlayerResponse:
{
LDA $1CE8 : BEQ .player_said_yes
%GotoAction(4)
RTS
.player_said_yes
%GotoAction(1)
RTS
}
Maple_ComeBackAgain:
{
%ShowUnconditionalMessage($018B) ; Come back again!
%GotoAction(0)
RTS
}
}

View File

@@ -67,6 +67,9 @@ Sprite_Vasu = $D7
incsrc "Sprites/NPCs/vasu.asm"
print "End of vasu.asm ", pc
incsrc "Sprites/NPCs/bottle_vendor.asm"
print "End of bottle_vendor.asm ", pc
incsrc "Sprites/Enemies/leever.asm"
print "End of leever.asm ", pc