puzzlescript
Version:
Play PuzzleScript games in your terminal!
403 lines (339 loc) • 8.17 kB
Plain Text
title Tunnel Rat
author James Noeckel
noundo
again_interval 0.07
youtube SG1uBb104Is
========
OBJECTS
========
Background
#4c352b #4e382f #533c30
01010
02211
20010
00012
12102
PlayerS
#a65200 red #6f3c0a
.0.0.
.000.
21012
20002
22022
PlayerU
#a65200 red #6f3c0a
.0.0.
.101.
20002
22022
.2.2.
inflow
yellow orange white
00000
00000
22222
11111
11111
exit
green
.0.0.
0.0.0
.0.0.
0.0.0
.0.0.
tempwall
blue
DirtM
#82642b #876b35 #927538
01010
02211
20010
00012
12102
DirtU
#82642b #876b35 #927538 #b19154
22222
33333
00000
01012
12102
Rock
#e0e0e0 #a4a4a4 #8a8a8a #7c7c7c
.000.
01112
11123
11223
.233.
enemy
white #ff7070 black #880000 red
01414
14343
14343
14443
43232
h_grav
black
.....
.....
..0..
.....
.....
h_step
red
.....
.....
..0..
.....
.....
(h_dead
black
)
pickupoverlay
pink
enemyoverlay
pink
destroy
red
0...0
.0.0.
..0..
.0.0.
0...0
scrolling
blue
.....
.....
..0..
.....
.....
Shoes
#ff11f7 #9711ff #641d9a
...0.
...10
...01
.1111
.2222
Eraser
#00ff12 #99ffa0 #008509
..10.
.1000
10000
.2000
..20.
Unraser
#00ff12 #99ffa0 #008509
.01..
0001.
00001
0002.
.02..
Shoesworn
purple pink
.....
.....
.....
.....
10.01
=======
LEGEND
=======
# = Dirtm
. = Background
P = playerS
o = Rock
s = shoes
x = enemy
@ = dirtm and destroy
$ = dirtm and inflow
e = exit and Dirtm
% = unraser
dirt = dirtm or dirtu
Player = PlayerS or PlayerU
Helpers = h_grav or scrolling or h_step
Pickups = shoes or Eraser or Unraser
Heldpickups = shoesworn
Solid = Dirt or Player or Rock or Pickups or enemy
Heavy = Rock or Pickups or enemy
overlays = pickupoverlay or enemyoverlay
Everything = Solid or tempwall or overlays
=======
SOUNDS
=======
SFX1 36137902
SFX2 78903905
SFX3 14420703
SFX4 25525902
SFX5 49701704
SFX6 98046907
SFX7 16284302
SFX8 96668708
SFX9 86449100
================
COLLISIONLAYERS
================
helpers
Background
tempwall, solid
Heldpickups
overlays
destroy, inflow, exit
======
RULES
======
up [ > PlayerU ] -> cancel
down [ > PlayerU ] -> [ PlayerS ]
(digging/jumping up)
up [ > PlayerS | no Solid | no Solid no inflow ] -> [ | | PlayerU scrolling ] SFX2
up [ > PlayerS | no Solid | Dirt no inflow ] -> [ | | PlayerU scrolling ] SFX7
up [ > PlayerS | no Solid no inflow ] -> [ | PlayerU scrolling ] SFX2
up [ > PlayerS | Dirt no inflow ] -> [ | PlayerU scrolling ] SFX7
(scrolling and terraingen)
[ scrolling ] [ Everything destroy ] -> [ scrolling ] [ destroy ]
[ scrolling ] [ inflow no Player ] -> [ scrolling ] [ inflow tempwall ]
random [ scrolling ] [ inflow ] -> [ scrolling ] [ inflow random overlays ]
random [ scrolling ] [ inflow ] -> [ scrolling ] [ inflow random overlays ]
random [ scrolling ] [ inflow ] -> [ scrolling ] [ inflow random overlays ]
random [ scrolling ] [ inflow ] -> [ scrolling ] [ inflow random overlays ]
random [ scrolling ] [ inflow ] -> [ scrolling ] [ inflow enemyoverlay ]
random [ scrolling ] [ inflow ] -> [ scrolling ] [ inflow enemyoverlay ]
startloop
random [ tempwall ] -> [ dirtm ]
random [ tempwall ] -> [ dirtm ]
random [ tempwall ] -> [ dirtm ]
random [ tempwall ] -> [ dirtm ]
random [ tempwall ] -> [ dirtm ]
random [ tempwall ] -> [ dirtm ]
random [ tempwall ] -> [ ]
random [ tempwall ] -> [ ]
random down [ tempwall | solid ] -> [ rock | Solid ]
random down [ tempwall | solid ] -> [ rock | Solid ]
endloop
[ pickupoverlay rock ] -> [ random pickups]
[ enemyoverlay rock ] -> [ enemy ]
random down [ Solid inflow | rock | rock ] -> [ rock inflow | rock | rock ]
[ no Solid | inflow Solid | no Solid ] -> [ | inflow | ]
[ no Solid | inflow Solid | inflow Solid | no Solid ] -> [ | inflow | inflow | ]
down [ scrolling ] [ Everything ] -> [ scrolling ] [ > Everything ]
(gravity)
down [ Heavy ] -> [ down Heavy ] again
(up [ > PlayerS | no Solid ] [ Everything destroy ] -> [ > PlayerS scrolling | ] [ destroy ]
up [ > PlayerS | Dirt ] [ Everything destroy ] -> [ > PlayerS scrolling | dirt ] [ destroy ]
down [ Everything ] [ Player scrolling ] -> [ > Everything ] [ PlayerU scrolling ]
)
(movement in general)
horizontal [ > PlayerU | Dirt ] -> [ | PlayerS ] SFX1
horizontal [ > PlayerU ] -> [ > PlayerS ]
[ action PlayerU ] -> [ PlayerS ]
[ > Player | Dirt ] -> [ | Player ] SFX1
(use pickup)
up [ action PlayerS shoesworn | Solid | no inflow no exit ] -> [ | Solid | PlayerS ] SFX4
up [ action PlayerS shoesworn | | Solid | no inflow no exit ] -> [ | | Solid | PlayerS ] SFX4
up [ action PlayerS shoesworn | | | | no inflow no exit ] -> [ | | | | PlayerU ] SFX4
(pushing)
Horizontal [ > Player | Heavy ] -> [ > Player | > Heavy ] SFX6
Horizontal [ > Heavy | Heavy ] -> [ > Heavy | > Heavy ]
Horizontal [ > Enemy | Dirt ] -> [ > Enemy | ] SFX1
Horizontal [ > Enemy | pickups | Solid ] -> [ > Enemy | | Solid ] SFX4
([Enemy h_dead no h_grav] -> message flattened to death)
(down [ Enemy h_dead | destroy ] -> [ Enemy | destroy ] message flattened to death)
([ > Enemy | Player ] -> [ | Enemy h_dead ] SFX5)
([ moving Enemy h_dead ] -> [ moving Enemy moving h_dead ])
[ moving Enemy h_grav ] -> [ moving Enemy moving h_grav ]
down [ > Enemy h_grav | Solid no Player no Enemy ] -> [ | Enemy ] SFX4
down [ > Enemy | Player ] -> [ > Enemy | ] SFX4
(pickup)
[ > Player | shoes ] -> [ | stationary Player shoesworn ] SFX3
[ > Player | Eraser ] [ Solid no Player no Pickups ] -> [ > Player | Eraser ] [ DirtM ]
startloop
random [ > Player | Unraser ] [ Solid no Player | no Solid ] -> [ > Player | Unraser ] [ Solid | Rock ]
random [ > Player | Unraser ] [ Solid no Player | no Solid ] -> [ > Player | Unraser ] [ Solid | Dirtm ]
random [ > Player | Unraser ] [ Solid no Player | no Solid ] -> [ > Player | Unraser ] [ Solid | Dirtm ]
random [ > Player | Unraser ] [ Solid no Player | no Solid ] -> [ > Player | Unraser ] [ Solid | Dirtm ]
endloop
[ > Player | Pickups ] -> [ | stationary Player ] SFX8
(steps)
up [ PlayerS | no Solid ] -> [ PlayerS | h_step ]
[ moving PlayerS ] [ h_step ] -> [ moving PlayerS ] [ moving h_step ]
(late steps)
late down [ h_step | Player ] -> [ | Player ]
late [h_grav] [h_step] -> [h_grav] []
late down [ h_step no Solid | no Player ] [ PlayerS ] -> [ PlayerS | ] [ ]
late down [ h_step Dirt | no Player ] [ PlayerS ] -> [ PlayerS | ] [ ] SFX1
(player gravity)
late down [ PlayerS | h_grav ] -> [ | PlayerS ]
late down [ PlayerS | no Solid ] -> [ PlayerS | h_grav ]
late [ Player no shoesworn] [ shoesworn ] -> [ Player shoesworn ] [ ]
(enemy gravity)
late down [ enemy | no Solid ] -> [ enemy h_grav | ]
late down [ enemy | Player ] -> [ enemy h_grav | ]
(cleanup)
late [scrolling] -> []
late [overlays] -> []
late [h_step] -> []
(beautify)
late up [ Dirtm | no Dirt ] -> [ DirtU | ]
late up [ DirtU | Dirt ] -> [ Dirtm | Dirt ]
(death)
[ Player destroy ] -> [ destroy ] SFX4
(life)
late [ Player exit ] [ exit no Player ] -> [ Player exit ] [ ] SFX9
==============
WINCONDITIONS
==============
all exit on player
=======
LEVELS
=======
message Survive. x to use held item.
$$$$$$$$$$$$$$$$$$$
eeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeee
###################
###################
###################
###################
###################
###################
###################
###################
###################
###################
###################
###################
###################
#########P#########
###################
###################
###################
###################
###################
###################
@@@@@@@@@@@@@@@@@@@
message Is that a light at the end of the tunnel?
$$$$$$$$$$$$$$$$$$$$$$$$$
eeeeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeeeeeee
o.......................o
o.......................o
o..x.x.x.x.xpx.x.x.x.x..o
o#.#.#.#.#.#x#.#.#.#.#.#o
o.#.#.#.#.#.#.#.#.#.#.#.o
o#.#.#.#.#.#.#.#.#.#.#.#o
o.#.#.#.#.#.#.#.#.#.#.#.o
o#.#.#.#.#.#.#.#.#.#.#.#o
o.#.#.#.#.#.#.#.#.#.#.#.o
o#.#.#.#.#.#.#.#.#.#.#.#o
o.......................o
o.......................o
o.......................o
o.......................o
o......#................o
o.....##..............#.o
o....###...%...#..#..##.o
###..############.#######
########.##.#############
####.#####..#############
########.....############
#########################
#########################
@@@@@@@@@@@@@@@@@@@@@@@@@