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]