Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Abandon (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Abandon
author various authors
homepage www.puzzlescript.net
zoomscreen 18x9
run_rules_on_level_start
========
OBJECTS
========
Background
black
Floor
#A87600 #AB770D
01010
10011
00100
11001
01010
Target
DarkBlue
WallOuter
brown DARKBROWN
11111
11111
00000
00000
00000
WallInner
brown DARKBROWN
11111
11111
11111
11111
11111
WallZ
brown DARKBROWN
.....
.....
11111
11111
11111
Player (camera)
TRANSPARENT
ConsoleCenter
TRANSPARENT
Engineer
blue
RobotNoPush
red
RobotPush
red
Controls
orange
VirtualControls
yellow
SourceZ
grey
.....
.....
.....
00000
00000
Source
GREY blue darkgrey
00100
00000
00000
22222
22222
US
grey blue
.....
.....
.....
.....
.....
USZ
grey blue
.....
.....
.....
..1..
..1..
DS
LIGHTGRAY blue
..1..
..1..
..1..
.....
.....
LS
grey blue
111..
.....
.....
.....
.....
RS
grey blue
..111
.....
.....
.....
.....
overload
red
..0..
.....
.....
.....
.....
UIHorizontal
LIGHTGREEN
.....
.....
00000
.....
.....
UIVertical
LIGHTGREEN
..0..
..0..
..0..
..0..
..0..
UICornerTL
LIGHTGREEN
.....
.....
..000
..0..
..0..
UICornerTR
LIGHTGREEN
.....
.....
000..
..0..
..0..
UICornerBL
LIGHTGREEN
..0..
..0..
..000
.....
.....
UICornerBR
LIGHTGREEN
..0..
..0..
000..
.....
.....
VirtualHArm
LIGHTGREEN
VirtualVArm
LIGHTGREEN
VSource
LIGHTGREEN
VRobotNoPush
LIGHTGREEN
00.00
0...0
.....
0...0
00.00
VRobotPush
LIGHTGREEN
00.00
0...0
.....
0...0
00.00
HorizontalArm
DARKGRAY
00000
00000
00000
00000
00000
VerticalArm
DARKGRAY
00000
00000
00000
00000
00000
FirstTurn
TRANSPARENT
Shadow
TRANSPARENT
=======
LEGEND
=======
voidscape = Background
? = voidscape
' = voidscape
( lab )
. = Floor
# = WallInner and Floor
% = WallOuter and Floor
A = RobotPush and Floor
S = Source and Floor
c = Controls and Floor
q = VirtualControls and Floor
[ = VerticalArm and Floor
] = HorizontalArm and Floor
( virtual console )
| = UIVertical and voidscape
- = UIHorizontal and voidscape
⌜ = UICornerTL and voidscape
⌝ = UICornerTR and voidscape
⌞ = UICornerBL and voidscape
⌟ = UICornerBR and voidscape
* = ConsoleCenter and voidscape
B = VRobotPush and voidscape
Z = VSource and voidscape
{ = VirtualVArm and voidscape
} = VirtualHArm and voidscape
( objects )
VRobot = VRobotNoPush or VRobotPush
Robot = RobotNoPush or RobotPush
ConcreteArm = HorizontalArm or VerticalArm
VirtualArm = VirtualHArm or VirtualVArm
Arm = HorizontalArm or VerticalArm
ComplexArm = VirtualArm or HorizontalArm
Overlays = DS or US or LS or RS
Pushable = Source or VSource
Pusher = Player or RobotPush or Arm or VRobotPush
Subject = Engineer or Robot
Wall = WallInner or WallOuter
UI = UIHorizontal or UIVertical or UICornerTL or UICornerTR or UICornerBL or UICornerBR
Camera = Player
Start = Player and Engineer and Floor
P = Start and FirstTurn
=======
SOUNDS
=======
================
COLLISIONLAYERS
================
voidscape
Floor
Target, Controls, VirtualControls, ConsoleCenter
Wall, Source, UI, Player, Arm, VirtualArm, VSource
Engineer, Robot, VRobot
SourceZ, WallZ
US
USZ
DS
LS
RS, FirstTurn
overload, Shadow
======
RULES
======
( NOTES )
( something should happen if the player makes a loop )
( I was thinking everything inside the loop is obliterated )
( and replaced with traversable voidscape )
( and a shocking sound effect plays )
( but it should be impossible to make a loop for the first little while )
( the game ends when the robot escapes like this )
( and stands on the cliff outside overlooking the city )
( should the flow that passes through walls appear over the walls? )
( add virtual blocks that follow the concrete blocks )
( add a virtual robot that follows the concrete robot )
( when the player tries to disengage the console in a way )
( that would create an illegal position for the robot )
( cancel that shit )
( while in the console, the robot is not a pusher )
( the concrete arms control the virtual arms )
( because the concrete arms might collide with something )
( and this should cancel the virtual arms turn )
( on every turn after the first )
( we want the turn to cancel if the player did not move )
( this is because the player controls decorators like the Engineer )
( which do not interact with blocks on their own )
( TODO the control pannels should be offset from the cage )
( this is to prevent the concrete arms from colliding with the controls )
[Player no FirstTurn no ConsoleCenter] -> [Player Shadow]
[FirstTurn] -> []
late [Player Shadow] -> cancel
late [Shadow] -> []
( the player pilotes the engineer )
[> Player Engineer] -> [> Player > Engineer]
( TODO when the robot is free the player pilotes the robot directly )
( before the robot is free the player pilotes the arms )
horizontal [> Player Robot][HorizontalArm][VirtualHArm] -> [> Player Robot][> HorizontalArm][> VirtualHArm]
vertical [> Player Robot][VerticalArm][VirtualVArm] -> [> Player Robot][> VerticalArm][> VirtualVArm]
horizontal [> Player ConsoleCenter][HorizontalArm][VirtualHArm] -> [Player ConsoleCenter][> HorizontalArm][> VirtualHArm]
vertical [> Player ConsoleCenter][VerticalArm][VirtualVArm] -> [Player ConsoleCenter][> VerticalArm][> VirtualVArm]
( the arms control the robot and the virtual robot )
[> Arm][Robot][VRobot] -> [> Arm][> Robot][> VRobot]
( --- SECTION: Virtual Console --- )
( the engineer can activate and deactivate the robot )
[action Player Engineer Controls] [Robot] -> [Engineer Controls] [Player Robot]
[action Player Robot] [Engineer] -> [Robot] [Player Engineer]
( the engineer can activate the virtual console )
[action Player Engineer VirtualControls] [ConsoleCenter] [RobotPush] [VRobotPush] -> [Engineer VirtualControls] [Player ConsoleCenter] [RobotNoPush] [VRobotNoPush]
( the engineer can't deactivate the virtual console if the robot is in an illegal position )
[action Player ConsoleCenter] [Engineer] [Robot Source] -> cancel
( the engineer can deactivate the virtual console )
[action Player ConsoleCenter] [Engineer] [RobotNoPush] [VRobotNoPush] -> [ConsoleCenter] [Player Engineer] [RobotPush] [VRobotPush]
( --- SECTION: Pushing --- )
( pushers can push )
[ > Pusher | Pushable ] -> [ > Pusher | > Pushable ]
( NOTE: the robot is not a pusher when used via the console )
( see "Virtual Console" above )
( --- SECTION: Render --- )
( clear the overlays )
[ Overlays ] -> []
[ overload ] -> []
( render overlays )
( adjacent sources transfer power )
late right [ Source | Source ] -> [ Source RS | Source LS ]
late down [ Source | Source ] -> [ Source DS | Source US ]
( power transfers through walls )
late right [ Source | Wall | Source ] -> [ Source RS | Wall RS LS | Source LS ]
late down [ Source | Wall | Source ] -> [ Source DS | Wall DS US | Source US ]
( overloads )
late [ RS LS DS ] -> [ RS LS DS overload ]
late [ RS LS US ] -> [ RS LS US overload ]
late [ US DS LS ] -> [ US DS LS overload ]
late [ US DS RS ] -> [ US DS RS overload ]
( render Z )
[ SourceZ ] -> []
[ USZ ] -> []
[ WallZ ] -> []
late up [ Source | no SourceZ ] -> [ Source | SourceZ ]
late up [ Source US | SourceZ ] -> [ Source US | SourceZ USZ ]
late up [ Wall | no WallZ ] -> [ Wall | WallZ ]
late up [ Wall US | WallZ ] -> [ Wall US | WallZ USZ ]
==============
WINCONDITIONS
==============
=======
LEVELS
=======
##############
#............#
#.#%%%%%%%%#.#
#.#.S.S....#.#
#[#.A......#.#
#.#...S.SS.#.#
#.%%%%%%%%%%.#
#...]...CQ...#
#............#
#..S..P..S...#
#...S..#.S...#
#......#.....#
##############
??????????????
??????????????
??????????????
??⌜--------⌝???
??|'Z'Z''''|??
?{|'B'*''''|??
??|'''Z'ZZ'|??
??⌞--------⌟??
????}?????????
??????????????
??????????????
??????????????
??????????????
??????????????
??????????????
??????????????
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment