diff --git a/desktop/resources/inside-stash/lid.png b/desktop/resources/inside-stash/lid.png index 3abdc421..3ba003e2 100644 Binary files a/desktop/resources/inside-stash/lid.png and b/desktop/resources/inside-stash/lid.png differ diff --git a/desktop/src-common/advent/screens/rooms/inside_stash.clj b/desktop/src-common/advent/screens/rooms/inside_stash.clj index ad737adf..e19f509f 100644 --- a/desktop/src-common/advent/screens/rooms/inside_stash.clj +++ b/desktop/src-common/advent/screens/rooms/inside_stash.clj @@ -9,6 +9,42 @@ [play-clj.utils :refer :all] [play-clj.g2d :refer :all])) +(defn bust-chest [entities] + (if (get-in @entities [:state :broke-lock?]) + (do + (actions/talk entities :ego "I already bust it open.")) + (do + (actions/talk entities :ego "Let's see if this can pry this puppy open.") + (actions/walk-straight-to entities :ego [152 95] :face :right) + (actions/play-animation entities :ego :crowbar) + (actions/remove-entity entities :lid) + (actions/update-state entities #(assoc % :broke-lock? true)) + (actions/talk entities :ego "Got it!")))) + +(defn explore-chest [entities] + (cond + (actions/has-item? entities :slingshot) + (do (actions/walk-to entities :ego [152 95]) + (actions/talk entities :ego "It's empty now.")) + (get-in @entities [:state :broke-lock?]) + (do + (actions/walk-to entities :ego [152 95]) + (actions/talk entities :ego "Let's see what's inside now.") + (actions/play-animation entities :ego :reach) + (actions/do-dialogue entities + :ego "Yes! I got my stuff back!" + :ego "Including the Slinger's shot!") + (actions/give entities :flask-1-strength) + (actions/give entities :medal) + (actions/give entities :trophy) + (actions/give entities :slingshot)) + :else + (do + (actions/walk-to entities :ego [152 95]) + (actions/talk entities :ego "Maybe my stuff is in here...") + (actions/play-animation entities :ego :reach) + (actions/talk entities :ego "It's locked tight!")))) + (defn make [screen] @@ -22,19 +58,17 @@ (actions/walk-straight-to entities :ego [167 100])) :cursor :left} :chest {:box [151 107 180 124] - :script (actions/get-script entities - (actions/walk-to entities :ego [152 95]) - (actions/talk entities :ego "Maybe my stuff is in here...") - (actions/play-animation entities :ego :reach) - (actions/talk entities :ego "It's locked tight!")) + :script (actions/get-script entities (explore-chest entities)) :scripts {:sword (actions/get-script entities (actions/talk entities :ego "There's not enough room to swing my sword here.")) :crowbar (actions/get-script entities - (actions/talk entities :ego "Let's see if this can open this puppy up.") - (actions/walk-straight-to entities :ego [152 95] :face :right) - (actions/play-animation entities :ego :crowbar) - )}}} + (bust-chest entities))}}} :layers [(assoc (texture "inside-stash/background.png") :x 0 :y 0 :baseline 0)] - :entities {} + :entities {:lid (assoc (texture "inside-stash/lid.png") + :x 156 :y 116 :baseline 125)} :collision "inside-stash/collision.png" :scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.00) - :start-pos [143 96])) + :start-pos [143 96] + :apply-state (fn [entities] + (if (get-in entities [:state :broke-lock?]) + (update-in entities [:room :entities] #(dissoc % :lid)) + entities))))