peasant: hook up actions inside NN cabin

can now get robe
This commit is contained in:
Vince Weaver 2021-11-29 00:41:40 -05:00
parent f190cc50bc
commit 7cba779963
4 changed files with 274 additions and 152 deletions

View File

@ -194,8 +194,11 @@ POINTS IMPLEMENTED: (in order of implementation)
+ 7 (get riches from jhonka) + 7 (get riches from jhonka)
+ 5 (throw baby) + 5 (throw baby)
+ 5 (deploy baby) + 5 (deploy baby)
+ 1 (close drawer)
+ 10 (get robe)
+ 3 (wear robe)
====== ======
96 points 110 points
deaths/endings implemented deaths/endings implemented

View File

@ -816,211 +816,257 @@ inside_cottage_sleep:
;======================= ;=======================
inside_nn_verb_table: inside_nn_verb_table:
.if 0
.byte VERB_ASK
.word archery_ask-1
.byte VERB_GET
.word archery_get-1
.byte VERB_GIVE
.word archery_give-1
.byte VERB_HALDO
.word archery_haldo-1
.byte VERB_LOOK .byte VERB_LOOK
.word archery_look-1 .word inside_nn_look-1
.byte VERB_PLAY .byte VERB_OPEN
.word archery_play-1 .word inside_nn_open-1
.byte VERB_STEAL .byte VERB_CLOSE
.word archery_steal-1 .word inside_nn_close-1
.byte VERB_TALK .byte VERB_GET
.word archery_talk-1 .word inside_nn_get-1
.byte VERB_TAKE .byte VERB_TAKE
.word archery_take-1 .word inside_nn_take-1
.endif .byte VERB_STEAL
.word inside_nn_steal-1
.byte 0 .byte 0
.if 0
;================
; ask
;================
archery_ask:
; TODO
jmp parse_common_ask
;================ ;================
; get ; get
;================ ;================
archery_get: inside_nn_get:
archery_steal: inside_nn_steal:
archery_take: inside_nn_take:
lda CURRENT_NOUN lda CURRENT_NOUN
cmp #NOUN_TARGET cmp #NOUN_ROBE
beq archery_get_target beq inside_nn_get_robe
cmp #NOUN_ARROW cmp #NOUN_DRESSER
beq archery_get_arrow beq inside_nn_get_dresser
cmp #NOUN_DRAWER
beq inside_nn_get_drawer
cmp #NOUN_BROOM
beq inside_nn_get_broom
; else "probably wish" message ; else "probably wish" message
jmp parse_common_get jmp parse_common_get
archery_get_target: inside_nn_get_robe:
ldx #<archery_get_target_message ; first see if drawer closed
ldy #>archery_get_target_message
lda GAME_STATE_2
and #DRESSER_OPEN
beq inside_nn_get_robe_drawer_closed
; next see if already have it
lda INVENTORY_2
and #INV2_ROBE
beq inside_nn_actually_get_robe
inside_nn_get_robe_already_have:
ldx #<inside_nn_get_robe_already_message
ldy #>inside_nn_get_robe_already_message
jmp finish_parse_message jmp finish_parse_message
archery_get_arrow: inside_nn_get_robe_drawer_closed:
ldx #<archery_get_arrow_message ldx #<inside_nn_get_robe_drawer_closed_message
ldy #>archery_get_arrow_message ldy #>inside_nn_get_robe_drawer_closed_message
jmp finish_parse_message jmp finish_parse_message
;================
; give
;================
archery_give:
; TODO inside_nn_actually_get_robe:
jmp parse_common_give ; get 10 pts
;================ lda #$10
; haldo jsr score_points
;================
archery_haldo:
; TODO ; get robe
jmp parse_common_haldo lda INVENTORY_2
ora #INV2_ROBE
sta INVENTORY_2
ldx #<inside_nn_get_robe_message
ldy #>inside_nn_get_robe_message
jmp finish_parse_message
inside_nn_get_dresser:
inside_nn_get_drawer:
ldx #<inside_nn_get_dresser_message
ldy #>inside_nn_get_dresser_message
jmp finish_parse_message
inside_nn_get_broom:
ldx #<inside_nn_get_broom_message
ldy #>inside_nn_get_broom_message
jmp finish_parse_message
;================= ;=================
; look ; look
;================= ;=================
archery_look: inside_nn_look:
lda CURRENT_NOUN lda CURRENT_NOUN
cmp #NOUN_DESK cmp #NOUN_BROOM
beq archery_look_at_desk beq inside_nn_look_broom
cmp #NOUN_TARGET cmp #NOUN_DRAWER
beq archery_look_at_target beq inside_nn_look_drawer
cmp #NOUN_ARCHER cmp #NOUN_DRESSER
beq archery_look_at_archer beq inside_nn_look_dresser
cmp #NOUN_NONE cmp #NOUN_NONE
beq archery_look_at beq inside_nn_look_at
jmp parse_common_look jmp parse_common_look
archery_look_at: inside_nn_look_at:
ldx #<archery_look_message ldx #<inside_nn_look_at_message
ldy #>archery_look_message ldy #>inside_nn_look_at_message
jmp finish_parse_message jmp finish_parse_message
archery_look_at_archer: inside_nn_look_broom:
ldx #<archery_look_at_archer_message ldx #<inside_nn_look_brook_message
ldy #>archery_look_at_archer_message ldy #>inside_nn_look_brook_message
jmp finish_parse_message jmp finish_parse_message
archery_look_at_target: inside_nn_look_dresser:
ldx #<archery_look_at_target_message inside_nn_look_drawer:
ldy #>archery_look_at_target_message lda GAME_STATE_2
and #DRESSER_OPEN
bne inside_nn_look_drawer_open
inside_nn_look_drawer_closed:
ldx #<inside_nn_look_closed_drawer_message
ldy #>inside_nn_look_closed_drawer_message
jmp finish_parse_message jmp finish_parse_message
archery_look_at_desk: inside_nn_look_drawer_open:
ldx #<archery_look_at_desk_message lda INVENTORY_2
ldy #>archery_look_at_desk_message and #INV2_ROBE
bne inside_nn_look_drawer_open_norobe
inside_nn_look_drawer_open_robe:
ldx #<inside_nn_look_open_drawer_message
ldy #>inside_nn_look_open_drawer_message
jmp finish_parse_message jmp finish_parse_message
inside_nn_look_drawer_open_norobe:
ldx #<inside_nn_look_norobe_drawer_message
ldy #>inside_nn_look_norobe_drawer_message
jmp finish_parse_message
;================ ;================
; play ; open
;================ ;================
archery_play: inside_nn_open:
lda CURRENT_NOUN lda CURRENT_NOUN
cmp #NOUN_GAME cmp #NOUN_DRAWER
beq archery_play_game beq inside_nn_open_drawer
cmp #NOUN_DRESSER
beq inside_nn_open_drawer
jmp parse_common_unknown jmp parse_common_unknown
archery_play_game: inside_nn_open_drawer:
ldx #<archery_play_game_message ; first check to see if it's already open
ldy #>archery_play_game_message
jmp finish_parse_message
;================ lda GAME_STATE_2
; talk and #DRESSER_OPEN
;================ bne inside_nn_open_drawer_already_open
archery_talk:
; only talk if close ; see if robe has been taken
lda PEASANT_X
cmp #23
bcc archery_talk_too_far
; check Y too?
; probably less than $7D?
; actual game will walk you in if close
; will it work from beind?
lda CURRENT_NOUN
cmp #NOUN_MAN
beq archery_talk_mendelev
cmp #NOUN_GUY
beq archery_talk_mendelev
cmp #NOUN_DUDE
beq archery_talk_mendelev
cmp #NOUN_MENDELEV
beq archery_talk_mendelev
cmp #NOUN_ARCHER
beq archery_talk_mendelev
jmp parse_common_unknown
archery_talk_mendelev:
ldx #<archery_talk_mendelev_message
ldy #>archery_talk_mendelev_message
jsr partial_message_step
ldx #<archery_talk_mendelev2_message
ldy #>archery_talk_mendelev2_message
jsr partial_message_step
ldx #<archery_talk_mendelev3_message
ldy #>archery_talk_mendelev3_message
jsr finish_parse_message
; add 1 point to score if don't have mask or trinket
; add 2 points otherwise
lda INVENTORY_2 lda INVENTORY_2
and #INV2_TRINKET and #INV2_ROBE
bne archer_2_points beq inside_nn_open_drawer_closed_full
lda INVENTORY_1 inside_nn_open_drawer_closed_empty:
and #INV1_MONSTER_MASK ldx #<inside_nn_open_empty_drawer_message
bne archer_2_points ldy #>inside_nn_open_empty_drawer_message
archer_1_point:
lda #1
bne archer_score_points ; bra
archer_2_points:
lda #2
archer_score_points:
jsr score_points
rts
archery_talk_too_far:
ldx #<archery_talk_far_message
ldy #>archery_talk_far_message
jmp finish_parse_message jmp finish_parse_message
.endif inside_nn_open_drawer_closed_full:
; open the drawer
lda GAME_STATE_2
ora #DRESSER_OPEN
sta GAME_STATE_2
ldx #<inside_nn_open_closed_drawer_message
ldy #>inside_nn_open_closed_drawer_message
jmp finish_parse_message
inside_nn_open_drawer_already_open:
ldx #<inside_nn_open_open_drawer_message
ldy #>inside_nn_open_open_drawer_message
jmp finish_parse_message
;================
; close
;================
inside_nn_close:
lda CURRENT_NOUN
cmp #NOUN_DRAWER
beq inside_nn_close_drawer
cmp #NOUN_DRESSER
beq inside_nn_close_drawer
jmp parse_common_unknown
inside_nn_close_drawer:
; first check to see if it's open
lda GAME_STATE_2
and #DRESSER_OPEN
bne inside_nn_close_drawer_open
inside_nn_close_drawer_closed:
ldx #<inside_nn_close_closed_drawer_message
ldy #>inside_nn_close_closed_drawer_message
jmp finish_parse_message
inside_nn_close_drawer_open:
; regardless, we close the drawer
lda GAME_STATE_2
and #<(~DRESSER_OPEN)
sta GAME_STATE_2
; see if robe has been taken
lda INVENTORY_2
and #INV2_ROBE
beq inside_nn_close_drawer_full
inside_nn_close_drawer_empty:
; get 1 pt
lda #1
jsr score_points
ldx #<inside_nn_close_empty_drawer_message
ldy #>inside_nn_close_empty_drawer_message
jmp finish_parse_message
inside_nn_close_drawer_full:
ldx #<inside_nn_close_full_drawer_message
ldy #>inside_nn_close_full_drawer_message
jmp finish_parse_message
.include "dialog_inside.inc" .include "dialog_inside.inc"

View File

@ -0,0 +1,42 @@
; based on code from here
; http://eightbitsoundandfury.ld8.org/programming.html
NOTE_C3 = 255
NOTE_CSHARP3 = 241
NOTE_D3 = 227
NOTE_DSHARP3 = 214
NOTE_E3 = 202
NOTE_F3 = 191
NOTE_FSHARP3 = 180
NOTE_G3 = 170
NOTE_GSHARP3 = 161
NOTE_A3 = 152
NOTE_ASHARP3 = 143
NOTE_B3 = 135
NOTE_C4 = 128
NOTE_CSHARP4 = 121
NOTE_D4 = 114
NOTE_DSHARP4 = 108
NOTE_E4 = 102
NOTE_F4 = 96
NOTE_FSHARP4 = 91
NOTE_G4 = 85
NOTE_GSHARP4 = 81
NOTE_A4 = 76
NOTE_ASHARP4 = 72
NOTE_B4 = 68
NOTE_C5 = 64
NOTE_CSHARP5 = 60
NOTE_D5 = 57
NOTE_DSHARP5 = 54
NOTE_E5 = 51
NOTE_F5 = 48
NOTE_FSHARP5 = 45
NOTE_G5 = 43
NOTE_GSHARP5 = 40
NOTE_A5 = 38
NOTE_ASHARP5 = 36
NOTE_B5 = 34

View File

@ -460,7 +460,11 @@ inside_cottage_leaving_post_trinket_message:
; Inside Mysterious (Ned's) Cottage ; Inside Mysterious (Ned's) Cottage
;=================================== ;===================================
;=========
; look
; + look ; + look
inside_nn_look_at_message:
.byte "This place could use some",13 .byte "This place could use some",13
.byte "serious sprucing of the",13 .byte "serious sprucing of the",13
.byte "'up' variety. There's a",13 .byte "'up' variety. There's a",13
@ -469,6 +473,7 @@ inside_cottage_leaving_post_trinket_message:
.byte "all mysterious like.",0 .byte "all mysterious like.",0
; + look broom ; + look broom
inside_nn_look_brook_message:
.byte "The broom is all black and",13 .byte "The broom is all black and",13
.byte "artistic, implying perhaps",13 .byte "artistic, implying perhaps",13
.byte "that it is closer to the",13 .byte "that it is closer to the",13
@ -476,15 +481,17 @@ inside_cottage_leaving_post_trinket_message:
.byte "avoid emphasis.",0 .byte "avoid emphasis.",0
; + look drawer/dresser (closed) ; + look drawer/dresser (closed)
inside_nn_look_closed_drawer_message:
.byte "This dresser needs a good",13 .byte "This dresser needs a good",13
.byte "wipe down with new",13 .byte "wipe down with new",13
.byte "Indenture(tm), the dust",13 .byte "Indenture(tm), the dust",13
.byte "busting miracle spray.",13 .byte "busting miracle spray.",13
.byte "There is an especially enticing",13 .byte "There is an especially",13
.byte "top drawer that is",13 .byte "enticing top drawer that is",13
.byte "currently closed.",0 .byte "currently closed.",0
; + look drawer/dresser (open) ; + look drawer/dresser (open)
inside_nn_look_open_drawer_message:
.byte "This dresser needs a good",13 .byte "This dresser needs a good",13
.byte "wipe down with new",13 .byte "wipe down with new",13
.byte "Indenture(tm), the dust",13 .byte "Indenture(tm), the dust",13
@ -493,7 +500,8 @@ inside_cottage_leaving_post_trinket_message:
.byte "there are some brown lumpy",13 .byte "there are some brown lumpy",13
.byte "clothes in it.",0 .byte "clothes in it.",0
; + look drawer/dresser (after robe) ; + look drawer/dresser (open, after robe taken)
inside_nn_look_norobe_drawer_message:
.byte "This dresser needs a good",13 .byte "This dresser needs a good",13
.byte "wipe down with new",13 .byte "wipe down with new",13
.byte "Indenture(tm), the dust",13 .byte "Indenture(tm), the dust",13
@ -501,23 +509,33 @@ inside_cottage_leaving_post_trinket_message:
.byte "There is a drawer open, but",13 .byte "There is a drawer open, but",13
.byte "it's empty.",0 .byte "it's empty.",0
;======
; open
; + open drawer (it's closed, not taken) ; + open drawer (it's closed, not taken)
inside_nn_open_closed_drawer_message:
.byte "There's a vintage peasant",13 .byte "There's a vintage peasant",13
.byte "robe in there! Just like",13 .byte "robe in there! Just like",13
.byte "grampa used to wear.",0 .byte "grampa used to wear.",0
; + open drawer (it's open) ; + open drawer (it's open)
inside_nn_open_open_drawer_message:
.byte "Yeah, totally! Except it's",13 .byte "Yeah, totally! Except it's",13
.byte "already open you moron.",0 .byte "already open you moron.",0
; + open drawer (after getting robe and closing) ; + open drawer (after getting robe and closing)
inside_nn_open_empty_drawer_message:
.byte "You already closed it,",13 .byte "You already closed it,",13
.byte "which was nice, and so we",13 .byte "which was nice, and so we",13
.byte "gave you some points. Let",13 .byte "gave you some points. Let",13
.byte "sleeping drawers lie.",0 .byte "sleeping drawers lie.",0
;=========
; close
;+1 POINT ;+1 POINT
; + close drawer ; + close drawer
inside_nn_close_empty_drawer_message:
.byte "Aww, how thoughtful and",13 .byte "Aww, how thoughtful and",13
.byte "boring of you. Break into",13 .byte "boring of you. Break into",13
.byte "this peasant's home, steal",13 .byte "this peasant's home, steal",13
@ -526,6 +544,7 @@ inside_cottage_leaving_post_trinket_message:
.byte "You're a real saint.",0 .byte "You're a real saint.",0
; + close drawer (w/o taking robe) ; + close drawer (w/o taking robe)
inside_nn_close_full_drawer_message:
.byte "Right, right. Wouldn't",13 .byte "Right, right. Wouldn't",13
.byte "want to leave the robes out",13 .byte "want to leave the robes out",13
.byte "where any old guy trying to",13 .byte "where any old guy trying to",13
@ -533,19 +552,29 @@ inside_cottage_leaving_post_trinket_message:
.byte "could take them.",0 .byte "could take them.",0
; + close drawer (already closed) ; + close drawer (already closed)
inside_nn_close_closed_drawer_message:
.byte "A riddle: What can be",13 .byte "A riddle: What can be",13
.byte "closed that is already",13 .byte "closed that is already",13
.byte "closed? (hint: not this",13 .byte "closed? (hint: not this",13
.byte "drawer)",0 .byte "drawer)",0
;============
; get
; +10 points ; +10 points
; + get robe ; + get/take robe (drawer must be open)
inside_nn_get_robe_message:
.byte "Yeah! Get that robe!",0 .byte "Yeah! Get that robe!",0
; + get/take robe (after you've gotten it) ; + get/take robe (after you've gotten it)
.byte "You still remember the time when you took them. Oh, the times have changed ... but the robes?",0 inside_nn_get_robe_already_message:
.byte "You still remember the time",13
.byte "when you took them. Oh, the",13
.byte "times have changed ... but",13
.byte "the robes?",0
; + get/take robe (drawer closed) ; + get/take robe (drawer closed, whether you have it or not)
inside_nn_get_robe_drawer_closed_message:
.byte "You reach into the closed",13 .byte "You reach into the closed",13
.byte "drawer and nearly break",13 .byte "drawer and nearly break",13
.byte "your hand slamming it. Just",13 .byte "your hand slamming it. Just",13
@ -554,12 +583,14 @@ inside_cottage_leaving_post_trinket_message:
.byte "blamelessness.",0 .byte "blamelessness.",0
; + get/take drawer/dresser ; + get/take drawer/dresser
inside_nn_get_dresser_message:
.byte "You get a hernia from",13 .byte "You get a hernia from",13
.byte "lifting it. -2 Movement",13 .byte "lifting it. -2 Movement",13
.byte "points, -10 Constitution.",13 .byte "points, -10 Constitution.",13
.byte "Don't do that again.",0 .byte "Don't do that again.",0
; + get/take broom ; + get/take broom
inside_nn_get_broom_message:
.byte "No, no. The broom is in the",13 .byte "No, no. The broom is in the",13
.byte "foreground and you can't",13 .byte "foreground and you can't",13
.byte "take things from the",13 .byte "take things from the",13