dos33fsprogs/games/peasant/peasant2_actions.s

1183 lines
21 KiB
ArmAsm
Raw Normal View History

.include "tokens.inc"
2021-10-20 04:47:40 +00:00
;=======================
;=======================
;=======================
2021-10-20 17:34:59 +00:00
; That Hay Bale
;=======================
;=======================
;=======================
hay_bale_verb_table:
.byte VERB_ENTER
.word hay_bale_enter-1
.byte VERB_GET
.word hay_bale_get-1
.byte VERB_JUMP
.word hay_bale_jump-1
.byte VERB_HIDE
.word hay_bale_hide-1
.byte VERB_HUG
.word hay_bale_hug-1
.byte VERB_LOOK
.word hay_bale_look-1
.byte VERB_STEAL
.word hay_bale_steal-1
.byte VERB_TAKE
.word hay_bale_take-1
.byte VERB_CLIMB
.word hay_bale_climb-1
.byte 0
;================
; get
;================
hay_bale_get:
hay_bale_steal:
hay_bale_take:
lda CURRENT_NOUN
cmp #NOUN_HAY
beq hay_get_hay
; else "probably wish" message
jmp parse_common_get
hay_get_hay:
ldx #<hay_get_hay_message
ldy #>hay_get_hay_message
jmp finish_parse_message
;=================
; look
;=================
hay_bale_look:
2021-12-06 03:57:18 +00:00
; first check if in hay
2021-12-06 03:57:18 +00:00
lda GAME_STATE_1
and #IN_HAY_BALE
beq not_in_hay_bale
ldx #<hay_look_while_in_hay_message
ldy #>hay_look_while_in_hay_message
jmp finish_parse_message
not_in_hay_bale:
lda CURRENT_NOUN
cmp #NOUN_HAY
beq hay_look_at_hay
cmp #NOUN_IN_HAY
beq hay_look_in_hay
cmp #NOUN_TREE
beq hay_look_at_tree
cmp #NOUN_FENCE
beq hay_look_at_fence
cmp #NOUN_NONE
beq hay_look_at
jmp parse_common_look
hay_look_at:
ldx #<hay_look_message
ldy #>hay_look_message
jmp finish_parse_message
hay_look_at_hay:
ldx #<hay_look_at_hay_message
ldy #>hay_look_at_hay_message
jmp finish_parse_message
hay_look_in_hay:
ldx #<hay_look_in_hay_message
ldy #>hay_look_in_hay_message
jmp finish_parse_message
hay_look_at_tree:
ldx #<hay_look_at_tree_message
ldy #>hay_look_at_tree_message
jmp finish_parse_message
hay_look_at_fence:
ldx #<hay_look_at_fence_message
ldy #>hay_look_at_fence_message
jmp finish_parse_message
;================
; climb
;================
hay_bale_climb:
lda CURRENT_NOUN
cmp #NOUN_FENCE
beq hay_climb_fence
jmp parse_common_unknown
hay_climb_fence:
ldx #<hay_climb_fence_message
ldy #>hay_climb_fence_message
jmp finish_parse_message
;===================
; enter hay
;===================
hay_bale_enter:
hay_bale_jump:
hay_bale_hide:
lda CURRENT_NOUN
cmp #NOUN_FENCE
beq hay_climb_fence
cmp #NOUN_HAY
beq enter_hay
jmp parse_common_unknown
enter_hay:
2021-11-02 04:22:21 +00:00
lda GAME_STATE_2
and #COVERED_IN_MUD
beq enter_hay_no_mud
enter_hay_muddy:
; check if in range
lda PEASANT_X
cmp #15
bcs really_enter_hay_muddy
enter_hay_too_far:
ldx #<hay_enter_hay_clean_message
ldy #>hay_enter_hay_clean_message
jmp finish_parse_message
really_enter_hay_muddy:
ldx #<hay_enter_hay_muddy_message
ldy #>hay_enter_hay_muddy_message
jsr partial_message_step
; add 3 points to score
lda #3
jsr score_points
; get in hay
lda GAME_STATE_1
ora #IN_HAY_BALE
2021-11-02 04:22:21 +00:00
sta GAME_STATE_1
ldx #<hay_enter_hay_muddy_message2
ldy #>hay_enter_hay_muddy_message2
jmp finish_parse_message
enter_hay_no_mud:
ldx #<hay_enter_hay_clean_message
ldy #>hay_enter_hay_clean_message
jmp finish_parse_message
;===================
; hug tree
;===================
hay_bale_hug:
lda CURRENT_NOUN
cmp #NOUN_TREE
beq hug_tree
jmp parse_common_unknown
hug_tree:
ldx #<hay_hug_tree_message
ldy #>hay_hug_tree_message
jmp finish_parse_message
2021-10-20 04:47:40 +00:00
2021-10-20 17:34:59 +00:00
;=======================
;=======================
;=======================
; Puddle
;=======================
;=======================
;=======================
puddle_verb_table:
.byte VERB_GET
.word puddle_get-1
.byte VERB_TAKE
.word puddle_take-1
.byte VERB_STEAL
.word puddle_steal-1
.byte VERB_LOOK
.word puddle_look-1
.byte 0
;================
; get
;================
puddle_get:
puddle_steal:
puddle_take:
lda CURRENT_NOUN
cmp #NOUN_ROCK
beq puddle_get_rock
cmp #NOUN_STONE
beq puddle_get_rock
2021-11-02 04:58:20 +00:00
cmp #NOUN_MUD
beq puddle_get_mud
cmp #NOUN_PUDDLE
beq puddle_get_mud
2021-10-20 17:34:59 +00:00
; else "probably wish" message
jmp parse_common_get
puddle_get_rock:
ldx #<puddle_get_rock_message
ldy #>puddle_get_rock_message
jmp finish_parse_message
2021-11-02 04:58:20 +00:00
puddle_get_mud:
lda GAME_STATE_1
and #PUDDLE_WET
bne puddle_get_mud_wet
jmp parse_common_get
puddle_get_mud_wet:
lda GAME_STATE_2
and #COVERED_IN_MUD
bne puddle_get_mud_wet_dirty
puddle_get_mud_wet_clean:
ldx #<puddle_get_mud_wet_clean_message
ldy #>puddle_get_mud_wet_clean_message
jmp finish_parse_message
puddle_get_mud_wet_dirty:
ldx #<puddle_get_mud_wet_dirty_message
ldy #>puddle_get_mud_wet_dirty_message
jmp finish_parse_message
2021-10-20 17:34:59 +00:00
;=================
; look
;=================
puddle_look:
lda CURRENT_NOUN
cmp #NOUN_ROCK
beq puddle_look_at_rock
cmp #NOUN_STONE
beq puddle_look_at_rock
cmp #NOUN_MUD
beq puddle_look_at_mud
cmp #NOUN_PUDDLE
beq puddle_look_at_mud
cmp #NOUN_NONE
beq puddle_look_at
jmp parse_common_look
puddle_look_at:
2021-11-02 04:58:20 +00:00
lda GAME_STATE_1
and #PUDDLE_WET
bne puddle_look_at_wet
puddle_look_at_dry:
ldx #<puddle_look_at_dry_message
ldy #>puddle_look_at_dry_message
jmp finish_parse_message
puddle_look_at_wet:
ldx #<puddle_look_at_wet_message
ldy #>puddle_look_at_wet_message
2021-10-20 17:34:59 +00:00
jmp finish_parse_message
puddle_look_at_mud:
2021-11-02 04:58:20 +00:00
lda GAME_STATE_1
and #PUDDLE_WET
bne puddle_look_at_mud_wet
puddle_look_at_mud_dry:
ldx #<puddle_look_mud_dry_message
ldy #>puddle_look_mud_dry_message
jmp finish_parse_message
puddle_look_at_mud_wet:
ldx #<puddle_look_mud_wet_message
ldy #>puddle_look_mud_wet_message
2021-10-20 17:34:59 +00:00
jmp finish_parse_message
puddle_look_at_rock:
ldx #<puddle_get_rock_message
ldy #>puddle_get_rock_message
jmp finish_parse_message
2021-10-20 20:37:54 +00:00
;=======================
;=======================
;=======================
; Archery
;=======================
;=======================
;=======================
archery_verb_table:
.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
.word archery_look-1
.byte VERB_PLAY
.word archery_play-1
.byte VERB_STEAL
.word archery_steal-1
.byte VERB_TALK
.word archery_talk-1
.byte VERB_TAKE
.word archery_take-1
.byte 0
;================
; ask
;================
archery_ask:
2021-11-03 04:53:24 +00:00
lda GAME_STATE_0
and #HALDO_TO_DONGOLEV
bne archery_ask_after_haldo
2021-10-20 20:37:54 +00:00
jmp parse_common_ask
2021-11-03 04:53:24 +00:00
archery_ask_after_haldo:
lda CURRENT_NOUN
cmp #NOUN_FIRE
beq archery_ask_about_fire
cmp #NOUN_NED
beq archery_ask_about_ned
cmp #NOUN_SMELL
beq archery_ask_about_smell
cmp #NOUN_ROBE
beq archery_ask_about_robe
cmp #NOUN_TROGDOR
beq archery_ask_about_trogdor
archery_ask_about_unknown:
ldx #<archery_ask_about_unknown_message
ldy #>archery_ask_about_unknown_message
jmp finish_parse_message
archery_ask_about_fire:
ldx #<archery_ask_about_fire_message
ldy #>archery_ask_about_fire_message
jsr partial_message_step
ldx #<archery_ask_about_fire_message2
ldy #>archery_ask_about_fire_message2
jsr partial_message_step
ldx #<archery_ask_about_fire_message3
ldy #>archery_ask_about_fire_message3
jsr partial_message_step
ldx #<archery_ask_about_fire_message4
ldy #>archery_ask_about_fire_message4
jmp finish_parse_message
archery_ask_about_ned:
ldx #<archery_ask_about_ned_message
ldy #>archery_ask_about_ned_message
jmp finish_parse_message
archery_ask_about_robe:
ldx #<archery_ask_about_robe_message
ldy #>archery_ask_about_robe_message
jmp finish_parse_message
archery_ask_about_smell:
ldx #<archery_ask_about_smell_message
ldy #>archery_ask_about_smell_message
jmp finish_parse_message
archery_ask_about_trogdor:
ldx #<archery_ask_about_trogdor_message
ldy #>archery_ask_about_trogdor_message
jsr partial_message_step
ldx #<archery_ask_about_trogdor_message2
ldy #>archery_ask_about_trogdor_message2
jsr partial_message_step
ldx #<archery_ask_about_trogdor_message3
ldy #>archery_ask_about_trogdor_message3
jsr partial_message_step
ldx #<archery_ask_about_trogdor_message4
ldy #>archery_ask_about_trogdor_message4
jsr partial_message_step
ldx #<archery_ask_about_trogdor_message5
ldy #>archery_ask_about_trogdor_message5
jsr partial_message_step
ldx #<archery_ask_about_trogdor_message6
ldy #>archery_ask_about_trogdor_message6
jmp finish_parse_message
2021-10-20 20:37:54 +00:00
;================
; get
;================
archery_get:
archery_steal:
archery_take:
lda CURRENT_NOUN
cmp #NOUN_TARGET
beq archery_get_target
cmp #NOUN_ARROW
beq archery_get_arrow
; else "probably wish" message
jmp parse_common_get
archery_get_target:
ldx #<archery_get_target_message
ldy #>archery_get_target_message
jmp finish_parse_message
archery_get_arrow:
ldx #<archery_get_arrow_message
ldy #>archery_get_arrow_message
jmp finish_parse_message
;================
; give
;================
archery_give:
2021-11-18 05:49:27 +00:00
lda CURRENT_NOUN
cmp #NOUN_TRINKET
beq archery_give_trinket
jmp parse_common_give
archery_give_trinket:
; only if dongolev there
lda GAME_STATE_0
and #HALDO_TO_DONGOLEV
beq archery_no_give
2021-10-20 20:37:54 +00:00
; check if already gave it
2021-11-18 05:49:27 +00:00
lda GAME_STATE_0
and #TRINKET_GIVEN
bne archery_give_trinket_again
; be sure we have it
2021-11-18 05:49:27 +00:00
lda INVENTORY_2
and #INV2_TRINKET
bne archery_give_trinket_first
; otherwise, default
archery_no_give:
2021-10-20 20:37:54 +00:00
jmp parse_common_give
2021-11-18 05:49:27 +00:00
archery_give_trinket_first:
; score 2 points
lda #2
jsr score_points
; set trinket given game state
lda GAME_STATE_0
ora #TRINKET_GIVEN
sta GAME_STATE_0
; mark us no longer having it
lda INVENTORY_2_GONE
ora #INV2_TRINKET
sta INVENTORY_2_GONE
2021-11-18 05:49:27 +00:00
ldx #<archery_give_trinket_message
ldy #>archery_give_trinket_message
jsr partial_message_step
jmp archery_play_game2
2021-11-18 05:49:27 +00:00
archery_give_trinket_again:
ldx #<archery_give_trinket_again_message
ldy #>archery_give_trinket_again_message
jmp finish_parse_message
2021-10-20 20:37:54 +00:00
;================
; haldo
;================
archery_haldo:
2021-11-19 02:42:29 +00:00
lda GAME_STATE_0
and #HALDO_TO_DONGOLEV
bne archery_haldo_after_haldo
2021-10-20 20:37:54 +00:00
jmp parse_common_haldo
2021-11-19 02:42:29 +00:00
archery_haldo_after_haldo:
ldx #<archery_haldo_message
ldy #>archery_haldo_message
jmp finish_parse_message
2021-10-20 20:37:54 +00:00
;=================
; look
;=================
archery_look:
lda CURRENT_NOUN
cmp #NOUN_DESK
beq archery_look_at_desk
cmp #NOUN_TARGET
beq archery_look_at_target
cmp #NOUN_ARCHER
beq archery_look_at_archer
cmp #NOUN_NONE
beq archery_look_at
jmp parse_common_look
archery_look_at:
ldx #<archery_look_message
ldy #>archery_look_message
jmp finish_parse_message
archery_look_at_archer:
2021-11-03 04:53:24 +00:00
; first check if we've talked to mendelev
lda GAME_STATE_0
and #TALKED_TO_MENDELEV
beq archery_look_at_archer_before
lda GAME_STATE_0
and #HALDO_TO_DONGOLEV
beq archery_look_at_archer_after
archery_look_at_otherwise:
ldx #<archery_look_at_archer_otherwise_message
ldy #>archery_look_at_archer_otherwise_message
jmp finish_parse_message
archery_look_at_archer_before:
2021-10-20 20:37:54 +00:00
ldx #<archery_look_at_archer_message
ldy #>archery_look_at_archer_message
jmp finish_parse_message
2021-11-03 04:53:24 +00:00
archery_look_at_archer_after:
ldx #<archery_look_at_archer_sponge_message
ldy #>archery_look_at_archer_sponge_message
jmp finish_parse_message
2021-10-20 20:37:54 +00:00
archery_look_at_target:
ldx #<archery_look_at_target_message
ldy #>archery_look_at_target_message
jmp finish_parse_message
archery_look_at_desk:
ldx #<archery_look_at_desk_message
ldy #>archery_look_at_desk_message
jmp finish_parse_message
;================
; play
;================
archery_play:
lda CURRENT_NOUN
cmp #NOUN_GAME
2021-11-19 02:42:29 +00:00
beq archery_check_play_game
2021-10-20 20:37:54 +00:00
jmp parse_common_unknown
2021-11-19 02:42:29 +00:00
archery_check_play_game:
lda GAME_STATE_0
and #ARROW_BEATEN
bne archery_play_game_arrow_beaten
lda GAME_STATE_0
and #TRINKET_GIVEN
bne archery_play_game
archery_play_game_closed:
ldx #<archery_play_game_closed_message
ldy #>archery_play_game_closed_message
jmp finish_parse_message
archery_play_game_arrow_beaten:
jmp archery_after_minigame
2021-10-20 20:37:54 +00:00
archery_play_game:
2021-11-19 02:42:29 +00:00
2021-10-20 20:37:54 +00:00
ldx #<archery_play_game_message
ldy #>archery_play_game_message
2021-11-19 02:42:29 +00:00
jsr partial_message_step
archery_play_game2:
2021-11-19 02:42:29 +00:00
ldx #<archery_play_game_message2
ldy #>archery_play_game_message2
jsr partial_message_step
; play game
lda #LOCATION_ARCHERY_GAME
jsr update_map_location
2021-11-20 05:17:47 +00:00
; FIXME: make random
lda #$30
sta ARROW_SCORE
2021-11-19 02:42:29 +00:00
rts
2021-10-20 20:37:54 +00:00
;================
; talk
;================
archery_talk:
2021-11-03 04:53:24 +00:00
; before talk, only will talk if close enough
; after talk mendelev, gives talk to brother message
; after dongolev back, ???
2021-10-20 20:37:54 +00:00
; only talk if close
lda PEASANT_X
cmp #23
2021-11-18 05:49:27 +00:00
bcs archery_talk_close
2021-10-20 20:37:54 +00:00
; check Y too?
; probably less than $7D?
; actual game will walk you in if close
; will it work from beind?
2021-11-18 05:49:27 +00:00
archery_talk_too_far:
ldx #<archery_talk_far_message
ldy #>archery_talk_far_message
jmp finish_parse_message
archery_talk_close:
2021-10-20 20:37:54 +00:00
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
2021-11-18 05:49:27 +00:00
cmp #NOUN_DONGOLEV
beq archery_talk_dongolev
cmp #NOUN_NONE
beq archery_talk_mendelev
2021-10-20 20:37:54 +00:00
jmp parse_common_unknown
2021-11-18 05:49:27 +00:00
archery_talk_dongolev:
lda GAME_STATE_0
and #HALDO_TO_DONGOLEV
bne archery_yes_dongolev
jmp parse_common_talk
2021-10-20 20:37:54 +00:00
archery_talk_mendelev:
2021-11-18 05:49:27 +00:00
lda GAME_STATE_0
and #TALKED_TO_MENDELEV
beq archery_no_mendelev_yet
lda GAME_STATE_0
and #HALDO_TO_DONGOLEV
beq archery_yes_mendelev_no_dongolev
archery_yes_dongolev:
; three options, before trinket, after trinket, after minigame
lda GAME_STATE_0
and #ARROW_BEATEN
bne archery_after_minigame
lda GAME_STATE_0
and #TRINKET_GIVEN
bne archery_after_trinket
archery_before_trinket:
ldx #<archery_talk_before_minigame_message
ldy #>archery_talk_before_minigame_message
jmp finish_parse_message
archery_after_trinket:
jmp archery_play_game
archery_after_minigame:
ldx #<archery_talk_after_minigame_message
ldy #>archery_talk_after_minigame_message
jmp finish_parse_message
archery_yes_mendelev_no_dongolev:
ldx #<archery_talk_mendelev_between_message
ldy #>archery_talk_mendelev_between_message
jmp finish_parse_message
archery_no_mendelev_yet:
2021-10-20 20:37:54 +00:00
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
2021-10-25 04:54:19 +00:00
jsr finish_parse_message
; add 1 point to score if don't have mask or trinket
; add 2 points otherwise
lda INVENTORY_2
and #INV2_TRINKET
bne archer_2_points
2021-10-20 20:37:54 +00:00
2021-10-25 04:54:19 +00:00
lda INVENTORY_1
and #INV1_MONSTER_MASK
bne archer_2_points
archer_1_point:
lda #1
bne archer_score_points ; bra
archer_2_points:
lda #2
archer_score_points:
jsr score_points
rts
2021-10-20 20:37:54 +00:00
2021-11-18 05:49:27 +00:00
2021-10-20 20:37:54 +00:00
;=======================
;=======================
;=======================
; River and Stone
;=======================
;=======================
;=======================
river_stone_verb_table:
.byte VERB_GET
.word river_stone_get-1
.byte VERB_LOOK
.word river_stone_look-1
.byte VERB_STEAL
.word river_stone_steal-1
.byte VERB_SWIM
.word river_stone_swim-1
.byte VERB_TAKE
.word river_stone_take-1
.byte 0
;================
; get
;================
river_stone_steal:
river_stone_take:
river_stone_get:
lda CURRENT_NOUN
cmp #NOUN_ROCK
beq river_get_rock
cmp #NOUN_STONE
beq river_get_rock
; else "probably wish" message
jmp parse_common_get
river_get_rock:
ldx #<river_get_rock_message
ldy #>river_get_rock_message
jmp finish_parse_message
;=================
; look
;=================
river_stone_look:
lda CURRENT_NOUN
cmp #NOUN_ROCK
beq river_look_at_rock
cmp #NOUN_STONE
beq river_look_at_rock
cmp #NOUN_WATER
beq river_look_at_water
cmp #NOUN_RIVER
beq river_look_at_water
cmp #NOUN_NONE
beq river_look_at
jmp parse_common_look
river_look_at:
ldx #<river_look_message
ldy #>river_look_message
jmp finish_parse_message
river_look_at_rock:
ldx #<river_look_at_rock_message
ldy #>river_look_at_rock_message
jmp finish_parse_message
river_look_at_water:
ldx #<river_look_at_water_message
ldy #>river_look_at_water_message
jmp finish_parse_message
;===================
; swim
;===================
river_stone_swim:
lda CURRENT_NOUN
cmp #NOUN_WATER
beq river_swim
cmp #NOUN_RIVER
beq river_swim
cmp #NOUN_ROCK
beq river_swim
cmp #NOUN_STONE
beq river_swim
jmp parse_common_unknown
river_swim:
ldx #<river_swim_message
ldy #>river_swim_message
jmp finish_parse_message
2021-10-20 04:47:40 +00:00
;=======================
;=======================
;=======================
; mountain pass
;=======================
;=======================
;=======================
mountain_pass_verb_table:
.byte VERB_ASK
.word mountain_pass_ask-1
.byte VERB_ATTACK
.word mountain_pass_attack-1
.byte VERB_BREAK
.word mountain_pass_break-1
.byte VERB_LOOK
.word mountain_pass_look-1
.byte VERB_TALK
.word mountain_pass_talk-1
.byte 0
;================
; ask
;================
mountain_pass_ask:
lda CURRENT_NOUN
cmp #NOUN_FIRE
beq ask_about_fire
cmp #NOUN_JHONKA
beq ask_about_jhonka
cmp #NOUN_KERREK
beq ask_about_kerrek
cmp #NOUN_NED
beq ask_about_ned
cmp #NOUN_ROBE
beq ask_about_robe
cmp #NOUN_SMELL
beq ask_about_smell
cmp #NOUN_TROGDOR
beq ask_about_trogdor
; else ask about unknown
ask_about_unknown:
ldx #<knight_ask_unknown_message
ldy #>knight_ask_unknown_message
jmp finish_parse_message
ask_about_fire:
ldx #<knight_ask_fire_message
ldy #>knight_ask_fire_message
jmp finish_parse_message
ask_about_jhonka:
ldx #<knight_ask_jhonka_message
ldy #>knight_ask_jhonka_message
jmp finish_parse_message
ask_about_kerrek:
ldx #<knight_ask_kerrek_message
ldy #>knight_ask_kerrek_message
jmp finish_parse_message
ask_about_ned:
ldx #<knight_ask_ned_message
ldy #>knight_ask_ned_message
jmp finish_parse_message
ask_about_robe:
ldx #<knight_ask_robe_message
ldy #>knight_ask_robe_message
jmp finish_parse_message
ask_about_smell:
ldx #<knight_ask_smell_message
ldy #>knight_ask_smell_message
jmp finish_parse_message
ask_about_trogdor:
ldx #<knight_ask_trogdor_message
ldy #>knight_ask_trogdor_message
jmp finish_parse_message
;================
; attack
;================
mountain_pass_break:
mountain_pass_attack:
lda CURRENT_NOUN
cmp #NOUN_SIGN
beq attack_sign
jmp parse_common_unknown
attack_sign:
ldx #<attack_sign_message
ldy #>attack_sign_message
jmp finish_parse_message
;=================
; look
;=================
mountain_pass_look:
lda CURRENT_NOUN
cmp #NOUN_KNIGHT
beq knight_look
cmp #NOUN_MAN
beq knight_look
cmp #NOUN_DUDE
beq knight_look
cmp #NOUN_GUY
beq knight_look
cmp #NOUN_SIGN
beq sign_look
cmp #NOUN_TROGDOR
beq trogdor_look
cmp #NOUN_NONE
beq pass_look
jmp parse_common_look
knight_look:
ldx #<knight_look_message
ldy #>knight_look_message
jmp finish_parse_message
pass_look:
ldx #<pass_look_message
ldy #>pass_look_message
jmp finish_parse_message
sign_look:
ldx #<sign_look_message
ldy #>sign_look_message
jmp finish_parse_message
trogdor_look:
ldx #<trogdor_look_message
ldy #>trogdor_look_message
jmp finish_parse_message
;===================
; talk
;===================
mountain_pass_talk:
lda CURRENT_NOUN
cmp #NOUN_KNIGHT
beq talk_to_knight
cmp #NOUN_GUY
beq talk_to_knight
cmp #NOUN_MAN
beq talk_to_knight
cmp #NOUN_DUDE
beq talk_to_knight
; else, no one
jmp parse_common_talk
talk_to_knight:
lda GAME_STATE_2
and #TALKED_TO_KNIGHT
bne knight_skip_text
; first time only
ldx #<talk_knight_first_message
ldy #>talk_knight_first_message
jsr partial_message_step
; first time only
ldx #<talk_knight_second_message
ldy #>talk_knight_second_message
jsr partial_message_step
knight_skip_text:
; see if have belt
lda INVENTORY_1
and #INV1_KERREK_BELT
bne knight_kerrek_belt
; see if have robe
lda GAME_STATE_1
and #WEARING_ROBE
bne knight_robe
; else, have nothing
2021-10-20 04:47:40 +00:00
ldx #<talk_knight_third_message
ldy #>talk_knight_third_message
jsr partial_message_step
ldx #<talk_knight_stink_message
ldy #>talk_knight_stink_message
jsr partial_message_step
ldx #<talk_knight_dress_message
ldy #>talk_knight_dress_message
jsr partial_message_step
ldx #<talk_knight_fire_message
ldy #>talk_knight_fire_message
jsr partial_message_step
ldx #<talk_knight_fourth_message
ldy #>talk_knight_fourth_message
lda GAME_STATE_2
and #TALKED_TO_KNIGHT
bne knight_skip_text2
jsr partial_message_step
; first time only
ldx #<talk_knight_fifth_message
ldy #>talk_knight_fifth_message
lda GAME_STATE_2
ora #TALKED_TO_KNIGHT
sta GAME_STATE_2
knight_skip_text2:
jmp finish_parse_message
knight_kerrek_belt:
; see if also have robe
lda GAME_STATE_1
and #WEARING_ROBE
bne knight_belt_robe
ldx #<talk_knight_after_belt_message
ldy #>talk_knight_after_belt_message
jmp finish_parse_message
knight_robe:
; see if also have belt
lda INVENTORY_1
and #INV1_KERREK_BELT
bne knight_belt_robe
ldx #<talk_knight_after_robe_message
ldy #>talk_knight_after_robe_message
jmp finish_parse_message
knight_belt_robe:
; see if also on fire
lda GAME_STATE_2
and #ON_FIRE
bne knight_belt_fire
ldx #<talk_knight_after_robe_and_belt_message
ldy #>talk_knight_after_robe_and_belt_message
jmp finish_parse_message
knight_belt_fire:
; TODO: move knight, open path
; score points
lda #7
jsr score_points
ldx #<talk_knight_after_robe_belt_fire_message
ldy #>talk_knight_after_robe_belt_fire_message
jsr partial_message_step
ldx #<talk_knight_after_robe_belt_fire_message2
ldy #>talk_knight_after_robe_belt_fire_message2
jmp finish_parse_message
2021-10-20 04:47:40 +00:00
.include "dialog_peasant2.inc"