Created
March 22, 2016 10:18
-
-
Save anonymous/84dca8cdd19359fc5f61 to your computer and use it in GitHub Desktop.
title
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
Play this game by pasting the script in http://www.puzzlescript.net/editor.html |
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 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