Skip to content

Instantly share code, notes, and snippets.

@pancelor
Created November 29, 2025 05:40
Show Gist options
  • Select an option

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

Select an option

Save pancelor/4589fbedcb8dd9e1383e446d39d89deb to your computer and use it in GitHub Desktop.
Biggest Tomato & Pumpkin Harvest (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Biggest Tomato & Pumpkin Harvest
author pancelor
homepage www.puzzlescript.net
(verbose_logging)
========
OBJECTS
========
Background
#4d4dff #4b4 #ff554d #ffdf4d #aa6f6c #3d3
11111
11111
11111
15151
55555
Player
#4d4dff #4dff90 #ff554d #ffdf4d #aa6f6c #666680
.444.
.333.
22222
.000.
.0.0.
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..
BIgTomatoGreen 1
#4dff90
BigTomatoOrange 2
#ff9f5d
BigTomatoRed 3
#ff554d
Tomato_tiny t
#4d4dff #4dff90 #ff554d #ff9f5d #aa6f6c #666680
.....
.111.
33122
32222
.222.
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
Dying
transparent
spacetest0
green
spacetest1
blue
spacetestfail
yellow
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 = Player
F = Fence
┌ = pumpkin0
┐ = pumpkin1
└ = pumpkin2
┘ = pumpkin3
B = BasketSmall
Ä = BasketLU
Ü = BasketLD
Ö = BasketRU
ß = BasketRD
□ = N0 and FireBG
─ = N0 and EnergyBG
spacetestok = spacetest0 or spacetest1
spacetest = spacetestok or spacetestfail
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
BigTomato = BigTomatoRed or BIgTomatoGreen or BigTomatoOrange
tomato = Tomato_tiny or BigTomato
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
Player, pushable
Counter
Increase
Subtract
membraneL
membraneR
membraneU
membraneD
gotpumpkin
spacetest
Dying
======
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 [moving BigTomato][stationary BigTomato] -> [moving BigTomato][moving BigTomato]
(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 | stationary Tomato] -> [Tomato Dying | Tomato Dying] sfx5
[> Tomato | Pumpkin] -> [Tomato Dying | Pumpkin] sfx5
[BigTomato Dying][BigTomato no Dying] -> [BigTomato Dying][Splat]
[Tomato Dying] -> [Splat]
(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
[> BigTomato | Basket][counter FireBG NO Increase] -> [Dying BigTomato | Stationary Basket][Counter FireBG Increase] sfx1
[Dying BigTomato][BigTomato no Dying] -> [Dying BigTomato][]
[Dying BigTomato] -> []
[> 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] -> []
[> BigTomato | Fence] -> [Dying BigTomato | Fence] sfx5
[Dying BigTomato][BigTomato no Dying] -> [Dying BigTomato][Splat]
[Dying BigTomato] -> [Splat]
[> Tomato | Fence] -> [Splat | Fence] sfx5
[> pushable | Fence] -> [pushable | Fence]
(use action key to push an element out of basket)
horizontal [action Player | Basket | NO obstacle][nonzero FireBG][Counter FireBG NO Subtract] -> [Player | Basket | Tomato_tiny][nonzero FireBG][Counter FireBG Subtract] sfx6
horizontal [action Player | Basket | Basket | NO obstacle][nonzero FireBG][Counter FireBG NO Subtract] -> [Player | Basket | Basket | Tomato_tiny][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 Player | Basket | Basket | NO spacetestfail][nonzero EnergyBG][Counter EnergyBG NO Subtract] -> [Player | 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
==============
(no way to win)
=======
LEVELS
=======
...................
.fffffffffffffffff.
.fttttt111111tt.tf.
.ftt.tt111111ttttf.
.f.tt2222113333ttf.
.f.äö2222113333ttf.
.ftüß2233333333ttf.
.fp┌┐2233333333ttf.
.f.└┘tt333333tt┌┐f.
.ftttt.333333t.└┘f.
.fffffffffffffffff.
........─..□.......
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment