Skip to content

Instantly share code, notes, and snippets.

@pancelor
Last active November 29, 2025 00:01
Show Gist options
  • Select an option

  • Save pancelor/df464ef7532f0cf7e9719751e4c71902 to your computer and use it in GitHub Desktop.

Select an option

Save pancelor/df464ef7532f0cf7e9719751e4c71902 to your computer and use it in GitHub Desktop.
Bigger Tomato & Pumpkin Harvest (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Bigger Tomato & Pumpkin Harvest
author pancelor
homepage www.puzzlescript.net
( verbose_logging )
========
OBJECTS
========
Background
#4d4dff #4b4 #ff554d #ffdf4d #aa6f6c #3d3
11111
11111
11111
15151
55555
pumpkin0
#4dff90 #ffbf4d #ff9f5d
..000
..000
11110
11110
11221
pumpkin1
#4dff90 #ff9f5d #ffbf4d
000..
000..
01122
01122
21111
pumpkin2
#ffbf4d #ff9f5d
00110
00111
00111
..111
..111
pumpkin3
#ffbf4d #ff9f5d
01111
11111
11111
111..
111..
player0
#aa6f6c #ffdf4d
...00
...00
...00
...11
...11
player1
#aa6f6c #ffdf4d
00000
00000
00000
11111
11111
player2
#aa6f6c #ffdf4d
00...
00...
00...
11...
11...
player3
#ffdf4d #ff554d #4d4dff
...00
11111
11111
11111
...22
player4
#ffdf4d #ff554d #4d4dff
00000
11111
11111
11111
22222
player5
#ffdf4d #ff554d #4d4dff
00...
11111
11111
11111
22...
player6
#4d4dff
...00
...00
...00
...00
...00
player7
#4d4dff
00000
00000
0...0
0...0
0...0
player8
#4d4dff
00...
00...
00...
00...
00...
PlayerSmall
#4d4dff #4dff90 #ff554d #ffdf4d #aa6f6c #666680
.444.
.333.
22222
.000.
.0.0.
PlayerLU
#4d4dff #4dff90 #ff554d #ffdf4d #aa6f6c #666680
..444
..444
..333
..333
22222
PlayerLD
#4d4dff #4dff90 #ff554d #ffdf4d #aa6f6c #666680
22222
..000
..000
..00.
..00.
PlayerRU
#4d4dff #4dff90 #ff554d #ffdf4d #aa6f6c #666680
444..
444..
333..
333..
22222
PlayerRD
#4d4dff #4dff90 #ff554d #ffdf4d #aa6f6c #666680
22222
000..
000..
.00..
.00..
Tomato
#4d4dff #4dff90 #ff554d #ff9f5d #aa6f6c #666680
.....
.111.
33122
32222
.222.
Pumpkin_old
#4d4dff #4dff90 #ffbf4d #ff9f5d #aa6f6c #666680
.111.
22132
23233
23333
.333.
Splat
#4d4dff #4dff90 #cf757d #ffdf4d #aa6f6c #666680
.....
..2..
2222.
.2222
.....
SplatP
#4d4dff #4dff90 #dfc57d #ffdf4d #aa6f6c #666680
.....
.2.2.
22222
.22..
.....
BasketSmall
#4d4dff #4dff90 #ff554d #ffdf4d #aa6f6c #666680
.....
.444.
4...4
44444
.444.
BasketLU
#4d4dff #4dff90 #ff554d #ffdf4d #aa6f6c #666680 #cf757d
.....
..444
.4...
4....
66666
BasketLD
#4d4dff #4dff90 #ff554d #ffdf4d #aa6f6c #666680 #cf757d
64444
64444
.6444
.6444
..644
BasketRU
#4d4dff #4dff90 #ff554d #ffdf4d #aa6f6c #666680 #cf757d
.....
444..
...4.
....4
66664
BasketRD
#4d4dff #4dff90 #ff554d #ffdf4d #aa6f6c #666680 #cf757d
44444
44444
4444.
4444.
444..
Fence
#4d4dff #4dff90 #ff554d #ffdf4d #aa6f6c #666680 #cf757d
.....
.4.6.
44464
.4.6.
.4.6.
FireBG
#af050d
00000
00000
00000
00000
00000
WaterBG
#4d4dff
00000
00000
00000
00000
00000
EnergyBG
#ffbf4d
00000
00000
00000
00000
00000
LeafBG
#4dff90
00000
00000
00000
00000
00000
N0
#4b4
0...0
0.0.0
0.0.0
0.0.0
0...0
N1
#4b4
00.00
0..00
00.00
00.00
0...0
N2
#4b4
0...0
000.0
0...0
0.000
0...0
N3
#4b4
0...0
000.0
00..0
000.0
0...0
N4
#4b4
0.0.0
0.0.0
0...0
000.0
000.0
N5
#4b4
0...0
0.000
0...0
000.0
0...0
N6
#4b4
0...0
0.000
0...0
0.0.0
0...0
N7
#4b4
0...0
000.0
000.0
000.0
000.0
N8
#4b4
0...0
0.0.0
0...0
0.0.0
0...0
N9
#4b4
0...0
0.0.0
0...0
000.0
0...0
Counter
transparent
Increase
transparent
Subtract
transparent
gotpumpkin
transparent
membraneL
transparent
membraneR
transparent
membraneU
transparent
membraneD
transparent
spacetest0
transparent
spacetest1
transparent
spacetestfail
transparent
HWrap
#000
00000
.....
00000
.....
00000
VWrap
#000
0.0.0
0.0.0
0.0.0
0.0.0
0.0.0
=======
LEGEND
=======
. = Background
P = PlayerSmall
0 = player0
1 = player1
2 = player2
3 = player3
4 = player4
5 = player5
6 = player6
7 = player7
8 = player8
T = Tomato
F = Fence
U = Pumpkin_old
┌ = pumpkin0
┐ = pumpkin1
└ = pumpkin2
┘ = pumpkin3
B = BasketSmall
Ä = BasketLU
Ü = BasketLD
Ö = BasketRU
ß = BasketRD
□ = N0 and FireBG
─ = N0 and EnergyBG
old_player = PlayerLU or PlayerLD or PlayerRU or PlayerRD
old = old_player or Pumpkin_old or PlayerSmall
spacetestok = spacetest0 or spacetest1
spacetest = spacetestok or spacetestfail
Player = player0 or player1 or player2 or player3 or player4 or player5 or player6 or player7 or player8
PlayerHand = player3 or player5
PlayerVHand = player1 or player7
Pumpkin = pumpkin0 or pumpkin1 or pumpkin2 or pumpkin3
PumpkinL = pumpkin0 or pumpkin2
PumpkinR = pumpkin1 or pumpkin3
PumpkinU = pumpkin0 or pumpkin1
PumpkinD = pumpkin2 or pumpkin3
membrane = membraneL or membraneR or membraneU or membraneD
BG = FireBG or WaterBG or LeafBG or EnergyBG
Basket = BasketSmall or BasketLU or BasketLD or BasketRU or BasketRD
BasketL = BasketLU or BasketLD
BasketR = BasketRU or BasketRD
BasketU = BasketLU or BasketRU
BasketD = BasketLD or BasketRD
Pushable = Basket or Tomato or Pumpkin
Obstacle = Pushable or Fence or Player
Object = Pushable or Player
Digit = N0 or N1 or N2 or N3 or N4 or N5 or N6 or N7 or N8 or N9
NonZero = N1 or N2 or N3 or N4 or N5 or N6 or N7 or N8 or N9
=======
SOUNDS
=======
sfx0 67117309
sfx1 8344300
sfx2 85402100
sfx3 86702900
sfx4 18618903
sfx5 38497104
sfx6 9025501
sfx7 54794705
sfx8 23242904
sfx9 67652304
sfx10 59027504
(sfx11 26329104)
================
COLLISIONLAYERS
================
Background
HWrap
VWrap
BG
Digit
Splat
SplatP
Fence
old
Player, pushable
Counter
Increase
Subtract
membraneL
membraneR
membraneU
membraneD
gotpumpkin
spacetest
======
RULES
======
(mark first digit in counter)
right [digit | NO digit] -> [counter digit| ]
(player can push stuff)
[> Player | pushable] -> [> Player|> pushable]
horizontal [ Pushable HWrap | ... | > Player HWrap] -> [ > Pushable HWrap | ... | > Player HWrap]
vertical [ Pushable VWrap | ... | > Player VWrap] -> [ > Pushable VWrap | ... | > Player VWrap]
RIGID [moving basket][stationary basket] -> [moving basket][moving basket]
(rigid pumpkin movement)
[membrane] -> []
[PumpkinL] -> [PumpkinL membraneL]
[PumpkinR] -> [PumpkinR membraneR]
[PumpkinU] -> [PumpkinU membraneU]
[PumpkinD] -> [PumpkinD membraneD]
left [moving Pumpkin no membraneL | stationary Pumpkin] -> [moving Pumpkin | moving Pumpkin]
right [moving Pumpkin no membraneR | stationary Pumpkin] -> [moving Pumpkin | moving Pumpkin]
up [moving Pumpkin no membraneU | stationary Pumpkin] -> [moving Pumpkin | moving Pumpkin]
down [moving Pumpkin no membraneD | stationary Pumpkin] -> [moving Pumpkin | moving Pumpkin]
(
down [moving pumpkin0 | stationary pumpkin2] -> [moving pumpkin0 | moving pumpkin2]
down [stationary pumpkin0 | moving pumpkin2] -> [moving pumpkin0 | moving pumpkin2]
down [moving pumpkin1 | stationary pumpkin3] -> [moving pumpkin1 | moving pumpkin3]
down [stationary pumpkin1 | moving pumpkin3] -> [moving pumpkin1 | moving pumpkin3]
right [moving pumpkin0 | stationary pumpkin1] -> [moving pumpkin0 | moving pumpkin1]
right [stationary pumpkin0 | moving pumpkin1] -> [moving pumpkin0 | moving pumpkin1]
right [moving pumpkin2 | stationary pumpkin3] -> [moving pumpkin2 | moving pumpkin3]
right [stationary pumpkin2 | moving pumpkin3] -> [moving pumpkin2 | moving pumpkin3]
)
[> Tomato | Tomato] -> [Splat | Splat] sfx5
[> Tomato | Pumpkin] -> [Splat | Pumpkin] sfx5
(start splat)
left [> Pumpkin membraneL | Pumpkin] -> [action SplatP | action SplatP] sfx4
right [> Pumpkin membraneR | Pumpkin] -> [action SplatP | action SplatP] sfx4
up [> Pumpkin membraneU | Pumpkin] -> [action SplatP | action SplatP] sfx4
down [> Pumpkin membraneD | Pumpkin] -> [action SplatP | action SplatP] sfx4
(propagate splat)
left [action SplatP no membraneL | Pumpkin] -> [action SplatP | action SplatP] sfx4
right [action SplatP no membraneR | Pumpkin] -> [action SplatP | action SplatP] sfx4
up [action SplatP no membraneU | Pumpkin] -> [action SplatP | action SplatP] sfx4
down [action SplatP no membraneD | Pumpkin] -> [action SplatP | action SplatP] sfx4
(put items into basket)
startloop
[> Tomato | Basket][counter FireBG NO Increase] -> [ | Stationary Basket][Counter FireBG Increase] sfx1
[> Pumpkin | Basket][counter EnergyBG NO Increase] -> [gotpumpkin | Stationary Basket][Counter EnergyBG Increase] sfx3
left [Pumpkin no membraneL | gotpumpkin] -> [gotpumpkin | gotpumpkin] sfx3
right [Pumpkin no membraneR | gotpumpkin] -> [gotpumpkin | gotpumpkin] sfx3
up [Pumpkin no membraneU | gotpumpkin] -> [gotpumpkin | gotpumpkin] sfx3
down [Pumpkin no membraneD | gotpumpkin] -> [gotpumpkin | gotpumpkin] sfx3
[N0 Increase] -> [N1]
+ [N1 Increase] -> [N2]
+ [N2 Increase] -> [N3]
+ [N3 Increase] -> [N4]
+ [N4 Increase] -> [N5]
+ [N5 Increase] -> [N6]
+ [N6 Increase] -> [N7]
+ [N7 Increase] -> [N8]
+ [N8 Increase] -> [N9]
+ LEFT [N9 Increase | Digit] -> [N0 | Digit Increase]
+ LEFT [N9 BG Increase | No Digit] -> [N0 BG | N1 BG]
endloop
[gotpumpkin] -> []
[> Tomato | Fence] -> [Splat | Fence] sfx5
[> pushable | Fence] -> [pushable | Fence]
(use action key to push an element out of basket)
horizontal [action PlayerHand | Basket | NO obstacle][nonzero FireBG][Counter FireBG NO Subtract] -> [PlayerHand | Basket | Tomato][nonzero FireBG][Counter FireBG Subtract] sfx6
horizontal [action PlayerHand | Basket | Basket | NO obstacle][nonzero FireBG][Counter FireBG NO Subtract] -> [PlayerHand | Basket | Basket | Tomato][nonzero FireBG][Counter FireBG Subtract] sfx6
(test if pumpkin can be removed)
up [BasketU | ] -> [BasketU | spacetest0]
up [spacetest0 | ] -> [spacetest0 | spacetest1]
down [BasketD | ] -> [BasketD | spacetest1]
down [spacetest1 | ] -> [spacetest1 | spacetest0]
[spacetest obstacle] -> [spacetestfail obstacle]
[spacetestfail | spacetest] -> [spacetestfail | spacetestfail]
vertical [action PlayerVHand | Basket | Basket | NO spacetestfail][nonzero EnergyBG][Counter EnergyBG NO Subtract] -> [PlayerVHand | Basket | Basket | gotpumpkin][nonzero EnergyBG][Counter EnergyBG Subtract] sfx9
up [BasketL | gotpumpkin] -> [BasketL | Pumpkin2 gotpumpkin]
up [BasketR | gotpumpkin] -> [BasketR | Pumpkin3 gotpumpkin]
down [BasketL | gotpumpkin] -> [BasketL | Pumpkin0 gotpumpkin]
down [BasketR | gotpumpkin] -> [BasketR | Pumpkin1 gotpumpkin]
startloop
left [Pumpkin1 gotpumpkin | ] -> [Pumpkin1 gotpumpkin | Pumpkin0 gotpumpkin]
down [Pumpkin0 gotpumpkin | ] -> [Pumpkin0 gotpumpkin | Pumpkin2 gotpumpkin]
right [Pumpkin2 gotpumpkin | ] -> [Pumpkin2 gotpumpkin | Pumpkin3 gotpumpkin]
up [Pumpkin3 gotpumpkin | ] -> [Pumpkin3 gotpumpkin | Pumpkin1 gotpumpkin]
endloop
[gotpumpkin] -> []
[spacetest] -> []
(stop pumpkin movement)
left [> Pumpkin membraneL | object] -> [stationary Pumpkin membraneL | object]
right [> Pumpkin membraneR | object] -> [stationary Pumpkin membraneR | object]
up [> Pumpkin membraneU | object] -> [stationary Pumpkin membraneU | object]
down [> Pumpkin membraneD | object] -> [stationary Pumpkin membraneD | object]
(propagate stop)
left [stationary Pumpkin no membraneL | moving Pumpkin] -> [stationary Pumpkin | stationary Pumpkin]
right [stationary Pumpkin no membraneR | moving Pumpkin] -> [stationary Pumpkin | stationary Pumpkin]
up [stationary Pumpkin no membraneU | moving Pumpkin] -> [stationary Pumpkin | stationary Pumpkin]
down [stationary Pumpkin no membraneD | moving Pumpkin] -> [stationary Pumpkin | stationary Pumpkin]
(resolve all movement manually, so we can use remaining movement to determine automatic item usage)
[> pushable | No object] -> [ | pushable]
horizontal [No object HWrap | ... | > Pushable HWrap] -> [Pushable HWrap | ... | HWrap]
vertical [No object VWrap | ... | > Pushable VWrap] -> [Pushable VWrap | ... | VWrap]
(make wrapping work for player too)
[> player | no Player no pushable] -> [ | player]
horizontal [ NO Pushable HWrap | ... | > Player HWrap] -> [ Player HWrap | ... | HWrap]
vertical [ NO Pushable VWrap | ... | > Player VWrap] -> [ Player VWrap | ... | VWrap]
[orthogonal player] -> cancel
LEFT [N0 Subtract| ] -> [N9 | Subtract]
+ LEFT [Digit | N1 BG Subtract| No Digit] -> [Digit | no BG no digit | ]
+ [N1 Subtract] -> [N0]
+ [N2 Subtract] -> [N1]
+ [N3 Subtract] -> [N2]
+ [N4 Subtract] -> [N3]
+ [N5 Subtract] -> [N4]
+ [N6 Subtract] -> [N5]
+ [N7 Subtract] -> [N6]
+ [N8 Subtract] -> [N7]
+ [N9 Subtract] -> [N8]
==============
WINCONDITIONS
==============
=======
LEVELS
=======
...................
.fffffffffffffffff.
.ftttttt.tttttt.tf.
.ftt.tttttttt┌┐ttf.
.f.t┌┐t..012t└┘┌┐f.
.f.t└┘täö345┌┐t└┘f.
.ftttttüß678└┘.ttf.
.ft┌┐ttttttttttttf.
.f.└┘tttt┌┐ttttt.f.
.ftttt..t└┘.tt.ttf.
.fffffffffffffffff.
........─..□.......
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment