peasant: hook up cliff actions

This commit is contained in:
Vince Weaver 2021-10-28 13:57:48 -04:00
parent 438dc1b64c
commit f995111688
6 changed files with 290 additions and 457 deletions

View File

@ -63,11 +63,11 @@ new_location:
sbc #LOCATION_BASE
tax
; lda verb_tables_low,X
; sta INL
; lda verb_tables_hi,X
; sta INH
; jsr load_custom_verb_table
lda verb_tables_low,X
sta INL
lda verb_tables_hi,X
sta INH
jsr load_custom_verb_table
@ -245,8 +245,15 @@ map_priority_hi:
.byte >outer_priority_lzsa
verb_tables_low:
.byte <cliff_base_verb_table
.byte <cliff_heights_verb_table
.byte <cave_outer_verb_table
verb_tables_hi:
.byte >cliff_base_verb_table
.byte >cliff_heights_verb_table
.byte >cave_outer_verb_table
cliff_text_lzsa:

View File

@ -3,438 +3,248 @@
;=======================
;=======================
;=======================
; Hidden Glen
; cliff base
;=======================
;=======================
;=======================
hidden_glen_verb_table:
.if 0
.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
cliff_base_verb_table:
.byte VERB_LOOK
.word hay_bale_look-1
.byte VERB_STEAL
.word hay_bale_steal-1
.byte VERB_TAKE
.word hay_bale_take-1
.endif
.word cliff_base_look-1
.byte VERB_CLIMB
.word cliff_base_climb-1
.byte 0
.if 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:
cliff_base_look:
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
beq cliff_base_look_at
jmp parse_common_look
hay_look_at:
ldx #<hay_look_message
ldy #>hay_look_message
cliff_base_look_at:
ldx #<cliff_base_look_message
ldy #>cliff_base_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
;===================
; enter hay
;===================
hay_bale_enter:
hay_bale_jump:
hay_bale_hide:
lda CURRENT_NOUN
cmp #NOUN_HAY
beq enter_hay
jmp parse_common_unknown
enter_hay:
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
.endif
;=======================
;=======================
;=======================
; Inside Lady Cottage
;=======================
;=======================
;=======================
inside_cottage_verb_table:
.if 0
.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
.endif
.byte 0
.if 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
; 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
;=================
; look
; climb
;=================
puddle_look:
cliff_base_climb:
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_CLIFF
beq cliff_base_do_climb
cmp #NOUN_NONE
beq puddle_look_at
jmp parse_common_look
puddle_look_at:
ldx #<puddle_look_at_message
ldy #>puddle_look_at_message
jmp finish_parse_message
puddle_look_at_mud:
ldx #<puddle_look_mud_message
ldy #>puddle_look_mud_message
jmp finish_parse_message
puddle_look_at_rock:
ldx #<puddle_get_rock_message
ldy #>puddle_get_rock_message
jmp finish_parse_message
.endif
;=======================
;=======================
;=======================
; Inside Ned Cottage
;=======================
;=======================
;=======================
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
.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
.endif
.byte 0
.if 0
;================
; ask
;================
archery_ask:
; TODO
jmp parse_common_ask
;================
; 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:
; TODO
jmp parse_common_give
;================
; haldo
;================
archery_haldo:
; TODO
jmp parse_common_haldo
;=================
; 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:
ldx #<archery_look_at_archer_message
ldy #>archery_look_at_archer_message
jmp finish_parse_message
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
beq archery_play_game
beq cliff_base_do_climb
jmp parse_common_unknown
archery_play_game:
ldx #<archery_play_game_message
ldy #>archery_play_game_message
jmp finish_parse_message
;================
; talk
;================
archery_talk:
; only talk if close
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
cliff_base_do_climb:
ldx #<cliff_base_climb_message
ldy #>cliff_base_climb_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
and #INV2_TRINKET
bne archer_2_points
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
archery_talk_too_far:
ldx #<archery_talk_far_message
ldy #>archery_talk_far_message
ldx #<cliff_base_climb2_message
ldy #>cliff_base_climb2_message
jmp finish_parse_message
.endif
;=======================
;=======================
;=======================
; Cliff Heights
;=======================
;=======================
;=======================
cliff_heights_verb_table:
.byte VERB_GET
.word cliff_heights_get-1
.byte VERB_TAKE
.word cliff_heights_get-1
.byte VERB_STEAL
.word cliff_heights_get-1
.byte VERB_CLIMB
.word cliff_heights_climb-1
.byte VERB_LOOK
.word cliff_heights_look-1
.byte 0
;================
; climb
;================
cliff_heights_climb:
lda CURRENT_NOUN
cmp #NOUN_CLIFF
beq cliff_heights_do_climb
cmp #NOUN_NONE
beq cliff_heights_do_climb
jmp parse_common_unknown
cliff_heights_do_climb:
ldx #<cliff_heights_climb_message
ldy #>cliff_heights_climb_message
jmp finish_parse_message
.include "dialog_inside.inc"
;================
; get
;================
cliff_heights_get:
cliff_heights_steal:
cliff_heights_take:
lda CURRENT_NOUN
cmp #NOUN_BONE
beq cliff_heights_get_bone
cmp #NOUN_SKULL
beq cliff_heights_get_bone
; else "probably wish" message
jmp parse_common_get
cliff_heights_get_bone:
ldx #<cliff_heights_get_bone_message
ldy #>cliff_heights_get_bone_message
jmp finish_parse_message
;=================
; look
;=================
cliff_heights_look:
lda CURRENT_NOUN
cmp #NOUN_LIGHTNING
beq cliff_heights_look_at_lightning
cmp #NOUN_CAVE
beq cliff_heights_look_at_cave
cmp #NOUN_BONE
beq cliff_heights_look_at_bone
cmp #NOUN_SKULL
beq cliff_heights_look_at_bone
cmp #NOUN_NONE
beq cliff_heights_look_at
jmp parse_common_look
cliff_heights_look_at:
ldx #<cliff_heights_look_at_message
ldy #>cliff_heights_look_at_message
jmp finish_parse_message
cliff_heights_look_at_bone:
ldx #<cliff_heights_look_bone_message
ldy #>cliff_heights_look_bone_message
jmp finish_parse_message
cliff_heights_look_at_cave:
ldx #<cliff_heights_look_cave_message
ldy #>cliff_heights_look_cave_message
jmp finish_parse_message
cliff_heights_look_at_lightning:
ldx #<cliff_heights_look_lightning_message
ldy #>cliff_heights_look_lightning_message
jmp finish_parse_message
;=======================
;=======================
;=======================
; Trogdor Cave Outer
;=======================
;=======================
;=======================
cave_outer_verb_table:
.byte VERB_CLIMB
.word cave_outer_climb-1
.byte VERB_LOOK
.word cave_outer_look-1
.byte 0
;=================
; look
;=================
cave_outer_look:
lda CURRENT_NOUN
cmp #NOUN_BEADS
beq cave_outer_look_at_curtain
cmp #NOUN_CURTAIN
beq cave_outer_look_at_curtain
cmp #NOUN_DOOR
beq cave_outer_look_at_door
cmp #NOUN_SKELETON
beq cave_outer_look_at_skeleton
cmp #NOUN_OPENINGS
beq cave_outer_look_at_openings
cmp #NOUN_NONE
beq cave_outer_look_at
jmp parse_common_look
cave_outer_look_at:
ldx #<cave_outer_look_message
ldy #>cave_outer_look_message
jmp finish_parse_message
cave_outer_look_at_curtain:
ldx #<cave_outer_look_curtain_message
ldy #>cave_outer_look_curtain_message
jmp finish_parse_message
cave_outer_look_at_door:
ldx #<cave_outer_look_door_message
ldy #>cave_outer_look_door_message
jmp finish_parse_message
cave_outer_look_at_openings:
ldx #<cave_outer_look_openings_message
ldy #>cave_outer_look_openings_message
jmp finish_parse_message
cave_outer_look_at_skeleton:
ldx #<cave_outer_look_skeleton_message
ldy #>cave_outer_look_skeleton_message
jmp finish_parse_message
;================
; climb
;================
cave_outer_climb:
lda CURRENT_NOUN
cmp #NOUN_CLIFF
beq cave_outer_do_climb
cmp #NOUN_NONE
beq cave_outer_do_climb
jmp parse_common_unknown
cave_outer_do_climb:
ldx #<cave_outer_climb_message
ldy #>cave_outer_climb_message
jmp finish_parse_message
.include "dialog_cliff.inc"

View File

@ -840,7 +840,7 @@ noun_lookup:
.byte "COLD",NOUN_COLD|$80
.byte "COTTAGE",NOUN_COTTAGE|$80
.byte "CRANK",NOUN_CRANK|$80
.byte "CURTAINS",NOUN_CURTAINS|$80
.byte "CURTAIN",NOUN_CURTAIN|$80
.byte "DAN",NOUN_DAN|$80
.byte "DESK",NOUN_DESK|$80
.byte "DINGHY",NOUN_DINGHY|$80

View File

@ -3,6 +3,7 @@
;============
; + look
cliff_base_look_message:
.byte "You're at the base of a",13
.byte "very climbable cliff that",13
.byte "leads to Trogdor's",13
@ -13,6 +14,7 @@
; +3 POINTS (maybe at the top?)
; + climb (walks to center of cliff)
cliff_base_climb_message:
.byte "With a new determination",13
.byte "you dig your fingers into",13
.byte "the cliff face and begin to",13
@ -20,6 +22,7 @@
.byte "mountain like you were in a",13
.byte "sports drink commercial.",0
cliff_base_climb2_message:
.byte "The mountain starts",13
.byte "rumbling and big loose",13
.byte "boulders start tumblin",13
@ -30,7 +33,8 @@
; Cliff
;=============
; (Hit by rock or pterodactyl when climbing the cliff) {You fall to the ground and lie in a heap}
; (Hit by rock or pterodactyl when climbing the cliff)
; {You fall to the ground and lie in a heap}
.byte "Oops! You climbed real bad. You knew that you were AVOIDING the rocks, right? Not collecting them. Anyways, nice try. You dead. Thanks for playing.",0
;===================
@ -43,32 +47,38 @@
.byte "with those arrow keys.",0
; + look
cliff_heights_look_at_message:
.byte "Wow! It sure gets creepy",13
.byte "fast around here! What with",13
.byte "all the lightning and the",13
.byte "scary cave entrances.",0
; + look bone/skull
cliff_heights_look_bone_message:
.byte "You can't be sure but you",13
.byte "think those are dead person",13
.byte "bones.",0
; + look cave
cliff_heights_look_cave_message:
.byte "The cave entrance beckons",13
.byte "to you like a hot mutton",13
.byte "sandwich might.",0
; + look lightning
cliff_heights_look_lightning_message:
.byte "Scary. Like Auntie",13
.byte "Gerelda's crow's feet.",0
; + climb cliff (at top)
cliff_heights_climb_message:
.byte "They don't show how the",13
.byte "sports-drink people get",13
.byte "down from the cliff. You've",13
.byte "no idea how to start.",0
; + get/take/steal bone/skull
cliff_heights_get_bone_message:
.byte "Eww. No. Grody. You're",13
.byte "grody. No. Eww.",0
@ -86,6 +96,7 @@
.byte "I think he wants something from your inventory. Or you could just tell him ",34,"take the quiz",34,0
; + look
cave_outer_look_message:
.byte "There are 3 openings with a",13
.byte "little cliff in front of",13
.byte "each. A beaded curtain",13
@ -93,6 +104,7 @@
.byte "far wall.",0
; + look curtain/beads
cave_outer_look_curtain_message:
.byte "That thing's awesome. You",13
.byte "always wanted one for your",13
.byte "dorm room but your roommate",13
@ -100,15 +112,18 @@
.byte "no.",0
; + look door
cave_outer_look_door_message:
.byte "A wicked beaded curtain",13
.byte "hangs in the doorway.",0
; + look openings
cave_outer_look_openings_message:
.byte "They're mysterious and out",13
.byte "of reach. Like girls were",13
.byte "to you in high school.",0
; + look skeleton
cave_outer_look_skeleton_message:
.byte "You can't be sure but you",13
.byte "think those are dead person",13
.byte "bones.",0
@ -139,55 +154,7 @@
.byte "The fabled Trog-Sword is yours. You now have the means to strike down Trogdor. Good luck, peasant.",0
; + climb cliff
cave_outer_climb_message:
.byte "Nope. It's too sheer.",0
;===================================
; Trogdor's Posh Lair / Inner Cave
;===================================
; Type any command other than "Talk" or "Talk Trogdor" after Trogdor wakes up
.byte "Trogdor is awake and a couple seconds from a Rather Dashing BBQ. Might as well say your peace with him.",0
; (Walk too close to Trogdor while he's asleep)
; {Trogdor burninates you without waking up}
.byte "Yow. Looks like you got a little too close. You dead. Maybe next time don't get too close.",0
; + look
.byte "You're in a giant cavern which houses a giant dragon. You didn't shrink or anything.",0
; + look trogdor (while he's asleep)
.byte "Holy crap! Trogdor's way bigger in person than he looks in most tapestries you've seen. All of the sudden, losing your cottage doesn't seem so bad anymore.",0
; + look trogdor (when he's awake)
.byte "Trogdor is looming menacingly over you with a tiny wee sword stuck in his belly. He looks like he's gonna kill you really soon.",0
; + (enter Trogdor's cave)
.byte "the beaded curtain slams shut behind you. There's no turning back now.",0
; +7 POINTS
; + throw sword
.byte "This is it! You hurl the Trog-Sword with all your might at the sleeping Burninator.",0
.byte "Now you've done it! Trogdor's awake and the Trog-Sword doesn't seem to be doing a whole lot.",0
.byte "Your legs lock in fear, your eyes glaze over and you wish for some Depeasant adult undergarments. But you think you hear Trogdor whimpering!",0
.byte "Aw crap, that's you whimpering. At least your voice still works, I guess.",0
; +10 POINTS
; + talk trogdor
.byte "You scream that your name is Rather Dashing and that Trogdor burninated your cottage and you're here for revenge!",0
.byte 34,"Sup, mortal,",34," booms Trogdor. ",34,"I really appreciate you making the effort to come all the way up here and vanquish me and all. But, I'm kinda indestructible.",34,0
.byte 34,"Yeah, I can't be killed. I'm surprised nobody mentioned that to you. I'll admit though, you've gotten farther than anybody else ever has. I bet they'll make a statue or something in honor of you somewheres.",34,0
.byte 34,"I can honestly say it'll be a pleasure and an honor to burninate you, Rather Dashing.",34,0
.byte "Aw that sure was nice of him!",0
.byte "Congratulations! You've won! No one can kill Trogdor but you came closer than anybody ever! Way to go!",0
; + wake up trogdor
.byte "'Troggie...', you murmur. 'Troggie, wake up it's time for Burnination school.' He's not budging.",0
; + attack trogdor (when he's asleep)
; + kill / slay trogdor (while Trogdor's asleep, in his lair)
.byte "Like how?",0
; + talk trogdor (while he's asleep)
.byte "You yell some choice expletives at Trogdor but he doesn't wake up. There's a cool echo, though.",0

View File

@ -0,0 +1,49 @@
;===================================
; Trogdor's Posh Lair / Inner Cave
;===================================
; Type any command other than "Talk" or "Talk Trogdor" after Trogdor wakes up
.byte "Trogdor is awake and a couple seconds from a Rather Dashing BBQ. Might as well say your peace with him.",0
; (Walk too close to Trogdor while he's asleep)
; {Trogdor burninates you without waking up}
.byte "Yow. Looks like you got a little too close. You dead. Maybe next time don't get too close.",0
; + look
.byte "You're in a giant cavern which houses a giant dragon. You didn't shrink or anything.",0
; + look trogdor (while he's asleep)
.byte "Holy crap! Trogdor's way bigger in person than he looks in most tapestries you've seen. All of the sudden, losing your cottage doesn't seem so bad anymore.",0
; + look trogdor (when he's awake)
.byte "Trogdor is looming menacingly over you with a tiny wee sword stuck in his belly. He looks like he's gonna kill you really soon.",0
; + (enter Trogdor's cave)
.byte "the beaded curtain slams shut behind you. There's no turning back now.",0
; +7 POINTS
; + throw sword
.byte "This is it! You hurl the Trog-Sword with all your might at the sleeping Burninator.",0
.byte "Now you've done it! Trogdor's awake and the Trog-Sword doesn't seem to be doing a whole lot.",0
.byte "Your legs lock in fear, your eyes glaze over and you wish for some Depeasant adult undergarments. But you think you hear Trogdor whimpering!",0
.byte "Aw crap, that's you whimpering. At least your voice still works, I guess.",0
; +10 POINTS
; + talk trogdor
.byte "You scream that your name is Rather Dashing and that Trogdor burninated your cottage and you're here for revenge!",0
.byte 34,"Sup, mortal,",34," booms Trogdor. ",34,"I really appreciate you making the effort to come all the way up here and vanquish me and all. But, I'm kinda indestructible.",34,0
.byte 34,"Yeah, I can't be killed. I'm surprised nobody mentioned that to you. I'll admit though, you've gotten farther than anybody else ever has. I bet they'll make a statue or something in honor of you somewheres.",34,0
.byte 34,"I can honestly say it'll be a pleasure and an honor to burninate you, Rather Dashing.",34,0
.byte "Aw that sure was nice of him!",0
.byte "Congratulations! You've won! No one can kill Trogdor but you came closer than anybody ever! Way to go!",0
; + wake up trogdor
.byte "'Troggie...', you murmur. 'Troggie, wake up it's time for Burnination school.' He's not budging.",0
; + attack trogdor (when he's asleep)
; + kill / slay trogdor (while Trogdor's asleep, in his lair)
.byte "Like how?",0
; + talk trogdor (while he's asleep)
.byte "You yell some choice expletives at Trogdor but he doesn't wake up. There's a cool echo, though.",0

View File

@ -98,7 +98,7 @@ NOUN_CLUB = 17
NOUN_COLD = 18
NOUN_COTTAGE = 19
NOUN_CRANK = 20
NOUN_CURTAINS = 21
NOUN_CURTAIN = 21
NOUN_DAN = 22
NOUN_DESK = 23
NOUN_DINGHY = 24