Skip to content

Instantly share code, notes, and snippets.

Created October 17, 2013 22:34
Show Gist options
  • Save anonymous/7033522 to your computer and use it in GitHub Desktop.
Save anonymous/7033522 to your computer and use it in GitHub Desktop.
title
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title 8.68-HACK
author Alan Hazelden [with apologies to Michael Brough]
run_rules_on_level_start
(verbose_logging)
noaction
background_color #202020
========
OBJECTS
========
Background
BLACK
Target
BLACK YELLOW
01010
10101
01010
10101
01010
Wall
GREEN BLACK
00000
01110
01110
01110
00000
Player3
YELLOW GREEN BLACK
.000.
02220
02120
02220
.000.
Player2
YELLOW YELLOW
.000.
0...0
0.1.0
0...0
.000.
Player1
YELLOW RED
.000.
0...0
0.1.0
0...0
.000.
Virus2
PURPLE BLACK
0...0
00000
01110
01010
.0.0.
Virus1
PURPLE BLACK
0...0
00100
01110
01010
.0.0.
Daemon3
RED BLACK
0...0
.000.
01110
01110
00000
Daemon2
RED BLACK
0....
.000.
01110
01110
00000
Daemon1
RED BLACK
0....
.010.
01110
01110
00000
Cryptog2Visible
BLUE BLACK
.000.
01110
01110
01110
.000.
Cryptog1Visible
BLUE BLACK
.001.
01110
11110
01110
.000.
Cryptog2Invisible
BLUE BLACK
.....
.....
.....
.....
.....
Cryptog1Invisible
BLUE BLACK
.....
.....
.....
.....
.....
Glitch2
PINK BLACK
00...
010..
0110.
01110
00000
Glitch1
PINK BLACK
00...
010..
0110.
11110
00100
Marker
WHITE
Corner
WHITE
Moved
WHITE
Spawn
PURPLE PINK
.....
.111.
.101.
.111.
.....
Damage
LIGHTGREEN
.0..0
...0.
0....
..0..
...0.
AttackH
LIGHTGREEN
.....
.0...
000.0
...0.
.....
AttackV
LIGHTGREEN
..0..
.0...
.00..
...0.
..0..
SmellL
WHITE
.....
.0...
00...
.0...
.....
SmellR
WHITE
.....
...0.
...00
...0.
.....
SmellU
WHITE
..0..
.000.
.....
.....
.....
SmellD
WHITE
.....
.....
.....
.000.
..0..
GSmellL
WHITE
.....
.0...
00...
.0...
.....
GSmellR
WHITE
.....
...0.
...00
...0.
.....
GSmellU
WHITE
..0..
.000.
.....
.....
.....
GSmellD
WHITE
.....
.....
.....
.000.
..0..
=======
LEGEND
=======
Rand = Marker
LOS = Marker
Flood = Marker
X = Corner
? = Rand
MaybeWall = background or wall
MaybeSpawn = background or spawn
Player = Player3 or Player2 or Player1
Virus = Virus2 or Virus1
Daemon = Daemon3 or Daemon2 or Daemon1
Cryptog2 = Cryptog2Visible or Cryptog2Invisible
Cryptog1 = Cryptog1Visible or Cryptog1Invisible
Cryptog = Cryptog2 or Cryptog1
Glitch = Glitch2 or Glitch1
SolidEnemy = Virus or Daemon or Cryptog
Enemy = SolidEnemy or Glitch
EnemyOrSpawn = Enemy or Spawn
EnemyChoice = Virus2 or Daemon3 or Cryptog2Visible or Glitch2
RangedAttack = AttackH or AttackV
Smell = SmellL or SmellR or SmellU or SmellD
GSmell = GSmellL or GSmellR or GSmellU or GSmellD
Solid = Virus or Daemon or Cryptog or Spawn or Wall or Player
P = Player3
. = Background
W = Virus2 and Moved
D = Daemon3 and Moved
C = Cryptog2Visible and Moved
G = Glitch2 and Moved
S = Spawn
* = Target
=======
SOUNDS
=======
sfx0 51664907
sfx1 41190904 (attack enemies)
sfx2 68875104 (player hurt)
sfx9 52667702 (spawn)
endgame 51898702
(sfx8 37534102)
================
COLLISIONLAYERS
================
Marker, Moved, Smell, GSmell
Background
Target, Corner
Player, Wall, SolidEnemy, Spawn
Glitch
Damage, RangedAttack
======
RULES
======
(clean up from last frame)
[ RangedAttack ] -> []
[ Virus1 Damage ] -> []
[ Daemon1 Damage ] -> []
[ Cryptog1 Damage ] -> []
[ Glitch1 Damage ] -> []
[ Spawn Damage ] -> []
(init map)
random [ Corner ] -> [ Player3 Target ]
[ Player Target | | | | | ] -> [ Player Flood | | | | | Corner ]
[ Corner | | | | | no Player ] -> [ Corner | | | | | Corner ]
[ Corner ] [ no Corner no Enemy no Spawn no Player ] -> [ Corner ] [ Rand ]
[ Corner ] [ Glitch ] -> [ Corner ] [ Glitch no Wall ]
[ Player Target ] -> [ Player Flood ]
random [ Corner ] -> [ Target ]
[ Corner ] -> []
random [ Rand no Solid no Glitch ] -> [ Spawn ]
[ Rand no Player ] -> [ random MaybeWall ]
[ Flood | no Wall ] -> [ Flood | Flood ]
startloop
random [ Flood | Wall | no Wall no Flood ] -> [ Flood | Flood | Flood ]
[ Flood | no Wall no Flood ] -> [ Flood | Flood ]
endloop
startloop
random [ Flood ] [ no Wall no Flood | Wall ] -> [ Flood ] [ | ]
[ Flood | no Wall no Flood ] -> [ Flood | Flood ]
endloop
[ Flood no Player ] -> []
[ Player Flood ] [ Enemy ] -> [ Player Flood ] [ Enemy Moved ]
[ Flood ] -> []
(enemies next to player will always attack)
[ Enemy no Moved | Player ] -> [ > Enemy | Player ]
(smell: normal enemies)
left [ Player | no Wall no Moved ] -> [ Player | SmellR ]
right [ Player | no Wall no Moved ] -> [ Player | SmellL ]
up [ Player | no Wall no Moved ] -> [ Player | SmellD ]
down [ Player | no Wall no Moved ] -> [ Player | SmellU ]
left [ Smell | no Smell no Wall no Moved no Player ] -> [ Smell | SmellR ]
+ right [ Smell | no Smell no Wall no Moved no Player ] -> [ Smell | SmellL ]
+ up [ Smell | no Smell no Wall no Moved no Player ] -> [ Smell | SmellD ]
+ down [ Smell | no Smell no Wall no Moved no Player ] -> [ Smell | SmellU ]
(enemy movement: normal enemies)
startloop
random [ stationary SolidEnemy Smell no Damage no Moved ] -> [ action SolidEnemy Smell ]
left [ action SolidEnemy SmellL | no Solid no Glitch ] -> [ SmellL | SolidEnemy Moved ]
right [ action SolidEnemy SmellR | no Solid no Glitch ] -> [ SmellR | SolidEnemy Moved ]
up [ action SolidEnemy SmellU | no Solid no Glitch ] -> [ SmellU | SolidEnemy Moved ]
down [ action SolidEnemy SmellD | no Solid no Glitch ] -> [ SmellD | SolidEnemy Moved ]
[ action SolidEnemy ] -> [ randomDir SolidEnemy ]
endloop
[ Smell ] -> []
(smell: glitches)
left [ Player | no Moved ] -> [ Player | GSmellR ]
right [ Player | no Moved ] -> [ Player | GSmellL ]
up [ Player | no Moved ] -> [ Player | GSmellD ]
down [ Player | no Moved ] -> [ Player | GSmellU ]
left [ GSmell | no GSmell no Moved no Player ] -> [ GSmell | GSmellR ]
+ right [ GSmell | no GSmell no Moved no Player ] -> [ GSmell | GSmellL ]
+ up [ GSmell | no GSmell no Moved no Player ] -> [ GSmell | GSmellD ]
+ down [ GSmell | no GSmell no Moved no Player ] -> [ GSmell | GSmellU ]
(enemy movement: glitches)
startloop
random [ stationary Glitch GSmell no Damage no Moved ] -> [ action Glitch GSmell ]
left [ action Glitch GSmellL | no EnemyOrSpawn ] -> [ GSmellL | Glitch Moved ]
right [ action Glitch GSmellR | no EnemyOrSpawn ] -> [ GSmellR | Glitch Moved ]
up [ action Glitch GSmellU | no EnemyOrSpawn ] -> [ GSmellU | Glitch Moved ]
down [ action Glitch GSmellD | no EnemyOrSpawn ] -> [ GSmellD | Glitch Moved ]
[ action Glitch ] -> [ randomDir Glitch ]
endloop
[ GSmell ] -> []
(extra movement: viruses)
[ Player Moved ] [ Virus Moved ] -> [ Player Moved ] [ Virus ] again
(damage enemies)
[ Virus2 Damage ] -> [ Virus1 Moved ]
[ Daemon3 Damage ] -> [ Daemon2 Moved ]
[ Daemon2 Damage ] -> [ Daemon1 Moved ]
[ Cryptog2 Damage ] -> [ Cryptog1Visible Moved ]
[ Glitch2 Damage ] -> [ Glitch1 Moved ]
(spawn enemies)
[ Player Moved ] [ Spawn ] -> [ Player Moved ] [ random EnemyChoice Moved ]
(maybe create new spawn points)
random [ Player Moved ] [ no Solid no Glitch ] -> [ Player Moved ] [ random MaybeSpawn ]
[ Player Moved ] [ Spawn ] -> [ Player Moved ] [ random MaybeSpawn ]
[ Player Moved ] [ Spawn ] -> sfx9
[ Player Moved ] -> [ Player ]
(cryptog invisibility)
late [ Cryptog2 ] -> [ Cryptog2Invisible ]
late [ Cryptog1 ] -> [ Cryptog1Invisible ]
late [ Player | ... | Cryptog2 ] -> [ Player | ... | Cryptog2Visible ]
late [ Player | ... | Cryptog1 ] -> [ Player | ... | Cryptog1Visible ]
(enemy attacking)
[ > Enemy | Player ] -> [ Enemy | Player ]
[ Player3 Damage ] -> [ Player2 ] again sfx2
[ Player2 Damage ] -> [ Player1 ] again sfx2
[ Player1 Damage ] -> win
[ Enemy no Moved | Player no Damage ] -> [ Enemy Moved | Player Damage ] again
[ > Enemy no Moved | Solid no Player ] -> [ Enemy Moved | Solid ]
[ > Enemy no Moved | Glitch ] -> [ Enemy Moved | Glitch ]
[ > Enemy no Moved | no Solid no Glitch ] -> [ | Enemy Moved ]
(player movement)
[ moving Player ] [ Moved ] -> [ moving Player ] []
[ > Player | no Solid no Glitch ] -> [ > Player | LOS ]
[ > Player | ... | LOS | no Solid no Glitch ] -> [ > Player | ... | LOS | LOS ]
[ > Player | EnemyOrSpawn ] -> [ Player Moved | EnemyOrSpawn Damage ] again sfx1
[ > Player | ... | LOS | EnemyOrSpawn ] -> [ Player Moved | ... | LOS | EnemyOrSpawn Damage ] again sfx1
horizontal [ Player Moved | ... | LOS ] -> [ Player Moved | ... | AttackH ]
vertical [ Player Moved | ... | LOS ] -> [ Player Moved | ... | AttackV ]
[ LOS ] -> []
[ > Player | no Wall ] -> [ | Player Moved ] again sfx0
[ > Player | wall ] -> cancel
[ Player2 Target ] -> [ Player3 Target ]
[ Player1 Target ] -> [ Player2 Target ]
==============
WINCONDITIONS
==============
=======
LEVELS
=======
(*.....
......
......
.....G
.P..SG
...GGG)
X????X
??????
??????
??????
??????
X????X
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment