diff --git a/desktop/resources/ego/crawl.png b/desktop/resources/ego/crawl.png
new file mode 100644
index 00000000..a7769ad2
Binary files /dev/null and b/desktop/resources/ego/crawl.png differ
diff --git a/desktop/resources/ego/crawl.pxa/0.pxi b/desktop/resources/ego/crawl.pxa/0.pxi
new file mode 100644
index 00000000..4bd31d7b
Binary files /dev/null and b/desktop/resources/ego/crawl.pxa/0.pxi differ
diff --git a/desktop/resources/ego/crawl.pxa/1.pxi b/desktop/resources/ego/crawl.pxa/1.pxi
new file mode 100644
index 00000000..ee03488a
Binary files /dev/null and b/desktop/resources/ego/crawl.pxa/1.pxi differ
diff --git a/desktop/resources/ego/crawl.pxa/2.pxi b/desktop/resources/ego/crawl.pxa/2.pxi
new file mode 100644
index 00000000..8d4c4e36
Binary files /dev/null and b/desktop/resources/ego/crawl.pxa/2.pxi differ
diff --git a/desktop/resources/ego/crawl.pxa/3.pxi b/desktop/resources/ego/crawl.pxa/3.pxi
new file mode 100644
index 00000000..3d84404a
Binary files /dev/null and b/desktop/resources/ego/crawl.pxa/3.pxi differ
diff --git a/desktop/resources/ego/crawl.pxa/4.pxi b/desktop/resources/ego/crawl.pxa/4.pxi
new file mode 100644
index 00000000..51135a86
Binary files /dev/null and b/desktop/resources/ego/crawl.pxa/4.pxi differ
diff --git a/desktop/resources/ego/crawl.pxa/5.pxi b/desktop/resources/ego/crawl.pxa/5.pxi
new file mode 100644
index 00000000..1ded6e4c
Binary files /dev/null and b/desktop/resources/ego/crawl.pxa/5.pxi differ
diff --git a/desktop/resources/ego/crawl.pxa/6.pxi b/desktop/resources/ego/crawl.pxa/6.pxi
new file mode 100644
index 00000000..de96f0bb
Binary files /dev/null and b/desktop/resources/ego/crawl.pxa/6.pxi differ
diff --git a/desktop/resources/ego/crawl.pxa/CelData.plist b/desktop/resources/ego/crawl.pxa/CelData.plist
new file mode 100644
index 00000000..8f638e26
--- /dev/null
+++ b/desktop/resources/ego/crawl.pxa/CelData.plist
@@ -0,0 +1,34 @@
+
+
+
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+
diff --git a/desktop/resources/ego/scoot.png b/desktop/resources/ego/scoot.png
new file mode 100644
index 00000000..4b52dc94
Binary files /dev/null and b/desktop/resources/ego/scoot.png differ
diff --git a/desktop/resources/ego/standup.png b/desktop/resources/ego/standup.png
new file mode 100644
index 00000000..a95d52f3
Binary files /dev/null and b/desktop/resources/ego/standup.png differ
diff --git a/desktop/resources/ego/standup.pxa/0.pxi b/desktop/resources/ego/standup.pxa/0.pxi
new file mode 100644
index 00000000..675118cf
Binary files /dev/null and b/desktop/resources/ego/standup.pxa/0.pxi differ
diff --git a/desktop/resources/ego/standup.pxa/1.pxi b/desktop/resources/ego/standup.pxa/1.pxi
new file mode 100644
index 00000000..5cd8779e
Binary files /dev/null and b/desktop/resources/ego/standup.pxa/1.pxi differ
diff --git a/desktop/resources/ego/standup.pxa/2.pxi b/desktop/resources/ego/standup.pxa/2.pxi
new file mode 100644
index 00000000..1e8195ee
Binary files /dev/null and b/desktop/resources/ego/standup.pxa/2.pxi differ
diff --git a/desktop/resources/ego/standup.pxa/3.pxi b/desktop/resources/ego/standup.pxa/3.pxi
new file mode 100644
index 00000000..d27612b0
Binary files /dev/null and b/desktop/resources/ego/standup.pxa/3.pxi differ
diff --git a/desktop/resources/ego/standup.pxa/4.pxi b/desktop/resources/ego/standup.pxa/4.pxi
new file mode 100644
index 00000000..ffec646d
Binary files /dev/null and b/desktop/resources/ego/standup.pxa/4.pxi differ
diff --git a/desktop/resources/ego/standup.pxa/CelData.plist b/desktop/resources/ego/standup.pxa/CelData.plist
new file mode 100644
index 00000000..1ff35422
--- /dev/null
+++ b/desktop/resources/ego/standup.pxa/CelData.plist
@@ -0,0 +1,26 @@
+
+
+
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+
diff --git a/desktop/resources/ego/suspended.png b/desktop/resources/ego/suspended.png
index 3210d3e8..ca4d17eb 100644
Binary files a/desktop/resources/ego/suspended.png and b/desktop/resources/ego/suspended.png differ
diff --git a/desktop/resources/ego/suspended.pxa/1.pxi b/desktop/resources/ego/suspended.pxa/1.pxi
index dc242963..117c1033 100644
Binary files a/desktop/resources/ego/suspended.pxa/1.pxi and b/desktop/resources/ego/suspended.pxa/1.pxi differ
diff --git a/desktop/resources/ego/suspended.pxa/3.pxi b/desktop/resources/ego/suspended.pxa/3.pxi
index 1d1994bb..dc242963 100644
Binary files a/desktop/resources/ego/suspended.pxa/3.pxi and b/desktop/resources/ego/suspended.pxa/3.pxi differ
diff --git a/desktop/resources/ego/suspended.pxa/4.pxi b/desktop/resources/ego/suspended.pxa/4.pxi
new file mode 100644
index 00000000..1d1994bb
Binary files /dev/null and b/desktop/resources/ego/suspended.pxa/4.pxi differ
diff --git a/desktop/resources/ego/suspended.pxa/5.pxi b/desktop/resources/ego/suspended.pxa/5.pxi
new file mode 100644
index 00000000..6d01fee0
Binary files /dev/null and b/desktop/resources/ego/suspended.pxa/5.pxi differ
diff --git a/desktop/resources/ego/suspended.pxa/6.pxi b/desktop/resources/ego/suspended.pxa/6.pxi
new file mode 100644
index 00000000..531b56ac
Binary files /dev/null and b/desktop/resources/ego/suspended.pxa/6.pxi differ
diff --git a/desktop/resources/ego/suspended.pxa/CelData.plist b/desktop/resources/ego/suspended.pxa/CelData.plist
index f0b74d60..8f638e26 100644
--- a/desktop/resources/ego/suspended.pxa/CelData.plist
+++ b/desktop/resources/ego/suspended.pxa/CelData.plist
@@ -18,5 +18,17 @@
duration
1
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
diff --git a/desktop/resources/held/dot.png b/desktop/resources/held/dot.png
new file mode 100644
index 00000000..9b630c47
Binary files /dev/null and b/desktop/resources/held/dot.png differ
diff --git a/desktop/resources/held/explode b/desktop/resources/held/explode
new file mode 100644
index 00000000..4cdc42de
--- /dev/null
+++ b/desktop/resources/held/explode
@@ -0,0 +1,276 @@
+Untitled
+- Delay -
+active: false
+- Duration -
+lowMin: 1000.0
+lowMax: 1000.0
+- Count -
+min: 0
+max: 300
+- Emission -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 200.0
+highMax: 50.0
+relative: false
+scalingCount: 2
+scaling0: 1.0
+scaling1: 0.63265306
+timelineCount: 2
+timeline0: 0.0
+timeline1: 1.0
+- Life -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 3000.0
+highMax: 3000.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Life Offset -
+active: false
+- X Offset -
+active: false
+- Y Offset -
+active: false
+- Spawn Shape -
+shape: point
+- Spawn Width -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 0.0
+highMax: 0.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Spawn Height -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 0.0
+highMax: 0.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Scale -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 32.0
+highMax: 32.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Velocity -
+active: true
+lowMin: 75.0
+lowMax: 75.0
+highMin: 800.0
+highMax: 800.0
+relative: false
+scalingCount: 3
+scaling0: 1.0
+scaling1: 0.8979592
+scaling2: 0.3877551
+timelineCount: 3
+timeline0: 0.0
+timeline1: 0.11643836
+timeline2: 1.0
+- Angle -
+active: true
+lowMin: -90.0
+lowMax: -90.0
+highMin: 0.0
+highMax: 360.0
+relative: false
+scalingCount: 2
+scaling0: 1.0
+scaling1: 1.0
+timelineCount: 2
+timeline0: 0.0
+timeline1: 0.4178082
+- Rotation -
+active: true
+lowMin: 0.0
+lowMax: 0.0
+highMin: 3600.0
+highMax: -3600.0
+relative: false
+scalingCount: 2
+scaling0: 0.3265306
+scaling1: 1.0
+timelineCount: 2
+timeline0: 0.0
+timeline1: 1.0
+- Wind -
+active: false
+- Gravity -
+active: true
+lowMin: 0.0
+lowMax: 0.0
+highMin: 0.0
+highMax: 0.0
+relative: false
+scalingCount: 3
+scaling0: 1.0
+scaling1: 1.0
+scaling2: 1.0
+timelineCount: 3
+timeline0: 0.0
+timeline1: 0.15068494
+timeline2: 0.48630136
+- Tint -
+colorsCount: 3
+colors0: 1.0
+colors1: 1.0
+colors2: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Transparency -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 1.0
+highMax: 1.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Options -
+attached: false
+continuous: false
+aligned: false
+additive: false
+behind: false
+premultipliedAlpha: false
+- Image Path -
+flesh.png
+
+
+Untitled
+- Delay -
+active: false
+- Duration -
+lowMin: 1000.0
+lowMax: 1000.0
+- Count -
+min: 0
+max: 500
+- Emission -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 500.0
+highMax: 500.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Life -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 500.0
+highMax: 500.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Life Offset -
+active: false
+- X Offset -
+active: false
+- Y Offset -
+active: false
+- Spawn Shape -
+shape: point
+- Spawn Width -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 0.0
+highMax: 0.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Spawn Height -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 0.0
+highMax: 0.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Scale -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 1.0
+highMax: 8.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Velocity -
+active: true
+lowMin: 0.0
+lowMax: 0.0
+highMin: 500.0
+highMax: 500.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Angle -
+active: true
+lowMin: 0.0
+lowMax: 0.0
+highMin: 0.0
+highMax: 360.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Rotation -
+active: false
+- Wind -
+active: false
+- Gravity -
+active: false
+- Tint -
+colorsCount: 3
+colors0: 1.0
+colors1: 0.10980392
+colors2: 0.03137255
+timelineCount: 1
+timeline0: 0.0
+- Transparency -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 1.0
+highMax: 1.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Options -
+attached: false
+continuous: false
+aligned: false
+additive: false
+behind: false
+premultipliedAlpha: false
+- Image Path -
+dot.png
diff --git a/desktop/resources/held/flesh.png b/desktop/resources/held/flesh.png
new file mode 100644
index 00000000..4387a9fc
Binary files /dev/null and b/desktop/resources/held/flesh.png differ
diff --git a/desktop/resources/space/grow-explode b/desktop/resources/space/grow-explode
new file mode 100644
index 00000000..8de337ea
--- /dev/null
+++ b/desktop/resources/space/grow-explode
@@ -0,0 +1,291 @@
+Untitled
+- Delay -
+active: false
+- Duration -
+lowMin: 300.0
+lowMax: 300.0
+- Count -
+min: 0
+max: 300
+- Emission -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 400.0
+highMax: 50.0
+relative: false
+scalingCount: 2
+scaling0: 1.0
+scaling1: 0.63265306
+timelineCount: 2
+timeline0: 0.0
+timeline1: 1.0
+- Life -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 3000.0
+highMax: 3000.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Life Offset -
+active: false
+- X Offset -
+active: false
+- Y Offset -
+active: false
+- Spawn Shape -
+shape: point
+- Spawn Width -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 0.0
+highMax: 0.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Spawn Height -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 0.0
+highMax: 0.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Scale -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 14.0
+highMax: 14.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Velocity -
+active: true
+lowMin: 75.0
+lowMax: 75.0
+highMin: 300.0
+highMax: 300.0
+relative: false
+scalingCount: 3
+scaling0: 1.0
+scaling1: 0.8979592
+scaling2: 0.3877551
+timelineCount: 3
+timeline0: 0.0
+timeline1: 0.11643836
+timeline2: 1.0
+- Angle -
+active: true
+lowMin: -90.0
+lowMax: -90.0
+highMin: 0.0
+highMax: 360.0
+relative: false
+scalingCount: 2
+scaling0: 1.0
+scaling1: 1.0
+timelineCount: 2
+timeline0: 0.0
+timeline1: 0.4178082
+- Rotation -
+active: true
+lowMin: 0.0
+lowMax: 0.0
+highMin: 3600.0
+highMax: -3600.0
+relative: false
+scalingCount: 2
+scaling0: 0.3265306
+scaling1: 1.0
+timelineCount: 2
+timeline0: 0.0
+timeline1: 1.0
+- Wind -
+active: false
+- Gravity -
+active: true
+lowMin: 0.0
+lowMax: 0.0
+highMin: 0.0
+highMax: 0.0
+relative: false
+scalingCount: 3
+scaling0: 1.0
+scaling1: 1.0
+scaling2: 1.0
+timelineCount: 3
+timeline0: 0.0
+timeline1: 0.15068494
+timeline2: 0.48630136
+- Tint -
+colorsCount: 3
+colors0: 1.0
+colors1: 1.0
+colors2: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Transparency -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 1.0
+highMax: 1.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Options -
+attached: false
+continuous: false
+aligned: false
+additive: false
+behind: false
+premultipliedAlpha: false
+- Image Path -
+flesh.png
+
+
+Untitled
+- Delay -
+active: false
+- Duration -
+lowMin: 300.0
+lowMax: 300.0
+- Count -
+min: 0
+max: 500
+- Emission -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 500.0
+highMax: 500.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Life -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 500.0
+highMax: 500.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Life Offset -
+active: false
+- X Offset -
+active: false
+- Y Offset -
+active: false
+- Spawn Shape -
+shape: point
+- Spawn Width -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 0.0
+highMax: 0.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Spawn Height -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 0.0
+highMax: 0.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Scale -
+lowMin: 1.0
+lowMax: 1.0
+highMin: 5.0
+highMax: 3.0
+relative: false
+scalingCount: 2
+scaling0: 1.0
+scaling1: 0.0
+timelineCount: 2
+timeline0: 0.0
+timeline1: 1.0
+- Velocity -
+active: true
+lowMin: 0.0
+lowMax: 0.0
+highMin: 200.0
+highMax: 200.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Angle -
+active: true
+lowMin: 0.0
+lowMax: 0.0
+highMin: -360.0
+highMax: 360.0
+relative: false
+scalingCount: 2
+scaling0: 1.0
+scaling1: 1.0
+timelineCount: 2
+timeline0: 0.0
+timeline1: 1.0
+- Rotation -
+active: true
+lowMin: 0.0
+lowMax: 0.0
+highMin: 360.0
+highMax: -360.0
+relative: false
+scalingCount: 2
+scaling0: 0.0
+scaling1: 1.0
+timelineCount: 2
+timeline0: 0.0
+timeline1: 1.0
+- Wind -
+active: false
+- Gravity -
+active: false
+- Tint -
+colorsCount: 3
+colors0: 1.0
+colors1: 0.101960786
+colors2: 0.03137255
+timelineCount: 1
+timeline0: 0.0
+- Transparency -
+lowMin: 0.0
+lowMax: 0.0
+highMin: 1.0
+highMax: 1.0
+relative: false
+scalingCount: 1
+scaling0: 1.0
+timelineCount: 1
+timeline0: 0.0
+- Options -
+attached: false
+continuous: false
+aligned: false
+additive: false
+behind: false
+premultipliedAlpha: false
+- Image Path -
+dot.png
diff --git a/desktop/resources/space/susp.png b/desktop/resources/space/susp.png
new file mode 100644
index 00000000..ca4d17eb
Binary files /dev/null and b/desktop/resources/space/susp.png differ
diff --git a/desktop/settings.edn b/desktop/settings.edn
index 61ad08f4..a9a80a90 100644
--- a/desktop/settings.edn
+++ b/desktop/settings.edn
@@ -1 +1 @@
-{:sound-volume 0.0, :music-volume 0.0}
\ No newline at end of file
+{:sound-volume 52.0, :music-volume 88.0}
\ No newline at end of file
diff --git a/desktop/src-common/advent/actions.clj b/desktop/src-common/advent/actions.clj
index 7b452af1..174591f4 100644
--- a/desktop/src-common/advent/actions.clj
+++ b/desktop/src-common/advent/actions.clj
@@ -622,8 +622,8 @@
old-music (get-music (get-in entities [:room :music]) (get-in entities [:state :time]))
entities (as-> entities e
(assoc-in e [:room] (get-in entities [:rooms new-background]))
- (if between (between screen e) e)
(assoc-in e [:room :entities :ego] ego)
+ (if between (between screen e) e)
(assoc-in e [:state :last-room] new-background)
(assoc-in e [:tweens :fade-in] (tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 time))
(if-not (get-in entities [:cam :paused?])
diff --git a/desktop/src-common/advent/screens/rooms/common.clj b/desktop/src-common/advent/screens/rooms/common.clj
index ae5358b0..7d1dd609 100644
--- a/desktop/src-common/advent/screens/rooms/common.clj
+++ b/desktop/src-common/advent/screens/rooms/common.clj
@@ -5,6 +5,7 @@
[advent.screens.items :as items]
[advent.utils :as utils]
[advent.pathfind]
+ [advent.tween :as tween]
[clojure.zip :as zip]
[play-clj.core :refer :all]
[play-clj.ui :refer :all]
@@ -96,6 +97,70 @@
((rand-nth [listen-1 listen-2 listen-3]) entities))
+(defn explode [entities]
+
+ (actions/run-action entities
+ (begin [this screen entities]
+
+
+ (-> entities
+ (update-in [:room :entities :bloodclot] #(actions/start-animation screen % :explode))
+ (update-in [:room :entities] dissoc :bloodclot-head)
+ (assoc-in [:room :entities :ego :facing] :right)
+ (update-in [:room :entities :ego] #(actions/start-animation screen % :crawl))))
+
+ (continue [this screen entities]
+ (if (= 170 (get-in entities [:room :entities :bloodclot :current-frame-index]))
+ (particle-effect! (get-in entities [:room :entities :grow-explode]) :start))
+
+ (let [move-speed (* 0.17
+ (/ (:delta-time screen)
+ (/ 1.0 60.0)))
+ entities (update-in entities [:room :entities :ego :x] #(max 80 (- % move-speed)))]
+ (if (= 80 (get-in entities [:room :entities :ego :x]))
+ (update-in entities [:room :entities :ego] #(actions/start-animation screen % :crawl-hide))
+
+ entities )))
+
+ (done? [this screen entities]
+ (= (get-in entities [:room :entities :bloodclot :current-frame-index]) 176))
+
+ (terminate [this screen entities]
+ (-> entities
+ (update-in [:room :entities] dissoc :bloodclot)
+ (assoc-in [:tweens :flash] (tween/tween :flash screen [:white-fade :opacity] 0.0 1.0 0.2 :ease tween/ease-in-cubic))))
+ (can-skip? [this screen entities]
+ false))
+ (actions/run-action entities
+ (begin [this screen entities]
+ entities)
+
+ (continue [this screen entities]
+ entities)
+
+ (done? [this screen entities]
+ (not (get-in entities [:tweens :flash])))
+
+ (terminate [this screen entities]
+ entities)
+ (can-skip? [this screen entities]
+ false))
+
+ (actions/run-action entities
+ (begin [this screen entities]
+ (assoc-in entities [:tweens :flash] (tween/tween :flash screen [:white-fade :opacity] 1.0 0.0 4.0 :ease tween/ease-in-cubic)))
+
+ (continue [this screen entities]
+ entities)
+
+ (done? [this screen entities]
+ (not (get-in entities [:tweens :flash])))
+
+ (terminate [this screen entities]
+ (update-in entities [:room :entities :ego] dissoc :stand-override))
+ (can-skip? [this screen entities]
+ false)))
+
(defn win []
(actions/get-script entities
(actions/do-dialogue entities
@@ -103,13 +168,17 @@
: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])
+ (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!")
- (actions/remove-entity entities :bloodclot-head)
-
- #_(particle-effect! (get-in @entities [:room :entities :blowup] ) :start)
- (actions/play-animation entities :bloodclot :explode)
- (Thread/sleep 15000)))
+
+ (explode entities)
+ (actions/play-animation entities :ego :standup)
+ (Thread/sleep 15000)
+ ))
diff --git a/desktop/src-common/advent/screens/rooms/space.clj b/desktop/src-common/advent/screens/rooms/space.clj
index 558f0c26..e5f75851 100644
--- a/desktop/src-common/advent/screens/rooms/space.clj
+++ b/desktop/src-common/advent/screens/rooms/space.clj
@@ -182,7 +182,8 @@
bloodclot-explode (utils/make-anim "space/bloodclot-explode.png" [106 165] 0.075 [0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 5 5 5 4 4 4 4 5 5 5 5 5 4 4 4 4 5 5 4 4 4 4 5 5 5 4 5 5 5 5 5 5 5 5 6 5 5 5 5 6 6 5 5 5 5 5 5 5 6 6 6 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 7 6 7 7 5 6 6 6 6 6 7 7 7 7 6 6 6 6 6 6 6 6 6 6 7 7 7 7 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 10 11 12 13 14 15 16 17 18 19])
bullet (utils/make-anim "space/bullet.png" [24 24] 0.0075 [0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 3 3 3 4 4 5 5 6 5 4 7])
effect (particle-effect "space/appear")
- blowup-effect (particle-effect "space/blowup")]
+ blowup-effect (particle-effect "space/blowup")
+ grow-explode (particle-effect "space/grow-explode")]
(rooms/make :music :fight
:interactions
{}
@@ -192,6 +193,9 @@
:entities {:appear (assoc effect
:x 240 :y 50
:baseline 200)
+ :grow-explode (assoc grow-explode
+ :x 240 :y 130
+ :baseline 200)
:blowup (assoc blowup-effect
:x 225 :y 175
:baseline 240)
diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj
index ef5bee62..73379eda 100644
--- a/desktop/src-common/advent/screens/scene.clj
+++ b/desktop/src-common/advent/screens/scene.clj
@@ -364,7 +364,11 @@ void main()
axe (utils/make-anim "ego/axe.png" [60 70] 0.10 (flatten [1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 (range 7)]))
axe-wood (utils/make-anim "ego/axe-wood.png" [60 70] 0.10 (flatten [1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 (range 11)]))
suspended (utils/make-anim "ego/suspended.png" [18 36] 0.10 [0])
- suspended-talk (utils/make-anim "ego/suspended.png" [18 36] 0.20 [0 1])
+ suspended-talk (utils/make-anim "ego/suspended.png" [18 36] 0.20 (range 7))
+ crawl (utils/make-anim "ego/crawl.png" [39 25] 0.2 (range 4))
+ crawl-stand (utils/make-anim "ego/crawl.png" [39 25] 0.2 [0])
+ crawl-hide (utils/make-anim "ego/crawl.png" [39 25] 0.1 (flatten [(repeat 10 3) (range 4 7) (repeat 50 6) (reverse (range 4 7) ) (repeat 20 3)]))
+ standup (utils/make-anim "ego/standup.png" [45 55] 0.2 (range 5))
ego {:right {:walk walk-right
:stand stand-anim
@@ -411,6 +415,10 @@ void main()
:axe-wood axe-wood
:suspended suspended
:suspended-talk suspended-talk
+ :crawl crawl
+ :crawl-stand crawl-stand
+ :crawl-hide crawl-hide
+ :standup standup
}
:left {:walk (utils/flip walk-right)
:stand (utils/flip stand-anim)
@@ -448,6 +456,10 @@ void main()
:axe-wood (utils/flip axe-wood)
:suspended (utils/flip suspended)
:suspended-talk (utils/flip suspended-talk)
+ :crawl (utils/flip crawl)
+ :crawl-stand (utils/flip crawl-stand)
+ :crawl-hide (utils/flip crawl-hide)
+ :standup (utils/flip standup)
}
:baseline (- 240 (last start-pos))
:facing :right
@@ -534,6 +546,10 @@ void main()
:anim-merges {(get-in ego [:right :shock]) {:origin-x 15}
(get-in ego [:left :swing-shovel]) {:origin-x 26}
(get-in ego [:right :swing-shovel]) {:origin-x 26}
+ (get-in ego [:right :standup]) {:origin-x 32}
+ (get-in ego [:right :crawl]) {:origin-x 32}
+ (get-in ego [:right :crawl-hide]) {:origin-x 32}
+ (get-in ego [:right :crawl-stand]) {:origin-x 32}
(get-in ego [:right :axe]) {:origin-x 17}
(get-in ego [:right :axe-wood]) {:origin-x 17}
(get-in ego [:left :love]) {:origin-x 36}