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) + 2 (get super trinket)
+ 3 (win archery game) + 3 (win archery game)
+ 10 (get belt) + 10 (get belt)
+ 5 (kill kerrek)
====== ======
67 points 72 points
deaths/endings implemented deaths/endings implemented

View File

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

View File

@ -29,7 +29,7 @@ kerrek_alive_out:
sta KERREK_X sta KERREK_X
lda #76 lda #76
sta KERREK_Y sta KERREK_Y
lda #0 lda #1 ; right
sta KERREK_DIRECTION sta KERREK_DIRECTION
lda #1 lda #1
sta KERREK_SPEED sta KERREK_SPEED
@ -348,8 +348,87 @@ kerrek_save:
;================= ;=================
kerrek_kill: kerrek_kill:
kerrek_shoot: 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 "You dead. Thanks for",13
.byte "playing.",0 .byte "playing.",0
; + 5 POINTS ; + 5 POINTS
; + kill kerrek ; + kill kerrek
; + shoot Kerrek with bow ; + shoot Kerrek with bow
kerrek_kill_message:
.byte "Here goes nothin', Kid",13 .byte "Here goes nothin', Kid",13
.byte "Icarus",0 .byte "Icarus",0
; animation of shooting him, him falling ; animation of shooting him, him falling
kerrek_kill_message2:
.byte "ARROWED!! Nice shot. You",13 .byte "ARROWED!! Nice shot. You",13
.byte "smote the Kerrek! He lay",13 .byte "smote the Kerrek! He lay",13
.byte "there stinking.",0 .byte "there stinking.",0
; pause ; pause
kerrek_kill_message3:
.byte "A light rain heralds the",13 .byte "A light rain heralds the",13
.byte "washing free of the",13 .byte "washing free of the",13
.byte "Kerrek's grip on the land.",13 .byte "Kerrek's grip on the land.",13
@ -36,24 +39,30 @@ kerrek_pound_message:
.byte "bug you.",0 .byte "bug you.",0
; + kill kerrek (he is there, no bow or arrow) ; + kill kerrek (he is there, no bow or arrow)
kerrek_kill_no_bow_no_arrow_message:
.byte "With what?! You got no",13 .byte "With what?! You got no",13
.byte "weapons except your",13 .byte "weapons except your",13
.byte "butter-knife wit.",0 .byte "butter-knife wit.",0
; + kill kerrek (he is there, you have arrow but not bow) ; + kill kerrek (he is there, you have arrow but not bow)
kerrek_kill_only_arrow_message:
.byte "With what?! You gonna throw",13 .byte "With what?! You gonna throw",13
.byte "that arrow at him?",0 .byte "that arrow at him?",0
; + kill kerrek (he is there, you have bow, not arrow ; + kill kerrek (he is there, you have bow, not arrow
kerrek_kill_only_bow_message:
.byte "With what?! You got no",13 .byte "With what?! You got no",13
.byte "arrow, fool!",0 .byte "arrow, fool!",0
; + kill kerrek (he is dead) ; + 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 "Yeah. You smote the Kerrek.",13
.byte "You deserve a trophy full",13 .byte "You deserve a trophy full",13
.byte "of Mutton-ums.",0 .byte "of Mutton-ums.",0
; + kill kerrek (he is not there) ; + kill kerrek (he is not there)
kerrek_kill_kerrek_not_there_message:
.byte "Good idea. But you kinda",13 .byte "Good idea. But you kinda",13
.byte "need the actual Kerrek to",13 .byte "need the actual Kerrek to",13
.byte "be here for that to work.",0 .byte "be here for that to work.",0