dos33fsprogs/games/peasant/inn_actions.s
2021-10-28 23:31:08 -04:00

415 lines
7.6 KiB
ArmAsm

.include "tokens.inc"
;=======================
;=======================
;=======================
; Inside Inn
;=======================
;=======================
;=======================
inside_inn_verb_table:
.byte VERB_LOOK
.word inside_inn_look-1
.byte VERB_TALK
.word inside_inn_talk-1
.byte VERB_GIVE
.word inside_inn_give-1
.byte VERB_USE
.word inside_inn_give-1
.byte VERB_GET
.word inside_inn_get-1
.byte VERB_ASK
.word inside_inn_ask-1
.byte VERB_RING
.word inside_inn_ring-1
.byte VERB_SLEEP
.word inside_inn_sleep-1
.byte VERB_OPEN
.word inside_inn_open-1
.byte 0
;=================
; look
;=================
inside_inn_look:
lda CURRENT_NOUN
cmp #NOUN_PILLOW
beq inn_look_at_pillow
cmp #NOUN_NOTE
beq inn_look_at_paper
cmp #NOUN_PAPER
beq inn_look_at_paper
cmp #NOUN_PAINTING
beq inn_look_at_painting
cmp #NOUN_DUDE
beq inn_look_at_man
cmp #NOUN_GUY
beq inn_look_at_man
cmp #NOUN_MAN
beq inn_look_at_man
cmp #NOUN_WINDOW
beq inn_look_at_window
cmp #NOUN_PILLOW
beq inn_look_at_pillow
cmp #NOUN_RUG
beq inn_look_at_rug
cmp #NOUN_CARPET
beq inn_look_at_rug
cmp #NOUN_BED
beq inn_look_at_bed
cmp #NOUN_MATTRESS
beq inn_look_at_bed
cmp #NOUN_BELL
beq inn_look_at_bell
cmp #NOUN_DESK
beq inn_look_at_desk
cmp #NOUN_NONE
beq inn_look_at
jmp parse_common_look
inn_look_at:
ldx #<inside_inn_look_message
ldy #>inside_inn_look_message
jmp finish_parse_message
inn_look_at_window:
ldx #<inside_inn_look_window_message
ldy #>inside_inn_look_window_message
jmp finish_parse_message
inn_look_at_man:
ldx #<inside_inn_look_man_message
ldy #>inside_inn_look_man_message
jmp finish_parse_message
inn_look_at_painting:
ldx #<inside_inn_look_painting_message
ldy #>inside_inn_look_painting_message
jmp finish_parse_message
inn_look_at_paper:
ldx #<inside_inn_look_paper_message
ldy #>inside_inn_look_paper_message
jmp finish_parse_message
inn_look_at_pillow:
ldx #<inside_inn_look_pillow_message
ldy #>inside_inn_look_pillow_message
jmp finish_parse_message
inn_look_at_rug:
ldx #<inside_inn_look_rug_message
ldy #>inside_inn_look_rug_message
jmp finish_parse_message
inn_look_at_bed:
ldx #<inside_inn_look_bed_message
ldy #>inside_inn_look_bed_message
jmp finish_parse_message
inn_look_at_bell:
ldx #<inside_inn_look_bell_message
ldy #>inside_inn_look_bell_message
jmp finish_parse_message
inn_look_at_desk:
ldx #<inside_inn_look_desk_message
ldy #>inside_inn_look_desk_message
jmp finish_parse_message
;=================
; talk
;=================
inside_inn_talk:
lda CURRENT_NOUN
cmp #NOUN_NONE
beq inn_talk_man
cmp #NOUN_MAN
beq inn_talk_man
cmp #NOUN_GUY
beq inn_talk_man
cmp #NOUN_DUDE
beq inn_talk_man
jmp parse_common_talk
inn_talk_man:
ldx #<inside_inn_talk_man_message
ldy #>inside_inn_talk_man_message
jmp finish_parse_message
;=================
; give
;=================
inside_inn_give:
lda CURRENT_NOUN
cmp #NOUN_BABY
beq inn_give_baby
jmp parse_common_give
inn_give_baby:
lda INVENTORY_1
and #INV1_PILLS ; check if have pills
bne inn_give_baby_have_pills
lda INVENTORY_1
and #INV1_BABY
bne inn_give_baby_have_baby
inn_give_baby_no_baby:
ldx #<inside_inn_give_baby_before_message
ldy #>inside_inn_give_baby_before_message
jmp finish_parse_message
inn_give_baby_have_baby:
ldx #<inside_inn_give_baby_message
ldy #>inside_inn_give_baby_message
jsr partial_message_step
; add 5 points to score
lda #5
jsr score_points
; get pills
lda INVENTORY_1
ora #INV1_PILLS
sta INVENTORY_1
ldx #<inside_inn_give_baby2_message
ldy #>inside_inn_give_baby2_message
jmp finish_parse_message
inn_give_baby_have_pills:
ldx #<inside_inn_give_baby_already_message
ldy #>inside_inn_give_baby_already_message
jmp finish_parse_message
;=================
; get
;=================
inside_inn_get:
lda CURRENT_NOUN
cmp #NOUN_ROOM
beq inn_get_room
cmp #NOUN_PAPER
beq inn_get_paper
cmp #NOUN_NOTE
beq inn_get_paper
cmp #NOUN_PARCHMENT
beq inn_get_paper
cmp #NOUN_PAINTING
beq inn_get_painting
cmp #NOUN_RUG
beq inn_get_rug
cmp #NOUN_CARPET
beq inn_get_rug
cmp #NOUN_DOING_SPROINGS
beq inn_get_doing
cmp #NOUN_PILLOW
beq inn_get_pillow
cmp #NOUN_BELL
beq inn_get_bell
cmp #NOUN_BED
beq inn_get_bed
jmp parse_common_get
inn_get_room:
lda INVENTORY_2
and #INV2_ROBE ; check if have robe
bne inn_get_room_have_robe
inn_get_room_no_robe:
ldx #<inside_inn_get_room_no_robe_message
ldy #>inside_inn_get_room_no_robe_message
jmp finish_parse_message
inn_get_room_have_robe:
ldx #<inside_inn_get_room_message
ldy #>inside_inn_get_room_message
jsr partial_message_step
; add 3 points to score
lda #3
jsr score_points
ldx #<inside_inn_get_room2_message
ldy #>inside_inn_get_room2_message
jsr partial_message_step
ldx #<inside_inn_get_room3_message
ldy #>inside_inn_get_room3_message
jmp finish_parse_message
inn_get_paper:
ldx #<inside_inn_get_paper_message
ldy #>inside_inn_get_paper_message
jmp finish_parse_message
inn_get_painting:
ldx #<inside_inn_get_painting_message
ldy #>inside_inn_get_painting_message
jmp finish_parse_message
inn_get_rug:
ldx #<inside_inn_get_rug_message
ldy #>inside_inn_get_rug_message
jmp finish_parse_message
inn_get_doing:
ldx #<inside_inn_get_doing_message
ldy #>inside_inn_get_doing_message
jmp finish_parse_message
inn_get_pillow:
ldx #<inside_inn_get_pillow_message
ldy #>inside_inn_get_pillow_message
jmp finish_parse_message
inn_get_bell:
ldx #<inside_inn_get_bell_message
ldy #>inside_inn_get_bell_message
jmp finish_parse_message
inn_get_bed:
ldx #<inside_inn_get_bed_message
ldy #>inside_inn_get_bed_message
jmp finish_parse_message
;=================
; ask about
;=================
inside_inn_ask:
lda CURRENT_NOUN
cmp #NOUN_FIRE
beq inn_ask_about_fire
cmp #NOUN_NED
beq inn_ask_about_ned
cmp #NOUN_ROBE
beq inn_ask_about_robe
cmp #NOUN_SMELL
beq inn_ask_about_smell
cmp #NOUN_TROGDOR
beq inn_ask_about_trogdor
inn_ask_about_unknown:
ldx #<inside_inn_ask_about_unknown_message
ldy #>inside_inn_ask_about_unknown_message
jmp finish_parse_message
inn_ask_about_fire:
ldx #<inside_inn_ask_about_fire_message
ldy #>inside_inn_ask_about_fire_message
jmp finish_parse_message
inn_ask_about_ned:
ldx #<inside_inn_ask_about_ned_message
ldy #>inside_inn_ask_about_ned_message
jmp finish_parse_message
inn_ask_about_robe:
ldx #<inside_inn_ask_about_robe_message
ldy #>inside_inn_ask_about_robe_message
jmp finish_parse_message
inn_ask_about_smell:
ldx #<inside_inn_ask_about_smell_message
ldy #>inside_inn_ask_about_smell_message
jmp finish_parse_message
inn_ask_about_trogdor:
ldx #<inside_inn_ask_about_trogdor_message
ldy #>inside_inn_ask_about_trogdor_message
jmp finish_parse_message
;=================
; ring
;=================
inside_inn_ring:
lda CURRENT_NOUN
cmp #NOUN_BELL
beq inn_ring_bell
jmp parse_common_unknown
inn_ring_bell:
ldx #<inside_inn_ring_bell_message
ldy #>inside_inn_ring_bell_message
jmp finish_parse_message
;=================
; sleep
;=================
inside_inn_sleep:
lda CURRENT_NOUN
cmp #NOUN_BED
beq inn_sleep_bed
cmp #NOUN_NONE
beq inn_sleep_bed
jmp parse_common_unknown
inn_sleep_bed:
ldx #<inside_inn_sleep_bed_message
ldy #>inside_inn_sleep_bed_message
jmp finish_parse_message
;=================
; open
;=================
inside_inn_open:
lda CURRENT_NOUN
cmp #NOUN_DOOR
beq inn_open_door
jmp parse_common_unknown
inn_open_door:
ldx #<inside_inn_open_door_message
ldy #>inside_inn_open_door_message
jmp finish_parse_message
.include "dialog_inn.inc"