Created
April 26, 2024 05:02
-
-
Save inventortimer/31e56688e36384ab91af31102adfa58d to your computer and use it in GitHub Desktop.
The Cable Guy (PuzzleScript Script)
This file contains 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 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 The Cable Guy | |
author 4sandwiches | |
homepage https://store.steampowered.com/app/2541310/The_Cable_Guy | |
(debug) | |
again_interval 0.05 | |
======== | |
OBJECTS | |
======== | |
(TODOs: | |
- Action on cable should remove whole cable path (including switch pass?) | |
- use NO keyword for deleting objects | |
- Start making levels | |
- Add another color of cable (red and maybe green) and then allow only vertical and horizontal overlap and maybe cross section | |
- | |
) | |
(Ideas: | |
- Create repeater/switch: allows to split single cable into 3 | |
- Door should open after clearing the level and allow choosing next level? Or pass cable thrugh it? | |
) | |
Background | |
orange lightbrown orange | |
00000 | |
01112 | |
01112 | |
01102 | |
02222 | |
WallV | |
lightgray gray | |
.101. | |
.101. | |
.101. | |
.101. | |
.101. | |
WallH | |
lightgray gray | |
..... | |
11111 | |
00000 | |
11111 | |
..... | |
WallUL | |
lightgray gray | |
.101. | |
1101. | |
0001. | |
1111. | |
..... | |
WallDR | |
lightgray gray | |
..... | |
.1111 | |
.1000 | |
.1011 | |
.101. | |
WallUR | |
lightgray gray | |
.101. | |
.1011 | |
.1000 | |
.1111 | |
..... | |
WallDL | |
lightgray gray | |
..... | |
1111. | |
0001. | |
1101. | |
.101. | |
Column | |
lightgray gray | |
11111 | |
10001 | |
10001 | |
10001 | |
11111 | |
WindowV | |
lightblue lightblue white lightgray | |
.313. | |
.323. | |
.313. | |
.313. | |
.313. | |
WindowH | |
lightblue white lightgray | |
..... | |
22222 | |
01000 | |
22222 | |
..... | |
DoorH | |
darkbrown | |
..... | |
..... | |
00000 | |
..... | |
..... | |
DoorV | |
darkbrown | |
..0.. | |
..0.. | |
..0.. | |
..0.. | |
..0.. | |
Plant | |
darkbrown brown green | |
22.22 | |
.222. | |
..2.. | |
11111 | |
.000. | |
Water | |
lightgray gray blue lightblue | |
.223. | |
.222. | |
.222. | |
.010. | |
.000. | |
UnconnectedBluePC | |
lightblue darkgray | |
00000 | |
01110 | |
00000 | |
.000. | |
00000 | |
ConnectedBluePC | |
lightblue blue | |
00000 | |
01110 | |
00000 | |
.000. | |
00000 | |
Wall | |
brown darkbrown | |
00010 | |
11111 | |
01000 | |
11111 | |
00010 | |
Server | |
black orange blue grey | |
33333 | |
32223 | |
33333 | |
32223 | |
33333 | |
NonActivePlayer | |
white | |
00.00 | |
0...0 | |
..... | |
0...0 | |
00.00 | |
DeletingPlayer | |
white | |
..... | |
.0.0. | |
..0.. | |
.0.0. | |
..... | |
ActiveBluePlayer | |
blue | |
00.00 | |
0...0 | |
..... | |
0...0 | |
00.00 | |
ConnectedCableVB | |
blue | |
..0.. | |
..0.. | |
..0.. | |
..0.. | |
..0.. | |
ConnectedCableHB | |
blue | |
..... | |
..... | |
00000 | |
..... | |
..... | |
( | |
ConnectedCableDLB | |
blue | |
..... | |
..... | |
000.. | |
..0.. | |
..0.. | |
ConnectedCableDRB | |
blue | |
..... | |
..... | |
..000 | |
..0.. | |
..0.. | |
ConnectedCableULB | |
blue | |
..0.. | |
..0.. | |
000.. | |
..... | |
..... | |
ConnectedCableURB | |
blue | |
..0.. | |
..0.. | |
..000 | |
..... | |
..... | |
) | |
ConnectedCableLVB | |
blue | |
..0.. | |
..0.. | |
000.. | |
..0.. | |
..0.. | |
ConnectedCableRVB | |
blue | |
..0.. | |
..0.. | |
..000 | |
..0.. | |
..0.. | |
ConnectedCableDHB | |
blue | |
..... | |
..... | |
00000 | |
..0.. | |
..0.. | |
ConnectedCableUHB | |
blue | |
..0.. | |
..0.. | |
00000 | |
..... | |
..... | |
ConnectedCableCB | |
blue | |
..0.. | |
..0.. | |
00000 | |
..0.. | |
..0.. | |
UnconnectedCableD | |
gray | |
..... | |
..... | |
..0.. | |
..0.. | |
..0.. | |
UnconnectedCableU | |
gray | |
..0.. | |
..0.. | |
..0.. | |
..... | |
..... | |
UnconnectedCableR | |
gray | |
..... | |
..... | |
..000 | |
..... | |
..... | |
UnconnectedCableL | |
gray | |
..... | |
..... | |
000.. | |
..... | |
..... | |
ConnectedCableDB | |
blue | |
..... | |
..... | |
..0.. | |
..0.. | |
..0.. | |
ConnectedCableUB | |
blue | |
..0.. | |
..0.. | |
..0.. | |
..... | |
..... | |
ConnectedCableRB | |
blue | |
..... | |
..... | |
..000 | |
..... | |
..... | |
ConnectedCableLB | |
blue | |
..... | |
..... | |
000.. | |
..... | |
..... | |
SourceD | |
transparent | |
SourceU | |
transparent | |
SourceL | |
transparent | |
SourceR | |
transparent | |
EraserL | |
transparent | |
EraserR | |
transparent | |
EraserD | |
transparent | |
EraserU | |
transparent | |
EraserML | |
transparent | |
EraserMR | |
transparent | |
EraserMD | |
transparent | |
EraserMU | |
transparent | |
======= | |
LEGEND | |
======= | |
player = ActiveBluePlayer or NonActivePlayer or DeletingPlayer | |
ConnectedBlueCable = ConnectedCableUB or ConnectedCableDB or ConnectedCableLB or ConnectedCableRB | |
ConnectedBlueCableUnused = ConnectedCableVB or ConnectedCableHB or ConnectedCableLVB or ConnectedCableRVB or ConnectedCableDHB or ConnectedCableUHB or ConnectedCableCB | |
UnconnectedCable = UnconnectedCableD or UnconnectedCableU or UnconnectedCableR or UnconnectedCableL | |
Source = SourceD or SourceL or SourceR or SourceU | |
Eraser = EraserD or EraserL or EraserR or EraserU | |
EraserM = EraserMD or EraserML or EraserMR or EraserMU | |
WallD = WallV or WallH or WallDR or WallDL or WallUR or WallUL | |
Window = WindowV or WindowH | |
Door = DoorH or DoorV | |
EraserV = EraserU or EraserD | |
EraserH = EraserL or EraserR | |
Obstacle = WallD or Window or Plant or Water or Door or Column or Wall | |
. = Background | |
# = Wall | |
S = Server | |
N = NonActivePlayer | |
A = ActiveBluePlayer | |
U = UnconnectedBluePC | |
C = ConnectedBluePC | |
- = ConnectedCableHB | |
/ = ConnectedCableVB | |
8 = WallV | |
6 = WallH | |
3 = WallDR | |
1 = WallDL | |
7 = WallUL | |
9 = WallUR | |
4 = WindowV | |
2 = WindowH | |
5 = Plant | |
B = Water | |
H = DoorH | |
D = DoorV | |
L = Column | |
======= | |
SOUNDS | |
======= | |
ActiveBluePlayer move 10467107 | |
NonActivePlayer move 36772507 | |
Player CantMove 4123412 | |
Cancel 4123412 | |
sfx0 40707106 | |
sfx1 10467107 | |
sfx2 4123412 (No movement) | |
sfx3 113500 | |
sfx4 2868907 (Remove cable) | |
================ | |
COLLISIONLAYERS | |
================ | |
Background | |
EraserM | |
EraserL | |
EraserR | |
EraserD | |
EraserU | |
Source | |
ConnectedCableUB, UnconnectedCableU | |
ConnectedCableDB, UnconnectedCableD | |
ConnectedCableRB, UnconnectedCableR | |
ConnectedCableLB, UnconnectedCableL | |
UnconnectedBluePC, ConnectedBluePC, Server | |
ConnectedBlueCableUnused | |
player, obstacle | |
====== | |
RULES | |
====== | |
(Player actions) | |
[Action NonActivePlayer Server] -> [ActiveBluePlayer Server] sfx0 | |
[Action ActiveBluePlayer] -> [NonActivePlayer] | |
late [NonActivePlayer connectedbluecable] -> [DeletingPlayer connectedbluecable] | |
late [DeletingPlayer NO connectedbluecable] -> [NonActivePlayer NO connectedbluecable] | |
([Action NonActivePlayer connectedbluecable] -> [NonActivePlayer Background]) | |
([Action NonActivePlayer connectedbluecable | ... | connectedbluecable] -> [NonActivePlayer | ... | Background]) | |
(Erase active connection) | |
[Action DeletingPlayer connectedcableLB connectedcableRB] -> [NonActivePlayer NO connectedcableLB NO connectedcableRB LEFT EraserL RIGHT EraserR] | |
[Action DeletingPlayer connectedcableUB connectedcableDB] -> [NonActivePlayer NO connectedcableUB NO connectedcableDB UP EraserU DOWN EraserD] | |
[Action DeletingPlayer connectedcableLB connectedcableUB] -> [NonActivePlayer NO connectedcableLB NO connectedcableUB LEFT EraserL UP EraserU] | |
[Action DeletingPlayer connectedcableRB connectedcableUB] -> [NonActivePlayer NO connectedcableRB NO connectedcableUB RIGHT EraserR UP EraserU] | |
[Action DeletingPlayer connectedcableLB connectedcableDB] -> [NonActivePlayer NO connectedcableLB NO connectedcableDB LEFT EraserL DOWN EraserD] | |
[Action DeletingPlayer connectedcableRB connectedcableDB] -> [NonActivePlayer NO connectedcableRB NO connectedcableDB RIGHT EraserR DOWN EraserD] | |
[Action DeletingPlayer connectedcableRB] -> [NonActivePlayer NO connectedcableRB RIGHT EraserR] | |
[Action DeletingPlayer connectedcableLB] -> [NonActivePlayer NO connectedcableRB LEFT EraserL] | |
[Action DeletingPlayer connectedcableUB] -> [NonActivePlayer NO connectedcableRB UP EraserU] | |
[Action DeletingPlayer connectedcableDB] -> [NonActivePlayer NO connectedcableRB DOWN EraserD] | |
[EraserL connectedcableRB connectedcableDB] -> [DOWN EraserD] again sfx4 | |
[EraserL connectedcableRB connectedcableUB] -> [UP EraserU] again sfx4 | |
[EraserL connectedcableRB connectedcableLB] -> [LEFT EraserL] again sfx4 | |
[EraserR connectedcableLB connectedcableDB] -> [DOWN EraserD] again sfx4 | |
[EraserR connectedcableLB connectedcableUB] -> [UP EraserU] again sfx4 | |
[EraserR connectedcableLB connectedcableRB] -> [RIGHT EraserR] again sfx4 | |
[EraserU connectedcableDB connectedcableRB] -> [RIGHT EraserR] again sfx4 | |
[EraserU connectedcableDB connectedcableLB] -> [LEFT EraserL] again sfx4 | |
[EraserU connectedcableDB connectedcableUB] -> [UP EraserU] again sfx4 | |
[EraserD connectedcableUB connectedcableRB] -> [RIGHT EraserR] again sfx4 | |
[EraserD connectedcableUB connectedcableLB] -> [LEFT EraserL] again sfx4 | |
[EraserD connectedcableUB connectedcableDB] -> [DOWN EraserD] again sfx4 | |
[EraserL ConnectedBluePC] -> [UnconnectedBluePC] | |
[EraserR ConnectedBluePC] -> [UnconnectedBluePC] | |
[EraserD ConnectedBluePC] -> [UnconnectedBluePC] | |
[EraserU ConnectedBluePC] -> [UnconnectedBluePC] | |
[EraserR connectedcableRB] -> [RIGHT EraserR] | |
[EraserL connectedcableLB] -> [LEFT EraserL] | |
[EraserU connectedcableUB] -> [UP EraserU] | |
[EraserD connectedcableDB] -> [DOWN EraserD] | |
[Eraser Server] -> [Server] | |
(removal of cables starts late by one turn, but it's ok, for now) | |
(Server rules) | |
(Server = BlueServer, RedServer...) | |
[> ActiveBluePlayer Server | connectedbluecable] -> [ActiveBluePlayer Server | connectedbluecable] sfx2 | |
UP [UP ActiveBluePlayer Server | NO Obstacle] -> [UP ActiveBluePlayer Server | ConnectedCableDB NO Obstacle] sfx1 | |
DOWN [DOWN ActiveBluePlayer Server | NO Obstacle] -> [DOWN ActiveBluePlayer Server | ConnectedCableUB NO Obstacle]sfx1 | |
LEFT [LEFT ActiveBluePlayer Server | NO Obstacle] -> [LEFT ActiveBluePlayer Server | ConnectedCableRB NO Obstacle] sfx1 | |
RIGHT [RIGHT ActiveBluePlayer Server | NO Obstacle] -> [RIGHT ActiveBluePlayer Server | ConnectedCableLB NO Obstacle] sfx1 | |
(Cable rules) | |
(Down) | |
LEFT [LEFT ActiveBluePlayer ConnectedCableDB | NO Obstacle] -> [ConnectedCableDB ConnectedCableLB | ActiveBluePlayer ConnectedCableRB NO Obstacle] sfx1 | |
RIGHT [RIGHT ActiveBluePlayer ConnectedCableDB | NO Obstacle] -> [ConnectedCableDB ConnectedCableRB | ActiveBluePlayer ConnectedCableLB NO Obstacle] sfx1 | |
UP [UP ActiveBluePlayer ConnectedCableDB | NO Obstacle] -> [ConnectedCableDB ConnectedCableUB | ActiveBluePlayer ConnectedCableDB NO Obstacle] sfx1 | |
DOWN [DOWN ActiveBluePlayer ConnectedCableDB | NO Obstacle] -> [ActiveBluePlayer ConnectedCableDB | NO Obstacle] sfx2 | |
(Up) | |
LEFT [LEFT ActiveBluePlayer ConnectedCableUB | NO Obstacle] -> [ConnectedCableUB ConnectedCableLB | ActiveBluePlayer ConnectedCableRB NO Obstacle] sfx1 | |
RIGHT [RIGHT ActiveBluePlayer ConnectedCableUB | NO Obstacle] -> [ConnectedCableUB ConnectedCableRB | ActiveBluePlayer ConnectedCableLB NO Obstacle] sfx1 | |
DOWN [DOWN ActiveBluePlayer ConnectedCableUB | NO Obstacle] -> [ConnectedCableUB ConnectedCableDB | ActiveBluePlayer ConnectedCableUB NO Obstacle] sfx1 | |
UP [UP ActiveBluePlayer ConnectedCableUB | NO Obstacle] -> [ActiveBluePlayer ConnectedCableUB | NO Obstacle] sfx2 | |
(Left) | |
RIGHT [RIGHT ActiveBluePlayer ConnectedCableLB | NO Obstacle] -> [ConnectedCableLB ConnectedCableRB | ActiveBluePlayer ConnectedCableLB NO Obstacle] sfx1 | |
LEFT [LEFT ActiveBluePlayer ConnectedCableLB | NO Obstacle] -> [ActiveBluePlayer ConnectedCableLB| NO Obstacle] sfx2 | |
DOWN [DOWN ActiveBluePlayer ConnectedCableLB | NO Obstacle] -> [ConnectedCableLB ConnectedCableDB | ActiveBluePlayer ConnectedCableUB NO Obstacle] sfx1 | |
UP [UP ActiveBluePlayer ConnectedCableLB | NO Obstacle] -> [ConnectedCableLB ConnectedCableUB | ActiveBluePlayer ConnectedCableDB NO Obstacle] sfx1 | |
(Right) | |
LEFT [LEFT ActiveBluePlayer ConnectedCableRB | NO Obstacle] -> [ConnectedCableRB ConnectedCableLB | ActiveBluePlayer ConnectedCableRB NO Obstacle] sfx1 | |
RIGHT [RIGHT ActiveBluePlayer ConnectedCableRB | NO Obstacle] -> [ActiveBluePlayer ConnectedCableRB | NO Obstacle] sfx2 | |
DOWN [DOWN ActiveBluePlayer ConnectedCableRB | NO Obstacle] -> [ConnectedCableRB ConnectedCableDB | ActiveBluePlayer ConnectedCableUB NO Obstacle] sfx1 | |
UP [UP ActiveBluePlayer ConnectedCableRB | NO Obstacle] -> [ConnectedCableRB ConnectedCableUB | ActiveBluePlayer ConnectedCableDB NO Obstacle] sfx1 | |
[ActiveBluePlayer ConnectedCableLB ConnectedCableRB ConnectedCableUB ] -> CANCEL | |
[ActiveBluePlayer ConnectedCableLB ConnectedCableRB ConnectedCableDB ] -> CANCEL | |
[ActiveBluePlayer ConnectedCableLB ConnectedCableUB ConnectedCableDB ] -> CANCEL | |
[ActiveBluePlayer ConnectedCableRB ConnectedCableUB ConnectedCableDB ] -> CANCEL | |
( [ ConnectedCableLB ConnectedCableRB ConnectedCableUB] CANCEL )(message "Shortcircuit! Don't overlap cables of the same color.") | |
( | |
LEFT [LEFT ActiveBluePlayer ConnectedCableVB | Background] -> [LEFT ActiveBluePlayer ConnectedCableLVB | ConnectedCableHB SourceR Background] | |
RIGHT [RIGHT ActiveBluePlayer ConnectedCableVB | Background] -> [RIGHT ActiveBluePlayer ConnectedCableRVB | ConnectedCableHB SourceL Background] | |
UP [UP ActiveBluePlayer ConnectedCableVB | Background] -> [UP ActiveBluePlayer ConnectedCableVB | ConnectedCableVB SourceU Background] | |
DOWN [DOWN ActiveBluePlayer ConnectedCableVB | Background] -> [DOWN ActiveBluePlayer ConnectedCableVB | ConnectedCableVB SourceD Background] | |
) | |
([> ActiveBluePlayer | connectedbluecable] -> [ActiveBluePlayer | conn]) | |
( | |
LEFT [LEFT ActiveBluePlayer ConnectedCableRVB | Background] -> [ConnectedCableCB | ActiveBluePlayer ConnectedCableHB Background] | |
) | |
( | |
RIGHT [RIGHT ActiveBluePlayer ConnectedCableUHB | Background] -> [ConnectedCableRVB | ActiveBluePlayer ConnectedCableHB Background] | |
) | |
( | |
RIGHT [RIGHT ActiveBluePlayer ConnectedCableHB | Background] -> [ConnectedCableHB | ActiveBluePlayer ConnectedCableHB Background] | |
RIGHT [RIGHT ActiveBluePlayer ConnectedCableVB | Background] -> [ConnectedCableDHB | ActiveBluePlayer ConnectedCableHB Background] | |
UP [UP ActiveBluePlayer ConnectedCableHB | Background] -> [ConnectedCableUHB | ActiveBluePlayer ConnectedCableVB Background] | |
) | |
(PC connection) | |
late [ActiveBluePlayer UnconnectedBluePC connectedbluecable | ConnectedBlueCable] -> [NonActivePlayer ConnectedBluePC no connectedbluecable | connectedbluecable] sfx3 | |
late [ActiveBluePlayer ConnectedBluePC] -> cancel | |
( | |
late [NonActivePlayer ConnectedBluePC ConnectedCableLB ConnectedCableRB ConnectedCableUB ] -> CANCEL | |
late [ConnectedBluePC ConnectedCableRB ConnectedCableDB ] -> CANCEL | |
late [NonActivePlayer ConnectedBluePC ConnectedCableLB ConnectedCableUB ConnectedCableDB ] -> CANCEL | |
late [NonActivePlayer ConnectedBluePC ConnectedCableRB ConnectedCableUB ConnectedCableDB ] -> CANCEL | |
) | |
( | |
late [ConnectedBluePC SourceR | NO ConnectedCableLB] -> [UnconnectedBluePC | NO ConnectedCableLB] sfx3 | |
EraserShould unplug PC instead | |
) | |
============== | |
WINCONDITIONS | |
============== | |
No UnconnectedBluePC | |
======= | |
LEVELS | |
======= | |
message Connect blue PC to the blue Server | |
l666h6666666l | |
8...........8 | |
8...........8 | |
8.....u.....8 | |
8..l.....l..d | |
8...........8 | |
8.....n.....8 | |
8...........8 | |
d..l.....l..8 | |
8.....s.....8 | |
8...........8 | |
8...........8 | |
l6666666h666l | |
( | |
3666h66666661 | |
8...........8 | |
8...........8 | |
8.....u.....8 | |
8...........d | |
8...........8 | |
8.....n.....8 | |
8...........8 | |
d...........8 | |
8.....s.....8 | |
8...........8 | |
8...........8 | |
96666666h6667 | |
) | |
message Congrats! Connect all PCs | |
l666h6666666l | |
8...........8 | |
8...........8 | |
8.....u.....8 | |
8..l.....l..d | |
8..8.....8..8 | |
8.u8..n..8u.8 | |
8..8.....8..8 | |
d..l.....l..8 | |
8.....s.....8 | |
8...........8 | |
8.....u.....8 | |
l6666666h666l | |
l666h6666666l | |
8...........8 | |
8...........8 | |
8..u.....u..8 | |
8..l.....l..d | |
8...........8 | |
8.....n.....8 | |
8..u.....u..8 | |
d..l.....l..8 | |
8.....s.....8 | |
8...........8 | |
8...........8 | |
l6666666h666l | |
3666h66666661 | |
8u.........u8 | |
8...........8 | |
8...........8 | |
8...........d | |
8...........8 | |
8.....s.....8 | |
8...........8 | |
d...........8 | |
8.....n.....8 | |
8...........8 | |
8u.........u8 | |
96666666h6667 | |
3666h6666661 | |
8uub...5uuu8 | |
8..........8 | |
8..........8 | |
8..........d | |
8u........u8 | |
8.....s....8 | |
8u....n...u8 | |
d..........8 | |
8..........8 | |
8..........8 | |
85uuu.....u8 | |
96666666h667 | |
3666h6666661 | |
8uub...5uuu8 | |
8..........8 | |
8..........8 | |
8..........d | |
8....361...8 | |
8....8s8...8 | |
8..........8 | |
d..........8 | |
8..........8 | |
8....n.....8 | |
85uuu.....u8 | |
96666666h667 | |
366626666661 | |
8..........8 | |
4..........4 | |
4.....u....4 | |
4..........4 | |
8....361...8 | |
8....8s8...8 | |
8..........8 | |
4..........4 | |
4.....n....4 | |
4..........4 | |
8..........8 | |
96666666h667 | |
............ | |
............ | |
............ | |
......u..... | |
............ | |
............ | |
......s..... | |
............ | |
......n..... | |
............ | |
............ | |
............ | |
............ | |
####### | |
#..u..# | |
#.....# | |
#.....# | |
#..s..# | |
#.....# | |
#..n..# | |
#.....# | |
####### | |
####### | |
#..u..# | |
#.....# | |
#..n..# | |
#.....# | |
#..s..# | |
####### |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment