Skip to content

Instantly share code, notes, and snippets.

@nvh
Created December 19, 2023 21:04
Show Gist options
  • Save nvh/1181e0ee3d810c87b07232d57fe8d578 to your computer and use it in GitHub Desktop.
Save nvh/1181e0ee3d810c87b07232d57fe8d578 to your computer and use it in GitHub Desktop.
Pusher (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Pusher
author Niels & Ruud
homepage www.puzzlescript.net
verbose_logging
========
OBJECTS
========
Outside
black
Background
lightgray
Target
yellow orange
1...1
.000.
.010.
.000.
1...1
Wall
darkgreen
Player
red purple darkblue lightblue darkred
.111.
12221
13231
.222.
04.44
Crate
lightbrown brown darkbrown
11111
12221
12.11
12111
11111
Button1
blue lightblue purple
.000.
01112
01112
01112
.222.
Button2
red lightblue purple
.000.
01112
01112
01112
.222.
Pusher1
lightgray gray darkgray darkblue
.....
.333.
.333.
.333.
.....
Pusher2
lightgray gray darkgray darkred
.....
.333.
.333.
.333.
.....
HorizontalRail
lightgray gray
00000
00000
11111
00000
00000
VerticalRail
lightgray gray
00100
00100
00100
00100
00100
HorizontalPushSource
lightgray gray
00000
00000
11111
00000
00000
VerticalPushSource
lightgray gray
00100
00100
00100
00100
00100
ButtonTarget
darkgray darkgreen
10001
00000
00000
00000
10001
ButtonSource
lightgray
=======
LEGEND
=======
Rail = HorizontalRail or VerticalRail
PushSource = HorizontalPushSource or VerticalPushSource
Pusher = Pusher1 or Pusher2
Button = Button1 or Button2
. = Background
# = Wall
P = Player
* = Crate
@ = Crate and Target
O = Target
$ = Button1 and ButtonSource
2 = Button2 and ButtonSource
E = Button1 and ButtonTarget
! = Pusher1
& = Pusher2
- = HorizontalRail
/ = VerticalRail
C = Crate and HorizontalRail
Y = Pusher1 and VerticalPushSource
% = Pusher1 and HorizontalPushSource
U = Pusher2 and VerticalPushSource
Z = Pusher2 and HorizontalPushSource
T = ButtonTarget
S = ButtonSource
x = Outside
R = Crate and VerticalRail
D = Crate and ButtonSource
Weight = Crate or Wall or Pusher
Static = Wall or Pusher
=======
SOUNDS
=======
================
COLLISIONLAYERS
================
Background
Target, Rail, PushSource, ButtonTarget, ButtonSource, Outside
Player, Wall, Crate, Pusher1, Pusher2, Button1, Button2
======
RULES
======
[ > Player | Crate ] -> [ > Player | > Crate ]
[ > Crate | Button | ButtonTarget ] -> [ > Crate | > Button | ButtonTarget ]
[ > Player | Button | ButtonTarget ] -> [ > Player | > Button | ButtonTarget ]
(Remove movement of player in direction of a button already on a target)
[ > Player | Button ButtonTarget ] -> [ Player | Button ButtonTarget ]
[ > Player | Static ] -> [ Player | Static ]
( [ PushSource Pusher | Rail ] [ > Button | ButtonTarget ] -> [ PushSource > Pusher | Rail ] [ > Button | ButtonTarget ] )
[ PushSource Pusher1 | Rail ] [ > Button1 | ButtonTarget ] -> [ PushSource > Pusher1 | Rail ] [ > Button1 | ButtonTarget ]
[ PushSource Pusher1 | Rail ] [ ButtonTarget | < Button1 ] -> [ PushSource > Pusher1 | Rail ] [ ButtonTarget | < Button1 ]
[ PushSource Pusher2 | Rail ] [ > Button2 | ButtonTarget ] -> [ PushSource > Pusher2 | Rail ] [ > Button2 | ButtonTarget ]
[ PushSource Pusher2 | Rail ] [ ButtonTarget | < Button2 ] -> [ PushSource > Pusher2 | Rail ] [ ButtonTarget | < Button2 ]
( [ PushSource | Pusher Rail ] [ ButtonSource moving Player | Button ButtonTarget ] -> [ PushSource | < Pusher Rail ] [ ButtonSource moving Player | < Button ButtonTarget ] )
[ moving Player ] [ PushSource NO Weight | Pusher1 Rail ] [ ButtonSource NO Weight | Button1 ButtonTarget ] -> [ moving Player ] [ PushSource | < Pusher1 Rail ] [ ButtonSource | < Button1 ButtonTarget ]
[ moving Player ] [ Pusher1 Rail | PushSource NO Weight ] [ ButtonSource NO Weight | Button1 ButtonTarget ] -> [ moving Player ] [ PushSource | < Pusher1 Rail ] [ ButtonSource | < Button1 ButtonTarget ]
[ moving Player ] [ PushSource NO Weight | Pusher2 Rail ] [ ButtonSource NO Weight | Button2 ButtonTarget ] -> [ moving Player ] [ PushSource | < Pusher2 Rail ] [ ButtonSource | < Button2 ButtonTarget ]
[ moving Player ] [ Pusher2 Rail | PushSource NO Weight ] [ ButtonSource NO Weight | Button2 ButtonTarget ] -> [ moving Player ] [ PushSource | < Pusher2 Rail ] [ ButtonSource | < Button2 ButtonTarget ]
[ > Pusher | Crate ] -> [ > Pusher | > Crate ]
[ > Pusher | Crate | Crate ] -> [ > Pusher | > Crate | > Crate ]
[ > Pusher | Crate | Crate | Crate ] -> [ > Pusher | > Crate | > Crate | > Crate ]
[ > Pusher | Crate | Crate | Crate | Crate ] -> [ > Pusher | > Crate | > Crate | > Crate | > Crate ]
[ > Pusher | Crate | Crate | Crate | Crate | Crate] -> [ > Pusher | > Crate | > Crate | > Crate | > Crate | > Crate ]
==============
WINCONDITIONS
==============
all Target on Crate
=======
LEVELS
=======
( ########### )
( #.........# )
( #........-% )
( ZC*POT2..$T )
( #.........# )
( #.........# )
( ########### )
( xx####x )
( ###..#x )
( #..P*## )
( T$*-%O# )
( #O##### )
( ###xxxx )
########
#.*.Y..#
#..#/#.#
#...#..#
#...P..#
#...*..#
#O..$..#
####T###
xxxxxxxxx####x
x#########..#x
x#....Y.....#x
##..##/####.#x
#..*.##T.O#.#x
#O#....$..#.#x
#.##..P...#.#x
#%-#..*.$T#.#x
#.#T$....#-%#x
#.#...$..##.#x
#.....T#....##
#.#########..#
#............#
#..###########
####xxxxxxxxxx
.####.....
.#..#.....
.#*.#.....
##..######
#.....#..#
T$.P-%..*#
#O....#.O#
##########
..####Y#
###.../#
T$..*O-%
####P###
...#...#
...###$#
......T.
.....#######
.....#.....#
######.###.#
#.....*..#.#
T$*O-%.OP#.#
#O..*....#.#
##.#.#####.#
.#.........#
.###########
.##Y#####
.#./....#
.#..%C.$T
.#..#..O#
.#..##.##
#T$*P-%#.
#..*##.#.
#O.$...#.
##OT...#.
.#######.
######.
#....#.
#**..#.
#.#*.#.
#.#.##.
#.#..#.
#.##.#.
#....##
#..#.P#
%-@@.$T
####O#.
...#O#.
...#O#.
...###.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment