Last active
July 12, 2022 20:53
-
-
Save chz16/c666ff2174192c180a806144e8a38155 to your computer and use it in GitHub Desktop.
The Sorcerer's Detritus code
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 in http://www.puzzlescript.net/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
(version 1.0.3 | |
1.0.3 [2022-07-12]: forgot to edit the right side of 2 to match the adjustment to 3 oops | |
1.0.2 [2022-07-12]: removed a cheese solution from level 3 and removed a little unnecessary space | |
1.0.1 [2022-07-08]: added a checkpoint to the cutscene where you emerge from the sewers, so when you restart it's from the point of control | |
1.0.0 [2002-07-08]: original jam release | |
) | |
title The Sorcerer's Detritus | |
author CHz | |
homepage quiteajolt.com | |
noaction | |
run_rules_on_level_start | |
again_interval 0.05 | |
======== | |
OBJECTS | |
======== | |
Background | |
#602010 | |
InvisibleWall | |
transparent | |
Wall | |
#404040 | |
WallUpBorder | |
#606060 | |
00000 | |
..... | |
..... | |
..... | |
..... | |
WallURBorder | |
#606060 | |
....0 | |
..... | |
..... | |
..... | |
..... | |
WallRightBorder | |
#606060 | |
....0 | |
....0 | |
....0 | |
....0 | |
....0 | |
WallDRBorder | |
#606060 | |
..... | |
..... | |
..... | |
..... | |
....0 | |
WallDownBorder | |
#606060 | |
..... | |
..... | |
..... | |
..... | |
00000 | |
WallDLBorder | |
#606060 | |
..... | |
..... | |
..... | |
..... | |
0.... | |
WallLeftBorder | |
#606060 | |
0.... | |
0.... | |
0.... | |
0.... | |
0.... | |
WallULBorder | |
#606060 | |
0.... | |
..... | |
..... | |
..... | |
..... | |
Player | |
Black White | |
..... | |
.000. | |
.000. | |
.111. | |
00000 | |
UpBonkedPlayer | |
Black White | |
.000. | |
11111 | |
00000 | |
..... | |
..... | |
LeftBonkedPlayer | |
Black White | |
00... | |
00... | |
10... | |
11... | |
000.. | |
RightBonkedPlayer | |
Black White | |
...00 | |
...00 | |
...01 | |
...11 | |
..000 | |
Crate | |
Orange | |
00000 | |
0...0 | |
0...0 | |
0...0 | |
00000 | |
BirdLeft | |
White Orange | |
.00.. | |
100.0 | |
.0000 | |
.0000 | |
..11. | |
BirdRight | |
White Orange | |
..00. | |
0.001 | |
0000. | |
0000. | |
.11.. | |
RabbitLeft | |
Brown Black DarkBrown | |
0.0.. | |
000.0 | |
01000 | |
00000 | |
00000 | |
RabbitRight | |
Brown Black | |
..0.0 | |
0.000 | |
00010 | |
00000 | |
00000 | |
FlowersLeft | |
Red Orange Green | |
.0... | |
0001. | |
.0111 | |
..21. | |
..2.. | |
FlowersRight | |
Red Orange Green | |
...0. | |
.1000 | |
1110. | |
.12.. | |
..2.. | |
Key | |
yellow | |
..... | |
..... | |
..000 | |
000.0 | |
0.000 | |
Lock | |
Black Gray | |
.111. | |
1...1 | |
00000 | |
00100 | |
00000 | |
ThinPlatform | |
#606060 | |
00000 | |
..... | |
..... | |
..... | |
..... | |
NormalExit | |
red | |
..0.. | |
...0. | |
00000 | |
...0. | |
..0.. | |
InvisibleExit | |
transparent | |
LevelCounter1 | |
LightBlue | |
.0... | |
00... | |
.0... | |
.0... | |
000.. | |
LevelCounter2 | |
LightBlue | |
00... | |
..0.. | |
.0... | |
0.... | |
000.. | |
LevelCounter3 | |
LightBlue | |
000.. | |
..0.. | |
000.. | |
..0.. | |
000.. | |
LevelCounter4 | |
LightBlue | |
0.0.. | |
0.0.. | |
000.. | |
..0.. | |
..0.. | |
LevelCounter5 | |
LightBlue | |
000.. | |
0.... | |
000.. | |
..0.. | |
000.. | |
LevelCounter6 | |
LightBlue | |
000.. | |
0.... | |
000.. | |
0.0.. | |
000.. | |
LevelCounter7 | |
LightBlue | |
000.. | |
0.0.. | |
..0.. | |
..0.. | |
..0.. | |
LevelCounter8 | |
LightBlue | |
000.. | |
0.0.. | |
000.. | |
0.0.. | |
000.. | |
UpToken | |
green | |
LeftToken | |
green | |
RightToken | |
green | |
StartFallNextTurn | |
transparent | |
FallTime0Token | |
transparent | |
FallTime1Token | |
transparent | |
FallTime2Token | |
transparent | |
FallToken | |
transparent | |
FallCheckToken | |
green | |
Cutscene1Marker | |
transparent | |
Cutscene1Start | |
transparent | |
Cutscene1End | |
transparent | |
Cutscene2Marker | |
transparent | |
Cutscene2Start | |
transparent | |
Cutscene3Marker | |
transparent | |
Cutscene4Marker | |
transparent | |
Cutscene4Start | |
transparent | |
Cutscene4Phase1 | |
transparent | |
Cutscene4Phase2 | |
transparent | |
Cutscene4End | |
transparent | |
Cutscene4OffscreenMovement | |
transparent | |
Cutscene5Marker | |
transparent | |
Cutscene5Start | |
transparent | |
Cutscene6Marker | |
transparent | |
Cutscene6Phase1 | |
transparent | |
Cutscene6Phase2 | |
transparent | |
Cutscene6Phase3 | |
transparent | |
Cutscene6Phase4 | |
transparent | |
SoundTrigger1 | |
transparent | |
SoundTrigger2 | |
transparent | |
SoundTrigger3 | |
transparent | |
SoundTrigger4 | |
transparent | |
SoundTrigger5 | |
transparent | |
SoundTrigger6 | |
transparent | |
SoundTrigger7 | |
transparent | |
Sky | |
#20FFFF | |
Sunset | |
#FF8000 | |
Night | |
#202020 | |
Cityscape1Marker | |
transparent | |
Cityscape2Marker | |
transparent | |
ManholeCover | |
#606060 #303030 | |
.000. | |
00000 | |
00100 | |
00000 | |
.000. | |
CutscenePlayer1 | |
Black White | |
..... | |
.000. | |
.000. | |
.111. | |
00000 | |
CutscenePlayer2 | |
Black White | |
0.... | |
0100. | |
0100. | |
0100. | |
0.... | |
CutscenePlayer3 | |
Black White | |
..... | |
00000 | |
.111. | |
.000. | |
.000. | |
CutscenePlayer4 | |
Black White | |
....0 | |
.0010 | |
.0010 | |
.0010 | |
....0 | |
WindowCover1 | |
#804000 | |
WindowCover2 | |
#804000 | |
000.. | |
000.. | |
000.. | |
000.. | |
000.. | |
LightBackground | |
#C04020 | |
LightBackgroundRightGradient | |
#C04020 | |
0.... | |
0.... | |
0.... | |
00... | |
00... | |
LightBackgroundLeftGradient | |
#C04020 | |
....0 | |
....0 | |
....0 | |
...00 | |
...00 | |
Cityscape100 | |
#804000 | |
Cityscape101 | |
#804000 | |
Cityscape102 | |
#804000 | |
Cityscape103 | |
#804000 | |
Cityscape104 | |
#804000 | |
Cityscape105 | |
#B0B0B0 | |
Cityscape110 | |
#804000 | |
000.. | |
000.. | |
000.. | |
000.. | |
000.. | |
Cityscape112 | |
#804000 #004080 | |
000.. | |
00011 | |
00011 | |
00011 | |
00011 | |
Cityscape113 | |
#804000 #004080 | |
00011 | |
00011 | |
00011 | |
00011 | |
00011 | |
Cityscape114 | |
#804000 #004080 #108040 | |
00000 | |
00011 | |
00011 | |
00022 | |
00022 | |
Cityscape120 | |
#A0A000 | |
..... | |
..... | |
..... | |
..000 | |
..000 | |
Cityscape121 | |
#A0A000 | |
..000 | |
..000 | |
..000 | |
..000 | |
..000 | |
Cityscape122 | |
#A0A000 #004080 | |
..000 | |
11000 | |
11000 | |
11000 | |
11000 | |
Cityscape123 | |
#A0A000 #004080 | |
11000 | |
11000 | |
11000 | |
11000 | |
11000 | |
Cityscape124 | |
#A0A000 #004080 #108040 | |
11000 | |
11000 | |
11000 | |
22222 | |
22222 | |
Cityscape130 | |
#A0A000 | |
..... | |
..... | |
..... | |
00000 | |
00000 | |
Cityscape131 | |
#A0A000 | |
Cityscape133 | |
#A0A000 #D05000 | |
00001 | |
00001 | |
00001 | |
00001 | |
00001 | |
Cityscape134 | |
#A0A000 #D05000 #108040 | |
00001 | |
00001 | |
00001 | |
22222 | |
22222 | |
Cityscape135 | |
#303030 | |
Cityscape140 | |
#A0A000 | |
..... | |
..... | |
..... | |
0.... | |
0.... | |
Cityscape141 | |
#A0A000 | |
0.... | |
0.... | |
0.... | |
0.... | |
0.... | |
Cityscape142 | |
#A0A000 #800080 | |
0.... | |
0.... | |
0.... | |
0.... | |
0...1 | |
Cityscape143 | |
#D05000 | |
Cityscape144 | |
#D05000 #108040 | |
00000 | |
00000 | |
00000 | |
11111 | |
11111 | |
Cityscape152 | |
#800080 | |
..... | |
..... | |
..... | |
..... | |
00000 | |
Cityscape153 | |
#800080 | |
Cityscape154 | |
#800080 #108040 | |
00000 | |
00000 | |
00000 | |
11111 | |
11111 | |
Cityscape161 | |
#0000FF | |
..... | |
...00 | |
...00 | |
...00 | |
...00 | |
Cityscape162 | |
#0000FF #800080 | |
...00 | |
...00 | |
...00 | |
...00 | |
11111 | |
Cityscape171 | |
#0000FF | |
..... | |
00000 | |
00000 | |
00000 | |
00000 | |
Cityscape172 | |
#0000FF #800080 | |
00000 | |
00000 | |
00000 | |
00000 | |
10000 | |
Cityscape173 | |
#0000FF #800080 | |
10000 | |
10000 | |
10000 | |
10000 | |
10000 | |
Cityscape174 | |
#0000FF #800080 #108040 | |
10000 | |
10000 | |
10000 | |
22222 | |
22222 | |
Cityscape181 | |
#0000FF | |
..... | |
0000. | |
0000. | |
0000. | |
0000. | |
Cityscape182 | |
#0000FF #800000 | |
0000. | |
0000. | |
00111 | |
00111 | |
00111 | |
Cityscape183 | |
#0000FF #800000 | |
00111 | |
00111 | |
00111 | |
00111 | |
00111 | |
Cityscape184 | |
#0000FF #800000 #108040 | |
00111 | |
00111 | |
00111 | |
22222 | |
22222 | |
Cityscape192 | |
#800000 | |
..... | |
..... | |
00000 | |
00000 | |
00000 | |
Cityscape193 | |
#800000 | |
Cityscape194 | |
#800000 #108040 | |
00000 | |
00000 | |
00000 | |
11111 | |
11111 | |
Cityscape200 | |
transparent | |
Cityscape201 | |
#303070 | |
..... | |
..... | |
..... | |
....0 | |
....0 | |
Cityscape202 | |
#303070 #800000 | |
....0 | |
....0 | |
11111 | |
11111 | |
11111 | |
Cityscape203 | |
#800000 | |
Cityscape204 | |
#800000 #108040 | |
00000 | |
00000 | |
00000 | |
11111 | |
11111 | |
Cityscape205 | |
#B0B0B0 | |
Cityscape211 | |
#303070 | |
..... | |
..... | |
..... | |
00000 | |
00000 | |
Cityscape212 | |
#303070 #800000 | |
00000 | |
00000 | |
10000 | |
10000 | |
10000 | |
Cityscape213 | |
#303070 #800000 | |
10000 | |
10000 | |
10000 | |
10000 | |
10000 | |
Cityscape214 | |
#303070 #800000 #108040 | |
10000 | |
10000 | |
10000 | |
22222 | |
22222 | |
Cityscape220 | |
#606060 | |
..000 | |
..000 | |
..000 | |
..000 | |
..000 | |
Cityscape221 | |
#606060 #303070 | |
..000 | |
..000 | |
..000 | |
11111 | |
11111 | |
Cityscape222 | |
#303070 | |
Cityscape224 | |
#303070 #108040 | |
00000 | |
00000 | |
00000 | |
11111 | |
11111 | |
Cityscape230 | |
#606060 | |
Cityscape231 | |
#606060 #303070 | |
00000 | |
00000 | |
00000 | |
10000 | |
10000 | |
Cityscape232 | |
#606060 #303070 | |
10000 | |
10000 | |
10000 | |
10000 | |
10000 | |
Cityscape234 | |
#606060 #303070 #108040 | |
10000 | |
10000 | |
10000 | |
22222 | |
22222 | |
Cityscape240 | |
#606060 | |
000.. | |
000.. | |
000.. | |
000.. | |
000.. | |
Cityscape242 | |
#606060 #904040 | |
01111 | |
01111 | |
01111 | |
01111 | |
01111 | |
Cityscape244 | |
#606060 #904040 #108040 | |
01111 | |
01111 | |
01111 | |
22222 | |
22222 | |
Cityscape252 | |
#904040 | |
Cityscape254 | |
#904040 #108040 | |
00000 | |
00000 | |
00000 | |
11111 | |
11111 | |
Cityscape262 | |
#904040 | |
00... | |
00... | |
00... | |
00... | |
00... | |
Cityscape263 | |
#904040 #004080 | |
00... | |
00... | |
00... | |
00111 | |
00111 | |
Cityscape264 | |
#904040 #004080 #108040 | |
00111 | |
00111 | |
00111 | |
22222 | |
22222 | |
Cityscape265 | |
#303030 | |
Cityscape273 | |
#004080 | |
..... | |
..... | |
..... | |
00000 | |
00000 | |
Cityscape274 | |
#004080 #108040 | |
00000 | |
00000 | |
00000 | |
11111 | |
11111 | |
Cityscape280 | |
#606060 | |
000.. | |
000.. | |
000.. | |
000.. | |
000.. | |
Cityscape283 | |
#606060 #004080 | |
000.. | |
000.. | |
000.. | |
00011 | |
00011 | |
Cityscape284 | |
#606060 #004080 #108040 | |
00011 | |
00011 | |
00011 | |
00022 | |
00022 | |
Cityscape285 | |
#B0B0B0 #804000 | |
00011 | |
00011 | |
00011 | |
00011 | |
00011 | |
Cityscape293 | |
#004080 | |
..... | |
..... | |
..... | |
0.... | |
0.... | |
Cityscape294 | |
#004080 #108040 | |
0.... | |
0.... | |
0.... | |
11111 | |
11111 | |
Cityscape295 | |
#804000 | |
Timer0 | |
transparent | |
Timer1 | |
transparent | |
Timer2 | |
transparent | |
Timer3 | |
transparent | |
Timer4 | |
transparent | |
Timer5 | |
transparent | |
Timer6 | |
transparent | |
Timer7 | |
transparent | |
Timer8 | |
transparent | |
Timer9 | |
transparent | |
TimerDecrement | |
transparent | |
TimerStart | |
transparent | |
======= | |
LEGEND | |
======= | |
. = Background | |
# = Wall | |
% = InvisibleWall | |
P = Player | |
K = Key | |
L = Lock | |
E = NormalExit | |
! = InvisibleExit and LightBackground | |
- = ThinPlatform | |
O = Crate | |
① = LevelCounter1 and Wall | |
② = LevelCounter2 and Wall | |
③ = LevelCounter3 and Wall | |
④ = LevelCounter4 and Wall | |
⑤ = LevelCounter5 and Wall | |
⑥ = LevelCounter6 and Wall | |
⑦ = LevelCounter7 and Wall | |
⑧ = LevelCounter8 and Wall | |
A = Cityscape1Marker | |
B = SoundTrigger1 and Cityscape1Marker | |
C = SoundTrigger2 and Cityscape1Marker | |
D = SoundTrigger3 and Cityscape1Marker | |
E = Cityscape1Marker | |
F = SoundTrigger3 and Cityscape1Marker | |
G = Cityscape1Marker | |
H = SoundTrigger3 and Cityscape1Marker | |
I = Cityscape1Marker | |
J = LightBackground | |
K = Cutscene1Marker and Cutscene1Start and LightBackground | |
L = LightBackground | |
M = Cutscene2Marker and Cutscene2Start and LightBackground | |
N = Cutscene3Marker and SoundTrigger6 | |
O = LightBackground | |
P = Cutscene4Marker and Cutscene4Start and LightBackground | |
Q = Cityscape2Marker | |
R = Cityscape2Marker and Cutscene5Marker | |
S = Cityscape1Marker and Cutscene6Marker | |
M = ManholeCover | |
W = CutscenePlayer1 | |
X = CutscenePlayer2 | |
Y = CutscenePlayer3 | |
Z = CutscenePlayer4 and ManholeCover | |
CutscenePlayer = CutscenePlayer1 or CutscenePlayer2 or CutscenePlayer3 or CutscenePlayer4 | |
SpinMarker = Cutscene1Marker or Cutscene2Marker | |
Detritus = BirdLeft or BirdRight or RabbitLeft or RabbitRight or FlowersLeft or FlowersRight | |
Object = Player or Detritus or Crate or Key | |
Exit = NormalExit or InvisibleExit | |
BonkedPlayer = UpBonkedPlayer or LeftBonkedPlayer or RightBonkedPlayer | |
MovementToken = UpToken or LeftToken or RightToken | |
FallTimeToken = FallTime0Token or FallTime1Token or FallTime2Token | |
0 = Timer0 | |
1 = Timer1 | |
2 = Timer2 | |
3 = Timer3 | |
4 = Timer4 | |
5 = Timer5 | |
6 = Timer6 | |
7 = Timer7 | |
8 = Timer8 | |
9 = Timer9 | |
$ = TimerStart | |
TimerDigit = Timer0 or Timer1 or Timer2 or Timer3 or Timer4 or Timer5 or Timer6 or Timer7 or Timer8 or Timer9 | |
SoundTrigger = SoundTrigger1 or SoundTrigger2 or SoundTrigger3 or SoundTrigger4 or SoundTrigger5 or SoundTrigger6 or SoundTrigger7 | |
======= | |
SOUNDS | |
======= | |
BonkedPlayer create 64135304 | |
Detritus create 29784905 | |
Lock destroy 81256700 | |
Cutscene4OffscreenMovement destroy 29784905 | |
SoundTrigger1 destroy 51577105 (door open) | |
SoundTrigger2 destroy 73601104 (door close) | |
SoundTrigger3 destroy 19826301 (hat flop) | |
SoundTrigger4 destroy 39444101 (big falling) | |
SoundTrigger5 destroy 42462702 (big landing) | |
SoundTrigger6 destroy 52242102 (manhole clank) | |
SoundTrigger7 destroy 61278503 (back in the window) | |
sfx0 24159104 (fall distance 1) | |
sfx1 7612104 (fall distance 2+) | |
================ | |
COLLISIONLAYERS | |
================ | |
Background | |
Sky, Sunset, Night, LightBackground, LightBackgroundLeftGradient, LightBackgroundRightGradient | |
Cityscape100, Cityscape101, Cityscape102, Cityscape103, Cityscape104, Cityscape105, Cityscape110, Cityscape112, Cityscape113, Cityscape114, Cityscape120, Cityscape121, Cityscape122, Cityscape123, Cityscape124, Cityscape130, Cityscape131, Cityscape133, Cityscape134, Cityscape135, Cityscape140, Cityscape141, Cityscape142, Cityscape143, Cityscape144, Cityscape152, Cityscape153, Cityscape154, Cityscape161, Cityscape162, Cityscape171, Cityscape172, Cityscape173, Cityscape174, Cityscape181, Cityscape182, Cityscape183, Cityscape184, Cityscape192, Cityscape193, Cityscape194 | |
Cityscape200, Cityscape201, Cityscape202, Cityscape203, Cityscape204, Cityscape205, Cityscape211, Cityscape212, Cityscape213, Cityscape214, Cityscape220, Cityscape221, Cityscape222, Cityscape224, Cityscape230, Cityscape231, Cityscape232, Cityscape234, Cityscape240, Cityscape242, Cityscape244, Cityscape252, Cityscape254, Cityscape262, Cityscape263, Cityscape264, Cityscape265, Cityscape273, Cityscape274, Cityscape280, Cityscape283, Cityscape284, Cityscape285, Cityscape293, Cityscape294, Cityscape295 | |
ManholeCover | |
CutscenePlayer | |
Cityscape1Marker, Cityscape2Marker | |
Cutscene1Marker, Cutscene2Marker, Cutscene3Marker, Cutscene4Marker, Cutscene5Marker, Cutscene6Marker | |
Cutscene1Start, Cutscene1End, Cutscene2Start, Cutscene4Start, Cutscene4Phase1, Cutscene4Phase2, Cutscene4End, Cutscene5Start, Cutscene6Phase1, Cutscene6Phase2, Cutscene6Phase3, Cutscene6Phase4 | |
Cutscene4OffscreenMovement | |
SoundTrigger | |
TimerDigit | |
TimerDecrement | |
TimerStart | |
Exit | |
Object, BonkedPlayer, Wall, InvisibleWall, Lock | |
LevelCounter1, LevelCounter2, LevelCounter3, LevelCounter4, LevelCounter5, LevelCounter6, LevelCounter7, LevelCounter8 | |
ThinPlatform | |
WallUpBorder | |
WallRightBorder | |
WallDownBorder | |
WallLeftBorder | |
WallURBorder | |
WallDRBorder | |
WallDLBorder | |
WallULBorder | |
MovementToken | |
StartFallNextTurn, FallTimeToken | |
FallCheckToken | |
FallToken | |
WindowCover1, WindowCover2 | |
====== | |
RULES | |
====== | |
(================ | |
LEVEL GENERATION | |
================) | |
(Draw internal borders on walls on level start) | |
UP [ Wall | no Wall ] -> [ Wall WallUpBorder | ] | |
RIGHT [ Wall | no Wall ] -> [ Wall WallRightBorder | ] | |
DOWN [ Wall | no Wall ] -> [ Wall WallDownBorder | ] | |
LEFT [ Wall | no Wall ] -> [ Wall WallLeftBorder | ] | |
RIGHT [ Wall | Wall WallUpBorder ] -> [ Wall WallURBorder | Wall WallUpBorder ] | |
RIGHT [ Wall WallUpBorder | Wall ] -> [ Wall WallUpBorder | Wall WallULBorder ] | |
RIGHT [ Wall | WallDownBorder ] -> [ Wall WallDRBorder | Wall WallDownBorder ] | |
RIGHT [ Wall WallDownBorder | Wall ] -> [ Wall WallDownBorder | Wall WallDLBorder ] | |
(================== | |
OBJECT INTERACTION | |
==================) | |
(Multipush) | |
[ > Object | Object ] -> [ > Object | > Object ] | |
(Keys open locks) | |
[ > Key | Lock ] -> [ | ] | |
(====== | |
MOVING | |
======) | |
(If the player presses up, try moving them up one space, and if it was successful, spawn an object beneath them) | |
(This will also lift anything on top of the player) | |
UP [ > Player ] -> [ > Player UpToken ] | |
late DOWN [ Player | UpToken ] -> [ Player | random Detritus ] | |
(Track horizontal movements too) | |
LEFT [ > Player ] -> [ > Player LeftToken ] | |
RIGHT [ > Player ] -> [ > Player RightToken ] | |
(If the player couldn't move, play a little bonk animation) | |
late [ BonkedPlayer ] -> [ Player ] | |
late [ Player UpToken ] -> [ UpBonkedPlayer ] again | |
late [ Player LeftToken ] -> [ LeftBonkedPlayer ] again | |
late [ Player RightToken ] -> [ RightBonkedPlayer ] again | |
late [ MovementToken ] -> [ ] | |
(======= | |
GRAVITY | |
=======) | |
(Force an again turn to assert gravity) | |
[ moving Player ] -> [ moving Player ] again | |
(Assert gravity) | |
("no Player" on the first rule to prevent an object above the player from moving into the space previously occupied by the player on the same turn the player moves left or right) | |
DOWN [ stationary Object | no Player ] -> [ > Object | ] again | |
DOWN [ > Object | ThinPlatform ] -> [ Object | ThinPlatform ] | |
(The rest of this is for playing different sound effects when things land based on how far they fell, which was definitely more trouble than it was worth) | |
(After the player does a horizontal input, we set a flag that we're going to start fallling next turn. If we see that flag, then we set this to turn 0 and then mark the top of every stack of objects to see if it moves downward.) | |
[ StartFallNextTurn ] [ Object ] -> [ StartFallNextTurn ] [ Object FallToken ] | |
DOWN [ FallToken | FallToken no ThinPlatform ] -> [ FallToken | ] | |
[ StartFallNextTurn ] -> [ FallTime0Token ] | |
HORIZONTAL [ > Player ] -> [ > Player StartFallNextTurn ] | |
(If the marker for the top of the object stack is still on an object after movement, then that stack didn't move, so clear the flag and play a sound effect based on how many turns it took to fall.) | |
late [ FallTime0Token ] [ FallToken Object ] -> [ FallTime0Token ] [ Object ] | |
late [ FallTime1Token ] [ FallToken Object ] -> [ FallTime1Token ] [ Object ] sfx0 | |
late [ FallTime2Token ] [ FallToken Object ] -> [ FallTime2Token ] [ Object ] sfx1 | |
(Move the remaining markers down one so they're back on top of the stack again.) | |
late DOWN [ FallToken no Object | ] -> [ | FallToken ] | |
(Check if there are remaining fall markers. If not, remove the turn counter.) | |
late [ FallTimeToken ] -> [ FallTimeToken FallCheckToken ] | |
late [ FallToken ] [ FallCheckToken ] -> [ FallToken ] [ ] | |
late [ FallTimeToken FallCheckToken ] -> [ ] | |
(Advance the turn counter. We don't care about anything greater than 2.) | |
late [ FallTime1Token ] -> [ FallTime2Token ] | |
late [ FallTime0Token ] -> [ FallTime1Token ] | |
(==================== | |
CUTSCENE BACKGROUNDS | |
====================) | |
(Cityscape 1) | |
[ Cityscape1Marker ] [ ] -> [ Cityscape1Marker ] [ Sky ] | |
DOWN [ Cityscape1Marker | | | | | ] -> [ Cityscape100 | Cityscape101 | Cityscape102 | Cityscape103 | Cityscape104 | Cityscape105 ] | |
RIGHT [ Cityscape100 | | | | ] -> [ Cityscape100 | Cityscape110 | Cityscape120 | Cityscape130 | Cityscape140 ] | |
RIGHT [ Cityscape101 | | | | | | | | ] -> [ Cityscape101 | Cityscape110 | Cityscape121 | Cityscape131 | Cityscape141 | | Cityscape161 | Cityscape171 | Cityscape181 ] | |
RIGHT [ Cityscape102 | | | | | | | | | ] -> [ Cityscape102 | Cityscape112 | Cityscape122 | Cityscape131 | Cityscape142 | Cityscape152 | Cityscape162 | Cityscape172 | Cityscape182 | Cityscape192 ] | |
RIGHT [ Cityscape103 | | | | | | | | | ] -> [ Cityscape103 WindowCover1 | Cityscape113 WindowCover2 | Cityscape123 | Cityscape133 | Cityscape143 | Cityscape153 | Cityscape153 | Cityscape173 | Cityscape183 | Cityscape193 ] | |
RIGHT [ Cityscape104 | | | | | | | | | ] -> [ Cityscape104 | Cityscape114 | Cityscape124 | Cityscape134 | Cityscape144 | Cityscape154 | Cityscape154 | Cityscape174 | Cityscape184 | Cityscape194 ] | |
RIGHT [ Cityscape105 | | | | | | | | | ] -> [ Cityscape105 | Cityscape105 | Cityscape105 | Cityscape135 | Cityscape105 | Cityscape105 | Cityscape105 | Cityscape105 | Cityscape105 | Cityscape105 ] | |
(Sewer intro/outro) | |
DOWN [ LightBackground | ] -> [ LightBackground | LightBackground ] | |
RIGHT [ | LightBackground | ] -> [ LightBackgroundLeftGradient | LightBackground | LightBackgroundRightGradient ] | |
(Cityscape 2) | |
[ Cityscape2Marker ] [ ] -> [ Cityscape2Marker ] [ Sky ] | |
DOWN [ Cityscape2Marker | | | | | ] -> [ Cityscape200 | Cityscape201 | Cityscape202 | Cityscape203 | Cityscape204 | Cityscape205 ] | |
RIGHT [ Cityscape200 | | | | | | | | ] -> [ Cityscape200 | | Cityscape220 | Cityscape230 | Cityscape240 | | | | Cityscape280 ] | |
RIGHT [ Cityscape201 | | | | | | | | ] -> [ Cityscape201 | Cityscape211 | Cityscape221 | Cityscape231 | Cityscape240 | | | | Cityscape280 ] | |
RIGHT [ Cityscape202 | | | | | | | | ] -> [ Cityscape202 | Cityscape212 | Cityscape222 | Cityscape232 | Cityscape242 | Cityscape252 | Cityscape262 | | Cityscape280 ] | |
RIGHT [ Cityscape203 | | | | | | | | | ] -> [ Cityscape203 | Cityscape213 | Cityscape222 | Cityscape232 | Cityscape242 | Cityscape252 | Cityscape263 | Cityscape273 | Cityscape283 | Cityscape293 ] | |
RIGHT [ Cityscape204 | | | | | | | | | ] -> [ Cityscape204 | Cityscape214 | Cityscape224 | Cityscape234 | Cityscape244 | Cityscape254 | Cityscape264 | Cityscape274 | Cityscape284 | Cityscape294 ] | |
RIGHT [ Cityscape205 | | | | | | | | | ] -> [ Cityscape205 | Cityscape205 | Cityscape205 | Cityscape205 | Cityscape205 | Cityscape205 | Cityscape265 | Cityscape205 | Cityscape285 | Cityscape295 ] | |
(=============== | |
CUTSCENE EVENTS | |
===============) | |
(Play a sound whenever any of these are destroyed) | |
[ SoundTrigger ] -> [ ] | |
(Timer math -- autoadvance a level once it hits 0) | |
DOWN [ | TimerStart ] -> [ TimerDecrement | TimerStart ] again | |
startloop | |
DOWN [ | Timer0 TimerDecrement ] -> [ TimerDecrement | Timer9 ] again | |
[ Timer1 TimerDecrement ] -> [ Timer0 ] again | |
[ Timer2 TimerDecrement ] -> [ Timer1 ] again | |
[ Timer3 TimerDecrement ] -> [ Timer2 ] again | |
[ Timer4 TimerDecrement ] -> [ Timer3 ] again | |
[ Timer5 TimerDecrement ] -> [ Timer4 ] again | |
[ Timer6 TimerDecrement ] -> [ Timer5 ] again | |
[ Timer7 TimerDecrement ] -> [ Timer6 ] again | |
[ Timer8 TimerDecrement ] -> [ Timer7 ] again | |
[ Timer9 TimerDecrement ] -> [ Timer8 ] again | |
endloop | |
late [ TimerDecrement no TimerDigit ] -> win | |
(The big spinny) | |
DOWN [ SpinMarker ] [ stationary CutscenePlayer1 ] -> [ SpinMarker ] [ > CutscenePlayer2 ] again | |
DOWN [ SpinMarker ] [ stationary CutscenePlayer2 ] -> [ SpinMarker ] [ > CutscenePlayer3 ] again | |
DOWN [ SpinMarker ] [ stationary CutscenePlayer3 ] -> [ SpinMarker ] [ > CutscenePlayer4 ] again | |
DOWN [ SpinMarker ] [ stationary CutscenePlayer4 ] -> [ SpinMarker ] [ > CutscenePlayer1 ] again | |
(Spawn a player after the second falling screen starts and spawn a timer once that player hits the bottom) | |
[ Cutscene1Start ] -> [ CutscenePlayer1 Cutscene1End SoundTrigger4 ] again | |
DOWN [ Cutscene1End | ] -> [ | Cutscene1End ] | |
DOWN [ | CutscenePlayer Cutscene1End ] -> [ Timer8 | TimerStart ] | |
(Spawn a player after the third falling screen starts and spawn a timer once that player hits the floor) | |
[ Cutscene2Start ] -> [ CutscenePlayer1 SoundTrigger4 ] | |
late DOWN [ | CutscenePlayer1 | Wall ] -> [ Timer1 | Timer0 Player SoundTrigger5 | TimerStart Wall ] again | |
(Checkpoint the tutorial level after the sound effect plays) | |
late [ Cutscene3Marker ] -> [] checkpoint | |
(Rising phase 1 - play the spawn noise 10 times without showing anything) | |
random RIGHT [ Cutscene4Start ] [ | | ] -> [ Cutscene4Start ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Start ] [ | | ] -> [ Cutscene4Start ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Start ] [ | | ] -> [ Cutscene4Start ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Start ] [ | | ] -> [ Cutscene4Start ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Start ] [ | | ] -> [ Cutscene4Start ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Start ] [ | | ] -> [ Cutscene4Start ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Start ] [ | | ] -> [ Cutscene4Start ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Start ] [ | | ] -> [ Cutscene4Start ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Start ] [ | | ] -> [ Cutscene4Start ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Start ] [ | | ] -> [ Cutscene4Start ] [ | Cutscene4OffscreenMovement | ] | |
[ Cutscene4Start ] -> [ Cutscene4Phase1 ] | |
random [ Cutscene4OffscreenMovement ] -> [ ] again | |
DOWN [ no Cutscene4OffscreenMovement | Cutscene4OffscreenMovement ] -> [ Cutscene4OffscreenMovement | ] | |
(Rising phase 2 - after we've played all the offscreen movement noises, place a player at the bottom and rise them to the top) | |
[ Cutscene4Phase2 CutscenePlayer1 ] -> [ Cutscene4Phase2 random Detritus ] | |
random DOWN [ Cutscene4Phase2 ] [ | CutscenePlayer1 ] -> [ Cutscene4Phase2 ] [ CutscenePlayer1 | random Detritus ] again | |
[ Cutscene4Phase1 no Cutscene4OffscreenMovement ] -> [ Cutscene4Phase1 CutscenePlayer1 ] | |
DOWN [ Cutscene4Phase1 ] [ CutscenePlayer1 | ] -> [ Cutscene4Phase1 ] [ | CutscenePlayer1 ] | |
[ Cutscene4Phase1 ] [ CutscenePlayer1 ] -> [ Cutscene4Phase2 ] [ CutscenePlayer1 ] again | |
(Rising phase 3 - after the player hits the top, play the sound 10 more times and then finish the level) | |
random RIGHT [ Cutscene4Phase2 Detritus ] [ | | ] -> [ Cutscene4Phase2 Detritus ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Phase2 Detritus ] [ | | ] -> [ Cutscene4Phase2 Detritus ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Phase2 Detritus ] [ | | ] -> [ Cutscene4Phase2 Detritus ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Phase2 Detritus ] [ | | ] -> [ Cutscene4Phase2 Detritus ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Phase2 Detritus ] [ | | ] -> [ Cutscene4Phase2 Detritus ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Phase2 Detritus ] [ | | ] -> [ Cutscene4Phase2 Detritus ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Phase2 Detritus ] [ | | ] -> [ Cutscene4Phase2 Detritus ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Phase2 Detritus ] [ | | ] -> [ Cutscene4Phase2 Detritus ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Phase2 Detritus ] [ | | ] -> [ Cutscene4Phase2 Detritus ] [ | Cutscene4OffscreenMovement | ] | |
random RIGHT [ Cutscene4Phase2 Detritus ] [ | | ] -> [ Cutscene4Phase2 Detritus ] [ | Cutscene4OffscreenMovement | ] | |
DOWN [ no Cutscene4OffscreenMovement | Cutscene4OffscreenMovement ] -> [ Cutscene4OffscreenMovement | ] | |
[ Cutscene4Phase2 Detritus ] -> [ Cutscene4End Detritus ] | |
[ Cutscene4End no Cutscene4OffscreenMovement ] -> win | |
(Return to city right side - play the sound 10 times again then show the player) | |
(Also spawn some exits on the left side) | |
DOWN [ Cutscene5Marker | ... | ] -> [ Cutscene5Marker InvisibleExit | ... | InvisibleExit ] | |
random [ Cutscene5Marker ] [ ] -> [ Cutscene5Marker ] [ Cutscene4OffscreenMovement ] | |
random [ Cutscene5Marker ] [ ] -> [ Cutscene5Marker ] [ Cutscene4OffscreenMovement ] | |
random [ Cutscene5Marker ] [ ] -> [ Cutscene5Marker ] [ Cutscene4OffscreenMovement ] | |
random [ Cutscene5Marker ] [ ] -> [ Cutscene5Marker ] [ Cutscene4OffscreenMovement ] | |
random [ Cutscene5Marker ] [ ] -> [ Cutscene5Marker ] [ Cutscene4OffscreenMovement ] | |
random [ Cutscene5Marker ] [ ] -> [ Cutscene5Marker ] [ Cutscene4OffscreenMovement ] | |
random [ Cutscene5Marker ] [ ] -> [ Cutscene5Marker ] [ Cutscene4OffscreenMovement ] | |
random [ Cutscene5Marker ] [ ] -> [ Cutscene5Marker ] [ Cutscene4OffscreenMovement ] | |
random [ Cutscene5Marker ] [ ] -> [ Cutscene5Marker ] [ Cutscene4OffscreenMovement ] | |
random [ Cutscene5Marker ] [ ] -> [ Cutscene5Marker ] [ Cutscene4OffscreenMovement ] | |
[ Cutscene5Marker ] -> [ Cutscene5Start ] again | |
DOWN [ Cutscene5Start ] [ ManholeCover | ] -> [ Cutscene5Start ] [ ManholeCover | Player ] | |
[ Cutscene5Start ] [ Cutscene4OffscreenMovement ] [ Player ] -> [ Cutscene5Start ] [ Cutscene4OffscreenMovement ] [ ] | |
[ Player ] [ Cutscene5Start ] -> [ Player ] [ ] checkpoint | |
(Return to city left side - after the player's in the apartment, elapse time and play some sounds) | |
DOWN [ Cutscene6Marker | ... | Player ] -> [ Cutscene6Marker | ... | SoundTrigger7 ] | |
DOWN [ SoundTrigger7 ] [ Cutscene6Marker | | | ] -> [ SoundTrigger7 ] [ Cutscene6Phase1 | Timer2 | Timer0 | TimerStart ] again | |
DOWN [ Sky ] [ Cutscene6Phase1 TimerDecrement | Timer9 | Timer9 | TimerStart ] -> [ Sunset ] [ Cutscene6Phase1 TimerDecrement | Timer9 | Timer9 | TimerStart ] | |
DOWN [ Cutscene6Phase1 TimerDecrement | Timer9 | Timer9 | TimerStart ] -> [ Cutscene6Phase2 | Timer2 | Timer0 | TimerStart ] | |
DOWN [ Sunset ] [ Cutscene6Phase2 TimerDecrement | Timer9 | Timer9 | TimerStart ] -> [ Night ] [ Cutscene6Phase2 TimerDecrement | Timer9 | Timer9 | TimerStart ] | |
DOWN [ Cutscene6Phase2 TimerDecrement | Timer9 | Timer9 | TimerStart ] -> [ Cutscene6Phase3 | Timer3 | Timer0 | TimerStart ] | |
DOWN [ Cutscene6Phase3 TimerDecrement | Timer9 | Timer9 | TimerStart ] -> [ Cutscene6Phase4 SoundTrigger1 | | Timer3 | TimerStart ] | |
============== | |
WINCONDITIONS | |
============== | |
some Player on Exit | |
======= | |
LEVELS | |
======= | |
(Hat falls out window) | |
A......... | |
.......... | |
.......... | |
.........3 | |
...M.....0 | |
.........$ | |
B......... | |
.......... | |
.......... | |
.........1 | |
...M.....0 | |
.........$ | |
C......... | |
.......... | |
.......... | |
.......... | |
...M.....2 | |
.........$ | |
D......... | |
.......... | |
.......... | |
.W........ | |
...M.....1 | |
.........$ | |
E......... | |
.......... | |
.......... | |
..X....... | |
...M.....1 | |
.........$ | |
F......... | |
.......... | |
.......... | |
.......... | |
..YM.....1 | |
.........$ | |
G......... | |
.......... | |
.......... | |
.......... | |
...Z.....1 | |
.........$ | |
H......... | |
.......... | |
.......... | |
.......... | |
...M.....1 | |
...W.....$ | |
I......... | |
.......... | |
.......... | |
.........2 | |
...M.....0 | |
.........$ | |
(Hat falls down sewer) | |
#J# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#8# | |
#$# | |
#K# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
(Hat lands in tutorial level) | |
#L############ | |
#.#####.....## | |
#.#####.K...L. | |
#.#######-#.## | |
#..OO...#.#### | |
#####-..#.#### | |
#####...#.#### | |
#####.--#8#### | |
#####....$#### | |
############## | |
#M############ | |
#.#####.....## | |
#.#####.K...L. | |
#.#######-#.## | |
#..OO...#.#### | |
#####-..#.#### | |
#####...#.#### | |
#####.--#.#### | |
#####.....#### | |
############## | |
#N############ | |
#.#####.....## | |
#.#####.K...LE | |
#.#######-#.## | |
#P.OO...#.#### | |
#####-..#.#### | |
#####...#.#### | |
#####.--#.#### | |
#####.....#### | |
############## | |
(Actual levels) | |
①###### | |
#....#. | |
#..K.#. | |
#..###. | |
#....LE | |
#..#### | |
#....## | |
P....## | |
####### | |
②####### | |
#.....## | |
#..K..## | |
P..-..LE | |
######## | |
③######. | |
#..####. | |
#.....LE | |
##.##.## | |
##....## | |
##....## | |
P..K..## | |
##.##.## | |
##.##.## | |
#......# | |
######## | |
④######## | |
#.K....#. | |
#.#....#. | |
#.##...#. | |
#......#. | |
P......LE | |
######### | |
⑤######### | |
##.K.##### | |
##.#..#### | |
##.##.#### | |
#.......## | |
#.......## | |
#.......## | |
#.....-.#. | |
P.......LE | |
########## | |
⑥########. | |
#.......#. | |
P.K.....LE | |
###-..#### | |
###...#### | |
###...#### | |
########## | |
⑦##############. | |
#.............#. | |
#.............## | |
#......#......#. | |
P..K...#......LE | |
####.-...-.##### | |
####.......##### | |
################ | |
⑧########!# | |
###...###.# | |
#.....###.# | |
#.K...LLL.# | |
###...##### | |
#.....##### | |
#.K...##### | |
###...##### | |
#.....##### | |
#.K...##### | |
###...##### | |
P.....##### | |
########### | |
(Hat rising out of sewer) | |
#O# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#2# | |
#0# | |
#$# | |
#P# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
#.# | |
(Hat exits sewer - cityscape right) | |
Q......... | |
.......... | |
.......... | |
.......... | |
......M..8 | |
.........$ | |
R.......%. | |
........%. | |
........%. | |
........%. | |
......M.%. | |
%%%%%%.%%. | |
S%........ | |
.%........ | |
.%........ | |
.......... | |
%%.......P | |
%%%-%%%%%% | |
message Showtime! | |
message [LATER] | |
message And now, watch me pull a rabbit out of my hat! | |
message ... | |
message .......... | |
message ..................... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment