Created
October 5, 2021 04:00
-
-
Save pancelor/8ebbeeea0038355115794ec91246fde6 to your computer and use it in GitHub Desktop.
VelociCorp Warehouses (PuzzleScript Script)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Play this game by pasting the script in http://www.puzzlescript.net/editor.html |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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