dos33fsprogs/games/peasant/peasant1_actions.s

1230 lines
21 KiB
ArmAsm
Raw Permalink Normal View History

2021-10-21 05:18:02 +00:00
.include "tokens.inc"
;=======================
;=======================
;=======================
; Gary the Horse
;=======================
;=======================
;=======================
gary_verb_table:
.byte VERB_BREAK
.word gary_break-1
.byte VERB_CLIMB
.word gary_climb-1
.byte VERB_FEED
.word gary_feed-1
.byte VERB_GET
.word gary_get-1
.byte VERB_JUMP
.word gary_jump-1
.byte VERB_KICK
.word gary_kick-1
.byte VERB_KILL
.word gary_kill-1
.byte VERB_LOOK
.word gary_look-1
.byte VERB_PET
.word gary_pet-1
.byte VERB_PUNCH
.word gary_punch-1
.byte VERB_SIT
.word gary_sit-1
.byte VERB_RIDE
.word gary_ride-1
.byte VERB_SCARE
.word gary_scare-1
.byte VERB_TALK
.word gary_talk-1
.byte VERB_WEAR
.word gary_wear-1
.byte 0
;================
; break
;================
gary_sit:
gary_break:
lda CURRENT_NOUN
cmp #NOUN_STUMP
beq gary_sit_stump
jmp parse_common_unknown
gary_sit_stump:
2021-11-01 00:18:57 +00:00
jmp gary_kick_stump
2021-10-21 05:18:02 +00:00
;================
; climb
;================
gary_jump:
gary_climb:
lda CURRENT_NOUN
cmp #NOUN_FENCE
beq gary_climb_fence
jmp parse_common_unknown
gary_climb_fence:
2021-11-01 00:18:57 +00:00
lda GAME_STATE_0
and #GARY_SCARED
beq gary_climb_fence_there
gary_climb_fence_gone:
ldx #<gary_climb_fence_gone_message
ldy #>gary_climb_fence_gone_message
jmp finish_parse_message
gary_climb_fence_there:
2021-10-21 05:18:02 +00:00
ldx #<gary_climb_fence_message
ldy #>gary_climb_fence_message
jmp finish_parse_message
;================
; feed
;================
gary_feed:
lda CURRENT_NOUN
cmp #NOUN_GARY
beq gary_feed_horse
cmp #NOUN_HORSE
beq gary_feed_horse
jmp parse_common_unknown
gary_feed_horse:
2021-11-01 00:18:57 +00:00
lda GAME_STATE_0
and #GARY_SCARED
beq gary_feed_horse_there
jmp parse_common_unknown
gary_feed_horse_there:
2021-10-21 05:18:02 +00:00
ldx #<gary_feed_horse_message
ldy #>gary_feed_horse_message
jmp finish_parse_message
;================
; get
;================
gary_get:
lda CURRENT_NOUN
cmp #NOUN_FLIES
beq gary_get_flies
; else "probably wish" message
jmp parse_common_get
gary_get_flies:
2021-11-01 00:18:57 +00:00
lda GAME_STATE_0
and #GARY_SCARED
beq get_flies_there
jmp parse_common_get
get_flies_there:
2021-10-21 05:18:02 +00:00
ldx #<gary_get_flies_message
ldy #>gary_get_flies_message
jmp finish_parse_message
;===================
; kick/kill/punch
;===================
gary_kick:
gary_kill:
gary_punch:
lda CURRENT_NOUN
cmp #NOUN_GARY
beq kick_gary
cmp #NOUN_HORSE
beq kick_gary
cmp #NOUN_FLIES
beq kick_flies
cmp #NOUN_STUMP
2021-11-01 00:18:57 +00:00
beq gary_kick_stump
2021-10-21 05:18:02 +00:00
jmp parse_common_unknown
kick_gary:
2021-11-01 00:18:57 +00:00
lda GAME_STATE_0
and #GARY_SCARED
beq kick_gary_there
jmp gary_scare_horse_gone
kick_gary_there:
2021-10-21 05:18:02 +00:00
ldx #<gary_kick_horse_message
ldy #>gary_kick_horse_message
jsr partial_message_step
2021-11-01 00:18:57 +00:00
; this kills you
lda #LOAD_GAME_OVER
sta WHICH_LOAD
lda #NEW_FROM_DISK
sta LEVEL_OVER
2021-10-21 05:18:02 +00:00
ldx #<gary_kick_horse_message2
ldy #>gary_kick_horse_message2
jmp finish_parse_message
kick_flies:
2021-11-01 00:18:57 +00:00
lda GAME_STATE_0
and #GARY_SCARED
beq kick_flies_there
jmp parse_common_unknown
kick_flies_there:
2021-10-21 05:18:02 +00:00
ldx #<gary_kick_flies_message
ldy #>gary_kick_flies_message
jmp finish_parse_message
2021-11-01 00:18:57 +00:00
gary_kick_stump:
2021-10-21 05:18:02 +00:00
ldx #<gary_kick_stump_message
ldy #>gary_kick_stump_message
jmp finish_parse_message
;=================
; look
;=================
gary_look:
2021-11-01 00:18:57 +00:00
lda GAME_STATE_0
and #GARY_SCARED
beq gary_look_pre_scare
gary_look_post_scare:
lda CURRENT_NOUN
cmp #NOUN_FENCE
beq gary_look_at_fence_post
cmp #NOUN_STUMP
beq gary_look_at_stump
cmp #NOUN_NONE ; same
beq gary_look_at
jmp parse_common_look
gary_look_at_fence_post:
ldx #<gary_look_fence_after_scare_message
ldy #>gary_look_fence_after_scare_message
jmp finish_parse_message
;=================
; pre scare
gary_look_pre_scare:
2021-10-21 05:18:02 +00:00
lda CURRENT_NOUN
cmp #NOUN_FENCE
beq gary_look_at_fence
cmp #NOUN_FLIES
beq gary_look_at_flies
cmp #NOUN_GARY
beq gary_look_at_horse
cmp #NOUN_HORSE
beq gary_look_at_horse
cmp #NOUN_STUMP
beq gary_look_at_stump
cmp #NOUN_NONE
beq gary_look_at
jmp parse_common_look
2021-11-01 00:18:57 +00:00
; look at
2021-10-21 05:18:02 +00:00
gary_look_at:
ldx #<gary_look_message
ldy #>gary_look_message
jmp finish_parse_message
2021-11-01 00:18:57 +00:00
; look at fence
2021-10-21 05:18:02 +00:00
gary_look_at_fence:
ldx #<gary_look_fence_message
ldy #>gary_look_fence_message
jmp finish_parse_message
gary_look_at_flies:
ldx #<gary_look_flies_message
ldy #>gary_look_flies_message
jmp finish_parse_message
gary_look_at_gary:
gary_look_at_horse:
ldx #<gary_look_horse_message
ldy #>gary_look_horse_message
jmp finish_parse_message
gary_look_at_stump:
ldx #<gary_look_stump_message
ldy #>gary_look_stump_message
jmp finish_parse_message
2021-11-01 00:18:57 +00:00
;===================
; wear mask
;===================
gary_wear:
lda CURRENT_NOUN
cmp #NOUN_MASK
beq wear_mask
jmp parse_common_unknown
wear_mask:
; if no have mask, unknown
; otherwise, same as if we did "scare gary"
lda INVENTORY_1
and #INV1_MONSTER_MASK
bne gary_scare_horse
jmp parse_common_unknown
;================
; scare
;================
gary_scare:
lda CURRENT_NOUN
cmp #NOUN_GARY
beq gary_scare_horse
cmp #NOUN_HORSE
beq gary_scare_horse
jmp parse_common_unknown
gary_scare_horse:
lda GAME_STATE_0
and #GARY_SCARED
bne gary_scare_horse_gone
lda INVENTORY_1
and #INV1_MONSTER_MASK
beq gary_scare_horse_nomask
gary_scare_horse_mask:
ldx #<gary_scare_message
ldy #>gary_scare_message
jsr partial_message_step
; get points
lda #2
jsr score_points
lda GAME_STATE_0
ora #GARY_SCARED
sta GAME_STATE_0
; TODO: break fence
ldx #<gary_scare_message2
ldy #>gary_scare_message2
jmp finish_parse_message
gary_scare_horse_nomask:
jsr random16
and #$3 ; 0..4
beq gary_scare_try2
cmp #$1
beq gary_scare_try3
gary_scare_try1:
ldx #<gary_scare_horse_message1
ldy #>gary_scare_horse_message1
jmp finish_parse_message
gary_scare_try2:
ldx #<gary_scare_horse_message2
ldy #>gary_scare_horse_message2
jmp finish_parse_message
gary_scare_try3:
ldx #<gary_scare_horse_message3
ldy #>gary_scare_horse_message3
jmp finish_parse_message
gary_scare_horse_gone:
ldx #<gary_gone_message
ldy #>gary_gone_message
jsr partial_message_step
ldx #<gary_gone_message2
ldy #>gary_gone_message2
jmp finish_parse_message
2021-10-21 05:18:02 +00:00
;================
; pet
;================
gary_pet:
lda CURRENT_NOUN
cmp #NOUN_GARY
beq gary_pet_horse
cmp #NOUN_HORSE
beq gary_pet_horse
jmp parse_common_unknown
gary_pet_horse:
2021-11-01 00:18:57 +00:00
lda GAME_STATE_0
and #GARY_SCARED
beq pet_horse_there
jmp parse_common_unknown
pet_horse_there:
2021-10-21 05:18:02 +00:00
ldx #<gary_pet_horse_message
ldy #>gary_pet_horse_message
jmp finish_parse_message
;================
; ride
;================
gary_ride:
lda CURRENT_NOUN
cmp #NOUN_GARY
beq gary_ride_horse
cmp #NOUN_HORSE
beq gary_ride_horse
jmp parse_common_unknown
gary_ride_horse:
2021-11-01 00:18:57 +00:00
lda GAME_STATE_0
and #GARY_SCARED
beq ride_horse_there
2021-10-21 05:18:02 +00:00
jmp parse_common_unknown
2021-11-01 00:18:57 +00:00
ride_horse_there:
ldx #<gary_ride_horse_message
ldy #>gary_ride_horse_message
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
;================
; talk
;================
gary_talk:
lda CURRENT_NOUN
cmp #NOUN_GARY
beq gary_talk_horse
cmp #NOUN_HORSE
beq gary_talk_horse
cmp #NOUN_STUMP
2021-11-01 00:18:57 +00:00
beq gary_talk_stump
2021-10-21 05:18:02 +00:00
cmp #NOUN_NONE
beq gary_talk_horse
jmp parse_common_talk
gary_talk_horse:
2021-11-01 00:18:57 +00:00
lda GAME_STATE_0
and #GARY_SCARED
beq gary_talk_there
jmp parse_common_talk
gary_talk_there:
2021-10-21 05:18:02 +00:00
ldx #<gary_talk_message
ldy #>gary_talk_message
jmp finish_parse_message
2021-11-01 00:18:57 +00:00
gary_talk_stump:
jmp gary_kick_stump
2021-10-21 05:18:02 +00:00
2021-10-24 01:14:29 +00:00
2021-10-21 05:18:02 +00:00
;=======================
;=======================
;=======================
2021-10-24 01:14:29 +00:00
; Kerrek
2021-10-21 05:18:02 +00:00
;=======================
;=======================
;=======================
2021-10-24 01:14:29 +00:00
.include "kerrek_actions.s"
2021-10-21 05:18:02 +00:00
;=======================
;=======================
;=======================
2021-10-24 01:14:29 +00:00
; Wishing Well
2021-10-21 05:18:02 +00:00
;=======================
;=======================
;=======================
2021-10-24 01:14:29 +00:00
wishing_well_verb_table:
2021-10-25 02:13:58 +00:00
.byte VERB_CLIMB
.word well_climb-1
.byte VERB_GET
.word well_get-1
2021-10-21 05:18:02 +00:00
.byte VERB_LOOK
2021-10-24 01:14:29 +00:00
.word well_look-1
2021-10-25 02:13:58 +00:00
.byte VERB_MAKE
.word well_make-1
.byte VERB_PUT
.word well_put-1
.byte VERB_STEAL
.word well_get-1
.byte VERB_TAKE
.word well_get-1
2021-10-21 05:18:02 +00:00
.byte VERB_TALK
2021-10-24 01:14:29 +00:00
.word well_talk-1
2021-10-25 02:13:58 +00:00
.byte VERB_THROW
.word well_throw-1
.byte VERB_TURN
.word well_turn-1
.byte VERB_USE
.word well_use-1
.byte VERB_DROP
.word well_use-1
.byte VERB_DEPLOY
.word well_use-1
2021-10-21 05:18:02 +00:00
.byte 0
;=================
; look
;=================
2021-10-24 01:14:29 +00:00
well_look:
2021-10-21 05:18:02 +00:00
lda CURRENT_NOUN
2021-10-24 01:14:29 +00:00
cmp #NOUN_IN_WELL
beq well_look_in_well
cmp #NOUN_WELL
beq well_look_at_well
cmp #NOUN_TREE
beq well_look_at_tree
cmp #NOUN_CRANK
beq well_look_at_crank
2021-10-25 02:13:58 +00:00
cmp #NOUN_BUCKET
beq well_look_at_bucket
2021-10-21 05:18:02 +00:00
cmp #NOUN_NONE
2021-10-24 01:14:29 +00:00
beq well_look_at
2021-10-21 05:18:02 +00:00
jmp parse_common_look
2021-10-24 01:14:29 +00:00
well_look_at:
ldx #<well_look_at_message
ldy #>well_look_at_message
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
2021-10-24 01:14:29 +00:00
well_look_at_well:
ldx #<well_look_at_well_message
ldy #>well_look_at_well_message
2021-10-25 02:13:58 +00:00
jsr partial_message_step
lda INVENTORY_1
and #INV1_MONSTER_MASK
bne well_look_had_mask
2021-10-25 02:13:58 +00:00
ldx #<well_look_at_well_message2
ldy #>well_look_at_well_message2
well_look_had_mask:
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
2021-10-24 01:14:29 +00:00
well_look_at_crank:
lda INVENTORY_1_GONE
and #INV1_PEBBLES ; see if pebbles are gone (in bucket)
beq crank_no_pebbles
ldx #<well_look_at_crank_pebbles_message
ldy #>well_look_at_crank_pebbles_message
jmp finish_parse_message
crank_no_pebbles:
2021-10-24 01:14:29 +00:00
ldx #<well_look_at_crank_message
ldy #>well_look_at_crank_message
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
; look in well
2021-10-24 01:14:29 +00:00
well_look_in_well:
lda INVENTORY_1
and #INV1_MONSTER_MASK
bne look_in_well_after_mask
look_in_well_before_mask:
2021-10-24 01:14:29 +00:00
ldx #<well_look_in_well_message
ldy #>well_look_in_well_message
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
look_in_well_after_mask:
ldx #<well_look_in_well_message2
ldy #>well_look_in_well_message2
jmp finish_parse_message
; look at tree
2021-10-24 01:14:29 +00:00
well_look_at_tree:
ldx #<well_look_at_tree_message
ldy #>well_look_at_tree_message
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
; look at bucket
2021-10-25 02:13:58 +00:00
well_look_at_bucket:
ldx #<well_look_at_bucket_message
ldy #>well_look_at_bucket_message
jmp finish_parse_message
;================
; make
;================
well_make:
lda CURRENT_NOUN
cmp #NOUN_WISH
beq well_make_wish
jmp parse_common_unknown
well_make_wish:
ldx #<well_make_wish_message
ldy #>well_make_wish_message
jmp finish_parse_message
;================
; climb
;================
well_climb:
lda CURRENT_NOUN
cmp #NOUN_BUCKET
beq well_climb_bucket
cmp #NOUN_WELL
beq well_climb_well
cmp #NOUN_IN_WELL
beq well_climb_well
jmp parse_common_climb
well_climb_bucket:
ldx #<well_climb_bucket_message
ldy #>well_climb_bucket_message
jmp finish_parse_message
well_climb_well:
ldx #<well_climb_well_message
ldy #>well_climb_well_message
jmp finish_parse_message
;================
; get
;================
well_get:
lda CURRENT_NOUN
cmp #NOUN_BUCKET
beq well_get_bucket
jmp parse_common_get
well_get_bucket:
ldx #<well_get_bucket_message
ldy #>well_get_bucket_message
jmp finish_parse_message
2021-10-21 05:18:02 +00:00
;================
; talk
;================
2021-10-24 01:14:29 +00:00
well_talk:
2021-10-21 05:18:02 +00:00
lda CURRENT_NOUN
2021-10-24 01:14:29 +00:00
cmp #NOUN_WELL
beq well_talk_well
2021-10-21 05:18:02 +00:00
jmp parse_common_unknown
2021-10-24 01:14:29 +00:00
well_talk_well:
ldx #<well_talk_message
ldy #>well_talk_message
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
;================
; use
;================
well_use:
lda CURRENT_NOUN
cmp #NOUN_PEBBLES
beq well_use_pebbles
cmp #NOUN_STONE
beq well_use_pebbles
cmp #NOUN_ROCK
beq well_use_pebbles
cmp #NOUN_BABY
beq well_use_baby
jmp parse_common_unknown
well_use_pebbles:
ldx #<well_use_pebbles_message
ldy #>well_use_pebbles_message
jmp finish_parse_message
well_use_baby:
ldx #<well_use_baby_message
ldy #>well_use_baby_message
jmp finish_parse_message
2021-10-21 05:18:02 +00:00
2021-10-25 02:13:58 +00:00
;================
; throw
;================
well_throw:
lda CURRENT_NOUN
cmp #NOUN_BABY
beq well_throw_baby
jmp parse_common_unknown
well_throw_baby:
; first see if have baby
lda INVENTORY_1
and #INV1_BABY
beq well_throw_baby_none
; next see if still have baby
lda INVENTORY_1_GONE
and #INV1_BABY
bne well_throw_baby_none
well_throw_baby_have:
ldx #<well_throw_baby_have_message
ldy #>well_throw_baby_have_message
jmp finish_parse_message
well_throw_baby_none:
ldx #<well_throw_baby_none_message
ldy #>well_throw_baby_none_message
2021-10-25 02:13:58 +00:00
jmp finish_parse_message
;================
; turn
;================
well_turn:
lda CURRENT_NOUN
cmp #NOUN_CRANK
beq well_turn_crank
jmp parse_common_unknown
well_turn_crank:
; check if close enough
lda PEASANT_X
cmp #25
bcs well_turn_crank_too_far
; we are close enough
; check in baby in
lda GAME_STATE_0
and #BABY_IN_WELL
bne well_turn_crank_baby_in
; check if have mask
lda INVENTORY_1
and #INV1_MONSTER_MASK
bne well_play_with_well
; check if pebbles in
lda INVENTORY_1_GONE
and #INV1_PEBBLES
bne well_turn_crank_pebbles_in
; check if you have pebbles but not put in yet
; lda INVENTORY_1
; and #INV1_PEBBLES
jmp well_turn_crank_pebbles_not_in
well_play_with_well:
lda GAME_STATE_0
and #BUCKET_DOWN_WELL
bne well_bucket_go_up
well_bucket_go_down:
lda GAME_STATE_0
eor #BUCKET_DOWN_WELL
sta GAME_STATE_0
ldx #<well_bucket_down_message
ldy #>well_bucket_down_message
jmp finish_parse_message
well_bucket_go_up:
lda GAME_STATE_0
eor #BUCKET_DOWN_WELL
sta GAME_STATE_0
ldx #<well_bucket_up_message
ldy #>well_bucket_up_message
jmp finish_parse_message
well_turn_crank_baby_in:
ldx #<well_turn_crank_baby_message
ldy #>well_turn_crank_baby_message
jsr partial_message_step
; get points
lda #2
jsr score_points
; get sub
lda INVENTORY_2
ora #INV2_MEATBALL_SUB
sta INVENTORY_2
; take baby from well
lda GAME_STATE_0
2021-11-01 04:16:11 +00:00
and #<(~BABY_IN_WELL)
sta GAME_STATE_0
ldx #<well_turn_crank_baby2_message
ldy #>well_turn_crank_baby2_message
jmp finish_parse_message
well_turn_crank_pebbles_in:
ldx #<well_turn_crank_pebbles_message
ldy #>well_turn_crank_pebbles_message
jsr partial_message_step
; get mask
lda INVENTORY_1
ora #INV1_MONSTER_MASK
sta INVENTORY_1
ldx #<well_turn_crank_pebbles2_message
ldy #>well_turn_crank_pebbles2_message
jmp finish_parse_message
well_turn_crank_pebbles_not_in:
ldx #<well_turn_crank_no_pebbles_message
ldy #>well_turn_crank_no_pebbles_message
jmp finish_parse_message
;=====================
; turn crank, too far
well_turn_crank_too_far:
lda INVENTORY_1
and #INV1_MONSTER_MASK
beq well_turn_crank_too_far_before_mask
well_turn_crank_too_far_after_mask:
ldx #<well_turn_crank_too_far_after_message
ldy #>well_turn_crank_too_far_after_message
jmp finish_parse_message
well_turn_crank_too_far_before_mask:
ldx #<well_turn_crank_too_far_message
ldy #>well_turn_crank_too_far_message
2021-10-25 02:13:58 +00:00
jmp finish_parse_message
;================
; put
;================
; need special support for object
; put baby (in well, in bucket)
2021-10-25 02:13:58 +00:00
; put pebbles (in well, in bucket?)
well_put:
lda CURRENT_NOUN
cmp #NOUN_BABY
beq well_put_baby
cmp #NOUN_PEBBLES
beq well_put_pebbles
cmp #NOUN_STONE
beq well_put_pebbles
cmp #NOUN_ROCK
beq well_put_pebbles
2021-10-25 02:13:58 +00:00
well_put_anything_else:
ldx #<well_put_anything_message
ldy #>well_put_anything_message
jmp finish_parse_message
;=============
; put baby
well_put_baby:
jsr get_noun_again
lda CURRENT_NOUN
2021-10-25 02:13:58 +00:00
cmp #NOUN_BUCKET
beq well_put_baby_in_bucket
cmp #NOUN_WELL
beq well_put_baby_in_well
cmp #NOUN_IN_WELL
beq well_put_baby_in_well
; put general message
ldx #<well_put_baby_message
ldy #>well_put_baby_message
jmp finish_parse_message
;=================
; baby in bucket
well_put_baby_in_bucket:
lda INVENTORY_1
and #INV1_BABY
beq well_put_baby_in_bucket_no_baby
well_put_baby_in_bucket_yes_baby:
lda PEASANT_X
cmp #25
bcc well_put_baby_bucket_close_enough
ldx #<well_put_baby_in_bucket_too_far_message
ldy #>well_put_baby_in_bucket_too_far_message
jmp finish_parse_message
well_put_baby_bucket_close_enough:
; see if have sub
lda INVENTORY_2
and #INV2_MEATBALL_SUB
bne well_put_baby_in_bucket_already_done
; actually do it
lda #3
jsr score_points
; put baby in bucket
lda GAME_STATE_0
ora #BABY_IN_WELL
sta GAME_STATE_0
ldx #<well_put_baby_in_bucket_message
ldy #>well_put_baby_in_bucket_message
jmp finish_parse_message
well_put_baby_in_bucket_already_done:
ldx #<well_put_baby_in_bucket_already_done_message
ldy #>well_put_baby_in_bucket_already_done_message
jmp finish_parse_message
well_put_baby_in_bucket_no_baby:
ldx #<well_put_baby_none_message
ldy #>well_put_baby_none_message
jmp finish_parse_message
;=================
; baby in well
well_put_baby_in_well:
; check if have baby
; first check if gone
lda INVENTORY_1_GONE
and #INV1_BABY
bne well_put_baby_in_well_but_gone
; next check if we have baby
lda INVENTORY_1
and #INV1_BABY
beq well_put_baby_in_well_but_gone
well_put_baby_in_well_but_have:
ldx #<well_put_baby_in_well_message
ldy #>well_put_baby_in_well_message
jmp finish_parse_message
well_put_baby_in_well_but_gone:
ldx #<well_put_baby_none_message
ldy #>well_put_baby_none_message
jmp finish_parse_message
;=============
; put pebbles
well_put_pebbles:
jsr get_noun_again
lda CURRENT_NOUN
cmp #NOUN_BUCKET
beq well_put_pebbles_in_bucket
cmp #NOUN_WELL
beq well_put_pebbles_in_well
cmp #NOUN_IN_WELL
beq well_put_pebbles_in_well
; put general message
ldx #<well_put_pebbles_message
ldy #>well_put_pebbles_message
jmp finish_parse_message
well_put_pebbles_in_bucket:
; check if have pebbles
; first check if gone
lda INVENTORY_1_GONE
and #INV1_PEBBLES
bne well_put_pebbles_in_bucket_but_gone
; next check if we have them
lda INVENTORY_1
and #INV1_PEBBLES
bne well_put_pebbles_in_bucket_have_them
well_put_pebbles_in_bucket_no_pebbles:
ldx #<well_put_pebbles_in_bucket_before_message
ldy #>well_put_pebbles_in_bucket_before_message
jmp finish_parse_message
well_put_pebbles_in_bucket_but_gone:
ldx #<well_put_pebbles_in_bucket_gone_message
ldy #>well_put_pebbles_in_bucket_gone_message
jmp finish_parse_message
well_put_pebbles_in_bucket_have_them:
; add 2 points to score
lda #2
jsr score_points
; mark pebbles as gone
lda INVENTORY_1_GONE
ora #INV1_PEBBLES
sta INVENTORY_1_GONE
ldx #<well_put_pebbles_in_bucket_message
ldy #>well_put_pebbles_in_bucket_message
jmp finish_parse_message
;=========================
; pebbles in well
well_put_pebbles_in_well:
; check if have pebbles
; first check if gone
lda INVENTORY_1_GONE
and #INV1_PEBBLES
bne well_put_pebbles_in_well_but_gone
; next check if we have them
lda INVENTORY_1
and #INV1_PEBBLES
beq well_put_pebbles_in_well_but_gone
well_put_pebbles_in_well_but_have:
ldx #<well_put_pebbles_in_well_message
ldy #>well_put_pebbles_in_well_message
jmp finish_parse_message
well_put_pebbles_in_well_but_gone:
ldx #<well_put_pebbles_in_well_gone_message
ldy #>well_put_pebbles_in_well_gone_message
jmp finish_parse_message
2021-10-25 02:13:58 +00:00
2021-10-21 05:18:02 +00:00
;=======================
;=======================
;=======================
2021-10-23 14:36:03 +00:00
; Yellow Tree
2021-10-21 05:18:02 +00:00
;=======================
;=======================
;=======================
2021-10-23 14:36:03 +00:00
yellow_tree_verb_table:
2021-10-21 05:18:02 +00:00
.byte VERB_LOOK
2021-10-23 14:36:03 +00:00
.word yellow_tree_look-1
2021-10-21 05:18:02 +00:00
.byte 0
;=================
; look
;=================
2021-10-23 14:36:03 +00:00
yellow_tree_look:
2021-10-21 05:18:02 +00:00
lda CURRENT_NOUN
2021-10-23 14:36:03 +00:00
cmp #NOUN_TREE
beq yellow_tree_look_tree
cmp #NOUN_COTTAGE
beq yellow_tree_look_cottage
2021-10-21 05:18:02 +00:00
cmp #NOUN_NONE
2021-10-23 14:36:03 +00:00
beq yellow_tree_look_at
2021-10-21 05:18:02 +00:00
jmp parse_common_look
2021-10-23 14:36:03 +00:00
yellow_tree_look_at:
ldx #<yellow_tree_look_message
ldy #>yellow_tree_look_message
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
2021-10-23 14:36:03 +00:00
yellow_tree_look_cottage:
ldx #<yellow_tree_look_cottage_message
ldy #>yellow_tree_look_cottage_message
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
2021-10-23 14:36:03 +00:00
yellow_tree_look_tree:
ldx #<yellow_tree_look_tree_message
ldy #>yellow_tree_look_tree_message
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
;=======================
;=======================
;=======================
2021-10-23 13:22:18 +00:00
; waterfall
2021-10-21 05:18:02 +00:00
;=======================
;=======================
;=======================
2021-10-23 13:22:18 +00:00
waterfall_verb_table:
.byte VERB_CLIMB
.word waterfall_climb-1
2021-10-23 13:22:18 +00:00
.byte VERB_LOOK
.word waterfall_look-1
.byte VERB_SWIM
.word waterfall_swim-1
2021-10-21 05:18:02 +00:00
.byte 0
;=================
; climb
;=================
waterfall_climb:
lda CURRENT_NOUN
cmp #NOUN_CLIFF
beq waterfall_climb_cliff
jmp parse_common_unknown
waterfall_climb_cliff:
ldx #<waterfall_climb_cliff_message
ldy #>waterfall_climb_cliff_message
jmp finish_parse_message
2021-10-21 05:18:02 +00:00
;=================
; look
;=================
2021-10-23 13:22:18 +00:00
waterfall_look:
2021-10-21 05:18:02 +00:00
lda CURRENT_NOUN
2021-10-23 13:22:18 +00:00
cmp #NOUN_TREE
beq waterfall_look_tree
cmp #NOUN_WATERFALL
beq waterfall_look_waterfall
2021-10-21 05:18:02 +00:00
cmp #NOUN_NONE
2021-10-23 13:22:18 +00:00
beq waterfall_look_at
2021-10-21 05:18:02 +00:00
jmp parse_common_look
2021-10-23 13:22:18 +00:00
waterfall_look_at:
ldx #<waterfall_look_at_message
ldy #>waterfall_look_at_message
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
2021-10-23 13:22:18 +00:00
waterfall_look_tree:
ldx #<waterfall_look_tree_message
ldy #>waterfall_look_tree_message
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
2021-10-23 13:22:18 +00:00
waterfall_look_waterfall:
ldx #<waterfall_look_waterfall_message
ldy #>waterfall_look_waterfall_message
2021-10-21 05:18:02 +00:00
jmp finish_parse_message
2021-10-23 13:22:18 +00:00
;=================
; swim
;=================
2021-10-21 05:18:02 +00:00
2021-10-23 13:22:18 +00:00
waterfall_swim:
2021-10-21 05:18:02 +00:00
lda CURRENT_NOUN
2021-10-23 13:22:18 +00:00
cmp #NOUN_WATER
beq waterfall_swim_water
cmp #NOUN_WATERFALL
beq waterfall_swim_water
cmp #NOUN_NONE
beq waterfall_swim_water
2021-10-21 05:18:02 +00:00
2021-10-23 13:22:18 +00:00
jmp parse_common_unknown
2021-10-21 05:18:02 +00:00
2021-10-23 13:22:18 +00:00
waterfall_swim_water:
ldx #<waterfall_swim_message
ldy #>waterfall_swim_message
jmp finish_parse_message
2021-10-21 05:18:02 +00:00
.include "dialog_peasant1.inc"