Last active
December 29, 2022 19:45
-
-
Save pancelor/4ad596bf22158221977fbbf890f356ac to your computer and use it in GitHub Desktop.
like a hot knife through butter WIP
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 https://auroriax.github.io/PuzzleScript/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 like a hot knife through butter | |
author pancelor | |
homepage pancelor.com | |
background_color #ffec27 | |
text_color #754665 | |
( --------------------- ( | |
hello! how to edit: | |
- ctrl-click on any level to jump there instantly | |
- open the editor (E) | |
- place/remove some butter/bread/knives/walls/etc | |
- **place a single "R" object -- this will make the level combine the multi-blocks properly when you start playing after leaving the level editor** | |
- send me the text version of your level! | |
) --------------------- ) | |
run_rules_on_level_start | |
case_sensitive | |
level_select | |
continue_is_level_select | |
again_interval 0.05 | |
mouse_left m_down | |
mouse_drag m_drag | |
( mouse_up m_up ) | |
( verbose_logging ) | |
======== | |
objects | |
======== | |
butter | |
#ffec27 #ffffff | |
.000. | |
00110 | |
00110 | |
00000 | |
.000. | |
wall | |
#754665 #49333b | |
00010 | |
11111 | |
01000 | |
11111 | |
00010 | |
bread | |
#8b5f00 #ffccaa | |
.000. | |
00010 | |
00000 | |
01000 | |
.000. | |
background | |
#cccccc #9d9d9d | |
00010 | |
11111 | |
00010 | |
00010 | |
00010 | |
cratestill | |
green transparent | |
.000. | |
01110 | |
01.10 | |
01110 | |
.000. | |
crateup | |
green black | |
.000. | |
0.1.0 | |
01.10 | |
0...0 | |
.000. | |
cratedown | |
green black | |
.000. | |
0...0 | |
01.10 | |
0.1.0 | |
.000. | |
crateleft | |
green black | |
.000. | |
0.1.0 | |
01..0 | |
0.1.0 | |
.000. | |
crateright | |
green black | |
.000. | |
0.1.0 | |
0..10 | |
0.1.0 | |
.000. | |
knifeleft | |
#5f574f #000000 transparent | |
.222. | |
20002 | |
00001 | |
22222 | |
..... | |
kniferight | |
#5f574f #000000 transparent | |
..... | |
22222 | |
10000 | |
20002 | |
.222. | |
knifeup | |
#5f574f #000000 transparent | |
.202. | |
.2002 | |
.2002 | |
.2002 | |
.212. | |
knifedown | |
#5f574f #000000 transparent | |
.212. | |
2002. | |
2002. | |
2002. | |
.202. | |
heatleft1 copy:knifeleft | |
#ff004d transparent transparent | |
heatleft2 copy:knifeleft | |
transparent transparent #ff004d | |
heatright1 copy:kniferight | |
#ff004d transparent transparent | |
heatright2 copy:kniferight | |
transparent transparent #ff004d | |
heatup1 copy:knifeup | |
#ff004d transparent transparent | |
heatup2 copy:knifeup | |
transparent transparent #ff004d | |
heatdown1 copy:knifedown | |
#ff004d transparent transparent | |
heatdown2 copy:knifedown | |
transparent transparent #ff004d | |
( m_down ) | |
( transparent ) | |
( m_drag ) | |
( transparent ) | |
( m_up ) | |
( transparent ) | |
m_down | |
green | |
.00.. | |
..0.. | |
..0.. | |
..0.. | |
.000. | |
m_drag | |
green | |
..00. | |
.0..0 | |
...0. | |
..0.. | |
.0000 | |
m_up | |
green | |
.00.. | |
...0. | |
.00.. | |
...0. | |
.00.. | |
m_prev | |
transparent | |
( red ) | |
( ..... ) | |
( ..0.. ) | |
( .000. ) | |
( ..0.. ) | |
( ..... ) | |
temp_cut | |
green | |
temp_heat | |
green | |
temp_slidestart | |
green | |
temp_nostarted | |
green | |
started | |
transparent | |
winning | |
transparent | |
editor_restart | |
white | |
000.. | |
0..0. | |
000.. | |
0.0.. | |
0..0. | |
glueup | |
transparent | |
gluedown | |
transparent | |
glueleft | |
transparent | |
glueright | |
transparent | |
vbutter_glueup | |
transparent #ffec27 transparent | |
1.2.1 | |
..0.. | |
..0.. | |
..... | |
..... | |
vbutter_gluedown | |
transparent #ffec27 transparent | |
..... | |
..... | |
..0.. | |
..0.. | |
1.2.1 | |
vbutter_glueleft | |
transparent #ffec27 transparent | |
1.... | |
..... | |
200.. | |
..... | |
1.... | |
vbutter_glueright | |
transparent #ffec27 transparent | |
....1 | |
..... | |
..002 | |
..... | |
....1 | |
vbread_glueup copy:vbutter_glueup | |
transparent #8b5f00 #ffccaa | |
vbread_gluedown copy:vbutter_gluedown | |
transparent #8b5f00 #ffccaa | |
vbread_glueleft copy:vbutter_glueleft | |
transparent #8b5f00 #ffccaa | |
vbread_glueright copy:vbutter_glueright | |
transparent #8b5f00 #ffccaa | |
======= | |
legend | |
======= | |
player = m_down | |
. = background | |
# = wall | |
* = cratestill and butter | |
@ = cratestill and bread | |
2 = knifeup and heatup1 | |
3 = knifedown and heatdown1 | |
0 = knifeleft and heatleft1 | |
1 = kniferight and heatright1 | |
6 = knifeup | |
7 = knifedown | |
4 = knifeleft | |
5 = kniferight | |
} = editor_restart | |
crate = cratestill or crateup or cratedown or crateleft or crateright | |
knife = knifeup or knifedown or knifeleft or kniferight | |
heat = heatup1 or heatup2 or heatdown1 or heatdown2 or heatleft1 or heatleft2 or heatright1 or heatright2 | |
solid = wall or crate | |
glue = glueup or gluedown or glueleft or glueright | |
vbutter = vbutter_glueup or vbutter_gluedown or vbutter_glueleft or vbutter_glueright | |
vbread = vbread_glueup or vbread_gluedown or vbread_glueleft or vbread_glueright | |
vglue = vbutter or vbread | |
rider = bread or butter or glue or vglue (metadata that should move with crates) | |
mouse = m_down or m_drag or m_up | |
temp = temp_cut or temp_heat or temp_slidestart or temp_nostarted | |
======= | |
sounds | |
======= | |
crate move 30943107 | |
temp_cut create 45859902 | |
endlevel 73412903 | |
================ | |
collisionlayers | |
================ | |
background | |
wall | |
crate | |
bread, butter | |
knife | |
heat | |
mouse | |
m_prev | |
temp | |
winning | |
glueup | |
gluedown | |
glueleft | |
glueright | |
vbutter_glueup, vbread_glueup | |
vbutter_gluedown, vbread_gluedown | |
vbutter_glueleft, vbread_glueleft | |
vbutter_glueright, vbread_glueright | |
started, editor_restart | |
====== | |
rules | |
====== | |
(todont: multidrag -- too much time wasted with bad-feeling results) | |
(todo: add wasd to move last clicked...?) | |
(todo: use phrase "bread and butter" somehow) | |
(todo: use again_interval to flash knives when level is lost b/c no butter left) | |
(editor re-startup) | |
[editor_restart][glue] -> [editor_restart][] | |
[editor_restart][started] -> [editor_restart][] | |
[editor_restart] -> [] | |
(startup) | |
random [background] -> [background temp_nostarted] | |
[started][temp_nostarted] -> [started][] | |
(generate glue) | |
up [temp_nostarted][crate | crate] -> [temp_nostarted][crate up glueup | crate down gluedown] | |
left [temp_nostarted][crate | crate] -> [temp_nostarted][crate left glueleft | crate right glueright] | |
[temp_nostarted][butter > glue | bread < glue] -> [temp_nostarted][butter | bread] | |
[temp_nostarted] -> [started] | |
(generate butter glue) | |
up [butter | butter] -> [butter glueup | butter gluedown] | |
left [butter | butter] -> [butter glueleft | butter glueright] | |
(dirinfo) | |
[glueup] -> [up glueup] | |
[gluedown] -> [down gluedown] | |
[glueleft] -> [left glueleft] | |
[glueright] -> [right glueright] | |
(cut) | |
[crate knife] -> [knife temp_cut] | |
(cleanup) | |
[temp_cut heat] -> [temp_cut] | |
[temp_cut > glue | < glue] -> [temp_cut | ] | |
[temp_cut rider] -> [temp_cut] | |
[temp_cut] -> [] | |
(no interaction is possible mid-slide b/c the again's are running.) | |
(multi-dragging is awkward b/c drag events don't happen during agains) | |
(so, it's very possible to drop these events, but they're better than nothing) | |
[m_down][m_prev] -> [m_down][] | |
[m_down] -> [m_drag] | |
[cratestill m_prev | m_drag] -> [> cratestill temp_slidestart m_prev | m_drag] | |
startloop (start moving) | |
(transfer dirinfo) | |
[up cratestill] -> [crateup] | |
[down cratestill] -> [cratedown] | |
[left cratestill] -> [crateleft] | |
[right cratestill] -> [crateright] | |
(flood fill movement) | |
[crateup > glue | < glue cratestill] -> [crateup > glue | < glue crateup] | |
[cratedown > glue | < glue cratestill] -> [cratedown > glue | < glue cratedown] | |
[crateleft > glue | < glue cratestill] -> [crateleft > glue | < glue crateleft] | |
[crateright > glue | < glue cratestill] -> [crateright > glue | < glue crateright] | |
(start movement) | |
[crateup] -> [up crateup] again | |
[cratedown] -> [down cratedown] again | |
[crateleft] -> [left crateleft] again | |
[crateright] -> [right crateright] again | |
(propagate moving) | |
[> crate | crate] -> [> crate | > crate] | |
endloop | |
startloop (stop moving) | |
[> crate | stationary solid] -> [crate | solid] | |
[stationary crate > glue | < glue moving crate] -> [stationary crate > glue | < glue stationary crate] | |
endloop | |
[stationary crate] -> [stationary cratestill] | |
(animate heatup) | |
[temp_slidestart][heatup1] -> [temp_slidestart][heatup2 temp_heat] | |
[temp_slidestart][heatup2 no temp_heat] -> [temp_slidestart][heatup1] | |
[temp_slidestart][temp_heat] -> [temp_slidestart][] | |
(animate heatdown) | |
[temp_slidestart][heatdown1] -> [temp_slidestart][heatdown2 temp_heat] | |
[temp_slidestart][heatdown2 no temp_heat] -> [temp_slidestart][heatdown1] | |
[temp_slidestart][temp_heat] -> [temp_slidestart][] | |
(animate heatleft) | |
[temp_slidestart][heatleft1] -> [temp_slidestart][heatleft2 temp_heat] | |
[temp_slidestart][heatleft2 no temp_heat] -> [temp_slidestart][heatleft1] | |
[temp_slidestart][temp_heat] -> [temp_slidestart][] | |
(animate heatright) | |
[temp_slidestart][heatright1] -> [temp_slidestart][heatright2 temp_heat] | |
[temp_slidestart][heatright2 no temp_heat] -> [temp_slidestart][heatright1] | |
[temp_slidestart][temp_heat] -> [temp_slidestart][] | |
(animation cleanup) | |
[temp_slidestart] -> [] | |
(mouse handling) | |
[m_drag][m_prev] -> [m_drag][] | |
[m_drag] -> [m_prev] | |
[mouse] -> [] | |
(visuals) | |
[vglue] -> [] | |
[bread glueup] -> [bread glueup vbread_glueup] | |
[bread gluedown] -> [bread gluedown vbread_gluedown] | |
[bread glueleft] -> [bread glueleft vbread_glueleft] | |
[bread glueright] -> [bread glueright vbread_glueright] | |
[butter glueup] -> [butter glueup vbutter_glueup] | |
[butter gluedown] -> [butter gluedown vbutter_gluedown] | |
[butter glueleft] -> [butter glueleft vbutter_glueleft] | |
[butter glueright] -> [butter glueright vbutter_glueright] | |
(move riders) | |
[stationary crate moving rider] -> [stationary crate stationary rider] | |
[> crate rider] -> [> crate > rider] | |
(win checking) | |
random [background] -> [background winning] | |
[heat][winning] -> [heat][] | |
[moving crate][winning] -> [moving crate][] | |
(invisible things that might stick around between turns: m_prev started glue) | |
============== | |
winconditions | |
============== | |
some winning | |
======= | |
levels | |
======= | |
message Level 1 of 14 | |
section Level 1 | |
message Oh no! All the knives are scalding hot! | |
message Also, we have way too much butter! | |
message Two disasters in one day -- it's too much! | |
message hmm... unless... | |
message [ click and drag to move the butter ] | |
(difficulty(of 3) | sparkle(of 3)) | |
(1|2) | |
########## | |
###3##3### | |
###....### | |
###....### | |
##***..### | |
##.....### | |
##..2..### | |
##..#..### | |
########## | |
message Level 2 of 14 | |
section Level 2 | |
(2|1) | |
######### | |
#.#####.# | |
#.3...3.# | |
#.......# | |
#.......# | |
#***#...# | |
##*##2..# | |
######### | |
message Level 3 of 14 (by Michael Kamm) | |
section Level 3 (Michael Kamm) | |
(Michael) | |
############# | |
#..*.....***# | |
#..........## | |
#..........## | |
#...####...## | |
#...#3##.6.## | |
#.....####### | |
#......###### | |
#......###### | |
############# | |
message Level 4 of 14 | |
section Level 4 | |
(2|2) | |
################ | |
###777####...### | |
##3...3##.....## | |
##............## | |
##*...........## | |
###***........## | |
####.........### | |
#####.......#### | |
################ | |
( (1|1) ) | |
( ################ ) | |
( ###737####...### ) | |
( ##7...7##..*..## ) | |
( ##.........**.## ) | |
( ##............## ) | |
( ###..........### ) | |
( ####........#### ) | |
( #####......##### ) | |
( ################ ) | |
message Level 5 of 14 | |
section Level 5 | |
(2|2) | |
############ | |
###*######## | |
###.###....# | |
#...*.#....# | |
#.*........# | |
###.###....# | |
###*#####2## | |
############ | |
message Level 6 of 14 | |
section Level 6 | |
(2|1) | |
############ | |
########*### | |
#3333###.### | |
#....#.*...# | |
#........*.# | |
#....###.### | |
########*### | |
############ | |
message Level 7 of 14 | |
section Level 7 | |
message Ah! Here's my trusty loaf of bread. | |
message People keep saying that sliced bread is incredible. I'm not really sure what they mean, but I guess I'll try it! | |
(2|3) | |
############## | |
#1...##*..***# | |
####.##*.....# | |
##...........# | |
##....#......# | |
#6....#*.....# | |
#6.@...*.....# | |
#6.....*.....# | |
############## | |
message Level 8 of 14 (by Patrick) | |
section Level 8 (Patrick) | |
(patrick) | |
########################### | |
######*##*##*##*#*######### | |
#.........................# | |
#...................#.....# | |
#...................#.....# | |
#...................#.....# | |
##66666666#@#666666##.....# | |
###########@#########.....# | |
###########@.########26666# | |
###########@@############## | |
########################### | |
message Level 9 of 14 | |
section Level 9 | |
(2|2) | |
############ | |
#.3........# | |
#......#...# | |
#......#...# | |
#...***#...# | |
#...*###2..# | |
#....####..# | |
############ | |
( ############# ) | |
( ####..0###### ) | |
( ####.###....# ) | |
( ##.....*....# ) | |
( ##...##*....# ) | |
( ##..........# ) | |
( ##.....@....# ) | |
( #6....***...# ) | |
( ############# ) | |
( ############# ) | |
( ##.....*##### ) | |
( ##.....*##### ) | |
( #1.....*#***# ) | |
( ##...##.....# ) | |
( ##...@#.....# ) | |
( ##....#.....# ) | |
( #5..........# ) | |
( ############# ) | |
message Level 10 of 14 (by Patrick) | |
section Level 10 (Patrick) | |
(patrick) | |
############################ | |
#########.................4# | |
#########.................4# | |
#########.................4# | |
#########.....#######.....4# | |
#########.....#######.....4# | |
###*****........#####.....4# | |
###*****........#####.....4# | |
###*****........#####.....4# | |
###*****........#####.....4# | |
###*****........#####.....4# | |
###.............#####.....4# | |
###......6......##.@#.....4# | |
#3#.............@@@@#.....4# | |
#.#.............@####.....4# | |
#.........................4# | |
###.......................4# | |
###.......................## | |
###.............############ | |
############################ | |
message Level 11 of 14 | |
section Level 11 | |
(3|2) | |
############### | |
#3#####.......# | |
#.#..***......# | |
#.#..#@#......# | |
#......#......# | |
###....#......# | |
###.........#*# | |
#6..........#*# | |
#6...........*# | |
############### | |
( (2|2) ) | |
( ############# ) | |
( ###.3#*.....# ) | |
( ###.##*.....# ) | |
( #...........# ) | |
( #....#...***# ) | |
( #....#..*...# ) | |
( #.......*.@.# ) | |
( #.......*...# ) | |
( ############# ) | |
( (3|2 -- required shape (cradle) is hard to know, and then quite hard to build - pre-shove comment) ) | |
( ########## ) | |
( ##2.#.*..# ) | |
( ###.#.*..# ) | |
( ##.......# ) | |
( ##..@.**.# ) | |
( ##.......# ) | |
( #.....*..# ) | |
( #.....*.## ) | |
( ########## ) | |
( ########## ) | |
( ##2.#.*..# ) | |
( ###.#.*..# ) | |
( ##.......# ) | |
( ##...@**.# ) | |
( ##.......# ) | |
( #1....*..# ) | |
( #.....*.## ) | |
( ########## ) | |
( (more understandable but LOTS of easy cheese - pre-shove comment) ) | |
( ########## ) | |
( ##2.#.*..# ) | |
( ###.#.*..# ) | |
( #........# ) | |
( #....@**.# ) | |
( #........# ) | |
( #.....*..# ) | |
( #.....*### ) | |
( ########## ) | |
message Level 12 of 14 | |
section Level 12 | |
(2|2) | |
########### | |
##.3#.3#.3# | |
##..#..#..# | |
##.##.##.## | |
#.........# | |
#..*@.@*..# | |
#..*@.@*..# | |
#.........# | |
########### | |
message Level 13 of 14 (by Le Slo) | |
section Level 13 (Le Slo) | |
(le slo) | |
############ | |
###7##.##### | |
#*.........# | |
#*.........# | |
##........## | |
##...#..*.0# | |
##...#.*..0# | |
##2.#...*.0# | |
#######...## | |
############ | |
message Level 14 of 14 | |
section Level 14 | |
message The final showdown... | |
(1|2) | |
#################### | |
#@@@@@@@@@@@@@@@@@.# | |
#@.#######*######@.# | |
#@.#1555***#3377#@.# | |
#@*@@@@@@5##....#@.# | |
#@.#...........@@@.# | |
####..@..###...@.### | |
###**...**##.......# | |
###...@...##.......# | |
####.....######6622# | |
#################### | |
( ####################### ) | |
( ############*########## ) | |
( ######555****########## ) | |
( #*@*@@@@@@5############ ) | |
( #*@.#............###### ) | |
( #*.##....###.....###### ) | |
( #*.##....###....@.##### ) | |
( #*.##....###....@.###*# ) | |
( #*.####.@###....@@@@*.# ) | |
( #*.###**.###.....#.@*.# ) | |
( #*.#**...###44440#..*.# ) | |
( #*.###############..*.# ) | |
( #********************.# ) | |
( ####################### ) | |
message Crises averted! | |
message Time to eat some victory toast. | |
message * crunch * | |
((( | |
(tech test: glue) | |
###############3 | |
#...*..........# | |
#.@.....**.....# | |
#.@@...@@@.....# | |
#..........*...# | |
#..*....#......# | |
#..*.........*.# | |
#...#.*.*.#.@..# | |
#.....*.....@..# | |
#......*.#*....# | |
#...@..........# | |
#...@..****....# | |
#..............# | |
################ | |
(16:9 screen) | |
###############3 | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
################ | |
(10:9 gameboy) | |
#########3 | |
#........# | |
#........# | |
#........# | |
#........# | |
#........# | |
#........# | |
#........# | |
########## | |
(16:14 NES) | |
###############3 | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
#..............# | |
################ | |
(tech test) | |
############ | |
##.........# | |
#......#...# | |
#......#...# | |
#@@.*#*#...# | |
#@@.*###2..# | |
#....####### | |
############ | |
(lockpick concept; doesn't work b/c mechanics only "push" in one direction) | |
################....... | |
#1##1##1##............. | |
#**#**#**#............. | |
#..#**#**#............. | |
#..#**#..#............. | |
#..#**#..#............. | |
#..#..#..#............. | |
#...................... | |
#...................... | |
#........*****......... | |
#...................... | |
#...................... | |
#...................... | |
################....... | |
(wip trying to build a gizmo that wants one butter before unlocking the next bit) | |
################ | |
#.#.....#####..# | |
#.###########..# | |
#.###########..# | |
#.##......0#...# | |
#.##*..0#.##...# | |
#****.....##...# | |
#.####.##**#...# | |
#.#.....####...# | |
#.#...*........# | |
#.#............# | |
#.#............# | |
#.#............# | |
################ | |
(concept: force-stop) | |
####### | |
####..# | |
###3..# | |
#*#...# | |
#**..## | |
###..## | |
###*.## | |
####### | |
(concept: avoid) | |
###### | |
###3## | |
###.## | |
#.*..# | |
###.## | |
###*## | |
###### | |
(regression test: swiping up shouldn't move the second butter) | |
###3 | |
#.## | |
#*3# | |
#..# | |
#..# | |
#.*# | |
#### | |
))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment