Last active
December 26, 2018 16:29
-
-
Save Draknek/c051100c2a0741b0c75dba5aa9684551 to your computer and use it in GitHub Desktop.
Untitled 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 Cell Escape | |
| author Alan Hazelden (, Lee Shang Lun, and Jacopo Berta) | |
| (verbose_logging) | |
| background_color grey | |
| noaction | |
| run_rules_on_level_start | |
| (TODO: | |
| fix disconnection bugs | |
| earlier levels about the 2-bond limit | |
| visible arms | |
| levels about pushing) | |
| ======== | |
| OBJECTS | |
| ======== | |
| Background | |
| white white | |
| 11111 | |
| 10111 | |
| 11111 | |
| 01111 | |
| 11101 | |
| Exit | |
| transparent (DarkBlue | |
| ..... | |
| .111. | |
| .1.1. | |
| .111. | |
| .....) | |
| Hole | |
| black | |
| Wall_Full | |
| #444 | |
| Wall_Alone | |
| #444 | |
| .000. | |
| 00000 | |
| 00000 | |
| 00000 | |
| .000. | |
| Wall_L | |
| #444 | |
| 0000. | |
| 00000 | |
| 00000 | |
| 00000 | |
| 0000. | |
| Wall_R | |
| #444 | |
| .0000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| .0000 | |
| Wall_U | |
| #444 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| .000. | |
| Wall_D | |
| #444 | |
| .000. | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| Wall_LU | |
| #444 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 0000. | |
| Wall_LD | |
| #444 | |
| 0000. | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| Wall_RU | |
| #444 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| .0000 | |
| Wall_RD | |
| #444 | |
| .0000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| Player | |
| #495e2b | |
| ..... | |
| .000. | |
| .000. | |
| .000. | |
| ..... | |
| Prisoner | |
| darkblue | |
| ..... | |
| .000. | |
| .000. | |
| .000. | |
| ..... | |
| HoldL | |
| #eb9141 | |
| ..... | |
| ..... | |
| 0.... | |
| ..... | |
| ..... | |
| HoldR | |
| #eb9141 | |
| ..... | |
| ..... | |
| ....0 | |
| ..... | |
| ..... | |
| HoldU | |
| #eb9141 | |
| ..0.. | |
| ..... | |
| ..... | |
| ..... | |
| ..... | |
| HoldD | |
| #eb9141 | |
| ..... | |
| ..... | |
| ..... | |
| ..... | |
| ..0.. | |
| Gap | |
| transparent | |
| ChangeDir | |
| red | |
| StartDir | |
| blue | |
| ======= | |
| LEGEND | |
| ======= | |
| . = Background | |
| # = Wall_Alone | |
| P = Player | |
| Q = Prisoner | |
| x = Exit | |
| _ = Hole | |
| Wall = Wall_Alone or Wall_Full or Wall_L or Wall_R or Wall_U or Wall_D or Wall_LU or Wall_LD or Wall_RU or Wall_RD | |
| Person = Player or Prisoner | |
| HoldDir = HoldL or HoldR or HoldU or HoldD | |
| ======= | |
| SOUNDS | |
| ======= | |
| ================ | |
| COLLISIONLAYERS | |
| ================ | |
| Background | |
| Hole, Exit | |
| Player, Wall, Prisoner, Gap | |
| HoldL | |
| HoldR | |
| HoldU | |
| HoldD | |
| ChangeDir | |
| StartDir | |
| ====== | |
| RULES | |
| ====== | |
| (Walls) | |
| [ Wall | Wall_Alone | Wall ] -> [ Wall | Wall_Full | Wall ] | |
| up [ Wall_Alone | Wall ] -> [ Wall_U | Wall ] | |
| right [ Wall | Exit | Wall ] -> [ < Wall | Exit | > Wall ] | |
| [ moving Wall_U ] -> [ moving Wall_Full ] | |
| [ left Wall_Alone ] -> [ left Wall_LD ] | |
| [ right Wall_Alone ] -> [ right Wall_RD ] | |
| [ > Wall | Wall ] -> [ Wall | > Wall_Full ] | |
| up [ moving Wall | Wall ] -> [ Wall | up Wall_Full ] | |
| right [ moving Wall | Wall ] -> [ Wall | action Wall_Full ] | |
| down [ Wall_Alone | Wall ] -> [ Wall_D | Wall ] | |
| left [ Wall_Alone | Wall ] -> [ Wall_L | Wall ] | |
| right [ Wall_Alone | Wall ] -> [ Wall_R | Wall ] | |
| left [ Wall_U | Wall ] -> [ Wall_LU | Wall ] | |
| right [ Wall_U | Wall ] -> [ Wall_RU | Wall ] | |
| left [ Wall_D | Wall ] -> [ Wall_LD | Wall ] | |
| right [ Wall_D | Wall ] -> [ Wall_RD | Wall ] | |
| up [ Wall_L | Wall ] -> [ Wall_LU | Wall ] | |
| up [ Wall_R | Wall ] -> [ Wall_RU | Wall ] | |
| down [ Wall_L | Wall ] -> [ Wall_LD | Wall ] | |
| down [ Wall_R | Wall ] -> [ Wall_RD | Wall ] | |
| (Setup) | |
| [ HoldL ] -> [ left HoldL ] | |
| [ HoldR ] -> [ right HoldR ] | |
| [ HoldU ] -> [ up HoldU ] | |
| [ HoldD ] -> [ down HoldD ] | |
| (Escape) | |
| [ Exit Person ] -> [ action Exit Person ] | |
| [ moving Player ] [ action Exit ] -> [ moving Player ] [ Exit ] | |
| [ action Exit ] [ stationary Player ] -> [ down Exit ] [ down Player ] | |
| [ action Exit Person ] -> [ down Exit down Person ] | |
| (Movement) | |
| startloop | |
| random [ moving Person > HoldDir | stationary Person ] -> [ moving Person > HoldDir | moving Person < ChangeDir ] | |
| [ > Person ChangeDir | no Wall ] -> [ > Person | ] | |
| [ > Person < ChangeDir | Wall ] -> cancel | |
| [ > Person moving ChangeDir | Wall ] -> [ moving Person > ChangeDir | Wall ] | |
| [ left ChangeDir > Person > HoldDir | Person < HoldDir ] -> [ > Person HoldL | Person HoldR ] | |
| [ right ChangeDir > Person > HoldDir | Person < HoldDir ] -> [ > Person HoldR | Person HoldL ] | |
| [ up ChangeDir > Person > HoldDir | Person < HoldDir ] -> [ > Person HoldU | Person HoldD ] | |
| [ down ChangeDir > Person > HoldDir | Person < HoldDir ] -> [ > Person HoldD | Person HoldU ] | |
| [ ChangeDir ] -> [] | |
| endloop | |
| (Escape test) | |
| [ down Person Exit ] -> [ down Person down Exit ] | |
| [ stationary Person ] [ down Exit ] -> [ Person ] [ Exit ] | |
| [ down Person down Exit ] -> [ Exit no HoldDir ] again | |
| (Movement - repeated so we can push things) | |
| [ > Person | stationary Person ] -> [ > Person | > Person ] | |
| startloop | |
| random [ moving Person > HoldDir | stationary Person ] -> [ moving Person > HoldDir | moving Person < ChangeDir ] | |
| [ > Person ChangeDir | no Wall ] -> [ > Person | ] | |
| [ > Person < ChangeDir | Wall ] -> cancel | |
| [ > Person moving ChangeDir | Wall ] -> [ moving Person > ChangeDir | Wall ] | |
| [ left ChangeDir > Person > HoldDir | Person < HoldDir ] -> [ > Person HoldL | Person HoldR ] | |
| [ right ChangeDir > Person > HoldDir | Person < HoldDir ] -> [ > Person HoldR | Person HoldL ] | |
| [ up ChangeDir > Person > HoldDir | Person < HoldDir ] -> [ > Person HoldU | Person HoldD ] | |
| [ down ChangeDir > Person > HoldDir | Person < HoldDir ] -> [ > Person HoldD | Person HoldU ] | |
| [ ChangeDir ] -> [] | |
| endloop | |
| [ > Person | stationary Person ] -> [ > Person | > Person ] | |
| startloop | |
| random [ moving Person > HoldDir | stationary Person ] -> [ moving Person > HoldDir | moving Person < ChangeDir ] | |
| [ > Person ChangeDir | no Wall ] -> [ > Person | ] | |
| [ > Person < ChangeDir | Wall ] -> cancel | |
| [ > Person moving ChangeDir | Wall ] -> [ moving Person > ChangeDir | Wall ] | |
| [ left ChangeDir > Person > HoldDir | Person < HoldDir ] -> [ > Person HoldL | Person HoldR ] | |
| [ right ChangeDir > Person > HoldDir | Person < HoldDir ] -> [ > Person HoldR | Person HoldL ] | |
| [ up ChangeDir > Person > HoldDir | Person < HoldDir ] -> [ > Person HoldU | Person HoldD ] | |
| [ down ChangeDir > Person > HoldDir | Person < HoldDir ] -> [ > Person HoldD | Person HoldU ] | |
| [ ChangeDir ] -> [] | |
| endloop | |
| (Actual movement) | |
| [ > Person | Wall ] -> cancel | |
| [ > Person HoldDir | no Person ] -> [ > Person | HoldDir ] | |
| + [ > Person no HoldDir | no Person ] -> [ | Person ] | |
| [ > Person ] -> cancel | |
| (remove broken bonds) | |
| left [ HoldL | no HoldR ] -> [ | ] | |
| right [ HoldR | no HoldL ] -> [ | ] | |
| up [ HoldU | no HoldD ] -> [ | ] | |
| down [ HoldD | no HoldU ] -> [ | ] | |
| (check bond counts - action Person means full on bonds) | |
| [ HoldDir ] -> [ stationary HoldDir ] | |
| [ Person ] -> [ action Person ] | |
| [ action Person HoldDir ] -> [ Person action HoldDir ] | |
| [ Person ] -> [ stationary Person ] | |
| [ stationary HoldDir Person ] -> [ HoldDir action Person ] | |
| left [ stationary Person no HoldL no ChangeDir | stationary Person no ChangeDir ] -> [ Person > ChangeDir | Person < ChangeDir ] | |
| [ Person HoldDir ChangeDir ] -> [ action Person HoldDir ChangeDir ] | |
| [ left ChangeDir ] -> [ HoldL ] | |
| [ right ChangeDir ] -> [ HoldR ] | |
| left [ stationary Person no HoldL no ChangeDir | stationary Person no ChangeDir ] -> [ Person > ChangeDir | Person < ChangeDir ] | |
| [ Person HoldDir ChangeDir ] -> [ action Person HoldDir ChangeDir ] | |
| [ left ChangeDir ] -> [ HoldL ] | |
| [ right ChangeDir ] -> [ HoldR ] | |
| up [ stationary Person no HoldU no ChangeDir | stationary Person no ChangeDir ] -> [ Person > ChangeDir | Person < ChangeDir ] | |
| [ Person HoldDir ChangeDir ] -> [ action Person HoldDir ChangeDir ] | |
| [ up ChangeDir ] -> [ HoldU ] | |
| [ down ChangeDir ] -> [ HoldD ] | |
| up [ stationary Person no HoldU no ChangeDir | stationary Person no ChangeDir ] -> [ Person > ChangeDir | Person < ChangeDir ] | |
| [ Person HoldDir ChangeDir ] -> [ action Person HoldDir ChangeDir ] | |
| [ up ChangeDir ] -> [ HoldU ] | |
| [ down ChangeDir ] -> [ HoldD ] | |
| (cleanup) | |
| [ HoldDir ] -> [ stationary HoldDir ] | |
| ============== | |
| WINCONDITIONS | |
| ============== | |
| no player | |
| no prisoner | |
| ======= | |
| LEVELS | |
| ======= | |
| ####### | |
| ##...## | |
| #q.p.q# | |
| ##...## | |
| ###x### | |
| ####### | |
| #q#q#q# | |
| #.....# | |
| #..p..# | |
| ##...## | |
| ###x### | |
| ####### | |
| #q.#.q# | |
| #..#..# | |
| #..p..# | |
| #.....# | |
| #q...q# | |
| ###x### | |
| ####### | |
| #.q.q.# | |
| #.#.#.# | |
| #.#.#.# | |
| #q.p.q# | |
| ###x### | |
| ######## | |
| ##.....# | |
| ##q.q.q# | |
| ###...## | |
| #.p.q.q# | |
| #.#....# | |
| #x###### | |
| ######### | |
| ####p#### | |
| #.q...q.# | |
| #.#...#.# | |
| #q.....q# | |
| ####x#### | |
| ######## | |
| ###q.#q# | |
| ####...# | |
| #....p.# | |
| #.##...# | |
| #.#q.#q# | |
| #x###### | |
| ######### | |
| #.......# | |
| #...#...# | |
| #.q...q.# | |
| ###.p.### | |
| ####.#### | |
| ###q.q### | |
| ####x#### | |
| ######### | |
| #q.....q# | |
| ##q.p.q## | |
| #.......# | |
| #q#.#.#q# | |
| ###...### | |
| ####x#### | |
| (test) | |
| ( | |
| ######### | |
| ##.....## | |
| ##...q..# | |
| #..p.##.# | |
| #..#....# | |
| #qq#....# | |
| ####x#### | |
| ######### | |
| ##.pq..## | |
| #.qqq...# | |
| #q#q..#.# | |
| #.......# | |
| ####.#### | |
| ######### | |
| ##.pq..## | |
| #.q.qq..# | |
| #.#####.# | |
| #.......# | |
| ####.#### | |
| ######### | |
| ##.pqqq## | |
| #..q.qq.# | |
| #.#...#.# | |
| #.......# | |
| ####.####) | |
| message Thanks for playing :) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment