Add BottleVendor sells milk, remove behavior from Maple witch
This commit is contained in:
109
Sprites/NPCs/bottle_vendor.asm
Normal file
109
Sprites/NPCs/bottle_vendor.asm
Normal 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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user