diff --git a/desktop/fight-blergh.edn b/desktop/fight-blergh.edn new file mode 100644 index 00000000..e54d9fee --- /dev/null +++ b/desktop/fight-blergh.edn @@ -0,0 +1 @@ +{:active? true, :convinced-wizard? true, :time :day, :inventory [:ladder :glass-eye :recipe :grass :medal :kiss :trophy :flask-1-strength :sword], :wizard-left? false, :clues #{}, :current-riddle :wool, :last-room :space, :wants-toy true, :mints-eaten 0, :object nil, :obtained-items #{:kiss :medal :sword :flask-1 :grass :ladder :trophy}} \ No newline at end of file diff --git a/desktop/resources/ego/burnt.png b/desktop/resources/ego/burnt.png new file mode 100644 index 00000000..2fbbb402 Binary files /dev/null and b/desktop/resources/ego/burnt.png differ diff --git a/desktop/resources/ego/burnt.pxa/0.pxi b/desktop/resources/ego/burnt.pxa/0.pxi new file mode 100644 index 00000000..105044b9 Binary files /dev/null and b/desktop/resources/ego/burnt.pxa/0.pxi differ diff --git a/desktop/resources/ego/burnt.pxa/1.pxi b/desktop/resources/ego/burnt.pxa/1.pxi new file mode 100644 index 00000000..b86f0810 Binary files /dev/null and b/desktop/resources/ego/burnt.pxa/1.pxi differ diff --git a/desktop/resources/ego/burnt.pxa/10.pxi b/desktop/resources/ego/burnt.pxa/10.pxi new file mode 100644 index 00000000..6d3c8722 Binary files /dev/null and b/desktop/resources/ego/burnt.pxa/10.pxi differ diff --git a/desktop/resources/ego/burnt.pxa/11.pxi b/desktop/resources/ego/burnt.pxa/11.pxi new file mode 100644 index 00000000..75eebfd5 Binary files /dev/null and b/desktop/resources/ego/burnt.pxa/11.pxi differ diff --git a/desktop/resources/ego/burnt.pxa/2.pxi b/desktop/resources/ego/burnt.pxa/2.pxi new file mode 100644 index 00000000..fcf37759 Binary files /dev/null and b/desktop/resources/ego/burnt.pxa/2.pxi differ diff --git a/desktop/resources/ego/burnt.pxa/3.pxi b/desktop/resources/ego/burnt.pxa/3.pxi new file mode 100644 index 00000000..36036f2c Binary files /dev/null and b/desktop/resources/ego/burnt.pxa/3.pxi differ diff --git a/desktop/resources/ego/burnt.pxa/4.pxi b/desktop/resources/ego/burnt.pxa/4.pxi new file mode 100644 index 00000000..8cb50487 Binary files /dev/null and b/desktop/resources/ego/burnt.pxa/4.pxi differ diff --git a/desktop/resources/ego/burnt.pxa/5.pxi b/desktop/resources/ego/burnt.pxa/5.pxi new file mode 100644 index 00000000..60ffb53b Binary files /dev/null and b/desktop/resources/ego/burnt.pxa/5.pxi differ diff --git a/desktop/resources/ego/burnt.pxa/6.pxi b/desktop/resources/ego/burnt.pxa/6.pxi new file mode 100644 index 00000000..ef5421fa Binary files /dev/null and b/desktop/resources/ego/burnt.pxa/6.pxi differ diff --git a/desktop/resources/ego/burnt.pxa/7.pxi b/desktop/resources/ego/burnt.pxa/7.pxi new file mode 100644 index 00000000..68126302 Binary files /dev/null and b/desktop/resources/ego/burnt.pxa/7.pxi differ diff --git a/desktop/resources/ego/burnt.pxa/8.pxi b/desktop/resources/ego/burnt.pxa/8.pxi new file mode 100644 index 00000000..9d387312 Binary files /dev/null and b/desktop/resources/ego/burnt.pxa/8.pxi differ diff --git a/desktop/resources/ego/burnt.pxa/9.pxi b/desktop/resources/ego/burnt.pxa/9.pxi new file mode 100644 index 00000000..d629af53 Binary files /dev/null and b/desktop/resources/ego/burnt.pxa/9.pxi differ diff --git a/desktop/resources/ego/burnt.pxa/CelData.plist b/desktop/resources/ego/burnt.pxa/CelData.plist new file mode 100644 index 00000000..a0e63ed4 --- /dev/null +++ b/desktop/resources/ego/burnt.pxa/CelData.plist @@ -0,0 +1,54 @@ + + + + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + diff --git a/desktop/resources/ego/shock.png b/desktop/resources/ego/shock.png new file mode 100644 index 00000000..2303f4fe Binary files /dev/null and b/desktop/resources/ego/shock.png differ diff --git a/desktop/resources/ego/shock.pxa/0.pxi b/desktop/resources/ego/shock.pxa/0.pxi new file mode 100644 index 00000000..26babe96 Binary files /dev/null and b/desktop/resources/ego/shock.pxa/0.pxi differ diff --git a/desktop/resources/ego/shock.pxa/1.pxi b/desktop/resources/ego/shock.pxa/1.pxi new file mode 100644 index 00000000..34619bf8 Binary files /dev/null and b/desktop/resources/ego/shock.pxa/1.pxi differ diff --git a/desktop/resources/ego/shock.pxa/2.pxi b/desktop/resources/ego/shock.pxa/2.pxi new file mode 100644 index 00000000..934c7405 Binary files /dev/null and b/desktop/resources/ego/shock.pxa/2.pxi differ diff --git a/desktop/resources/ego/shock.pxa/3.pxi b/desktop/resources/ego/shock.pxa/3.pxi new file mode 100644 index 00000000..2bc097b0 Binary files /dev/null and b/desktop/resources/ego/shock.pxa/3.pxi differ diff --git a/desktop/resources/ego/shock.pxa/4.pxi b/desktop/resources/ego/shock.pxa/4.pxi new file mode 100644 index 00000000..98b4098b Binary files /dev/null and b/desktop/resources/ego/shock.pxa/4.pxi differ diff --git a/desktop/resources/ego/shock.pxa/5.pxi b/desktop/resources/ego/shock.pxa/5.pxi new file mode 100644 index 00000000..54c9b631 Binary files /dev/null and b/desktop/resources/ego/shock.pxa/5.pxi differ diff --git a/desktop/resources/ego/shock.pxa/6.pxi b/desktop/resources/ego/shock.pxa/6.pxi new file mode 100644 index 00000000..5f0b20ee Binary files /dev/null and b/desktop/resources/ego/shock.pxa/6.pxi differ diff --git a/desktop/resources/ego/shock.pxa/7.pxi b/desktop/resources/ego/shock.pxa/7.pxi new file mode 100644 index 00000000..d13fa7e5 Binary files /dev/null and b/desktop/resources/ego/shock.pxa/7.pxi differ diff --git a/desktop/resources/ego/shock.pxa/8.pxi b/desktop/resources/ego/shock.pxa/8.pxi new file mode 100644 index 00000000..90142af6 Binary files /dev/null and b/desktop/resources/ego/shock.pxa/8.pxi differ diff --git a/desktop/resources/ego/shock.pxa/CelData.plist b/desktop/resources/ego/shock.pxa/CelData.plist new file mode 100644 index 00000000..9088485c --- /dev/null +++ b/desktop/resources/ego/shock.pxa/CelData.plist @@ -0,0 +1,42 @@ + + + + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + diff --git a/desktop/src-common/advent/actions.clj b/desktop/src-common/advent/actions.clj index 81d4eaa7..83b31b19 100644 --- a/desktop/src-common/advent/actions.clj +++ b/desktop/src-common/advent/actions.clj @@ -161,7 +161,7 @@ (can-skip? [this screen entities] false)))) -(defn play-animation [entities target-id anim & {:keys [stop?]}] +(defn play-animation [entities target-id anim & {:keys [stop? continue?]}] (run-action entities (begin [this screen entities] (update-in entities [:room :entities target-id] #(start-animation screen % anim) )) @@ -174,9 +174,11 @@ (- (:total-time screen) (get-in entities [:room :entities target-id :anim-start])))) (terminate [this screen entities] - (if (or (nil? stop?) stop?) - (stop screen entities target-id) - (assoc-in entities [:room :entities target-id :anim] nil))) + (if continue? + entities + (if (or (nil? stop?) stop?) + (stop screen entities target-id) + (assoc-in entities [:room :entities target-id :anim] nil)))) (can-skip? [this screen entities] false))) diff --git a/desktop/src-common/advent/screens/rooms/space.clj b/desktop/src-common/advent/screens/rooms/space.clj index 8386147b..d3a033e7 100644 --- a/desktop/src-common/advent/screens/rooms/space.clj +++ b/desktop/src-common/advent/screens/rooms/space.clj @@ -159,12 +159,11 @@ #_(actions/play-animation entities :ego :swing) (actions/do-dialogue entities :blergh "Ha ha ha! Is that the best you can do?" :blergh "Take this!") - (actions/play-animation entities :blergh :swing) - (actions/walk-straight-to entities :ego [35 45] :anim :squat :override-dir :right :speed 3.0) - (actions/do-dialogue entities :ego "Ouch!" - :blergh "My turn.") + (actions/play-animation entities :ego :shock :stop? false) + (actions/play-animation entities :ego :burnt :stop? false) + (actions/play-animation entities :ego :passed-out :continue? true) - #_(common/go-to-jail entities) + (common/go-to-jail entities) #_(actions/do-dialogue entities :ego "Hey!" :ego "What's going on? I was just about to teach Blergh a lesson!")) :magic-slingshot (actions/get-script entities @@ -189,7 +188,7 @@ :x 222 :y 172 :baseline 240) :collision "space/collision.png" :scale-fn (constantly 1.5) - :start-pos [140 55] + :start-pos [35 45] :apply-state (fn [e] (as-> e e (if (get-in e [:state :broke-jewel?]) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 0cb21139..3418bab4 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -184,6 +184,9 @@ crowbar (utils/make-anim "ego/crowbar.png" [36 36] 0.1 [0 0 0 1 1 2 2 2 2 2 3 2 3 2 3 2 3 2 3 3 3 1 1 0 0 0]) shoot (utils/make-anim "ego/shoot.png" [24 36] 0.075 [0 0 0 1 1 2 2 2 2 2 2 2 2 3 4 5 4]) pant (utils/make-anim "ego/pant.png" [31 36] 0.5 [0 1]) + shock (utils/make-anim "ego/shock.png" [40 48] 0.075 (flatten (repeat 2 [(repeat 5 [0 1 2]) (repeat 5 [3 4 5]) (repeat 5 [6 7 8])]))) + burnt (utils/make-anim "ego/burnt.png" [40 46] 0.12 [1 2 3 2 1 2 3 2 1 0 2 0 4 5 6 7 8 9 10 11 10 9 10 11]) + passed-out (utils/make-anim "ego/burnt.png" [40 46] 0.12 [9 10 11 10]) ego {:right {:walk walk-right :stand stand-anim @@ -211,7 +214,10 @@ [:fire 2] fire-2-anim [:fire 3] fire-3-anim :spear spear - :pant pant} + :pant pant + :shock shock + :burnt burnt + :passed-out passed-out} :left {:walk (utils/flip walk-right) :stand (utils/flip stand-anim) :talk (utils/flip talk-anim) @@ -238,7 +244,7 @@ :pant (utils/flip pant)} :baseline (- 240 (last start-pos)) :facing :right - :origin-x 9 + :origin-x 9 :origin-y 0 :scaled true :step-sound (sound "ego/step.ogg") @@ -293,7 +299,9 @@ ego (assoc ego :anim-sound-frames {(get-in ego [:left :walk]) {2 :step-sound 6 :step-sound} (get-in ego [:right :walk]) {2 :step-sound - 6 :step-sound}})] + 6 :step-sound}} + :anim-merges {(get-in ego [:right :shock]) {:origin-x 15} + :default {:origin-x 9}})] (actions/start-animation screen (merge (animation->texture screen (:stand (:right ego))) ego) :stand))) @@ -338,7 +346,9 @@ (merge entity (animation->texture (update-in screen [:total-time] #(- % (:anim-start entity))) (:anim entity)) {:current-frame-index (texture! (:anim entity) :get-key-frame-index (get-animation-point (:anim entity) (- (:total-time screen) (:anim-start entity)))) - :previous-frame-index (texture! (:anim entity) :get-key-frame-index (get-animation-point (:anim entity) (- (:total-time screen) (:anim-start entity) (or (:delta-time screen) 0))))})) + :previous-frame-index (texture! (:anim entity) :get-key-frame-index (get-animation-point (:anim entity) (- (:total-time screen) (:anim-start entity) (or (:delta-time screen) 0))))} + (or (get-in entity [:anim-merges (:anim entity)]) + (get-in entity [:anim-merges :default])))) (defn get-layers [entities]