Skip to content

Instantly share code, notes, and snippets.

@ncrecc
Created April 25, 2019 05:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ncrecc/e8a20685114d35a66d3199a0e9f0f9e2 to your computer and use it in GitHub Desktop.
Save ncrecc/e8a20685114d35a66d3199a0e9f0f9e2 to your computer and use it in GitHub Desktop.
Boulderban (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Boulderban
author ncrecc
homepage www.puzzlescript.net
verbose_logging
run_rules_on_level_start
again_interval 0
========
OBJECTS
========
Background
Black
Dirt
Brown Darkbrown
01000
00001
00100
10000
00010
Mud
Darkbrown Brown
01000
00001
00100
10000
00010
Target
Darkblue
Wall
Lightgray Gray
00010
11111
01000
11111
00010
Steel
lightgray Gray
10000
00010
00100
01000
00001
DGuy
Brown Red Orange
.000.
.222.
11111
.111.
.0.0.
UGuy
Brown Red Orange
.000.
.000.
11011
.111.
.0.0.
LGuy
Brown Red Orange
.000.
.200.
1110.
.111.
.0..0
RGuy
Brown Red Orange
.000.
.002.
.0111
.111.
0..0.
Indicator
Darkgreen
Rock
Gray Darkgray
.001.
0001.
00001
00011
.111.
Gem1
Lightblue Blue
..0..
.111.
00000
.111.
..0..
Gem2
Lightblue Blue
..1..
.000.
11111
.000.
..1..
Explosion
Orange Red Yellow
.101.
10201
02020
10201
.101.
CornerL
black
0....
.....
.....
.....
.....
CornerR
black
....0
.....
.....
.....
.....
SlipLeft
Red
..0..
.0...
00000
.0...
..0..
SlipRight
Blue
..0..
...0.
00000
...0.
..0..
=======
LEGEND
=======
. = Background
/ = Dirt
\ = Mud
# = Wall and SlipLeft
+ = Steel
P = DGuy
* = Rock and SlipLeft
@ = Rock and SlipLeft and Target
O = Target
$ = Gem1 and SlipLeft
Player = DGuy or UGuy or LGuy or RGuy
Corner = CornerL or CornerR
Gem = Gem1 or Gem2
Faller = Rock or Gem
PlaceCorners = Wall or Mud
Slippery = Rock or Gem or PlaceCorners
Flat = Steel or Dirt
Solid = Flat or Slippery or Player
SlipMark = SlipLeft or SlipRight
Diggable = Dirt or Mud or Gem
Structural = Wall or Steel
=======
SOUNDS
=======
Rock MOVE 36772507
================
COLLISIONLAYERS
================
Background
Indicator
Target
Player, Wall, Steel, Rock, Gem, Explosion, Dirt, Mud
CornerL
CornerR
SlipMark
======
RULES
======
(the only time player does not have a slipmark and the turn is not cancelled is at the very beginning of the level. this is initialization)
(place corners where they apply)
left [PlaceCorners|no Structural] -> [PlaceCorners CornerL|]
right [PlaceCorners|no Structural] -> [PlaceCorners CornerR|]
up [PlaceCorners Corner|Structural] -> [PlaceCorners|Structural]
(form a checkerboard pattern behind the scenes when the level first starts)
[Player no SlipMark] -> [Player left Background]
startloop
[left Background|stationary Background] -> [left Background|right Background]
[right Background|stationary Background] -> [right Background|left Background]
endloop
(turn gem1 into gem2 on every other checkerboard tile)
[Gem1 right Background] -> [Gem2]
(initialization ends)
[Player no SlipMark] -> [Player SlipRight]
[moving Background] -> [stationary Background]
(adjust player graphics to match direction)
[right Player] -> [right RGuy]
[left Player] -> [left LGuy]
[down Player] -> [down DGuy]
[up Player] -> [up UGuy]
(fallers fall or slip during the falling objects' turn)
[Faller] [Player SlipLeft] -> [down Faller] [Player SlipLeft]
(right-slipping fallers do so before left-slipping fallers. fallers seek to make sure the tile diagonally to them that they would normally fall onto is clear of solids)
down [> Faller|SlipRight Slippery] -> [> Faller ^ Background|SlipRight Slippery]
down [> Faller|SlipLeft Slippery] -> [> Faller v Background|SlipLeft Slippery]
horizontal [> Background|Solid] -> [action Background|Solid]
horizontal [> Background|] -> [> Background|down Background]
down [> Background|Solid] -> [action Background|Solid]
[action Background|horizontal Background] -> [action Background|action Background]
down [> Faller ^ Background|SlipRight Slippery] -> [^ Faller|SlipLeft Slippery]
down [> Faller v Background|SlipLeft Slippery] -> [v Faller|SlipRight Slippery]
[> Faller|Solid] -> [Faller|Solid]
[Player SlipLeft] -> [Player SlipRight]
[action Player no Indicator] -> [Player Indicator]
[action Player Indicator] -> [Player SlipLeft]
[> Player SlipRight] -> [> Player SlipLeft]
horizontal [> Player|Rock] -> [> Player|> Rock]
[> Player no Indicator|Diggable] -> [> Player|]
[> Player Indicator|Diggable] -> [Player|]
[> Player SlipMark] -> [> Player > SlipMark] (info moves with player)
(SLIPRIGHT indicates that it's the player's turn to move)
(SLIPLEFT indicates that it's the falling elements' turn to move)
[> Faller SlipMark] -> [> Faller > SlipMark] (slip info moves with fallers)
late [Indicator no Solid] -> []
late [Player SlipLeft] [Gem1 no Indicator] -> [Player SlipLeft] [Gem2 Indicator]
late [Player SlipLeft] [Gem2 no Indicator] -> [Player SlipLeft] [Gem1 Indicator]
late [Gem Indicator] -> [Gem]
late [Player SlipLeft] -> again
==============
WINCONDITIONS
==============
All Target on Rock
Some Target
=======
LEVELS
=======
#######
#.....#
#..$..#
#..$..#
#..$.p#
#o.$..#
#..$..#
#.....#
#######
######
#....#
#.#P.#
#.*@.#
#.O@.#
#....#
######
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment