Skip to content

Instantly share code, notes, and snippets.

@chrisamaphone
Created November 13, 2018 03:56
Show Gist options
  • Save chrisamaphone/fbbf62987a9560f250e787afabf30a6c to your computer and use it in GitHub Desktop.
Save chrisamaphone/fbbf62987a9560f250e787afabf30a6c to your computer and use it in GitHub Desktop.
Lasers [main branch] (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Lasers [main branch]
author Aaron Williams
(Merged realtime_experiments)
(#NOTE: Comment this line before trying to create or edit any levels. It'll make things much easier.)
(run_rules_on_level_start)
(The level editor disables this automatically, so you'll need to hide the editor palette before you can test your level- less than ideal, I know, but shouldn't be a huge hassle)
realtime_interval 0.1
norepeat_action
========
OBJECTS
========
Background
Black
Wall
DarkGray
00000
00.00
0...0
00.00
00000
Exit
Brown LightBrown
.0.0.
.010.
.0.0.
.010.
.0.0.
LaserU
LightBlue Red Gray White
2.3.2
2.3.2
23332
11111
.101.
LaserD
LightBlue Red Gray White
.101.
11111
23332
2.3.2
2.3.2
LaserL
LightBlue Red Gray White
2221.
..311
33310
..311
2221.
LaserR
LightBlue Red Gray White
.1222
113..
01333
113..
.1222
LaserOffU
Blue Red Gray White
2...2
20002
20002
11111
.101.
LaserOffD
Blue Red Gray White
.101.
11111
20002
20002
2...2
LaserOffL
Blue Red Gray White
2221.
.0011
.0010
.0011
2221.
LaserOffR
Blue Red Gray White
.1222
1100.
0100.
1100.
.1222
LaserOnU
LightBlue Red Gray White Orange
2.3.2
24342
23332
11111
.141.
LaserOnD
LightBlue Red Gray White Orange
.141.
11111
23332
24342
2.3.2
LaserOnL
LightBlue Red Gray White Orange
2221.
.4311
33314
.4311
2221.
LaserOnR
LightBlue Red Gray White Orange
.1222
1134.
41333
1134.
.1222
BeamU
White
..0..
..0..
..0..
..0..
..0..
BeamD
White
..0..
..0..
..0..
..0..
..0..
BeamL
White
.....
.....
00000
.....
.....
BeamR
White
.....
.....
00000
.....
.....
StableBeamU
White
..0..
..0..
..0..
.....
.....
StableBeamD
White
.....
.....
..0..
..0..
..0..
StableBeamL
White
.....
.....
000..
.....
.....
StableBeamR
White
.....
.....
..000
.....
.....
MirrorUL
DarkGray LightGray
....1
...10
..100
.1000
10000
MirrorUR
DarkGray LightGray
1....
01...
001..
0001.
00001
MirrorDR
DarkGray LightGray
00001
0001.
001..
01...
1....
MirrorDL
DarkGray LightGray
10000
.1000
..100
...10
....1
GoalOff
Green
.....
.000.
.0.0.
.000.
.....
GoalOn
LightGreen
.....
.000.
.0.0.
.000.
.....
GuardU
DarkGray
00000
.....
.....
.....
.....
GuardD
DarkGray
.....
.....
.....
.....
00000
GuardL
DarkGray
0....
0....
0....
0....
0....
GuardR
DarkGray
....0
....0
....0
....0
....0
Glass
LightBlue
00000
0.0.0
00..0
0...0
00000
Splitter1
Lightgray
....0
...0.
..0..
.0...
0....
Splitter2
Lightgray
0....
.0...
..0..
...0.
....0
PlayerEmpty
Gray
..0..
.000.
0.0.0
.0.0.
.0.0.
PlayerCarrying
Gray
0.0.0
.000.
..0..
.0.0.
.0.0.
PlayerNoMove
Transparent
Crate
Brown
00000
0...0
0...0
0...0
00000
WireOff
Blue
.....
.000.
.000.
.000.
.....
WireOn
Orange
.....
.000.
.000.
.000.
.....
(Cosmetic wires)
WireOffU
Blue
.000.
.....
.....
.....
.....
WireOffD
Blue
.....
.....
.....
.....
.000.
WireOffL
Blue
.....
0....
0....
0....
.....
WireOffR
Blue
.....
....0
....0
....0
.....
WireOnU
Orange
.000.
.....
.....
.....
.....
WireOnD
Orange
.....
.....
.....
.....
.000.
WireOnL
Orange
.....
0....
0....
0....
.....
WireOnR
Orange
.....
....0
....0
....0
.....
ButtonOff
DarkGray DarkRed
00.00
01110
.111.
01110
00.00
ButtonOn
DarkGray Red
00.00
01110
.111.
01110
00.00
DoorClosed
Gray Blue
00000
01110
01110
01110
00000
DoorOpen
DarkBrown Orange
.000.
01110
01110
01110
.000.
AntiDoorClosed
Gray Orange
00000
01110
01110
01110
00000
AntiDoorOpen
DarkBrown Blue
.000.
01110
01110
01110
.000.
(An AND gate. Takes inputs from opposite sides; outputs to a wire on a third side)
Gate0
DarkGray Blue Orange
.000.
01100
01010
00110
.000.
Gate1
DarkGray Blue Orange
.000.
02200
02010
00110
.000.
Gate2
DarkGray Blue Orange
.000.
02200
02020
00220
.000.
Translator1
Pink
.....
.....
00000
.....
.....
Translator2
Pink
.....
.....
00000
.....
.....
Translator3
Pink
..0..
..0..
..0..
..0..
..0..
Translator4
Pink
..0..
..0..
..0..
..0..
..0..
(.....
.....
.....
.....
.....)
Rotator1
Yellow
0...0
.....
.....
.....
0...0
Rotator2
Yellow
.0...
....0
.....
0....
...0.
Rotator3
Yellow
..0..
.....
0...0
.....
..0..
Rotator4
Yellow
...0.
0....
.....
....0
.0...
Temp
Transparent
=======
LEGEND
=======
(Map tiles)
. = Background
# = Wall
P = PlayerEmpty
Player = PlayerEmpty or PlayerCarrying
* = Crate and Translator1
! = Exit
% = Glass
W = LaserU
S = LaserD
A = LaserL
D = LaserR
I = LaserOffU
K = LaserOffD
J = LaserOffL
L = LaserOffR
¨ = LaserU and Rotator1
ø = LaserD and Rotator1
≥ = LaserL and Rotator1
µ = LaserR and Rotator1
 = LaserU and Translator1
 = LaserD and Translator1
Ô = LaserL and Translator1
Ò = LaserR and Translator1
ˆ = LaserOffU and Rotator1
˚ = LaserOffD and Rotator1
∆ = LaserOffL and Rotator1
¬ = LaserOffR and Rotator1
Q = MirrorUL
E = MirrorUR
C = MirrorDR
Z = MirrorDL
œ = MirrorUL and Translator1
´ = MirrorUR and Translator1
ç = MirrorDR and Translator1
Ω = MirrorDL and Translator1
∑ = MirrorUL and Rotator1
ß = MirrorUR and Rotator1
å = MirrorDR and Rotator1
≈ = MirrorDL and Rotator1
R = Splitter1
Y = Splitter2
® = Splitter1 and Translator1
¥ = Splitter2 and Translator1
‰ = Splitter1 and Rotator1
Á = Splitter2 and Rotator1
T = GoalOff and GuardD and GuardL and GuardR
G = GoalOff and GuardU and GuardL and GuardR
F = GoalOff and GuardU and GuardD and GuardR
H = GoalOff and GuardU and GuardD and GuardL
B = GoalOff
+ = WireOff
@ = WireOff and Wall
_ = ButtonOff
$ = DoorClosed
› = AntiDoorOpen
& = Gate0
(Action-button-related groups)
Rotator = Rotator1 or Rotator2 or Rotator3 or Rotator4
Translator = Translator1 or Translator2 or Translator3 or Translator4
(Laser-related groups)
LaserConstant = LaserU or LaserD or LaserL or LaserR
LaserOn = LaserOnU or LaserOnD or LaserOnL or LaserOnR
LaserOff = LaserOffU or LaserOffD or LaserOffL or LaserOffR
Laser = LaserConstant or LaserOn or LaserOff
Mirror = MirrorUL or MirrorUR or MirrorDR or MirrorDL
Splitter = Splitter1 or Splitter2
Beam = BeamU or BeamD or BeamL or BeamR
StableBeam = StableBeamU or StableBeamD or StableBeamL or StableBeamR
Goal = GoalOn or GoalOff
Guard = GuardU or GuardD or GuardL or GuardR
LightU = LaserU or LaserOnU or BeamU or StableBeamU
LightD = LaserD or LaserOnD or BeamD or StableBeamD
LightL = LaserL or LaserOnL or BeamL or StableBeamL
LightR = LaserR or LaserOnR or BeamR or StableBeamR
MirrorU = MirrorUL or MirrorUR
MirrorD = MirrorDL or MirrorDR
MirrorL = MirrorUL or MirrorDL
MirrorR = MirrorUR or MirrorDR
Opaque = Wall or Crate or DoorClosed or AntiDoorClosed
OpaqueU = Opaque or MirrorDL or MirrorDR or GuardU
OpaqueD = Opaque or MirrorUL or MirrorUR or GuardD
OpaqueL = Opaque or MirrorUR or MirrorDR or GuardL
OpaqueR = Opaque or MirrorUL or MirrorDL or GuardR
(Wire-related groups)
Wire = WireOn or WireOff
Button = ButtonOn or ButtonOff
Door = DoorOpen or DoorClosed
AntiDoor = AntiDoorOpen or AntiDoorClosed
Gate = Gate0 or Gate1 or Gate2
PowerSource = WireOn or ButtonOn or GoalOn
PowerSink = ButtonOff or Gate0 or Gate1 or GoalOff
Heavy = Player or Translator or Splitter
(Movement-related groups)
Movable = Mirror or Crate or Splitter or LaserConstant
Solid = Movable or Goal or Laser or Wall or DoorClosed or AntiDoorClosed or Guard or Glass
(Cosmetic groups)
CWireU = WireOffU or WireOnU
CWireD = WireOffD or WireOnD
CWireL = WireOffL or WireOnL
CWireR = WireOffR or WireOnR
WireReciever = Door or Antidoor or Gate or LaserOn or LaserOff
WireConnect = WireReciever or Wire or Button or Goal
(CWire = CWireU or CWireD or CWireL or CWireR)
=======
SOUNDS
=======
(Crate MOVE 36772507)
================
COLLISIONLAYERS
================
Exit
PlayerNoMove
Temp
Background
Wire
CWireU
CWireD
CWireL
CWireR
Button
Gate
DoorOpen, AntiDoorOpen
BeamU
BeamD
BeamL
BeamR
StableBeamU
StableBeamD
StableBeamL
StableBeamR
GuardU
GuardD
GuardL
GuardR
Crate, Mirror, Goal, Laser, Splitter
Translator, Rotator
Player, Wall, DoorClosed, AntiDoorClosed, Glass
======
RULES
======
[stationary Player] -> [stationary Player PlayerNoMove]
(Handle player actions + movement)
[action PlayerEmpty Translator Movable] -> [PlayerCarrying Translator Movable]
[> PlayerCarrying Translator Movable | no Solid] -> [> PlayerCarrying > Translator > Movable | ]
[> Mirror StableBeam] -> [> Mirror no StableBeam]
[> Splitter StableBeam] -> [> Splitter no StableBeam]
[> PlayerCarrying | Solid] -> [PlayerCarrying | Solid]
[action PlayerCarrying] -> [PlayerEmpty]
[action Player Rotator MirrorUL] -> [Player Rotator MirrorUR]
[action Player Rotator MirrorUR] -> [Player Rotator MirrorDR]
[action Player Rotator MirrorDR] -> [Player Rotator MirrorDL]
[action Player Rotator MirrorDL] -> [Player Rotator MirrorUL]
[action Player Rotator Splitter1] -> [Player Rotator Splitter2]
[action Player Rotator Splitter2] -> [Player Rotator Splitter1]
[action Player Rotator LaserU] -> [Player Rotator LaserR]
[action Player Rotator LaserR] -> [Player Rotator LaserD]
[action Player Rotator LaserD] -> [Player Rotator LaserL]
[action Player Rotator LaserL] -> [Player Rotator LaserU]
[action Player Rotator LaserOffU] -> [Player Rotator LaserOffR]
[action Player Rotator LaserOffR] -> [Player Rotator LaserOffD]
[action Player Rotator LaserOffD] -> [Player Rotator LaserOffL]
[action Player Rotator LaserOffL] -> [Player Rotator LaserOffU]
[action Player Rotator LaserOnU] -> [Player Rotator LaserOnR]
[action Player Rotator LaserOnR] -> [Player Rotator LaserOnD]
[action Player Rotator LaserOnD] -> [Player Rotator LaserOnL]
[action Player Rotator LaserOnL] -> [Player Rotator LaserOnU]
(Animate Rotator/Translator markers)
[PlayerNoMove][Rotator1 no Temp] -> [PlayerNoMove][Rotator2 Temp]
[PlayerNoMove][Rotator2 no Temp] -> [PlayerNoMove][Rotator3 Temp]
[PlayerNoMove][Rotator3 no Temp] -> [PlayerNoMove][Rotator4 Temp]
[PlayerNoMove][Rotator4 no Temp] -> [PlayerNoMove][Rotator1 Temp]
[PlayerNoMove][Translator1 no Temp] -> [PlayerNoMove][Translator2 Temp]
[PlayerNoMove][Translator2 no Temp] -> [PlayerNoMove][Translator3 Temp]
[PlayerNoMove][Translator3 no Temp] -> [PlayerNoMove][Translator4 Temp]
[PlayerNoMove][Translator4 no Temp] -> [PlayerNoMove][Translator1 Temp]
[Temp] -> []
(Handle wires)
(turn off unpowered wires)
late [PlayerNoMove][ButtonOn no Heavy] -> [PlayerNoMove][ButtonOff]
late [PlayerNoMove][PowerSink | WireOn] -> [PlayerNoMove][PowerSink | WireOff]
late [PlayerNoMove][WireOff | WireOn] -> [PlayerNoMove][WireOff | WireOff]
(turn on powered wires)
late [PlayerNoMove][ButtonOff Heavy] -> [PlayerNoMove][ButtonOn Heavy]
late [PlayerNoMove][no Wire no PowerSource | Gate2 | WireOff] -> [PlayerNoMove][ | Gate2 | WireOn]
late [PlayerNoMove][PowerSource | WireOff] -> [PlayerNoMove][PowerSource | WireOn]
(activate doors)
(late [WireOn Door] -> [WireOn DoorOpen]
late [WireOff Door no Heavy] -> [WireOff DoorClosed]
late [WireOn AntiDoor no Heavy] -> [WireOn AntiDoorClosed]
late [WireOff AntiDoor] -> [WireOff AntiDoorOpen])
late [PlayerNoMove][Door no Heavy] -> [PlayerNoMove][DoorClosed]
late [PlayerNoMove][PowerSource | Door] -> [PlayerNoMove][PowerSource | DoorOpen]
late [PlayerNoMove][AntiDoor] -> [PlayerNoMove][AntiDoorOpen]
late [PlayerNoMove][PowerSource | AntiDoor no Heavy] -> [PlayerNoMove][PowerSource | AntiDoorClosed]
(activate AND gates)
late [PlayerNoMove][Gate] -> [PlayerNoMove][Gate0]
late [PlayerNoMove][PowerSource | Gate] -> [PlayerNoMove][PowerSource | Gate1] (again)
late [PlayerNoMove][PowerSource | Gate | PowerSource] -> [PlayerNoMove][PowerSource | Gate2 | PowerSource] (again)
(activate lasers)
late [PlayerNoMove][LaserOnU] -> [PlayerNoMove][LaserOffU]
late [PlayerNoMove][LaserOnD] -> [PlayerNoMove][LaserOffD]
late [PlayerNoMove][LaserOnL] -> [PlayerNoMove][LaserOffL]
late [PlayerNoMove][LaserOnR] -> [PlayerNoMove][LaserOffR]
late [PlayerNoMove][PowerSource | LaserOffU] -> [PlayerNoMove][PowerSource | LaserOnU]
late [PlayerNoMove][PowerSource | LaserOffD] -> [PlayerNoMove][PowerSource | LaserOnD]
late [PlayerNoMove][PowerSource | LaserOffL] -> [PlayerNoMove][PowerSource | LaserOnL]
late [PlayerNoMove][PowerSource | LaserOffR] -> [PlayerNoMove][PowerSource | LaserOnR]
(Update cosmetic wire edges)
late Up [WireOn | WireConnect] -> [WireOn WireOnU | WireConnect WireOnD]
late Down [WireOn | WireConnect] -> [WireOn WireOnD | WireConnect WireOnU]
late Left [WireOn | WireConnect] -> [WireOn WireOnL | WireConnect WireOnR]
late Right [WireOn | WireConnect] -> [WireOn WireOnR | WireConnect WireOnL]
late Up [WireOff | WireConnect] -> [WireOff WireOffU | WireConnect WireOffD]
late Down [WireOff | WireConnect] -> [WireOff WireOffD | WireConnect WireOffU]
late Left [WireOff | WireConnect] -> [WireOff WireOffL | WireConnect WireOffR]
late Right [WireOff | WireConnect] -> [WireOff WireOffR | WireConnect WireOffL]
late Up [PlayerNoMove][PowerSource | WireReciever] -> [PlayerNoMove][PowerSource WireOnU | WireReciever WireOnD]
late Down [PlayerNoMove][PowerSource | WireReciever] -> [PlayerNoMove][PowerSource WireOnD | WireReciever WireOnU]
late Left [PlayerNoMove][PowerSource | WireReciever] -> [PlayerNoMove][PowerSource WireOnL | WireReciever WireOnR]
late Right [PlayerNoMove][PowerSource | WireReciever] -> [PlayerNoMove][PowerSource WireOnR | WireReciever WireOnL]
late Up [PlayerNoMove][PowerSink | WireReciever] -> [PlayerNoMove][PowerSink WireOffU | WireReciever WireOffD]
late Down [PlayerNoMove][PowerSink | WireReciever] -> [PlayerNoMove][PowerSink WireOffD | WireReciever WireOffU]
late Left [PlayerNoMove][PowerSink | WireReciever] -> [PlayerNoMove][PowerSink WireOffL | WireReciever WireOffR]
late Right [PlayerNoMove][PowerSink | WireReciever] -> [PlayerNoMove][PowerSink WireOffR | WireReciever WireOffL]
(Handle lasers)
startLoop
(Propagate beams)
late Up [LightU no OpaqueU | no OpaqueD] -> [LightU | BeamU]
late Down [LightD no OpaqueD | no OpaqueU] -> [LightD | BeamD]
late Left [LightL no OpaqueL | no OpaqueR] -> [LightL | BeamL]
late Right [LightR no OpaqueR | no OpaqueL] -> [LightR | BeamR]
(Remove blocked beams)
late Up [no LightU | BeamU] -> [ | ] (No beam/laser below)
late Up [OpaqueU | BeamU] -> [OpaqueU | ] (Top of tile below blocked)
late Up [OpaqueD BeamU] -> [OpaqueD] (Bottom of this tile blocked)
late Down [no LightD | BeamD] -> [ | ]
late Down [OpaqueD | BeamD] -> [OpaqueD | ]
late Down [OpaqueU BeamD] -> [OpaqueU]
late Left [no LightL | BeamL] -> [ | ]
late Left [OpaqueL | BeamL] -> [OpaqueL | ]
late Left [OpaqueR BeamL] -> [OpaqueR]
late Right [no LightR | BeamR] -> [ | ]
late Right [OpaqueR | BeamR] -> [OpaqueR | ]
late Right [OpaqueL BeamR] -> [OpaqueL]
(Handle mirrors)
late [MirrorUL BeamR] -> [MirrorUL BeamR StableBeamU] (Crate reflected beam)
late [MirrorUL BeamD] -> [MirrorUL BeamD StableBeamL]
late [MirrorUL no BeamR] -> [MirrorUL no LightU] (Remove when no incident beam)
late [MirrorUL no BeamD] -> [MirrorUL no LightL]
late [MirrorUR BeamL] -> [MirrorUR BeamL StableBeamU]
late [MirrorUR BeamD] -> [MirrorUR BeamD StableBeamR]
late [MirrorUR no BeamL] -> [MirrorUR no LightU]
late [MirrorUR no BeamD] -> [MirrorUR no LightR]
late [MirrorDR BeamL] -> [MirrorDR BeamL StableBeamD]
late [MirrorDR BeamU] -> [MirrorDR BeamU StableBeamR]
late [MirrorDR no BeamL] -> [MirrorDR no LightD]
late [MirrorDR no BeamU] -> [MirrorDR no LightR]
late [MirrorDL BeamR] -> [MirrorDL BeamR StableBeamD]
late [MirrorDL BeamU] -> [MirrorDL BeamU StableBeamL]
late [MirrorDL no BeamR] -> [MirrorDL no LightD]
late [MirrorDL no BeamU] -> [MirrorDL no LightL]
(Handle splitters)
late [Splitter1 BeamU] -> [Splitter1 BeamU StableBeamR]
late [Splitter1 no BeamU] -> [Splitter1 no StableBeamR]
late [Splitter1 BeamD] -> [Splitter1 BeamD StableBeamL]
late [Splitter1 no BeamD] -> [Splitter1 no StableBeamL]
late [Splitter1 BeamL] -> [Splitter1 BeamL StableBeamD]
late [Splitter1 no BeamL] -> [Splitter1 no StableBeamD]
late [Splitter1 BeamR] -> [Splitter1 BeamR StableBeamU]
late [Splitter1 no BeamR] -> [Splitter1 no StableBeamU]
late [Splitter2 BeamU] -> [Splitter2 BeamU StableBeamL]
late [Splitter2 no BeamU] -> [Splitter2 no StableBeamL]
late [Splitter2 BeamD] -> [Splitter2 BeamD StableBeamR]
late [Splitter2 no BeamD] -> [Splitter2 no StableBeamR]
late [Splitter2 BeamL] -> [Splitter2 BeamL StableBeamU]
late [Splitter2 no BeamL] -> [Splitter2 no StableBeamU]
late [Splitter2 BeamR] -> [Splitter2 BeamR StableBeamD]
late [Splitter2 no BeamR] -> [Splitter2 no StableBeamD]
endLoop
late [GoalOn no Beam] -> [GoalOff] (again)
late [GoalOff Beam] -> [GoalOn Beam] (again)
late [PlayerNoMove] -> []
(Update cosmetic elements)
(late Up [WireOn | WireConnect] -> [WireOn WireOnU | WireConnect WireOnD]
late Down [WireOn | WireConnect] -> [WireOn WireOnD | WireConnect WireOnU]
late Left [WireOn | WireConnect] -> [WireOn WireOnL | WireConnect WireOnR]
late Right [WireOn | WireConnect] -> [WireOn WireOnR | WireConnect WireOnL]
late Up [WireOff | WireConnect] -> [WireOff WireOffU | WireConnect WireOffD]
late Down [WireOff | WireConnect] -> [WireOff WireOffD | WireConnect WireOffU]
late Left [WireOff | WireConnect] -> [WireOff WireOffL | WireConnect WireOffR]
late Right [WireOff | WireConnect] -> [WireOff WireOffR | WireConnect WireOffL]
late Up [PowerSource | WireReciever] -> [PowerSource WireOnU | WireReciever WireOnD]
late Down [PowerSource | WireReciever] -> [PowerSource WireOnD | WireReciever WireOnU]
late Left [PowerSource | WireReciever] -> [PowerSource WireOnL | WireReciever WireOnR]
late Right [PowerSource | WireReciever] -> [PowerSource WireOnR | WireReciever WireOnL]
late Up [PowerSink | WireReciever] -> [PowerSink WireOffU | WireReciever WireOffD]
late Down [PowerSink | WireReciever] -> [PowerSink WireOffD | WireReciever WireOffU]
late Left [PowerSink | WireReciever] -> [PowerSink WireOffL | WireReciever WireOffR]
late Right [PowerSink | WireReciever] -> [PowerSink WireOffR | WireReciever WireOffL])
==============
WINCONDITIONS
==============
All Player on Exit
=======
LEVELS
=======
message First Steps
message Press X to rotate tiles with spinning yellow dots
#########
#.≈..z.$!
#......@#
#......@#
p.µ..t+@#
#########
message Have Mirror, Will Travel
message Press X to pick up or place down tiles with flashing pink lines
#########
p.s..g+@#
#......@#
#.œ....@#
#.e....$!
#########
message Crate Expectations
#########
#.g+++.$!
#....&+@#
#.*..+.##
p.w.._.##
#########
message Feedback
#########
#......$!
#......@#
#..._..+#
p...+..+#
#...+..+#
#.d.$..f#
#...++++#
#########
message A Mess
#########
#gk.s.k+#
#......+#
#.ß..∑.+#
p..å..å+#
#≈..å..+#
#∑...ß.+#
#∑.....f#
###t$####
####!####
message Weighted Mirror Cube
####p####
#..ç.f.##
#....&+@#
#+++++.@#
#_.´.a.$!
#########
message Clear as Mud
##@@@@@@@#
#.g.$...›!
#...#.*.##
#.≈.%..a##
p...#...##
##########
message Only Half a Mirror
##g######
p.+....##
#.+....##
h&+.á.a##
#+.+++.##
#+++¥&+$!
####t@###
message Logic Gates
###################
#*_...*_...*......#
#.&+$..++$._+.+$..#
#*_...*_...d›.f...#
p.................!
#*_.s...*_..._...$#
#.&+›.$.d›.f.+l›.f#
#*_.ef+.*_.$.l.f..#
###################
message D-type Flip-Flop
###############
p..#d.y.....z.#
#..#..$.....›.#
#*_@+++++++++.#
#..#..........#
#..#..t&+++&t.#
#._@l..+.f.+.g#
#..#...++h.+›j#
#..#...+d›.f.w#
#..#...+++....#
##$@++++......#
##!############
message Toggle Latch
###############
p.#.c.r.....rz#
#.#...›.....$.#
#.#g+++++++++.#
#.#...........#
#.#...t&+++&t.#
#.#.y›.+.f.+..#
#.#..+c++b.+›y#
#.#..+.+d›.bz.#
#_@+++.+++....#
#.#.$.........#
#.#...t&+++&t.#
#.#.e..+.f.+.b#
#.#....++h.+›j#
#.#i...+d›.f.w#
#›@+++++++....#
#!#############
message Full Adder
################
p...*..*..*.$.$!
#..._.._.._.@#@#
####@##@##@#@#@#
#...+..++.+.g.g#
#...+l.z+.+....#
#h&++r.j+.+....#
#.+.+›.›+.+....#
#.+.......+....#
#.+..t+t..+....#
#++++.+...+....#
#+..+.+l.z+....#
#+.h&++r.j+....#
#+....+›.›+....#
#+.............#
#+.....t+t.....#
#+......+......#
#l......+...q..#
#.......l.....q#
################
message Tripwire
#############
p._++k.._..$!
#....+..+..@#
#.*..+..&++@#
#....t+++..##
#############
message Tripwire2
###############
p._..k..$.s..$!
#.&+++..@....@#
#.+´.+..@....@#
#._..t++@.*.f@#
###############
message Beamlock
##@@@#######
p.k.g.s..¥$!
#.........@#
#...e...z.@#
#.........@#
#.......q.@#
#.....´...@#
#...t.....@#
####@@@@@@@#
message Beamlock2
########
p..s..$!
#....´@@
#..ω.f#@
#....+#@
#l...&@@
#+...+##
#++t++##
########
message Talos
########################
p..ç´¥¥...$.....#.....##
#.........@.....#.....##
#......r.f@.....#.....##
#...#.....@.....#.....##
#...#c.%..$..a..#.._..##
#...#.....#.....#..+..##
#...#.....#.....$..&++$!
#...#.....#.....@..+..##
#...#.....%....f@.._..##
#...#t....#.....#.....##
#...#@@$###.....#.....##
#........a#.....#.....##
#.........#.....#.....##
########################
message Locks and Keys
####@@@@@@@######
p...@...#.+....$!
#._+$._+$._+++.@#
#...#...@....&+@#
#.*.####@+_+*+.##
#...#...#..&++.##
#._+$.*.#._+...##
#...#...#......##
#################
message Locks and Keys 2
######################
p.....k..#..........##
#*_++++..#....++_+++##
#.....&++$....+....+##
#.....+..#....+....+##
#*_..+&++@+++.+._+&+##
#.l..+..b%..+.+.j.+.##
#....+...$++&.+...&+$!
#.l..+..b%..+.+.j.+.##
#*_.++&++@++&++._+&+##
#...+.+..#...+.....+##
#..++.&++$...+.....+##
#*_+h.+..%...+.j_+++##
#.....b..%...j......##
######################
message Parity
############
p.........$!
#.........@#
#.≈.∑.å.≈.f#
#.........##
#.∑.ß.ß.≈.##
#.........##
#.å...ß.≈.a#
#.........##
#.∑.ß.ß.ß.##
#.........##
############
message Parity 2
################
p......s......$!
#.............@#
#..∑.å.≈.å.≈..@#
#.............@#
#..å.å.∑.ß.ß..@#
#++++++.++++++@#
#h.∑.ß&++ß.e.a##
#.....+.......##
#..å.∑+≈.≈.≈..##
#.....+.......##
#..ß.å+ß.≈.∑..##
#.....+.......##
#.....+t......##
################
message One Way
##################
p...#...#...#.._$!
#...#...$_..#...##
#._.#._.#...#...##
##$###$###$###$###
#...#...#._.#._.##
#.._$...#.._$...##
#...#._.#...#...##
######$###$#######
#...#...#._.#...##
#...#.._$...#...##
#...#...#...#...##
##################
message Hodor
##########
p.......$!
#.*...*.@#
#.......@#
#...####@#
#...#...@#
#.._$._+@#
#...#...##
##########
message Hodor 2
########
p.....##
#.....##
#.*.*.$!
#.....@#
#.....@#
###›##@#
#..+..@#
#..+..@#
#.._++@#
#.....##
#.....##
########
(---Ryan's first batch of levels---)
(Wires through walls need to be presented more clearly I think)
message Teaching Wires
################
#d..ß..##....$.!
#............+##
#......##....+##
#......##....+##
p...t++@@+++++##
################
(Mostly trying to see if I can make something complex and interesting)
message Experiment
#@@@@@@@@###
#@.....%+.ô#
#@.....%+..#
#@..h..%_z.#
#@..+..%...#
#@..+..%...#
#@..+..%...#
#@##@##c.≈##
#@..+......#
#@..+......#
!›$+&......#
##..+......#
##..h..ø...#
##.........#
######p#####
(Trying to make something complex with just a few mechanics)
message Complex with no interactable mirrors
...##@@@@@@@++++++++++.
...#.+....##.........+.
...#.+....##.........+.
...#.+.g++@#.........+.
...#g&g...@#.........+.
...#......@##########@#
####.c...z@@@@@@@@@@#@#
#.c....q.e...b...z.@#@#
#.....ez.c........f@#@#
p....e...¨...q.....›.$!
#.e.ø............ø.z###
#......e...........q###
#######################
message Teaching passable objects
.........#####..
.........#_..#..
.........#+..#..
.........#+..#..
##########+..###
p......$+++...$!
#_.....#......+#
#+.....#......+#
#+.....c...*..f#
#+l....q...*...#
################
message Toying around
#################
p.....f........$!
#.....+........+#
#.....&++++....+#
#.....+...+....+#
#.....f...+....+#
#.........&+++++#
#.....f...+.....#
#.....+...+.....#
#.....&++++.....#
#ô....+.........#
#.....g.........#
#ò..............#
#.´´ç.â........#
#################
(---Trying to find the best ways to teach the less-intuitive mechanics---)
(Idea that wires have some function in the level, and aren’t just decoration to show you when the level’s complete)
message FW1
#########
#.≈..z.›!
#......@#
#......@#
p.µ..t+@#
#########
(message Clear as Mud)
message FW2
##@@@@@@@#
#.g.$...›!
#...#.*.##
#.≈.%..a##
p...#...##
##########
(Wall wires)
(Wait, is there a better way to teach this than Locks and Keys 1?)
(message Teaching Wires)
message WW1
################
#d..ß..##....$.!
#............+##
#......##....+##
#......##....+##
p...t++@@+++++##
################
(message Locks and Keys)
message WW2
####@@@@@@@######
p...@...#.+....$!
#._+$._+$._+++.@#
#...#...@....&+@#
#.*.####@+_+*+.##
#...#...#..&++.##
#._+$.*.#._+...##
#...#...#......##
#################
(Feedback and Tripwire)
(Is there a way to demonstrate these independently?)
message FT1
####################
p....g+$._++k.._..$!
#....+.#....+..+..@#
#....+.#.*..+..&++@#
#._++i.#....t+++..##
####################
(################
p...$.›.$.›.$..!
#..#@#@#@#@#@###
#...+.g.g.g.g..#
#...+.+.+.+.+..#
#..._.+.+.+.+.*#
#.....+.+.+.+..#
#.....i.i.i.i..#
#..###@#@#@#@###
#.....+.+.+.+..#
#....._._._._..#
#..............#
################)
message FT2
###################
#..$...›...$...›..!
#.#@###@###@###@###
#..+.g++.g++.g++..#
##.+.+...+...+....#
p.._.+._.+._.+._.*#
##...+.+.+.+.+.+..#
#....i++.i++.i++..#
###################
(Tiles you can walk through, but not carry things through)
message B1
########@@@#
p.b.b..g.$!
#..bb.....##
#.........##
#.......bb##
#.bb...b.œ##
#b´.b..b..##
############
message B2
############
p.........$!
#####b####@#
#####.####@#
#...#*#...@#
#.d.%*%.f+@#
#...###...@#
############
(A Mess could also do this)
(or Clear as Mud)
(Clear as Mud is probably the best)
(So, the idea here is to give people a set of levels that we expect will give them an accurate but incomplete mental model, and then give them some additional levels to challenge that model. Right?)
(--- Extra teaching levels for the final tests ---)
message FT3
###################
#....›...$...›...$!
#.###@###@###@###@#
#....g...g...g...+#
##...+._.+._.+._.+#
p..*.+.+.+.+.+.+._#
##...+.+.+.+.+.+..#
#....i++.i++.i++..#
###################
message B3
############
p.®..d.ω..$!
#....z....@#
#....e..q.@#
#....#....@#
#.e..b....@#
#####@@@@@@#
message ParityAlt
############
p.........$!
#.........@#
#...∑.å.≈.f#
#.........##
#.∑.ß.ß.≈.##
#.........##
#.å...ß.≈.a#
#.........##
#.....ß.ß.##
#.........##
############
(--- Comprehension-testing levels for the final tests ---)
(This idea was scrapped, btw. We can show people who prove really good at this game the following level.)
message WireFu
####@@@@@##########
p...g...@.........#
#.......$++_._+++k#
#.......#.........#
@h..¨[email protected]+.....#
@.......@...+.....#
@.......@l.å+&+++t#
@...t...#....+...+#
@@$#@@@@@#$@@@._.+#
@.+.....@...###›#@#
@.++++g.@.µ.#....+#
@.......@...#....+#
@@›##...@%%%#..*.+#
#...#...@...#....+#
#.*.#.ø.$.t+$....+#
#...#...#...###$@@#
###############!###
(--- Boiled-down levels to teach particular mechanics ---)
message MiniParity
############
p.........$!
#..∑...∑..@#
#.........@#
#d.å.≈.≈.f@#
#.........##
#..ß.∑.ß..##
#.........##
############
message Bad Splittermerge
##################
p............._.$!
#.............&+@#
#...++h.ø.f++._.##
####@.+...+.@#####
#*.$$.+...+.$$.*##
###@##@###@##@####
#..+..+...+..+..##
#..+..+.k++..+..##
#..+..+......+..##
#..+..+......+..##
#..+.l+.y....+..##
#..+.........+..##
#..+++++t+++++..##
##################
message Flashing Splittermerge
(##################
p.............._$!
#...............##
#...............##
#...sk..#.......##
#...›+g.#.......##
#.......#.......##
#...b+i.#.......##
#.......#....g..##
#..cq...#..$+&..##
#.......#....b..##
#...¥...#..i....##
#..e...f@++++i..##
#.......#.......##
##################)
#################
p..++++........$!
#..+#.&++++++++@#
#..+¨.+.ω...¥..##
#..+t.+...ç....##
#..+..+.t......##
###@##@#@##%#%###
#.d›..+.+.z.....#
#.....g.+.......#
#...g...+.......#
#...&+$.+..bk›..#
#...b...+.......#
#.....i.+.t›ti..#
#...i++++..w....#
#################
message Next Splittermerge
##############
#..._@+++...##
p.*.k.¥.+...$!
#..#....+...@#
#_l...f.+...@#
#@....+.+...@#
#+..t&+.+...@#
#+...+..+...@#
#+&+++&++...@#
#.+...+.....@#
##$###$##...@#
#...#...#...@#
#...#.¨.%.f.@#
#...#...#.&+@#
#.¨.%...%.f.##
#...#...#...##
##############
message Slightly Compacted
...##@@@@@@++++++.
...#.+...##.....+.
...#.+.g+@#.....+.
...#+&+..@#.....+.
...#g.g..@#.....+.
####.c..z@@@@@@#@#
#.c....qe.b.z.@#@#
#.....ezc....f@#@#
p....e..ø.q...›.$!
#.e.ø.......ø.z###
#......e......q###
##################
message Fourth Splittermerge
##################
#######.......####
p...$.$.c.≥.z.$.$!
#..#@#@+b...b+@#@#
#..#@###%###%###@#
#...++g++++++++++#
#................#
#.....e.œ...®....#
##################
message Sandbox
##################
p.............._$!
#...............##
#...............##
#...............##
#...............##
#...............##
#...............##
#...............##
#...............##
#...............##
#...............##
#...............##
#...............##
##################
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment