Skip to content

Instantly share code, notes, and snippets.

@ncrecc
Created February 4, 2021 20:50
Show Gist options
  • Save ncrecc/f5c054f615797307a0743e2d1b4c7464 to your computer and use it in GitHub Desktop.
Save ncrecc/f5c054f615797307a0743e2d1b4c7464 to your computer and use it in GitHub Desktop.
Project 5 (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Project 5
author Thinky Collective
homepage www.puzzlescript.net
verbose_logging
( DEV LOG )
(#0 Le Slo: Created polarity mechanics between crates. all graphics are squares. Added a level.)
(#1 knexator: Added three very simple levels.)
(#2 pancelor: made placeholder graphics easier to parse visually; still placeholder tho. added swap powerup. added two levels.)
(#3 velleic: Added a simple level in the middle)
(#4 jcGyo: Fixed connected crates moving bug when the main one being pushed can't move)
(#5 Cantaloupe: Fix Swap overlap with Player bug when pushed into something which blocks it. Added two levels)
(#6 ncrecc: added, uhh, maybe more stuff than i should. added a lava/wicker mechanic, added a magnetic player mechanic, and fixed a movement bug when three same-polarity objects are in a line.)
(#7 ncrecc: added pins)
(#8 ncrecc: added 6 levels and remade the old wicker level. made it so magnetized player can consume swap blocks by pressing space while adjacent to them. probably some misc bugfixes related to fire)
========
OBJECTS
========
Background
GREEN
Target
transparent DarkBlue
00000
01110
01010
01110
00000
Wall
BROWN
PlayerNeutral
transparent Orange
01110
11111
11111
11111
01110
CrateNeutral (use sparingly)
Orange
CrateMinus
Blue
CratePlus
Red
Swap
transparent lightgreen
00000
01110
01110
01110
00000
LevelBound
DARKGREY
PlayerMinus
transparent Blue
01110
11111
11111
11111
01110
PlayerPlus
transparent Red
01110
11111
11111
11111
01110
TempHorizontal
#ff00ff
.....
.....
00000
.....
.....
TempVertical
#ff00ff
..0..
..0..
..0..
..0..
..0..
Lava
Red Orange
00011
01100
10001
00110
11000
Flame
Yellow Orange
..0..
0.000
00100
01110
.010.
Wicker
Darkbrown
00000
0.0.0
00.00
0.0.0
00000
PinInactive (any crates/wicker on this will be immobile. active/inactive is purely visual cue to demonstrate it won't pin down the player)
Purple
.....
.0.0.
.....
.0.0.
.....
PinActive
Pink
.....
.0.0.
.....
.0.0.
.....
=======
LEGEND
=======
player = PlayerNeutral or PlayerMinus or PlayerPlus
. = Background
, = LevelBound
# = Wall
P = PlayerNeutral
q = PlayerNeutral and Target
O = Target
* = CratePlus
@ = CrateMinus
% = Swap
! = CratePlus and Target
$ = CrateMinus and Target
& = Swap and Target
b = PlayerMinus
d = PlayerPlus
+ = Lava
x = Wicker
: = PinInactive
; = PinActive and Wicker
? = Swap and Wall
" = PinActive and CrateMinus
Crate = CrateMinus or CratePlus or CrateNeutral or Wicker
Pushable = Crate or Swap
BlocksMovement = Crate or Wall
Minus = CrateMinus or PlayerMinus
Plus = CratePlus or PlayerPlus
Temp = TempHorizontal or TempVertical
Flammable = Swap or Player or Wicker
HeatConductor = CrateMinus or CratePlus or CrateMinus (the crates are steel. the player is organic. magnetic players (player-, player+) are either organic magnets (???), beings with steel skin and non-steel vital organs, or robots that explode in high heat)
Pin = PinInactive or PinActive
Heavy = CrateNeutral or CrateMinus or CratePlus
Light = Wicker or Swap
=======
SOUNDS
=======
Flame create 62546102
PinActive create 55825507
PinInactive create 56452307
( 58682707 (magnet repel))
( 22599907 (push crate))
( 57745307 (push wicker))
sfx1 12191303 (swap consume)
================
COLLISIONLAYERS
================
TempHorizontal
TempVertical
Background
Lava
Player, Wall, Crate, LevelBound
Swap
Target, Pin
Flame
======
RULES
======
startloop
[action PlayerPlus|Swap] -> [action PlayerMinus|] sfx1
[action PlayerMinus|Swap] -> [action PlayerPlus|] sfx1
endloop
[> Player | Wall] -> [Player | Wall]
[> Player | Pushable no Pin] -> [ > Player | > Pushable no Pin]
[> Swap | Swap no Pin] -> [> Swap | > Swap no Pin]
(Currently Swaps are able to phase through Walls, if that should not be allowed, replace LevelBound with Wall)
[> Swap | LevelBound] -> [Swap | LevelBound]
[> Swap | stationary Swap] -> [Swap | Swap]
[> Player | stationary Swap] -> [Player | Swap]
vertical [Minus|Minus|Minus] -> [Minus|Minus TempVertical|Minus]
vertical [Plus|Plus|Plus] -> [Plus|Plus TempVertical|Plus]
horizontal [Minus|Minus|Minus] -> [Minus|Minus TempHorizontal|Minus]
horizontal [Plus|Plus|Plus] -> [Plus|Plus TempHorizontal|Plus]
vertical [Minus no TempVertical | Minus no TempVertical] -> [< Minus | > Minus]
vertical [Minus TempVertical | Minus no TempVertical] -> [Minus TempVertical | > Minus]
horizontal [Minus no TempHorizontal | Minus no TempHorizontal ] -> [< Minus | > Minus]
horizontal [Minus TempHorizontal | Minus no TempHorizontal] -> [Minus TempHorizontal | > Minus]
vertical [Plus no TempVertical | Plus no TempVertical] -> [< Plus | > Plus]
vertical [Plus TempVertical | Plus no TempVertical] -> [Plus TempVertical | > Plus]
horizontal [Plus no TempHorizontal | Plus no TempHorizontal] -> [< Plus | > Plus]
horizontal [Plus TempHorizontal | Plus no TempHorizontal] -> [Plus TempHorizontal | > Plus]
[> Crate Pin] -> [Crate Pin]
[> Crate | Crate no Pin] -> [> Crate | > Crate no Pin]
[> Crate | stationary BlocksMovement] -> [Crate | BlocksMovement]
[moving Minus | stationary Plus] -> [moving Minus | moving Plus]
+[moving Plus | stationary Minus] -> [moving Plus | moving Minus]
[> Crate | Crate no Pin] -> [> Crate | > Crate no Pin] (kludge for wicker/cratesneutral being pushed by connected magnet blocks)
[> Crate | stationary BlocksMovement] -> [Crate | BlocksMovement] (aaa)
[Flame stationary HeatConductor Lava] -> [action Flame stationary HeatConductor Lava]
[Flame moving HeatConductor Lava] -> [moving Flame moving HeatConductor Lava]
[stationary Flame stationary HeatConductor|moving Flame] -> [action Flame HeatConductor|moving Flame]
[stationary Flame] -> []
[> Crate Pin] -> [Crate Pin]
(if you uncomment this bit it should make it so that any magnets attracted to a magnet that's stuck on a pin, or any magnets attracted to *those* magnets, and so on, will be immobile. however it doesn't really line up with how magnets aren't rigid otherwise, e.g. if a magnet attached to a magnet makes a move that results in its attachment moving into a wall, that doesn't cancel the magnet's move, it just separates the magnets.)
(
[CratePlus Pin] -> [action CratePlus Pin]
[CrateMinus Pin] -> [action CrateMinus Pin]
startloop
[action CrateMinus|CratePlus] -> [action CrateMinus|action CratePlus]
[action CratePlus|CrateMinus] -> [action CratePlus|action CrateMinus]
endloop
)
late [CratePlus Swap] -> [CrateMinus] sfx1
late [CrateMinus Swap] -> [CratePlus] sfx1
late [PlayerPlus Swap] -> [PlayerMinus] sfx1 (how would this even happen?)
late [PlayerMinus Swap] -> [PlayerPlus] sfx1
late[Minus | Minus] -> again
late[Plus | Plus] -> again
late [Flammable Lava] -> [Flame Lava]
late [HeatConductor Lava] -> [HeatConductor Flame Lava]
startloop
late [Flame|Flammable] -> [Flame|Flame]
late [Flame|HeatConductor] -> [Flame|HeatConductor Flame]
endloop
late [Flame] -> again
late [no Background] -> [Background]
late [Temp] -> []
late [Crate PinInactive] -> [Crate PinActive]
late [PinActive no Crate] -> [PinInactive]
==============
WINCONDITIONS
==============
no Wicker
All Flame on HeatConductor (kludge; don't win until everything flammable is finished burning)
some Player
All Target on Crate
=======
LEVELS
=======
(Le Slo)
############
#####p.#####
#*###..###@#
#..........#
#o#..@*..#o#
###......###
############
(knexator)
####..
#.o#..
#..###
#!p..#
#..@.#
#..###
####..
(knexator)
####..
#.o#..
#..###
#!p..#
#..*.#
#..###
####..
(velleic)
#####..
#.oo#..
##.*###
#...*p#
#*...##
#o..##.
#####..
(knexator)
........
..@..*..
...oo...
...oo...
..p..@..
.*......
(pancelor)
.#####..
.#...###
##@..*o#
#...@p##
#..o###.
#.o.#...
#####...
(pancelor)
###..
#o###
#.$.#
#@..#
#..p#
#%.##
#..#.
####.
(Cantaloupe)
########
###....#
###*.p.#
###@#..#
###*#%.#
#o.o.o.#
########
(Cantaloupe)
message requires Swap can phase through Wall
,,,,,,,,,
,#######,
,#....o#,
,#.#*#.#,
,#.#$#.#,
,#.###.#,
,#.p%%.#,
,#.....#,
,#######,
,,,,,,,,,
(ncrecc)
##########
#::::::::#
#:.....q:#
#:.::::::#
#:......:#
#::::::.:#
#:@.....:#
#::::::::#
##########
(ncrecc)
#########
#..:::::#
#..:...:#
#.@:@:."#
#p...:..o
#.@:@:.:#
#..:...:#
#..:::::#
#########
(ncrecc)
message "Oh no, lava! My only weakness!"
message "Well, that and my poor grasp on the laws of thermodynamics."
,#+++++++++
,#++..o.+++
##+.......+
+++...o...+
p@...@+.@.+
+++...o...+
##+++++++++
(ncrecc)
message "Who left this firewood laying around?"
#######
##.p.##
##$.$##
#.....#
#..x..#
#.....#
#..+..#
#######
(ncrecc)
,######
,#....#
##.@..#
#.x:xp#
#..@..#
++..;.#
+++...#
+++####
message "I have to push the magnets!"
message "No, PlayerNeutral, you are the magnets."
message And then PlayerMinus was a magnet.
(ncrecc)
#########
#.......#
#...b...#
#.@.o.@.#
#.o.@.o.#
#.......#
#########
(ncrecc)
message "Hm, I wonder if I can still reach for those swap blocks..."
message (Press SPACE to consume adjacent swap blocks)
(this one's a little boring)
###?????###
#.........#
?..*.+.ob.?
?.*.o+*.o.?
#.........#
###?????###
(ncrecc; test)
(
########
#x..p..#
#..*...#
#...:..#
#..@.@.#
#......#
#...@.@#
########
)
#######
#.....#
#.....#
#.....#
#.....#
#.....#
#######
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment