puzzlescript
Version:
Play PuzzleScript games in your terminal!
1,154 lines (996 loc) • 29.2 kB
Plain Text
title Sokoboros
author Trevor Newton
homepage https://twitter.com/trevnewt
flickscreen 13x13
noaction
background_color #22170B
text_color lightgreen
(youtube wPqwxBnNxWU)
========
OBJECTS
========
Background
DarkBrown DarkGrey
00000
00000
00000
00000
00000
Metal
333333
00000
00000
00000
00000
00000
Egg
White
..0..
.000.
00000
00000
.000.
EggBottom
LightGrey
.....
0....
000.0
00000
.000.
EggShell_1
LightGrey
.....
.0...
...0.
..00.
.....
EggShell_2
LightGrey
.....
.....
.0...
.....
..0..
Button
Red DarkRed LightGrey
11111
11111
11011
11111
11111
Pressed
Red Grey
00000
00000
00000
00000
00000
YellowApple
Yellow Green Blue
..1..
.000.
00000
00000
.000.
BlueApple
LightBlue Green Blue
..1..
.000.
00000
00000
.000.
Not_Just_Pressed
transparent
Key
transparent
Checkpoint_Marker
333333 #232323
00000
01010
00100
01010
00000
Door1
LightGrey #333333 LightRed
00000
00000
00100
00000
00000
Door2
LightGrey #333333 LightRed
00000
00000
01010
00000
00000
Door2_1
LightGrey #333333 LightRed
00000
00000
02010
00000
00000
Door3
LightGrey #333333 LightRed
00000
01010
00000
00100
00000
Door3_1
LightGrey #333333 LightRed
00000
02010
00000
00100
00000
Door3_2
LightGrey #333333 LightRed
00000
02020
00000
00100
00000
Door4
LightGrey #333333 LightRed
00000
01010
00000
01010
00000
Door4_1
LightGrey #333333 LightRed
00000
02010
00000
01010
00000
Door4_2
LightGrey #333333 LightRed
00000
02020
00000
01010
00000
Door4_3
LightGrey #333333 LightRed
00000
02020
00000
02010
00000
DoorXL
LightGrey #333333
00000
00010
00000
00010
00000
DoorXL_1
LightGrey #333333 LightRed
00000
00020
00000
00010
00000
DoorXL_6
LightGrey #333333 LightRed
00000
00020
00000
00020
00000
DoorXM
LightGrey #333333
00000
10101
00000
10101
00000
DoorXM_1
LightGrey #333333
00000
10101
00000
10101
00000
DoorXM_2
LightGrey #333333 LightRed
00000
20101
00000
10101
00000
DoorXM_3
LightGrey #333333 LightRed
00000
20201
00000
10101
00000
DoorXM_4
LightGrey #333333 LightRed
00000
20202
00000
10101
00000
DoorXM_5
LightGrey #333333 LightRed
00000
20202
00000
10101
00000
DoorXM_6
LightGrey #333333 LightRed
00000
20202
00000
10101
00000
DoorXM_7
LightGrey #333333 LightRed
00000
20202
00000
20101
00000
DoorXM_8
LightGrey #333333 LightRed
00000
20202
00000
20201
00000
DoorXM_9
LightGrey #333333 LightRed
00000
20202
00000
20202
00000
DoorXM_10
transparent
DoorXR
LightGrey #333333
00000
01000
00000
01000
00000
DoorXR_5
LightGrey #333333 LightRed
00000
02000
00000
01000
00000
Wall
Orange Brown
1111.
10111
11111
11101
.1111
Wall_Metal_R
Grey DarkGrey
00001
00001
00001
00001
00001
Wall_Metal_L
Grey DarkGrey
10000
10000
10000
10000
10000
Wall_metal_U
Grey DarkGrey
11111
00000
00000
00000
00000
Wall_metal_D
Grey DarkGrey
00000
00000
00000
00000
11111
Wall_metal_DRC
Grey DarkGrey
00001
00001
00001
00001
11111
Wall_metal_DLC
Grey DarkGrey
10000
10000
10000
10000
11111
Wall_metal_URC
Grey DarkGrey
11111
00001
00001
00001
00001
Wall_metal_ULC
Grey DarkGrey
11111
10000
10000
10000
10000
Wall_metal_DR
Grey DarkGrey
00000
00000
00000
00000
00001
Wall_Metal_UR
Grey DarkGrey
00001
00000
00000
00000
00000
Wall_metal_DL
Grey DarkGrey
00000
00000
00000
00000
10000
Wall_metal_UL
Grey DarkGrey
10000
00000
00000
00000
00000
PlayerLeft
Green Red
0000.
.0100
..000
.0000
0000.
PlayerAteLeft
Green Red LightGreen
.000.
00100
20000
00000
.000.
PlayerRight
Green Red
.0000
0010.
000..
0000.
.0000
PlayerAteRight
Green Red LightGreen
.000.
00100
00002
00000
.000.
PlayerUp
Green Red
0...0
00.00
01000
00000
.000.
PlayerAteUp
Green Red LightGreen
.020.
00000
01000
00000
.000.
PlayerDown
Green Red
.000.
00000
00010
00.00
0...0
PlayerAteDown
Green Red LightGreen
.000.
00000
00010
00000
.020.
BodyHorizontal
Green LightGreen
.....
00100
00100
00100
.....
BodyVertical
Green LightGreen
.000.
.000.
.111.
.000.
.000.
(BodyBend_1
Green LightGreen
.....
..000
.0111
.0100
.010.)
BodyBend_1
Green LightGreen
.....
..000
.0100
.0010
.000.
BodyBend_2
Green LightGreen
.....
000..
0010.
0100.
.000.
BodyBend_3
Green LightGreen
.000.
.0010
.0100
..000
.....
BodyBend_4
Green LightGreen
.000.
0100.
0010.
000..
.....
Tail_1
Green LightGreen
.....
000..
0000.
000..
.....
Tail_2
Green LightGreen
.....
..000
.0000
..000
.....
Tail_3
Green LightGreen
.000.
.000.
.000.
..0..
.....
Tail_4
Green LightGreen
.....
..0..
.000.
.000.
.000.
TowardsUp
RED
..0..
.000.
0.0.0
..0..
..0..
TowardsLeft
RED
..0..
.0...
00000
.0...
..0..
TowardsRight
RED
..0..
...0.
00000
...0.
..0..
TowardsDown
RED
..0..
..0..
0.0.0
.000.
..0..
=======
LEGEND
=======
< = BodyHorizontal and TowardsLeft
= BodyBend_1 and TowardsRight and EggShell_2
^ = BodyVertical and TowardsUp
v = BodyVertical and TowardsDown
(L = Tail and TowardsLeft
R = Tail and TowardsRight)
U = Tail_3 and TowardsUp and EggBottom
(D = Tail and TowardsDown)
. = Background
- = Metal
= Wall
= Wall_Metal_R
| = Wall_Metal_L
' = Wall_Metal_U
" = Wall_Metal_D
7 = Wall_Metal_UR
6 = Wall_Metal_UL
9 = Wall_Metal_DL
8 = Wall_Metal_DR
~ = Wall_Metal_URC
@ = Wall_Metal_ULC
_ = Wall_Metal_DRC
! = Wall_Metal_DLC
P = PlayerRight and TowardsRight
1 = Door1 and Checkpoint_Marker
2 = Door2 and Checkpoint_Marker
3 = Door3 and Checkpoint_Marker
4 = Door4 and Checkpoint_Marker
+ = DoorXL and Checkpoint_Marker
X = DoorXM and Checkpoint_Marker
? = DoorXR and Checkpoint_Marker
O = Button and Not_Just_Pressed
A = YellowApple
H = BlueApple
E = EggShell_1
B = EggBottom
W = Egg
Marker = TowardsLeft or TowardsRight or TowardsUp or TowardsDown
Player = PlayerLeft or PlayerRight or PlayerUp or PlayerDown or PlayerAteLeft or PlayerAteRight or PlayerAteUp or PlayerAteDown
Tail = Tail_1 or Tail_2 or Tail_3 or Tail_4
BodyBends = BodyBend_1 or BodyBend_2 or BodyBend_3 or BodyBend_4
BodyPart = BodyHorizontal or BodyVertical or BodyBend_1 or BodyBend_2 or BodyBend_3 or BodyBend_4
PlayerPart = Player or BodyPart or Tail
DoorX = DoorXM or DoorXM_1 or DoorXM_2 or DoorXM_3 or DoorXM_4 or DoorXM_5 or DoorXM_6 or DoorXM_7 or DoorXM_8 or DoorXM_9 or DoorXM_10
Door = Door1 or Door2 or Door2_1 or Door3 or Door3_1 or Door3_2 or Door4 or Door4_1 or Door4_2 or Door4_3 or DoorXL or DoorXL_1 or DoorXL_6 or DoorXR or DoorXR_5 or DoorX
Walls = Wall or Wall_Metal_U or Wall_Metal_L or Wall_Metal_R or Wall_Metal_D or Wall_Metal_UR or Wall_Metal_DR or Wall_Metal_DL or Wall_Metal_UL or Wall_Metal_URC or Wall_Metal_ULC or Wall_Metal_DRC or Wall_Metal_DLC
Obstacle = Walls or PlayerPart or Door
Apple = YellowApple or BlueApple or Egg
=======
SOUNDS
=======
Undo 50721302
TitleScreen 46639909
SFX0 66467307 (Walk on metal)
SFX1 41037702 (Eat food)
SFX2 78277102 (Press Button)
SFX3 47230702 (Unpress Button)
SFX4 44928302 (Open Door)
SFX5 6466307 (Walk on dirt)
SFX6 72511108 (Forboding...)
================
COLLISIONLAYERS
================
Not_Just_Pressed
Key
Marker
Background
Metal, Checkpoint_Marker
EggShell_1, EggShell_2, EggBottom
Button
Pressed
Player, BodyPart, Door, Tail, Apple, Walls, Egg
======
RULES
======
left [ > Player TowardsLeft | Apple ] -> [ BodyHorizontal TowardsLeft | PlayerAteLeft TowardsLeft ] SFX1
left [ > Player TowardsUp | Apple ] -> [ BodyBend_2 TowardsLeft | PlayerAteLeft TowardsLeft ] SFX1
left [ > Player TowardsDown | Apple ] -> [ BodyBend_4 TowardsLeft | PlayerAteLeft TowardsLeft ] SFX1
right [ > Player TowardsRight | Apple ] -> [ BodyHorizontal TowardsRight | PlayerAteRight TowardsRight ] SFX1
right [ > Player TowardsUp | Apple ] -> [ BodyBend_1 TowardsRight | PlayerAteRight TowardsRight ] SFX1
right [ > Player TowardsDown | Apple ] -> [ BodyBend_3 TowardsRight | PlayerAteRight TowardsRight ] SFX1
up [ > Player TowardsUp | Apple ] -> [ BodyVertical TowardsUp | PlayerAteUp TowardsUp ] SFX1
up [ > Player TowardsLeft | Apple ] -> [ BodyBend_3 TowardsUp | PlayerAteUp TowardsUp ] SFX1
up [ > Player TowardsRight | Apple ] -> [ BodyBend_4 TowardsUp | PlayerAteUp TowardsUp ] SFX1
down [ > Player TowardsDown | Apple ] -> [ BodyVertical TowardsDown | PlayerAteDown TowardsDown ] SFX1
down [ > Player TowardsLeft | Apple ] -> [ BodyBend_1 TowardsDown | PlayerAteDown TowardsDown ] SFX1
down [ > Player TowardsRight | Apple ] -> [ BodyBend_2 TowardsDown | PlayerAteDown TowardsDown ] SFX1
(If the player is NOT about to move onto a button, move the player normally.
This is actually somewhat complicated. When the snake head moves, we put a direction marker behind it, indicating which direction it went -- this gives the body parts directions to follow. But we ALSO put a direction marker, of the same direction, on the head's new space. This gets deleted on the next move and replaced with whatever move you make next. The purpose of the marker on top of the head is so that the game can keep in mind which direction you've come from. This is useful for creating new bodyparts when eating apples.)
left [ > player Marker | No Obstacle No Metal | ] -> [ TowardsLeft | PlayerLeft TowardsLeft | SFX5]
right [ > player Marker | No Obstacle No Metal | ] -> [ TowardsRight | PlayerRight TowardsRight | SFX5]
up [ > player Marker | No Obstacle No Metal | ] -> [ TowardsUp | PlayerUp TowardsUp | SFX5]
down [ > player Marker | No Obstacle No Metal | ] -> [ TowardsDown | PlayerDown TowardsDown | SFX5]
(Moving on metal.)
left [ > player Marker | No Obstacle Metal | ] -> [ TowardsLeft | PlayerLeft Metal TowardsLeft | SFX0]
right [ > player Marker | No Obstacle Metal | ] -> [ TowardsRight | PlayerRight Metal TowardsRight | SFX0]
up [ > player Marker | No Obstacle Metal | ] -> [ TowardsUp | PlayerUp Metal TowardsUp | SFX0]
down [ > player Marker | No Obstacle Metal | ] -> [ TowardsDown | PlayerDown Metal TowardsDown | SFX0]
startloop
late left [ BodyPart TowardsLeft | No PlayerPart TowardsLeft ] -> [ TowardsLeft | BodyHorizontal TowardsLeft]
late left [ BodyPart TowardsLeft | No PlayerPart TowardsUp ] -> [ TowardsLeft | BodyBend_3 TowardsUp]
late left [ BodyPart TowardsLeft | No PlayerPart TowardsDown ] -> [ TowardsLeft | BodyBend_1 TowardsDown]
late right [ BodyPart TowardsRight | No PlayerPart TowardsRight] -> [ TowardsRight | BodyHorizontal TowardsRight]
late right [ BodyPart TowardsRight | No PlayerPart TowardsUp] -> [ TowardsRight | BodyBend_4 TowardsUp]
late right [ BodyPart TowardsRight | No PlayerPart TowardsDown] -> [ TowardsRight | BodyBend_2 TowardsDown ]
late up [ BodyPart TowardsUp | No PlayerPart TowardsUp] -> [ TowardsUp | BodyVertical TowardsUp]
late up [ BodyPart TowardsUp | No PlayerPart TowardsLeft] -> [ TowardsUp | BodyBend_2 TowardsLeft]
late up [ BodyPart TowardsUp | No PlayerPart TowardsRight] -> [ TowardsUp | BodyBend_1 TowardsRight]
late down [ BodyPart TowardsDown | No PlayerPart TowardsDown] -> [ TowardsDown | BodyVertical TowardsDown]
late down [ BodyPart TowardsDown | No PlayerPart TowardsLeft] -> [ TowardsDown | BodyBend_4 TowardsLeft]
late down [ BodyPart TowardsDown | No PlayerPart TowardsRight] -> [ TowardsDown | BodyBend_3 TowardsRight]
endloop
(If Tail is on button, move it off and handle that.)
late left [ Tail TowardsLeft Button Pressed | No PlayerPart ] -> [ Button Pressed | Tail_1 ] SFX3
late right [ Tail TowardsRight Button Pressed | No PlayerPart ] -> [ Button Pressed | Tail_2 ] SFX3
late up [ Tail TowardsUp Button Pressed | No PlayerPart ] -> [ Button Pressed | Tail_3 ] SFX3
late down [ Tail TowardsDown Button Pressed| No PlayerPart ] -> [ Button Pressed | Tail_4 ] SFX3
(If Tail is not on button, just move it.)
late left [ Tail TowardsLeft No Button | No PlayerPart ] -> [ | Tail_1 ]
late right [ Tail TowardsRight No Button| No PlayerPart ] -> [ | Tail_2 ]
late up [ Tail TowardsUp No Button| No PlayerPart ] -> [ | Tail_3 ]
late down [ Tail TowardsDown No Button| No PlayerPart ] -> [ | Tail_4 ]
late [Tail TowardsRight] -> [Tail_2 TowardsRight]
late [Tail TowardsDown] -> [Tail_4 TowardsDown]
late [Tail TowardsUp] -> [Tail_3 TowardsUp]
late [Tail TowardsLeft] -> [Tail_1 TowardsLeft]
late [ Player Button No Pressed ] -> [ Player Button Pressed ] SFX2
startloop
late [ Player Button Not_Just_Pressed] [ Door No Key ] -> [ Player Button Not_Just_Pressed] [ Door Key ]
endloop
startloop
late [ Player Button Not_Just_Pressed ] -> [ Player Button ]
endloop
late [ Button Pressed No PlayerPart ] [ Door2_1 ] -> [ Button Pressed ] [ Door2 ]
late [ Button Pressed No PlayerPart ] [ Door3_1 ] -> [ Button Pressed ] [ Door3 ]
late [ Button Pressed No PlayerPart ] [ Door3_2 ] -> [ Button Pressed ] [ Door3_1 ]
late [ Button Pressed No PlayerPart ] [ Door4_1 ] -> [ Button Pressed ] [ Door4 ]
late [ Button Pressed No PlayerPart ] [ Door4_2 ] -> [ Button Pressed ] [ Door4_1 ]
late [ Button Pressed No PlayerPart ] [ Door4_3 ] -> [ Button Pressed ] [ Door4_2 ]
late [ Button Pressed No PlayerPart ] [ DoorXM_1 ] -> [ Button Pressed ] [ DoorXM ]
late [ Button Pressed No PlayerPart ] [ DoorXM_2 ] -> [ Button Pressed ] [ DoorXM_1 ]
late [ Button Pressed No PlayerPart ] [ DoorXM_3 ] -> [ Button Pressed ] [ DoorXM_2 ]
late [ Button Pressed No PlayerPart ] [ DoorXM_4 ] -> [ Button Pressed ] [ DoorXM_3 ]
late [ Button Pressed No PlayerPart ] [ DoorXM_5 ] -> [ Button Pressed ] [ DoorXM_4 ]
late [ Button Pressed No PlayerPart ] [ DoorXM_6 ] -> [ Button Pressed ] [ DoorXM_5 ]
late [ Button Pressed No PlayerPart ] [ DoorXM_7 ] -> [ Button Pressed ] [ DoorXM_6 ]
late [ Button Pressed No PlayerPart ] [ DoorXM_8 ] -> [ Button Pressed ] [ DoorXM_7 ]
late [ Button Pressed No PlayerPart ] [ DoorXM_9 ] -> [ Button Pressed ] [ DoorXM_8 ]
late [ DoorXM_9 Key ] -> [ DoorXM_10] SFX6 checkpoint
late [ DoorXM_8 Key ] -> [ DoorXM_9 ]
late [ DoorXM_7 Key ] -> [ DoorXM_8 ]
late [ DoorXM_6 Key ] -> [ DoorXM_7 ]
late [ DoorXM_5 Key ] -> [ DoorXM_6 ]
late [ DoorXM_4 Key ] -> [ DoorXM_5 ]
late [ DoorXM_3 Key ] -> [ DoorXM_4 ]
late [ DoorXM_2 Key ] -> [ DoorXM_3 ]
late [ DoorXM_1 Key ] -> [ DoorXM_2 ]
late [ DoorXM Key ] -> [ DoorXM_1 ]
late [ Door4_3 Key ] -> [ ] SFX4 checkpoint
late [ Door4_2 Key ] -> [ Door4_3 ]
late [ Door4_1 Key ] -> [ Door4_2 ]
late [ Door4 Key ] -> [ Door4_1 ]
late [ Door3_2 Key ] -> [ ] SFX4 checkpoint
late [ Door3_1 Key ] -> [ Door3_2 ]
late [ Door3 Key ] -> [ Door3_1 ]
late [ Door2_1 Key ] -> [ ] SFX4 checkpoint
late [ Door2 Key ] -> [ Door2_1 ]
late [ Door1 Key ] -> [ ] SFX4 checkpoint
late [ DoorXM_1] [ DoorXL ] -> [ DoorXM_1 ] [ DoorXL_1 ]
late [ DoorXM] [ DoorXL_1 ] -> [ DoorXM ] [ DoorXL ]
late [ DoorXM_6] [ DoorXL_1 ] -> [ DoorXM_6 ] [ DoorXL_6 ]
late [ DoorXM_5] [ DoorXL_6 ] -> [ DoorXM ] [ DoorXL_1 ]
late [ DoorXM_5] [ DoorXR ] -> [ DoorXM_5 ] [ DoorXR_5 ]
late [ DoorXM_4] [ DoorXR_5 ] -> [ DoorXM ] [ DoorXR ]
late [ DoorXM_10 ] [ DoorXL_6 ] [ DoorXR_5 ] -> [ ] [ ] [ ]
late [ Button Pressed No PlayerPart ] -> [ Button Not_Just_Pressed ]
(late [ Player Checkpoint_Marker ] -> [ Player Checkpoint_Marker] checkpoint)
(Alternative solution: have a different key for each button, each on different layers. but unite them under a "key" word. Then do the multiple keys on doors method)
==============
WINCONDITIONS
==============
No Egg
=======
LEVELS
=======
Message Oh! A baby is born...
######################################.............
............#8"""""""""9########haaha#.............
............#%---------|########aa.aa#.............
............#%-o-----o-|########aaaha#.............
............#%---------|####...#hhhaa#.............
............#%---------!####....hhaaa#.............
............#%---------4.......#haaha#.............
............#%---------@####....aaa.h#.............
............#%---------|####...#aahah#.............
............#%---o---o-|########ha.aa#.............
............#%---------|########ahaha#.............
............#7'''~-@'''6########haaah#.............
##################.###################.............
##################.################################
##################.################################
#...##########8""_3!""9############################
#.a.#....#####_-------|####8"""""""9###############
##..#..#......--o-o---|####%-------|#####...#######
###.##.#######~-------|####%-----o-!###......#..###
##..#...######%-------!####_--------.......#...a###
#..##.h.######_-o------....2-------@####..####..###
#.########....--------@####~-----o-|###############
#...#####..###~-------|####%-------|###############
#.#........###7''~3@''6####7''~-@''6###############
#...##############.############.###################
##################.############.###################
##################.############.######.......######
...................############.######.............
.###########################8"_1!"9###.............
.#######...######.....######%-----|###.............
.........h.#####..###.######%-----|###.............
##########.####..####.######%-----|###.............
h..........####.##>p..######%--o--|###.............
.#a#.......####.##ue########_-----|###.............
a#.#h##########.######......------|###.............
....h.#...h####..####..#####~-----|###.............
.####....aa#####......######7~+x?@6###.............
......#...a##################%---|####.............
#############################%---|####.............
..........................####%---|####.............
..........................#8""_---!""9#.............
..........................#%---------|#.............
..........................#%-@'''''~-|#.............
..........................#%-|#####%-|#.............
..........................#%-|#...#%-|#.............
..........................#%-|#.w.#%-|#.............
..........................#%-|#...#%-|#.............
..........................#%-|#.-.#%-|#.............
..........................#%-!_---!_-|#.............
..........................#%---------|#.............
..........................#7'''''''''6#.............
..........................#############.............
######################################.............
............#8"""""""""9#########aah##.............
............#%---------|########ahaaa#.............
............#%-o-----o-|########aaaha#.............
............#%---------|###....#hhhha#.............
............#%---------!###.....hhaaa#.............
............#%---------4.......#haaha#.............
............#%---------@###.....aaaah#.............
............#%---------|###....#aahah#.............
............#%--o----o-|########haaaa#.............
............#%---------|########ahaha#.............
............#7'''~-@'''6#########aaa##.............
##################.###################.............
##################.################################
##################.################################
#...##########8""_3!""9############################
#.a.#....#####_-------|####8"""""""9###############
##..#..#......---o----|####%-------|#####...#######
###.##.#######~-------|####%-----o-!###......#..###
##..#...######%-------!####_--------.......#...a###
#..##.h.######_--o-o---....2-------@####..####..###
#.########....--------@####~-----o-|###############
#...#####..###~-------|####%-------|###############
#.#........###7''~3@''6####7''~-@''6###############
#...##############.############.###################
##################.############.###################
##################.############.######.......######
...................############.######.............
.###########################8"_1!"9###.............
.....a.....######.....######%-----|###.............
...a...h...#####..###.######%-----|###.............
##########.####..####.######%-----|###.............
ha.........####.##>p..######%--o--|###.............
.#a#......a####.##uE########_-----|###.............
a#.#h##########.######......------|###.............
..h.ha.#..#####..####..#####~-----|###.............
.####....h.#####......######7~+X?@6###.............
......#....##################%---|####.............
#############################%---|####.............
..........................####%---|####.............
..........................#8""_---!""9#.............
..........................#%---------|#.............
..........................#%-@'''''~-|#.............
..........................#%-|#####%-|#.............
..........................#%-|#...#%-|#.............
..........................#%-|#.w.#%-|#.............
..........................#%-|#...#%-|#.............
..........................#%-|#.-.#%-|#.............
..........................#%-!_---!_-|#.............
..........................#%---------|#.............
..........................#7'''''''''6#.............
..........................#############.............)
Message Thank you for playing.
######################################.............
............#8"""""""""9#######aaaa###.............
............#%---------|#####...aaa###.............
............#%-o-----o-|####......####.............
............#%---------|####......####.............
............#%---------|#####.......##.............
............#%---------4........aaa.##.............
............#%---------|#####...aaa.##.............
............#%---------|#####...aaa.##.............
............#%--o---o--|#######.....##.............
............#%---------|#######....###.............
............#7''''-''''6########..####.............
##################.###################.............
##################.################################
##################.################################
#...##########8"""3"""9############################
#.a.#....#####%-------|####8"""""""9###############
##..#..#......---o----|####%-------|#####...#######
###.##.#######%-------|####%-----o-|###......#..###
##..#...######%-------|####%--------.......#...a###
#..##.a.######%--o-o---....2-------|####..####..###
#.########....--------|####%-----o-|###############
#...#####..###%-------|####%-------|###############
#.#........###7'''3'''6####7'''-'''6###############
#...##############.############.###################
##################.############.###################
##################.############.######.......######
##############.....############.######.............
#..............#############8""-""9###.............
#.###############.....######%-----|###.............
#..a...a...#####..###.######%-----|###.............
##...a...a.####..####.######%-----|###.............
#######a##.####.##>p..######%--o--|###.............
#..a.......####.##u.########%-----|###.............
#....a.########.######......------|###.............
#.######...####..####..#####%-----|###.............
#.........a#####......######7''4''6###.............
########...####################.######.............
##############################...#####.............
.............##########################.............
.............#8"""""""""9#######aaaa###.............
.............#%---------|#####...aaa###.............
.............#%-o-----o-|####......####.............
.............#%---------|####......####.............
.............#%---------|#####.......##.............
.............#%---------4........aaa.##.............
.............#%---------|#####...aaa.##.............
.............#%---------|#####...aaa.##.............
.............#%-o-----o-|#######.....##.............
.............#%---------|#######....###.............
.............#7''''-''''6########..####.............
.............######.###################.............
##################.################################
##################.################################
#...##########8"""3"""9############################
#.a.#....#####%-------|####8"""""""9###############
##..#..#......---o----|####%-------|#####...#######
###.##.#######%-------|####%-----o-|###......#..###
##..#...######%-------|####%--------.......#...a###
#..##.a.######%--o-o---....2-------|####..####..###
#.########....--------|####%-----o-|###############
#...#####..###%-------|####%-------|###############
#.#........###7'''3'''6####7'''-'''6###############
#...##############.############.###################
##################.############.###################
##################.############.######.......######
##############.....############.######.............
#..............#####..######8""-""9###.............
#.##a###########......######%-----|###.............
#.##.#########....###.######%-----|###.............
#.##.....#####..####..######%-----|###.............
#.##.a...#####.##>p..#######%--o--|###.............
#....###.#####.##u.#########%-----|###.............
######....####.######.......------|###.............
######a.a.####...####.######%-----|###.............
######a.a.######......######7''4''6###.............
###############################.######.............
##############################...#####.............
###################################################
..........###...........###########################
...........##...........###8"""""""9###############
...........##...........###%-------|###############
..#####.##.##...........###%-----o-|######..#######
..##..###..##...........###%-------|###.....##..###
.....#####.##..............2--------....##.....a###
..#..########...........###%-------|##########..###
..###.####.##...........###%-----o-|###############
.##..#####.##...........###%-------|###############
.#########.##...........###7'''-'''6###############
...........##...........#######.###################
###############################.###################
###############################.######.......######
...........####################.######.............
..########.#####......######8""-""9###.............
..########.#####.####.######%-----|###.............
..########.###...####.######%-----|###.............
..#######..###.#####..######%-----|###.............
..#######..###.##.P..#######%--o--|###.............
.########..###.##..#########%-----|###.............
.########..###.######.......------|###.............
.########..###...####.######%-----|###.............
.########..#####......######7''4''6###.............
...........####################.######.............
##############################...#####.............
######################################
..........###...........##...........#
...........##...........##...........#
...........##...........##...........#
..#####.##.##...........##...........#
..##..###..##...........##...........#
.....#####.##...........##...o...o...#
..#..########...........##...........#
..###.####.##...........##...........#
.##..#####.##...........##...........#
.#########.##...........##...........#
...........##...........##...........#
###############################.######
###############################.######
...........####################.######
..########.#####......######8""1""9###
..########.#####.####.######%-----|###
..########.###...####.######%-----|###
..#######..###.#####..######%-----|###
..#######..###.##.p..#######%--o--|###
.########..###.##..#########%-----|###
.########..###.######.......------|###
.########..###...####.######%-----|###
.########..#####......######7''4''6###
...........####################.######
##############################...#####
###########################################
###########.........#8"""""""""##....##...#
.........###......o.#%---------...#..##.a.#
.........####.......#%-------o-####.###..##
.........##........##%---------###...##.###
..........3.o........2--o------###.aa##..##
.........##.........#%---------#########.##
.........####.....o.#%-------o-....###...##
.........#####......#%---------###.....#.##
.........#####..#####7'''---'''#######...##
##############.###########.################
##############.###########.################
############....######8"""."""9############
................######%-------|############
.#a###################%-------|############
.#......#####....#####%-------|############
.#.a....#####.....####%---o---|############
...####.#####...p.....--------|############
#####...#####.....####%-------|############
#####a.a.####b.e.#####%-------|############
#####a.a.#############7'''4'''6############
#########################...###############
######################8"""""""""""#########
###########.........#8%----------....##...#
.........###......o.#%-------o---.#..##.a.#
.........####.......#%---------|'##.###..##
.........##........##%--------|6##...##.###
..........3.o........2--o-----####.aa##..##
.........##.........#%---------|"#######.##
.........####.....o.#%-------o---..###...##
.........#####......#7%-----------.....#.##
.........#####..######7''---''''''####...##
##############.###########.################
##############.###########.################
############....######8"""1"""9############
................######%-------|############
.#a###################%-------|############
.#......#####....#####%-------|############
.#.a....#####.....####%---o---|############
...####.#####...p.....--------|############
#####...#####.....####%-------|############
#####a.a.####b.e.#####%-------|############
#####a.a.#############7'''4'''6############
#########################...###############
########
.......#
..1..O.#
.P.1.O.#
.......#
.......#
########)