Created
October 20, 2025 22:11
-
-
Save increpare/ce1ecd4e664aa7e4727dee1e6791d81f to your computer and use it in GitHub Desktop.
Volcano (PuzzleScript Script)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Play this game by pasting the script in http://www.puzzlescript.net/editor.html |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| title Volcano | |
| author Nohpal | |
| homepage www.puzzlescript.net | |
| color_palette 4 | |
| ======== | |
| OBJECTS | |
| ======== | |
| (This is my pallete: http://www.somersault1824.com/wp-content/uploads/2015/02/color-blindness-palette.png) | |
| DeathMask | |
| black | |
| ..... | |
| ..... | |
| ..... | |
| ..... | |
| ..... | |
| DeathBlack | |
| Black | |
| Background | |
| GREEN | |
| Lava1 | |
| darkred | |
| Lava2 | |
| orange | |
| Lava3 | |
| yellow | |
| Wall | |
| darkbrown | |
| PlayerS | |
| Blue lightgrey | |
| .000. | |
| .010. | |
| 00000 | |
| .000. | |
| .0.0. | |
| PlayerR | |
| Blue lightgrey | |
| .000. | |
| .001. | |
| 00000 | |
| .000. | |
| .0.0. | |
| PlayerL | |
| Blue lightgrey | |
| .000. | |
| .100. | |
| 00000 | |
| .000. | |
| .0.0. | |
| PlayerU | |
| Blue lightgrey | |
| .010. | |
| .000. | |
| 00000 | |
| .000. | |
| .0.0. | |
| PlayerD | |
| Blue lightgrey | |
| .000. | |
| .000. | |
| 00100 | |
| .000. | |
| .0.0. | |
| Friend | |
| lightblue darkgray | |
| .000. | |
| .010. | |
| 00000 | |
| .000. | |
| .0.0. | |
| FriendSL | |
| lightblue darkgray | |
| .000. | |
| .100. | |
| 00000 | |
| .000. | |
| .0.0. | |
| FriendSR | |
| lightblue darkgray | |
| .000. | |
| .001. | |
| 00000 | |
| .000. | |
| .0.0. | |
| FriendSU | |
| lightblue darkgray | |
| .010. | |
| .000. | |
| 00000 | |
| .000. | |
| .0.0. | |
| FriendSD | |
| lightblue darkgray | |
| .000. | |
| .000. | |
| 00100 | |
| .000. | |
| .0.0. | |
| DeadMan | |
| Black | |
| .000. | |
| .000. | |
| 00000 | |
| .000. | |
| .0.0. | |
| HDots | |
| white | |
| ..... | |
| ..... | |
| 0.0.0 | |
| ..... | |
| ..... | |
| VDots | |
| white | |
| ..0.. | |
| ..... | |
| ..0.. | |
| ..... | |
| ..0.. | |
| DangerMark1 | |
| yellow | |
| ..... | |
| ..... | |
| ..... | |
| .0.0. | |
| ..... | |
| Crate | |
| Brown | |
| Token | |
| White | |
| Token2 | |
| White | |
| UToken | |
| White | |
| DToken | |
| White | |
| LToken | |
| White | |
| RToken | |
| White | |
| PlayerIntention | |
| White | |
| WinToken | |
| White | |
| ======= | |
| LEGEND | |
| ======= | |
| Player = PlayerR or PlayerL or PlayerU or PlayerD or PlayerS | |
| . = Background | |
| # = Wall | |
| P = PlayerS | |
| f = Friend | |
| * = Crate | |
| 1 = Lava1 | |
| Heat = Lava1 or Lava2 or Lava3 | |
| VDanger = VDots or Heat | |
| HDanger = HDots or Heat | |
| HeatBlock = Heat or Wall or Crate or DeadMan | |
| ScaredFriend = FriendSL or FriendSR or FriendSD or FriendSU | |
| AnyFriend = Friend or ScaredFriend | |
| Person = Player or AnyFriend | |
| AllBlock = HeatBlock or Person | |
| ======= | |
| SOUNDS | |
| ======= | |
| crate move 57745507 | |
| player move 63832507 | |
| player action 6827 | |
| undo 12880706 | |
| restart 47704700 | |
| sfx0 97129501 (friend fear) | |
| sfx1 40876302 (lose) | |
| sfx2 91940908 (win) | |
| ================ | |
| COLLISIONLAYERS | |
| ================ | |
| Token, Token2 | |
| WinToken | |
| UToken | |
| DToken | |
| LToken | |
| RToken | |
| PlayerIntention | |
| Background | |
| Heat | |
| Person, Wall, Crate, DeadMan | |
| HDots | |
| VDots | |
| DangerMark1 | |
| DeathMask, DeathBlack | |
| ====== | |
| RULES | |
| ====== | |
| (once someone is dead, no more moves!) | |
| [ DeadMan ] -> cancel | |
| (Set Friend graphics back) | |
| [ ScaredFriend ] -> [ Friend no ScaredFriend ] | |
| (Remove dots) | |
| [ HDots ] -> [ no HDots ] | |
| [ VDots ] -> [ no VDots ] | |
| (Player Movement and Crate Movement) | |
| [ > Player | Crate ] -> [ > Player | > Crate ] | |
| [ > Crate | AllBlock ] -> cancel | |
| [ > Player | Wall ] -> cancel | |
| [ > Player | no PlayerIntention ] -> [ > Player | PlayerIntention ] | |
| (Friends run away from heat) | |
| (-Check to see if friends see heat horizontaly) | |
| Horizontal [ Heat | no Allblock no Token ] -> [ Heat | > Token ] | |
| Horizontal [ Heat | perpendicular player no Token ] -> [ Heat | perpendicular player > Token ] | |
| Horizontal [ > Token | no Allblock no token ] -> [ No Token | > Token ] | |
| Horizontal [ > Token | perpendicular player no Token ] -> [ No Token | perpendicular player > Token ] | |
| Horizontal [ heat | stationary friend ] -> [ Heat | > friend ] | |
| Horizontal [ > Token | stationary friend ] -> [ > Token | > friend ] | |
| Horizontal [ heat | < friend ] -> [ heat | stationary friend ] | |
| Horizontal [ > Token | < Friend ] -> [ > token | stationary friend ] | |
| [Token] -> [ no token] | |
| (-stop friends from running horizontaly into walls when they could run vertically away, except when blocked by a player or another friend who isn't moving directly into you) | |
| [ > Friend | HeatBlock ] -> [ Stationary friend | HeatBlock ] | |
| [ > Friend | stationary person ] -> [ stationary friend | stationary person ] | |
| [ > Friend | < person ] -> [ stationary friend | < person ] | |
| [ > Friend | action person ] -> [ stationary friend | action person ] | |
| [ > Friend | PlayerIntention ] -> [ stationary friend | PlayerIntention ] | |
| (-Check to see if friends see heat vertically) | |
| Vertical [ Heat | no AllBlock no Token ] -> [ Heat | > Token ] | |
| Vertical [ Heat | perpendicular player no Token ] -> [ Heat | perpendicular player > Token ] | |
| Vertical [ > Token | no Allblock no token ] -> [ No Token | > Token ] | |
| Vertical [ > Token | perpendicular player no Token ] -> [ No Token | perpendicular player > Token ] | |
| Vertical [ heat | stationary friend ] -> [ Heat | > friend ] | |
| Vertical [ > Token | stationary friend ] -> [ > Token | > friend ] | |
| Vertical [ heat | < friend ] -> [ heat | stationary friend ] | |
| Vertical [ > Token | < Friend ] -> [ > token | stationary friend ] | |
| [Token] -> [ no token] | |
| [ > Friend | PlayerIntention ] -> [ stationary friend | PlayerIntention ] | |
| [ PlayerIntention ] -> [ no PlayerIntention ] | |
| (Set Player graphic) | |
| Up [ > Player ] -> [ > PlayerU ] | |
| Down [ > Player ] -> [ > PlayerD ] | |
| Right [ > Player ] -> [ > PlayerR ] | |
| Left [ > Player ] -> [ > PlayerL ] | |
| [ stationary player ] -> [ stationary PlayerS ] | |
| [ action player ] -> [ action PlayerS ] | |
| (Lava spreads) | |
| Late [ Lava3 | No HeatBlock ] -> [ Lava3 | Lava1 ] | |
| (Lava Kills) | |
| Late [Player Heat] -> [DeadMan no Heat] sfx1 | |
| Late [Friend Heat] -> [DeadMan no Heat] sfx1 | |
| (Lava Cools) | |
| Late [ Lava3 ] -> [ Wall ] | |
| Late [ Lava2 ] -> [ Lava3 ] | |
| Late [ Lava1 ] -> [ Lava2 ] | |
| (Check visibility) | |
| (left) | |
| Late Left [ Friend | no Allblock no Token ] -> [ Friend | Token ] | |
| Late Left [ Token | no Allblock no Token ] -> [ Token | Token ] | |
| Late Right [ Heat | Token no HDots ] -> [ Heat | no Token HDots ] | |
| Late Right [ HDots | Token no HDots ] -> [ HDots | no Token HDots ] | |
| Late [ Token ] -> [ no Token ] | |
| (right) | |
| Late Right [ Friend | no Allblock no Token ] -> [ Friend | Token ] | |
| Late Right [ Token | no Allblock no Token ] -> [ Token | Token ] | |
| Late Left [ Heat | Token no HDots ] -> [ Heat | no Token HDots ] | |
| Late Left [ HDots | Token no HDots ] -> [ HDots | no Token HDots ] | |
| Late [ Token ] -> [ no Token ] | |
| (up) | |
| Late Up [ Friend | no Allblock no Token ] -> [ Friend | Token ] | |
| Late Up [ Token | no Allblock no Token ] -> [ Token | Token ] | |
| Late Down [ Heat | Token no VDots ] -> [ Heat | no Token VDots ] | |
| Late Down [ VDots | Token no VDots ] -> [ VDots | no Token VDots ] | |
| Late [ Token ] -> [ no Token ] | |
| (down) | |
| Late Down [ Friend | no Allblock no Token ] -> [ Friend | Token ] | |
| Late Down [ Token | no Allblock no Token ] -> [ Token | Token ] | |
| Late Up [ Heat | Token no VDots ] -> [ Heat | no Token VDots ] | |
| Late Up [ VDots | Token no VDots ] -> [ VDots | no Token VDots ] | |
| Late [ Token ] -> [ no Token ] | |
| (Make friend look towards danger they can currently run from) | |
| Late Right [ HDanger | Friend | no HDanger no AllBlock ] -> [ HDanger | FriendSL no Friend | no HDanger no AllBlock ] | |
| Late Left [ HDanger | Friend | no HDanger no AllBlock ] -> [ HDanger | FriendSR no Friend | no HDanger no AllBlock ] | |
| Late Down [ VDanger | Friend | no VDanger no AllBlock ] -> [ VDanger | FriendSU no Friend | no VDanger no AllBlock ] | |
| Late Up [ VDanger | Friend | no VDanger no AllBlock ] -> [ VDanger | FriendSD no Friend | no VDanger no AllBlock ] | |
| (Make friend look towards danger they can't currently run from) | |
| Late Right [ HDanger | Friend ] -> [ HDanger | no Friend FriendSL ] | |
| Late Left [ HDanger | Friend ] -> [ HDanger | no Friend FriendSR ] | |
| Late Down [ VDanger | Friend ] -> [ VDanger | no Friend FriendSU ] | |
| Late Up [ VDanger | Friend ] -> [ VDanger | no Friend FriendSD ] | |
| (add danger mark) | |
| Late [ DangerMark1 ] -> [ no DangerMark1 ] | |
| Late Up [ ScaredFriend | no DangerMark1 ] -> [ ScaredFriend | DangerMark1 ] sfx0 | |
| (make friend look towards you if they can't see danger - but only after danger mark added) | |
| Late Up [ Player | no UToken ] -> [ Player | UToken Token2 ] | |
| Late Down [ Player | no DToken ] -> [ Player | DToken Token2 ] | |
| Late Right [ Player | no RToken ] -> [ Player | RToken Token2 ] | |
| Late Left [ Player | no LToken ] -> [ Player | LToken Token2 ] | |
| startloop | |
| late [ UToken no DToken no RToken no LToken token2 | no UToken ] -> [ UToken no DToken no RToken no LToken token2 | UToken token ] | |
| late [ DToken no UToken no RToken no LToken token2 | no DToken ] -> [ DToken no UToken no RToken no LToken token2 | DToken token ] | |
| late [ RToken no UToken no DToken no LToken token2 | no RToken ] -> [ RToken no UToken no DToken no LToken token2 | RToken token ] | |
| late [ LToken no UToken no DToken no RToken token2 | no LToken ] -> [ LToken no UToken no DToken no RToken token2 | LToken token ] | |
| late [ UToken no DToken no RToken no LToken token | no UToken ] -> [ UToken no DToken no RToken no LToken token | UToken token2 ] | |
| late [ DToken no UToken no RToken no LToken token | no DToken ] -> [ DToken no UToken no RToken no LToken token | DToken token2 ] | |
| late [ RToken no UToken no DToken no LToken token | no RToken ] -> [ RToken no UToken no DToken no LToken token | RToken token2 ] | |
| late [ LToken no UToken no DToken no RToken token | no LToken ] -> [ LToken no UToken no DToken no RToken token | LToken token2 ] | |
| endloop | |
| late [ Friend UToken ] -> [ FriendSD UToken ] | |
| late [ Friend DToken ] -> [ FriendSU DToken ] | |
| late [ Friend RToken ] -> [ FriendSL RToken ] | |
| late [ Friend LToken ] -> [ FriendSR LToken ] | |
| late [ token ] -> [ no token ] | |
| late [ token2 ] -> [ no token2 ] | |
| Late [ UToken ] -> [ no UToken ] | |
| Late [ DToken ] -> [ no DToken ] | |
| Late [ RToken ] -> [ no RToken ] | |
| Late [ LToken ] -> [ no LToken ] | |
| (add death black out) | |
| Late [ no deathmask | no deathmask | deadman no deathmask | no deathmask | no deathmask ] -> [ deathmask | deathmask | deadman deathmask | deathmask | deathmask ] | |
| Late [ no deathmask | no deathmask | deadman no deathmask | no deathmask ] -> [ deathmask | deathmask | deadman deathmask | deathmask ] | |
| Late [ no deathmask | no deathmask | deathmask | no deathmask | no deathmask ] -> [ deathmask | deathmask | deathmask | deathmask | deathmask ] | |
| Late [ no deathmask | no deathmask | deathmask | no deathmask ] -> [ deathmask | deathmask | deathmask | deathmask ] | |
| late [ deathmask | no deathmask no deathblack no Player ] -> [ deathmask | deathblack ] | |
| late [ deathblack | no deathblack no deathmask no Player ] -> [ deathblack | deathblack ] | |
| (repeat level if it has already been won) | |
| late [ heat | no heatblock ] -> [ heat | no heatblock token ] | |
| late [ token | no token no heatblock ] -> [ token | token no heatblock ] | |
| late [ token no person ] -> [ no token no person ] | |
| late [ deadman ] -> [ deadman token ] | |
| late [ token | no token ] -> [ token | token ] | |
| late [ player no token no wintoken ] -> [ player wintoken ] sfx2 | |
| late [ player wintoken ] -> again | |
| late [ token ] -> [ no token ] | |
| ============== | |
| WINCONDITIONS | |
| ============== | |
| No Heat | |
| No DeadMan | |
| ======= | |
| LEVELS | |
| ======= | |
| (Prioritized Todo) | |
| (Add a narrative / level descriptions?) | |
| (playtest for art / rules clarity) | |
| (do we need a way to tell players thery have lost if a friend dies?) | |
| (art pass?) | |
| (add music / sound) | |
| (playtest for colour blind?) | |
| (Message Save yourself from passion's fire) | |
| Message 01: LAVA BAD | |
| (1 - Block Push Intro) | |
| ############# | |
| #...#...#...# | |
| #.1...p...*.# | |
| #...#...#...# | |
| ############# | |
| (Message Passion tempts with fevered choir) | |
| Message 02: TIME PREASURE | |
| (2 - Block Push Complex) | |
| ############# | |
| #...#...#...# | |
| #...#.....1.# | |
| #...#.*.#...# | |
| #.p.....#...# | |
| #...#...#...# | |
| ############# | |
| (Message The sane keep distance to survive) | |
| Message 03: DOUBLE TROUBLE | |
| (3 - Multiple Blocks, Multiple Volcanos) | |
| (Done) | |
| ############# | |
| #...#...#...# | |
| #...#*......# | |
| #...#.p.#...# | |
| #.1....*#.1.# | |
| #...#...#...# | |
| ############# | |
| (Message Keep the norms of life alive) | |
| Message 04: SAVIOR | |
| (7 - Friend Intro) | |
| (Done) | |
| ############# | |
| #...........# | |
| #...#*.*#...# | |
| #f..#...#..f# | |
| #####...##### | |
| #...#.......# | |
| #.*.......1.# | |
| #p..#.......# | |
| ############# | |
| Message 05: TWO KEYS | |
| (4 - Block Reuse Intro) | |
| ########### | |
| #..#...#.p# | |
| #.........# | |
| #..#.*.#..# | |
| #......#..# | |
| #1.#...#..# | |
| ########### | |
| (Message Remember, your friends are stupid!) | |
| Message 06: FRIEND FEAR | |
| (8 - Friend Run Intro) | |
| (Done) | |
| ################### | |
| #....#.......#....# | |
| #.1..#.......#..p.# | |
| #....#.......#....# | |
| #......f...*......# | |
| #....#.......#....# | |
| ################### | |
| Message 07: HYDRA | |
| (5 - Block Reuse Complex) | |
| (Done) | |
| ############### | |
| #.............# | |
| #.###########.# | |
| #.#.....#...#.# | |
| #.#...*.#.#.#1# | |
| #...#.....#.### | |
| #####.p.###...# | |
| #1#.......###.# | |
| #...#.....#1..# | |
| ############### | |
| (17 - Friend Block Friend Force) | |
| Message 08: ENCAPSULATION | |
| (Done, but possibly too easy? Could switch back a few levels...) | |
| ##################### | |
| #.....#..........1..# | |
| ##.#.##.####.##.###.# | |
| #..#..#....#1#...#..# | |
| #.###.####.###*..#.## | |
| #..#..f.*.p.*.f*.#..# | |
| ##.#.*..##.##...###.# | |
| #..#....#...#....#..# | |
| #.###.....f......#.## | |
| #.......#...#.......# | |
| ##################### | |
| (13 - Multi Friend Intro) | |
| Message 09: DIVISIONS | |
| (Done, but I'd like to review the aesthetics later) | |
| ############### | |
| #......1.*....# | |
| ###.#########.# | |
| #....#........# | |
| #..f.#..*##.### | |
| #....*...*....# | |
| ###.##p..#.f..# | |
| #........#....# | |
| #.#########.### | |
| #......1......# | |
| ############### | |
| Message 10: JOG BLOCK | |
| (9 - Friend Run Complex) | |
| #################### | |
| #..#..............1# | |
| #..#...............# | |
| #..#.............f.# | |
| #..................# | |
| #.1#.p.............# | |
| #..#...............# | |
| #..#...............# | |
| ###########.######## | |
| #..#..#...*.....#..# | |
| #..#..#.........#..# | |
| #################### | |
| (14 - Multiple Block + Friend Visibility / Complex) | |
| Message 11: CENTRE BLOCK | |
| (New Done a version, but feel theres something extra with multiple directions blocking visibility that would be better...) | |
| ############### | |
| #....#...#....# | |
| #.*....*......# | |
| #....#...#....# | |
| ###.###.###.### | |
| #....#...#....# | |
| #..f..........# | |
| #....#...#....# | |
| ###.###.###.### | |
| #....#...#....# | |
| #......*...p1.# | |
| #....#...#....# | |
| ############### | |
| Message 12: TRAVERSALS | |
| (10 - Friend Visibility Block) | |
| ############### | |
| #...#.........# | |
| #1#.#.##.f.##.# | |
| ###.#.1#...#1.# | |
| #...####...#### | |
| #.##....#.#...# | |
| #.....p.#.#.#.# | |
| #####...#.#1#.# | |
| #....##.#.###.# | |
| #.*...........# | |
| #....####...#.# | |
| #.......#...#.# | |
| #####...#...#.# | |
| #...#...#...#.# | |
| #...........#.# | |
| #...#.*..###..# | |
| #...#...#1....# | |
| ############### | |
| (11 - Mulitple Block + Friend / Complex) | |
| Message 13: IN THE WAY | |
| (New Done) | |
| ############### | |
| #1.......#....# | |
| #..*.....#....# | |
| #.*...f.......# | |
| #........#....# | |
| ##.###.#####.## | |
| #...#....#....# | |
| #.p...*.....*.# | |
| #...#....#.*..# | |
| #...#....#....# | |
| ############### | |
| (12 - Friend Visibility Force) | |
| Message 14: OUT OF SIGHT | |
| (Finally found a single solution version) | |
| ##################### | |
| #...............#...# | |
| #.#############.#...# | |
| #.......#...#...#...# | |
| #.......#...#...#...# | |
| #.......*.f.....*...# | |
| #.###...#...#...#.p.# | |
| #...#...##.##...#...# | |
| #.1.#...#...#...###.# | |
| #...*.......*.......# | |
| #...#...#...#.......# | |
| #...#...#...#.......# | |
| #...#.#############.# | |
| #...#...............# | |
| ##################### | |
| (15 - Friend Block Friend Reveal) | |
| Message 15: KEYHOLE | |
| (Done, but hard!) | |
| ################# | |
| #....#..1..#....# | |
| #.#.#..###..#.#.# | |
| #.#...#...#...#.# | |
| #.#.##.....##.#.# | |
| #.##....*....##.# | |
| #.#...........#.# | |
| #..#####.#####..# | |
| #...............# | |
| #.#...........#.# | |
| #.#.....f.....#.# | |
| #.#...........#.# | |
| #.......p.......# | |
| ###...........### | |
| #...*...f...*...# | |
| #...............# | |
| #.######.######.# | |
| #...............# | |
| #.######.######.# | |
| #....1#...#1....# | |
| ################# | |
| (6 - Cooled Lava Intro) | |
| Message 16: IMPOSSIBLE | |
| (Done) | |
| ############ | |
| #.....1...1# | |
| #..*.......# | |
| #...*.....1# | |
| #..p.......# | |
| #.........1# | |
| ############ | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment