diff --git a/games/peasant/NOTES b/games/peasant/NOTES index 0d658402..236218ca 100644 --- a/games/peasant/NOTES +++ b/games/peasant/NOTES @@ -193,8 +193,9 @@ POINTS IMPLEMENTED: (in order of implementation) + 7 (talk to knight once have belt, robe, and on fire) + 7 (get riches from jhonka) + 5 (throw baby) ++ 5 (deploy baby) ====== - 91 points + 96 points deaths/endings implemented diff --git a/games/peasant/peasant3_actions.s b/games/peasant/peasant3_actions.s index 6d6e848e..051a33c8 100644 --- a/games/peasant/peasant3_actions.s +++ b/games/peasant/peasant3_actions.s @@ -858,6 +858,13 @@ lake_west_throw_baby: and #INV1_BABY beq lake_west_throw_baby_no_baby + ; next see if baby gone + + lda INVENTORY_1_GONE + and #INV1_BABY + bne lake_west_throw_baby_no_baby + + ; see if in right spot ; TODO: lda PEASANT_X diff --git a/games/peasant/peasant4_actions.s b/games/peasant/peasant4_actions.s index 9861af22..bea2e9c7 100644 --- a/games/peasant/peasant4_actions.s +++ b/games/peasant/peasant4_actions.s @@ -43,6 +43,10 @@ ned_cottage_verb_table: .word ned_cottage_use-1 .byte VERB_TRY .word ned_cottage_try-1 + .byte VERB_PUT + .word ned_cottage_put-1 + .byte VERB_CLOSE + .word ned_cottage_close-1 .byte 0 ;================ @@ -62,6 +66,35 @@ ned_cottage_climb_fence: ldy #>ned_cottage_climb_fence_message jmp finish_parse_message + ;================ + ; close + ;================ +ned_cottage_close: + lda CURRENT_NOUN + + cmp #NOUN_DOOR + beq ned_cottage_close_door + + jmp parse_common_unknown + +ned_cottage_close_door: + ; see if baby gone + lda INVENTORY_1_GONE + and #INV1_BABY + bne ned_cottage_close_door_after + +ned_cottage_close_door_before: + ldx #ned_cottage_close_door_before_message + jmp finish_parse_message + +ned_cottage_close_door_after: + ldx #ned_cottage_close_door_after_message + jmp finish_parse_message + + + ;================ ; knock ;================ @@ -117,10 +150,21 @@ ned_cottage_open: jmp parse_common_unknown ned_cottage_open_door: + ; see if baby was deployed + lda INVENTORY_1_GONE + and #INV1_BABY + bne ned_cottage_open_door_after_baby + +ned_cottage_open_door_before_baby: ldx #ned_cottage_open_door_message jmp finish_parse_message +ned_cottage_open_door_after_baby: + ldx #ned_cottage_open_door_after_baby_message + jmp finish_parse_message + ;================ ; push/pull ;================ @@ -225,6 +269,7 @@ ned_cottage_rock_moved: ned_cottage_deploy: ned_cottage_drop: ned_cottage_use: +ned_cottage_put: lda CURRENT_NOUN cmp #NOUN_BABY @@ -233,10 +278,67 @@ ned_cottage_use: jmp parse_common_unknown ned_cottage_baby: + ; see if have baby + lda INVENTORY_1 + and #INV1_BABY + beq ned_cottage_baby_nobaby + + ; see if baby gone + lda INVENTORY_1_GONE + and #INV1_BABY + bne ned_cottage_baby_gone + + ; check_if_rock_moved + lda GAME_STATE_2 + and #COTTAGE_ROCK_MOVED + beq ned_cottage_baby_before + + ; see if baby was deployed + lda INVENTORY_1_GONE + and #INV1_BABY + bne ned_cottage_baby_gone + +ned_cottage_baby_deploy: + ; actually deploy baby + + ldx #ned_cottage_deploy_baby_message + jsr partial_message_step + + ; add points + lda #5 + jsr score_points + + ; baby is gone + lda INVENTORY_1_GONE + ora #INV1_BABY + sta INVENTORY_1_GONE + + + ldx #ned_cottage_deploy_baby_message2 + jsr partial_message_step + + ldx #ned_cottage_deploy_baby_message3 + jmp finish_parse_message + + +ned_cottage_baby_before: ; before rock ldx #ned_cottage_baby_before_message jmp finish_parse_message +ned_cottage_baby_nobaby: + ldx #ned_cottage_baby_nobaby_message + jmp finish_parse_message + +ned_cottage_baby_gone: + ldx #ned_cottage_baby_gone_message + jmp finish_parse_message + ;=================== ; break/kick/punch @@ -340,10 +442,22 @@ ned_cottage_look_at_rock: jmp finish_parse_message ned_cottage_look_at_hole: + + ; see if baby was deployed + lda INVENTORY_1_GONE + and #INV1_BABY + bne ned_cottage_look_at_hole_after + +ned_cottage_look_at_hole_before: ldx #ned_cottage_look_hole_message jmp finish_parse_message +ned_cottage_look_at_hole_after: + ldx #ned_cottage_look_hole_after_message + jmp finish_parse_message + ;======================= ;======================= diff --git a/games/peasant/save1.s b/games/peasant/save1.s index 5de20d9d..4e692888 100644 --- a/games/peasant/save1.s +++ b/games/peasant/save1.s @@ -32,7 +32,7 @@ .byte $20 ; SCORE_TENSONES= $9F .byte INV1_ARROW | INV1_BABY | INV1_KERREK_BELT | INV1_CHICKEN_FEED | INV1_BOW | INV1_MONSTER_MASK | INV1_PEBBLES | INV1_PILLS ; INVENTORY_1 = $A0 -.byte INV2_RICHES|INV2_MEATBALL_SUB | INV2_TRINKET +.byte INV2_RICHES| INV2_SODA | INV2_MEATBALL_SUB | INV2_TRINKET ; INVENTORY_2 = $A1 .byte INV3_SHIRT|INV3_MAP ; INVENTORY_3 = $A2 diff --git a/games/peasant/saves/save1_16_soda.s b/games/peasant/saves/save1_16_soda.s new file mode 100644 index 00000000..4e692888 --- /dev/null +++ b/games/peasant/saves/save1_16_soda.s @@ -0,0 +1,46 @@ +; SAVE1 -- After getting the pills + +.include "zp.inc" + +; want to load this to address $90 + +; +.byte LOAD_PEASANT4 ; WHICH_LOAD = $90 +.byte 10 ; PEASANT_X = $91 +.byte 100 ; PEASANT_Y = $92 +.byte PEASANT_DIR_UP ; PEASANT_DIR = $93 +.byte 0 ; MAP_X = $94 +.byte 1 ; MAP_Y = $95 +.byte LOCATION_OUTSIDE_LADY ; MAP_LOCATION = $96 +.byte TALKED_TO_MENDELEV | HALDO_TO_DONGOLEV | ARROW_BEATEN| GARY_SCARED | TRINKET_GIVEN | LADY_GONE + ; BABY_IN_WELL | BUCKET_DOWN_WELL + ; GAME_STATE_0 = $97 +.byte FISH_FED | PUDDLE_WET + ; RAINING + ; FISH_FED | IN_HAY_BALE | NIGHT | POT_ON_HEAD | WEARING_ROBE + ; GAME_STATE_1 = $98 +.byte TALKED_TO_KNIGHT + ; ON_FIRE | COTTAGE_ROCK_MOVED | KNUCKLES_BLEED + ; DRESSER_OPEN | COVERED_IN_MUD | GOT_MUDDY_ALREADY + ; GAME_STATE_2 = $99 +.byte $00 ; NED_STATUS = $9A +.byte BUSH_1_SEARCHED | BUSH_2_SEARCHED | BUSH_3_SEARCHED | BUSH_4_SEARCHED + ; BUSH_STATUS = $9B +.byte KERREK_ROW1 | KERREK_DECOMPOSING ; KERREK_STATE = $9C +.byte $00 ; ARROW_SCORE = $9D +.byte $00 ; SCORE_HUNDREDS= $9E +.byte $20 ; SCORE_TENSONES= $9F +.byte INV1_ARROW | INV1_BABY | INV1_KERREK_BELT | INV1_CHICKEN_FEED | INV1_BOW | INV1_MONSTER_MASK | INV1_PEBBLES | INV1_PILLS + ; INVENTORY_1 = $A0 +.byte INV2_RICHES| INV2_SODA | INV2_MEATBALL_SUB | INV2_TRINKET + ; INVENTORY_2 = $A1 +.byte INV3_SHIRT|INV3_MAP + ; INVENTORY_3 = $A2 +.byte INV1_ARROW| INV1_CHICKEN_FEED | INV1_PEBBLES + ; INVENTORY_1_GONE = $A3 +.byte INV2_RICHES | INV2_TRINKET + ; INVENTORY_2_GONE_= $A4 +.byte $00 ; INVENTORY_3_GONE = $A5 +.byte 22 ; KERREK_X = $A6 +.byte 76 ; KERREK_Y = $A7 + diff --git a/games/peasant/text/peasant4.inc b/games/peasant/text/peasant4.inc index d40921d4..0d4227f2 100644 --- a/games/peasant/text/peasant4.inc +++ b/games/peasant/text/peasant4.inc @@ -25,6 +25,7 @@ ned_cottage_open_door_message: .byte "How? There's no knob.",0 ; + open door (after baby opens) +ned_cottage_open_door_after_baby_message: .byte "It's already open. Since",13 .byte "this is an adventure game",13 .byte "we're gonna proffer you",13 @@ -33,10 +34,12 @@ ned_cottage_open_door_message: ; + pull door ; + push door +; same even when open ned_cottage_push_door_message: .byte "It doesn't budge, man.",0 ; + knock +; same even when open ned_cottage_knock_door_message: .byte "You could knock until your",13 .byte "knuckles bleed. Nobody's",13 @@ -78,6 +81,7 @@ ned_cottage_look_hole_message: .byte "appears to be empty.",0 ; + look hole (after deploying baby) +ned_cottage_look_hole_after_message: .byte "There is no baby here, but",13 .byte "there's an open door on the",13 .byte "other side of the room. If",13 @@ -130,9 +134,13 @@ ned_cottage_try_message: .byte "nothing.",0 ;+5 POINTS +; + deploy baby ; + put baby into the hole +ned_cottage_deploy_baby_message: .byte "Deploying Q-Baby...",0 +; animation +ned_cottage_deploy_baby_message2: .byte "Way to go, baby! It got the",13 .byte "cottage door opened and",13 .byte "headed off to a new life.",13 @@ -145,6 +153,7 @@ ned_cottage_try_message: .byte "building better cottages",13 .byte "for a better tomorrow.",0 +ned_cottage_deploy_baby_message3: .byte "You grow apart and the",13 .byte "letters from him become",13 .byte "fewer and fewer. He",13 @@ -153,15 +162,19 @@ ned_cottage_try_message: .byte "never being there.",0 ; + deploy/drop/use baby (before baby) -ned_cottage_baby_before_message: +ned_cottage_baby_nobaby_message: .byte "Swell idea, but is you",13 .byte "ain't my baby? I.e. you",13 .byte "ain't got one?",0 ; + deploy/drop/use baby (before moving stone) -.byte "Use the baby where? You haven't anywhere inconsiderate to stuff 'm.",0 +ned_cottage_baby_before_message: +.byte "Use the baby where? You",13 +.byte "haven't anywhere",13 +.byte "inconsiderate to stuff'm.",0 ; + deploy/drop/use baby (after baby left) +ned_cottage_baby_gone_message: .byte "Li'l P.B. has moved on, and",13 .byte "the door seems to be",13 .byte "open... I can't see why",13 @@ -169,10 +182,12 @@ ned_cottage_baby_before_message: .byte "over again.",0 ; + close door (before baby opens) +ned_cottage_close_door_before_message: .byte "Already done. That was",13 .byte "easy!",0 ; + close door (after baby opens) +ned_cottage_close_door_after_message: .byte "You can't. That baby really",13 .byte "wrenched it open good.",0