Skip to content

Instantly share code, notes, and snippets.

Created March 22, 2016 10:18
Show Gist options
  • Save anonymous/84dca8cdd19359fc5f61 to your computer and use it in GitHub Desktop.
Save anonymous/84dca8cdd19359fc5f61 to your computer and use it in GitHub Desktop.
title
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Crossbow & Crates
author Benjamin Davis
homepage http://benjamindav.is
again_interval 0.1
color_palette 14
flickscreen 9x9
norepeat_action
run_rules_on_level_start
(verbose_logging)
( Todo:
switches/doors [ operated by arrows or crates/pressure? ]
destructable blocks?
poison arrow traps (with step-on trigger which activates any trap facing it)
mini map to the left which shows progress (and how much is left?)
)
========
OBJECTS
========
ArrowUp
LightGrey Orange
..0..
..1..
..1..
.....
.....
ArrowDown
LightGrey Orange
.....
.....
..1..
..1..
..0..
ArrowLeft
LightGrey Orange
.....
.....
011..
.....
.....
ArrowRight
LightGrey Orange
.....
.....
..110
.....
.....
ArcherFletchingUp
LightRed
.....
.....
.....
..0..
.....
ArcherFletchingDown
LightRed
.....
..0..
.....
.....
.....
ArcherFletchingLeft
LightRed
.....
.....
...0.
.....
.....
ArcherFletchingRight
LightRed
.....
.....
.0...
.....
.....
TrapFletchingUp
Blue
.....
.....
.....
..0..
.....
TrapFletchingDown
Blue
.....
..0..
.....
.....
.....
TrapFletchingLeft
Blue
.....
.....
...0.
.....
.....
TrapFletchingRight
Blue
.....
.....
.0...
.....
.....
TrapUp
Blue
.....
.0.0.
00000
00000
00000
TrapDown
Blue
00000
00000
00000
.0.0.
.....
TrapLeft
Blue
..000
.0000
..000
.0000
..000
TrapRight
Blue
000..
0000.
000..
0000.
000..
Button
Blue
.....
.000.
.000.
.000.
.....
ArrowPathVertical
DarkGrey
..0..
..0..
..0..
..0..
..0..
ArrowPathHorizontal
DarkGrey
.....
.....
00000
.....
.....
PlayerUp
LightBrown LightRed Brown
.02..
110..
111..
111..
2.2..
PlayerDown
LightBrown LightRed Brown
...0.
..111
..201
..011
..2.2
PlayerLeft
LightBrown LightRed Brown
..0..
.111.
02221
.110.
.2.2.
PlayerRight
LightBrown LightRed Brown
..0..
.111.
12220
.011.
.2.2.
ArcherUp
Brown LightGrey Orange LightRed
..0..
.000.
0.0.0
..0..
..0..
ArcherFiringUp
Brown LightGrey Orange LightRed
..0..
00000
..0..
..0..
..0..
ArcherDown
Brown LightGrey Orange LightRed
..0..
..0..
0.0.0
.000.
..0..
ArcherFiringDown
Brown LightGrey Orange LightRed
..0..
..0..
..0..
00000
..0..
ArcherLeft
Brown LightGrey Orange LightRed
..0..
.0...
00000
.0...
..0..
ArcherFiringLeft
Brown LightGrey Orange LightRed
.0...
.0...
00000
.0...
.0...
ArcherRight
Brown LightGrey Orange LightRed
..0..
...0.
00000
...0.
..0..
ArcherFiringRight
Brown LightGrey Orange LightRed
...0.
...0.
00000
...0.
...0.
ArcherDead
LightBrown LightRed Brown Orange
.....
.....
..3..
..31.
.0110
BloodSplatUp
DarkRed
...0.
.0..0
..0..
.0...
..0..
BloodSplatDown
DarkRed
..0..
...0.
..0..
0...0
.0...
BloodSplatLeft
DarkRed
.0...
0....
..0.0
...0.
.0...
BloodSplatRight
DarkRed
...0.
.0...
0.0..
....0
...0.
Background
Black
Hole
#000000
Wall
DarkRed
CornerUpLeft
Red
0000.
000..
00...
0....
.....
CornerUpRight
Red
.0000
..000
...00
....0
.....
CornerDownLeft
Red
.....
0....
00...
000..
0000.
CornerDownRight
Red
.....
....0
...00
..000
.0000
Solid
Red
Hollow
Red
00000
0...0
0...0
0...0
00000
Grooved
Red
00.00
00.00
.....
00.00
00.00
Cracked
Red
00.00
.0000
000.0
0.000
0000.
Falling
DarkGrey
.....
.....
..0..
.....
.....
Exit
Transparent
=======
LEGEND
=======
ArrowVertical = ArrowUp or ArrowDown
ArrowHorizontal = ArrowLeft or ArrowRight
Arrow = ArrowVertical or ArrowHorizontal
ArrowNotUp = ArrowDown or ArrowLeft or ArrowRight
ArrowNotDown = ArrowUp or ArrowLeft or ArrowRight
ArrowNotLeft = ArrowUp or ArrowDown or ArrowRight
ArrowNotRight = ArrowUp or ArrowDown or ArrowLeft
ArrowPath = ArrowPathVertical or ArrowPathHorizontal
ArcherFletching = ArcherFletchingUp or ArcherFletchingDown or ArcherFletchingLeft or ArcherFletchingRight
TrapFletching = TrapFletchingUp or TrapFletchingDown or TrapFletchingLeft or TrapFletchingRight
Fletching = ArcherFletching or TrapFletching
Archer = ArcherUp or ArcherDown or ArcherLeft or ArcherRight
ArcherFiring = ArcherFiringUp or ArcherFiringDown or ArcherFiringLeft or ArcherFiringRight
(Player = Archer or ArcherFiring)
Player = PlayerUp or PlayerDown or PlayerLeft or PlayerRight
Corner = CornerUpLeft or CornerUpRight or CornerDownLeft or CornerDownRight
CornerUp = CornerUpLeft or CornerUpRight
CornerDown = CornerDownLeft or CornerDownRight
CornerLeft = CornerUpLeft or CornerDownLeft
CornerRight = CornerUpRight or CornerDownRight
CornerNotUpLeft = CornerUpRight or CornerDownLeft or CornerDownRight
CornerNotUpRight = CornerUpLeft or CornerDownLeft or CornerDownRight
CornerNotDownLeft = CornerUpLeft or CornerUpRight or CornerDownRight
CornerNotDownRight = CornerUpLeft or CornerUpRight or CornerDownLeft
Trap = TrapUp or TrapDown or TrapLeft or TrapRight
Obstacle = Wall or Solid or Corner or Hollow or Grooved or Cracked or Trap
ArcherObstacle = Wall or Solid or Corner or Grooved or Cracked or Trap
ArrowObstacle = Wall or Solid or Hollow or Cracked or Trap
CornerObstacle = Wall or Solid or Hollow or Grooved or Cracked or Trap
ArrowObstacleUp = ArrowObstacle or CornerDownLeft or CornerDownRight
ArrowObstacleDown = ArrowObstacle or CornerUpLeft or CornerUpRight
ArrowObstacleLeft = ArrowObstacle or CornerUpRight or CornerDownRight
ArrowObstacleRight = ArrowObstacle or CornerUpLeft or CornerDownLeft
Crate = Solid or Hollow or Grooved or Cracked
Moveable = Arrow or Crate or Cracked or Corner
Falls = Solid or Hollow or Grooved or Cracked or Corner or Player
BloodSplat = BloodSplatUp or BloodSplatDown or BloodSplatLeft or BloodSplatRight
_ = Hole
. = Background
@ = PlayerRight
▒ = Wall
■ = Solid
□ = Hollow
⌗ = Grooved
◘ = Cracked
● = Button
x = Exit
◸ = CornerUpLeft
◹ = CornerUpRight
◺ = CornerDownLeft
◿ = CornerDownRight
▲ = ArcherUp
▼ = ArcherDown
◄ = ArcherLeft
► = ArcherRight
↑ = ArrowUp
↓ = ArrowDown
← = ArrowLeft
→ = ArrowRight
╨ = TrapUp and ArrowUp
╥ = TrapDown and ArrowDown
╡ = TrapLeft and ArrowLeft
╞ = TrapRight and ArrowRight
=======
SOUNDS
=======
Falling create 38545107
================
COLLISIONLAYERS
================
Background
Exit, Hole, Button
ArrowPathVertical, BloodSplat
ArrowPathHorizontal
Player
Archer, ArcherFiring, ArcherDead
Arrow
Fletching
Wall, Solid, Hollow, Grooved, Cracked, Falling
CornerUpLeft, CornerUpRight, Trap
CornerDownLeft, CornerDownRight
======
RULES
======
( Things fall in holes )
late [ Falls Hole ] -> again
( Remove arrows when things fall in holes )
late up [ ArrowUp Fletching | Falls Hole ] -> [ | Falls Hole ]
late down [ ArrowDown Fletching | Falls Hole ] -> [ | Falls Hole ]
late left [ ArrowLeft Fletching | Falls Hole ] -> [ | Falls Hole ]
late right [ ArrowRight Fletching | Falls Hole ] -> [ | Falls Hole ]
( Remove crossbow when player falls in hole )
late [ Archer | Falling Hole ] -> [ | Falling Hole ]
( Animate falling )
[ Falling Hole ] -> [ Hole ] again
[ Falls Hole ] -> [ Falling Hole ] again
( Player swaps with archer )
[ > Player | Archer ] -> [ > Player | < Archer ]
( Archer follows player )
[ Archer | > Player ] -> [ > Archer | > Player ]
[ Archer | perpendicular Player ] -> [ > Archer | perpendicular Player ]
( Player pushes solids )
[ > Player no Hollow | Solid ] -> [ > Player | > Solid ]
( Player pushes grooveds )
[ > Player no Hollow | Grooved ] -> [ > Player | > Grooved ]
( Player pushes crackeds )
[ > Player no Hollow | Cracked ] -> [ > Player | > Cracked ]
( Player pushes corners )
[ > Player no Hollow | Corner ] -> [ > Player | > Corner ]
( Player pushes sides of arrows )
vertical [ > Player no Hollow | ArrowHorizontal ] -> [ > Player | > ArrowHorizontal ]
horizontal [ > Player no Hollow | ArrowVertical ] -> [ > Player | > ArrowVertical ]
( Fire? )
[ action Player | Archer ] -> [ Player | action Archer ]
( Push things )
startloop
( Stuck arrows drag crates )
up [ orthogonal ArrowUp | Crate ] -> [ orthogonal ArrowUp | orthogonal Crate ]
down [ orthogonal ArrowDown | Crate ] -> [ orthogonal ArrowDown | orthogonal Crate ]
left [ orthogonal ArrowLeft | Crate ] -> [ orthogonal ArrowLeft | orthogonal Crate ]
right [ orthogonal ArrowRight | Crate ] -> [ orthogonal ArrowRight | orthogonal Crate ]
( Crates drag stuck arrows )
up [ ArrowUp | orthogonal Crate ] -> [ orthogonal ArrowUp | orthogonal Crate ]
down [ ArrowDown | orthogonal Crate ] -> [ orthogonal ArrowDown | orthogonal Crate ]
left [ ArrowLeft | orthogonal Crate ] -> [ orthogonal ArrowLeft | orthogonal Crate ]
right [ ArrowRight | orthogonal Crate ] -> [ orthogonal ArrowRight | orthogonal Crate ]
( Stuck arrows drag corners )
up [ orthogonal ArrowUp | CornerDown ] -> [ orthogonal ArrowUp | orthogonal CornerDown ]
down [ orthogonal ArrowDown | CornerUp ] -> [ orthogonal ArrowDown | orthogonal CornerUp ]
left [ orthogonal ArrowLeft | CornerRight ] -> [ orthogonal ArrowLeft | orthogonal CornerRight ]
right [ orthogonal ArrowRight | CornerLeft ] -> [ orthogonal ArrowRight | orthogonal CornerLeft ]
( Corners drag stuck arrows )
up [ ArrowUp | orthogonal CornerDown ] -> [ orthogonal ArrowUp | orthogonal CornerDown ]
down [ ArrowDown | orthogonal CornerUp ] -> [ orthogonal ArrowDown | orthogonal CornerUp ]
left [ ArrowLeft | orthogonal CornerRight ] -> [ orthogonal ArrowLeft | orthogonal CornerRight ]
right [ ArrowRight | orthogonal CornerLeft ] -> [ orthogonal ArrowRight | orthogonal CornerLeft ]
( Corners push opposite corners sharing the same tile )
[ down CornerUpLeft CornerDownRight ] -> [ down CornerUpLeft down CornerDownRight ]
[ right CornerUpLeft CornerDownRight ] -> [ right CornerUpLeft right CornerDownRight ]
[ down CornerUpRight CornerDownLeft ] -> [ down CornerUpRight down CornerDownLeft ]
[ left CornerUpRight CornerDownLeft ] -> [ left CornerUpRight left CornerDownLeft ]
[ up CornerDownLeft CornerUpRight ] -> [ up CornerDownLeft up CornerUpRight ]
[ right CornerDownLeft CornerUpRight ] -> [ right CornerDownLeft right CornerUpRight ]
[ up CornerDownRight CornerUpLeft ] -> [ up CornerDownRight up CornerUpLeft ]
[ left CornerDownRight CornerUpLeft ] -> [ left CornerDownRight left CornerUpLeft ]
( Solids push non-stuck arrows )
up [ > Solid | ArrowNotUp ] -> [ > Solid | > ArrowNotUp ]
down [ > Solid | ArrowNotDown ] -> [ > Solid | > ArrowNotDown ]
left [ > Solid | ArrowNotLeft ] -> [ > Solid | > ArrowNotLeft ]
right [ > Solid | ArrowNotRight ] -> [ > Solid | > ArrowNotRight ]
( Sides of arrows push solids )
up [ Solid | < ArrowNotUp ] -> [ < Solid | < ArrowNotUp ]
down [ Solid | < ArrowNotDown ] -> [ < Solid | < ArrowNotDown ]
left [ Solid | < ArrowNotLeft ] -> [ < Solid | < ArrowNotLeft ]
right [ Solid | < ArrowNotRight ] -> [ < Solid | < ArrowNotRight ]
( Arrows push grooveds they're residing in )
vertical [ > ArrowHorizontal Grooved ] -> [ > ArrowHorizontal > Grooved ]
horizontal [ > ArrowVertical Grooved ] -> [ > ArrowVertical > Grooved ]
( Grooveds push arrows inside them )
vertical [ ArrowHorizontal > Grooved ] -> [ > ArrowHorizontal > Grooved ]
horizontal [ ArrowVertical > Grooved ] -> [ > ArrowVertical > Grooved ]
( Sides of arrows push grooveds )
vertical [ > ArrowHorizontal | Grooved ] -> [ > ArrowHorizontal | > Grooved ]
horizontal [ > ArrowVertical | Grooved ] -> [ > ArrowVertical | > Grooved ]
( Grooveds push sides of arrows )
vertical [ ArrowHorizontal | < Grooved ] -> [ < ArrowHorizontal | < Grooved ]
horizontal [ ArrowVertical | < Grooved ] -> [ < ArrowVertical | < Grooved ]
( Corners push non-stuck arrows )
up [ > Corner | ArrowNotUp ] -> [ > Corner | > ArrowNotUp ]
down [ > Corner | ArrowNotDown ] -> [ > Corner | > ArrowNotDown ]
left [ > Corner | ArrowNotLeft ] -> [ > Corner | > ArrowNotLeft ]
right [ > Corner | ArrowNotRight ] -> [ > Corner | > ArrowNotRight ]
( Sides of arrows push corners )
up [ Corner | < ArrowNotUp ] -> [ < Corner | < ArrowNotUp ]
down [ Corner | < ArrowNotDown ] -> [ < Corner | < ArrowNotDown ]
left [ Corner | < ArrowNotLeft ] -> [ < Corner | < ArrowNotLeft ]
right [ Corner | < ArrowNotRight ] -> [ < Corner | < ArrowNotRight ]
( Crates push crates )
[ > Crate | Crate ] -> [ > Crate | > Crate ]
( Crates push corners )
[ > Crate | Corner ] -> [ > Crate | > Corner ]
( Corners push crates )
[ > Corner | Crate ] -> [ > Corner | > Crate ]
( Corners push not-opposite corners )
[ > CornerUpLeft | CornerNotDownRight ] -> [ > CornerUpLeft | > CornerNotDownRight ]
[ > CornerUpRight | CornerNotDownLeft ] -> [ > CornerUpRight | > CornerNotDownLeft ]
[ > CornerDownLeft | CornerNotUpRight ] -> [ > CornerDownLeft | > CornerNotUpRight ]
[ > CornerDownRight | CornerNotUpLeft ] -> [ > CornerDownRight | > CornerNotUpLeft ]
( Corners push opposite corners from wrong directions )
up [ > CornerUpLeft | CornerDownRight ] -> [ > CornerUpLeft | > CornerDownRight ]
left [ > CornerUpLeft | CornerDownRight ] -> [ > CornerUpLeft | > CornerDownRight ]
up [ > CornerUpRight | CornerDownLeft ] -> [ > CornerUpRight | > CornerDownLeft ]
right [ > CornerUpRight | CornerDownLeft ] -> [ > CornerUpRight | > CornerDownLeft ]
down [ > CornerDownLeft | CornerUpRight ] -> [ > CornerDownLeft | > CornerUpRight ]
left [ > CornerDownLeft | CornerUpRight ] -> [ > CornerDownLeft | > CornerUpRight ]
down [ > CornerDownRight | CornerUpLeft ] -> [ > CornerDownRight | > CornerUpLeft ]
right [ > CornerDownRight | CornerUpLeft ] -> [ > CornerDownRight | > CornerUpLeft ]
endloop
( Pick up arrows from the back )
(vertical [ > Archer | ArrowVertical no ArcherObstacle ] -> [ > Archer | ]
horizontal [ > Archer | ArrowHorizontal no ArcherObstacle ] -> [ > Archer | ])
( Stop things moving into the edge )
[ Background > Moveable ] -> [ > Background > Moveable ]
[ > Background | ] -> [ Background | ]
[ > Background > Moveable ] -> [ Background Moveable ]
( Arrows stuck in walls can't move )
up [ moving ArrowUp | Wall ] -> [ action ArrowUp | Wall ]
down [ moving ArrowDown | Wall ] -> [ action ArrowDown | Wall ]
left [ moving ArrowLeft | Wall ] -> [ action ArrowLeft | Wall ]
right [ moving ArrowRight | Wall ] -> [ action ArrowRight | Wall ]
( Arrows can't move through arrow obstacles )
[ > Arrow | stationary ArrowObstacle ] -> [ action Arrow | ArrowObstacle ]
( Arrows can't move into arrows )
[ > Arrow | stationary Arrow ] -> [ action Arrow | Arrow ]
( Arrows can't move through corners )
[ > Arrow | stationary Corner ] -> [ action Arrow | Corner ]
( Crates can't move through obstacles )
[ > Crate | stationary Obstacle ] -> [ action Crate | Obstacle ]
( Crates can't move through arrows )
[ > Crate | stationary Arrow ] -> [ action Crate | Arrow ]
( Corners can't move through corner obstacles )
[ > Corner | stationary CornerObstacle ] -> [ action Corner | CornerObstacle ]
( Corners can't move through arrows )
[ > Corner | stationary Arrow ] -> [ action Corner | Arrow ]
(( Corners can't move into not-opposite corners )
[ > CornerUpLeft | CornerNotDownRight ] -> [ action CornerUpLeft | CornerNotDownRight ]
[ > CornerUpRight | CornerNotDownLeft ] -> [ action CornerUpRight | CornerNotDownLeft ]
[ > CornerDownLeft | CornerNotUpRight ] -> [ action CornerDownLeft | CornerNotUpRight ]
[ > CornerDownRight | CornerNotUpLeft ] -> [ action CornerDownRight | CornerNotUpLeft ]
( Corners can't move into opposite corners from wrong directions )
up [ > CornerUpLeft | CornerDownRight ] -> [ action CornerUpLeft | CornerDownRight ]
left [ > CornerUpLeft | CornerDownRight ] -> [ action CornerUpLeft | CornerDownRight ]
up [ > CornerUpRight | CornerDownLeft ] -> [ action CornerUpRight | CornerDownLeft ]
right [ > CornerUpRight | CornerDownLeft ] -> [ action CornerUpRight | CornerDownLeft ]
down [ > CornerDownLeft | CornerUpRight ] -> [ action CornerDownLeft | CornerUpRight ]
left [ > CornerDownLeft | CornerUpRight ] -> [ action CornerDownLeft | CornerUpRight ]
down [ > CornerDownRight | CornerUpLeft ] -> [ action CornerDownRight | CornerUpLeft ]
right [ > CornerDownRight | CornerUpLeft ] -> [ action CornerDownRight | CornerUpLeft ])
( Cancel movement )
[ action Moveable ] [ Moveable ] -> [ action Moveable ] [ action Moveable ]
[ action Moveable ] -> [ Moveable ]
( Move fletching with arrow )
[ moving Arrow Fletching ] -> [ moving Arrow moving Fletching ]
( Archer faces away from Player )
late up [ Archer | Player ] -> [ ArcherDown | PlayerDown ]
late down [ Archer | Player ] -> [ ArcherUp | PlayerUp ]
late left [ Archer | Player ] -> [ ArcherRight | PlayerRight ]
late right [ Archer | Player ] -> [ ArcherLeft | PlayerLeft ]
( Stop player walking through arrows )
([ > Archer | stationary Arrow ] -> [ Archer | Arrow ])
( Pick up arrows )
[ > Player | stationary Arrow Fletching no ArcherObstacle ] -> [ > Player | ]
( Stop player walking through obstacles )
[ > Player | stationary ArcherObstacle ] -> [ Player | ArcherObstacle ]
(( Mark if there's room or not )
up [ ArcherFiringUp | no ArrowObstacleUp ] -> [ action ArcherFiringUp | ]
down [ ArcherFiringDown | no ArrowObstacleDown ] -> [ action ArcherFiringDown | ]
left [ ArcherFiringLeft | no ArrowObstacleLeft ] -> [ action ArcherFiringLeft | ]
right [ ArcherFiringRight | no ArrowObstacleRight ] -> [ action ArcherFiringRight | ])
( Fire! )
[ ArcherFiring ] -> [ action ArcherFiring ]
( No ammo )
[ Arrow ] [ action ArcherFiring ] -> [ Arrow ] [ ArcherFiring ]
(( Move back if no room to fire )
up [ no ArcherObstacle | stationary ArcherFiringUp no Hollow ] -> [ action ArcherFiringUp | ]
down [ no ArcherObstacle | stationary ArcherFiringDown no Hollow ] -> [ action ArcherFiringDown | ]
left [ no ArcherObstacle | stationary ArcherFiringLeft no Hollow ] -> [ action ArcherFiringLeft | ]
right [ no ArcherObstacle | stationary ArcherFiringRight no Hollow ] -> [ action ArcherFiringRight | ])
( Remove arrow path )
[ ArrowPath ] [ ArcherFiring ] -> [ ] [ stationary ArcherFiring ]
[ ArrowPath ] -> [ ]
( Revert back to moving state )
[ stationary ArcherFiringUp ] -> [ ArcherUp ]
[ stationary ArcherFiringDown ] -> [ ArcherDown ]
[ stationary ArcherFiringLeft ] -> [ ArcherLeft ]
[ stationary ArcherFiringRight ] -> [ ArcherRight ]
( Spawn new arrow )
up [ ArcherFiringUp no Hole ] -> [ ArcherFiringUp ArrowUp ArcherFletchingUp ArrowPathVertical ]
down [ ArcherFiringDown no Hole ] -> [ ArcherFiringDown ArrowDown ArcherFletchingDown ArrowPathVertical ]
left [ ArcherFiringLeft no Hole ] -> [ ArcherFiringLeft ArrowLeft ArcherFletchingLeft ArrowPathHorizontal ]
right [ ArcherFiringRight no Hole ] -> [ ArcherFiringRight ArrowRight ArcherFletchingRight ArrowPathHorizontal ]
( Arrows bounce off corners )
up [ ArrowUp CornerUpLeft ] -> [ CornerUpLeft ArrowRight ArrowPathVertical ArrowPathHorizontal ]
+ up [ ArrowUp CornerUpRight ] -> [ CornerUpRight ArrowLeft ArrowPathVertical ArrowPathHorizontal ]
+ down [ ArrowDown CornerDownLeft ] -> [ CornerDownLeft ArrowRight ArrowPathVertical ArrowPathHorizontal ]
+ down [ ArrowDown CornerDownRight ] -> [ CornerDownRight ArrowLeft ArrowPathVertical ArrowPathHorizontal ]
+ left [ ArrowLeft CornerUpLeft ] -> [ CornerUpLeft ArrowDown ArrowPathVertical ArrowPathHorizontal ]
+ left [ ArrowLeft CornerDownLeft ] -> [ CornerDownLeft ArrowUp ArrowPathVertical ArrowPathHorizontal ]
+ right [ ArrowRight CornerUpRight ] -> [ CornerUpRight ArrowDown ArrowPathVertical ArrowPathHorizontal ]
+ right [ ArrowRight CornerDownRight ] -> [ CornerDownRight ArrowUp ArrowPathVertical ArrowPathHorizontal ]
( Make arrows fly )
+ up [ ArrowUp Fletching | no ArrowObstacleUp ] -> [ | ArrowUp Fletching ArrowPathVertical ]
+ down [ ArrowDown Fletching | no ArrowObstacleDown ] -> [ | ArrowDown Fletching ArrowPathVertical ]
+ left [ ArrowLeft Fletching | no ArrowObstacleLeft ] -> [ | ArrowLeft Fletching ArrowPathHorizontal ]
+ right [ ArrowRight Fletching | no ArrowObstacleRight ] -> [ | ArrowRight Fletching ArrowPathHorizontal ]
( Cracked crates break )
+ up [ ArrowUp Fletching | Cracked ] -> [ | ArrowPathVertical ]
+ down [ ArrowDown Fletching | Cracked ] -> [ | ArrowPathVertical ]
+ left [ ArrowLeft Fletching | Cracked ] -> [ | ArrowPathHorizontal ]
+ right [ ArrowRight Fletching | Cracked ] -> [ | ArrowPathHorizontal ]
(( Create blood splat )
+ up [ ArrowUp ArcherFiring | ] -> [ ArrowUp ArcherFiring | BloodSplatUp ]
+ down [ ArrowDown ArcherFiring | ] -> [ ArrowDown ArcherFiring | BloodSplatDown ]
+ left [ ArrowLeft ArcherFiring | ] -> [ ArrowLeft ArcherFiring | BloodSplatLeft ]
+ right [ ArrowRight ArcherFiring | ] -> [ ArrowRight ArcherFiring | BloodSplatRight ]
( Archer dies when hit )
+ [ Arrow ArcherFiring ] -> [ ArcherDead ])
( Next turn, remove arrow paths and reset player to movement mode )
[ ArrowPath ] -> again
( Remove arrows flying off-screen )
[ stationary Arrow ] -> [ action Arrow ]
up [ action ArrowUp | ] -> [ ArrowUp | ]
down [ action ArrowDown | ] -> [ ArrowDown | ]
left [ action ArrowLeft | ] -> [ ArrowLeft | ]
right [ action ArrowRight | ] -> [ ArrowRight | ]
[ action Arrow Fletching ] -> [ ]
( Remove arrows stuck in corners )
up [ ArrowUp Fletching Corner | ArrowObstacleUp ] -> [ Corner | ArrowObstacleUp ]
down [ ArrowDown Fletching Corner | ArrowObstacleDown ] -> [ Corner | ArrowObstacleDown ]
left [ ArrowLeft Fletching Corner | ArrowObstacleLeft ] -> [ Corner | ArrowObstacleLeft ]
right [ ArrowRight Fletching Corner | ArrowObstacleRight ] -> [ Corner | ArrowObstacleRight ]
( Enter firing mode )
[ action ArcherUp ] -> [ ArcherFiringUp ] again
[ action ArcherDown ] -> [ ArcherFiringDown ] again
[ action ArcherLeft ] -> [ ArcherFiringLeft ] again
[ action ArcherRight ] -> [ ArcherFiringRight ] again
( Win when player walks out the exit )
[ > Player Exit | ] -> [ > Player action Exit | ]
[ > Player stationary Exit ] -> win
( Stop overlaps )
[ > Archer | > Player stationary Exit ] -> [ Archer | > Player stationary Exit ]
late [ Archer Player ] -> cancel
( Set correct fletching direction )
late [ ArrowUp ArcherFletching ] -> [ ArrowUp ArcherFletchingUp ]
late [ ArrowDown ArcherFletching ] -> [ ArrowDown ArcherFletchingDown ]
late [ ArrowLeft ArcherFletching ] -> [ ArrowLeft ArcherFletchingLeft ]
late [ ArrowRight ArcherFletching ] -> [ ArrowRight ArcherFletchingRight ]
late [ ArcherDead ArcherFletching ] -> [ ArcherDead ArcherFletchingDown ]
late [ ArrowUp TrapFletching ] -> [ ArrowUp TrapFletchingUp ]
late [ ArrowDown TrapFletching ] -> [ ArrowDown TrapFletchingDown ]
late [ ArrowLeft TrapFletching ] -> [ ArrowLeft TrapFletchingLeft ]
late [ ArrowRight TrapFletching ] -> [ ArrowRight TrapFletchingRight ]
late [ ArcherDead TrapFletching ] -> [ ArcherDead TrapFletchingDown ]
==============
WINCONDITIONS
==============
=======
LEVELS
=======
(_________.________
__________________
__▒▒▒▒▒___________
▒▒▒...▒___________
►.....▒___________
▒▒▒■■.▒___________
__▒▒.▒▒___________
___▒.▒____________
___▒.▒____________
___▒.▒___.________
__▒▒.▒▒___________
__▒...▒___________
__▒...▒___________
__▒■■■▒___________
__▒..■▒___________
__▒■.■▒___________
__▒▒.▒▒___________
___▒.▒____________
___▒.▒______▒.▒___
__▒▒.▒▒▒__▒▒▒.▒___
__▒...■▒__▒.■.▒___
__▒...■▒▒▒▒■■■▒▒▒_
__▒■■■■.........▒_
__▒....▒▒▒▒.....▒_
__▒▒▒▒▒▒__▒.....▒_
__________▒▒▒▒▒▒▒_
__________________)
___▒■▒___
___▒.▒___
__▒▒■▒▒__
▒▒▒...▒▒▒
@►...■..x
▒▒▒..■▒▒▒
__▒▒.▒▒__
___▒■▒___
___▒.▒___
(.........
..▒▒▒▒▒..
.▒▒▒■▒▒▒.
▒▒▒...▒▒▒
►.■..■..x
▒▒▒..▒▒▒▒
.▒▒.■.▒▒.
..▒▒▒▒▒..
.........)
_________
_________
_▒▒▒▒▒▒▒_
▒▒..■■■▒▒
@►..■...x
▒▒..■.■▒▒
_▒▒▒▒▒▒▒_
_________
_________
_________
_________
_▒▒▒▒▒▒__
▒▒..■.▒__
@►..■.▒__
▒▒..■.▒__
_▒■■■.▒__
_▒▒▒.▒▒__
___▒x▒___
(...▒▼▒...
.▒▒▒.▒▒▒.
.▒.....▒.
.▒.....▒.
.▒.....▒.
.▒.....▒.
.▒.....▒.
.▒▒▒.▒▒▒.
...▒x▒...)
(...▒▼▒...
.▒▒▒.▒▒▒.
.▒.....▒.
.▒.■■■.▒.
.▒.■.■.▒.
.▒.▒.▒.▒.
.▒.▒.▒.▒.
.▒▒▒.▒▒▒.
...▒x▒...)
___▒@▒___
_▒▒▒▼▒▒▒_
_▒...■.▒_
_▒...■■▒▒
_▒...■..x
_▒...▒▒▒▒
_▒...▒▒__
_▒▒▒▒▒___
_________
(.........
..▒▒▒▒▒..
.▒▒..◹▒▒.
▒▒◸....▒▒
►...■...x
▒▒....◿▒▒
.▒▒◺..▒▒.
..▒▒▒▒▒..
.........)
_________
_________
_▒▒▒▒▒▒▒_
▒▒.▒▒..▒▒
@►.▒◸.■.x
▒▒....▒▒▒
_▒▒▒▒▒▒▒_
_________
_________
___▒■▒___
___▒.▒___
__▒▒.▒▒__
▒▒▒◸.◹▒__
@►⌗..◿▒__
▒▒▒■..▒__
__▒▒.▒▒__
___▒.▒___
___▒x▒___
___▒@▒___
__▒▒▼▒▒__
__▒...▒__
▒▒▒...▒__
x..■◹◿▒__
▒▒▒▒..▒__
__▒▒▒▒▒__
_________
_________
_________
_________
__▒▒▒▒▒__
▒▒▒◸..▒▒▒
x..◿...◄@
▒▒▒■..▒▒▒
__▒▒▒▒▒__
_________
_________
_________
_▒▒▒▒▒▒▒_
_▒.◸..◹▒_
_▒.___.▒▒
_▒.....◄@
_▒▒■■▒▒▒▒
_▒.....▒_
_▒▒▒.▒▒▒_
___▒x▒___
___▒@▒___
___▒▼▒___
_▒▒▒.▒▒__
_▒..._▒▒▒
_▒._.■..x
_▒◺.._▒▒▒
_▒..._▒__
_▒▒▒▒▒▒__
_________
(...▒▼▒...
..▒▒.▒▒..
..▒...▒..
▒▒▒..■▒▒▒
...■■..■■
▒..▒▒▒.■▒
▒......■▒
▒▒.....▒▒
.▒▒▒▒▒▒▒.)
(...▒▼▒...
.▒▒◸.◹▒▒.
.▒..■■.▒.
▒▒.■.▒■▒▒
..■.▒■...
▒▒□...■▒▒
.▒⌗.■..◹▒
.▒▒▒■⌗□◿▒
...▒.▒▒▒▒)
(..◿▒▼▒◺..
.▒▒◸.◹▒▒.
◿▒..■■.▒◺
▒◸.■.▒.◹▒
x.■.▒■..■
▒◺□....◿▒
◹▒⌗.■..▒◸
.▒▒◺■.▒▒.
..◹▒.▒◸..)
(..◿▒▼▒◺..
.▒▒◸.◹▒▒.
◿▒..■.▒▒◺
▒◸.■.▒.◹▒
x.■.▒▒..▒
▒◺□....◿▒
◹▒⌗.■..▒◸
.▒▒◺..▒▒.
..◹▒▒▒◸..)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment