Skip to content

Instantly share code, notes, and snippets.

@pancelor
Created October 5, 2021 04:00
Show Gist options
  • Save pancelor/8ebbeeea0038355115794ec91246fde6 to your computer and use it in GitHub Desktop.
Save pancelor/8ebbeeea0038355115794ec91246fde6 to your computer and use it in GitHub Desktop.
VelociCorp Warehouses (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title VelociCorp Warehouses
author pancelor
homepage https://pancelor.com
noaction
( enable_level_select ) (this only works at https://pancelor.github.io/PuzzleScript/editor.html)
( verbose_logging )
run_rules_on_level_start
again_interval 0.1
========
OBJECTS
========
background (never seen)
#bb3
bg1
gray
bg2
#aeaeae
corner (never seen)
#bb3 black
00010
11111
01000
11111
00010
wall
darkgray black
00010
11111
01000
11111
00010
player
black orange white blue
.000.
.111.
22222
.333.
.3.3.
speech
white black
.000.
00000
01010
.000.
00...
target_F
red
.....
.0.0.
..0..
.0.0.
.....
target_I
lightblue
.....
.0.0.
..0..
.0.0.
.....
target_D
purple
.....
.0.0.
..0..
.0.0.
.....
target_M
darkgray
.....
.0.0.
..0..
.0.0.
.....
target_W
blue
.....
.0.0.
..0..
.0.0.
.....
deleter_F
red
.0.0.
.0.0.
.0.0.
.....
.0.0.
deleter_D
purple
.0.0.
.0.0.
.0.0.
.....
.0.0.
deleter_M
darkgray
.0.0.
.0.0.
.0.0.
.....
.0.0.
deleter_W
blue
.0.0.
.0.0.
.0.0.
.....
.0.0.
box_F
red
.....
.000.
.0.0.
.000.
.....
box_D
purple
.....
.000.
.000.
.000.
.....
box_M
darkgray
.....
.000.
.0.0.
.000.
.....
box_W
blue
.....
.000.
.0.0.
.000.
.....
mod_I
lightblue
00000
0...0
0...0
0...0
00000
mod_D
purple
.....
.....
..0..
.....
.....
mod_F
red
00000
0...0
0...0
0...0
00000
beltl
lightgray #f2d217
.....
00110
01100
00110
.....
beltr
lightgray #f2d217
.....
01100
00110
01100
.....
beltu
lightgray #f2d217
.000.
.010.
.111.
.101.
.000.
beltd
lightgray #f2d217
.000.
.101.
.111.
.010.
.000.
temp1
#9aa2f1
temp2
#9aa2f1
belt_turn
transparent
hack_W_no_I
transparent
movel
transparent
mover
transparent
moveu
transparent
moved
transparent
sfx_error
#8a4121
sfx_belt
transparent
sfx_blocked
transparent
sfx_ditto
transparent
sfx_douse
transparent
sfx_freeze
transparent
sfx_inflame
transparent
sfx_melt
transparent
sfx_unditto
transparent
sfx_delete
transparent
sfx_shove
transparent
pre_sfx_freeze
transparent
pre_sfx_melt
transparent
pre_sfx_inflame
transparent
killtut
transparent
tut1 │
transparent
tut2 ─
transparent
tut3 ┌
transparent
tut4 ┐
transparent
tut5 └
transparent
tut6 ┘
transparent
tut7 ├
transparent
tut8 ┤
transparent
tut9 ┬
transparent
tut10 ┴
transparent
=======
LEGEND
=======
.=background
#=wall
,=corner
@=player
1=box_F
(2=box_I)
3=box_D
4=box_M
5=box_W
~=target_F
!=target_I
$=target_D
%=target_M
&=target_W
a=beltl
d=beltr
w=beltu
s=beltd
z=deleter_F
x=deleter_D
c=deleter_M
b=deleter_W
□=box_W and mod_I
┼=box_M and mod_I
═=box_M and mod_F
box=box_F or box_W or box_D or box_M
mod=mod_I or mod_D or mod_F
belt=beltl or beltr or beltu or beltd
move=movel or mover or moveu or moved
target=target_F or target_I or target_W or target_D or target_M
deleter=deleter_F or deleter_D or deleter_M or deleter_W
temp=temp1 or temp2
sfx=sfx_error or sfx_belt or sfx_blocked or sfx_ditto or sfx_douse or sfx_freeze or sfx_inflame or sfx_melt or sfx_unditto or sfx_delete or sfx_shove
tut=tut1 or tut2 or tut3 or tut4 or tut5 or tut6 or tut7 or tut8 or tut9 or tut10
solid=player or box or wall
beltable=box
pushable=box
send_D=box_D
recv_D=box_F or box_W or box_M
send_I=mod_I
recv_I=box_W or box_D or box_M
send_F=box_F or mod_F
recv_F=box_M or mod_I
send_W=box_W
recv_W=box_W or mod_F
=======
SOUNDS
=======
sfx_shove create 36772507
sfx_error create 65378502
sfx_belt create 40520907
undo 42804507
sfx_blocked create 6770304
sfx_ditto create 18902505
sfx_douse create 3044304
sfx_freeze create 89694901
sfx_inflame create 63681302
sfx_melt create 25722508
sfx_unditto create 6401304
sfx_delete create 93511308
endlevel 40516500
================
COLLISIONLAYERS
================
background
corner
bg1,bg2
belt
target, deleter
speech
wall,tut,killtut
player
box
mod_D
mod_I
mod_F
temp
move
pre_sfx_melt
pre_sfx_freeze
pre_sfx_inflame
sfx
hack_W_no_I
belt_turn
======
RULES
======
[hack_W_no_I] -> []
(floor tiles)
[corner no wall] -> [corner wall belt_turn bg1]
[bg1|] ->[bg1|bg2]
+[bg2|] ->[bg2|bg1]
(push)
[> player | ] -> [> player | temp2] (mark future player)
[> player | pushable] -> [> player | > pushable sfx_shove]
(belts)
[action player] -> [player]
left [stationary beltable beltl][belt_turn] -> [> beltable beltl sfx_belt][belt_turn]
right [stationary beltable beltr][belt_turn] -> [> beltable beltr sfx_belt][belt_turn]
up [stationary beltable beltu][belt_turn] -> [> beltable beltu sfx_belt][belt_turn]
down [stationary beltable beltd][belt_turn] -> [> beltable beltd sfx_belt][belt_turn]
[> box | temp2] -> [box | temp2]
[temp2] -> []
( [box_F no mod_F] -> [box_F mod_F sfx_inflame] (fire) )
(tie boxes / mod movement together)
[moving box stationary mod] -> [moving box moving mod]
(water douses fire)
[> box_W | box_F] -> [ | sfx_douse]
[> box_W | mod_F] -> [ | sfx_douse]
[box_W | < box_F] -> [sfx_douse | ]
[box_W | < mod_F] -> [sfx_douse | ]
[mod_D no box] -> [box_D sfx_unditto] (unditto)
[mod no box] -> []
(tie boxes / mod movement together)
[> solid | stationary solid] -> [solid | solid]
+ [> solid | < solid] -> [solid | solid sfx_blocked]
[stationary box moving mod] -> [stationary box stationary mod]
[stationary player][corner no belt_turn] -> [player sfx_blocked][corner]
(deleters)
late [deleter_F box_F] -> [deleter_F sfx_delete]
late [deleter_D box_D] -> [deleter_D sfx_delete]
late [deleter_M box_M] -> [deleter_M sfx_delete]
late [deleter_W box_W] -> [deleter_W sfx_delete]
late [mod no box] -> []
(interactions)
late [send_F | recv_F no mod_F] -> [send_F | recv_F temp1 pre_sfx_inflame] (spread fire)
+ late [mod_I temp1] -> [pre_sfx_melt]
+ late [temp1] -> [mod_F]
late [send_I | recv_I no mod_I no mod_F] -> [send_I | recv_I mod_I pre_sfx_freeze] (freeze)
late [pre_sfx_inflame pre_sfx_melt] -> [pre_sfx_melt]
late [pre_sfx_freeze pre_sfx_melt] -> []
late [pre_sfx_freeze] -> [sfx_freeze]
late [pre_sfx_melt] -> [sfx_melt]
late [box_D no mod_D no mod_I | recv_D] -> [recv_D mod_D sfx_ditto | recv_D] (ditto (if not frozen))
(constants)
late [mod_D no box] -> [box_D sfx_unditto] (unditto)
(late [box_F no mod_F] -> [box_F mod_F sfx_inflame] (fire))
(asserts)
(
[box_D mod_D] -> [box_D mod_D sfx_error]
[box_F mod_F] -> [box_F mod_F sfx_error]
([mod_I mod_D] -> [mod_I mod_D sfx_error])
[mod_I mod_F] -> [mod_I mod_D sfx_error]
([mod_F mod_D] -> [mod_I mod_D sfx_error])
)
late [beltable belt][corner no belt_turn] -> [beltable belt][corner temp1]
late [corner belt_turn] -> [corner]
late [temp1] -> [belt_turn] again
late [sfx] -> []
(tutorial)
[tut]->[tut speech]
late [player tut1] -> [player killtut] message your first task: take the metal crate out of storage and bring it to the loading area. please hurry.
late [player tut2] -> [player killtut] message these boxes of pure fire are a marvel of technology (and perfectly safe)
late [player tut3] -> [player killtut] message ah, be sure to keep the VelociCorp products separated. (for, ah, organizational reasons)
late [player tut4] -> [player killtut] message please be advised: any workplace accidents due to unauthorized product mixing are not the responsibilty of VelociCorp, or any of its subsidiaries.
late [player tut5] -> [player killtut] message once again: please do your job safely and responsibly.
late [player tut6] -> [player killtut] message introducing our newest product line: water boxes!
late [player tut7] -> [player killtut] message what a week for VelociCorp! now producing ice boxes!
late [player tut8] -> [player killtut] message new product: copy boxes! they copy other boxes. back to work.
late [killtut][tut]->[killtut][]
late [killtut][speech]->[killtut][]
late [killtut]->[]
late [box_W no mod_I] -> [box_W hack_W_no_I]
==============
WINCONDITIONS
==============
all target_W on hack_W_no_I
all target_M on box_M
all target_F on send_F
all target_I on send_I
all target_D on send_D
=======
LEVELS
=======
message welcome to your first day at VelociCorp Warehouses!
message safety is our top priority.
,###########
#...#...####
#.......#..#
#.4.#...#.@#
#...#..%.│.#
############
message great work. more orders have come in; please fulfill them promptly.
,###########
#..#########
#......#...#
#..11.~─~@.#
#......#...#
############
,#########
#.....####
#.4..~.┌.#
#...#...@#
#.1..%...#
#.....####
##########
,#########
#..%.4..##
#..1.~...#
########.#
####...┐.#
####.@...#
##########
message the customer was satisfied with that last order... but please refrain from using these cost-saving techniques. our public relations department is too busy to smooth over any safety incidents.
,#########
####.....#
#...~..4.#
#@...#...#
#.└.~..1.#
####.....#
##########
message attention VelociCorp Warehouse workers: please sign the attached waiver before you begin today. also, we are improving efficiency by installing conveyor belts.
,#########
#####...##
#dddddd.##
#w..#...##
#w..#.&.##
#..5#...##
#.....@.##
#...######
##########
,########
#s..@┘###
#4....###
#.###.###
#..5.&..#
##.%.4..#
#########
,#########
#........#
#..□..!..#
#......@├#
#..4..!..#
#........#
##########
message please keep the fire boxes separated from the water boxes. additional details will be distributed during a mandatory training session later this week.
,##########
##...##...#
#.@..1.4..#
#..□..#.%.#
#....##...#
###########
,##########
###..######
#..□.#1...#
#..□....!@#
#..□.#1...#
###..######
###########
,###########
#.....s#...#
#.444#s#.@.#
#.....s1...#
###.~.s#####
###saaa..###
###ddddd.###
############
( good level for a post-jam version maybe - requires two blocks on conveyor at once
############
##....s#...#
##.44#s1.@.#
##....s#...#
###.~.s#####
###saaa#####
###ddddddd.#
######4#####
############
)
( original:
,###########
#...#s.....#
#.@.1s#444.#
#...#s.....#
#####s.~.###
#....ddds###
#..5aaaaa###
############
)
message remember, safety is our top priority.
,##########
##..#######
#.@......##
#...1.....#
#.□.~.!4&.#
#####.....#
###########
,#########
#....###!#
#.□...~#.#
#....4w1.#
#.□..##..#
#..@..#..#
#...#....#
##########
,##########
#...#s....#
#.@.1s#44.#
#...#s....#
#####s.~.##
##...ddds##
##.5aaaaa##
###########
( argh
##############
#....###..!###
#.□...~#..####
#....4w44....#
#.□..##54....#
#.....#..1.###
#.@.#5....####
#...#w....####
##############
)
,#########
#....s####
#.!..═####
#.┼.#....#
#...##.@.#
#.~..5.5.#
#...######
##########
( beatable but obnoxious
,##########
#....s#...#
#....═#.5.#
#.┼.#.!...#
#...##.@5.#
#.~..5.5..#
#...#######
###########
)
(
##########
#┤.5.....#
#.....~..#
#.3.@..4.#
#.....%..#
#..1.....#
##########
)
message thank you for being a valued member of the VelociCorp team.
(
############
#..........#
#..........#
#...@......#
#......%...#
#...4......#
#..........#
#..........#
############
############
#..........#
#.sa.□.1.4.#
#.sw.......#
#.sw.3.@.5.#
#.dw.......#
#..........#
#~.!.$.&.%.#
############
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment