Skip to content

Instantly share code, notes, and snippets.

@pancelor
Created July 1, 2020 03:38
Show Gist options
  • Save pancelor/2c976e4ed5e864d75014e2132821f145 to your computer and use it in GitHub Desktop.
Save pancelor/2c976e4ed5e864d75014e2132821f145 to your computer and use it in GitHub Desktop.
Guided Sock Meditation (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Guided Sock Meditation
author pancelor
homepage www.twitter.com/pancelor
(debug; activative these at ship)
(noaction)
(require_player_movement) (todo: why doesn't this kill flashing?)
again_interval 0
run_rules_on_level_start
realtime_interval 0.40
(verbose_logging)
background_color #2D2923
========
OBJECTS
========
CloudPiece0
#89c3e5 #ffffff #f4f4f4
00001
01111
01211
12212
11111
CloudPiece1
#ffffff #89c3e5 #f4f4f4
00011
22011
00201
20000
00000
CloudPiece2
#89c3e5 #ffffff #f4f4f4
00000
10000
00000
20100
12101
CloudPiece3
#89c3e5 #ffffff #f4f4f4
00000
00111
01112
12111
11101
CloudPiece4
#89c3e5 #ffffff #f4f4f4
00000
00000
10110
11221
11111
CloudPiece5
#89c3e5
00000
00000
00000
00000
00000
CloudPiece6
#89c3e5 #f4f4f4 #ffffff
00000
00000
00000
10022
00222
CloudPiece7
#89c3e5 #ffffff #f4f4f4
00000
00000
00001
01121
22111
CloudPiece8
#89c3e5 #ffffff #f4f4f4
00000
00000
10000
11001
22120
CloudPiece9
#89c3e5 #ffffff
00000
00000
10010
00000
00000
CloudPiece10
#89c3e5 #f4f4f4 #ffffff
00000
00120
02221
00000
00000
CloudPiece11
#89c3e5 #ffffff #f4f4f4
00000
00110
20012
00000
00000
CloudPiece12
#89c3e5 #ffffff #f4f4f4
00001
00111
00000
11120
00111
CloudPiece13
#f4f4f4 #89c3e5 #ffffff
00111
22121
11111
11111
12022
CloudPiece14
#89c3e5 #ffffff #f4f4f4
00000
00110
11211
00000
11100
CloudPiece15
#89c3e5 #ffffff #f4f4f4
00000
00000
10011
00212
00011
CloudPiece16
#89c3e5 #ffffff #f4f4f4
00000
00111
00221
20010
12000
CloudPiece17
#89c3e5 #f4f4f4 #ffffff
00000
00112
11222
22200
00000
CloudPiece18
#89c3e5 #ffffff #f4f4f4
00000
00111
01122
22111
01121
CloudPiece19
#89c3e5 #f4f4f4 #ffffff
00000
00000
10002
22011
22221
CloudPiece20
#89c3e5 #ffffff #f4f4f4
00000
00000
10000
22200
11110
CloudPiece21
#89c3e5 #ffffff #f4f4f4
00000
00001
00111
01222
01111
CloudPiece22
#89c3e5 #ffffff #f4f4f4
00000
10000
21021
11212
11111
CloudPiece23
#89c3e5 #ffffff #f4f4f4
00000
00000
11000
21100
11110
CloudPiece24
#89c3e5 #ffffff #f4f4f4
00000
00000
00110
02211
11112
CloudPiece25
#89c3e5 #ffffff
00000
00000
00000
10100
11101
CloudPiece27
#89c3e5 #f4f4f4 #ffffff
00000
00000
00101
11012
22201
CloudPiece28
#89c3e5 #ffffff #f4f4f4
00000
01000
21101
11110
02200
CloudPiece29
#89c3e5 #f4f4f4 #ffffff
00000
00110
02222
00000
01120
CloudPiece30
#89c3e5 #ffffff #f4f4f4
00000
00000
00000
00110
02201
CloudPiece31
#89c3e5 #ffffff #f4f4f4
00000
00000
00011
02121
11111
CloudPiece32
#89c3e5 #f4f4f4 #ffffff
00000
00000
00000
12000
21100
CloudPiece33
#89c3e5 #ffffff #f4f4f4
00000
00000
00000
00122
01111
CloudPiece34
#89c3e5 #ffffff
00000
00000
00000
00000
10001
CloudPiece35
#89c3e5 #f4f4f4 #ffffff
00000
00000
00000
01100
22210
CloudRand
#89c3e5 #ffffff #f4f4f4
.....
.....
..11.
.2211
11112
mWasCloud
transparent
Cloud0
red
Cloud1
red
Cloud2
red
Cloud3
red
Cloud4
red
Cloud5
red
Cloud6
red
Cloud7
red
Cloud8
red
Cloud9
red
Cloud10
red
Cloud11
red
Fade100
#2D2923
00000
00000
00000
00000
00000
Fade88
#2D2923
00.00
00000
0.000
000.0
00000
Fade76
#2D2923
00.00
0000.
0.000
.00.0
0.000
Fade64
#2D2923
.0.0.
0000.
0..00
.00.0
0.00.
Fade52
#2D2923
.0...
0.00.
0..0.
.00.0
0..0.
Fade40
#2D2923
.0...
0.00.
...0.
.0...
0..0.
Fade28
#2D2923
.....
0.0..
...0.
.0...
...0.
Fade16
#2D2923
.....
0....
.....
.....
...0.
_0
black
.000.
.0.0.
.0.0.
.0.0.
.000.
_1
black
.00..
..0..
..0..
..0..
.000.
_2
black
.000.
...0.
.000.
.0...
.000.
_3
black
.000.
...0.
.000.
...0.
.000.
_4
black
.0.0.
.0.0.
.000.
...0.
...0.
_5
black
.000.
.0...
.000.
...0.
.000.
_6
black
.000.
.0...
.000.
.0.0.
.000.
_7
black
.0000
....0
...0.
..0..
..0..
_8
black
.000.
.0.0.
.000.
.0.0.
.000.
_9
black
.000.
.0.0.
.000.
...0.
.000.
Dryer
white lightgray gray darkgray black
11141
12321
13031
12321
11111
MatchedSock
#F4F4F4 #BA091D gray (red)
000..
111..
000..
00001
20001
UnmatchedSock
#F4F4F4 #0071B2 gray (blue)
000..
111..
000..
00001
20001
StringH0
#2D2923
.....
.....
0.0.0
.....
.....
StringH1
#2D2923
.....
.....
.0.0.
.....
.....
StringV0
#2D2923
..0..
.....
..0..
.....
..0..
StringV1
#2D2923
.....
..0..
.....
..0..
.....
mTooClose
darkred transparent
...01
...01
...00
.....
.....
mTooClose2
lightred transparent
...01
...01
...00
.....
.....
mTooCloseR
darkred transparent
.....
1....
01...
01...
01...
mTooCloseR2
lightred transparent
.....
1....
01...
01...
01...
mTooCloseL
darkred transparent
...10
...10
...10
...10
...10
mTooCloseL2
lightred transparent
...10
...10
...10
...10
...10
mTooCloseU
darkred transparent
.....
.....
.....
1111.
00001
mTooCloseU2
lightred transparent
.....
.....
.....
1111.
00001
mTooCloseD
darkred transparent
00000
11111
.....
.....
.....
mTooCloseD2
lightred transparent
00000
11111
.....
.....
.....
mTooCloseUL
darkred transparent
.....
.....
.....
....1
...10
mTooCloseUL2
lightred transparent
.....
.....
.....
....1
...10
mTooCloseUR
darkred transparent
.....
.....
.....
.....
.....
mTooCloseUR2
lightred transparent
.....
.....
.....
.....
.....
mTooCloseDL
darkred transparent
...10
....1
.....
.....
.....
mTooCloseDL2
lightred transparent
...10
....1
.....
.....
.....
mTooCloseDR
darkred transparent
01...
1....
.....
.....
.....
mTooCloseDR2
lightred transparent
01...
1....
.....
.....
.....
Floor
#F4D63F #EDB83D
00100
01110
11011
01110
00100
FloorRand1
#F4D63F #EDB83D #EFC33E
.....
.....
.....
.....
.....
FloorRand2
#F4D63F #EDB83D #EFC33E
..2..
.22..
.....
.....
.....
FloorRand3
#F4D63F #EDB83D #EFC33E
.....
...2.
.....
.....
.....
FloorRand4
#F4D63F #EDB83D #EFC33E
.....
.....
.2...
...2.
.....
Player
#2D2923 #E2905D #F4F4F4 #0071B2
.000.
.111.
22222
.333.
.3.3.
(
Player
#F2BDF9 #FFEDD0 #C18BD1 #181466
.000.
01110
22222
03330
.3.3.
)
(
Player
transparent #9D836D #5C4D51 #404040
1.1.2
222.1
23212
.1111
.31.1
)
Crate
(brown darkbrown #726E67)
brown darkbrown #705B50
1.1..
011..
00010
00000
22222
(
Crate
#AA6853 #E0AE9F #DB856B
00000
01110
01110
01110
00000
)
Wall
brown darkbrown
00010
11111
01000
11111
00010
Vines1
#316312
.0...
..0..
..0..
...0.
.0...
Vines2
#316312
00...
.0...
..00.
00..0
..000
Vines3
#316312
.0..0
...0.
.0...
...0.
0..0.
Vines4
#316312
0...0
.0.0.
...00
.00..
.0...
Sky
#89C3E5
GlassCrate
#726E67 white
0.0..
100..
11.01
1..11
00000
(
#726E67 white
0.0..
.00..
.1.01
1..1.
00000
)
(
#6EDCF4 #6EDCF4
(#BEE8F8 #EFF5F7)
10...
001..
010..
1.00.
0.010
)
(
#AA6853 white
00000
0.1.0
01..0
0..10
00000
)
Window
#726E67 white
1....
....1
...1.
..1..
.1...
WindowBorderL
#726E67
0....
0....
0....
0....
0....
WindowBorderR
#726E67
....0
....0
....0
....0
....0
WindowBorderU
#726E67
00000
.....
.....
.....
.....
WindowBorderD
#726E67
.....
.....
.....
.....
00000
mDirR
yellow
mDirL
yellow
mDirU
yellow
mDirD
yellow
mWasMatchedMoving
red
mWasMatchedStationary
red
mDiagProbe
red
mDiagProbeTriggered
red
mStringProbeL0
red
mStringProbeL1
red
mStringProbeR0
red
mStringProbeR1
red
mStringProbeU0
red
mStringProbeU1
red
mStringProbeD0
red
mStringProbeD1
red
mWin
transparent
mAction
transparent
mTimer0
transparent
mTimer1
transparent
mTimerTemp
transparent
mTimerStartup0
transparent
mTimerStartup1
transparent
mFlashTooClose
transparent
mResetEditor
transparent
=======
LEGEND
=======
Background = Floor (or Floor) (todo try this 'or'?)
. = Floor
* = Sky
Q = CloudRand and Sky
P = CloudRand and Wall
@ = Player and mTimerStartup0 and Floor
# = Wall
c = Crate and Floor
g = GlassCrate and Floor
w = Window and Floor
d = Dryer and Floor
s = UnmatchedSock and Floor
0 = _0 and Sky (debug; change to (_0 and) Sky at ship?)
1 = _1 and Sky
2 = _2 and Sky
3 = _3 and Sky
4 = _4 and Sky
5 = _5 and Sky
6 = _6 and Sky
7 = _7 and Sky
8 = _8 and Sky
9 = _9 and Sky
cImmovable = Wall or Window
cSock = UnmatchedSock or MatchedSock
cPushable = cSock or Crate or Player or GlassCrate
cDir = mDirL or mDirR or mDirU or mDirD
cVines = Vines1 or Vines2 or Vines3 or Vines4
cFloorRand = FloorRand1 or FloorRand2 or FloorRand3 or FloorRand4
cSockTestBlocker = Wall or Crate or Player or cSock
cTooClose = mTooClose or mTooCloseL or mTooCloseR or mTooCloseU or mTooCloseD or mTooCloseUL or mTooCloseUR or mTooCloseDL or mTooCloseDR or mTooClose2 or mTooCloseL2 or mTooCloseR2 or mTooCloseU2 or mTooCloseD2 or mTooCloseUL2 or mTooCloseUR2 or mTooCloseDL2 or mTooCloseDR2
cStringH = StringH0 or StringH1
cStringV = StringV0 or StringV1
cString = cStringH or cStringV
cStringProbeH = mStringProbeL0 or mStringProbeL1 or mStringProbeR0 or mStringProbeR1
cStringProbeV = mStringProbeU0 or mStringProbeU1 or mStringProbeD0 or mStringProbeD1
cStringProbe = cStringProbeH or cStringProbeV
cWindowBorder = WindowBorderL or WindowBorderR or WindowBorderU or WindowBorderD
cTimerStartup = mTimerStartup0 or mTimerStartup1
cTimerNonStartup = mTimer0 or mTimer1
cNumber = _0 or _1 or _2 or _3 or _4 or _5 or _6 or _7 or _8 or _9
(cLetter = _A or _B or _C or _D or _E or _F or _G or _H or _I or _J or _K or _L or _M or _N or _O or _P or _Q or _R or _S or _T or _U or _V or _W or _X or _Y or _Z)
cText = cNumber (or cLetter)
cCloud = Cloud0 or Cloud1 or Cloud2 or Cloud3 or Cloud4 or Cloud5 or Cloud6 or Cloud7 or Cloud8 or Cloud9 or Cloud10 or Cloud11
cCloudPiece = CloudPiece0 or CloudPiece1 or CloudPiece2 or CloudPiece3 or CloudPiece4 or CloudPiece5 or CloudPiece6 or CloudPiece7 or CloudPiece8 or CloudPiece9 or CloudPiece10 or CloudPiece11 or CloudPiece12 or CloudPiece13 or CloudPiece14 or CloudPiece15 or CloudPiece16 or CloudPiece17 or CloudPiece18 or CloudPiece19 or CloudPiece20 or CloudPiece21 or CloudPiece22 or CloudPiece23 or CloudPiece24 or CloudPiece25 or CloudPiece27 or CloudPiece28 or CloudPiece29 or CloudPiece30 or CloudPiece31 or CloudPiece32 or CloudPiece33 or CloudPiece34 or CloudPiece35
cFade = Fade100 or Fade88 or Fade76 or Fade64 or Fade52 or Fade40 or Fade28 or Fade16
=======
SOUNDS
=======
Crate MOVE 36772507
GlassCrate MOVE 36772507 (todo dif sound?)
cSock MOVE 41144707
cancel 87775304
sfx0 84149500
(ty to stephen for the sound recommendation)
sfx1 9675111
(sfx1 22057104)
EndLevel 3994900
sfx9 47570502 (error)
================
COLLISIONLAYERS
================
(visual)
Floor
cFloorRand
Sky
cCloud
cCloudPiece
cImmovable, cPushable
CloudRand, mWasCloud (these have to be above Wall so the editor is usable)
Dryer
cVines
WindowBorderL
WindowBorderR
WindowBorderU
WindowBorderD
cStringH
cStringV
mTooClose, mTooClose2
mTooCloseU, mTooCloseU2
mTooCloseD, mTooCloseD2
mTooCloseR, mTooCloseR2
mTooCloseL, mTooCloseL2
mTooCloseUL, mTooCloseUL2
mTooCloseUR, mTooCloseUR2
mTooCloseDL, mTooCloseDL2
mTooCloseDR, mTooCloseDR2
cText
cFade
(non-visual)
mTimerTemp, cTimerStartup, cTimerNonStartup
mFlashTooClose
mResetEditor
mDiagProbe
mDiagProbeTriggered
mWasMatchedMoving
mWasMatchedStationary
cStringProbeH
cStringProbeV
cDir
mWin
mAction
======
RULES
======
(cosmetics - clouds will re-randomize on restart, vines will not)
(startup wall randomization)
startloop
random [mTimerStartup0][Wall no cVines] -> [mTimerStartup0][Wall Vines1]
random [mTimerStartup0][Wall no cVines] -> [mTimerStartup0][Wall Vines2]
random [mTimerStartup0][Wall no cVines] -> [mTimerStartup0][Wall Vines3]
random [mTimerStartup0][Wall no cVines] -> [mTimerStartup0][Wall Vines4]
endloop
(startloop
random [mTimerStartup0][Background no cFloorRand] -> [mTimerStartup0][Background FloorRand1]
random [mTimerStartup0][Background no cFloorRand] -> [mTimerStartup0][Background FloorRand2]
random [mTimerStartup0][Background no cFloorRand] -> [mTimerStartup0][Background FloorRand3]
random [mTimerStartup0][Background no cFloorRand] -> [mTimerStartup0][Background FloorRand4]
endloop)
[mTimerStartup1][CloudRand] -> [mTimerStartup1][random cCloud]
([mTimerStartup1][cCloud] -> [mTimerStartup1][cCloud random cDir])
Right [mTimerStartup1][|Cloud0]->[mTimerStartup1][CloudPiece0|Cloud0]
Right [mTimerStartup1][Cloud0|]->[mTimerStartup1][Cloud0|CloudPiece2]
Right [mTimerStartup1][Cloud0] ->[mTimerStartup1][CloudPiece1 mWasCloud]
Right [mTimerStartup1][|Cloud1]->[mTimerStartup1][CloudPiece3|Cloud1]
Right [mTimerStartup1][Cloud1|]->[mTimerStartup1][Cloud1|CloudPiece5]
Right [mTimerStartup1][Cloud1] ->[mTimerStartup1][CloudPiece4 mWasCloud]
Right [mTimerStartup1][|Cloud2]->[mTimerStartup1][CloudPiece6|Cloud2]
Right [mTimerStartup1][Cloud2|]->[mTimerStartup1][Cloud2|CloudPiece8]
Right [mTimerStartup1][Cloud2] ->[mTimerStartup1][CloudPiece7 mWasCloud]
Right [mTimerStartup1][|Cloud3]->[mTimerStartup1][CloudPiece9|Cloud3]
Right [mTimerStartup1][Cloud3|]->[mTimerStartup1][Cloud3|CloudPiece11]
Right [mTimerStartup1][Cloud3] ->[mTimerStartup1][CloudPiece10 mWasCloud]
Right [mTimerStartup1][|Cloud4]->[mTimerStartup1][CloudPiece12|Cloud4]
Right [mTimerStartup1][Cloud4|]->[mTimerStartup1][Cloud4|CloudPiece14]
Right [mTimerStartup1][Cloud4] ->[mTimerStartup1][CloudPiece13 mWasCloud]
Right [mTimerStartup1][|Cloud5]->[mTimerStartup1][CloudPiece15|Cloud5]
Right [mTimerStartup1][Cloud5|]->[mTimerStartup1][Cloud5|CloudPiece17]
Right [mTimerStartup1][Cloud5] ->[mTimerStartup1][CloudPiece16 mWasCloud]
Right [mTimerStartup1][|Cloud6]->[mTimerStartup1][CloudPiece18|Cloud6]
Right [mTimerStartup1][Cloud6|]->[mTimerStartup1][Cloud6|CloudPiece20]
Right [mTimerStartup1][Cloud6] ->[mTimerStartup1][CloudPiece19 mWasCloud]
Right [mTimerStartup1][|Cloud7]->[mTimerStartup1][CloudPiece21|Cloud7]
Right [mTimerStartup1][Cloud7|]->[mTimerStartup1][Cloud7|CloudPiece23]
Right [mTimerStartup1][Cloud7] ->[mTimerStartup1][CloudPiece22 mWasCloud]
Right [mTimerStartup1][|Cloud8]->[mTimerStartup1][CloudPiece24|Cloud8]
Right [mTimerStartup1][Cloud8|]->[mTimerStartup1][Cloud8|CloudPiece5]
Right [mTimerStartup1][Cloud8] ->[mTimerStartup1][CloudPiece25 mWasCloud]
Right [mTimerStartup1][|Cloud9]->[mTimerStartup1][CloudPiece27|Cloud9]
Right [mTimerStartup1][Cloud9|]->[mTimerStartup1][Cloud9|CloudPiece29]
Right [mTimerStartup1][Cloud9] ->[mTimerStartup1][CloudPiece28 mWasCloud]
Right [mTimerStartup1][|Cloud10]->[mTimerStartup1][CloudPiece30|Cloud10]
Right [mTimerStartup1][Cloud10|]->[mTimerStartup1][Cloud10|CloudPiece32]
Right [mTimerStartup1][Cloud10] ->[mTimerStartup1][CloudPiece31 mWasCloud]
Right [mTimerStartup1][|Cloud11]->[mTimerStartup1][CloudPiece33|Cloud11]
Right [mTimerStartup1][Cloud11|]->[mTimerStartup1][Cloud11|CloudPiece35]
Right [mTimerStartup1][Cloud11] ->[mTimerStartup1][CloudPiece34 mWasCloud]
(prevent cosmetics from re-randomizing on restart)
[mTimerStartup1] -> [mTimer0]
[mTimerStartup0] -> [mTimerStartup1] checkpoint again
(win until proven otherwise)
[Player] -> [Player mWin]
(push stuff)
[ > cPushable | cPushable ] -> [ > cPushable | > cPushable ]
(socks wont move it it will unmatch them; track whether they were matched beforehand)
[ > MatchedSock ] -> [ > MatchedSock > mWasMatchedMoving ]
[ > mWasMatchedMoving | cImmovable ] -> [ mWasMatchedMoving | cImmovable ]
[ stationary MatchedSock ] -> [ MatchedSock mWasMatchedStationary ]
(
recalculate matched socks
shoot out marks from each sock; when they hit an unmatched sock it becomes matched
)
[cSock] -> [UnmatchedSock]
(Left)
late Left [cSock] -> [cSock mDirL]
late Left [mDirL | no cSockTestBlocker] -> [ | mDirL]
late Left [mDirL | cSock] -> [ mStringProbeR0 | MatchedSock]
(Right)
late Right [cSock] -> [cSock mDirR]
late Right [mDirR | no cSockTestBlocker] -> [ | mDirR]
late Right [mDirR | cSock] -> [ mStringProbeL0 | MatchedSock]
(Up)
late Up [cSock] -> [cSock mDirU]
late Up [mDirU | no cSockTestBlocker] -> [ | mDirU]
late Up [mDirU | cSock] -> [ mStringProbeD0 | MatchedSock]
(Down)
late Down [cSock] -> [cSock mDirD]
late Down [mDirD | no cSockTestBlocker] -> [ | mDirD]
late Down [mDirD | cSock] -> [ mStringProbeU0 | MatchedSock]
late [cDir] -> []
(notice unpairing)
late [mWasMatchedMoving no MatchedSock] -> cancel
(new pair sound)
late [cTimerNonStartup][MatchedSock no mWasMatchedMoving no mWasMatchedStationary] -> sfx0
(broken pair sound)
late [cTimerNonStartup][UnmatchedSock mWasMatchedStationary] -> sfx1
late [mWasMatchedMoving] -> []
late [mWasMatchedStationary] -> []
(draw window Borders)
late [cWindowBorder] -> []
late Left [Window | no Window] -> [Window WindowBorderL | ]
late Right [Window | no Window] -> [Window WindowBorderR | ]
late Up [Window | no Window] -> [Window WindowBorderU | ]
late Down [Window | no Window] -> [Window WindowBorderD | ]
(connect matched socks with String)
[cString] -> []
(Left)
late Left [mStringProbeL0 no cSockTestBlocker | ] -> [StringH0 | mStringProbeL1]
+late Left [mStringProbeL1 no cSockTestBlocker | ] -> [StringH1 | mStringProbeL0]
late Left [mStringProbeL0] -> []
late Left [mStringProbeL1] -> []
(Right)
late Right [mStringProbeR0 no cSockTestBlocker | ] -> [StringH0 | mStringProbeR1]
+late Right [mStringProbeR1 no cSockTestBlocker | ] -> [StringH1 | mStringProbeR0]
late Right [mStringProbeR0] -> []
late Right [mStringProbeR1] -> []
(Up)
late Up [mStringProbeU0 no cSockTestBlocker | ] -> [StringV0 | mStringProbeU1]
+late Up [mStringProbeU1 no cSockTestBlocker | ] -> [StringV1 | mStringProbeU0]
late Up [mStringProbeU0] -> []
late Up [mStringProbeU1] -> []
(Down)
late Down [mStringProbeD0 no cSockTestBlocker | ] -> [StringV0 | mStringProbeD1]
+late Down [mStringProbeD1 no cSockTestBlocker | ] -> [StringV1 | mStringProbeD0]
late Down [mStringProbeD0] -> []
late Down [mStringProbeD1] -> []
late [cStringProbe] -> []
(check for socks too close together)
late [cTooClose] -> []
(orthogonal)
late [cSock | cSock] -> [cSock mTooClose | cSock mTooClose]
(diagonal)
late Horizontal [cSock | ] -> [cSock | mDiagProbe]
late Vertical [mDiagProbe | cSock] -> [mDiagProbeTriggered mDiagProbe | cSock mTooClose]
late Horizontal [cSock | mDiagProbeTriggered] -> [cSock mTooClose | ]
late [mDiagProbe] -> []
late [mDiagProbeTriggered] -> []
(draw)
late Left [mTooClose | ] -> [mTooClose | mTooCloseL]
late Right [mTooClose | ] -> [mTooClose | mTooCloseR]
late Up [mTooClose | ] -> [mTooClose | mTooCloseU]
late Down [mTooClose | ] -> [mTooClose | mTooCloseD]
late Right [ | mTooCloseU | ] -> [mTooCloseUL | mTooCloseU | mTooCloseUR]
late Right [ | mTooCloseD | ] -> [mTooCloseDL | mTooCloseD | mTooCloseDR]
(win checking + flashing cTooClose)
late [mWin][UnmatchedSock] -> [][UnmatchedSock]
(this line flashes always)
(late [mTimer0][cTooClose] -> [mTimer0 mFlashTooClose][cTooClose])
(this line only flashes when cTooClose is the only thing preventing a win)
late [mTimer0][mWin][cTooClose] -> [mTimer0 mFlashTooClose][mWin][cTooClose]
late [mWin][cTooClose] -> [][cTooClose]
late [mTimer0] -> [mTimerTemp]
late [mTimer1] -> [mTimer0]
late [mTimerTemp] -> [mTimer1]
late [mFlashTooClose][mTooClose] -> [mFlashTooClose][mTooClose2]
late [mFlashTooClose][mTooCloseU] -> [mFlashTooClose][mTooCloseU2]
late [mFlashTooClose][mTooCloseD] -> [mFlashTooClose][mTooCloseD2]
late [mFlashTooClose][mTooCloseR] -> [mFlashTooClose][mTooCloseR2]
late [mFlashTooClose][mTooCloseL] -> [mFlashTooClose][mTooCloseL2]
late [mFlashTooClose][mTooCloseUL] -> [mFlashTooClose][mTooCloseUL2]
late [mFlashTooClose][mTooCloseUR] -> [mFlashTooClose][mTooCloseUR2]
late [mFlashTooClose][mTooCloseDL] -> [mFlashTooClose][mTooCloseDL2]
late [mFlashTooClose][mTooCloseDR] -> [mFlashTooClose][mTooCloseDR2]
late [mFlashTooClose] -> []
((auto-win; debug)
[> Player | Wall] -> [Player mAction | Wall]
([action Player] -> [Player mAction])
late [Player mAction] -> [Player mAction mWin]
late [mAction] -> [])
(for level exporting; debug; remove at ship)
[action Player] -> [Player mResetEditor]
late [mResetEditor][cVines] -> [mResetEditor][]
late [mResetEditor][cCloudPiece] -> [mResetEditor][]
late [mResetEditor][mWasCloud] -> [mResetEditor][CloudRand]
late [mResetEditor][cFloorRand] -> [mResetEditor][]
late [mResetEditor][MatchedSock] -> [mResetEditor][UnmatchedSock]
late [mResetEditor][mTimer0] -> [mResetEditor][]
late [mResetEditor][mTimer1] -> [mResetEditor][]
late [mResetEditor][Player] -> [mResetEditor][Player mTimerStartup0]
(remove visual stuff; not technically necessary)
late [mResetEditor][cTooClose] -> [mResetEditor][]
late [mResetEditor][cString] -> [mResetEditor][]
late [mResetEditor][cWindowBorder] -> [mResetEditor][]
(finish)
late [mResetEditor] -> []
==============
WINCONDITIONS
==============
any mWin
=======
LEVELS
=======
()
(
E...............................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
................................................
)
(
***q**************
************q*****
******************
****###########***
***##.........#***
***#........d.#***
***#.c.c......#*q*
q**#.....g....#***
***#.@......s.#***
***#..........#***
***#s....s....#***
***#......#####***
***########**q****
******************
**q***************
****************q*
)
10q***********
******q*#####q
*######*#...#*
*#....###.s.#*
*#.@.s#.....#*
q#s...#s....#*
*###....#####*
***#####p*****
***********q**
20**********
*########***
*#...#..#***
*#.#s..s###*
*#s#.#....#*
*#..@#...s#*
*##########*
************
30***********
****######***
*####....#***
*#..#...s#***
*#..#..#####*
*#s........#*
*#..#...#.@#*
*####.....s#*
****#.#s#..#*
****#...####*
****#####****
*************
40*************
******###******
****###.###****
*####s...s####*
*#s....c....s#*
*###s.....s###*
***####@####***
******###******
***************
50*********
*#######***
*#s....#***
*#...c.#***
*###...#***
***#s.s#***
***#...###*
***#.@...#*
***#....s#*
***#######*
***********
110**********
******#####**
***####...#**
*###..s...#**
*#...@#.###**
*#.s......##*
*###.......#*
***#s#s#.s.#*
***#...#####*
***#####*****
*************
60**********
****#####***
****#...#***
****#.s.#***
*####...#***
*#..##.####*
*#.s......#*
*#.@#...#.#*
*#..#...s.#*
*##########*
************
240********
**#######**
**#.s.s.#**
*##.....##*
*#.@.c.s.#*
*#.......#*
*#s.###..#*
*####*####*
***********
80**********
******#####*
****###..s#*
*####...#.#*
*#........#*
*#.s#...#.#*
*#.@#.s...#*
*##########*
************
90***********
*#####*******
*#@..#######*
*##s.##...##*
*#..##....s#*
*#..s....#.#*
*#####....s#*
*****#######*
*************
70**********
*#####**###*
*#...##*#s#*
*#.s..###.#*
*#.......s#*
*#....@.###*
*####....s#*
****#...###*
****#.s.#***
****#####***
************
120*********
**#########*
**#.......#*
**#.s.###.#*
**#...#...#*
**#...w.s.#*
**#.@.w...#*
*##...w.s.#*
*#s...#...#*
*##########*
************
150***********
***####*******
*###..#*******
*#.g..#######*
*#..sc.....s#*
*#.@#.#.s.###*
*#s.###...#***
*####*#####***
**************
200*******
*#######**
*#s....#**
*##..@.##*
*#.s...s#*
*#..#.###*
*#.s..#***
*#....#***
*######***
**********
100***********
*########*****
*#s..s.#####**
*##........#**
*#.......s.#**
*#..@......##*
*#....#.s..s#*
*#.s#########*
*####*********
**************
51*******
*######**
*#s...#**
*##...#**
**#s..#**
**#.@.#**
**#..s#**
**#...##*
**#...s#*
**######*
*********
140**********
*###########*
*#.........#*
*#.s.##...s#*
*#...#.....#*
*#.@.#...###*
*###s..s.#***
*#...#...#***
*#s..#####***
*#####*******
*************
210**********
*#######*****
*#....s#####*
*#.........#*
*#s.#www#..#*
*#.....s.@.#*
*##........#*
**##s#######*
***###*******
*************
130*******
**#####***
**#s..#***
*###..###*
*#.w..w.#*
*#.w..w.#*
*#.w..w.#*
*#sw.sws#*
*#.#c@#.#*
*#......#*
*########*
**********
63*********
***######**
***#..s.#**
***#....#**
***#....#**
*#####.##**
*#...#.#***
*#@s...###*
*####....#*
****#...s#*
****######*
***********
61**********
****#####***
****#...#***
****#.s.#***
*####...#***
*#..##.####*
*#.s....c.#*
*#.@#...#.#*
*#..#...s.#*
*##########*
************
241********
**#######**
**#.s.s.#**
*##.....##*
*#.@...s.#*
*#...c...#*
*#s.###..#*
*####*####*
***********
101***********
*########*****
*#s..s.#####**
*##........#**
*#..@....s.#**
*#.........##*
*#s...#.s..s#*
*#.c#########*
*####*********
**************
121*********
**#########*
**#.......#*
**#.s.###.#*
**#...w...#*
**#...w.s.#*
**#.@.w...#*
*##...w.s.#*
*#s...#...#*
*##########*
************
190************
***#######*****
***#.....#*****
*###...s.#*****
*#s.s.#####****
*###..#...#****
*#s...#.s.#****
*###..#...#****
**#...##.#####*
**#......#...#*
**#.@......s.#*
**#......#...#*
**############*
***************
65*********
****#####**
****#...#**
****#.s.##*
*####....#*
*#..##.#.#*
*#.s.....#*
*#.@.#..##*
*#.c.#.s#**
*#...####**
*#####*****
***********
62*********
****#####**
****#...#**
*####.s.##*
*#..#....#*
*#.@##.#.#*
*#.s.....#*
*####..#.#*
****#...s#*
****######*
***********
260********
**#####****
*##..s####*
*#...##..#*
*#..wwws.#*
*#s@..w..#*
*#..s....#*
*#..######*
*####******
***********
221*****************
***################*
*###...#s..s.##s#s#*
*#.....#wwwww#wwww#*
*#.scs............#*
*#.....#wwwwww....#*
*#..sgs...........#*
*#@....#wwwww#wwww#*
*#.....#.s..s#s#s##*
*#################**
********************
170**********
*###########*
*#.s.......#*
*#...@.....#*
*#....s.s..#*
*#.........#*
*#s.s#s.s#s#*
*###########*
*************
67************
**********###*
******#####s#*
*######.....#*
*#s.s.#.s.#.#*
*##...#..##.#*
**#.s.##.#..#*
**##.......@#*
**#.c.#..####*
**#...####****
**#####*******
**************
180************
***########****
**##s.....##***
**#.......s###*
**#..####...s#*
**#s....s..#.#*
*###....ww##.#*
*#....@....#.#*
*#.s.......#s#*
*#.........###*
*###s.s.s#s#***
***#########***
***************
102***********
*########*****
*#s..s..####**
*##........#**
*#.......s.#**
*#..@......##*
*#....#.s..s#*
*#s.#########*
*####*********
**************
91***********
*#####*******
*#@..#######*
*##s.##...##*
*#..##..s..#*
*#..s....#.#*
*#####.....#*
*****#######*
*************
691********
****######*
*####s...#*
*#..#w.s.#*
*#s@#..###*
*#..c....#*
*####..#.#*
****#..s.#*
****######*
***********
64********
**#####***
**#...#***
**#.s.###*
**#.....#*
**##.##.#*
*##.....#*
*#.cs..##*
*#@..#s#**
*#######**
**********
230*************
*####***********
*#..##########**
*#...........#**
*#.ww####ww..#**
*#.w......w..#**
*#.#.ccgs.#.##**
*#.#.gscg.#s#***
*#.#.cccc.#c#***
*#.#.scs@.#.#***
*#.w.....##.#***
*#.ww##...#.###*
*#...s###.s..s#*
*#########....#*
*********######*
****************
250**********
*####********
*#@.###******
*#..s.###****
*#....s.###**
*#......c.#**
*#........##*
*##wwwww#..#*
**#s.......#*
**###s.....#*
****###s...#*
******######*
*************
220*****************
***################*
*###...#s..s.##s#s#*
*#.....#wwwww#wwww#*
*#.scs............#*
*#.....#wwwwww....#*
*#..scs...........#*
*#@....#wwwww#wwww#*
*#.....#.s..s#s#s##*
*#################**
********************
160*********
*######*****
*#.@..#*****
*#swws#*****
*#cwwg#*****
*#swws#*****
*#....#*****
*#....#####*
*#....wwws#*
*#....www##*
*#....wwws#*
*##########*
************
(next id: 270)
( (microban inspired; not good but beatable)
************
**####******
**#..####***
**#..s..###*
*##..ww..s#*
*##s....s##*
*##..c...##*
**#.@w#w.##*
**#..s#w..#*
**#####...#*
****ss#####*
************
)
(impossible pretty sure)
(
66**********
****#####***
****#...#***
*####.s.###*
*#..#.....#*
*#.s##.##.#*
*#.c......#*
*#.@#..#.##*
*#######s#**
*******###**
************
68*********
****#####**
****#...#**
****#.s.##*
****#....#*
*#####.#.#*
*#.c.....#*
*#.s.#...#*
*#.@.##s##*
*########**
***********
)
(
##############
#########..s##
###.....#s...#
#.c...#c.....#
#.#...#c##.###
#@#..s......s#
###...########
##############
)
( (not really anything)
.............
..##########.
.##..s.s...#.
.#..*......#.
.#.c..@..s.#.
.#.........#.
.#.#.s..s..#.
.#s#########.
.###ss.......
.............
)
( (not really anything)
.............
...#######...
...#...@.#...
...#.....#...
.###.s...#...
.#......s#...
.#.......#...
.#.s....s###.
.###......s#.
...###s#####.
.....###.....
.............
)
((
((
gizmos
))
))
(found a one-way!)
(
...####
...#.##
...#s..
...#.##
.###.##
.#..s.#
.#....#
.#.s###
.##.##.
.@..#s.
..###s.
)
(found a simpler one-way)
(
####.#
#.s#.#
#..#.#
#....#
#.s###
##.#s.
@..#s.
####..
)
(a gizmo that forces you to push a sock out at the very end. idk)
(
..######.
.##....#.
.#..cc.#.
...##.##*
.#.sc.##*
...#.###*
..@#s..#*
...#..s#*
...#####*
*********
)
(
todo
* more mechanics?
* push socks into boxes (how to unwrap?)
* teleporters (dryers? lol)
* new mechanic: walls that only open when two socks see it
* I think the only thing this gives you is a new type of door for the player?
* new mechanic: special block that drags socks with it. e.g. enables you to push on a connection instead of breaking it
* too complicated with current cancel-based movement propagation
* new mechanic: bounce traps
* could work! idk i'd like to be done tho
* new mechanic: socks with ice physics
* new mechanic: darkness square that allows walking but not seeing
* new mechanic: socks that allow disconnection (so only one of a normal+discon pair is pushable)
* new mechanic: socks that run/summon their partner immediately(?)
cryss notes 2020-06-23
* she hit mTooClose on level 3 (large one)
* add glass?
* also she ran into triplet behavior (but didnt understand)
* very confused on this level (3)
* didn't need to understand connection-swapping before, suddenly needs to understand it in a level thats too big
* Q level - cheesed it with the box
2020-06-25
* 170 is maybe unreasonably hard at the end? is that the point of the level?
idk i still like it
* cryss wants to learn more things about socks (more `message`s!)
"you win" screen - sock on head
things i wish puzzlescript could do
* a "reverse translation" section that resets visual elements when exiting the editor
* better level organization - e.g. a list with thumbnails. reorderable? tree structure?
* character select
* state
* could be used for both overworld and char select
* specifically, persistent (a la game maker) markers
* any additions must be opt-in for back compat; e.g. add new prelude.enable_level_select
todo before ship
* grep debug
* dif colors per level? eg sunset markers
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment