summary refs log tree commit diff stats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/checkpoint.lua17
-rw-r--r--scripts/common.lua21
-rw-r--r--scripts/movplat.lua8
3 files changed, 46 insertions, 0 deletions
diff --git a/scripts/checkpoint.lua b/scripts/checkpoint.lua new file mode 100644 index 0000000..452f81d --- /dev/null +++ b/scripts/checkpoint.lua
@@ -0,0 +1,17 @@
1checkpoint = {}
2
3function checkpoint.OnTouch(id, player)
4 curMap = entity.new(realizing():singleton():realizable().activeMap)
5
6 if not player:playable().checkpointMapObject or
7 not curMap:mappable().mapId == player:playable().checkpointMapId or
8 not id:prototypable().mapObjectIndex ==
9 player:playable().checkpointMapObjectIndex then
10
11 player:playable().checkpointMapObject = true
12 player:playable().checkpointMapId = curMap:mappable().mapId
13 player:playable().checkpointMapObjectIndex =
14 id:prototypable().mapObjectIndex
15 player:playable().checkpointPos = player:transformable().pos
16 end
17end
diff --git a/scripts/common.lua b/scripts/common.lua new file mode 100644 index 0000000..d84d97d --- /dev/null +++ b/scripts/common.lua
@@ -0,0 +1,21 @@
1function waitForTick()
2 return coroutine.yield()
3end
4
5function moveLeft(id, len, speed)
6 local remaining = len / speed
7
8 while (remaining > 0) do
9 id:ponderable().vel.x = -speed
10 remaining = remaining - waitForTick()
11 end
12end
13
14function moveRight(id, len, speed)
15 local remaining = len / speed
16
17 while (remaining > 0) do
18 id:ponderable().vel.x = speed
19 remaining = remaining - waitForTick()
20 end
21end
diff --git a/scripts/movplat.lua b/scripts/movplat.lua new file mode 100644 index 0000000..21cc61a --- /dev/null +++ b/scripts/movplat.lua
@@ -0,0 +1,8 @@
1movplat = {}
2
3function movplat.Behavior(id)
4 while true do
5 moveRight(id, 90, 30)
6 moveLeft(id, 90, 30)
7 end
8end