Skip to content

Instantly share code, notes, and snippets.

@pancelor
Last active December 29, 2022 19:45
Show Gist options
  • Save pancelor/4ad596bf22158221977fbbf890f356ac to your computer and use it in GitHub Desktop.
Save pancelor/4ad596bf22158221977fbbf890f356ac to your computer and use it in GitHub Desktop.
like a hot knife through butter WIP
Play this game by pasting the script in https://auroriax.github.io/PuzzleScript/editor.html
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