-
-
Save raggy/d651289ff7a97407926c to your computer and use it in GitHub Desktop.
Arrows & Crates
This file contains 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
Arrows & Crates |
This file contains 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 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