Skip to content

Instantly share code, notes, and snippets.

@jseakle
Created December 27, 2020 02:36
Show Gist options
  • Save jseakle/08b9ca38596c7c928e65f6c2578fc0e1 to your computer and use it in GitHub Desktop.
Save jseakle/08b9ca38596c7c928e65f6c2578fc0e1 to your computer and use it in GitHub Desktop.
Culprit (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Culprit
author Jake Eakle
color_palette proteus_mellow
background_color Black
noaction
key_repeat_interval .5
noundo
norestart
again_interval 1.2
(same room, at first spill overwhelming, can't clean. then can clean, then smaller, then none, then all???)
========
OBJECTS
========
Wall
gray blue
00011
01100
00000
00110
00000
Wall2
gray blue
00000
01100
00000
00011
11000
Player
#80B #20C #60C #A03
.11..
.002.
22301
..00.
..1.1
Jar
#A90 #EDE #DA0
.....
20002
.212.
21112
22222
SpillJar
#A90 #000 #DA0
.....
20002
.212.
21112
22222
Background
#000000 #0C0C0F #121808 #010201
00000
01010
00000
00000
00100
Spill11
#C0C0C0
..0..
0..0.
.0...
....0
.0.0.
Spill1a1
#C0C0C0
..0..
0..0.
.0...
....0
.0.0.
Spill21
#C0C0C0
....0
.0...
...0.
..0.0
0....
Spill2a1
#C0C0C0
....0
.0...
...0.
..0.0
0....
Spill31
#C0C0C0
.....
0.0..
.....
.0..0
0..0.
Spill3a1
#C0C0C0
.....
0.0..
.....
.0..0
0..0.
(lv2)
Spill12
#C0C0C0
..0..
0..0.
.0...
....0
.0.0.
Spill1a2
#C0C0C0
..0..
0..0.
.0...
....0
.0.0.
Spill22
#C0C0C0
....0
.0...
...0.
..0.0
0....
Spill2a2
#C0C0C0
....0
.0...
...0.
..0.0
0....
Spill32
#C0C0C0
.....
0.0..
.0...
....0
0..0.
Spill3a2
#C0C0C0
.....
0.0..
.0...
....0
0..0.
Jar2
#A90 #EDE #DA0
.....
20002
.212.
21112
22222
SpillJar2
#A90 #000 #DA0
.....
20002
.212.
21112
22222
(lv3)
Spill13
#C0C0C0
..0..
0..0.
.0...
....0
.0.0.
Spill1a3
#C0C0C0
..0..
0..0.
.0...
....0
.0.0.
Spill23
#C0C0C0
....0
.0...
...0.
..0.0
0....
Spill2a3
#C0C0C0
....0
.0...
...0.
..0.0
0....
Spill33
#C0C0C0
.....
0.0..
.....
.0..0
0..0.
Spill3a3
#C0C0C0
.....
0.0..
.....
.0..0
0..0.
Jar3
#A90 #EDE #DA0
.....
20002
.212.
21112
22222
SpillJar3
#A90 #000 #DA0
.....
20002
.212.
21112
22222
(lv4)
Spill14
#C0C0C0
..0..
0..0.
.0...
....0
.0.0.
Spill1a4
#C0C0C0
..0..
0..0.
.0...
....0
.0.0.
Spill24
#C0C0C0
....0
.0...
...0.
..0.0
0....
Spill2a4
#C0C0C0
....0
.0...
...0.
..0.0
0....
Spill34
#C0C0C0
.....
0.0..
.....
.0..0
0..0.
Spill3a4
#C0C0C0
.....
0.0..
.....
.0..0
0..0.
Jar4
#A90 #EDE #DA0
.....
20002
.212.
21112
22222
Jar5
#A90 #EDE #DA0
.....
20002
.212.
21112
22222
SpillJar4
#A90 #000 #DA0
.....
20002
.212.
21112
22222
Jar6
#A90 #EDE #DA0
.....
20002
.212.
21112
22222
SpillJar6
#A90 #000 #DA0
.....
20002
.212.
21112
22222
SpillJar7
#A90 #000 #DA0
.....
20002
.212.
21112
22222
Exit
White
.....
.....
.....
.....
.....
Toggle
White Green
.....
.....
.....
.....
.....
Toggle2
White Green
.....
.....
.....
.....
.....
Toggle3
White Green
.....
.....
.....
.....
.....
3Toggle
White Green
.....
.....
.....
.....
.....
3Toggle2
White Green
.....
.....
.....
.....
.....
3Toggle3
White Green
.....
.....
.....
.....
.....
3Toggle4
White Green
.....
.....
.....
.....
.....
Empty
White
.....
.....
.....
.....
.....
Empty4
White
.....
.....
.....
.....
.....
NoMess
White
.....
.....
.....
.....
.....
=======
LEGEND
=======
Spill1 = Spill11 or Spill21 or Spill31
Spill2 = Spill12 or Spill22 or Spill32
Spill3 = Spill13 or Spill23 or Spill33
Spill4 = Spill14 or Spill24 or Spill34
others1 = SPILL1A1 or SPILL2A1 or SPILL3A1
others2 = SPILL1A2 or SPILL2A2 or SPILL3A2
others3 = SPILL1A3 or SPILL2A3 or SPILL3A3
others4 = SPILL1A4 or SPILL2A4 or SPILL3A4
Walls = Wall or Wall2
Jars = Jar or Jar or Jar2 or Jar3 or Jar4 or Jar5 or Jar6
SpillJars = SpillJar or SpillJar2 or SpillJar3 or SpillJar4 or SpillJar6 or SpillJar7
(Character equivalences for level creation.)
@ = Player
. = Background
# = Wall
3 = Wall2
G = Wall
* = Jar
& = Jar2
% = Jar3
$ = Jar4
` = Jar5
p = Jar6
e = Empty4
! = Exit
t = Toggle2
q = 3Toggle2
m = Player and Empty4
=======
SOUNDS
=======
Sfx1 73155703 (Web creation sound.)
Sfx2 56169902 (Web destruction sound.)
Sfx3 11025308 (Door open sound. I love it, sorry.)
Sfx4 85050702 (Death sound.)
sfx5 23117489 (Gem zapping Ant)
================
COLLISIONLAYERS
================
Background (Background.)
Exit Toggle Toggle2 Toggle3 3Toggle 3Toggle2 3Toggle3 3Toggle4 NoMess
Spill2 others2 Spill3 others3 Spill4 others4 Empty Empty4
Wall Wall2 Player Jar Spill1 others1 Jars SpillJars (Foreground: yourself, and other things you cannot step on.)
======
RULES
======
[Toggle3] -> [Toggle]
[Toggle2] -> [Toggle3]
late [Toggle] -> [Toggle2]
[3Toggle3] -> [3Toggle4]
[3Toggle2] -> [3Toggle3]
[3Toggle] -> [3Toggle2]
[3Toggle4] -> [3Toggle]
[> Player | Exit] [Jars] -> message I'm very hungry...
(lv1)
[> Player | | Jar] -> [|Player | SpillJar]
[> Player | Jar] -> [Player | SpillJar]
late [Player | SpillJar |] -> [Player | SpillJar | random Spill1]
[Spill11 | No Spill1 ] -> [Spill1a1 |]
[Spill1a1 | No Spill1 ] -> [Spill11 | random Spill1]
[Spill21 | No Spill1 ] -> [Spill2a1 |]
Left Down [Spill2a1 | No Spill1 ] -> [Spill21 | random Spill1]
[Spill2a1 | No Spill1 ] -> [Spill21 | random Spill1]
[Spill31 | No Spill1 ] -> [Spill3a1 |]
Right [Spill3a1 | No Spill1 ] -> [Spill31 | random Spill1]
[Spill3a1 | No Spill1 ] -> [Spill31 | random Spill1]
[> Player | Spill1] -> [| random Spill1]
[> Player | others1] -> [| random Spill1]
(lv2)
[Toggle] [Spill12 | No Spill12 No Walls ] -> [Toggle] [Spill1a2 |]
[Spill1a2 | No Spill2 No Walls ] -> [Spill12 | random Spill2]
[Toggle] [Spill22 | No Spill2 No Walls ] -> [Toggle] [Spill2a2 |]
Left Down [Spill2a2 | No Spill2 No Walls ] -> [Spill22 | random Spill2]
[Spill2a2 | No Spill2 No Walls ] -> [Spill22 | random Spill2]
[Toggle] [Spill32 | No Spill2 No Walls ] -> [Toggle] [Spill3a2 |]
Right [Spill3a2 | No Spill2 No Walls ] -> [Spill32 | random Spill2]
[Spill3a2 | No Spill2 No Walls ] -> [Spill32 | random Spill2]
late [SpillJar2] [Player Exit] -> win
[> Player | | Jar2|] -> [|Player | SpillJar2 | random Spill2]
[> Player | Jar2|] -> [Player | SpillJar2 | random Spill2]
(lv4)
[Toggle] [Spill13 | No Spill13 No Walls ] -> [Toggle] [Spill1a3 |]
[Spill1a3 | No Spill3 No Walls ] -> [Spill13 | random Spill3]
[Toggle] [Spill23 | No Spill3 No Walls ] -> [Toggle] [Spill2a3 |]
Left Down [Spill2a3 | No Spill3 No Walls ] -> [Spill23 | random Spill3]
[Spill2a3 | No Spill3 No Walls ] -> [Spill23 | random Spill3]
[Toggle] [Spill33 | No Spill3 No Walls ] -> [Toggle] [Spill3a3 |]
Right [Spill3a3 | No Spill3 No Walls ] -> [Spill33 | random Spill3]
[Spill3a3 | No Spill3 No Walls ] -> [Spill33 | random Spill3]
late [SpillJar3] [Player Exit] -> win
[> Player | Spill3] -> [Empty|Player]
[> Player | others3] -> [Empty|Player]
[> Player | | Jar3|] -> [|Player | SpillJar3 | random Spill3]
[> Player | Jar3|] -> [Player | SpillJar3 | random Spill3]
(lv5)
[Wall2] -> [Wall2 Nomess]
[3Toggle] [Spill14 | No Spill14 No Walls No Empty4 No Jars No SpillJars] -> [3Toggle] [Spill1a4 |]
[Spill1a4 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [Spill14 | random Spill4]
[3Toggle] [Spill24 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [3Toggle] [Spill2a4 |]
Left Down [Spill2a4 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [Spill24 | random Spill4]
[Spill2a4 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [Spill24 | random Spill4]
[3Toggle] [Spill34 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [3Toggle] [Spill3a4 |]
Right [Spill3a4 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [Spill34 | random Spill4]
[Spill3a4 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [Spill34 | random Spill4]
[> Player | Spill4] -> [Empty4|Player Empty4]
[> Player | others4] -> [Empty4|Player Empty4]
[> Player | | Jar4||] -> [|Player | SpillJar4 | random Spill4 | random Spill4]
[> Player | Jar4||] -> [Player | SpillJar4 | random Spill4 | random Spill4]
[Spill4] [Wall2 NoMess] -> [Spill4] [Wall2]
late [SpillJar4] [NoMess] [Player Exit] -> win
(lv6)
[Wall2] -> [Wall2 Nomess]
[3Toggle] [Spill14 | No Spill14 No Walls No Empty4 No Jars No SpillJars] -> [3Toggle] [Spill1a4 |]
[Spill1a4 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [Spill14 | random Spill4]
[3Toggle] [Spill24 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [3Toggle] [Spill2a4 |]
Left Down [Spill2a4 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [Spill24 | random Spill4]
[Spill2a4 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [Spill24 | random Spill4]
[3Toggle] [Spill34 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [3Toggle] [Spill3a4 |]
Right [Spill3a4 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [Spill34 | random Spill4]
[Spill3a4 | No Spill4 No Walls No Empty4 No Jars No SpillJars ] -> [Spill34 | random Spill4]
[> Player | Spill4] -> [Empty4|Player Empty4]
[> Player | others4] -> [Empty4|Player Empty4]
[> Player | | Jar5|] -> [|Player | SpillJar4 | Spill24]
[> Player | Jar5|] -> [Player | SpillJar4 | Spill24 ]
[Spill4] [Wall2 NoMess] -> [Spill4] [Wall2]
late [SpillJar4] [NoMess] [Player Exit] -> win
(lv7)
[SpillJar6] -> win
[> Player | | Jar6] -> [|Player | SpillJar6 ] again
[> Player | Jar6] -> [Player | SpillJar6 ] again
(Player creates or destroys webs by pressing Action.)
([Action Player no Web] -> [Player Web] Sfx1
[Action Player Web] -> [Player] Sfx2
(Player pushes pushable objects.)
[> Player | Pushable] -> [> Player | > Pushable]
(Gems turn corners counterclockwise. Implemented in a simple gross way because the robust way is horrible)
[> Player | Gem | Blocking] -> [> Player | ^ Gem | Blocking]
[> Player | Gem | Pushable | Blocking] -> [> Player | ^ Gem | Pushable | Blocking]
[> Player | Gem | Pushable | Pushable | Blocking] -> [> Player | ^ Gem | Pushable | Pushable | Blocking]
(Code for propagating movement between webs and pushed objects. The + signs indicate that these rules are "grouped": they'll all keep happening, even out of order, until none of them can happen anymore. That means you can transfer movement from one pebble to another pebble, then from the second pebble to a web, then from that web to some adjacent web, then from THAT web to another pebble, etc.)
[> Sticky Web] -> [> Sticky > Web]
+[> Web Sticky] -> [> Web > Sticky]
+[> Pushable|Pushable] -> [> Pushable|> Pushable]
+[Moving Web|Web] -> [Moving Web|Moving Web]
(If a moving object hits an immovable object, cancel all movement.)
[> Blockable|Blocking] -> Cancel
(At end of turn, should we open doors? Put "Temp" on each door, then remove "Temp" if some switch is uncovered, then delete all switches and doors if Temp still remains.)
late[Door] -> [Temp Door]
late[Switch no Weight][Temp Door] -> [Switch][Door]
late[Temp Door][Switch] -> [Temp Door][]
late[Temp Door] -> [] Sfx3
(At end of turn, kill player if adjacent to ant.)
late[Player|Ant] -> [DeadBug|Ant] Sfx4
(Gem power!)
late[Gem | | Ant] -> [Gem | |] sfx5)
==============
WINCONDITIONS
==============
no Walls
=======
LEVELS
=======
Message I should probably find something to eat.
######.##3###
#3#.......###
###.......#3#
#...........3
#.....*.....#
#...........#
3...........#
#3#.......#3#
###.......##3
##3###@######
Message That was last week. It should be okay to get some food.
######!##3###
#3#.......###
###.......#3#
#...........3
#.....&.....#
#...........#
3t..........#
#3#.......#3#
###.......##3
##3###@######
Message "Better." But what difference did it make?
######!##3###
#3#.......###
###.......#3#
#...........3
#.....*.....#
#...........#
3...........#
#3#.......#3#
###.......##3
##3###@######
Message None. Why not just let go?
message . . .
Message Because I am afraid.
######!##3###
#3#.......###
###.......#3#
#...........3
#.....%.....#
#...........#
3t..........#
#3#.......#3#
###.......##3
##3###@######
Message It's not enough. How could it ever be enough?
######!##3###
#3#.......###
###.......#3#
#...........3
#.....$.....#
#...........#
3q..........#
#3#.......#3#
###.......##3
##3###@######
Message If I work hard enough I will be allowed to eat.
######!##3###
#3#.e...e.###
###eee.eee#3#
#.e.e...e.e.3
#e....`....e#
#.e.e...e.e.#
3q.eee.eee..#
#3#.e...e.#3#
###..e.e..##3
##3###m######
Message Sometimes, these accidents are strangely beautiful.
######!##3###
#3#.e...e.###
###eeeeeee#3#
#.e.ee.ee.e.3
#e..e.`.e..e#
#.e.ee.ee.e.#
3q.eeeeeee..#
#3#.e...e.#3#
###..e.e..##3
##3###m######
(Message It feels safe to be calm)
(Message Sometimes things happen)
(Message Each time is unique and I must not let them pile up and merge)
(Message What I bring in determines much of how i spend my time here)
Message Space enough to begin to tell a new story.
Message Witness. Artist. Comrade. Pawn. Recipient.
######!##3###
#3#.e...e.###
###eeeeeee#3#
#.e.ee.ee.e.3
#e..e.p.e..e#
#.e.ee.ee.e.#
3q.eeeeeee..#
#3#.e...e.#3#
###..e.e..##3
##3###m######
message Delicious
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment