peasant: kerrek: can kill kerrek now

This commit is contained in:
Vince Weaver 2021-11-22 00:30:30 -05:00
parent 1323aa8f72
commit 2933f6caea
4 changed files with 96 additions and 4 deletions

View File

@ -189,8 +189,9 @@ POINTS IMPLEMENTED: (in order of implementation)
+ 2 (get super trinket)
+ 3 (win archery game)
+ 10 (get belt)
+ 5 (kill kerrek)
======
67 points
72 points
deaths/endings implemented

View File

@ -1,5 +1,8 @@
TODO:
update knight for kerrek belt
kerrek decay
string compression: run trgodor level, intro, and instructions through it
can get stuck on top of targets at archery range

View File

@ -29,7 +29,7 @@ kerrek_alive_out:
sta KERREK_X
lda #76
sta KERREK_Y
lda #0
lda #1 ; right
sta KERREK_DIRECTION
lda #1
sta KERREK_SPEED
@ -348,8 +348,87 @@ kerrek_save:
;=================
kerrek_kill:
kerrek_shoot:
; check we are trying to kill kerrek?
lda CURRENT_NOUN
cmp #NOUN_KERREK
beq kerrek_kill_kerrek
rts
jmp parse_common_unknown
kerrek_kill_kerrek:
; first check if Kerrek is alive
lda KERREK_STATE
and #$f
bpl kerrek_kill_still_alive
kerrek_kill_hes_dead:
ldx #<kerrek_kill_kerrek_dead_message
ldy #>kerrek_kill_kerrek_dead_message
jmp finish_parse_message
kerrek_kill_still_alive:
; next check if he's on screen
lda KERREK_STATE
bmi kerrek_kill_on_screen
kerrek_kill_off_screen:
ldx #<kerrek_kill_kerrek_not_there_message
ldy #>kerrek_kill_kerrek_not_there_message
jmp finish_parse_message
kerrek_kill_on_screen:
; he's alive and on screen
; check if have bow and arrow
lda INVENTORY_1
and #(INV1_BOW | INV1_ARROW)
beq kerrek_kill_no_bow_no_arrow
cmp #INV1_BOW
beq kerrek_kill_only_bow
cmp #INV1_ARROW
beq kerrek_kill_only_arrow
kerrek_actually_kill:
ldx #<kerrek_kill_message
ldy #>kerrek_kill_message
jsr partial_message_step
ldx #<kerrek_kill_message2
ldy #>kerrek_kill_message2
jsr partial_message_step
lda #5
jsr score_points
inc KERREK_STATE ; make kerrek dead
lda GAME_STATE_1
ora #(RAINING|PUDDLE_WET)
sta GAME_STATE_1
ldx #<kerrek_kill_message3
ldy #>kerrek_kill_message3
jmp finish_parse_message
kerrek_kill_only_bow:
ldx #<kerrek_kill_only_bow_message
ldy #>kerrek_kill_only_bow_message
jmp finish_parse_message
kerrek_kill_only_arrow:
ldx #<kerrek_kill_only_arrow_message
ldy #>kerrek_kill_only_arrow_message
jmp finish_parse_message
kerrek_kill_no_bow_no_arrow:
ldx #<kerrek_kill_no_bow_no_arrow_message
ldy #>kerrek_kill_no_bow_no_arrow_message
jmp finish_parse_message
;=================

View File

@ -13,20 +13,23 @@ kerrek_pound_message:
.byte "You dead. Thanks for",13
.byte "playing.",0
; + 5 POINTS
; + kill kerrek
; + shoot Kerrek with bow
kerrek_kill_message:
.byte "Here goes nothin', Kid",13
.byte "Icarus",0
; animation of shooting him, him falling
kerrek_kill_message2:
.byte "ARROWED!! Nice shot. You",13
.byte "smote the Kerrek! He lay",13
.byte "there stinking.",0
; pause
kerrek_kill_message3:
.byte "A light rain heralds the",13
.byte "washing free of the",13
.byte "Kerrek's grip on the land.",13
@ -36,24 +39,30 @@ kerrek_pound_message:
.byte "bug you.",0
; + kill kerrek (he is there, no bow or arrow)
kerrek_kill_no_bow_no_arrow_message:
.byte "With what?! You got no",13
.byte "weapons except your",13
.byte "butter-knife wit.",0
; + kill kerrek (he is there, you have arrow but not bow)
kerrek_kill_only_arrow_message:
.byte "With what?! You gonna throw",13
.byte "that arrow at him?",0
; + kill kerrek (he is there, you have bow, not arrow
kerrek_kill_only_bow_message:
.byte "With what?! You got no",13
.byte "arrow, fool!",0
; + kill kerrek (he is dead)
; even if not on screen with dead body
kerrek_kill_kerrek_dead_message:
.byte "Yeah. You smote the Kerrek.",13
.byte "You deserve a trophy full",13
.byte "of Mutton-ums.",0
; + kill kerrek (he is not there)
kerrek_kill_kerrek_not_there_message:
.byte "Good idea. But you kinda",13
.byte "need the actual Kerrek to",13
.byte "be here for that to work.",0