Created
March 22, 2025 23:06
-
-
Save m-ender/24934ccab9935e67f2d370cbb5da97a0 to your computer and use it in GitHub Desktop.
Dino Game (Puzzlescript Next Script)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Play this game by pasting the script into https://david-pfx.github.io/PuzzleScriptNext/src/editor.html |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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:20 Fire:right ] | |
left [ Brachio:left Timer:0 ] -> [ Brachio:left Timer:20 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 | |
....................................................................__* | |
####################################################################### | |
#...............................#.....................................# | |
#.*...*...*...*...*...*...*...*.#..*.*................*...............# | |
#...............................#.*.*.*............................!..# | |
####≡#################≡##########..*.*...............##≡#....###≡###### | |
#.#.≡............#....≡........#########.............#.≡........≡.....# | |
###.≡............#.*.*≡*.*.*.*.#.......#c............#.≡........≡...*.# | |
#...≡............#....≡c.......#.*.*.*.##≡######≡#####.≡........≡.....# | |
#...≡...*...*.d..##≡#########≡##.......#.............######≡#.*.≡..#≡## | |
#...≡.*...*...####.≡.........≡.#yh...k.#...*..*......#.....≡....≡...≡.# | |
#.h.≡.........#..#.≡...*.*...≡.####≡####.*......*....#.....≡..*.###.≡.# | |
############≡#####.≡..*.h.*..≡.....≡...#.............#b....≡........≡.# | |
#...........≡....#.≡..##≡##..≡.........###≡#######.*.####..≡..*.....≡.# | |
#.......*.*.≡.*..#.≡....≡....≡............≡..*...#.*.*.....≡...h.y..≡.# | |
#......*.*..≡..*.#.≡.**.≡.**...***...***..≡.*.*..#.*.*.*...≡.########## | |
#t.p........≡....#.≡....≡............c....≡..y...#.*.*.*.*.≡.#........# | |
####################################################################### | |
( | |
..............................................__* | |
################################################# | |
#...............#...............#...............# | |
#...............#...............#...............# | |
#!.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..# | |
################################################# | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment