Skip to content

Instantly share code, notes, and snippets.

@raggy
Forked from anonymous/readme.txt
Last active September 30, 2020 12:37
Show Gist options
  • Save raggy/d651289ff7a97407926c to your computer and use it in GitHub Desktop.
Save raggy/d651289ff7a97407926c to your computer and use it in GitHub Desktop.
Arrows & Crates
Arrows & Crates
title Arrows & 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
.....
.....
ArcherUp
LightBrown LightRed Brown
.2...
.20..
01210
.1122
.0.0.
ArcherFiringUp
LightBrown LightRed Brown
...2.
..02.
.110.
.111.
.0.0.
ArcherDown
LightBrown LightRed Brown
...2.
..02.
01110
2111.
.0.0.
ArcherFiringDown
LightBrown LightRed Brown
.2...
.20..
.211.
.211.
.2.0.
ArcherLeft
LightBrown LightRed Brown
...2.
..02.
.112.
.112.
..0..
ArcherFiringLeft
LightBrown LightRed Brown
.2...
2..0.
20110
2.111
.20.0
ArcherRight
LightBrown LightRed Brown
.2...
.20..
.211.
.211.
..0..
ArcherFiringRight
LightBrown LightRed Brown
...2.
.0..2
01102
111.2
0.02.
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
ConnectedUp
White
..0..
.....
.....
.....
.....
ConnectedDown
White
.....
.....
.....
.....
..0..
ConnectedRight
White
.....
.....
....0
.....
.....
ConnectedLeft
White
.....
.....
0....
.....
.....
NotConnected
Black
.....
.....
..0..
.....
.....
=======
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
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 Archer or ArcherFiring
BloodSplat = BloodSplatUp or BloodSplatDown or BloodSplatLeft or BloodSplatRight
Connected = ConnectedUp or ConnectedDown or ConnectedRight or ConnectedLeft
Connection = Connected or NotConnected
_ = Hole
. = Background
▒ = 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
Arrow
Fletching
Archer, ArcherFiring, ArcherDead
Wall, Solid, Hollow, Grooved, Cracked, Falling
CornerUpLeft, CornerUpRight, Trap
CornerDownLeft, CornerDownRight
ConnectedUp, NotConnected
ConnectedDown
ConnectedLeft
ConnectedRight
======
RULES
======
( Create connections )
([ stationary Solid no Connection ] -> [ action Solid ]
up [ action Solid | Solid ] -> [ action Solid ConnectedUp | Solid ]
down [ action Solid | Solid ] -> [ action Solid ConnectedDown | Solid ]
left [ action Solid | Solid ] -> [ action Solid ConnectedLeft | Solid ]
right [ action Solid | Solid ] -> [ action Solid ConnectedRight | Solid ]
[ Solid no Connection ] -> [ Solid NotConnected ]
[ action Solid ] -> [ Solid ])
( 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 ]
( Animate falling )
[ Falling Hole ] -> [ Hole ] again
[ Falls Hole ] -> [ Falling Hole ] again
( Player pushes solids )
[ > Archer no Hollow | Solid ] -> [ > Archer | > Solid ]
( Player pushes grooveds )
[ > Archer no Hollow | Grooved ] -> [ > Archer | > Grooved ]
( Player pushes crackeds )
[ > Archer no Hollow | Cracked ] -> [ > Archer | > Cracked ]
( Player pushes corners )
[ > Archer no Hollow | Corner ] -> [ > Archer | > Corner ]
( Player pushes sides of arrows )
vertical [ > Archer no Hollow | ArrowHorizontal ] -> [ > Archer | > ArrowHorizontal ]
horizontal [ > Archer no Hollow | ArrowVertical ] -> [ > Archer | > ArrowVertical ]
( Push things )
startloop
( Stuck arrows drag crates )
up [ orthogonal ArrowUp | stationary Crate ] -> [ orthogonal ArrowUp | orthogonal Crate ]
down [ orthogonal ArrowDown | stationary Crate ] -> [ orthogonal ArrowDown | orthogonal Crate ]
left [ orthogonal ArrowLeft | stationary Crate ] -> [ orthogonal ArrowLeft | orthogonal Crate ]
right [ orthogonal ArrowRight | stationary 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 ]
( Connected pieces move together )
up [ orthogonal Solid ConnectedUp | stationary Solid ] -> [ orthogonal Solid ConnectedUp | orthogonal Solid ]
down [ orthogonal Solid ConnectedDown | stationary Solid ] -> [ orthogonal Solid ConnectedDown | orthogonal Solid ]
left [ orthogonal Solid ConnectedLeft | stationary Solid ] -> [ orthogonal Solid ConnectedLeft | orthogonal Solid ]
right [ orthogonal Solid ConnectedRight | stationary Solid ] -> [ orthogonal Solid ConnectedRight | orthogonal Solid ]
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 ]
( Connections move with solids )
[ orthogonal Solid Connection ] -> [ orthogonal Solid orthogonal Connection ]
( Move fletching with arrow )
[ moving Arrow Fletching ] -> [ moving Arrow moving Fletching ]
( Archer faces walking direction )
up [ > Archer ] -> [ > ArcherUp ]
down [ > Archer ] -> [ > ArcherDown ]
left [ > Archer ] -> [ > ArcherLeft ]
right [ > Archer ] -> [ > ArcherRight ]
( Stop player walking through arrows )
([ > Archer | stationary Arrow ] -> [ Archer | Arrow ])
( Pick up arrows )
[ > Archer | stationary Arrow Fletching no ArcherObstacle ] -> [ > Archer | ]
( Stop player walking through obstacles )
[ > Archer | stationary ArcherObstacle ] -> [ Archer | 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 | ]
( 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 when there's space )
up [ ArcherFiringUp no Hole | no ArrowObstacleUp ] -> [ ArcherFiringUp | ArrowUp ArcherFletchingUp ArrowPathVertical ]
down [ ArcherFiringDown no Hole | no ArrowObstacleDown ] -> [ ArcherFiringDown | ArrowDown ArcherFletchingDown ArrowPathVertical ]
left [ ArcherFiringLeft no Hole | no ArrowObstacleLeft ] -> [ ArcherFiringLeft | ArrowLeft ArcherFletchingLeft ArrowPathHorizontal ]
right [ ArcherFiringRight no Hole | no ArrowObstacleRight ] -> [ 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
( 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