diff --git a/dev-assets/doodads/bird/bird.js b/dev-assets/doodads/bird/bird.js index 00de17d..67fa32d 100644 --- a/dev-assets/doodads/bird/bird.js +++ b/dev-assets/doodads/bird/bird.js @@ -31,7 +31,7 @@ function main() { return; } - if (e.Actor.IsMobile() && e.InHitbox) { + if (e.Actor.IsMobile() && e.Actor.HasGravity() && e.InHitbox) { return false; } }); diff --git a/dev-assets/doodads/regions/Makefile b/dev-assets/doodads/regions/Makefile index 6ea450f..1c3f568 100644 --- a/dev-assets/doodads/regions/Makefile +++ b/dev-assets/doodads/regions/Makefile @@ -28,6 +28,10 @@ build: doodad edit-doodad --tag "color=invisible" reg-warp-door.doodad doodad install-script ../warp-door/warp-door.js reg-warp-door.doodad + # Reset Level Timer + doodad convert -t "Reset Level Timer" timer-64.png reg-reset-timer.doodad + doodad install-script reset-timer.js reg-reset-timer.doodad + for i in *.doodad; do\ doodad edit-doodad --tag "category=technical" $${i};\ done diff --git a/dev-assets/doodads/regions/reset-timer.js b/dev-assets/doodads/regions/reset-timer.js new file mode 100644 index 0000000..eb12c60 --- /dev/null +++ b/dev-assets/doodads/regions/reset-timer.js @@ -0,0 +1,30 @@ +// Reset Level Timer. +function main() { + Self.Hide(); + + // Reset the level timer only once. + let hasReset = false; + + Events.OnCollide((e) => { + if (!e.Settled) { + return; + } + + // Only care if it's the player. + if (!e.Actor.IsPlayer()) { + return; + } + + if (e.InHitbox && !hasReset) { + Level.ResetTimer(); + hasReset = true; + } + }); + + // Receive a power signal resets the doodad. + Message.Subscribe("power", (powered) => { + if (powered) { + hasReset = true; + } + }); +} diff --git a/dev-assets/doodads/regions/timer-64.png b/dev-assets/doodads/regions/timer-64.png new file mode 100644 index 0000000..4c55879 Binary files /dev/null and b/dev-assets/doodads/regions/timer-64.png differ