From 24e90d57e005c839b1817a88021b3a86e7c072f2 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Thu, 18 Nov 2021 00:49:27 -0500 Subject: [PATCH] peasant: more hooking up archery --- games/peasant/NOTES | 3 +- .../graphics_inside/hidden_glen_priority.png | Bin 1034 -> 1035 bytes games/peasant/peasant2_actions.s | 110 +++++++++++++++++- games/peasant/text/peasant2.inc | 18 ++- 4 files changed, 122 insertions(+), 9 deletions(-) diff --git a/games/peasant/NOTES b/games/peasant/NOTES index 02daa28b..f8951d88 100644 --- a/games/peasant/NOTES +++ b/games/peasant/NOTES @@ -183,8 +183,9 @@ POINTS IMPLEMENTED: (in order of implementation) + 3 (say haldo to dongolev) + 3 (jump in hay) + 2 (fall in mud puddle) ++ 2 (give trinket to brothers) ====== - 50 points + 52 points deaths/endings implemented diff --git a/games/peasant/graphics_inside/hidden_glen_priority.png b/games/peasant/graphics_inside/hidden_glen_priority.png index 6b89d74bb9979d2dc105d04625ea196d2240253f..ff05b276e7faff0efb4a3e363105ae84042c692e 100644 GIT binary patch delta 428 zcmeC;=;qiU&%`Ds_Iv$f@yV)88ucqZT^vIyZoR!_y{_3ngw-Kvuhyx5<+Goedi14A zultzp$7|+OxPzl_x=OJE12Y?sgh9fA21aJK9uNWJxq*eCJY}$gG|?IRLy(1;+0LAY z>yh{Xm8yprcg$M_Xz;ft%QQY9oz|$CfA_#ATm8AWIe>-+AGR@hF!gZAZ=m)xqZu6Y zU&#V>8|$6%P;#EC4^)3Bah~jlRpwedL_wyV3^N2dvZcfTNU1fS)D`{_DGPGjteJVO zng1+bJQ8hUWL{=`Cgr4EXg$asY8%!b1W{M`fXenJn0>6A&jj^bBxhQwJjm3S3P7P5 z>4|0^f&M;YYcT)VpTi)Au$ifKKaBV_95bXvQ6*#`#wd0^PQ3=F6}d z&*nGl%@Y7>pPQ)W{cSB%J;%9D`Yug%#?@ModzUqXJUp-U z<`H(F%I^niq(8T7?)daYWbOAxpf$oXvgTj=GVcw@xk6{S>|UPW0=k4TF=)QSvOGJW zv62F6$4d;C+X+qra%QrsIsHt^6kpKDIQcZQwkZF#H{Xmam!At@00K`}KbLh*2~7YO C+MD12 diff --git a/games/peasant/peasant2_actions.s b/games/peasant/peasant2_actions.s index 835fbce7..ef2f3973 100644 --- a/games/peasant/peasant2_actions.s +++ b/games/peasant/peasant2_actions.s @@ -447,10 +447,55 @@ archery_get_arrow: ;================ archery_give: - ; TODO + lda CURRENT_NOUN + + cmp #NOUN_TRINKET + beq archery_give_trinket jmp parse_common_give +archery_give_trinket: + ; only if dongolev there + lda GAME_STATE_0 + and #HALDO_TO_DONGOLEV + beq archery_no_give + + lda GAME_STATE_0 + and #TRINKET_GIVEN + bne archery_give_trinket_again + + lda INVENTORY_2 + and #INV2_TRINKET + bne archery_give_trinket_first + + ; otherwise, default +archery_no_give: + jmp parse_common_give + +archery_give_trinket_first: + + ; score 2 points + lda #2 + jsr score_points + + ldx #archery_give_trinket_message + jsr partial_message_step + + jmp do_archery_game + + +archery_give_trinket_again: + ldx #archery_give_trinket_again_message + jmp finish_parse_message + + +do_archery_game: + ; play game? + + rts + ;================ ; haldo ;================ @@ -551,12 +596,18 @@ archery_talk: ; only talk if close lda PEASANT_X cmp #23 - bcc archery_talk_too_far + bcs archery_talk_close ; check Y too? ; probably less than $7D? ; actual game will walk you in if close ; will it work from beind? +archery_talk_too_far: + ldx #archery_talk_far_message + jmp finish_parse_message + +archery_talk_close: lda CURRENT_NOUN cmp #NOUN_MAN @@ -569,10 +620,60 @@ archery_talk: beq archery_talk_mendelev cmp #NOUN_ARCHER beq archery_talk_mendelev + cmp #NOUN_DONGOLEV + beq archery_talk_dongolev + cmp #NOUN_NONE + beq archery_talk_mendelev jmp parse_common_unknown +archery_talk_dongolev: + lda GAME_STATE_0 + and #HALDO_TO_DONGOLEV + bne archery_yes_dongolev + + jmp parse_common_talk + archery_talk_mendelev: + lda GAME_STATE_0 + and #TALKED_TO_MENDELEV + beq archery_no_mendelev_yet + lda GAME_STATE_0 + and #HALDO_TO_DONGOLEV + beq archery_yes_mendelev_no_dongolev + +archery_yes_dongolev: + ; three options, before trinket, after trinket, after minigame + lda GAME_STATE_0 + and #ARROW_BEATEN + bne archery_after_minigame + + lda GAME_STATE_0 + and #TRINKET_GIVEN + bne archery_after_trinket + +archery_before_trinket: + ldx #archery_talk_before_minigame_message + jmp finish_parse_message + +archery_after_trinket: + jmp archery_play_game + +archery_after_minigame: + ldx #archery_talk_after_minigame_message + jmp finish_parse_message + + +archery_yes_mendelev_no_dongolev: + ldx #archery_talk_mendelev_between_message + jmp finish_parse_message + + +archery_no_mendelev_yet: + ldx #archery_talk_mendelev_message jsr partial_message_step @@ -606,10 +707,7 @@ archer_score_points: rts -archery_talk_too_far: - ldx #archery_talk_far_message - jmp finish_parse_message + ;======================= diff --git a/games/peasant/text/peasant2.inc b/games/peasant/text/peasant2.inc index 4af0dc87..cf553bee 100644 --- a/games/peasant/text/peasant2.inc +++ b/games/peasant/text/peasant2.inc @@ -215,6 +215,7 @@ archery_talk_mendelev3_message: .byte "'haldo.'",34,0 ; + talk (after talking to him before) NOT IN WIKI +archery_talk_mendelev_between_message: .byte 34,"Tell my bro I said 'haldo'",13 .byte "if you see him,",34," he says",13 .byte "and goes back to pouting.",0 @@ -222,6 +223,7 @@ archery_talk_mendelev3_message: ; + talk (after dongolev back, before minigame) ; talk mendelev, dongolev, brothers, guy, dude, man ; (have arrow, not sure if that matters) +archery_talk_before_minigame_message: .byte 34,"Haldo!",34," say the brothers.",13 .byte 34,"Test your skill! Give us",13 .byte "the right super item from",13 @@ -229,14 +231,18 @@ archery_talk_mendelev3_message: .byte "give it as many tries as",13 .byte "you need!",34,0 +; + talk (after trinket, before minigame) same as "play game" + ; + talk (after beating the minigame) ; talk mendelev, dongolev, brothers, guy, dude, man +archery_talk_after_minigame_message: .byte 34,"Go away!",34," says Dongolev.",13 .byte 34,"We're arguing about who's",13 .byte "hotter,",34," adds Mendelev.",0 ; + 2 POINTS ; + give super trinket +archery_give_trinket_message: .byte 34,"That'll work,",34," says",13 .byte "Mendelev. Just hit 3",13 .byte "bullseyes and you win the",13 @@ -274,14 +280,22 @@ archery_talk_mendelev3_message: ;.byte "back when your shipment",13 ;.byte "comes in.",0 - .byte 34,"But since you gave us this",13 .byte "trinket, and you obviously",13 .byte "don't have a prayer of",13 .byte "winning, you can play again",13 .byte "whenever you want.",34,0 -; play game + +; give trinket (already gave) not in wiki +archery_give_trinket_again_message: +.byte "You already gave them the",13 +.byte "trinket. Fortunately, you",13 +.byte "have an open invitation to",13 +.byte "humiliate yourself at the",13 +.byte "range.",0 + +; play game, talk .byte 34,"Haldo again!",34," say the",13 .byte "brothers. ",34,"Get 3 bullseyes",13 .byte "this time and you'll win",13