diff --git a/desktop/resources/inside-castle/brian-working.png b/desktop/resources/inside-castle/brian-working.png new file mode 100644 index 00000000..14bb7f4e Binary files /dev/null and b/desktop/resources/inside-castle/brian-working.png differ diff --git a/desktop/resources/inside-castle/brian-working.pxa/0.pxi b/desktop/resources/inside-castle/brian-working.pxa/0.pxi new file mode 100644 index 00000000..7bdcaedc Binary files /dev/null and b/desktop/resources/inside-castle/brian-working.pxa/0.pxi differ diff --git a/desktop/resources/inside-castle/brian-working.pxa/1.pxi b/desktop/resources/inside-castle/brian-working.pxa/1.pxi new file mode 100644 index 00000000..7622c0e0 Binary files /dev/null and b/desktop/resources/inside-castle/brian-working.pxa/1.pxi differ diff --git a/desktop/resources/inside-castle/brian-working.pxa/2.pxi b/desktop/resources/inside-castle/brian-working.pxa/2.pxi new file mode 100644 index 00000000..cdeccd5e Binary files /dev/null and b/desktop/resources/inside-castle/brian-working.pxa/2.pxi differ diff --git a/desktop/resources/inside-castle/brian-working.pxa/3.pxi b/desktop/resources/inside-castle/brian-working.pxa/3.pxi new file mode 100644 index 00000000..dd15b7a0 Binary files /dev/null and b/desktop/resources/inside-castle/brian-working.pxa/3.pxi differ diff --git a/desktop/resources/inside-castle/brian-working.pxa/CelData.plist b/desktop/resources/inside-castle/brian-working.pxa/CelData.plist new file mode 100644 index 00000000..f0b74d60 --- /dev/null +++ b/desktop/resources/inside-castle/brian-working.pxa/CelData.plist @@ -0,0 +1,22 @@ + + + + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + diff --git a/desktop/src-common/advent/screens/rooms/inside_castle.clj b/desktop/src-common/advent/screens/rooms/inside_castle.clj index e4a65590..bcf87fe4 100644 --- a/desktop/src-common/advent/screens/rooms/inside_castle.clj +++ b/desktop/src-common/advent/screens/rooms/inside_castle.clj @@ -12,6 +12,30 @@ [play-clj.ui :refer :all] [play-clj.utils :refer :all] [play-clj.g2d :refer :all])) + +(defn brian [screen entities] + (when (and (not (get-in entities [:actions :script-running?])) + (get-in entities [:state :active?]) + (get-in entities [:room :entities :game-player])) + ((actions/get-script entities + ((rand-nth [#(actions/do-dialogue entities :game-player "2 to the power of pi." + :game-player "No, that's not right.") + #(actions/do-dialogue entities :game-player "Eureka!" + :game-player "It's been staring at me in the face!" + :game-player "It's E=mc2!") + #(actions/do-dialogue entities :game-player "Now, according to Croutonian physics..." + :game-player "There are three states of matter." + :game-player "Solid, liquid, and ..." + :game-player "What was that last one?" + :game-player "Oh yeah, jelly." + :game-player "Brian, you're a genius!") + #(actions/do-dialogue entities :game-player "Considering the inverse square law..." + :game-player "I estimate our planet's escape velocity to be..." + :game-player "No, that can't be right.")])) + ) + entities)) + nil) + (defn get-chorus-volume [entities] (let [ego (get-in entities [:room :entities :ego])] (cond (> (:y ego) 112) @@ -93,9 +117,11 @@ (defn do-game-player-dialogue [entities] (walk-to-player entities) - (actions/do-dialogue entities :ego "You there!" - :game-player "... Oh, hello Tick. " - :game-player "What is it?") + (actions/do-dialogue entities :ego "You there!") + (actions/talk entities :game-player "What is it? I'm busy!" :anim :talk-down) + (Thread/sleep 200) + (actions/do-stop entities :game-player :face :right) + (actions/talk entities :game-player "Oh, it's you Tick.") (actions/present-choices entities {:choices ["Do you know anything about the sword in the stone up there?" {:run #(actions/respond entities % @@ -138,7 +164,8 @@ :game-player "'Hippity-hop, I'd jump so high,\nWithout these springs, can't harm a fly.'") :choices actions/previous-choices} "Nevermind." - {:run #(actions/respond entities % :game-player "See you around.")}]})) + {:run #(actions/respond entities % :game-player "See you around.")}]}) + (actions/do-stop entities :game-player :face :left)) (defn walk-to-blergh [entities] (actions/walk-to entities :ego [85 145] :face :right) @@ -236,11 +263,13 @@ (defn make [screen] (let [game-player-talk-sheet (texture! (texture "inside-castle/game-player-talk.png") :split 40 44) - game-player-talk (animation 0.15 (for [i [0 2 0 2 0 2 0 3 0 2 0 1 0 0 0 0 2 0 2 0 3 0 1 0 1 0 0 1 0 2 0 3 0]] + game-player-talk-up (animation 0.15 (for [i [0 2 0 2 0 2 0 3 0 2 0 1 0 0 0 0 2 0 2 0 3 0 1 0 1 0 0 1 0 2 0 3 0]] (aget game-player-talk-sheet 0 i))) - game-player-stand (animation 0.15 (for [i [0 0 0 0 0 0 0 0 0 0 0 1]] + game-player-stand-up (animation 0.15 (for [i [0 0 0 0 0 0 0 0 0 0 0 1]] (aget game-player-talk-sheet 0 i))) + game-player-stand-down (utils/make-anim "inside-castle/brian-working.png" [40 44] 0.1 [0 1 1 2 0 2 2 1 0 2 2 2 2 2 1 1 ]) + game-player-talk-down (utils/make-anim "inside-castle/brian-working.png" [40 44] 0.2 [2 3 2 2 3 2 3 2]) game-player-flex (animation 0.075 (for [i [0 0 4 4 5 5 5 5 5 5 5 6 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 6 5 5 5 5 5 5 5 5 5 5 4 4 0 0 0 0]] (aget game-player-talk-sheet 0 i))) trophy (utils/make-anim "inside-castle/trophy.png" [16 16] 0.1 (flatten [(repeat 50 0) 1 2 3 3 3 3 2 1])) @@ -249,6 +278,7 @@ door (utils/make-anim "inside-castle/door.png" [21 49] 0.15 (flatten [(range 4) 3 3 3 3 3 3 3])) ] (rooms/make :music {:day :town-1 :night :night :sunrise :night} + :timers {:brian [10.0 20.0 brian]} :interactions {:right-door {:box [286 140 306 160] :cursor :right @@ -397,7 +427,7 @@ (actions/play-animation entities :ego :end-squat))) :trophy (assoc (animation->texture screen trophy) - :x 253 :y 69 :baseline 191 + :x 233 :y 69 :baseline 191 :anim trophy :anim-start 0 :script (actions/get-script entities @@ -409,8 +439,9 @@ (actions/do-dialogue entities :ego "Can't you give me your trophy of wisdom?" :game-player "If you want my trophy, you'll have to help me with my riddles.")))) :game-player (assoc (texture "inside-castle/gameplayer.png") :x 266 :y 49 :baseline 191 - `:talk-color (color 1.0 0.3 0.2 1.0) + :talk-color (color 1.0 0.3 0.2 1.0) :script (actions/get-script entities (do-game-player-dialogue entities)) + :facing :left :scripts #(condp = % :wool (actions/get-script entities (walk-to-player entities) @@ -463,12 +494,19 @@ :done (actions/do-dialogue entities :game-player "I've gotten all the help I need with riddles today.") nil (actions/do-dialogue entities :game-player "Why are you offering me this?") (actions/do-dialogue entities :ego "What about this?" :game-player "No, that's not the solution. Keep looking.")))) - :anim game-player-stand + :anim game-player-stand-down :anim-start 0 - :stand game-player-stand - :anim-sound-frames {game-player-stand {11 [:blink 0.3] }} - :flex game-player-flex - :talk game-player-talk)} + :anim-merges {game-player-stand-down {:origin-x 8} + game-player-stand-up {:origin-x 3} + game-player-talk-up {:origin-x 3} + game-player-talk-down {:origin-x 8} + game-player-flex {:origin-x 3}} + :left {:stand game-player-stand-down + :talk game-player-talk-down} + :right {:stand game-player-stand-up + :talk game-player-talk-up} + :anim-sound-frames {game-player-stand-up {11 [:blink 0.3] }} + :flex game-player-flex)} :monocle (rooms/make-entity :monocle (assoc (animation->texture screen monocle) :x 209 :y 160 :baseline 240 :anim monocle