You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
puzzlescripts/laser_focus.txt

849 lines
12 KiB

title Laser Focus
author ddarknut
homepage https://ddarknut.itch.io/laser-focus
again_interval 0.1
noaction
(background_color blue)
text_color yellow
run_rules_on_level_start
========
OBJECTS
========
void_start
#f0f
void1
#000 #222
00000
01000
00000
00000
00000
void2
#000 #222
00000
00010
00000
00000
00000
void3
#000 #222
00000
00000
00100
00000
00000
void4
#000 #222
00000
00000
00000
01000
00000
void5
#000 #222
00000
00000
00000
00010
00000
void_exit
#000 #222
00000
00000
00100
00000
00000
final_exit
#000 #222
00000
00000
00100
00000
00000
wall_shadow
#111 #222 #333 #444 #555 #666 #000
54443
43332
32221
10000
66666
background
#333 #222 #0c0c0c
22221
21110
21110
21110
10000
stable_wall
#777 #aaa #ddd
22221
21110
21110
21110
10000
unstable_wall
#777 #aaa #ddd #555
22231
31130
23333
21310
13000
crumble_wall1
#777 #aaa #ddd #555
2.23.
.11.0
233.3
21.10
.300.
crumble_wall2
#777 #aaa #ddd #555
.....
2.23.
..1.0
23..3
.1.1.
crumble_wall3
#777 #aaa #ddd #555
.....
.....
...3.
..1..
2...3
glass
#777 #aaa #ddd
22.21
2...0
.....
2...0
10.00
live_player
#faf #505 #f3b
.000.
02020
00000
01110
.000.
dead_player
#ddd black
.000.
01010
00100
.000.
.000.
inactive_exit
#404 #737
.111.
10001
10001
10001
.111.
active_exit1
#404 blue #737
.222.
20002
20102
20002
.222.
active_exit2
#404 blue lightblue #737
.333.
31113
31213
31113
.333.
active_exit3
#335 blue lightblue
.111.
12221
12221
12221
.111.
temp_exit
#f0f
laser_up
yellow red
..1..
..1..
..1..
..1..
..1..
laser_right
yellow red
.....
.....
11111
.....
.....
laser_down
yellow red
..1..
..1..
..1..
..1..
..1..
laser_left
yellow red
.....
.....
11111
.....
.....
explosion1
red yellow
.....
..0..
.010.
..0..
.....
explosion2
red yellow
.000.
01110
01.10
01110
.000.
explosion3
red yellow
01110
11.11
1...1
11.11
01110
explosion4
red yellow
1...1
.....
.....
.....
1...1
battery
green #040 yellow
.000.
01210
02210
02110
.000.
shoot_empty_n
#999 black darkred green
.020.
01110
01310
01110
00000
shoot_empty_e
#999 black darkred green
0000.
01110
01312
01110
0000.
shoot_empty_s
#999 black darkred green
00000
01110
01310
01110
.020.
shoot_empty_w
#999 black darkred green
.0000
01110
21310
01110
.0000
shoot_charged_n
#999 black red yellow
.020.
01310
03310
03110
00000
shoot_charged_e
#999 black red yellow
0000.
01310
03312
03110
0000.
shoot_charged_s
#999 black red yellow
00000
01310
03310
03110
.020.
shoot_charged_w
#999 black red yellow
.0000
01310
23310
03110
.0000
target_empty_n
#999 black darkred
22222
01110
01110
01110
00000
target_empty_e
#999 black darkred
00002
01112
01112
01112
00002
target_empty_s
#999 black darkred
00000
01110
01110
01110
22222
target_empty_w
#999 black darkred
20000
21110
21110
21110
20000
target_charged_n
#999 black red yellow
22222
01310
03310
03110
00000
target_charged_e
#999 black red yellow
00002
01312
03312
03112
00002
target_charged_s
#999 black red yellow
00000
01310
03310
03110
22222
target_charged_w
#999 black red yellow
20000
21310
23310
23110
20000
=======
LEGEND
=======
player = live_player or dead_player
active_exit = active_exit1 or active_exit2 or active_exit3
wall = stable_wall or unstable_wall
crumble_wall = crumble_wall1 or crumble_wall2 or crumble_wall3
void = void1 or void2 or void3 or void4 or void5
, = void_start
~ = wall_shadow
. = background
# = stable_wall
& = unstable_wall
g = glass
x = inactive_exit
p = live_player
b = battery
n = shoot_empty_n
e = shoot_empty_e
s = shoot_empty_s
w = shoot_empty_w
- = target_empty_n
_ = target_empty_s
} = target_empty_e
{ = target_empty_w
? = void_exit
z = inactive_exit and live_player
explosion = explosion1 or explosion2 or explosion3 or explosion4
shoot_empty = shoot_empty_n or shoot_empty_e or shoot_empty_s or shoot_empty_w
shoot_charged = shoot_charged_n or shoot_charged_e or shoot_charged_s or shoot_charged_w
shoot_any = shoot_empty or shoot_charged
target_empty = target_empty_n or target_empty_e or target_empty_s or target_empty_w
target_charged = target_charged_n or target_charged_e or target_charged_s or target_charged_w
target_any = target_empty or target_charged
any_uncharged = shoot_empty or target_empty
laser = laser_up or laser_down or laser_right or laser_left
laser_end_up = laser_up or shoot_charged_n
laser_end_right = laser_right or shoot_charged_e
laser_end_down = laser_down or shoot_charged_s
laser_end_left = laser_left or shoot_charged_w
blocks_laser = wall or shoot_any or target_any
machine = shoot_any or target_any
pushable = machine or battery
valid_exit = active_exit or final_exit
=======
SOUNDS
=======
shoot_charged create 4627508 (17522901)
target_charged create 96184502
target_empty create 41287708
live_player move 54877307
live_player cantmove 83685904
dead_player create 834502
explosion1 create 81176102
active_exit1 create 18208508 (76366908) (33860508)
crumble_wall1 create 16343908
closemessage 15063306
(showmessage 37903708)
cancel 28712704
(sfx0 28712704 (player_dead tries to move))
(sfx1 4534708 (207708))
sfx2 59015908 (78323308) (49993708) (exit closes)
(final exit)
sfx3 81956708
sfx4 48884508
(normal exit)
sfx5 50991708 (8779508)
================
COLLISIONLAYERS
================
background
void, void_start
wall_shadow, crumble_wall
active_exit, inactive_exit, temp_exit, void_exit, final_exit
laser_up
laser_down
laser_right
laser_left
player, wall, glass, pushable
explosion
======
RULES
======
[moving dead_player] -> cancel
[void_start] -> [random void]
(movement)
[> live_player | battery | shoot_empty_n] -> [| live_player | shoot_charged_n]
[> live_player | battery | shoot_empty_e] -> [| live_player | shoot_charged_e]
[> live_player | battery | shoot_empty_s] -> [| live_player | shoot_charged_s]
[> live_player | battery | shoot_empty_w] -> [| live_player | shoot_charged_w]
[> live_player | pushable] -> [> live_player | > pushable]
(remove lasers)
late [laser blocks_laser] -> [blocks_laser]
late up [no shoot_charged_n no laser_up | laser_up] -> [|]
late right [no shoot_charged_e no laser_right | laser_right] -> [|]
late down [no shoot_charged_s no laser_down | laser_down] -> [|]
late left [no shoot_charged_w no laser_left | laser_left] -> [|]
(extend lasers)
late up [shoot_charged_n | no blocks_laser] -> [shoot_charged_n | laser_up]
late up [laser_up | no blocks_laser] -> [laser_up | laser_up]
late right [shoot_charged_e | no blocks_laser] -> [shoot_charged_e | laser_right]
late right [laser_right | no blocks_laser] -> [laser_right | laser_right]
late down [shoot_charged_s | no blocks_laser] -> [shoot_charged_s | laser_down]
late down [laser_down | no blocks_laser] -> [laser_down | laser_down]
late left [shoot_charged_w | no blocks_laser] -> [shoot_charged_w | laser_left]
late left [laser_left | no blocks_laser] -> [laser_left | laser_left]
([moving dead_player] -> [dead_player] sfx0)
late [player laser] -> [dead_player laser]
(uncharge targets)
late up [target_charged_n | no laser_end_down] -> [target_empty_n | ]
late right [target_charged_e | no laser_end_left] -> [target_empty_e | ]
late down [target_charged_s | no laser_end_up] -> [target_empty_s | ]
late left [target_charged_w | no laser_end_right] -> [target_empty_w | ]
(charge targets)
late up [target_empty_n | laser_end_down] -> [target_charged_n | laser_end_down]
late right [target_empty_e | laser_end_left] -> [target_charged_e | laser_end_left]
late down [target_empty_s | laser_end_up] -> [target_charged_s | laser_end_up]
late left [target_empty_w | laser_end_right] -> [target_charged_w | laser_end_right]
(battery explode)
[explosion4] -> []
[explosion3] -> [explosion4] again
[explosion2] -> [explosion3] again
[explosion1] -> [explosion2] again
late [laser battery] -> [laser explosion1] again
(crumble wall)
[crumble_wall3] -> []
[crumble_wall2] -> [crumble_wall3] again
[crumble_wall1] -> [crumble_wall2] again
late [unstable_wall | explosion1] -> [crumble_wall1 | explosion1] again
(exit)
[active_exit2] -> [active_exit3]
[active_exit1] -> [active_exit2] again
late [inactive_exit] -> [temp_exit]
late [any_uncharged] [temp_exit] -> [any_uncharged] [inactive_exit]
late [dead_player] [temp_exit] -> [dead_player] [inactive_exit]
late [any_uncharged] [active_exit] -> [any_uncharged] [inactive_exit] sfx2
late [temp_exit] -> [active_exit1] again
late [player active_exit] -> [player active_exit] sfx5
late [player void_exit] -> [player final_exit] sfx3 sfx4
==============
WINCONDITIONS
==============
Some live_player on valid_exit
=======
LEVELS
=======
message Level 1 of 20
message The exit opens when all machines are powered.
,,,,,,,,,,,,,,
,###,,#######,
,#z#,,#._...#,
,#.#,,#.###.#,
,#.####.###.#,
,#.b....n...#,
,############,
,~~~~~~~~~~~~,
,,,,,,,,,,,,,,
(dying)
message Level 2 of 20
message If you die or get stuck, use Z to undo or R to restart.
,,,,,,,,,,,,,
,,,#######,,,
,,##.....##,,
,##.......##,
,#.e.bz..{.#,
,##.......##,
,~##.....##~,
,,~#######~,,
,,,~~~~~~~,,,
,,,,,,,,,,,,,
message Level 3 of 20
,,,,,,,,,,,,,
,,,#######,,,
,,##..._.##,,
,##.......##,
,#..p...x..#,
,##..b....##,
,~##...n.##~,
,,~#######~,,
,,,~~~~~~~,,,
,,,,,,,,,,,,,
(batteries exploding)
message Level 4 of 20
,,,,,,,,,,,,,
,,,#######,,,
,,##..._.##,,
,##....b..##,
,#.p.b.n.x.#,
,##.......##,
,~##.....##~,
,,~#######~,,
,,,~~~~~~~,,,
,,,,,,,,,,,,,
message Level 5 of 20
,,,,,,,,,,,,,
,,,#######,,,
,,##..._.##,,
,##..s.b.x##,
,#.........#,
,##p.b.n..##,
,~##.-...##~,
,,~#######~,,
,,,~~~~~~~,,,
,,,,,,,,,,,,,
message Level 6 of 20
,,,,,,,,,,,,,
,#####,,,,,,,
,#.p.#,,,,,,,
,#.b.#######,
,#.{.#.....#,
,#.n...e_bx#,
,#...#.....#,
,###########,
,~~~~~~~~~~~,
,,,,,,,,,,,,,
(semi-solid walls)
message Level 7 of 20
,,,,,,,,,,,
,,###,,,,,,
,##_######,
,#.......#,
,##gggggg#,
,~#p.b.nx#,
,,##.....#,
,,~#######,
,,,~~~~~~~,
,,,,,,,,,,,
message Level 8 of 20
,,,,,,,,,,,
,,,,,,###,,
,######_##,
,#.......#,
,#.b.x.s.#,
,#.ggggg.#,
,#.n.p.b.#,
,#.......#,
,##-######,
,~###~~~~~,
,,~~~,,,,,,
,,,,,,,,,,,
message Level 9 of 20
,,,,,,,,,,,
,,###,###,,
,##_######,
,#}gg...##,
,##.bwb.##,
,~#.nzs.#~,
,##.beb.##,
,##...gg{#,
,######-##,
,~###~###~,
,,~~~,~~~,,
,,,,,,,,,,,
message Level 10 of 20
,,,,,,,,,,,,
,,,,###,,,,,
,####_####,,
,#p......#,,
,#bggggg.#,,
,#eg...g.#,,
,#.g.n.g.##,
,#.g.b.g.{#,
,#.......##,
,#......x#~,
,#########,,
,~~~~~~~~~,,
,,,,,,,,,,,,
message Level 11 of 20
,,,,,,,,,,,,,,,
,############,,
,#..._......##,
,#}.e.s.n.w..#,
,#..b.b.b.b.{#,
,##x...p.-...#,
,~############,
,,~~~~~~~~~~~~,
,,,,,,,,,,,,,,,
message Level 12 of 20
,,,,,,,,,,,,,,,
,############,,
,#..._......##,
,#}.e.s.n#w..#,
,#..b.b.b.b.{#,
,##x...p.-..##,
,~############,
,,~~~~~~~~~~~~,
,,,,,,,,,,,,,,,
message Level 13 of 20
,,,,,,,,,,,
,#####,,,,,
,#...#####,
,#.#xb.{##,
,#.e.#...#,
,#.wb..}.#,
,#.e.#...#,
,#.#pb.{.#,
,#...#...#,
,#########,
,~~~~~~~~~,
,,,,,,,,,,,
(unstable walls)
message Level 14 of 20
,,,,,,,,,,,
,,#######,,
,##...&.##,
,#.p.b&.{#,
,#...b&..#,
,#.b.b&..#,
,#.e.b&.x#,
,##...&.##,
,~#######~,
,,~~~~~~~,,
,,,,,,,,,,,
message Level 15 of 20
,,,,,,,,,,,,
,#########,,
,#....#..##,
,#eb&.gb.{#,
,#....#..##,
,#b.p.&.x#~,
,#..#.####,,
,#....#~~~,,
,######,,,,,
,~~~~~~,,,,,
,,,,,,,,,,,,
message Level 16 of 20
,,,,,,,,,,,,,
,###########,
,#...._....#,
,#..b.n..w.#,
,#..#####..#,
,#..#..###.#,
,#b.g.b#}.z#,
,#..#.bgg..#,
,#..##&##e{#,
,#.........#,
,#.........#,
,###########,
,,,,,,,,,,,,,
message Level 17 of 20
,,,,,,,,,,
,,#######,
,##.....#,
,#.p.b.w#,
,#...b..#,
,#..#{eb#,
,#.}#&#x#,
,#......#,
,########,
,~~~~~~~~,
,,,,,,,,,,
message Level 18 of 20
,,,,,,,,,,,,
,##########,
,#...s.b..#,
,#.gggggg.#,
,#._..g...#,
,#.gggggg.#,
,#...._...#,
,#.gggggg.#,
,#..b&bng.#,
,#.gggggg.#,
,#........#,
,#.-.nb.z.#,
,##########,
,~~~~~~~~~~,
,,,,,,,,,,,,
message Level 19 of 20
,,,#########,,,
,,#####_#####,,
,###.b.s...###,
###........p###
##..#g#.#g#..##
#}..g.&.b.&.b##
##..#&#g#.#..##
##e..b..&...w{#
##..#.#&#b#..##
##b...b...&..##
##..#g#.#&#..##
###x........###
~###...n.b.###~
,~###-#######~,
,,~#########~,,
,,,~~~~~~~~~,,,
message Level 20 of 20
,,,,,,,,,,,,,,,,,
,###,,,,,,,,,,,,,
,#.##########,,,,
,#.b&b&b&b&b&?,,,
,#e##########,,,,
,#.#~~~~~~~~~,,,,
,#b#,,,,,,,,,,,,,
,#.#,,,,,,,,,,,,,
,#p#,,,,,,,,,,,,,
,###,,,,,,,,,,,,,
,~~~,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
message You're free.