Skip to content

Instantly share code, notes, and snippets.

@desplesda
Created December 15, 2018 22:45
Show Gist options
  • Save desplesda/d0c86cf6afdfd5961e0e69102ccc5136 to your computer and use it in GitHub Desktop.
Save desplesda/d0c86cf6afdfd5961e0e69102ccc5136 to your computer and use it in GitHub Desktop.
Button Squid (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Button Squid
author Jon Manning
homepage www.puzzlescript.net
again_interval 0.1
run_rules_on_level_start
========
OBJECTS
========
Background
blue
(Background
LIGHTGREEN GREEN
11111
01111
11101
11111
10111)
Wall
darkgreen darkblue
01001
00100
00000
10101
01000
(Wall
BROWN DARKBROWN
00010
11111
01000
11111
00010)
Player
green lightblue
.000.
.101.
.000.
00000
0.0.0
(Player
Black Orange White Blue
.000.
.111.
22222
.333.
.3.3.)
Coin
pink
.000.
000.0
00.00
0.000
.000.
DestroyedCoin
brown
.0.0.
0...0
.....
....0
..00.
PushBlock
darkblue lightblue
.000.
01110
01110
01110
.000.
MoveUp
purple pink
..0..
.010.
00000
..0..
.....
MoveDown
purple pink
.....
..0..
00000
.010.
..0..
MoveLeft
purple pink
..0..
.00..
0100.
.00..
..0..
MoveRight
purple pink
..0..
..00.
.0010
..00.
..0..
Exit
darkgreen lightgreen
.000.
00000
00100
00000
.000.
Bomb
black red
0.0.0
.000.
00100
.000.
0.0.0
BombPendingDetonation
black pink
0.0.0
.000.
00100
.000.
0.0.0
Absorber
green lightgreen
.....
.....
01110
01110
.000.
Explosion
yellow
000.0
0.00.
00000
.00.0
00.00
SecondaryExplosion
brown
0.0.0
0..0.
.0000
00.0.
.0..0
=======
LEGEND
=======
( Placeable objects )
. = Background
# = Wall
P = Player
* = Coin
B = PushBlock
U = MoveUp
D = MoveDown
L = MoveLeft
R = MoveRight
X = Bomb
E = Exit
A = Absorber
(Categories)
MoveBlock = MoveUp or MoveDown or MoveLeft or MoveRight
MovableBlock = PushBlock or MoveBlock
AnyBlock = MovableBlock or Bomb or BombPendingDetonation
AnyMovable = MovableBlock or Player
Damage = Explosion or SecondaryExplosion
AnyDestroyable = Player or AnyMovable
=======
SOUNDS
=======
Player Move 38565907
sfx0 4917100 (Collect coin - we do it manually because we only want to play it when the player collects them)
Explosion create 18649102
DestroyedCoin create 54605908
sfx1 11158101 (Player pushed object)
EndLevel 123413
================
COLLISIONLAYERS
================
Background
DestroyedCoin, Absorber
Exit, Explosion, SecondaryExplosion
Player, Wall, AnyBlock, Coin
======
RULES
======
( Players can collect coins )
[> Player | Coin ] -> [ | Player] sfx0 (play collect sound)
( Moving blocks continuously move until they hit something )
[ MoveUp ] -> [up MoveUp ] again
[ MoveDown ] -> [down MoveDown ] again
[ MoveLeft ] -> [left MoveLeft ] again
[ MoveRight ] -> [right MoveRight ] again
( Players can't push against a moving block in that block's travel direction)
down [down player | MoveUp] -> cancel
up [up player | MoveDown] -> cancel
left [left player | MoveRight] -> cancel
right [right player | MoveLeft] -> cancel
( Players can push blocks )
[> Player | MovableBlock ] -> [ Player | > MovableBlock ] sfx1
( Secondary explosions dissipate )
[ SecondaryExplosion ] -> []
( If an explosion overlaps a coin at the end of a turn, that coin is destroyed.
We special case coin destruction to produce DestroyedCoins,
so that we can prevent a win condition if any coins are destroyed. )
late [ Coin Damage ] -> [ DestroyedCoin Damage ]
( Bombs explode on the next turn when affected by an explosion at the
end of this turn.
This is done by turning a bomb into a BombPendingDetonation
at the end of this turn, and then on the next turn, that BombPendingDetonation
automatically turns into an Explosion.)
late [ Bomb Damage ] -> [ BombPendingDetonation ] again
[BombPendingDetonation] -> [Explosion]
( If, at the end of a turn, an explosion overlaps an object
that can be destroyed, that object is destroyed )
late [ AnyDestroyable Damage ] -> [ Damage ]
( Explosions create secondary explosions next to them )
[ | Explosion ] -> [ SecondaryExplosion | Explosion ] again
( At the end of a turn, explosions turn into secondary explosions
if there's a secondary explosion next to them )
late [ SecondaryExplosion | Explosion ] -> [SecondaryExplosion | SecondaryExplosion ] again
( Anything that pushes against a bomb causes it to detonate )
[ > AnyMovable | Bomb ] -> [ AnyMovable | Explosion ] again
( Anythinqg entering an Absorber is destroyed )
[ AnyMovable Absorber ] -> [ Absorber ]
==============
WINCONDITIONS
==============
No Coin
Some Player On Exit
No DestroyedCoin
=======
LEVELS
=======
( Intro to moving )
#####
#e#p#
#.#.#
#*.*#
#####
( Intro to pushables )
######
#..#.#
#.b*.#
#..#.#
#p.#e#
######
( Intro to bombs )
...###
...#*.
.b.x.*
...b*.
p..#.e
...###
( Intro to movables )
#.*xb..
....#.e
.p#.###
..u*###
#...###
( Chainable bombs )
##.*.p.**
.......**
rb...x.##
.....xxx.
##.*...#e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment