mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-04 20:06:09 +00:00
7cba779963
can now get robe
1073 lines
22 KiB
ArmAsm
1073 lines
22 KiB
ArmAsm
.include "tokens.inc"
|
|
|
|
;=======================
|
|
;=======================
|
|
;=======================
|
|
; Hidden Glen
|
|
;=======================
|
|
;=======================
|
|
;=======================
|
|
|
|
hidden_glen_verb_table:
|
|
.byte VERB_SAY
|
|
.word hidden_glen_say-1
|
|
.byte VERB_TALK
|
|
.word hidden_glen_talk-1
|
|
.byte VERB_HALDO
|
|
.word hidden_glen_haldo-1
|
|
.byte VERB_GET
|
|
.word hidden_glen_get-1
|
|
.byte VERB_TAKE
|
|
.word hidden_glen_get-1
|
|
.byte VERB_CLIMB
|
|
.word hidden_glen_climb-1
|
|
.byte VERB_JUMP
|
|
.word hidden_glen_climb-1
|
|
.byte VERB_LOOK
|
|
.word hidden_glen_look-1
|
|
.byte 0
|
|
|
|
;=================
|
|
; say
|
|
;=================
|
|
|
|
hidden_glen_say:
|
|
; only say HALDO. Wastes noun slot
|
|
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_HALDO
|
|
beq hidden_glen_say_haldo
|
|
|
|
jmp parse_common_unknown
|
|
|
|
;=================
|
|
; haldo
|
|
;=================
|
|
|
|
hidden_glen_haldo:
|
|
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_NONE
|
|
beq hidden_glen_say_haldo
|
|
|
|
jmp parse_common_unknown
|
|
|
|
;=================
|
|
; haldo
|
|
hidden_glen_say_haldo:
|
|
lda GAME_STATE_0
|
|
and #HALDO_TO_DONGOLEV
|
|
beq hidden_glen_say_haldo_dongolev_there
|
|
|
|
hidden_glen_say_haldo_no_dongolev:
|
|
ldx #<hidden_glen_say_haldo_no_dongolev_message
|
|
ldy #>hidden_glen_say_haldo_no_dongolev_message
|
|
jmp finish_parse_message
|
|
|
|
hidden_glen_say_haldo_dongolev_there:
|
|
; check if talked to mendelev first
|
|
lda GAME_STATE_0
|
|
and #TALKED_TO_MENDELEV
|
|
beq hidden_glen_say_haldo_skip_mendelev
|
|
|
|
hidden_glen_say_haldo_hooray:
|
|
; add 3 points to score
|
|
lda #3
|
|
jsr score_points
|
|
|
|
; set that we talked to him
|
|
lda GAME_STATE_0
|
|
ora #HALDO_TO_DONGOLEV
|
|
sta GAME_STATE_0
|
|
|
|
ldx #<hidden_glen_say_haldo_message
|
|
ldy #>hidden_glen_say_haldo_message
|
|
jmp finish_parse_message
|
|
|
|
|
|
hidden_glen_say_haldo_skip_mendelev:
|
|
ldx #<hidden_glen_say_haldo_skip_mendelev_message
|
|
ldy #>hidden_glen_say_haldo_skip_mendelev_message
|
|
jmp finish_parse_message
|
|
|
|
;=================
|
|
; look
|
|
;=================
|
|
|
|
hidden_glen_look:
|
|
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_BUSH
|
|
beq hidden_glen_look_at_bushes
|
|
cmp #NOUN_ARROW
|
|
beq hidden_glen_look_at_arrow
|
|
cmp #NOUN_FENCE
|
|
beq hidden_glen_look_at_fence
|
|
cmp #NOUN_TREE
|
|
beq hidden_glen_look_at_tree
|
|
|
|
cmp #NOUN_ARCHER
|
|
beq hidden_glen_look_at_archer
|
|
cmp #NOUN_DONGOLEV
|
|
beq hidden_glen_look_at_archer
|
|
|
|
cmp #NOUN_NONE
|
|
beq hidden_glen_look_at
|
|
|
|
jmp parse_common_look
|
|
|
|
;=================
|
|
; look
|
|
hidden_glen_look_at:
|
|
lda GAME_STATE_0
|
|
and #HALDO_TO_DONGOLEV
|
|
beq hidden_glen_look_at_dongolev_yes
|
|
|
|
hidden_glen_look_at_dongolev_no:
|
|
ldx #<hidden_glen_look_no_dongolev_message
|
|
ldy #>hidden_glen_look_no_dongolev_message
|
|
jmp finish_parse_message
|
|
|
|
hidden_glen_look_at_dongolev_yes:
|
|
ldx #<hidden_glen_look_message
|
|
ldy #>hidden_glen_look_message
|
|
jmp finish_parse_message
|
|
|
|
;=============
|
|
; look at archer
|
|
hidden_glen_look_at_archer:
|
|
lda GAME_STATE_0
|
|
and #HALDO_TO_DONGOLEV
|
|
beq hidden_glen_look_at_archer_dongolev_yes
|
|
|
|
hidden_glen_look_at_archer_dongolev_no:
|
|
jmp parse_common_look
|
|
|
|
hidden_glen_look_at_archer_dongolev_yes:
|
|
ldx #<hidden_glen_look_at_archer_message
|
|
ldy #>hidden_glen_look_at_archer_message
|
|
jmp finish_parse_message
|
|
|
|
;=============
|
|
; look at arrow
|
|
hidden_glen_look_at_arrow:
|
|
lda INVENTORY_1
|
|
and #INV1_ARROW
|
|
beq hidden_glen_look_at_arrow_arrow_no
|
|
|
|
hidden_glen_look_at_arrow_arrow_yes:
|
|
jmp parse_common_look
|
|
|
|
hidden_glen_look_at_arrow_arrow_no:
|
|
ldx #<hidden_glen_look_at_arrow_message
|
|
ldy #>hidden_glen_look_at_arrow_message
|
|
jmp finish_parse_message
|
|
|
|
;===============
|
|
; look at bushes
|
|
hidden_glen_look_at_bushes:
|
|
ldx #<hidden_glen_look_at_bushes_message
|
|
ldy #>hidden_glen_look_at_bushes_message
|
|
jmp finish_parse_message
|
|
|
|
;==============
|
|
; look at fence
|
|
hidden_glen_look_at_fence:
|
|
ldx #<hidden_glen_look_at_fence_message
|
|
ldy #>hidden_glen_look_at_fence_message
|
|
jmp finish_parse_message
|
|
|
|
;==============
|
|
; look at tree
|
|
hidden_glen_look_at_tree:
|
|
ldx #<hidden_glen_look_at_tree_message
|
|
ldy #>hidden_glen_look_at_tree_message
|
|
jmp finish_parse_message
|
|
|
|
;=================
|
|
; climb
|
|
;=================
|
|
|
|
hidden_glen_climb:
|
|
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_TREE
|
|
beq hidden_glen_climb_tree
|
|
cmp #NOUN_FENCE
|
|
beq hidden_glen_climb_fence
|
|
|
|
jmp parse_common_unknown
|
|
|
|
hidden_glen_climb_tree:
|
|
ldx #<hidden_glen_climb_tree_message
|
|
ldy #>hidden_glen_climb_tree_message
|
|
jmp finish_parse_message
|
|
|
|
hidden_glen_climb_fence:
|
|
ldx #<hidden_glen_climb_fence_message
|
|
ldy #>hidden_glen_climb_fence_message
|
|
jmp finish_parse_message
|
|
|
|
|
|
;=================
|
|
; get
|
|
;=================
|
|
|
|
hidden_glen_get:
|
|
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_ARROW
|
|
beq hidden_glen_get_arrow
|
|
|
|
jmp parse_common_get
|
|
|
|
|
|
hidden_glen_get_arrow:
|
|
lda GAME_STATE_0
|
|
and #HALDO_TO_DONGOLEV
|
|
bne hidden_glen_get_arrow_dongolev_gone
|
|
|
|
hidden_glen_get_arrow_dongolev_shooting:
|
|
; walk on over
|
|
ldx #<hidden_glen_active_range_message
|
|
ldy #>hidden_glen_active_range_message
|
|
jsr partial_message_step
|
|
|
|
; this kills you
|
|
lda #LOAD_GAME_OVER
|
|
sta WHICH_LOAD
|
|
|
|
lda #NEW_FROM_DISK
|
|
sta LEVEL_OVER
|
|
|
|
ldx #<hidden_glen_active_range_message2
|
|
ldy #>hidden_glen_active_range_message2
|
|
jsr partial_message_step
|
|
|
|
ldx #<hidden_glen_active_range_message3
|
|
ldy #>hidden_glen_active_range_message3
|
|
jmp finish_parse_message
|
|
|
|
|
|
|
|
hidden_glen_get_arrow_dongolev_gone:
|
|
; see if already have arrow
|
|
lda INVENTORY_1
|
|
and #INV1_ARROW
|
|
beq hidden_glen_yes_get_arrow
|
|
|
|
; see if have arrow but it is gone
|
|
lda INVENTORY_1_GONE
|
|
and #INV1_ARROW
|
|
bne hidden_glen_get_another
|
|
|
|
hidden_glen_all_full_up:
|
|
ldx #<hidden_glen_get_arrow_full_message
|
|
ldy #>hidden_glen_get_arrow_full_message
|
|
jmp finish_parse_message
|
|
|
|
hidden_glen_get_another:
|
|
ldx #<hidden_glen_get_arrow_another_message
|
|
ldy #>hidden_glen_get_arrow_another_message
|
|
jmp finish_parse_message
|
|
|
|
hidden_glen_yes_get_arrow:
|
|
; add 2 points to score
|
|
lda #2
|
|
jsr score_points
|
|
|
|
; get arrow
|
|
lda INVENTORY_1
|
|
ora #INV1_ARROW
|
|
sta INVENTORY_1
|
|
|
|
ldx #<hidden_glen_get_arrow_message
|
|
ldy #>hidden_glen_get_arrow_message
|
|
jmp finish_parse_message
|
|
|
|
|
|
;=================
|
|
; talk
|
|
;=================
|
|
|
|
hidden_glen_talk:
|
|
; only say HALDO. Wastes noun slot
|
|
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_ARCHER
|
|
beq hidden_glen_talk_archer
|
|
cmp #NOUN_DONGOLEV
|
|
beq hidden_glen_talk_archer
|
|
cmp #NOUN_NONE
|
|
beq hidden_glen_talk_archer
|
|
|
|
jmp parse_common_talk
|
|
|
|
hidden_glen_talk_archer:
|
|
|
|
lda GAME_STATE_0
|
|
and #HALDO_TO_DONGOLEV
|
|
beq hidden_glen_talk_archer_there
|
|
|
|
jmp parse_common_talk
|
|
|
|
hidden_glen_talk_archer_there:
|
|
ldx #<hidden_glen_talk_archer_message
|
|
ldy #>hidden_glen_talk_archer_message
|
|
jmp finish_parse_message
|
|
|
|
|
|
;=======================
|
|
;=======================
|
|
;=======================
|
|
; Inside Lady Cottage
|
|
;=======================
|
|
;=======================
|
|
;=======================
|
|
|
|
inside_cottage_verb_table:
|
|
|
|
.byte VERB_LOOK
|
|
.word inside_cottage_look-1
|
|
.byte VERB_TALK
|
|
.word inside_cottage_talk-1
|
|
.byte VERB_GET
|
|
.word inside_cottage_get-1
|
|
.byte VERB_TAKE
|
|
.word inside_cottage_get-1
|
|
.byte VERB_STEAL
|
|
.word inside_cottage_get-1
|
|
.byte VERB_GIVE
|
|
.word inside_cottage_give-1
|
|
.byte VERB_ASK
|
|
.word inside_cottage_ask-1
|
|
.byte VERB_SLEEP
|
|
.word inside_cottage_sleep-1
|
|
.byte 0
|
|
|
|
;=================
|
|
; give
|
|
;=================
|
|
|
|
inside_cottage_give:
|
|
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_RICHES
|
|
beq inside_cottage_give_riches
|
|
cmp #NOUN_TRINKET
|
|
beq inside_cottage_give_trinket
|
|
|
|
lda GAME_STATE_0
|
|
and #LADY_GONE
|
|
bne default_nolady
|
|
|
|
ldx #<inside_cottage_give_default_message
|
|
ldy #>inside_cottage_give_default_message
|
|
jmp finish_parse_message
|
|
|
|
default_nolady:
|
|
jmp parse_common_give
|
|
|
|
inside_cottage_give_riches:
|
|
|
|
lda INVENTORY_2_GONE
|
|
and #INV2_RICHES
|
|
bne inside_cottage_give_riches_already
|
|
|
|
lda INVENTORY_2
|
|
and #INV2_RICHES
|
|
beq inside_cottage_give_riches_notyet
|
|
|
|
; Give the riches
|
|
|
|
ldx #<inside_cottage_give_riches_message
|
|
ldy #>inside_cottage_give_riches_message
|
|
jsr partial_message_step
|
|
|
|
; add 5 points to score
|
|
|
|
lda #5
|
|
jsr score_points
|
|
|
|
; get baby
|
|
|
|
lda INVENTORY_1
|
|
ora #INV1_BABY
|
|
sta INVENTORY_1
|
|
|
|
ldx #<inside_cottage_give_riches2_message
|
|
ldy #>inside_cottage_give_riches2_message
|
|
jmp finish_parse_message
|
|
|
|
|
|
inside_cottage_give_riches_notyet:
|
|
ldx #<inside_cottage_give_riches_notyet_message
|
|
ldy #>inside_cottage_give_riches_notyet_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_give_riches_already:
|
|
ldx #<inside_cottage_give_riches_already_message
|
|
ldy #>inside_cottage_give_riches_already_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_give_trinket:
|
|
|
|
lda INVENTORY_2
|
|
and #INV2_TRINKET
|
|
beq inside_cottage_give_trinket_nothave
|
|
|
|
; Give the trinket
|
|
inside_cottage_give_the_trinket:
|
|
ldx #<inside_cottage_give_trinket_message
|
|
ldy #>inside_cottage_give_trinket_message
|
|
jmp finish_parse_message
|
|
|
|
|
|
inside_cottage_give_trinket_nothave:
|
|
lda GAME_STATE_0
|
|
and #LADY_GONE
|
|
bne inside_cottage_give_trinket_nolady
|
|
|
|
ldx #<inside_cottage_give_trinket_nohave_message
|
|
ldy #>inside_cottage_give_trinket_nohave_message
|
|
jsr partial_message_step
|
|
|
|
|
|
ldx #<inside_cottage_give_trinket_nohave2_message
|
|
ldy #>inside_cottage_give_trinket_nohave2_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_give_trinket_nolady:
|
|
ldx #<inside_cottage_give_trinket_nolady_message
|
|
ldy #>inside_cottage_give_trinket_nolady_message
|
|
jmp finish_parse_message
|
|
|
|
|
|
|
|
;=================
|
|
; get/take/steal
|
|
;=================
|
|
|
|
inside_cottage_get:
|
|
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_FEED
|
|
beq inside_cottage_get_feed
|
|
cmp #NOUN_BABY
|
|
beq inside_cottage_get_baby
|
|
cmp #NOUN_CHAIR
|
|
beq inside_cottage_get_chair
|
|
cmp #NOUN_GOLD
|
|
beq inside_cottage_get_gold
|
|
cmp #NOUN_MONEY
|
|
beq inside_cottage_get_gold
|
|
cmp #NOUN_HAY
|
|
beq inside_cottage_get_hay
|
|
cmp #NOUN_FOOD
|
|
beq inside_cottage_get_food
|
|
cmp #NOUN_STUFF
|
|
beq inside_cottage_get_food
|
|
cmp #NOUN_PILLOW
|
|
beq inside_cottage_get_pillow
|
|
|
|
jmp parse_common_get
|
|
|
|
inside_cottage_get_feed:
|
|
lda INVENTORY_1
|
|
and #INV1_CHICKEN_FEED
|
|
bne inside_cottage_get_feed_already
|
|
|
|
lda INVENTORY_1_GONE
|
|
and #INV1_CHICKEN_FEED
|
|
bne inside_cottage_get_feed_already
|
|
|
|
; get the feed
|
|
lda INVENTORY_1
|
|
ora #INV1_CHICKEN_FEED
|
|
sta INVENTORY_1
|
|
|
|
; add 1 point to score
|
|
|
|
lda #1
|
|
jsr score_points
|
|
|
|
ldx #<inside_cottage_get_feed_message
|
|
ldy #>inside_cottage_get_feed_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_get_feed_already:
|
|
ldx #<inside_cottage_get_feed_already_message
|
|
ldy #>inside_cottage_get_feed_already_message
|
|
jmp finish_parse_message
|
|
|
|
|
|
inside_cottage_get_baby:
|
|
lda GAME_STATE_0
|
|
and #LADY_GONE
|
|
beq inside_cottage_get_baby_notgone
|
|
|
|
jmp parse_common_get
|
|
|
|
inside_cottage_get_baby_notgone:
|
|
|
|
ldx #<inside_cottage_get_baby_message
|
|
ldy #>inside_cottage_get_baby_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_get_chair:
|
|
lda GAME_STATE_0
|
|
and #LADY_GONE
|
|
beq inside_cottage_get_chair_notgone
|
|
|
|
ldx #<inside_cottage_get_chair_gone_message
|
|
ldy #>inside_cottage_get_chair_gone_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_get_chair_notgone:
|
|
|
|
ldx #<inside_cottage_get_chair_message
|
|
ldy #>inside_cottage_get_chair_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_get_gold:
|
|
ldx #<inside_cottage_get_gold_message
|
|
ldy #>inside_cottage_get_gold_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_get_hay:
|
|
ldx #<inside_cottage_get_hay_message
|
|
ldy #>inside_cottage_get_hay_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_get_food:
|
|
ldx #<inside_cottage_get_food_message
|
|
ldy #>inside_cottage_get_food_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_get_pillow:
|
|
ldx #<inside_cottage_get_pillow_message
|
|
ldy #>inside_cottage_get_pillow_message
|
|
jmp finish_parse_message
|
|
|
|
|
|
;=================
|
|
; talk
|
|
;=================
|
|
|
|
inside_cottage_talk:
|
|
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_BABY
|
|
beq inside_cottage_talk_baby
|
|
cmp #NOUN_PEASANT
|
|
beq inside_cottage_talk_lady
|
|
cmp #NOUN_LADY
|
|
beq inside_cottage_talk_lady
|
|
cmp #NOUN_WOMAN
|
|
beq inside_cottage_talk_lady
|
|
cmp #NOUN_NONE
|
|
beq inside_cottage_talk_lady
|
|
|
|
jmp parse_common_talk
|
|
|
|
inside_cottage_talk_lady:
|
|
lda GAME_STATE_0
|
|
and #LADY_GONE
|
|
bne inside_cottage_look_at_lady_gone
|
|
|
|
ldx #<inside_cottage_talk_lady_message
|
|
ldy #>inside_cottage_talk_lady_message
|
|
jsr partial_message_step
|
|
|
|
ldx #<inside_cottage_talk_lady2_message
|
|
ldy #>inside_cottage_talk_lady2_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_talk_lady_gone:
|
|
ldx #<inside_cottage_talk_lady_gone_message
|
|
ldy #>inside_cottage_talk_lady_gone_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_talk_baby:
|
|
ldx #<inside_cottage_talk_baby_message
|
|
ldy #>inside_cottage_talk_baby_message
|
|
jmp finish_parse_message
|
|
|
|
;=================
|
|
; look
|
|
;=================
|
|
|
|
inside_cottage_look:
|
|
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_BABY
|
|
beq inside_cottage_look_at_baby
|
|
cmp #NOUN_CHAIR
|
|
beq inside_cottage_look_at_chair
|
|
cmp #NOUN_FEED
|
|
beq inside_cottage_look_at_feed
|
|
cmp #NOUN_HAY
|
|
beq inside_cottage_look_at_hay
|
|
cmp #NOUN_PEASANT
|
|
beq inside_cottage_look_at_lady
|
|
cmp #NOUN_LADY
|
|
beq inside_cottage_look_at_lady
|
|
cmp #NOUN_WOMAN
|
|
beq inside_cottage_look_at_lady
|
|
cmp #NOUN_PILLOW
|
|
beq inside_cottage_look_at_pillow
|
|
cmp #NOUN_SHELF
|
|
beq inside_cottage_look_at_shelf
|
|
|
|
cmp #NOUN_NONE
|
|
beq inside_cottage_look_at
|
|
|
|
jmp parse_common_look
|
|
|
|
inside_cottage_look_at_shelf:
|
|
ldx #<inside_cottage_look_at_shelf_message
|
|
ldy #>inside_cottage_look_at_shelf_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_look_at_pillow:
|
|
ldx #<inside_cottage_look_at_pillow_message
|
|
ldy #>inside_cottage_look_at_pillow_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_look_at_lady:
|
|
lda GAME_STATE_0
|
|
and #LADY_GONE
|
|
bne inside_cottage_look_at_lady_gone
|
|
|
|
ldx #<inside_cottage_look_at_lady_message
|
|
ldy #>inside_cottage_look_at_lady_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_look_at_lady_gone:
|
|
ldx #<inside_cottage_look_at_lady_gone_message
|
|
ldy #>inside_cottage_look_at_lady_gone_message
|
|
|
|
jsr partial_message_step
|
|
|
|
ldx #<inside_cottage_look_at_lady_gone2_message
|
|
ldy #>inside_cottage_look_at_lady_gone2_message
|
|
|
|
jmp finish_parse_message
|
|
|
|
|
|
inside_cottage_look_at_hay:
|
|
ldx #<inside_cottage_look_at_hay_message
|
|
ldy #>inside_cottage_look_at_hay_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_look_at_feed:
|
|
ldx #<inside_cottage_look_at_feed_message
|
|
ldy #>inside_cottage_look_at_feed_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_look_at_chair:
|
|
ldx #<inside_cottage_look_at_chair_message
|
|
ldy #>inside_cottage_look_at_chair_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_look_at_baby:
|
|
lda GAME_STATE_0
|
|
and #LADY_GONE
|
|
beq inside_cottage_look_at_baby_there
|
|
|
|
; if baby/lady gone, call common code
|
|
jmp parse_common_look
|
|
|
|
inside_cottage_look_at_baby_there:
|
|
|
|
ldx #<inside_cottage_look_at_baby_message
|
|
ldy #>inside_cottage_look_at_baby_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_look_at:
|
|
lda GAME_STATE_0
|
|
and #LADY_GONE
|
|
bne inside_cottage_look_at_gone
|
|
|
|
ldx #<inside_cottage_look_at_message
|
|
ldy #>inside_cottage_look_at_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_look_at_gone:
|
|
ldx #<inside_cottage_look_at_gone_message
|
|
ldy #>inside_cottage_look_at_gone_message
|
|
jmp finish_parse_message
|
|
|
|
|
|
;=================
|
|
; ask about
|
|
;=================
|
|
|
|
inside_cottage_ask:
|
|
|
|
lda GAME_STATE_0
|
|
and #LADY_GONE
|
|
beq inside_cottage_ask_lady
|
|
|
|
jmp parse_common_ask
|
|
|
|
inside_cottage_ask_lady:
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_BABY
|
|
beq inside_cottage_ask_baby
|
|
cmp #NOUN_FIRE
|
|
beq inside_cottage_ask_fire
|
|
cmp #NOUN_JHONKA
|
|
beq inside_cottage_ask_jhonka
|
|
cmp #NOUN_NED
|
|
beq inside_cottage_ask_ned
|
|
cmp #NOUN_ROBE
|
|
beq inside_cottage_ask_robe
|
|
cmp #NOUN_SMELL
|
|
beq inside_cottage_ask_smell
|
|
cmp #NOUN_TROGDOR
|
|
beq inside_cottage_ask_trogdor
|
|
|
|
ldx #<inside_cottage_ask_unknown_message
|
|
ldy #>inside_cottage_ask_unknown_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_ask_baby:
|
|
ldx #<inside_cottage_ask_baby_message
|
|
ldy #>inside_cottage_ask_baby_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_ask_fire:
|
|
ldx #<inside_cottage_ask_fire_message
|
|
ldy #>inside_cottage_ask_fire_message
|
|
jsr partial_message_step
|
|
|
|
ldx #<inside_cottage_ask_fire2_message
|
|
ldy #>inside_cottage_ask_fire2_message
|
|
jsr partial_message_step
|
|
|
|
ldx #<inside_cottage_ask_fire3_message
|
|
ldy #>inside_cottage_ask_fire3_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_ask_jhonka:
|
|
ldx #<inside_cottage_ask_jhonka_message
|
|
ldy #>inside_cottage_ask_jhonka_message
|
|
jsr partial_message_step
|
|
|
|
ldx #<inside_cottage_ask_jhonka2_message
|
|
ldy #>inside_cottage_ask_jhonka2_message
|
|
jsr partial_message_step
|
|
|
|
ldx #<inside_cottage_ask_jhonka3_message
|
|
ldy #>inside_cottage_ask_jhonka3_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_ask_ned:
|
|
ldx #<inside_cottage_ask_ned_message
|
|
ldy #>inside_cottage_ask_ned_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_ask_robe:
|
|
ldx #<inside_cottage_ask_robe_message
|
|
ldy #>inside_cottage_ask_robe_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_ask_smell:
|
|
ldx #<inside_cottage_ask_smell_message
|
|
ldy #>inside_cottage_ask_smell_message
|
|
jsr partial_message_step
|
|
|
|
ldx #<inside_cottage_ask_smell2_message
|
|
ldy #>inside_cottage_ask_smell2_message
|
|
jmp finish_parse_message
|
|
|
|
inside_cottage_ask_trogdor:
|
|
ldx #<inside_cottage_ask_trogdor_message
|
|
ldy #>inside_cottage_ask_trogdor_message
|
|
jmp finish_parse_message
|
|
|
|
;=================
|
|
; sleep
|
|
;=================
|
|
|
|
inside_cottage_sleep:
|
|
ldx #<inside_cottage_sleep_message
|
|
ldy #>inside_cottage_sleep_message
|
|
jmp finish_parse_message
|
|
|
|
;=======================
|
|
;=======================
|
|
;=======================
|
|
; Inside Ned Cottage
|
|
;=======================
|
|
;=======================
|
|
;=======================
|
|
|
|
inside_nn_verb_table:
|
|
.byte VERB_LOOK
|
|
.word inside_nn_look-1
|
|
.byte VERB_OPEN
|
|
.word inside_nn_open-1
|
|
.byte VERB_CLOSE
|
|
.word inside_nn_close-1
|
|
.byte VERB_GET
|
|
.word inside_nn_get-1
|
|
.byte VERB_TAKE
|
|
.word inside_nn_take-1
|
|
.byte VERB_STEAL
|
|
.word inside_nn_steal-1
|
|
.byte 0
|
|
|
|
;================
|
|
; get
|
|
;================
|
|
inside_nn_get:
|
|
inside_nn_steal:
|
|
inside_nn_take:
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_ROBE
|
|
beq inside_nn_get_robe
|
|
cmp #NOUN_DRESSER
|
|
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
|
|
|
|
jmp parse_common_get
|
|
|
|
inside_nn_get_robe:
|
|
; first see if drawer closed
|
|
|
|
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
|
|
|
|
inside_nn_get_robe_drawer_closed:
|
|
ldx #<inside_nn_get_robe_drawer_closed_message
|
|
ldy #>inside_nn_get_robe_drawer_closed_message
|
|
jmp finish_parse_message
|
|
|
|
|
|
inside_nn_actually_get_robe:
|
|
|
|
; get 10 pts
|
|
|
|
lda #$10
|
|
jsr score_points
|
|
|
|
; get robe
|
|
|
|
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
|
|
;=================
|
|
|
|
inside_nn_look:
|
|
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_BROOM
|
|
beq inside_nn_look_broom
|
|
cmp #NOUN_DRAWER
|
|
beq inside_nn_look_drawer
|
|
cmp #NOUN_DRESSER
|
|
beq inside_nn_look_dresser
|
|
|
|
cmp #NOUN_NONE
|
|
beq inside_nn_look_at
|
|
|
|
jmp parse_common_look
|
|
|
|
inside_nn_look_at:
|
|
ldx #<inside_nn_look_at_message
|
|
ldy #>inside_nn_look_at_message
|
|
jmp finish_parse_message
|
|
|
|
inside_nn_look_broom:
|
|
ldx #<inside_nn_look_brook_message
|
|
ldy #>inside_nn_look_brook_message
|
|
jmp finish_parse_message
|
|
|
|
inside_nn_look_dresser:
|
|
inside_nn_look_drawer:
|
|
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
|
|
|
|
inside_nn_look_drawer_open:
|
|
lda INVENTORY_2
|
|
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
|
|
|
|
inside_nn_look_drawer_open_norobe:
|
|
ldx #<inside_nn_look_norobe_drawer_message
|
|
ldy #>inside_nn_look_norobe_drawer_message
|
|
jmp finish_parse_message
|
|
|
|
|
|
|
|
;================
|
|
; open
|
|
;================
|
|
inside_nn_open:
|
|
lda CURRENT_NOUN
|
|
|
|
cmp #NOUN_DRAWER
|
|
beq inside_nn_open_drawer
|
|
cmp #NOUN_DRESSER
|
|
beq inside_nn_open_drawer
|
|
|
|
jmp parse_common_unknown
|
|
|
|
inside_nn_open_drawer:
|
|
; first check to see if it's already open
|
|
|
|
lda GAME_STATE_2
|
|
and #DRESSER_OPEN
|
|
bne inside_nn_open_drawer_already_open
|
|
|
|
; see if robe has been taken
|
|
|
|
lda INVENTORY_2
|
|
and #INV2_ROBE
|
|
beq inside_nn_open_drawer_closed_full
|
|
|
|
inside_nn_open_drawer_closed_empty:
|
|
ldx #<inside_nn_open_empty_drawer_message
|
|
ldy #>inside_nn_open_empty_drawer_message
|
|
jmp finish_parse_message
|
|
|
|
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"
|