diff --git a/desktop/gametodos.txt b/desktop/gametodos.txt index 92bc1a27..10333c9c 100644 --- a/desktop/gametodos.txt +++ b/desktop/gametodos.txt @@ -5,7 +5,6 @@ PROGRAMMING + fight with blergh at end isn't great + blergh taunts for first fight + ending - + you can drink the strength potion while in blood clots hand + proper save/settings file location + Save slots? + descriptions for all items when used on self. diff --git a/desktop/src-common/advent/screens/rooms/common.clj b/desktop/src-common/advent/screens/rooms/common.clj index de9bdf22..d317513e 100644 --- a/desktop/src-common/advent/screens/rooms/common.clj +++ b/desktop/src-common/advent/screens/rooms/common.clj @@ -227,6 +227,7 @@ (-> entities (update-in [:room :entities :bloodclot] #(actions/start-animation screen % :explode)) + (update-in [:room :entities] dissoc :broken-jewel) (update-in [:room :entities] dissoc :bloodclot-head) (assoc-in [:room :entities :ego :facing] :right) (update-in [:room :entities :ego] #(actions/start-animation screen % :crawl)))) @@ -318,113 +319,112 @@ (skip-type [this screen entities] :none))) +(defn do-win [entities] + (actions/do-dialogue entities + :ego "Hey Bloodclot!" + :ego "I have this potion which will make me as strong as you!" + :bloodclot-head "What?!" + :bloodclot-head "Give it here!") + (actions/transition-background entities :space [200 45] :between (fn [s e] + (-> e + (assoc-in [:room :entities :ego :stand-override] :crawl-stand) + (update-in [:room :entities :ego] #(actions/start-animation s % :crawl-stand))) + )) + (actions/do-dialogue entities + :bloodclot-head "Yes!" + :bloodclot-head "Ultimate power is mine!" + :bloodclot-head "If I drink this entire bottle, I'll be as powerful as a god!") + (explode entities) + (actions/play-animation entities :ego :standup) + (actions/walk-straight-to entities :ego [340 55]) + (actions/run-action entities + (begin [this screen entities] + (assoc-in entities [:tweens :later] (tween/tween :later screen [:room :entities :later :opacity] 0.0 1.0 4.0 :ease tween/ease-in-cubic))) + + (continue [this screen entities] + entities) + + (done? [this screen entities] + (not (get-in entities [:tweens :later]))) + + (terminate [this screen entities] + entities) + (skip-type [this screen entities] + :none)) + (Thread/sleep 2000) + (actions/do-stop entities :ego :face :left) + (actions/transition-background entities :ending [165 49] :time 4.0) + (actions/do-dialogue entities + :duke "Ladies and gentlemen." + :duke "As the Duke of Remington, I'm pleased to inform you..." + :duke "The goblin by the name of Bloodclot has been destroyed!" + :duke "Our town is saved." + :duke "Thanks to this young boy, Tick." + :duke "It is my rightful duty as Duke of Remington to knight you." + :duke "You've proven yourself worthy." + :duke "Your sword, please.") + (actions/walk-straight-to entities :ego [150 49]) + (actions/play-animation entities :ego :reach-start :stop? false) + (actions/play-animation entities :duke :reach :stop? false) + (actions/play-animation entities :ego :reach-stop :stop? false) + (actions/talk entities :duke "Kneel." :anim :reach-talk :stop? false) + (actions/play-animation entities :ego :start-squat-2 :stop? false) + (Thread/sleep 1000) + (actions/play-animation entities :duke :knight :stop? false) + (actions/update-entity entities :duke (fn [d] (assoc d :baseline (- 240 48)))) + (actions/play-animation entities :duke :knight :stop? false) + (actions/talk entities :duke "In honor of your bravery..." :anim :reach-talk :stop? false) + (actions/talk entities :duke "I declare you Sir Tick of Remington." :anim :reach-talk) + (actions/play-animation entities :ego :end-squat :stop? true) + (Thread/sleep 500) + (actions/glad entities) + (Thread/sleep 200) + (actions/do-dialogue entities :ego "Wait...") + (Thread/sleep 400) + (actions/do-stop entities :ego :face :right) + (Thread/sleep 400) + (actions/do-stop entities :ego :face :left) + (Thread/sleep 400) + (actions/do-stop entities :ego :face :right) + (Thread/sleep 400) + (actions/do-stop entities :ego :face :left) + (Thread/sleep 400) + (actions/do-dialogue entities :ego "Where's Georgia McGorgeous?") + (actions/walk-straight-to entities :gandarf-cloud [215 100] :update-baseline? false) + (actions/do-dialogue entities :gandarf "Quickly, boy!") + (actions/do-stop entities :ego :face :right) + (actions/do-dialogue entities :ego "Gandarf?" + :gandarf "Yes, it is I!" + :ego "How did you escape?" + :gandarf "No time for that!" + :gandarf "Georgia McGorgeous has been captured!" + :ego "Captured?! By who?" + :gandarf "Bloodclot's second-in-command, Swinebreath." + :gandarf "I'm afraid that I can't save her." + :gandarf "This is a job for a knight." + :gandarf "If you are willing, Tick..." + :duke "That's 'Sir Tick'..." + :gandarf "Quite right, quite right." + :gandarf "If you are willing, Sir Tick..." + :gandarf "I can transport you to the land where her prision lies." + :gandarf "But it is far out of my sight, and I know not what you'll find." + :gandarf "Well? What say you?" + :ego "I'll do it! " + :gandarf "Very good." + :gandarf "Prepare yourself.") + (Thread/sleep 300) + (actions/talk entities :gandarf "Beamium Up!!!" :anim :talk-angry) + (particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :reset) + (particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :start) + (disappear entities) + (Thread/sleep 2000) + (fade-out entities) + (on-gl (set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.credits/credits))) + ) (defn win [] - - (actions/get-script entities - (actions/do-dialogue entities - :ego "Hey Bloodclot!" - :ego "I have this potion which will make me as strong as you!" - :bloodclot-head "What?!" - :bloodclot-head "Give it here!") - (actions/transition-background entities :space [200 45] :between (fn [s e] - (-> e - (assoc-in [:room :entities :ego :stand-override] :crawl-stand) - (update-in [:room :entities :ego] #(actions/start-animation s % :crawl-stand))) - )) - (actions/do-dialogue entities - :bloodclot-head "Yes!" - :bloodclot-head "Ultimate power is mine!" - :bloodclot-head "If I drink this entire bottle, I'll be as powerful as a god!") - - (explode entities) - (actions/play-animation entities :ego :standup) - (actions/walk-straight-to entities :ego [340 55]) - (actions/run-action entities - (begin [this screen entities] - (assoc-in entities [:tweens :later] (tween/tween :later screen [:room :entities :later :opacity] 0.0 1.0 4.0 :ease tween/ease-in-cubic))) - - (continue [this screen entities] - entities) - - (done? [this screen entities] - (not (get-in entities [:tweens :later]))) - - (terminate [this screen entities] - entities) - (skip-type [this screen entities] - :none)) - (Thread/sleep 2000) - (actions/do-stop entities :ego :face :left) - (actions/transition-background entities :ending [165 49] :time 4.0) - (actions/do-dialogue entities - :duke "Ladies and gentlemen." - :duke "As the Duke of Remington, I'm pleased to inform you..." - :duke "The goblin by the name of Bloodclot has been destroyed!" - :duke "Our town is saved." - :duke "Thanks to this young boy, Tick." - :duke "It is my rightful duty as Duke of Remington to knight you." - :duke "You've proven yourself worthy." - :duke "Your sword, please.") - (actions/walk-straight-to entities :ego [150 49]) - (actions/play-animation entities :ego :reach-start :stop? false) - (actions/play-animation entities :duke :reach :stop? false) - (actions/play-animation entities :ego :reach-stop :stop? false) - (actions/talk entities :duke "Kneel." :anim :reach-talk :stop? false) - (actions/play-animation entities :ego :start-squat-2 :stop? false) - (Thread/sleep 1000) - (actions/play-animation entities :duke :knight :stop? false) - (actions/update-entity entities :duke (fn [d] (assoc d :baseline (- 240 48)))) - (actions/play-animation entities :duke :knight :stop? false) - (actions/talk entities :duke "In honor of your bravery..." :anim :reach-talk :stop? false) - (actions/talk entities :duke "I declare you Sir Tick of Remington." :anim :reach-talk) - (actions/play-animation entities :ego :end-squat :stop? true) - (Thread/sleep 500) - (actions/glad entities) - (Thread/sleep 200) - (actions/do-dialogue entities :ego "Wait...") - (Thread/sleep 400) - (actions/do-stop entities :ego :face :right) - (Thread/sleep 400) - (actions/do-stop entities :ego :face :left) - (Thread/sleep 400) - (actions/do-stop entities :ego :face :right) - (Thread/sleep 400) - (actions/do-stop entities :ego :face :left) - (Thread/sleep 400) - (actions/do-dialogue entities :ego "Where's Georgia McGorgeous?") - (actions/walk-straight-to entities :gandarf-cloud [215 100] :update-baseline? false) - (actions/do-dialogue entities :gandarf "Quickly, boy!") - (actions/do-stop entities :ego :face :right) - (actions/do-dialogue entities :ego "Gandarf?" - :gandarf "Yes, it is I!" - :ego "How did you escape?" - :gandarf "No time for that!" - :gandarf "Georgia McGorgeous has been captured!" - :ego "Captured?! By who?" - :gandarf "Bloodclot's second-in-command, Swinebreath." - :gandarf "I'm afraid that I can't save her." - :gandarf "This is a job for a knight." - :gandarf "If you are willing, Tick..." - :duke "That's 'Sir Tick'..." - :gandarf "Quite right, quite right." - :gandarf "If you are willing, Sir Tick..." - :gandarf "I can transport you to the land where her prision lies." - :gandarf "But it is far out of my sight, and I know not what you'll find." - :gandarf "Well? What say you?" - :ego "I'll do it! " - :gandarf "Very good." - :gandarf "Prepare yourself.") - (Thread/sleep 300) - (actions/talk entities :gandarf "Beamium Up!!!" :anim :talk-angry) - (particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :reset) - (particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :start) - (disappear entities) - (Thread/sleep 2000) - (fade-out entities) - (on-gl (set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.credits/credits))) - )) + (actions/get-script entities (do-win entities))) (defn make-outside-particles [] diff --git a/desktop/src-common/advent/screens/rooms/space.clj b/desktop/src-common/advent/screens/rooms/space.clj index f5ae8a5f..bc7293ba 100644 --- a/desktop/src-common/advent/screens/rooms/space.clj +++ b/desktop/src-common/advent/screens/rooms/space.clj @@ -292,7 +292,7 @@ :apply-state (fn [_ e] (as-> e e (if (get-in e [:state :broke-jewel?]) - (assoc-in e [:room :entities :broken-jewel] (get-in e [:room :entities :broken-jewel])) + (assoc-in e [:room :entities :broken-jewel] (get-in e [:room :broken-jewel])) e) (if (get-in e [:state :seen-bloodclot?]) (assoc-in e [:room :entities :bloodclot :opacity ] 1.0) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 2ffa653f..f9aa44ba 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -285,38 +285,6 @@ void main() ((:get-script default-interaction) (get-in entities [:cursor :current]) [x y])) entities)) (assoc-in entities [:cursor :down-target] nil))) -(defn drink-blergh [entities] - (actions/walk-straight-to entities :ego [205 45]) - (sound! (sound "ego/potion.ogg") :play (utils/current-sound-volume)) - (actions/play-animation entities :ego :grow :stop? false) - (actions/do-dialogue entities - :blergh "What this? A potion of strength?" - :blergh "You're still no match for me." - :blergh "Give it to me, or I'll make you regret it!") - (actions/present-choices entities {:choices ["Ok." - {:run (fn [_] - (actions/talk entities :ego "Ok." :anim :grow-talk :stop? false) - (actions/talk entities :ego "Here you go." :anim :grow-talk) - (actions/do-dialogue entities - :blergh "Yes! Now I can drink this whole thing and can become powerful enough to rule the world!" - :blergh "[#AAFFAAFF]*gulp*[]" - :blergh "What's this? What's happening?") - (actions/talk entities :ego "Uh oh." :anim :grow-talk :stop? false) - (actions/walk-straight-to entities :ego [100 45] :face :right) - (actions/play-animation entities :blergh :grow :stop? false) - (actions/do-dialogue entities :ego "'Not more than that do drink,\nOr you'll push your body to the brink.'" - :ego "Brilliant! I win!") - (actions/walk-straight-to entities :ego [800 75] :face :right) - (actions/update-state entities (fn [s] (assoc s :blergh-dead? true))))} - "No way!" - {:run (fn [_] - (actions/talk entities :ego "No way!" :anim :grow-talk) - (actions/talk entities :blergh "Then take this!") - (actions/play-animation entities :blergh :swing) - (actions/walk-straight-to entities :ego [100 45] :anim :squat :override-dir :right :speed 3.0) - (actions/do-dialogue entities :ego "Yeow!!" - :ego "Even with that potion, I'm not strong enough."))}]})) - (defn get-ego-script [cursor [x y]] (condp = (:value cursor) @@ -325,9 +293,9 @@ void main() :flask-1-strength (actions/get-script entities - (cond (and (actions/has-item? entities :magic-slingshot) - (get-in @entities [:room :blergh])) - (drink-blergh entities) + (cond (= :held + (get-in @entities [:state :last-room])) + (common/do-win entities) (get-in @entities [:room :entities :warden]) (do