From 781248606a49dd7a3b39bdadc6a5e3f578599527 Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Sun, 15 Aug 2021 22:04:46 -0700 Subject: [PATCH] Add Anvil --- README.md | 4 +++- anvil/Makefile | 5 +++++ anvil/README.md | 7 +++++++ anvil/anvil.js | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ anvil/anvil.png | Bin 0 -> 7552 bytes anvil/build.sh | 5 +++++ 6 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 anvil/Makefile create mode 100644 anvil/README.md create mode 100644 anvil/anvil.js create mode 100644 anvil/anvil.png create mode 100755 anvil/build.sh diff --git a/README.md b/README.md index ee27f3f..ff81076 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This repository includes some example doodads for Sketchy Maze. You can learn from their scripts or use them as a base for your own custom doodads. -![Warp Door](warp-door/door-1.png) ![Character](character/stand-right.png) +![Warp Door](warp-door/door-1.png) ![Character](character/stand-right.png) ![Anvil](anvil/anvil.png) All of these doodads are built from PNG images using the `doodad` program that comes with the game. Check your guidebook @@ -18,6 +18,8 @@ example for the doodad commands used. built-in creatures. * [**Warp Door**](warp-door/): create your own compatible Warp Door that you can link to the built-in doors. +* [**Anvil**](anvil/): the harmless doodad that becomes dangerous + while falling. To do: diff --git a/anvil/Makefile b/anvil/Makefile new file mode 100644 index 0000000..2c685ea --- /dev/null +++ b/anvil/Makefile @@ -0,0 +1,5 @@ +ALL: build + +.PHONY: build +build: + ./build.sh \ No newline at end of file diff --git a/anvil/README.md b/anvil/README.md new file mode 100644 index 0000000..fb4a35c --- /dev/null +++ b/anvil/README.md @@ -0,0 +1,7 @@ +# Example Anvil + +![Example Anvil](anvil.png) + +This is basically the **Anvil** from the game. It has no solid +collision, it is affected by gravity, and it is dangerous when +falling. \ No newline at end of file diff --git a/anvil/anvil.js b/anvil/anvil.js new file mode 100644 index 0000000..2359bca --- /dev/null +++ b/anvil/anvil.js @@ -0,0 +1,51 @@ +// Anvil +var falling = false; + +function main() { + // Note: doodad is not "solid" but hurts if it falls on you. + Self.SetHitbox(0, 0, 48, 25); + Self.SetMobile(true); + Self.SetGravity(true); + + // Monitor our Y position to tell if we've been falling. + var lastPoint = Self.Position(); + setInterval(function () { + var nowAt = Self.Position(); + if (nowAt.Y > lastPoint.Y) { + falling = true; + } else { + falling = false; + } + lastPoint = nowAt; + }, 100); + + Events.OnCollide(function (e) { + if (!e.Settled) { + return; + } + + // Were we falling? + if (falling) { + if (e.InHitbox) { + if (e.Actor.IsPlayer()) { + // Fatal to the player. + Sound.Play("crumbly-break.wav"); + FailLevel("Watch out for anvils!"); + return; + } + else if (e.Actor.IsMobile()) { + // Destroy mobile doodads. + Sound.Play("crumbly-break.wav"); + e.Actor.Destroy(); + } + } + } + }); + + // When we receive power, we reset to our original position. + var origPoint = Self.Position(); + Message.Subscribe("power", function (powered) { + Self.MoveTo(origPoint); + Self.SetVelocity(Vector(0, 0)); + }); +} diff --git a/anvil/anvil.png b/anvil/anvil.png new file mode 100644 index 0000000000000000000000000000000000000000..d379c1192645cf03dc7f28bc0555930968b8dbab GIT binary patch literal 7552 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