Skip to content

Instantly share code, notes, and snippets.

@m-ender
Created April 29, 2024 20:58
Show Gist options
  • Save m-ender/1fe2f609f3e8eaee4841e896a75e89e2 to your computer and use it in GitHub Desktop.
Save m-ender/1fe2f609f3e8eaee4841e896a75e89e2 to your computer and use it in GitHub Desktop.
title pending (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title title pending
author Thinky Collective
homepage https://thinkycollective.itch.io/
run_rules_on_level_start
realtime_interval 0.03
again_interval 0.06
( verbose_logging )
(Documentation is at https://docs.google.com/document/d/e/2PACX-1vQSvnN3sexjzbCILY7LjRxE2DSV_hMV5R4GNCzWbdcqM7_Rj9Mrezsm9y8zwMd19KZAirWRGGvDukKz/pub
READ THE PROJECT-SPECIFIC GUIDELINES BEFORE EDITING THIS FILE.
Dedicated to Jack Lance)
(DEVLOG)
(#0, zaratustra: Made seed project)
(#1, Deusovi: added sliding powerup mechanic)
(#2, Toombler: Added Obstruction Projectiles mechanic. These are projectiles which form when you bump into an Obstruction object. They make hazards traversable in one direction. Added temporary sfx.)
(#3, Anthony: Added 1 level with existing mechanic)
(#4, Karoo: ObstructionProjectiles no longer disappear if they hit a wall, instead they turn into ObstructionBlocks. Added a level.)
(#5, foxblit: Added Filter object and a level using filters and blocks. Put my level before Karoo's because it's easier)
(#6, marcos_don:
Added the Midas powerup (feel free to rename it) that allows the player to touch an obstructionblock and convert it into a normal obstruction, allowing for the production of more projectiles.
Added a simple level to introduce it (also, feel free to modify and/or reorder it).
Also fixed a typo in one of the solutions.
)
(#7, Heiegg:
Added interaction of Midas powerup with bridges: rotation by 90 degrees.
Added a simple level to introduce it. This level does not use the interaction of turning an Obstructionblock into an Obstruction.)
(#8, wryandbeary:
Added logic so that only one Midas powerup can be collected at a time.
Added Mixas collect sfx and ObstructionBlock transform sfx
Added a mostly linear level that uses a little bit of everything so far.)
(#9, Aspeon:
Added an introductory level using filters, put before foxblit's
Added a message as a header before tests and mystery levels)
(#10, pickten:
Added a level showcasing a (hopefully) fun use of Midas)
(#11, bbb651:
Added Midas Ray when you touch Midas Thing with Midas Touch
Added a level that uses Midas Ray)
(#12, csouvey:
Added a small level to smooth the difficulty curve in between the
very basic Midas Touch introduction and the larger levels making
use of its new interactions. No new mechanics.
Gave each sprite a unique silhouette. I have no attachment to these;
I just found the levels hard to parse with only colored squares.
Hopefully someone has a theme idea and replaces them with something nicer.)
(#13, Le Slo:
Added 3D effect to some of the sprites (the ones that are solid) and changed the color palette,
still no clear theme (makes me think of alien fauna)
Added a level that continues to explore the midas powerup and ray.
)
(#14, stevenjmiller: Added a level)
(#15, Menderbug:
Removed an emitter from Heiegg's level to force an alternative solution (with Heiegg permission)
)
(OTHER NOTES)
(potential mechanics, if you're stuck: more powerups? breakable walls? pushable boxes that are solid to a sliding player? -Deusovi)
(Some things that need to be decided (atm Things and Obstructions are not in a level together):
* What happens if you run into an Obstruction when sliding with powerup - is it destroyed, does anything else happen?
* What happens if the player hits the side of an obstruction bridge while sliding?
* What happens if a projectile goes over a powerup Thing - does it get launched, destroying stuff?
-Toombler )
(Be careful about your level's border, build it assuming there will be a tunnel to another level, or even include the tunnel if it might matter to your solution (for example, shooting obstruction projectiles out of the level should be prevented).
Obstruction blocks should be given more interactions, and maybe keep orientation, since the bridges keep orientation. -Karoo)
(Filters at the exit should ensure no smuggling powerups between levels. Entering a filter with a powerup breaks the trail effect, but I dont understand puzzlescript well enough to fix it -foxblit)
(The trail effect also breaks sometimes when the a powerup is lost for other reasons; e.g. on csouvey level pressing UDU at the beginning breaks the trail. I tried for a bit to fix this, but didn't make any progress -csouvey)
(If the player pickes up x number of Midas Things, should the player be able to execute Midas touches x times? (Here x is a positive integer.) -Heiegg)
(Resolved this as one midas at a time - midas pickups can't be collected when midas power is active. -wryandbeary)
(I noticed that if the player has Thing power-up on a bridge, they don't need to obey that bridge's orientation. Should that be fixed? Or made into a level? -souvey)
========
OBJECTS
========
(red lightred)
Background . (LOCKED)
#b2b47e
Exit X (LOCKED)
#f2f0e5
Wall # (LOCKED)
#7b7243 #4b4158
00000
00000
00000
00000
11111
Wall3D
#7b7243
.....
.....
.....
.....
00000
Hazard _ (LOCKED) (It is considered like a pit?)
#212123
Dead
transparent
Player @ (LOCKED)
#ede19e #d3a068
.000.
.000.
.000.
.111.
.....
Powerup3D
#ede19e
.....
.....
.....
.....
..0..
Powerup
green #ede19e #d3a068
.....
1.0.1
2...2
..1..
..2..
MidasTouch3D
#ede19e
.....
.....
.....
.....
...0.
MidasTouch
#ede19e #4b80ca #d3a068
0....
2.1..
....0
.0..2
.2...
ObstructionBlock o (temp sprite)
#b45252 #80493a
.000.
.000.
.000.
.111.
.....
Obstruction3D
#b45252 #d3a068 #80493a
.....
.....
.....
.....
.010.
Obstruction + (LOCKED)
#b45252 #d3a068 #80493a
00100
11211
00100
20102
.222.
ObstructionBridgeVertical (temp sprite)
#b45252
..0..
..0..
..0..
..0..
..0..
ObstructionBridgeHorizontal (temp sprite)
#b45252 #80493a
.....
.....
00000
11111
.....
ObstructionProjectileRight (temp sprite)
#b45252
.....
.000.
00000
.000.
.....
ObstructionProjectileUp (temp sprite)
#b45252
..0..
.000.
.000.
.000.
..0..
ObstructionProjectileLeft (temp sprite)
#b45252
.....
.000.
00000
.000.
.....
ObstructionProjectileDown (temp sprite)
#b45252
..0..
.000.
.000.
.000.
..0..
Filter & (temp sprite)
#e5ceb4
0.0.0
.....
0...0
.....
0.0.0
Thing = (LOCKED)
#567b79
00.00
0...0
.....
0...0
00.00
( the midas thing gives the player the midas touch,
i.e. the ability to transform exactly 1 ObstructionBlock
into an Obstruction. It replaces the previous powerup from
the player)
(feel free to change the shape and/or colors of these two,
but both should look similar to one another)
MidasThing m
#4b80ca
...0.
00.0.
..0..
.0.00
.0...
(Midas Ray is triggered when you touch a Midas Thing with Midas Touch,
propegates in the direction you touched it until it hits a Wall, Obstruction,
or Filter and acts like a Midas Touch while doing so.
Feel free to change if it stops at Obstruction Blocks or not if it doesn't break
any levels, I'm not quite sure about that.)
MidasRayVertical (temp sprite)
#4b80ca #a2dcc7
.101.
1001.
.101.
.1001
.101.
MidasRayHorizontal (temp sprite)
#4b80ca #a2dcc7
.1...
10111
00000
11101
...1.
MidasRayVerticalFaded (temp sprite)
#a2dcc7
..0..
.00..
..0..
..00.
..0..
MidasRayHorizontalFaded (temp sprite)
#a2dcc7
.....
.0...
00000
...0.
.....
TrailRight
#ede19e
.....
..0..
...0.
..0..
.....
TrailUp
#ede19e
.....
..0..
.0.0.
.....
.....
TrailLeft
#ede19e
.....
..0..
.0...
..0..
.....
TrailDown
#ede19e
.....
.....
.0.0.
..0..
.....
FadedTrail (this shouldn't show up, but it might look nicer if it did? idk)
#ede19e
.....
.....
..0..
.....
.....
ThingActive (this shouldn't show up)
red
0...0
.....
.....
.....
0...0
=======
LEGEND
=======
ObstructionBridge = ObstructionBridgeHorizontal or ObstructionBridgeVertical
ObstructionProjectileHorizontal = ObstructionProjectileRight or ObstructionProjectileLeft
ObstructionProjectileVertical = ObstructionProjectileUp or ObstructionProjectileDown
ObstructionProjectile = ObstructionProjectileRight or ObstructionProjectileUp or ObstructionProjectileLeft or ObstructionProjectileDown
Trail = TrailRight or TrailUp or TrailLeft or TrailDown
Solid = Wall or Obstruction or ObstructionBlock or Filter
SolidWithPowerup = Wall or Obstruction or ObstructionBlock
PowerupRemover = ThingActive or Filter
MidasRay = MidasRayVertical or MidasRayHorizontal
MidasRayFaded = MidasRayVerticalFaded or MidasRayHorizontalFaded
MidasRaySolid = Wall or Obstruction or Filter
=======
SOUNDS
=======
ObstructionProjectile create 66250503 (temporary sfx)
ObstructionBridge create 74156307 (temporary sfx)
ObstructionBlock create 24755704 (temporary sfx)
sfx0 73414302 (obstruction projectile breaks) (temporary sfx)
EndLevel 95195903 (temporary sfx)
Dead create 99730504 (temporary sfx)
sfx1 66808507 (player moves with powerup) (temporary sfx)
sfx3 29260500 (player gains powerup) (temporary sfx)
sfx4 77597700 (player loses powerup) (temporary sfx)
sfx5 30145708 (bridge rotates) (temporary sfx)
sfx6 51437503 (collects Midas Touch) (temporary sfx)
sfx7 84981703 (midas transform ObstructionBlock to Obstruction) (temporary sfx)
sfx8 90028501 (Midas Ray) (temporary sfx)
================
COLLISIONLAYERS
================
Background
Hazard, Exit
Thing, Dead, MidasThing
ObstructionBridge
Trail, FadedTrail
ObstructionProjectile, Filter
MidasRay, MidasRayFaded
Player, Wall, Obstruction, ObstructionBlock
ThingActive
Powerup
MidasTouch
Wall3D
Obstruction3D, Powerup3D, MidasTouch3D
======
RULES
======
late up [wall | no Wall3D] -> [wall | Wall3D]
[Obstruction3D] -> []
late down[ | Obstruction ] -> [Obstruction3D | Obstruction ]
(only allow state changes on player turns)
[> Player][Thing] -> [> Player][Thing ThingActive]
(and not when the player doesn't move)
[Player ThingActive] -> [Player]
(The Midas Rays from the previous state are first faded then removed)
[MidasRayFaded] -> []
[MidasRayVertical] -> [MidasRayVerticalFaded] again
[MidasRayHorizontal] -> [MidasRayHorizontalFaded] again
(Midas Touch converts a Midas Thing into a Midas Ray)
vertical [> Player MidasTouch | MidasThing no ObstructionBlock no Obstruction] -> [> Player no MidasTouch | > MidasRayVertical] sfx8 again
horizontal [> Player MidasTouch | MidasThing no ObstructionBlock no Obstruction] -> [> Player no MidasTouch | > MidasRayHorizontal] sfx8 again
[> MidasRay | no MidasRaySolid] -> [MidasRay | > MidasRay]
(Only a Midas Ray with action effects things, to avoid e.g. Obstruction Bridge toggle loop)
[MidasRay] -> [action MidasRay]
[action MidasRay ObstructionBlock] -> [MidasRay Obstruction]
[action MidasRay ObstructionBridgeVertical] -> [MidasRay ObstructionBridgeHorizontal]
[action MidasRay ObstructionBridgeHorizontal] -> [MidasRay ObstructionBridgeVertical]
(Midas Touch converts an obstructionBlock into an Obstruction)
[> Player MidasTouch | ObstructionBlock] -> [Player no MidasTouch | Obstruction] sfx7
(Midas touch moves with player)
[> Player MidasTouch] -> [> Player > MidasTouch]
(----Obstruction projectiles----)
(obstruction projectile moves turn by turn)
right [ObstructionProjectileright] -> [> ObstructionProjectileright]
up [ObstructionProjectileup ] -> [> ObstructionProjectileup ]
left [ObstructionProjectileleft ] -> [> ObstructionProjectileleft ]
down [ObstructionProjectiledown ] -> [> ObstructionProjectiledown ]
(obstruction projectile turns into block if it hits a wall, falls off bridge)
[> ObstructionProjectile | Solid] -> [ObstructionBlock | Solid]
[ObstructionBlock Hazard] -> [Hazard] sfx0
(create projectile when player bumps Obstruction with no powerup)
right [> Player no Powerup | Obstruction | no Solid] -> [Player | Obstruction | ObstructionProjectileright]
up [> Player no Powerup | Obstruction | no Solid] -> [Player | Obstruction | ObstructionProjectileup ]
left [> Player no Powerup | Obstruction | no Solid] -> [Player | Obstruction | ObstructionProjectileleft ]
down [> Player no Powerup | Obstruction | no Solid] -> [Player | Obstruction | ObstructionProjectiledown ]
(----Player movement----)
(fadeout trails)
[FadedTrail] -> []
right [no TrailRight no FadedTrail | TrailRight] -> [ | FadedTrail]
up [no TrailUp no FadedTrail | TrailUp ] -> [ | FadedTrail]
left [no TrailLeft no FadedTrail | TrailLeft ] -> [ | FadedTrail]
down [no TrailDown no FadedTrail | TrailDown ] -> [ | FadedTrail]
[> Player Powerup][Trail] -> [> Player Powerup][]
(sliding rules)
[> Player Powerup | no SolidWithPowerup] -> [FadedTrail | > Player Powerup] sfx1
+ [> Player Powerup | Obstruction] -> [> Player Powerup | ]
+ [> Player Filter Powerup] -> [Player Filter] sfx4
(create trails)
right [> Player Powerup][FadedTrail] -> [> Player Powerup][TrailRight]
up [> Player Powerup][FadedTrail] -> [> Player Powerup][TrailUp ]
left [> Player Powerup][FadedTrail] -> [> Player Powerup][TrailLeft ]
down [> Player Powerup][FadedTrail] -> [> Player Powerup][TrailDown ]
(remove powerup if player is on filter)
[Player Powerup Filter] -> [Player Filter] sfx4
(non-sliding)
[> Player | Wall] -> [Player | Wall]
(player can't walk on or off bridge facing other way)
horizontal [> Player | ObstructionBridgeVertical ] -> [Player | ObstructionBridgeVertical ]
vertical [> Player | ObstructionBridgeHorizontal] -> [Player | ObstructionBridgeHorizontal]
horizontal [> Player ObstructionBridgeVertical ] -> [Player ObstructionBridgeVertical ]
vertical [> Player ObstructionBridgeHorizontal] -> [Player ObstructionBridgeHorizontal]
(----Late rules----)
(obstruction projectiles fill hazards)
late [ObstructionProjectileHorizontal Hazard no ObstructionBridge] -> [Hazard ObstructionBridgeHorizontal]
late [ObstructionProjectileVertical Hazard no ObstructionBridge] -> [Hazard ObstructionBridgeVertical ]
(obstruction projectile falls in hazard without correct orientation bridge)
late [ObstructionProjectileHorizontal Hazard no ObstructionBridgeHorizontal] -> [Hazard] sfx0
late [Obstructionprojectilevertical Hazard no ObstructionBridgeVertical ] -> [Hazard] sfx0
(if obstruction projectiles still exist, use again to keep sliding them)
late [ObstructionProjectile] -> again
late [Player Hazard no ObstructionBridge] -> [Dead Hazard no Powerup] (LOCKED)
late [Player Exit] -> win (LOCKED)
(kinda jank maybe, but automatically place a filter on the exit to prevent powerup smuggling)
late [Exit no Filter] -> [Exit Filter]
(change player state when on "Thing" tile)
late [Player ThingActive no Powerup] -> [Player Powerup] sfx3
late [Player ThingActive Powerup] -> [Player] sfx4
late [Thing ThingActive] -> [Thing]
late [Player][MidasTouch] -> [Player MidasTouch] [MidasTouch]
late [MidasTouch no Player] -> [no MidasTouch]
late [Player MidasThing no MidasTouch] -> [Player MidasTouch no Powerup] sfx6
late [Player MidasTouch Powerup] -> [Player no MidasTouch Powerup]
late [Player MidasTouch Filter] -> [Player Filter no MidasTouch]
(MidasTouch rotates ObstructionBridge)
late [Player MidasTouch ObstructionBridgeVertical] -> [Player no MidasTouch ObstructionBridgeHorizontal] sfx5
late [Player MidasTouch ObstructionBridgeHorizontal] -> [Player no MidasTouch ObstructionBridgeVertical] sfx5
(3D graphics)
late[Powerup3D] -> []
late down[ | Powerup ] -> [Powerup3D | Powerup ]
late[MidasTouch3D] -> []
late down[ | MidasTouch ] -> [MidasTouch3D | MidasTouch ]
late down[Powerup3D | no Powerup] -> [ | ]
==============
WINCONDITIONS
==============
=======
LEVELS
=======
(LEVELS)
(Zaratustra
Solution: RRRR
A very difficult level. Can you solve it?)
######
#....#
@....X
#....#
######
(Deusovi
Solution: LLLLU URDLD URUDL UUUL (fixed a typo in the solution -- marcos_don)
A first attempt at playing with the sliding mechanic.)
(The mechanic seems pretty difficult to use on its own - I imagine things like destructible blocks might need to be added?)
###############
#.....#......##
#........#....#
#.............#
##...#........#
#...#......#..#
#__...........#
#._..........##
X._.......#.__#
#._........._=#
#._...#....._.#
#=_........._=#
#=_===#=====__#
##_......##._##
##===========##
##.......@...##
###############
(Toombler
Solution: https://imgur.com/a/tI2DwLM
A level using Obstruction Projectiles. These are created when you walk into an Obstruction. They make a walkable path over hazards in one direction.)
##########
#.._..####
#.._.+...#
#.._.____#
#___._...#
#.._._.+.#
@..___...#
#........#
#.._____##
#.+_..._.#
#.._..._.x
##########
(Anthony
Solution : https://imgur.com/a/XS5FipO
Exploring the projectile path and destroying Obstruction with sliding)
###x###__
#.._..###
@...+._.#
##..+__.#
_#.._..##
_#=__..#_
_##=.###_
__####___
(Aspeon
Solution: https://imgur.com/a/Dtizas0
An introductory filter level)
###@###
#.=...#
#...._#
##&#__#
#...__#
#..+__#
#..._##
#____##
##x####
(foxblit
Solution: https://imgur.com/a/dQdVbh2
UUUULLURRRDLULDDDDDLDLLLLDDRDDLDRUR
A level using filters and projectile blocks)
##########
#...__&..#
#...&_.+.#
#.+..##_##
#.=..#.__x
#...._..&#
#...._&..#
#...&_...#
###@######
(Menderbug)
##########
#......_##
#....+.__#
#....+.__#
@..=...__#
#..._____#
#..._...##
#..._.__##
#.+._&_..x
##########
(stevenjmiller
Solution: https://imgur.com/a/qMglwxK
Simple level about hfvat bar bofgehpgvba gb cerirag nabgure sebz shyyl oybpxvat bss n cngu)
###########
###.....#.#
###...+.#.#
@.......#.X
#..=....#.#
#.+_....#.#
#......+..#
###########
(Karoo
Solution: https://imgur.com/ReRvFk2
A level using projectile blocks)
######@#
#...__.#
#_.+...#
#_+..._#
#+...._#
#=.__..#
####x###
(marcos_don
Solution: rrruu lurrr rdrru uullu urruu u
A level introducing the Midas powerup, which enables
the player to convert one(1) obstructionblock into a
normal obstruction, which can generate more projectiles.
Feel free to modify and/or reorder it)
####x####
#_______#
#_______#
#.......#
#..+....#
#.......#
#.......#
@..m.o..#
#########
(csouvey
Solution: ULRRU LDRLU RDRLL ULUUD DU [or its symmetric equivalent]
Tiny level to introduce Midas touch + Thing powerup interactions
in a very constrained environment.
I put this before Heiegg's level because it seemed like a simpler
use of bridges [with Heiegg's level exploring the consequences
in more detail] but feel free to move after instead)
####x####
#___o___#
#___m___#
#.om_mo.#
#=..=..=#
####@####
(Heiegg
Solution of original level: https://imgur.com/z89f0A3
Solution of updated level: https://imgur.com/UOI8wNF -- Menderbug
A level that uses Midas touch to rotate bridges.)
#############
#...........@
#.._______..#
#.._....._..#
#.._._+.._..#
#..__._.__..#
#.._..m_.+..#
#.._....._..#
#.._____._..#
#.._..m.__..#
#..+.___.#..#
#..#__m._+..#
#.._______..#
######X######
(wryandbeary
Solution: DDDDR DDLDL RDDDU LRLUU LDRDD LLLRL RDRRD DD)
___#@##___
___#..#___
___#+.#___
__##m.####
__#m__.._#
###_._+.##
#m_=__.m=#
#_..m_####
###__##___
__##.#____
___#x#____
(pickten
Solution: LLDDL LLLLU LDUUD LUDLL LDDDD DDRUU UUUUU RRRLD RLURD LUUUD DDLLU UUUUU URRRD LULDL URDRU RRDLL LLLUL LDLLL LULUU DRD
Not wildly happy with this; feel free to modify and/or reorder)
#############
##...=.#.=.##
#.....###...@
#..#_____...#
#..#=____+..#
#..#.____...#
#..#....#####
#..#.m___mo.#
#..+..#.#...#
#######X#####
(bbb651
Level that intoduces Midas Ray
I wanted the solution to require changing the sequence of actions, skipping the Midas Ray at first (which is seemingly forced and serves as a Midas Ray tutorial at first) by wasting it on an Obstruction Block in the up-right area, and only doing it later, but I couldn't quite make it work..
Entrance could be moved to the left side in the same connected area if it doesn't connect well, and level could be reordered
Solution: UULLD RURRD RRRRU RULLL DLLUL UULLR UULDL LLLRD DRDDL DRRRR DLDD)
##########
#####....#
#m...m...#
#...+....#
#..m_m___#
##____.+.#
#..._..m.#
#.+.._&..#
###@#X####
(Le Slo: Level about protecting a Midas to then use it for a ray
Solution: https://imgur.com/a/JIslnW6)
################
#######m.#######
#######+.#...###
######_......###
###..._....m.###
@...+.___=.m...#
###..._....m.###
######_......###
#######_##..####
#######_########
#######x########
message Unit tests
(UNIT TESTS)
######
.+.._#
..._.#
.+._..
@.._.x
######
(RRRRR should not win - player destroyed by hazard
URURRDRRRD should win - player crosses
UUURDRRURRDDDR should not win - player doesn't move from over hazard
)
#######
......#
._+_._x
.+....#
@.....#
#######
(RULUUURDRRURRRDRR should win - can make projectile from perpendicular bridge)
#######
.+...&x
@.....#
#######
(URDRRRRRUR should win - projectile treats filter as solid)
########
mm.__&_X
...mm.m#
...++.+#
.......@
########
(LULLU LULUU RULDL LURRR DRRLU RRDRU R - should win, Midas Ray should flip bridge state and stop at Filters)
message Mystery levels
(MYSTERY LEVELS - read the guidelines for more information)
(MYSTERY LEVEL 1)
(Solution: RUURRRRRDDRRRRDLURU)
###X##### (LOCKED)
###.#...# (LOCKED)
###.#...# (LOCKED)
#..+....# (LOCKED)
#.......# (LOCKED)
@.....=.# (LOCKED)
#.......# (LOCKED)
######### (LOCKED)
(MYSTERY LEVEL 2)
(Solution: RUURRD)
####### (LOCKED)
#..=.## (LOCKED)
#.....# (LOCKED)
@.....# (LOCKED)
###...# (LOCKED)
###_### (LOCKED)
###.### (LOCKED)
###X### (LOCKED)
(MYSTERY LEVEL 3)
(Solution: RRDDDRRRULUURUUURR)
######## (LOCKED)
#..._..X (LOCKED)
#.#._..# (LOCKED)
@...___# (LOCKED)
#......# (LOCKED)
#....+.# (LOCKED)
#......# (LOCKED)
######## (LOCKED)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment