Skip to content

Instantly share code, notes, and snippets.

@ZacharyTalis
Created February 7, 2026 23:51
Show Gist options
  • Select an option

  • Save ZacharyTalis/6ae11e84c8fee89c48fac47dda4844dc to your computer and use it in GitHub Desktop.

Select an option

Save ZacharyTalis/6ae11e84c8fee89c48fac47dda4844dc to your computer and use it in GitHub Desktop.
Taut (Puzzlescript Next Script)
Play this game by pasting the script into https://puzzlescriptnext.polyomino.com/editor.html
title Taut
author Cerise Talis
homepage https://cerisetalis.com
run_rules_on_level_start
level_select
animate_interval 0.2
========
OBJECTS
========
Background .
#888 #919191
10001
00000
00000
00000
10001
Wall #
#244 darkgreen
00000
00100
01010
00100
00000
PlayerNormal @
purple #eee
00000
00000
01010
00000
00000
PlayerPullingHorizontal
purple #eee
copy:PlayerNormal
PlayerPullingVertical
purple #eee
copy:PlayerNormal
PlayerPullingBoth
purple #eee
copy:PlayerNormal
PlayerDoomed
purple #eee
copy:PlayerNormal
CrateNormal C
#5F367A
00000
0...0
0...0
0...0
00000
CratePullingHorizontal
#5F367A
copy:CrateNormal
CratePullingVertical
#5F367A
copy:CrateNormal
CratePullingBoth
#5F367A
copy:CrateNormal
CrateDoomed
#5F367A
copy:CrateNormal
Hole H
#111
Target T
red
.....
.000.
.0.0.
.000.
.....
AirFree
transparent
AirDense
#2f484e88
=======
LEGEND
=======
F = CrateNormal and Target
PlayerPulling = PlayerPullingHorizontal or PlayerPullingVertical or PlayerPullingBoth
Player = PlayerNormal or PlayerPulling or PlayerDoomed
CratePulling = CratePullingHorizontal or CratePullingVertical or CratePullingBoth
Crate = CrateNormal or CratePulling or CrateDoomed
PlayerCanPullHorizontal = PlayerPullingHorizontal or PlayerPullingBoth
PlayerCanPullVertical = PlayerPullingVertical or PlayerPullingBoth
CrateCanPullHorizontal = CratePullingHorizontal or CratePullingBoth
CrateCanPullVertical = CratePullingVertical or CratePullingBoth
Air = AirFree or AirDense
BlocksAir = Wall or Crate or Player
SpawnsAir = AirFree or Hole
TransmitsPush = Player or Crate or AirDense
NoAirDense = Wall or Crate or Player or AirFree or Hole
Temp = Air or PlayerPulling or CratePulling
================
COLLISIONLAYERS
================
Background
Target
Hole
AirFree
Wall, TransmitsPush
======
RULES
======
( Mark pulling player )
vertical [ BlocksAir | PlayerNormal | BlocksAir ] -> [ BlocksAir | PlayerPullingHorizontal | BlocksAir ]
horizontal [ BlocksAir | PlayerPullingHorizontal | BlocksAir ] -> [ BlocksAir | PlayerPullingBoth | BlocksAir ]
horizontal [ BlocksAir | PlayerNormal | BlocksAir ] -> [ BlocksAir | PlayerPullingVertical | BlocksAir ]
( Mark pulling crate )
vertical [ BlocksAir | CrateNormal | BlocksAir ] -> [ BlocksAir | CratePullingHorizontal | BlocksAir ]
horizontal [ BlocksAir | CratePullingHorizontal | BlocksAir ] -> [ BlocksAir | CratePullingBoth | BlocksAir ]
horizontal [ BlocksAir | CrateNormal | BlocksAir ] -> [ BlocksAir | CratePullingVertical | BlocksAir ]
( Handle multipush )
[ > Player | TransmitsPush ] -> [ > Player | > TransmitsPush ]
[ > TransmitsPush | TransmitsPush ] -> [ > TransmitsPush | > TransmitsPush ]
( Handle pulling )
horizontal [ < PlayerCanPullHorizontal | Crate ] -> [ < PlayerCanPullHorizontal | < Crate ]
vertical [ < PlayerCanPullVertical | Crate ] -> [ < PlayerCanPullVertical | < Crate ]
horizontal [ < CrateCanPullHorizontal | Crate ] -> [ < CrateCanPullHorizontal | < Crate ]
vertical [ < CrateCanPullVertical | Crate ] -> [ < CrateCanPullVertical | < Crate ]
( Reset pulling marks )
[ PlayerPulling ] -> [ PlayerNormal ]
[ CratePulling ] -> [ CrateNormal ]
( sfx for crate on target )
[ > Crate | Target ] -> [ > Crate | Target ] sfx0
( Remove temp objects )
late [ Temp ] -> [ ]
( Flood fill air )
startloop
late [ SpawnsAir | no BlocksAir ] -> [ SpawnsAir | AirFree ]
endloop
late [ no NoAirDense ] -> [ AirDense ]
( Handle falling into holes )
late [ PlayerNormal Hole | Air ] -> [ PlayerDoomed Hole | Air ]
late [ PlayerDoomed ] -> [ ]
late [ CrateNormal Hole | Air ] -> [ CrateDoomed Hole | Air ]
late [ CrateDoomed ] -> [ ]
==============
WINCONDITIONS
==============
all Target on Crate
==============
SOUNDS
==============
Player move 52786707:5
Player cantmove 46730104:5
Player cantmove afx:slide=0.05,0.0
Crate cantmove afx:slide=0.05,0.0
PlayerDoomed destroy 33265508:20
CrateDoomed destroy 33265508:20
PlayerDoomed destroy afx:zoom=1.0,0.0
CrateDoomed destroy afx:zoom=1.0,0.0
endlevel 93409509
sfx0 90335506:3
=======
LEVELS
=======
section 1
hhhhhhhhhhhhhhhhh
hhhhhhhhthhhhhhhh
hhhhhhhh.hhhhhhhh
hhhh.........hhhh
h....###.###....h
h.####.....####.h
htc..........cc.h
h.####.....####.h
h....###.###[email protected]
hhhh.........hhhh
hhhhhhhh.hhhhhhhh
hhhhhhhhthhhhhhhh
hhhhhhhhhhhhhhhhh
section 2
#######
#.....#
#.....#
#.htt.#
#.....#
###.###
#.....#
#.@cc.#
#.....#
#.....#
#######
section 3
hhhhhhhh
[email protected]
hhhh##.h
#....#.#
#.#.c..#
#...t..#
###....#
#......#
#.....##
#....###
########
section 4
####hhh####
#####h#####
###..t#...#
###.#c#.c.#
###.#.#.c.#
###.#.#.c.#
###.#.#t.t#
###.#.#.#.#
h##.#.#...#
hhc.......#
h##..@...##
###########
section 5
#####hhh###
#####...###
#####...###
#####...###
#####.t.###
#...##.####
#.@....####
#........th
#...cc..###
#.......###
###########
section 6
###########
#####h#####
#####t#####
#####c#####
#....h....#
#.........#
#.....c...#
#[email protected]...#
#.....c...#
#.........#
###########
( ########### )
( #h.......t# )
( #.........# )
( #.........# )
( #.........# )
( #.........# )
( #.........# )
( #.........# )
( #...c@....# )
( #.........# )
( ########### )
( ########### )
( #h.......t# )
( #.........# )
( #.........# )
( #.........# )
( #.........# )
( #.........# )
( #.........# )
( #...c@....# )
( #.........# )
( ########### )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment