Skip to content

Instantly share code, notes, and snippets.

@m-ender
Created March 22, 2025 21:45
Show Gist options
  • Save m-ender/bdbb8643adab6e65d909492b353e6e58 to your computer and use it in GitHub Desktop.
Save m-ender/bdbb8643adab6e65d909492b353e6e58 to your computer and use it in GitHub Desktop.
Dino Game (Puzzlescript Next Script)
Play this game by pasting the script into https://david-pfx.github.io/PuzzleScriptNext/src/editor.html
title Dino Game
author Menderbug
homepage https://brokensign.com/
run_rules_on_level_start
realtime_interval 0.1
background_color #C8C4C1
text_color black
// noundo
// enable comments
=====
TAGS
=====
Tick = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Digit = 0 1 2 3 4 5 6 7 8 9
SmallDigit = 0 1 2 3 4 5 6 7 8
_Horizontal = left right
=========
MAPPINGS
=========
Tick => TickDown
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -> 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Digit => DigitUp
0 1 2 3 4 5 6 7 8 9 -> 1 2 3 4 5 6 7 8 9 0
SmallDigit => SmallDigitUp
0 1 2 3 4 5 6 7 8 -> 1 2 3 4 5 6 7 8 9
Digit => DigitDown
0 1 2 3 4 5 6 7 8 9 -> 9 0 1 2 3 4 5 6 7 8
_Horizontal => Flip
left right -> right left
========
OBJECTS
========
Background
LIGHTGRAY
Wall0 canvas:1,1
{"beginPath":[]}{"fillStyle":"#000000"}
{"roundRect":[0.1,0.1,0.8,0.8,0.1]}
{"fill":[]}
Wall1 canvas:1,1
copy:Wall0
Wall2 canvas:1,1
copy:Wall0
Wall3 canvas:1,1
copy:Wall0
Wall4 canvas:1,1
copy:Wall0
Wall5 canvas:1,1
copy:Wall0
Wall6 canvas:1,1
copy:Wall0
Wall7 canvas:1,1
{"beginPath":[]}{"fillStyle":"#27304e"}
{"roundRect":[0.1,0.1,0.8,0.8,0.1]}
{"fill":[]}
Wall8 canvas:1,1
copy:Wall7
Wall9 canvas:1,1
{"beginPath":[]}{"fillStyle":"#416468"}
{"roundRect":[0.1,0.1,0.8,0.8,0.1]}
{"fill":[]}
PlayerSprite:left canvas:3,3
{"beginPath":[]}{"fillStyle":"#b13823"}
{"moveTo":[0.142857, 0]}
{"lineTo":[1.285714, 0]}
{"lineTo":[1.285714, 0.142857]}
{"lineTo":[1.428571, 0.142857]}
{"lineTo":[1.428571, 0.857142]}
{"lineTo":[1.571428, 0.857142]}
{"lineTo":[1.571428, 1]}
{"lineTo":[1.857142, 1]}
{"lineTo":[1.857142, 1.142857]}
{"lineTo":[2.142857, 1.142857]}
{"lineTo":[2.142857, 1.285714]}
{"lineTo":[2.285714, 1.285714]}
{"lineTo":[2.285714, 1.428571]}
{"lineTo":[2.714285, 1.428571]}
{"lineTo":[2.714285, 1.285714]}
{"lineTo":[2.857142, 1.285714]}
{"lineTo":[2.857142, 1.142857]}
{"lineTo":[3, 1.142857]}
{"lineTo":[3, 1.857142]}
{"lineTo":[2.857142, 1.857142]}
{"lineTo":[2.857142, 2]}
{"lineTo":[2.714285, 2]}
{"lineTo":[2.714285, 2.142857]}
{"lineTo":[2.571428, 2.142857]}
{"lineTo":[2.571428, 2.285714]}
{"lineTo":[2.285714, 2.285714]}
{"lineTo":[2.285714, 3]}
{"lineTo":[2, 3]}
{"lineTo":[2, 2.857142]}
{"lineTo":[2.142857, 2.857142]}
{"lineTo":[2.142857, 2.714285]}
{"lineTo":[2, 2.714285]}
{"lineTo":[2, 2.571428]}
{"lineTo":[1.857142, 2.571428]}
{"lineTo":[1.857142, 2.428571]}
{"lineTo":[1.714285, 2.428571]}
{"lineTo":[1.714285, 2.714285]}
{"lineTo":[1.571428, 2.714285]}
{"lineTo":[1.571428, 3]}
{"lineTo":[1.285714, 3]}
{"lineTo":[1.285714, 2.857142]}
{"lineTo":[1.428571, 2.857142]}
{"lineTo":[1.428571, 2.285714]}
{"lineTo":[1.285714, 2.285714]}
{"lineTo":[1.285714, 2.142857]}
{"lineTo":[1.142857, 2.142857]}
{"lineTo":[1.142857, 2]}
{"lineTo":[1, 2]}
{"lineTo":[1, 1.285714]}
{"lineTo":[0.714285, 1.285714]}
{"lineTo":[0.714285, 1.428571]}
{"lineTo":[0.571428, 1.428571]}
{"lineTo":[0.571428, 1.142857]}
{"lineTo":[1, 1.142857]}
{"lineTo":[1, 0.857142]}
{"lineTo":[0.142857, 0.857142]}
{"lineTo":[0.142857, 0.714285]}
{"lineTo":[0.857142, 0.714285]}
{"lineTo":[0.857142, 0.571428]}
{"lineTo":[0, 0.571428]}
{"lineTo":[0, 0.142857]}
{"lineTo":[0.142857, 0.142857]}
{"closePath":[]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#000000"}
{"moveTo":[1, 0.214285]}
{"lineTo":[1.142857, 0.214285]}
{"lineTo":[1.142857, 0.357142]}
{"lineTo":[1, 0.357142]}
{"closePath":[]}
{"fill":[]}
(
.0000000.............
000000100............
000000000............
000000000............
.....0000............
.00000000............
.....00000...........
.....0000000.........
..000000000000......0
..0..0000000000....00
.....0000000000000000
.....0000000000000000
.....000000000000000.
......0000000000000..
.......00000000000...
........0000000......
........00..000......
........00...00......
........0.....0......
.......00....00......
)
PlayerSprite:right canvas:3,3
copy:PlayerSprite:left
flip:right
PlayerHurtSprite:left canvas:3,3
{"beginPath":[]}{"fillStyle":"#ffffff"}
{"moveTo":[0.142857, 0]}
{"lineTo":[1.285714, 0]}
{"lineTo":[1.285714, 0.142857]}
{"lineTo":[1.428571, 0.142857]}
{"lineTo":[1.428571, 0.857142]}
{"lineTo":[1.571428, 0.857142]}
{"lineTo":[1.571428, 1]}
{"lineTo":[1.857142, 1]}
{"lineTo":[1.857142, 1.142857]}
{"lineTo":[2.142857, 1.142857]}
{"lineTo":[2.142857, 1.285714]}
{"lineTo":[2.285714, 1.285714]}
{"lineTo":[2.285714, 1.428571]}
{"lineTo":[2.714285, 1.428571]}
{"lineTo":[2.714285, 1.285714]}
{"lineTo":[2.857142, 1.285714]}
{"lineTo":[2.857142, 1.142857]}
{"lineTo":[3, 1.142857]}
{"lineTo":[3, 1.857142]}
{"lineTo":[2.857142, 1.857142]}
{"lineTo":[2.857142, 2]}
{"lineTo":[2.714285, 2]}
{"lineTo":[2.714285, 2.142857]}
{"lineTo":[2.571428, 2.142857]}
{"lineTo":[2.571428, 2.285714]}
{"lineTo":[2.285714, 2.285714]}
{"lineTo":[2.285714, 3]}
{"lineTo":[2, 3]}
{"lineTo":[2, 2.857142]}
{"lineTo":[2.142857, 2.857142]}
{"lineTo":[2.142857, 2.714285]}
{"lineTo":[2, 2.714285]}
{"lineTo":[2, 2.571428]}
{"lineTo":[1.857142, 2.571428]}
{"lineTo":[1.857142, 2.428571]}
{"lineTo":[1.714285, 2.428571]}
{"lineTo":[1.714285, 2.714285]}
{"lineTo":[1.571428, 2.714285]}
{"lineTo":[1.571428, 3]}
{"lineTo":[1.285714, 3]}
{"lineTo":[1.285714, 2.857142]}
{"lineTo":[1.428571, 2.857142]}
{"lineTo":[1.428571, 2.285714]}
{"lineTo":[1.285714, 2.285714]}
{"lineTo":[1.285714, 2.142857]}
{"lineTo":[1.142857, 2.142857]}
{"lineTo":[1.142857, 2]}
{"lineTo":[1, 2]}
{"lineTo":[1, 1.285714]}
{"lineTo":[0.714285, 1.285714]}
{"lineTo":[0.714285, 1.428571]}
{"lineTo":[0.571428, 1.428571]}
{"lineTo":[0.571428, 1.142857]}
{"lineTo":[1, 1.142857]}
{"lineTo":[1, 0.857142]}
{"lineTo":[0.142857, 0.857142]}
{"lineTo":[0.142857, 0.714285]}
{"lineTo":[0.857142, 0.714285]}
{"lineTo":[0.857142, 0.571428]}
{"lineTo":[0, 0.571428]}
{"lineTo":[0, 0.142857]}
{"lineTo":[0.142857, 0.142857]}
{"closePath":[]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#000000"}
{"moveTo":[1, 0.214285]}
{"lineTo":[1.142857, 0.214285]}
{"lineTo":[1.142857, 0.357142]}
{"lineTo":[1, 0.357142]}
{"closePath":[]}
{"fill":[]}
PlayerHurtSprite:right canvas:3,3
copy:PlayerHurtSprite:left
flip:right
PlayerSprite:vert:left canvas:1,3
{"beginPath":[]}{"fillStyle":"#b13823"}
{"moveTo":[0.285714, 0]}
{"lineTo":[0.714285, 0]}
{"lineTo":[0.714285, 0.142857]}
{"lineTo":[0.857142, 0.142857]}
{"lineTo":[0.857142, 0.571428]}
{"lineTo":[1.0, 0.571428]}
{"lineTo":[1.0, 1.0]}
{"lineTo":[0.857142, 1.0]}
{"lineTo":[0.857142, 1.142857]}
{"lineTo":[0.714285, 1.142857]}
{"lineTo":[0.714285, 1.285714]}
{"lineTo":[0.857142, 1.285714]}
{"lineTo":[0.857142, 1.428571]}
{"lineTo":[1.0, 1.428571]}
{"lineTo":[1.0, 1.571428]}
{"lineTo":[0.857142, 1.571428]}
{"lineTo":[0.857142, 2.285714]}
{"lineTo":[1.0, 2.285714]}
{"lineTo":[1.0, 2.571428]}
{"lineTo":[0.857142, 2.571428]}
{"lineTo":[0.857142, 2.428571]}
{"lineTo":[0.714285, 2.428571]}
{"lineTo":[0.714285, 2.571428]}
{"lineTo":[0.571428, 2.571428]}
{"lineTo":[0.571428, 2.857142]}
{"lineTo":[0.714285, 2.857142]}
{"lineTo":[0.714285, 3.0]}
{"lineTo":[0.428571, 3.0]}
{"lineTo":[0.428571, 2.857142]}
{"lineTo":[0.285714, 2.857142]}
{"lineTo":[0.285714, 2.285714]}
{"lineTo":[0.142857, 2.285714]}
{"lineTo":[0.142857, 2.428571]}
{"lineTo":[0.0, 2.428571]}
{"lineTo":[0.0, 2.142857]}
{"lineTo":[0.142857, 2.142857]}
{"lineTo":[0.142857, 1.714285]}
{"lineTo":[0.0, 1.714285]}
{"lineTo":[0.0, 1.571428]}
{"lineTo":[0.142857, 1.571428]}
{"lineTo":[0.142857, 1.285714]}
{"lineTo":[0.285714, 1.285714]}
{"lineTo":[0.285714, 1.142857]}
{"lineTo":[0.142857, 1.142857]}
{"lineTo":[0.142857, 1.0]}
{"lineTo":[0.0, 1.0]}
{"lineTo":[0.0, 0.571428]}
{"lineTo":[0.142857, 0.571428]}
{"lineTo":[0.142857, 0.142857]}
{"lineTo":[0.285714, 0.142857]}
{"closePath":[]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#000000"}
{"rect":[0.285714, 0.571428, 0.142857, 0.142857]}
{"rect":[0.571428, 0.571428, 0.142857, 0.142857]}
{"fill":[]}
PlayerSprite:vert:right canvas:1,3
copy:PlayerSprite:vert:left
flip:right
PlayerHurtSprite:vert:left canvas:1,3
{"beginPath":[]}{"fillStyle":"#ffffff"}
{"moveTo":[0.285714, 0]}
{"lineTo":[0.714285, 0]}
{"lineTo":[0.714285, 0.142857]}
{"lineTo":[0.857142, 0.142857]}
{"lineTo":[0.857142, 0.571428]}
{"lineTo":[1.0, 0.571428]}
{"lineTo":[1.0, 1.0]}
{"lineTo":[0.857142, 1.0]}
{"lineTo":[0.857142, 1.142857]}
{"lineTo":[0.714285, 1.142857]}
{"lineTo":[0.714285, 1.285714]}
{"lineTo":[0.857142, 1.285714]}
{"lineTo":[0.857142, 1.428571]}
{"lineTo":[1.0, 1.428571]}
{"lineTo":[1.0, 1.571428]}
{"lineTo":[0.857142, 1.571428]}
{"lineTo":[0.857142, 2.285714]}
{"lineTo":[1.0, 2.285714]}
{"lineTo":[1.0, 2.571428]}
{"lineTo":[0.857142, 2.571428]}
{"lineTo":[0.857142, 2.428571]}
{"lineTo":[0.714285, 2.428571]}
{"lineTo":[0.714285, 2.571428]}
{"lineTo":[0.571428, 2.571428]}
{"lineTo":[0.571428, 2.857142]}
{"lineTo":[0.714285, 2.857142]}
{"lineTo":[0.714285, 3.0]}
{"lineTo":[0.428571, 3.0]}
{"lineTo":[0.428571, 2.857142]}
{"lineTo":[0.285714, 2.857142]}
{"lineTo":[0.285714, 2.285714]}
{"lineTo":[0.142857, 2.285714]}
{"lineTo":[0.142857, 2.428571]}
{"lineTo":[0.0, 2.428571]}
{"lineTo":[0.0, 2.142857]}
{"lineTo":[0.142857, 2.142857]}
{"lineTo":[0.142857, 1.714285]}
{"lineTo":[0.0, 1.714285]}
{"lineTo":[0.0, 1.571428]}
{"lineTo":[0.142857, 1.571428]}
{"lineTo":[0.142857, 1.285714]}
{"lineTo":[0.285714, 1.285714]}
{"lineTo":[0.285714, 1.142857]}
{"lineTo":[0.142857, 1.142857]}
{"lineTo":[0.142857, 1.0]}
{"lineTo":[0.0, 1.0]}
{"lineTo":[0.0, 0.571428]}
{"lineTo":[0.142857, 0.571428]}
{"lineTo":[0.142857, 0.142857]}
{"lineTo":[0.285714, 0.142857]}
{"closePath":[]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#000000"}
{"rect":[0.285714, 0.571428, 0.142857, 0.142857]}
{"rect":[0.571428, 0.571428, 0.142857, 0.142857]}
{"fill":[]}
PlayerHurtSprite:vert:right canvas:1,3
copy:PlayerHurtSprite:vert:left
flip:right
Player; transparent
DeadPlayerSprite:left
grey black
.000000...
00000100..
00000000..
....0000..
.0000000..
...0.....0
...0000000
0..0..0..0
0000000...
0.....0...
DeadPlayerSprite:right
grey black
copy:DeadPlayerSprite:left
flip:right
DeadPlayer; transparent
TriceratopsSprite:right
#e37810 #b13823 black #868480
...............
...............
...........0...
..........00333
.....00010003..
....00001000...
....000010000..
...000001000200
...000000100000
..00000000.00..
.000.00.00.....
TriceratopsSprite:left
#e37810 #b13823 black #868480
copy:TriceratopsSprite:right
flip:right
Triceratops; transparent
BrachioSprite:right
#416468 #e37810 black
...............
...............
......000......
....000200.....
...0010000.....
...000.........
..010..........
..0000.........
.0000100.......
.01000000......
000000010......
0100100000.....
0000000010.....
.10001000010...
.00.00..000000.
BrachioSprite:left
#416468 #e37810 black
copy:BrachioSprite:right
flip:right
// 0.066
Fire:right canvas:1,1
{"beginPath":[]}{"fillStyle":"#EB7D1E"}
{"moveTo":[0.466, 0.133]}
{"lineTo":[0.8, 0.133]}
{"lineTo":[0.8, 0.2]}
{"lineTo":[0.866, 0.2]}
{"lineTo":[0.866, 0.266]}
{"lineTo":[0.8, 0.266]}
{"lineTo":[0.8, 0.4]}
{"lineTo":[0.933, 0.4]}
{"lineTo":[0.933, 0.466]}
{"lineTo":[1, 0.466]}
{"lineTo":[1, 0.533]}
{"lineTo":[0.933, 0.533]}
{"lineTo":[0.933, 0.6]}
{"lineTo":[0.8, 0.6]}
{"lineTo":[0.8, 0.733]}
{"lineTo":[0.866, 0.733]}
{"lineTo":[0.866, 0.8]}
{"lineTo":[0.8, 0.8]}
{"lineTo":[0.8, 0.866]}
{"lineTo":[0.8, 0.866]}
{"lineTo":[0.466, 0.866]}
{"lineTo":[0.466, 0.8]}
{"lineTo":[0.333, 0.8]}
{"lineTo":[0.333, 0.733]}
{"lineTo":[0.266, 0.733]}
{"lineTo":[0.266, 0.666]}
{"lineTo":[0.2, 0.666]}
{"lineTo":[0.2, 0.6]}
{"lineTo":[0.066, 0.6]}
{"lineTo":[0.066, 0.533]}
{"lineTo":[0, 0.533]}
{"lineTo":[0, 0.466]}
{"lineTo":[0.066, 0.466]}
{"lineTo":[0.066, 0.4]}
{"lineTo":[0.2, 0.4]}
{"lineTo":[0.2, 0.333]}
{"lineTo":[0.266, 0.333]}
{"lineTo":[0.266, 0.266]}
{"lineTo":[0.333, 0.266]}
{"lineTo":[0.333, 0.2]}
{"lineTo":[0.466, 0.2]}
{"closePath":[]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#b07f24"}
{"moveTo":[0.1, 0.433]}
{"lineTo":[0.3, 0.433]}
{"lineTo":[0.533, 0.3]}
{"lineTo":[0.733, 0.5]}
{"lineTo":[0.533, 0.7]}
{"lineTo":[0.3, 0.566]}
{"lineTo":[0.1, 0.566]}
{"closePath":[]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#b13823"}
{"moveTo":[0.433, 0.233]}
{"lineTo":[0.766, 0.233]}
{"lineTo":[0.766, 0.3]}
{"lineTo":[0.633, 0.3]}
{"lineTo":[0.633, 0.366]}
{"lineTo":[0.7, 0.366]}
{"lineTo":[0.7, 0.433]}
{"lineTo":[0.866, 0.433]}
{"lineTo":[0.866, 0.566]}
{"lineTo":[0.7, 0.566]}
{"lineTo":[0.7, 0.633]}
{"lineTo":[0.633, 0.633]}
{"lineTo":[0.633, 0.7]}
{"lineTo":[0.766, 0.7]}
{"lineTo":[0.766, 0.766]}
{"lineTo":[0.433, 0.766]}
{"lineTo":[0.433, 0.7]}
{"lineTo":[0.3, 0.7]}
{"lineTo":[0.3, 0.633]}
{"lineTo":[0.233, 0.633]}
{"lineTo":[0.233, 0.533]}
{"lineTo":[0.366, 0.533]}
{"lineTo":[0.366, 0.566]}
{"lineTo":[0.5, 0.566]}
{"lineTo":[0.5, 0.633]}
{"lineTo":[0.566, 0.633]}
{"lineTo":[0.566, 0.566]}
{"lineTo":[0.633, 0.566]}
{"lineTo":[0.633, 0.516]}
{"lineTo":[0.7, 0.516]}
{"lineTo":[0.7, 0.483]}
{"lineTo":[0.633, 0.483]}
{"lineTo":[0.633, 0.433]}
{"lineTo":[0.566, 0.433]}
{"lineTo":[0.566, 0.366]}
{"lineTo":[0.5, 0.366]}
{"lineTo":[0.5, 0.433]}
{"lineTo":[0.366, 0.433]}
{"lineTo":[0.366, 0.466]}
{"lineTo":[0.233, 0.466]}
{"lineTo":[0.233, 0.366]}
{"lineTo":[0.3, 0.366]}
{"lineTo":[0.3, 0.3]}
{"lineTo":[0.433, 0.3]}
{"closePath":[]}
{"fill":[]}
translate:down:0.7
Fire:left canvas:1,1
copy:Fire:right
flip:right
Coin canvas:1,1
{"beginPath":[]}{"fillStyle":"#ae7f2e"}
{"moveTo":[0.4, 0.0]}
{"lineTo":[0.6, 0.0]}
{"lineTo":[0.6, 0.1]}
{"lineTo":[0.7, 0.1]}
{"lineTo":[0.7, 0.2]}
{"lineTo":[0.8, 0.2]}
{"lineTo":[0.8, 0.3]}
{"lineTo":[0.9, 0.3]}
{"lineTo":[0.9, 0.4]}
{"lineTo":[1.0, 0.4]}
{"lineTo":[1.0, 0.6]}
{"lineTo":[0.9, 0.6]}
{"lineTo":[0.9, 0.7]}
{"lineTo":[0.8, 0.7]}
{"lineTo":[0.8, 0.8]}
{"lineTo":[0.7, 0.8]}
{"lineTo":[0.7, 0.9]}
{"lineTo":[0.6, 0.9]}
{"lineTo":[0.6, 1.0]}
{"lineTo":[0.4, 1.0]}
{"lineTo":[0.4, 0.9]}
{"lineTo":[0.3, 0.9]}
{"lineTo":[0.3, 0.8]}
{"lineTo":[0.2, 0.8]}
{"lineTo":[0.2, 0.7]}
{"lineTo":[0.1, 0.7]}
{"lineTo":[0.1, 0.6]}
{"lineTo":[0.0, 0.6]}
{"lineTo":[0.0, 0.4]}
{"lineTo":[0.1, 0.4]}
{"lineTo":[0.1, 0.3]}
{"lineTo":[0.2, 0.3]}
{"lineTo":[0.2, 0.2]}
{"lineTo":[0.3, 0.2]}
{"lineTo":[0.3, 0.1]}
{"lineTo":[0.4, 0.1]}
{"closePath":[]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#d9c167"}
{"moveTo":[0.45, 0.15]}
{"lineTo":[0.55, 0.15]}
{"lineTo":[0.55, 0.25]}
{"lineTo":[0.65, 0.25]}
{"lineTo":[0.65, 0.45]}
{"lineTo":[0.85, 0.45]}
{"lineTo":[0.85, 0.55]}
{"lineTo":[0.65, 0.55]}
{"lineTo":[0.65, 0.75]}
{"lineTo":[0.45, 0.75]}
{"lineTo":[0.45, 0.85]}
{"lineTo":[0.55, 0.85]}
{"lineTo":[0.55, 0.65]}
{"lineTo":[0.75, 0.65]}
{"lineTo":[0.75, 0.35]}
{"lineTo":[0.55, 0.35]}
{"lineTo":[0.55, 0.55]}
{"lineTo":[0.45, 0.55]}
{"lineTo":[0.45, 0.65]}
{"lineTo":[0.35, 0.65]}
{"lineTo":[0.35, 0.55]}
{"lineTo":[0.15, 0.55]}
{"lineTo":[0.15, 0.45]}
{"lineTo":[0.25, 0.45]}
{"lineTo":[0.25, 0.35]}
{"lineTo":[0.35, 0.35]}
{"lineTo":[0.35, 0.25]}
{"lineTo":[0.45, 0.25]}
{"closePath":[]}
{"fill":[]}
CoinSpawn:Tick; transparent
Heart canvas:1,1
{"beginPath":[]}{"fillStyle":"#b13823"}
{"moveTo":[0.533, 0.266]}
{"lineTo":[0.533, 0.2]}
{"lineTo":[0.6, 0.2]}
{"lineTo":[0.6, 0.133]}
{"lineTo":[0.8, 0.133]}
{"lineTo":[0.8, 0.2]}
{"lineTo":[0.866, 0.2]}
{"lineTo":[0.866, 0.266]}
{"lineTo":[0.933, 0.266]}
{"lineTo":[0.933, 0.533]}
{"lineTo":[0.866, 0.533]}
{"lineTo":[0.866, 0.6]}
{"lineTo":[0.8, 0.6]}
{"lineTo":[0.8, 0.666]}
{"lineTo":[0.733, 0.666]}
{"lineTo":[0.733, 0.733]}
{"lineTo":[0.666, 0.733]}
{"lineTo":[0.666, 0.8]}
{"lineTo":[0.6, 0.8]}
{"lineTo":[0.6, 0.866]}
{"lineTo":[0.533, 0.866]}
{"lineTo":[0.533, 0.933]}
{"lineTo":[0.466, 0.933]}
{"lineTo":[0.466, 0.866]}
{"lineTo":[0.4, 0.866]}
{"lineTo":[0.4, 0.8]}
{"lineTo":[0.333, 0.8]}
{"lineTo":[0.333, 0.733]}
{"lineTo":[0.266, 0.733]}
{"lineTo":[0.266, 0.666]}
{"lineTo":[0.2, 0.666]}
{"lineTo":[0.2, 0.6]}
{"lineTo":[0.133, 0.6]}
{"lineTo":[0.133, 0.533]}
{"lineTo":[0.066, 0.533]}
{"lineTo":[0.066, 0.266]}
{"lineTo":[0.133, 0.266]}
{"lineTo":[0.133, 0.2]}
{"lineTo":[0.2, 0.2]}
{"lineTo":[0.2, 0.133]}
{"lineTo":[0.4, 0.133]}
{"lineTo":[0.4, 0.2]}
{"lineTo":[0.466, 0.2]}
{"lineTo":[0.466, 0.266]}
{"closePath":[]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#EB7D1E"}
{"moveTo":[0.566, 0.366]}
{"lineTo":[0.566, 0.3]}
{"lineTo":[0.7, 0.3]}
{"lineTo":[0.7, 0.366]}
{"lineTo":[0.766, 0.366]}
{"lineTo":[0.766, 0.5]}
{"lineTo":[0.7, 0.5]}
{"lineTo":[0.7, 0.566]}
{"lineTo":[0.633, 0.566]}
{"lineTo":[0.633, 0.633]}
{"lineTo":[0.566, 0.633]}
{"lineTo":[0.566, 0.7]}
{"lineTo":[0.433, 0.7]}
{"lineTo":[0.433, 0.633]}
{"lineTo":[0.366, 0.633]}
{"lineTo":[0.366, 0.566]}
{"lineTo":[0.3, 0.566]}
{"lineTo":[0.3, 0.5]}
{"lineTo":[0.233, 0.5]}
{"lineTo":[0.233, 0.366]}
{"lineTo":[0.3, 0.366]}
{"lineTo":[0.3, 0.3]}
{"lineTo":[0.433, 0.3]}
{"lineTo":[0.433, 0.366]}
{"closePath":[]}
{"fill":[]}
(
...............
...............
...000...000...
..0...0.0...0..
.0.....0.....0.
.0...........0.
.0...........0.
.0...........0.
..0.........0..
...0.......0...
....0.....0....
.....0...0.....
......0.0......
.......0.......
...............
)
KeySprite
#ae7f2e black
.00.......
0000......
0100000000
0000..0.0.
.00.......
Key; transparent
TreasureSprite:Closed
#ae7f2e #ebcc70 black
..000000..
.00000000.
2222222222
2222222222
0101221010
0101221010
0101001010
0101001010
0101001010
22......22
TreasureSprite:Open
#ae7f2e #ebcc70 black
2222222222
2000000002
2000000002
2111111112
0101221010
0101221010
0101001010
0101001010
0101001010
22......22
Treasure; transparent
Hamburger canvas:1,1
{"beginPath":[]}{"fillStyle":"#ae7f2e"}
{"moveTo":[0.333, 0.266]}
{"lineTo":[0.666, 0.266]}
{"lineTo":[0.733, 0.333]}
{"lineTo":[0.8, 0.333]}
{"lineTo":[0.933, 0.466]}
{"lineTo":[0.933, 0.533]}
{"lineTo":[0.066, 0.533]}
{"lineTo":[0.066, 0.466]}
{"lineTo":[0.2, 0.333]}
{"lineTo":[0.266, 0.333]}
{"closePath":[]}
{"fill":[]}
{"moveTo":[0.133, 0.866]}
{"lineTo":[0.866, 0.866]}
{"lineTo":[0.866, 0.933]}
{"lineTo":[0.8, 1.0]}
{"lineTo":[0.2, 1.0]}
{"lineTo":[0.133, 0.933]}
{"closePath":[]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#d9c167"}
{"rect":[0.333, 0.266, 0.066, 0.066]}
{"rect":[0.466, 0.266, 0.066, 0.066]}
{"rect":[0.6, 0.266, 0.066, 0.066]}
{"rect":[0.266, 0.4, 0.066, 0.066]}
{"rect":[0.4, 0.4, 0.066, 0.066]}
{"rect":[0.533, 0.4, 0.066, 0.066]}
{"rect":[0.666, 0.4, 0.066, 0.066]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#416468"}
{"rect":[0.066, 0.566, 0.866, 0.133]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#b13823"}
{"moveTo":[0.066, 0.7]}
{"lineTo":[0.933, 0.7]}
{"lineTo":[1.0, 0.766]}
{"lineTo":[1.0, 0.8]}
{"lineTo":[0.933, 0.866]}
{"lineTo":[0.066, 0.866]}
{"lineTo":[0.0, 0.8]}
{"lineTo":[0.0, 0.766]}
{"closePath":[]}
{"fill":[]}
Drumstick canvas:1,1
{"beginPath":[]}{"fillStyle":"#e37810"}
{"moveTo":[0.366, 0.0]}
{"lineTo":[0.633, 0.0]}
{"lineTo":[0.633, 0.066]}
{"lineTo":[0.7, 0.066]}
{"lineTo":[0.7, 0.2]}
{"lineTo":[0.766, 0.2]}
{"lineTo":[0.766, 0.4]}
{"lineTo":[0.7, 0.4]}
{"lineTo":[0.7, 0.533]}
{"lineTo":[0.633, 0.533]}
{"lineTo":[0.633, 0.666]}
{"lineTo":[0.566, 0.666]}
{"lineTo":[0.566, 0.733]}
{"lineTo":[0.433, 0.733]}
{"lineTo":[0.433, 0.666]}
{"lineTo":[0.366, 0.666]}
{"lineTo":[0.366, 0.533]}
{"lineTo":[0.3, 0.533]}
{"lineTo":[0.3, 0.4]}
{"lineTo":[0.233, 0.4]}
{"lineTo":[0.233, 0.2]}
{"lineTo":[0.3, 0.2]}
{"lineTo":[0.3, 0.066]}
{"lineTo":[0.366, 0.066]}
{"closePath":[]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#878380"}
{"moveTo":[0.433, 0.733]}
{"lineTo":[0.566, 0.733]}
{"lineTo":[0.566, 0.866]}
{"lineTo":[0.633, 0.866]}
{"lineTo":[0.633, 1.0]}
{"lineTo":[0.566, 1.0]}
{"lineTo":[0.566, 0.933]}
{"lineTo":[0.433, 0.933]}
{"lineTo":[0.433, 1.0]}
{"lineTo":[0.366, 1.0]}
{"lineTo":[0.366, 0.866]}
{"lineTo":[0.433, 0.866]}
{"closePath":[]}
{"fill":[]}
{"beginPath":[]}{"fillStyle":"#b13823"}
{"moveTo":[0.466, 0.1]}
{"lineTo":[0.6, 0.1]}
{"lineTo":[0.6, 0.166]}
{"lineTo":[0.666, 0.166]}
{"lineTo":[0.666, 0.366]}
{"lineTo":[0.6, 0.366]}
{"lineTo":[0.6, 0.233]}
{"lineTo":[0.533, 0.233]}
{"lineTo":[0.533, 0.166]}
{"lineTo":[0.466, 0.166]}
{"closePath":[]}
{"fill":[]}
Trophy canvas:1,1
{"beginPath":[]}{"fillStyle":"#ae7f2e"}
{"moveTo":[0.233, 0.0]}
{"lineTo":[0.766, 0.0]}
{"lineTo":[0.766, 0.133]}
{"lineTo":[0.966, 0.133]}
{"lineTo":[0.966, 0.4]}
{"lineTo":[0.9, 0.4]}
{"lineTo":[0.9, 0.466]}
{"lineTo":[0.833, 0.466]}
{"lineTo":[0.833, 0.533]}
{"lineTo":[0.7, 0.533]}
{"lineTo":[0.7, 0.6]}
{"lineTo":[0.633, 0.6]}
{"lineTo":[0.633, 0.666]}
{"lineTo":[0.566, 0.666]}
{"lineTo":[0.566, 0.866]}
{"lineTo":[0.633, 0.866]}
{"lineTo":[0.633, 0.933]}
{"lineTo":[0.7, 0.933]}
{"lineTo":[0.7, 1.0]}
{"lineTo":[0.300, 1.0]}
{"lineTo":[0.300, 0.933]}
{"lineTo":[0.366, 0.933]}
{"lineTo":[0.366, 0.866]}
{"lineTo":[0.433, 0.866]}
{"lineTo":[0.433, 0.666]}
{"lineTo":[0.366, 0.666]}
{"lineTo":[0.366, 0.6]}
{"lineTo":[0.300, 0.6]}
{"lineTo":[0.300, 0.533]}
{"lineTo":[0.166, 0.533]}
{"lineTo":[0.166, 0.466]}
{"lineTo":[0.1, 0.466]}
{"lineTo":[0.1, 0.4]}
{"lineTo":[0.033, 0.4]}
{"lineTo":[0.033, 0.133]}
{"lineTo":[0.233, 0.133]}
{"closePath":[]}
{"moveTo":[0.766, 0.2]}
{"lineTo":[0.766, 0.4]}
{"lineTo":[0.833, 0.4]}
{"lineTo":[0.833, 0.333]}
{"lineTo":[0.9, 0.333]}
{"lineTo":[0.9, 0.2]}
{"closePath":[]}
{"moveTo":[0.233, 0.2]}
{"lineTo":[0.1, 0.2]}
{"lineTo":[0.1, 0.333]}
{"lineTo":[0.166, 0.333]}
{"lineTo":[0.166, 0.4]}
{"lineTo":[0.233, 0.4]}
{"closePath":[]}
{"fill":[]}
LadderBottom canvas:1,1
{"beginPath":[]}{"fillStyle":"#000000"}
{"roundRect":[0.0,-0.1,0.1,1.1,0.1]}
{"roundRect":[0.9,-0.1,0.1,1.1,0.1]}
{"roundRect":[0.0,-0.05,1,0.1,0.1]}
{"roundRect":[0.0,0.283,1,0.1,0.1]}
{"roundRect":[0.0,0.616,1,0.1,0.1]}
{"fill":[]}
LadderTop canvas:1,1
copy:LadderBottom
flip:down
LadderMiddle canvas:1,1
{"beginPath":[]}{"fillStyle":"#000000"}
{"roundRect":[0.0,-0.1,0.1,1.1,0.1]}
{"roundRect":[0.9,-0.1,0.1,1.1,0.1]}
{"roundRect":[0.0,-0.05,1,0.1,0.1]}
{"roundRect":[0.0,0.283,1,0.1,0.1]}
{"roundRect":[0.0,0.616,1,0.1,0.1]}
{"roundRect":[0.0,0.95,1,0.1,0.1]}
{"fill":[]}
Counter:0
black
..0..
.0.0.
.0.0.
.0.0.
..0..
Counter:1
black
..0..
.00..
..0..
..0..
.000.
Counter:2
black
.00..
...0.
..0..
.0...
.000.
Counter:3
black
.00..
...0.
..0..
...0.
.00..
Counter:4
black
.0...
.0.0.
.000.
...0.
...0.
Counter:5
black
.000.
.0...
.00..
...0.
.00..
Counter:6
black
..00.
.0...
.00..
.0.0.
..0..
Counter:7
black
.000.
...0.
..0..
..0..
..0..
Counter:8
black
..0..
.0.0.
..0..
.0.0.
..0..
Counter:9
black
..0..
.0.0.
..00.
...0.
.00..
Brachio:left; transparent
Brachio:right; transparent
Climbing; transparent
Timer:Tick; transparent
Temp; pink
PlayerTurn; pink
RealTimeTurn; pink
Damage; red
PlayerSpawn; blue
=======
LEGEND
=======
. = Background
# = Wall0
P = PlayerSpawn
C = TriceratopsSprite:right
B = BrachioSprite:right
D = BrachioSprite:left
≡ = LadderMiddle
* = Coin
_ = Counter:0
H = Hamburger
Y = Drumstick
T = Trophy
K = KeySprite
! = TreasureSprite:Closed
0 = CoinSpawn:0
1 = CoinSpawn:1
2 = CoinSpawn:2
3 = CoinSpawn:3
4 = CoinSpawn:4
5 = CoinSpawn:5
6 = CoinSpawn:6
7 = CoinSpawn:7
8 = CoinSpawn:8
9 = CoinSpawn:9
F = Fire:right
Brachio = Brachio:left or Brachio:right
Wall = Wall0 or Wall1 or Wall2 or Wall3 or Wall4 or Wall5 or Wall6 or Wall7 or Wall8 or Wall9
Ladder = LadderBottom or LadderTop or LadderMiddle
BlockPlayer = Wall or Triceratops or Brachio or Treasure
BlockTriceratops = Wall or Brachio or Treasure or Player or DeadPlayer
PlayerSprite:vert = PlayerSprite:vert:left or PlayerSprite:vert:right
PlayerSprite:hori = PlayerSprite:left or PlayerSprite:right
PlayerSprite = PlayerSprite:hori or PlayerSprite:vert
BrachioSprite = BrachioSprite:right or BrachioSprite:left
TriceratopsSprite = TriceratopsSprite:right or TriceratopsSprite:left
DeadPlayerSprite = DeadPlayerSprite:left or DeadPlayerSprite:right
TreasureSprite = TreasureSprite:Closed or TreasureSprite:Open
PlayerHurtSprite = PlayerHurtSprite:left or PlayerHurtSprite:right or PlayerHurtSprite:vert:left or PlayerHurtSprite:vert:right
TurnMarker = PlayerTurn or RealTimeTurn
Fire = Fire:left or Fire:right
SmallTimer = Timer:0 or Timer:1 or Timer:2 or Timer:3 or Timer:4 or Timer:5
Timer = Timer:Tick
Counter = Counter:Digit
CoinSpawn = CoinSpawn:Tick
Snack = Hamburger or Drumstick
TriceratopsMoveTimer = Timer:5
=======
SOUNDS
=======
player cantmove 85101706
coin destroy 61164100:30
================
COLLISIONLAYERS
================
Background
Ladder
--
KeySprite
Coin, CoinSpawn
Snack, Trophy
--
Player, DeadPlayer, Triceratops, Brachio, Wall, Treasure
PlayerSprite, TriceratopsSprite, BrachioSprite, DeadPlayerSprite, TreasureSprite
PlayerHurtSprite
---
Fire
Counter
Heart
Key
--
Climbing
Timer
Temp
TurnMarker
Damage
PlayerSpawn
======
RULES
======
[ PlayerSpawn ] -> gosub Init health
[ PlayerSpawn ] -> gosub Setup sprites
// simulate real-time turns
[ action Player ] -> [ Player ]
random [ ] -> [ Temp ]
[ ] [ Temp ] [ moving Player ] -> [ PlayerTurn ] [ ] [ moving Player ]
[ ] [ Temp ] -> [ RealTimeTurn ] [ ]
[ PlayerHurtSprite ] -> [ ]
[ RealTimeTurn ] -> gosub Real-time turn
[ PlayerTurn ] -> gosub Player turn
[ Climbing > Player ] -> [ > Climbing > Player ]
[ PlayerSprite ] [ > Player ] -> [ > PlayerSprite ] [ > Player ]
[ DeadPlayerSprite > DeadPlayer ] -> [ > DeadPlayerSprite > DeadPlayer ]
late [ RealTimeTurn ] -> gosub Late real-time turn
late [ PlayerTurn ] -> gosub Late player turn
late right [ Fire Player ] -> [ Damage Player ]
late [ Damage ] -> gosub Damage player
late [ Player ] -> [ Player Temp ]
late [ Heart ] [ Temp ] -> [ Heart ] [ ]
late [ Temp ] -> gosub Kill player
late right [ Player Coin ] [ Counter:9 | Coin ] -> [ Player ] [ Counter:0 Temp | Coin ]
+ late right SmallDigit [ Player Coin ] [ Counter:SmallDigit | Coin ] -> [ Player ] [ Counter:SmallDigitUp | Coin ]
late right Digit [ Counter:Digit | Counter Temp ] -> [ Counter:DigitUp | Counter ]
late [ TurnMarker ] -> [ ]
/// LEVEL SETUP ///
subroutine Init health
random [ ] -> [ Temp ]
right [ | | ] [ Temp ] -> [ Heart | Heart | Heart ] [ ]
subroutine Setup sprites
right [ KeySprite no Key | ] -> [ KeySprite Key | Key ]
right [ TreasureSprite no Treasure | ] -> [ TreasureSprite Treasure | Treasure ]
once up [ Treasure | ] -> [ Treasure | Treasure ]
right [ PlayerSpawn | | ] -> [ PlayerSprite:right Player | Player | Player Temp ]
once up [ Player | | ] -> [ Player | Player | Player ]
up [ Player Temp | Player ] -> [ | ]
up [ PlayerSprite | | Player ] -> [ PlayerSprite | | ]
right [ TriceratopsSprite no Triceratops | | ] -> [ TriceratopsSprite Triceratops | Triceratops | Triceratops ]
once up [ Triceratops | ] -> [ Triceratops | Triceratops ]
[ TriceratopsSprite no Timer ] -> [ TriceratopsSprite random SmallTimer ]
right [ BrachioSprite:right no Brachio | | ] -> [ BrachioSprite:right Brachio:right | Brachio:right | Brachio:right ]
right [ BrachioSprite:left no Brachio | | ] -> [ BrachioSprite:left Brachio:left | Brachio:left | Brachio:left ]
once up [ Brachio | | ] -> [ Brachio | Brachio | Brachio Temp ]
right [ Temp Brachio:right | no Brachio:right ] -> [ Brachio:right random SmallTimer | ]
left [ Temp Brachio:left | no Brachio:left ] -> [ Brachio:left random SmallTimer | ]
[ Temp ] -> [ ]
down [ LadderMiddle | no Ladder ] -> [ LadderBottom | ]
up [ LadderMiddle | no Ladder ] -> [ LadderTop | ]
once [ Wall ] -> [ random Wall ]
/// TURN STRUCTURE ///
subroutine Real-time turn
once Tick [ Timer:Tick ] -> [ Timer:TickDown ]
[ ] -> gosub Handle Brachio
[ ] -> gosub Handle Triceratops
[ TreasureSprite:Open ] [ CoinSpawn ] -> gosub Spawn coins
[ ] -> gosub Apply gravity
subroutine Late real-time turn
late [ ] -> gosub Check for pickups
late [ Fire Wall ] -> [ Wall ]
subroutine Player turn
[ horizontal Player ] -> gosub Check for support
[ PlayerSprite:left ] [ right Player ] -> gosub Turn around
[ PlayerSprite:right ] [ left Player ] -> gosub Turn around
[ vertical Player ] -> gosub Check for ladders
[ horizontal Player Climbing ] -> gosub Move off ladder
horizontal [ > Player | Treasure ] [ KeySprite no Key ] -> gosub Open treasure
[ moving Player ] -> gosub Check for blocked movement
subroutine Late player turn
late [ Climbing Player ] -> gosub Exit ladder
late [ ] -> gosub Check for pickups
/// HELPER SUBROUTINES ///
subroutine Handle Brachio
[ Fire:right ] -> [ right Fire:right ]
[ Fire:left ] -> [ left Fire:left ]
right [ Brachio:right Timer:0 ] -> [ Brachio:right Timer:10 Fire:right ]
left [ Brachio:left Timer:0 ] -> [ Brachio:left Timer:10 Fire:left ]
subroutine Handle Triceratops
[ TriceratopsSprite:right Timer:0 Triceratops ] -> [ right TriceratopsSprite:right right Triceratops ]
[ TriceratopsSprite:left Timer:0 Triceratops ] -> [ left TriceratopsSprite:left left Triceratops ]
[ moving Triceratops | stationary Triceratops ] -> [ moving Triceratops | moving Triceratops ]
[ > Triceratops | Player ] -> [ > Triceratops | Temp Player ]
[ Temp | Temp ] -> [ Temp | ]
right [ Temp Player ] -> [ Damage Player ]
[ > Triceratops | BlockTriceratops ] -> [ Triceratops | BlockTriceratops ]
[ moving Triceratops | stationary Triceratops ] -> [ Triceratops | Triceratops ]
_Horizontal [ moving TriceratopsSprite:_Horizontal stationary Triceratops ] -> [ TriceratopsSprite:Flip Triceratops ]
[ > TriceratopsSprite no Timer ] -> [ > TriceratopsSprite > TriceratopsMoveTimer ]
[ TriceratopsSprite no Timer ] -> [ TriceratopsSprite TriceratopsMoveTimer ]
subroutine Spawn coins
[ CoinSpawn:0 ] -> [ Coin ]
once Tick [ CoinSpawn:Tick ] -> [ CoinSpawn:TickDown ]
subroutine Apply gravity
[ Player no Climbing ] -> [ down Player ]
down [ > Player ] [ Player | BlockPlayer ] -> [ Player ] [ Player | BlockPlayer ]
up [ moving Triceratops | Player no Climbing ] -> [ moving Triceratops | moving Player ]
[ horizontal Player | stationary Player ] -> [ horizontal Player | horizontal Player ]
horizontal [ > Player | BlockPlayer ] -> [ Player | BlockPlayer ]
[ horizontal Player | stationary Player ] -> [ Player | Player ]
[ DeadPlayer ] -> [ down DeadPlayer ]
down [ > DeadPlayer ] [ DeadPlayer | BlockPlayer ] -> [ DeadPlayer ] [ DeadPlayer | BlockPlayer ]
subroutine Check for support
random [ ] -> [ Temp ]
[ Temp ] [ Player Climbing ] -> [ ] [ Player Climbing ]
down [ Temp ] [ Player | BlockPlayer ] -> [ ] [ Player | BlockPlayer ]
[ Temp ] [ horizontal Player ] -> [ Temp ] [ Player ]
[ Temp ] -> [ ]
subroutine Turn around
right [ PlayerSprite | | ] -> [ PlayerSprite Temp | | Temp ]
once up [ Temp | | ] -> [ Temp | Temp | Temp ]
[ Temp BlockPlayer ] [ Temp no BlockPlayer ] -> [ Temp BlockPlayer ] [ ]
[ Temp BlockPlayer ] -> [ BlockPlayer ]
horizontal [ Temp Player | | Temp ] -> [ | | Player ]
_Horizontal [ PlayerSprite:_Horizontal no Temp ] [ stationary Player ] -> [ PlayerSprite:Flip Temp ] [ Player ]
[ Temp ] -> [ ]
subroutine Check for ladders
// Mark the player's middle column
right [ PlayerSprite:hori | ] -> [ PlayerSprite:hori | Temp ]
[ PlayerSprite:vert ] -> [ PlayerSprite:vert Temp ]
once up [ Temp | | ] -> [ Temp | Temp | Temp ]
// Allow moving up if at least one tile of the player's middle column is over a ladder
up [ > Player no Ladder | no Ladder ] -> [ Player | ]
[ up Player Temp ] [ stationary Player ] -> [ up Player Temp ] [ up Player ]
[ up Player ] [ stationary Player ] -> [ Player ] [ Player ]
// Allow moving down if at least one tile of the player's middle column is above a ladder
down [ > Player no Ladder | no Ladder ] -> [ Player | ]
[ down Player Temp ] [ stationary Player ] -> [ down Player Temp ] [ down Player ]
[ down Player ] [ stationary Player ] -> [ Player ] [ Player ]
[ Temp ] -> [ ]
// Shrink player to 3x1 and mark them as climbing
vertical [ > Player Ladder ] -> [ Climbing > Player Ladder ]
vertical [ > Player | Ladder ] -> [ Climbing > Player | Ladder ]
vertical [ Player no Climbing | Climbing Player ] -> [ Climbing Player | Climbing Player ]
[ vertical Player no Climbing ] -> [ ]
// Update player sprite
[ PlayerSprite:hori ] [ Climbing ] -> [ ] [ Climbing ]
down _Horizontal [ Player Climbing PlayerSprite:vert:_Horizontal no Temp | no Player ] -> [ Player Climbing PlayerSprite:vert:Flip Temp | ]
[ Temp ] -> [ ]
down [ Player Climbing no PlayerSprite:vert | no Player ] -> [ Player Climbing PlayerSprite:vert:left | ]
subroutine Move off ladder
// Block if any tile cannot expand in both directions
horizontal [ BlockPlayer | horizontal Player] -> [ BlockPlayer | Player ]
[ > Player ] [ stationary Player ] -> [ Player ] [ Player ]
right [ | > Player Climbing | ] -> [ PlayerSprite:right Player | Player no PlayerSprite | Player ]
right [ | < Player Climbing | ] -> [ PlayerSprite:left Player | Player no PlayerSprite | Player ]
down [ PlayerSprite | Player ] -> [ | Player ]
up [ PlayerSprite:right | | Player ] -> [ PlayerSprite:right | | ]
right [ PlayerSprite:right | | ] -> [ PlayerSprite:right | | Temp ]
up [ Temp Player | Player ] -> [ | ]
up [ PlayerSprite:left Player | Player | ] -> [ PlayerSprite:left | | Temp ]
right [ Temp | | Player ] -> [ | | ]
subroutine Open treasure
[ TreasureSprite:Closed ] [ KeySprite no Key ] -> [ TreasureSprite:Open ] [ ]
subroutine Check for blocked movement
// Block movement if any tile would move into a blocker
[ > Player | BlockPlayer ] -> [ Player | BlockPlayer ]
[ > Player ] [ stationary Player ] -> [ Player ] [ Player ]
subroutine Exit ladder
late [ Player ] -> [ Player Temp ]
late [ Player Ladder ] [ Temp ] -> [ Player Ladder ] [ ]
// We just assume that there is always enough room above and below a ladder for the player to expand back to 3x3
late up [ Player | Player Climbing Temp | Player Climbing Temp ] -> [ Player | | ]
late right [ | PlayerSprite Player Climbing Temp ] -> [ PlayerSpawn | ]
late [ PlayerSpawn ] -> gosub Spawn player
subroutine Spawn player
late right [ PlayerSpawn | | ] -> [ PlayerSprite:right Player | Player | Player Temp ]
late once up [ Player | | ] -> [ Player | Player | Player ]
late up [ Player Temp | Player ] -> [ | ]
late up [ PlayerSprite | | Player ] -> [ PlayerSprite | | ]
subroutine Check for pickups
late [ Player Key ] -> gosub Pick up key
late right [ Player Snack ] [ Heart | no Heart ] -> [ Player ] [ Heart | Heart ]
// TODO: just play a sound and delay winning somehow
late [ Player Trophy ] -> win
subroutine Pick up key
late right [ Heart ] [ Coin ] [ KeySprite Key | Key ] -> [ Heart Key ] [ Coin Key ] [ | ]
late right [ Key | | ... | | Key ] -> [ | Key | ... | Key | ]
late right [ Key | | Key ] -> [ | Key | Key ]
late right [ Key | Key ] -> [ KeySprite | ]
subroutine Damage player
late once right [ Heart | no Heart ] -> [ | ]
late [ Damage ] -> [ ]
late [ PlayerSprite:left ] [ Heart ] -> [ PlayerSprite:left PlayerHurtSprite:left ] [ Heart ]
late [ PlayerSprite:right ] [ Heart ] -> [ PlayerSprite:right PlayerHurtSprite:right ] [ Heart ]
late [ PlayerSprite:vert:left ] [ Heart ] -> [ PlayerSprite:vert:left PlayerHurtSprite:vert:left ] [ Heart ]
late [ PlayerSprite:vert:right ] [ Heart ] -> [ PlayerSprite:vert:right PlayerHurtSprite:vert:right ] [ Heart ]
subroutine Kill player
late [ Temp ] -> [ ]
late [ Player ] -> [ ]
late right [ PlayerSprite:left | ] -> [ DeadPlayerSprite:left Temp | Temp ]
late right [ PlayerSprite:right | | ] -> [ | DeadPlayerSprite:right Temp | Temp ]
late right [ PlayerSprite:vert | ] -> [ DeadPlayerSprite:right Temp | Temp ]
late once up [ Temp no DeadPlayerSprite | | ] -> [ | DeadPlayer | DeadPlayer ]
late once up [ Temp DeadPlayerSprite | | ] -> [ | DeadPlayerSprite DeadPlayer | DeadPlayer ]
==============
WINCONDITIONS
==============
=======
LEVELS
=======
section Level 1
.....................................................................__*
########################################################################
#......................................................................#
#......................................................................#
#......................................................................#
#......................................................................#
#......................................................................#
#......................................................................#
#......................................................................#
#......................................................................#
#......................................................................#
#......................................................................#
############≡#####.....................................................#
#...........≡....#.....................................................#
#.......*.*.≡.*..#.....................................................#
#......*.*..≡..*.#.....................................................#
#..p........≡....#.....................................................#
########################################################################
..............................................__*
#################################################
#...............#...............#...............#
#...............#...............#...............#
#!.P..H......*..#!....H......*..#!....H......*..#
####≡##B...≡*.*.####≡##B...≡*.*.####≡##B...≡*.*.#
#...≡..###.≡.*..#...≡..###.≡.*..#...≡..###.≡.*..#
#.*.≡..56..≡*.*.#.*.≡..56..≡*.*.#.*.≡..56..≡*.*.#
#*.*..4.78.≡.*.T#*.*..4.78.≡.*.T#*.*..4.78.≡.*.T#
#.*...32.9.≡....#.*...32.9.≡....#.*...32.9.≡....#
#Y....K10..≡.C..#Y....K10..≡.C..#Y....K10..≡.C..#
#################################################
...............__*
##################
#.F..............#
#....9......0....#
#..8..........1..#
#......!.........#
#.7...####≡#...2.#
#.........≡......#
#..6......≡...3..#
#....5....≡.4....#
#.P.......≡...K..#
##################
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment