lifter (empty) → 0.1
raw patch · 93 files changed
+2668/−0 lines, 93 filesdep +arraydep +basedep +bitmapsetup-changedbinary-added
Dependencies added: array, base, bitmap, bytestring, directory, filepath, gloss, mtl, stb-image
Files
- Setup.hs +2/−0
- graphics/beard.bmp binary
- graphics/bricks.bmp binary
- graphics/bug.bmp binary
- graphics/ghost.bmp binary
- graphics/goto.bmp binary
- graphics/lambda.bmp binary
- graphics/lamrock.bmp binary
- graphics/lift.bmp binary
- graphics/miner.bmp binary
- graphics/openlift.bmp binary
- graphics/razor.bmp binary
- graphics/rock.bmp binary
- graphics/target.bmp binary
- lifter.cabal +27/−0
- maps/beard.map +22/−0
- maps/beard1.map +13/−0
- maps/beard2.map +19/−0
- maps/beard3.map +16/−0
- maps/beard4.map +16/−0
- maps/beard5.map +50/−0
- maps/beard6.map +21/−0
- maps/contest1-10.map +51/−0
- maps/contest1.map +6/−0
- maps/contest10.map +24/−0
- maps/contest2.map +7/−0
- maps/contest3.map +9/−0
- maps/contest4.map +9/−0
- maps/contest5.map +15/−0
- maps/contest6.map +15/−0
- maps/contest7.map +9/−0
- maps/contest8.map +18/−0
- maps/contest9.map +17/−0
- maps/flood1.map +12/−0
- maps/flood2.map +10/−0
- maps/flood3.map +16/−0
- maps/flood4.map +23/−0
- maps/flood5.map +13/−0
- maps/full/full1.map +9/−0
- maps/full/full10.map +51/−0
- maps/full/full11.map +153/−0
- maps/full/full12.map +157/−0
- maps/full/full2.map +15/−0
- maps/full/full3.map +17/−0
- maps/full/full4.map +18/−0
- maps/full/full5.map +19/−0
- maps/full/full6.map +26/−0
- maps/full/full7.map +29/−0
- maps/full/full8.map +33/−0
- maps/full/full9.map +29/−0
- maps/horock1.map +14/−0
- maps/horock2.map +13/−0
- maps/horock3.map +17/−0
- maps/identity.map +20/−0
- maps/lightning/lightning1.map +6/−0
- maps/lightning/lightning10.map +15/−0
- maps/lightning/lightning11.map +29/−0
- maps/lightning/lightning12.map +26/−0
- maps/lightning/lightning13.map +42/−0
- maps/lightning/lightning14.map +100/−0
- maps/lightning/lightning2.map +9/−0
- maps/lightning/lightning3.map +15/−0
- maps/lightning/lightning4.map +23/−0
- maps/lightning/lightning5.map +25/−0
- maps/lightning/lightning6.map +17/−0
- maps/lightning/lightning7.map +17/−0
- maps/lightning/lightning8.map +17/−0
- maps/lightning/lightning9.map +20/−0
- maps/rocks.map +38/−0
- maps/secondtimearound.map +38/−0
- maps/sixty-four-moves.map +100/−0
- maps/smash.map +6/−0
- maps/superposition.map +20/−0
- maps/test0.map +15/−0
- maps/test1.map +18/−0
- maps/test10.map +10/−0
- maps/test2.map +19/−0
- maps/test3.map +29/−0
- maps/test4.map +9/−0
- maps/test5.map +16/−0
- maps/test6.map +14/−0
- maps/test7.map +19/−0
- maps/test8.map +12/−0
- maps/test9.map +16/−0
- maps/trampoline1.map +10/−0
- maps/trampoline2.map +18/−0
- maps/trampoline3.map +29/−0
- maps/trampoline4.map +16/−0
- maps/wetbeard.map +25/−0
- maps/zigzag.map +14/−0
- src/Main.hs +226/−0
- src/Map.hs +169/−0
- src/Rules.hs +361/−0
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ graphics/beard.bmp view
binary file changed (absent → 1146 bytes)
+ graphics/bricks.bmp view
binary file changed (absent → 1146 bytes)
+ graphics/bug.bmp view
binary file changed (absent → 1146 bytes)
+ graphics/ghost.bmp view
binary file changed (absent → 1146 bytes)
+ graphics/goto.bmp view
binary file changed (absent → 1146 bytes)
+ graphics/lambda.bmp view
binary file changed (absent → 1146 bytes)
+ graphics/lamrock.bmp view
binary file changed (absent → 1146 bytes)
+ graphics/lift.bmp view
binary file changed (absent → 1146 bytes)
+ graphics/miner.bmp view
binary file changed (absent → 1146 bytes)
+ graphics/openlift.bmp view
binary file changed (absent → 1146 bytes)
+ graphics/razor.bmp view
binary file changed (absent → 1146 bytes)
+ graphics/rock.bmp view
binary file changed (absent → 1146 bytes)
+ graphics/target.bmp view
binary file changed (absent → 1146 bytes)
+ lifter.cabal view
@@ -0,0 +1,27 @@+Name: lifter+Version: 0.1+License: BSD3+Author: ICFP Contest 2012 Organisers +Maintainer: Edwin Brady <eb@cs.st-andrews.ac.uk>+Homepage: http://icfpcontest2012.wordpress.com/++Stability: Beta+Category: Games +Synopsis: A boulderdash-like game and solution validator+Description: ICFP Contest 2012 task++Cabal-Version: >= 1.6+Build-type: Simple++Data-files: graphics/*.bmp maps/*.map maps/full/*.map maps/lightning/*.map++Executable lifter+ Main-is: Main.hs+ hs-source-dirs: src+ Other-modules: Map, Rules+ Paths_lifter++ Build-depends: base>=4 && <5, mtl, gloss>=1.7.4.1, + bytestring, stb-image, bitmap,+ array, directory, filepath+
+ maps/beard.map view
@@ -0,0 +1,22 @@+ ###########L####### + #.....*......*..... # + #.... .*.....*...... # + #..*. .*.....*...... # +#. ..*.....*..*...*... .#+#. ..*.....*..*...*... .#+#...#################...#+#...#\\\\\\\\\\\\\\\#...#+ #. .#************\#...# + #...#\\\\\\\\\\\\\#. .# + #....#####\#######.. .# + #...*. ..*... ......# + #...*. ..*... .*....# + #.. .. ..*.... .*...# + #.. .. ..*.... .*...# + #....*... .. .. ..# + #....*... .. .. ..# + #......*.*... ..# + #... ..*.*... ..# + ##... .......## + ####..R.### + ####
+ maps/beard1.map view
@@ -0,0 +1,13 @@+##########+#** \\\\#+#.R.. #+# \ ..*\#+#! ..*!#+#### # #+#\\... # L+#\\.W... #+#\\. #+##########++Growth 15+Razors 0
+ maps/beard2.map view
@@ -0,0 +1,19 @@+##############################+#R...........................#+#.........................W..#+#..\\\\\\\\\\\\\\\\\\\\\\\\..#+#............................#+#..*****.*\...*...*...*****..#+#..*\....*\....*\*..*.\\*\\..#+#..*\....****..!*!......*....#+#..*\....*\....*\*..*...*....#+#..*\....*\...*...*.....*....#+#............................#+#..\\\\\\\\\\\\\\\\\\\\\\\\..#+#................ ..... .....#+#................ W....L#+##############################++Growth 25+Razors 10+Flooding 20
+ maps/beard3.map view
@@ -0,0 +1,16 @@+ ################+ #*****#!! 1 #+ #..\..# #+#########\\\\ # .\\\. #+#.............# * #+#.. .\\\#..!..#\** #+#.. LW\\#W ..##### ####+#..R\\\\#.. ..*\*\*W...#+#.......A.. ...\.\...\\#+#.......... ** #+############....\.######+ #.....!#+ ########++Growth 10+Trampoline A targets 1
+ maps/beard4.map view
@@ -0,0 +1,16 @@+####################+#W\\!#\\\**.\#W\\\W#+##*######..###..\\\#+#.......\.R ###...\#+#####.###.#.......##+#.......#.#\####.###+#\\##\###\#\\#...#.L+#\##\.###.####.#.#.#+#\W#####.....###.W.#+####\\...\\\...#.#.#+#W*######.######.#.#+#\\\\\\\\\.........#+############\###\###+#\\.. *..........\\#+#W... #.........##W#+####################
+ maps/beard5.map view
@@ -0,0 +1,50 @@+<<<<<<< HEAD+ ##########+ ####..******####+ ###.. 3ABCDEF...##+ ## ## + ### ##+ ##.....\\\...\\\.....###+ #.. \\\ * \\\ ##+ # * #+ ## *** #+ #*****************#+ ##..............#+ ##...........#+ ###WR..W###+ #L###+ .....+ ##### #####+ #1 ! G##2 ! H#+ ##### #####+=======+ ##########+ ####..******####+ ###.. 3ABCDEF...##+ ## ## + ### ##+ ###.....\\\...\\\.....###+ #.. \\\ * \\\ ##+ ## * ##+ ### *** ##+ #*****************##+ ###..............##+ ###...........##+ ####WR..W####+ ##L####+ .....+ ###### ######+ ##1\! G##2 !\H##+ ###### ######+>>>>>>> e32e9bd8526c252a8bf9d027dfc59652da6148c3++Trampoline A targets 1+Trampoline B targets 1+Trampoline C targets 1+Trampoline D targets 1+Trampoline E targets 1+Trampoline F targets 1+Trampoline G targets 2+Trampoline H targets 3+Growth 5+Razors 0
+ maps/beard6.map view
@@ -0,0 +1,21 @@+ ###########+ #!!###########!!#+ A L+ 1 #+ # #+ # #+ # \\\\ \\\\ #+ # ! #+ # @@ #+ # #+ ## **R** #+ ... ## #....+ .......... ########W#### .........+..........B .............+..\.........2 ...........\....++ +Trampoline A targets 2+Trampoline B targets 1+Growth 5+Razors 33
+ maps/contest1-10.map view
@@ -0,0 +1,51 @@+###############################################################I################+# #*** \\ #W W#+# ############### #\\\ .. #W W#+# #\\\.......** ###### #########.## ##########+# #\\#.#####...##. *7# #.......\ ..........* .#+# #\\#.....*##. # \.# #*******\......#....#\\ .#+# #\#####\...## #\ * # ###\.\\\...**..#....... *#+# W #\......####* H .\# #*****\\ .\\..## #\.#+# #\.######* #.\######### ######### .... ##########+# #\.#. *...##.## ## *# # # #+# #\##. .. *...# ##6 .*## ####*#### WW #+# #\...... F#.#.# ##\\\\## #.......# #+# ###########.#.# W ##....## ######### \\\\*##########+# ############\..........#.# ##..\ . ## #*\\ **# *..*\ \\\\\#+# #..........##.##########.# ## . G . ## #.\**\*** .....**.# \\##\#+# #.....*....#5.#\.........# ##\\\# #\\\\## #\8...... .\\.. \\\\\# +# #..\\\\\\..###################### ################################# +# #. ....#.*..#\.#\\... ......# #..........................\# +# #..\\\\\\\.#.\..#\.D##.#. ...*..# #..\\###...#.... ###.# +# #..\.. .#.3 .##.# #.#. ... ..# #..\*\\\.. #.... ..##\\..\#.# +# #..\.. ....#.\ ...### #. \ ..# #..\*\.... #.... ..#\#....#.# +# #..... ..* #..\ ..#. .#..... **########...\###.. #.... ....#....#.# +# #..### ### #...\ ##.#\#..... ..\\\*. #... ..... ..... .####......#+# #...4#\#\\.#....\ \#*\\#.###. ####\\\ #\\. #.... .......#+# ######E#############\\.#. ...## \ #... #..#. .....*\ ##.......#+# W#\#.#..... ....# \ #.#....... ...#.. ....######+# ################.#..... ....# #. ...#... ...#.\ ....#..* #+# #..2...#..***#\\.#..... ....#\ #......... ...#.. #....#.#\\#+# #..*...#..\\\########.. ..###*####.....*... .....*\#\\.....*.#+# #..#...#...**#......... .........#.***.* .......*\****.....#.#+# W #.\.\..C.*.*\#......... ....***..#.\\\.. ................ .#+# ####**.B1....#..\\\\\ # ####.....#.##### .###### ##### #+# #\.....#######........*R..\\\ .#....\\.................... #+# #\..* .# ##########A##########....****...#.##.....\\\\..\#+# ######## #....\\\\...#.........*....\#+# #....\\\\...#.\\. #\###.\# +# W #.... ..#.... ...#\\\\. # +# #........ ..#.... ...#..... # +# #........ ........#9# +##############################################################################L# ++Trampoline A targets 1+Trampoline B targets 2+Trampoline C targets 3+Trampoline D targets 4+Trampoline E targets 5+Trampoline F targets 6+Trampoline G targets 7+Trampoline H targets 8+Trampoline I targets 9+Growth 1
+ maps/contest1.map view
@@ -0,0 +1,6 @@+######+#. *R#+# \.#+#\ * #+L .\#+######
+ maps/contest10.map view
@@ -0,0 +1,24 @@+#############################+#..........................\#+#..\\###...#.... ###.#+#..\*\\\.. #.... ..##\\..\#.#+#..\*\.... #.... ..#\#....#.#+#...\###.. #.... ....#....#.#+#... ..... ..... .####......#+#\\. #.... .......#+#... #..#. .....*\ ##.......#+#.#....... ...#.. ....######+#. ...#... ...#.\ ....#..* #+##........ ...#.. #....#.#\\#+#.....*... .....*\#\\.....*.#+#.***.* .......*\****.....#.#+#.\\\.. ................ .#+#.##### .###### ##### #+#....\\.................... #+#....****...#.##.....\\\\..\#+#....\\\\...#.........*....\#+#....\\\\...#.\\. #\###.\#+#.... ..#.... ...#\\\\. #+#........ ..#.... ...#..... #+#........ ........#R#+###########################L#
+ maps/contest2.map view
@@ -0,0 +1,7 @@+#######+#..***#+#..\\\#+#...**#+#.*.*\#+LR....#+#######
+ maps/contest3.map view
@@ -0,0 +1,9 @@+########+#..R...#+#..*...#+#..#...#+#.\.\..L+####**.#+#\.....#+#\..* .#+########
+ maps/contest4.map view
@@ -0,0 +1,9 @@+#########+#.*..#\.#+#.\..#\.L+#.R .##.#+#.\ ...#+#..\ ..#+#...\ ##+#....\ \#+#########
+ maps/contest5.map view
@@ -0,0 +1,15 @@+############+#.....*....#+#..... ....#+#..\\\ \\..#+#. ....#+#..\\\ \\\.#+#..\.. .#+#..\.. ....#+#..... .\ #+#..... .\ #+#...@. .*\#+#....@ .*\#+#..### ### #+#...R#\#\\.#+######L#####
+ maps/contest6.map view
@@ -0,0 +1,15 @@+###############+#\\\.......** #+#\\#.#####...##+#\\#.....*##. #+#\#####\...## #+#\......####* #+#\.######* #.\#+#\.#. *...##.##+#\##. .. *...#+#\...... L#.#.#+###########.#.#+#\..........#.#+##.##########.#+#R.#\.........#+###############
+ maps/contest7.map view
@@ -0,0 +1,9 @@+ #######+ ## *#+ ##R *##+ ##\\\\##+ ##....##+ ##..\ . ##+ ## . L . ##+ ##\\\# #\\\\##+ ###### #######
+ maps/contest8.map view
@@ -0,0 +1,18 @@+##############+#\\... ......#+###.#. ...*..#+ #.#. ... ..#+### #. \ ..#+#. .#..... **#######+#.#\#..... ..\\\*. #+#*\\#.###. ####\\\ #+#\\.#. ...## \ #+#\#.#..... ....# \ # +###.#..... ....# ##+#\\.#..... ....#\ # +########.. ..###*####+#......... .........#+#......... ....***..#+#..\\\\\ # ####.....#+#........*R..\\\ .#+##########L##########
+ maps/contest9.map view
@@ -0,0 +1,17 @@+ #L#######+ #*** \\ #+ #\\\ .. #+#########.## ##########+#.......\ ..........* .#+#*******\......#....#\\ .#+###\.\\\...**..#....... *#+#*****\\ .\\..## #\.#+######### .... ##########+ # #+ ####*#### + #.......#+######### \\\\*##########+#*\\ **# *..*\ \\\\\#+#.\**\*** .....**.# \\##\#+#\R...... .\\.. \\\\\#+##########################
+ maps/flood1.map view
@@ -0,0 +1,12 @@+###########+#....R....#+#.*******.#+#.\\\\\\\.#+#. .#+#..*\\\*..#+#.#*\\\*#.#+#########L#++Water 1+Flooding 8 +Waterproof 5
+ maps/flood2.map view
@@ -0,0 +1,10 @@+#######+#..***#+#..\\\#+#...**#+#.*.*\#+LR....#+#######++Flooding 5+Waterproof 3
+ maps/flood3.map view
@@ -0,0 +1,16 @@+############+#..........#+#.....*....#+#..\\\\\\..#+#. ....#+#..\\\\\\\.#+#..\.. .#+#..\.. ....#+#..... ..* #+#..### ### #+#...R#\#\\.#+######L#####++Waterproof 10 +Flooding 10+Water 2
+ maps/flood4.map view
@@ -0,0 +1,23 @@+########################+#.....................\#+#......*\ ...........#+#......*... ......* ...#+#.. \\... .*..... ...#+#.. ....... ....... ...#+#.. ....... .\\.... ...# ######+#. .... .....\...# #\\\\#+#\\\......... .........# #....#+########### R ########*#####+ #.......... ........***\\\#+ #.......... ............**#+ #.......... ......... *.*\#+ #....\\.... ....\\..... ..L+ #.....................****#+ #........\*...............#+ #........... .........#+ #.........................#+ ###########################++Water 1+Flooding 20+Waterproof 10
+ maps/flood5.map view
@@ -0,0 +1,13 @@+#########+#.*..#\.#+#.\..#\.L+#.R .##.#+#.\ ...#+#..\ ..#+#...\ ##+#....\ \#+#########++Water 2+Flooding 11+Waterproof 5
+ maps/full/full1.map view
@@ -0,0 +1,9 @@+ #######+ ##* @#+ #\R .*##+ ##\\\\##+ ##....##+ ##@.\ @ ##+ ##*. L . ##+ ##\\\# #\\\\##+ ###### #######
+ maps/full/full10.map view
@@ -0,0 +1,51 @@+###############################################################I################+# #*** \\ #W W#+# ############### #\\\ .. #W W#+# #\\\.......** ###### #########.## ##########+# #\\#.#####...##. *7# #.......\ ..........* .#+# #\\#.....*##. # \.# #*******\......#....#\\ .#+# #\#####\...## #\ * # ###\.\\\...**..#....... *#+# W #\......####* H .\# #*****\\ .\\..## #\.#+# #\.######* #.\######### ######### .... ##########+# #\.#. *...##.## ## *# # # #+# #\##. .. *...# ##6 .*## ####*#### WW #+# #\...... F#.#.# ##\\\\## #.......# #+# ###########.#.# W ##....## ######### \\\\*##########+# ############\..........#.# ##..\ . ## #*\\ **# *..*\ \\\\\#+# #..........##.##########.# ## . G . ## #.\**\*** .....**.# \\##\#+# #.....*....#5.#\.........# ##\\\# #\\\\## #\8...... .\\.. \\\\\# +# #..\\\\\\..###################### ################################# +# #. ....#.*..#\.#\\... ......# #..........................\# +# #..\\\\\\\.#.\..#\.D##.#. ...*..# #..\\###...#.... ###.# +# #..\.. .#.3 .##.# #.#. ... ..# #..\*\\\.. #.... ..##\\..\#.# +# #..\.. ....#.\ ...### #. \ ..# #..\*\.... #.... ..#\#....#.# +# #..... ..* #..\ ..#. .#..... **########...\###.. #.... ....#....#.# +# #..### ### #...\ ##.#\#..... ..\\\*. #... ..... ..... .####......#+# #...4#\#\\.#....\ \#*\\#.###. ####\\\ #\\. #.... .......#+# ######E#############\\.#. ...## \ #... #..#. .....*\ ##.......#+# W#\#.#..... ....# \ #.#....... ...#.. ....######+# ################.#..... ....# #. ...#... ...#.\ ....#..* #+# #..2...#..***#\\.#..... ....#\ #......... ...#.. #....#.#\\#+# #..*...#..\\\########.. ..###*####.....*... .....*\#\\.....*.#+# #..#...#...**#......... .........#.***.* .......*\****.....#.#+# W #.\.\..C.*.*\#......... ....***..#.\\\.. ................ .#+# ####**.B1....#..\\\\\ # ####.....#.##### .###### ##### #+# #\.....#######........*R..\\\ .#....\\.................... #+# #\..* .# ##########A##########....****...#.##.....\\\\..\#+# ######## #....\\\\...#.........*....\#+# #....\\\\...#.\\. #\###.\# +# W #.... ..#.... ...#\\\\. # +# #........ ..#.... ...#..... # +# #........ ........#9# +##############################################################################L# ++Trampoline A targets 1+Trampoline B targets 2+Trampoline C targets 3+Trampoline D targets 4+Trampoline E targets 5+Trampoline F targets 6+Trampoline G targets 7+Trampoline H targets 8+Trampoline I targets 9+Growth 1
+ maps/full/full11.map view
@@ -0,0 +1,153 @@+###################################################################################################+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+#@........................................\\!.....................................................#+#@.......................................\.\\\....................................................#+#@.......................................\ \!!...!!..................\\\........................#+#@......................................\. .\\\..\\\..............!!..\\\\\!.....................#+#@...................................... .\ ..!\ \..........!!\\\\!..\ \\\\\...................#+#@...................................... \.\ \..\\\\\\\\\\\\ \.\\ \...................#+#@......................................\\ \\\\ \!.\\\\\\\ \\ \...................#+#@......................................\\ \\\ \\\\ \\...................#+#@...................................\\\\\ \\\. \\....................#+#@...................................\\\ \.....................#+#@...................................!\\ \\....................#+#@....................................\ \....................#+#@....................................\ \....................#+#@.................................\\!.\ \\....................#+#@...............................\\ .\.\\ .\.....................#+#@...............................\\ \\\ .\......................#+#@................................\\ \\\.......................#+#@................................!\ \\\!.......................#+#@................................!\ \..........................#+#@................................\ .\!..........................#+#@..............................\\\ .\............................#+#@..............................\\ \\.............................#+#@...............................\ .\\..............................#+#@........................!!.....\. \ \ .\\\...............................#+#@........................\\\\.\\\\ \ \\ \\\\ \\\\................................#+#@......................\.\ \\\\\\\ \ \\ \ \\...................................#+#@......................\\\ \\\. \\ \\ \\....................................#+#@......................\\\ \\\\ .\\ \\ \\\.....................................#+#@......................\\\ \\\ .\ .\\\!......................................#+#@....................\\\\ .. \\.........................................#+#@....................\\. \\\..\\....!!...................................#+#@.....................\\ \\\\\\\....\\...................................#+#@......................\ \\\\\!!!\\\...................................#+#@......................\. \\\\\\\\....................................#+#@......................\\ \\...\\.....................................#+#@....................\\..\ \\\..\\.........\\!..........................#+#@...................\\\\.\\ \\\\.\\\\.......\\\\\\..........................#+#@...................\ \\\\ \\\\\\!\\.......\\. \..........................#+#@...................\ .\\ \\\\\\\........\\\ .\.\\\!!!!.................#+#@...................\ \\.. \\.....\\\\\ \\\\\\\\\\!...............#+#@...................\ ..\\!.\\\\\\. \\ .\\.\\\\\\\\.....#+#@...................\ .\ \\\\\..\\\\\ \\\\\\\\\\\\!...#+#@...................\.\\\..\\ .\.....\\ \\...#+#@...................\\\\\\\\\ \\\\\\\\ \\..#+#@....................\\\\\\\\ \\\\. \\.#+#@...................\\\\\\\ \\ ** \.#+#@..................\\\\\\\ \\ **** \.#+#@..................\\\\\\\. \ ****** ..#+#@.....................\\\.\ \ \\\\\\\ \.#+#@....................\\.\.\ \ \ \\\\ \ \ ..#+#@....................\ .\\ .\.#+#@...................... .\ \\\.#+#@..................!\\\\\ .\...#+#@..................\\\\\\\ \\\ \\ \....#+#@..................\ \\\\ \ \ \\ \\ \!....#+#@.................\\\\ \\ !.....#+#@.................\\\\\ \\\!.....#+#@.................. \\\\ \......#+#@................. \\\ \\......#+#@...............\\ \.......#+#@...............\. ........#+#@...............\\\ \\ \ ........#+#@.........!!!!..!\\ \\\\ \ \ \\\ ........#+#@........\\\\\\\\\ \\ \ \ \\\ \........#+#@........\ .\\\ \\. \\ \\\........#+#@........\ \\.. \\ \..........#+#@........!\\\\\\\\\\\\ \\.\. \..........#+#@.........!!\\\\\\\\\\ .\\\\ ...........#+#@...........\..\\\\\\\ \.\. \...........#+#@..........!\\\. .\..\ \\\...........#+#@..........\\.\ \\\\\ \\.............#+#@...........\\. \\.\ .\..............#+#@............\\\\. .\\.\\ \\..............#+#@.............!\\\\\\\.\\ \...............#+#@................\\\\..\\ \\...............#+#@.....................!\ \................#+#@.....................\\ !................#+#@.....................\ \!................#+#@.....................\ \\ \\ .\.................#+#@.....................\ \\\ \\\\ .\\..................#+#@..................!!\\ \\ ..\\\...................#+#@.................\\\\. \\ ..\\\\\\\....................#+#@.................\ \. \ \\ \\\\\\\\\\.......................#+#@.................. \\\ \\................................#+#@.................. \\ \\\.................................#+#@.................. .\\\\\\\\\\\.........................#+#@.................\ \\\\\\ .........\\\!........................#+#@.................\ \\\\\\\\ \\\ \\\\\.\.\...\...............#+#@................\\ .\\\\\\\\. \\ \\ \ \\\ \\\..\\..\.\\..\..\.\\....#+#@..............\\\\ .\\.\. .. \\\ \ \ \\\ \\.\\.\....\\.....\.\\....#+#@..............\\ \\..\ .. \\\ \ \ \ \\\ \ \ \W.....................#+#@.............\ \\..\. \. \\\\ R\\.. .L.\\.....................#+#@.............\ .\..\\\ \. \\\ \\ \ \\\\\\\\\\\......................#+#@.............\ ...\\ \ \\ \\ .\...............................#+#@.............\ ...\ \ \W\\ \\\\\\\\ \\................................#+#@.............\ \. \\ \..\\\ \\WWW.\\\\\\\\\................................#+#@.............\ \.. \\\ \....\\ .\\W...W\\\\\\.......\\\W......................#+#@.............\\ \W\\\\\.\..\\\.\ \\\\....\\\......\\\\\\......................#+#@.............W..\\ .#\\..W\\..\.\\\ \\ .\\\\.........\\\. .......................#+#@..............\\\\ 1#.......... !!!! \\ \\ .\\\.......\.B \\\....................#+#@...............\\ \#.......... \!!! \\ \\\WWWW\\\ .\\W...................#+#@.............\\\ .\\.........W.!!!!\! \ \ \\\\\\ \\W..................#+#@............\\ \\..........\.! \ \ \ \ \ .\\.................#+#@............\ \............\ ! \\\\ \\ \ \\\\..............#+#@...........\\ \\............\.! \ \\ \\ \\.............#+#@..........\\. \............\\ ! \ .\.............#+#@..........\. \............\!\\ .\............#+#@..........\ .\............\\\\ \\ \............#+#@.........\ \W.............\\. \ \\\ \\............#+#@.........\ .\................. \\.............#+#@........W. .\.................\. ######################### \\..............#+#@........\. \.................\\ # **@***@**#...* 2# \...............#+#@.......\\ \..................\ # .\.\.\.\....\# ### \\\...............#+#@......\\ \..................\ ## \\\\\\ ###### # \\\................#+#@......\ \.................\\ # # # \..................#+#@....... \...............\\\ ## ####### #### # \\.................#+#@......\ \\..............\\. ## \*\@## \\\# # \\................#+#@......\\...\\W..............\ # ......#..#.A \\# ### \\...............#+#@.......\\\\W...............\ ## # #### ####### # \...............#+#@..........................\\ # # ! . \### .\\...............#+#@..........................\ #\*\# ..... . #\# \\\\................#+#@.........................\ ##**\ ......... #\# \ \\\.................#+#@........................\\ #\\\\ \.........## .\\\\...................#+#@.......................W\ ####################### \\\\.....................#+#@......................W\. \\\.W......................#+#@.....................W\. \\\.........................#+#@.....................\. \\\ \\\\ .\W..........................#+#@.....................\ \\\\ \\\\ \............................#+#@.....................\ .\\............................#+#@.................\\..\ \\.............................#+#@.................\\..\ .. ..\\..............................#+#@................. \.\ \ \. .\\\...............................#+#@................. \\.\ \\\ \\ \\ ...................................#+#@................. \\ \ \\\\ \ \\\\\\\\ ...................................#+#@.................\ \\ \WW\\\\\\...\..................................#+#@.................\\ \\\ \\.......\\\\\..................................#+#@..................\ \\ \\\\. . .\...............................................#+#@..................\\ \\\\ \..\\\ \ \\\\\................................................#+#@...................\ \.W\\ \..W\\ \. \\\\\.................................................#+#@...................\. \...\\ \....\.\\.\.....................................................#+#@...................\. \....\\ \....\\\\\\.....................................................#+#@...................\\ \.....\\ \...............................................................#+#@....................\ \......\\\\...............................................................#+#*......................\.......\\\...............................................................#+###################################################################################################++Water 1+Flooding 1000+Waterproof 100+Trampoline A targets 1+Trampoline B targets 2
+ maps/full/full12.map view
@@ -0,0 +1,157 @@+########################################################################################################################################################################################################################+#\\\\\\\\\\..\............................................................................\\\\\\\ \ \ \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\......\\\\...........................................\.#+#\\\\\\\\\\\.............................................................\................\\\\\\\ \\........... \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.....\.\\\..............................................#+#\\\\\\\\\\\..\...........................................................................\\\\\\\ ..\.............. \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.......\\.............................................\\#+#\\\\\\\\\.\\\............................................................................\\\\\\\\\\.....\....\\.......\ \\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\...................................................\ \\\#+#\\\\\\\\\\.\\............................................................................\\\\\\\\.......................\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\....................................................\\\\\\#+#\\\\\\\\\\\.\............................................................................\\\\\\.................\......... \\\\\\\\\\\\\\\\\\\\\\\\\\\..\\\...................................................\\\\\\\\#+#\\\\\\\\\\\\\............................................................................\\\\\.........\.\\..\.\\\..\....\.\\\\\\\\\\\\\\\\\\\\\\\\\.........................................................\ \\\\\\ #+#\\\\\\\\\\\\\............................................................................\\\\......\.. \\........\. \\ ...\\\\\\\\\\\\.\\\\\..\.\.........................................................\\\\\\\ #+#\\\\\\\\\\\\\\...........................................................................\\\\..\..\.\.\\....\\\..\ ......\..\\\\\\\\\\\\\\\\\\\\.\........................................................\\\\\\\ #+#\\\\\\\\\\\\\............................................................................\\\..\..\..\\......\.....\\\.\\\\\..\\\\\\\\\\\\\\\\\\\\\....................................\\\\\\\............\\.\\\ #+#\\\\\\\\\\\\\\..............................................................................\..\.\\ . ...\ ! . !!!\.... .\\\.\\\\\\\\\\\\\.\\\\..................................\...\\\\\\\...........\\\\\\\ #+#\\\\\\\\.\\\\..............................................................................\\\ ...\..\.\.\\..\ .. .\\\..\..\\\..\\\\\\\\\\\\\\\\..............................\\..\\\\\\..........\\\\ \\\\ #+#\\\\\\\\\\\\\\...........................................................................\.\\.\. \ .... .\....\ \.!.\!. ..\\...\\\\\\\\\\\\\\\\\.\............................\\\\\\\..........\ \\ #+#\\\\\\\\\\\\\\............................................................................. \!\ \ \\\. !\\............ \ \\..\...\\\\\\\\\\\\\\\\..........................\...\\\\\\............ \ #+#\\\\\\\\\\\\\\...\.......................................................................\\ \\\ \\\ .!.\....\\\.\ !!!!...\ ....\..\\\\\\\\\\\\\\\\\............................\\\\\\............. \ #+#\\\\\\\\\\\\\\.......................\\\\\\\\\\\\\\\\ \\\\\\\\ .\\ \\\\ .#.##\!\\\...\!! ..!!! \. \...\\\\\\\\\\\\\\\\\\\\...\\\................\...\\\\\\..............\ \ #+#\\\\\\\\\\\\\\.................\ \\ \\ \ \\. \ . \.!\!### \\\ !\..! \..... \\\\\\\\\\\\\\\\\\.\\\................\...\\\\\................\ \ #+#\\\\\\\\\\\\\\....\...\.\.......\\\\ .\\\\ \! .!.\!\ # .!\\ !###!\ !!!\ .....\\\\\\\\\\\\\\\\\\\........................\\\\\.................\ \ #+#.\\\\\\\\\\\\\........\.....................................................\.\\\\\\\\\\\ \ . \! \!\.!#\\!##!##### .!!!#!\# ...\.\\\\\\\\\\\\\\\\\\\\\\\\\............\...\\\\\...................\ \ #+#..\\\\\\\\\\\\..\\\...\......................................................\\.\.\\\\\\.\. ! ! .!\! \\!#!###!###!!#!! # !\\. ...\\\\\\\\\\\\\\\\\\\\\\.................\\\\\....................\ \ #+#\\..\\\\\\\\\\..\\\.................................................................\\\\. \. ! #\\#! # #######!!!! \\\...\\..\...\\\\\\\\\\\\\\\\\\\\\\...........\...\\\\\......................\ \ #+#\\\..\\\\\\\\\..\\\...\..............................................................\\\. \\! #!!##########!.........!..\...\\..\\\\\\\\\\\\.\\.\\.......\.......\\\..\\\\.......................\ \ #+######..#######...##...##.....................................................#..########.. . !#!!!#! ####! ...... ... ........ \.#####################.........#####.###.........................# # #+########.######....#....##....................................................##.#.######..!.\\! #!!### \.\.....!\ !\... ... \.\..####################...####..# ##.##..........................# # #+#########.#####..##......#..........................................................#..###\!\ !! ## *#\..\ \..!....\.\.\..\\\.\....####################..##...# ##............................# # #+#### # ##.####..###............................................................#.#.###### ..!!!#*!*#\..\ \....\ ..... .\ \\....\..##################...###.#####..................................# # #+### # ######..###..........................................................#.....#.#### \\!! *###\.\.... ....\......\..\....\...####################.##########.................................# # #+### #####...##..................................................................#.## \ !##!!\\ \\. \ ! ..\\.\\..\\...\\.\.\.#########################.##....................................# # #+### ######..#........................................................................! ! \\\\. .....\\.. ... .\\\ . ...!#....###########.................................................. # #+### ### ##..##....#...........................................................#######!\! !# \ .\\.. ..... .... \!!\ !..... . ###############################.................................. # #+##W ### #..###...#............................................................#.####\!##!!!. \! !. ! ...\.#.\... .. ...\ \ \##### #########################................................... # #+## ## ######...............................................................##..... # !#\\ \.\.\\.\.. #..\ ..\\\..\\\.\\.\#############################..................................... # #+## ## #.####...#.........................................................####.####!!###\ !!! !!\.......#.. .... ..\\ .... # #########################..................................... # #+## ## .####...#........................................................#.##.##\..#!!!\.\ \\ \.\ \ .!!\.# \........\.\. ..!### #####.###................................................. # #+## ## .##.#...#.........................................................#...#.!!.#!#! \! ..\ \\..........\..\........ . !.#####..#####.................................................. # #+## ## ####....................................................................!# !!!\!\\\. \.\ \!.\. !#.\\\\.....\...\#\ !. ###...####..#................................................ # #+# ## #####...##............................................................#.! #### \ \.\ ..\. \..... ....\ ...\ ..! ! ### #..#######................................................ # #+# ## #####.............................................................######.!#!#!\.\ !!\.\#..\\ #.\.\ ! !!\.\.!!#!!..!!\\ # #.##......................................................# # #+# ## #####.........................................................###.######. ### \ ###*! \.\.\\ #! #\.\\ ##!!! \.!#\. # #.#..#....................................................# # #+# ## #####.......................................................############.\ #!!\\#.#!!######!#*#**#####*####!! # ..!#\# # #.........................................................# # #+# ## ###............................................................##...####. \#! \\####!!#*****#*#!! #!***##*#\### .# \# #.##......................................................# # #+## # #####...............................................................#####!\ #\\#!*####****#***# .. !######## #!!\.!.# #.##.#...#................................................# # #+# ## #####............................................................########...#!\.\ ##*##########\..\!#######!#!! \\ \ #.........................................................# # #+# ## ### #..........................................................###########!\! !.\ !#########*#\...\\#######!!!!!. \. #.......#.................................................# # #+## ## #####..........................................................#.#########.!! \ .. !#########L\\..\\\######!!# \ .. # #................#........................................# # #+# # ###.#..#......................................................#############\! \! ...\\!#####! \....\\#####\ \.\ . #...............#.#.......................................# # #+## # ### #..#......................................................#############\\!.! \!\..\\.\\ ! ..\ .. !! \\\ \\ . #.........#.......##.................................#....# # #+# # ### #.##......................................................########### #. !\\\!\ ...\\\ !! \ .\ . .....\\# #..#....#.#.#.....#.......................................# # #+# # ## #..#......................................#........###.############## ## !!\\ \..\. !\\\..\ \! \\.. . #...........#........................................#.... # #+# # ## #.....................................#..............#..############# # # !\\\\......!\\ \... .\\\\.\\ !\. ....#.....##.....###..................................... # ##+# # ## #.....................................#..#.........################## ## # \ \ .\..\.\\\.....!..\!!.\ . \. .......#................................................. # ##+# # ####...#..............................#.......#........################# \ \ \ \\\\.#*#. \ ! \.\\ \ !... .......####......#...#................................... # ##+# # ### #..#...............................#.#.#.##.....#....############### . !\!!!\ !!#\.##*##!!#!! \!.\ \.. #......................................................... # ##+# # ### #.#..........................##...#..#####.......################## ..! ! !#\ ...\ ##*#####\\\\ ! \. \\!. ......................................................... # ##+# # ## #.#.......................#.....#...######..#.....################# \ !#\ !!!! !.\ \######!#. . \ \\!!\! .. ......................................................... # ##+## # ## #...@@@@@@@@...................####.######..#..##.################# !# #!! \ \\! ! #####!! !\\..\ \# !\.\\.. ...@..................@.@@@@@@@@@..@@@@@@@@@@@.@@@.@.@@@. # ##+# # #### ..#.@@@@@@@@....................##########..#..#..############### ##!##!##\\ !\!!\.\ \\...###!. !.\. \! \! \.\..\...\@..@...#...#..........@@@@@@@@@.@@.@@@@@..@@@@.@@@@@.@@@. # ##+## # ## ##..#.@@@@@@@@.................#...##########.#.##################\ !### #!\! ! \\####!!# #*#!## !*# \ ##!!! \.\@..\...\.....................@@@@@@@@@@@@@@@@@@@@@@@.@..@.@@@. # .#+#....### # ## #.#.@@@@@@.........#.......#...############.##################\@ ! ..##!!## !! !! ####!#!*###*#!!!## ! \ ##! \......! ..@..@@.....#...@...@....@@@@@@@@@..@@@@@@@@@@@.@@@...@@@. # .#+#.......#### ## #.#.@@@.@...#.............#################.##############.. !! .@\!#!##*\ ! @. . .@\@@!@. !..\ \!*#\@@......\.......\........@@@@@....@@@@@@@.@.@..@@@@@@@@@@@@.@...@@@. # .#+#.##......## ## #.#.@@@..@................####.############.############... . \ !@@.!!!#*! # !\..@ #!!.\ #!!@.\\ . ## \......@.@@@!\\\.\ ..@@@\@@.\..\.@@@@@@@@@....@@@@@@@@@@@.@@....@@@. # .#+######.###.# ## #.....@@@@.............@....########################@@@.@... .@.@....\!###*!!!! \\@... ########\ \\\\\\#*#!!\. .\ .\\..@@@@@@.@@@... ! .@.\.@@@@@@@@..@@@@@@@@@@@@..@@@@..@.@# # #.#+# # ##.# # ###.#.@.@.@...##...#...@@....#####################.@....\ \\ \\\\\..!\\ #*#!#!! ! \.@..\.#!!.!@@@\!! !!*# \..\. \\\.......@@@.@@.@@@@.@@.@ \ .@@@@@@@@@..@@@@@@@@@@..@@....@@@# # .#+# # ###.#.@@@@@..#....#......@.@###################.\\..\...\ !#.@@....\...\.\#**#!#!#! .\..@\\@@.\.@..\\!!**#! .\\.\@@...@.@@.@@. \\\...\\ \.@@@@@@@..@...@@@@@@@@@..@@@...@@@# ## ##.## #+# # #..@@@@@@@###.#####.@@.@...##############.@.! \\ !@@@@@..\\ @@... #**###*# ! \\@.@@@@\...... !!#*###!! !\\\\.@..\......\\!\\\\..\@@@@@..@......@@@@@@.@@..@@....@@@# ## ...@@@.. #+# # #.@..@@@.#####.#...@.@..@#..###########.\.\ !#\\\!!! !!! !!...\.\\@ !\ #*#####*!! \\@.....@ \\! !##*###!## \\.#.@@...!! !!!.\.\#! \\\\\..@@@@@..@...@@@@@@@@@@.@@@....@@@# #..@..@@@@..#+# # #..@..@...#.#.....@.@..##@..##########@...\..@@@@\..\ \.. \.@\ !!! ***##!!#*#!#!.@\.!\ \ \!!!###### .\\. \\\.\ ! @@@@@@@@@@.@@.\\ ! \@@...........@@@@@@@@@..@@....@@@ #@@@@@@@@@..#+# # #....@@@@......@..@....#...@@#######@!#####!\!.@.\..\.\ \@.\ .\\\@ ###**##!#!##*!# !# !!####*#!!\\\ # \\ \ \...\\..\\ # .@...........@..@@@@@@@@@@......#.@@@ ### .@@@@@@@@@@.#+# # ##......@@..@@@.@@.@@@.@@.@@....##.##@ \\\ \.... \\.@. ..\\ \\!\.@\\\!#*##!!!!###*#######*# !!!##*!!\...\...\. \ \ !@@@@@@@ .....\!!!\\...@......#....@@@@@@@@......@....@# ## #.@@@@@@@@@@@.#+# # ##...@@@.@@...@@@@@@@@@@@@@@@@@...@.##..\\ ! ...@@. ..@@@@@@@\ !\.... \ ***###*#############!#####**#!\ ! \\@@@@..\#@@.. \ \\\..@@@.\\\\ ! \@@@..@..@.@@@@@@@@@.........@@@.###...@@@@@@@@@@@@.#+# # ##..@@@@@@.@@@.......................### .@@@@....@....\\ \\\...@@@\#.@...\ ***################!!!!*#**##\......\\\\\\\! .@...\\ \...@@\!!! !\\.@@@.@@@..@@@@@@@@@...@@.@....@@......@@@@@@@@@@@@@#+# # #..@@@@.........@....................###!####\@@@@@@@. !@..\\##\@...@@. \\\ #***##*######*#####!!!!#***#! \\\. #\\\ \\@......\\\\ .\@.\ !\..@@@@@..@...@@@@@@.@...@..@.@@@.@......@@@@@.@@@@@@@#+# # #.....##.###.@..@@@@.@@..@@..........###@\\!!.\\ \..\ \...@.@. ! \\..\.!\\\..!****##!!!!*****#*###!#***## \\\ # \\\ \.@. !! \@@@ ....\........@......@@@@@@@@.@.@..@.@@@.@.......@@@@@@@@@@@@#+# # #.@# ### ##############...........###.#!\! \\\. @.\\....\.#\.@@.\\ \\.@. !****####**########!##****!!!!! \ ! \ \\....@.@\.@..\\ \\ .!! . .@..@@.@......@@@@@@@@...@....@@..@.......@@@..@@@@@@@#+# # #@@# ## ###########..@@..@.@@###.\ \..@@@.!!!! \\\\\\\\\#....\..@@@\. \***#####**#####***###****\ \.\..@....\ \.\\\\\\ \\...! \\ .@\@.@.@...@@@@@@@@@@...@## .@@.........@@@@..@.@.@@#+# # @@# # ###########..@......@###. !#! ...@@\! @...\\\.@.@..\.\\\\.\ \@..***#####**#####***####**!@@..\!@@@ \....@@.. ..@@.@\.. !\..\\ \..\\\..@@@@@@@.@@@@@@@.@@@@.# ...@........@@@@.......#+# ## #@.# # ########....@@@..@.#.@.! !#!\\ !\@@.\!!!!!.@..\ \....@.\ \.@#***###***#####***#!#***\.\\..@@.@. \..@@@.@ \\\..@....@ \ \\... \ \@.@....@...@@@.@.@@@.@@@.## @@@@@@@@@.@@..@@.@....#+# #@@...## # ##########...@.@..@@..@@@.\#!\. \ ### \\\ ..@@.@@\\@\ \@...!R.**##!***#####*****###*#!###! \@@.\# ...\\\ ! !!\..@@@@@@.! .@.\\\.@. .#.@.@@....@@@@..@..@@.@# .@@.......@.@@@@.@@...#+# #@@@.@@#### #...............@..@@# \\\ !!# \..@ !!!! !#!......@@\ ! \\ !\\ *!!##****###*###***#*#!\...\\\\. \.@@.\!!. \.....\\\\\.@\ ...\\....@@...@@.....@@@@.@...@@@.##.........@@@@@@..@@..#+# #@@@@@....### #............@...@@.@..@..\ \\ .\#!!! .\\!!\\\\@.... .\\\.\!!!##!.!#*#**######*##*#**#. .@.#.@. !#!\@@\@@@@@\@.\. !# \\\. !! @...\..@.@.......@@...@..@@@..#@.......@..@@@@..@@@@#+# #@@@@@@.###### #.........@.....@....@.\\ \\!#\\ ! !!@. \.@. .@ \.@@@@\\ \\....@.######*#######!!##***!\..@..@@@@@@.\\ !#\..@..! @@.\..!\.\!#! .@. !.@....@.......@@..@@@.@.................@@@@.@@@@#+# @@@@@@@.## ## #...............@@..@.@\ \\@@ !##!! @. .@.@. !!..\.. ! ...\!#!! ######*###########****\ .@@@@.. ! .@@.@.\.\! \\@\\.\ . \ !\ \ !!!!!\@@@@@@....@@....@@@@@@.@#@@...........@@@@@@@@@#+# #@@@@@@@@.## # #...........@@..@..@..\\\\\!#\ ##.@..@. !!*! \@!! \.\\\!#! ..#*##################**.\.@\ !\...@@...\ ##!!! \....\\ @@...@@@@@@@.!#!\\@@@.....@.@@.@@@@@@@@@@@.@.........@@.@@@@@@@#+# @@@@@@@..####@ ####............@@.@.....@\ \@.@. \ \\ #.\ .@.\@@....\!\#\\..\!#\##*##*# !####!#******! \\ ! \@.@@@@@.!@@ \\.\\\!#\@@@...@\.#. \\\\.@ @@@....@@...@@@@@@.@.#....@@@@@...@@.@@@@@@@@#+# .@@@.#..#####@@@................@......\\@@ !\.\ .\\\.\!\ \ \\.\\@@@.@@@@..\\@@@@\!..!##!\@@. # .\#****###! @@@.\@@@..@@\... \...@.\.\@.....\.@\ . \ @@..\\@@..####.@@@.@@@@.. ##.##.@@@..@@@@@@@@@@@@@#+# # #@@@#.#.### #..@.....................\.\. !\\\@@@\ \#\\@\..\ !!!..........##!!\\\! @.#*! \@@ # @ !**## !\...\@@.@.\ \ !\.@@@@....\! . \\ \.@@\\....@@@@@.@@@@@.@.... @..###.@@@@@@@@@@@@.@@#+# # #@@.##..## ##@@..................@@\\.\..@\\@...#\ !\\ .\.. .@.\!...\... \ \\@.!....!#\\..\\!\.\#***#!....\\\@@.@@@@@@#. .@..@@\\. ! .@.#\.@@.@@@@@..\ !..@.@@@.@..@.@.@.@@@@@ @@...##..@@@@.@@@@@@@@#+## ## .@.....## ...@@.................@.@@@\@ \\.....\\\ ..\!@. \@..!.\.@@@.@@.#!.\. @..@.! \.\.\!!\\ ##!..!\\ .@@@.. \@@@ !! ! \@@..!#@@@@@@@@@@@@. !\@.@@@@.....@@@..@@@@@#.@@@@..#.@@.@.@@@@@@@@#+# ## #......#####.@@@................@**#!.......\ !!\.@@\\.!... !\ @@@\\.@.\ .@!#@\@.@\ ..@. !!\ \### \.... @@.##.#...\@@@!!#!!!\\!.\.@...@...#.\\\@@@... \.@@.......@@@@..@.@@.#@@@@@@..@@.@@@@@@@@@@#+# ## @@@....###.#.@..................@@ \\. @\\.@@.\ !!!\@. \!\.\.@..### ..@@ .@.\\ !.@@@@@! \.\! ! .!!\@@.@.!@...@@@@@...#!!!!#!\@.\\. @\!! !\\\\ \\......@ ! ...........@@@@..@@@.#@...@@@.@@@@.@@@@@@@@#+# #.## #@@@@.#####@@@@....................\!!! \.@@.#\@@. !\\!### \\ \\.@ #......... !#@!@..@@@.. ! ....\! \. \..\ @@@@@.@. @. !! \ !!.\!!\...\.\\ \...@.\ ...\.@........@@.....@@@##........@@@@.@@@@@@@#+# #.##.@@.@@@@##@......................@@.\\....\..@@@..!\!!!\.\!\\ # @..\!@@.@@...\\!!\.@@@.\. \\. .\\\ #####\...@.\\.....@#\.......\!##! ###\\@@@...! \\ !! \..\.........@@......@@..@...@@@.@@@@@@@@@@@@#+### #@##.@@@@.@@.@@........@............@@ ! \#####!! \\ ! \\ \ # ! \ .\\\\ \.@@@\ \\!!## \ ! \ @.\! \\..\..@\....\\\ \ #!! ..\\\.\##! ##. !\ \!#\.. ..@.\\..........@.@..@@@@..#..@@.@@@@@@@@@@@@@@#+# #.@#.@@@@.@.@@.@....@................\@@ ! \\\\ .\\ \.\# \.@... !#!\...@!@@@@@@@@@@.......\ !\.\\ \@. @.. ...@@@@@@....@. \ .\.. !!\ \!#!\@!\.. !#\\\\.@@@.@@.\@.............@@.@@@@.@....@@@@@@@@@@@@@@#+# #@@..@@@@@.@@@@@@.@....@@.........@@\\.\ \..@.@. !! \\\.. \ !!! \!!.\!#\!!\.@@@@@..\ !!\..\\ !!\ \\!.\@#!.\.\\\\ \.\\ #\.\\\\ \ !#\... \!\.!! \...@@@\ #! .@@\ ...@................@.@.@.@@@@@@@@@@@..@#+# # ## #@@@@@@@@.@@@@@@@@@@.@.@..@....@..@@.@.@@.\! .\ \..\\\... .\ .@\. \ !.\.. !.\ \!!!! ###*#! .\\\\ ### .!@. \\.\\\ \\\.@@#... ....\ !#!.# \ !\ !!! ! \ .\\ @\ .@.....@.....@.......@@@@@@.@@@@@@@@@@.@#+##W # ###@@@@@@@@@@@@@@@@@...@......@......@\\.@@@@@ ! !\\ \. # !!! ...!\.@@. *\\\\\ \. \\.@@@..\\\.###!!.. # !#! \\\ !! \@@!\...\! \.! !#! # \.\\\!..@.@....\\...\@........................@@@@@@@@@@@@@@#+#### ####..@@@@@.@@@.@@@..@.@..@.@.@@@@..@..@@@ .@ #!...@..@\\!\\#\@@!..\\ ...@\.\!\@\!\\.@@@@@@@\.\\... ###!*!! \ .\!. \ \\\\..... # \\.@\ \@@\!**!!! !!\..\...@.@@.\\ ! . .\.@....................@@@.@@@@@@@.@@@@.@#+#####.@@@@@..@@@.@@@@@@@@@@@@..@@..@@@@@@.@.@@... !@\@@.. !#####. ..##! \@@.\!!\ \. !#@.@@@@@@...#\..@\ \ !\# \##!!@@\\@@....\\\\\ \\.!.@@@@...!#*##\!##! \\\\ \..\..@@@. .@\ @...........@......@..@@@@@@@@@@@@@@@#+#....###..@@..@....@@@@@@@@@@@..@.....@....@...\ .@...\ ! \@\! ..\ !##! \\..\.!#\\!! #\\.@.@@.@@@\\. !!!! \\\.# .!!# ....@.@@....!.@@..@!###!!\ !#### #\!!\ \#!\..@.@..@@@@\@...\\.............@@@@..@.@@@@@@@@@@@@@@@#+###### ##.@@..@.....@@@@@.@@@@..@.....@...@.\@..!!!#!\.....@.@. \!\.!# \@. ! \\!.! .@#\..@. ! \.\@# \ ! !\\#\!##!!!.@@@@@@@@@@@.\@@\!!!!####! \#!\. \@## \!\.#!!!! @@@@. .@@..#...........@..@@#@.@@@@@@@@@@@@@.@@#+#########.@@@@@.@@.@@@@@@@@@@@@.@..@@....@.!..@!!!! ..@@..\..\! \.!#*! \\\\. .! ! ...##!!\.@@@@.@#@\@...@@.\!#! .. .@.@@@@.\ !.@.@@.. \ !\## .!*#*## @ !!\@.@! .@@....@\.@.@@@..............@..#..@@@@@@@@@@@@@@@#+#########.@....@...@@@@.@@@@@@.@@.@@.@..@. !@@\!#!.\\\#\.@@\ !\.\ #\!! ! .. \#\ !! #\##!! \\@..! . .@\! .@.. ..@\! \ \.!! \.\ ..@...\\\# \ ! !# \ *. # \ \\\\ \\.\..\\ \\@#@........@...@.....@@@@@@@@@@@@@.@#+#########.@@.@......@.@..@@.@@@@.@@@@@@@@.\.#*##! \.\ . .\!! # ! .#! .\.\ !!##\. \\\\\#..@.@@.!###!!! .@@.\ \\! \.. !!.@. \. \\...@@.\!! !\\\\!\!####@@##\!#!\\\ @.\\\. \ .@\\.............@@......@@@@@@.@@@@.@@@#+########..@...........@@@@@.@@@@@@....... \@@...\ \.. @. ###.! @\#*#\\\\.\!!!### ..!#.!!\@@...! !!\\!!!!\@@. !! .\ \.@\ \@@@!.!!\\..!!### \.@@ ...!\ . \........ @@@@@@..@@.! @.@..................@@@@.@@@@@@@@@.#+########..@.....@.......@@@@.@@@@@....@.@\!\.\.. \.\!#!\.@. #\. #!*****!\\.\. ###\.@\ ###### @.@\..\@@!........!\\.@@###!\@...# \\\ \\ ! \@@\@.@@..###.!\ \\\\...\#.\\\..\.@@. @@..@@@@@..........@@@..@@@.@@@@@@@@@#+########..@@.....@@.@....@@@.@@@@@@..@@! ..@.@@@@@@@ !! \.@@@\! ###**.!! !!!!.\\ ! .!!!*.@@. !\.@#\!@!## \\.\ \ \! \.@..\ *!## \\\ @@.@@.@. @.@@.###@## \\\.\#!!.@.@@@.@@@@@@....#####.@.@....@@..@.@..@.@@@@@@@@@#+########..@.....@...@.@@@@@@@@.@@.@@.@###\\......@.\ ###\...\!\@#. #**##!\ \\ # !.!#@@.** .@..\ \#\@@....\\\ \\ @.@..\.\!\\ ...@@@.@.\\\. \.\\@.### \ !!\\@ \..@..@\\\@@..@\ @ #.@.....@..@.@@@@..@.@@@@@@@@#+########..@..@.......@@.@@.@@@@@@@@.\\. \.\#*##.@\\\\\.##!..\\\##**#****###!###! \! @@. #*!..@@..@#!#..@@@@\.@@\ .@@@#!#!\@.@@.@@@@@@@.\.@.@@.@@...@@.#.#! # \.@@ \.@@........@.!!\.\\.# #.@.....@@.@.@...@@.@@@@@@@@@@#+########..@..@.......@@@@@....@..@.\\\.\.\\\\..!** .@. ### ##.!!** .#####! ## .@@\.\ # \*.@@@...@ !.@#\ \.@\! .#\\ \@. !\\@..@\....\. ....@.\\. \@@@\.@.\\.!!. \.@.\.........@@@.. \.@.# #.@@@@@...@@.@@@@.@@@@@@@@@#+########..@..@.......@@@@@@.....@@@ \... ... @ @..\!#@@@.\!!# ##!##.###@\ \.@@\!#...\! #@*#@.#@. ! \!.#!! \\.\.@\\ !#!...\.\! @@.\...@@...\@. .\.. .@@@@@@@.##! @\@.@.@@@@.@@@@@. @.\.@...@@.....@@.@@.....@..@@@@.@#+########..@@.@........@@@@@......@.@.@. \..@.\..\.!#*# \..\@@@ @##.####\\@@.. !#*###!#.\##... # \\ **** .\#*## @...#!\@..!\\ #!. .@@@.@@@....@.\\@@@.@\@...@..@.@@\\ ! \\\.@\# \@@@@@@...@.@.@.@.....@@...@.....@#+########..@..@@........@@@@...\..@.....@..@.\..@..\@..@\\##!\\ **##..@.!*\.@. \ ..@. \!@.@.\\\\..@.\.......@@.\@.\@!! .. @@#!..@@\...@\ \\\\.@ ......\@@@.@@\@\\\\.@@.@.@@@@@@@.@.. .@.@@...@.............@........@#+########..@@@@@.........@@@@..@.\ \\ ..@\@ @.....!.\.#\@\\ ***!**###@\@*! \@\#! .. .\\\.. .\....\# \.@ .@@...!@ ..\ # # @@..\@@.\.... !#!.@@.@..@..@...@...\\\...@@.........@..@\!!@.......................@.@@..#+########.@@...@.........@@@.@.! .@@@..@@@.@#\@.... @\#.@@!! \***##..@.#*.\.!\@. .!\\ .\. !@.\.! @ ... !\\..\\!\.@..! \#@..\\...@.\@\!!!## @@@@@@.\@@\@@@@.@...@ ....@...........\..\\\@..................@####...@#+#######...@@@@@..............@@@.@@......@.\ .@@@@ !. \@@\! \*# *... .\###\..\\\\\.@ !\ .#. * . @@ !\..#. \ ..#.!! \.! @#\\\..\ ... .\#!..@@@@.@..@.\\..@@..@...@@@..@\\.\@@\ !\...@.@\..@@@.........\.........@@.....#+########..@.@........@...@@@@..\.@@.\......@\#!!!!!##.@ \ *#*!@@.@..\@..@..@\\.@.....@..@..@.@......@........@......@....@ !\\..\#!##@@..@.@@.@..\......@....@.@.@.@@@.@@@@...@ \.\@\@\.. ..\......\.@...@.........@.#+########....@@@..........@@@@.\!.@.\@@. !#@.@ !#!!#\!.. \.**#\\\ \\..\.@@..@...@@@........\....\@.......@..............\.\@....\!##!!@.@.@.....@.!..\..\!..@@@@...@@...\@\@ .@.\..@@ ..@. \\..\.......\...........@..#+###@.@.#...@@@@@..........@@.\@\ !.@@..@.@@@.\\# ! @. \@#*.@*# .@..@. @.@@@@@@.. \\\\.....@@.\.@@@......@..@......@@.....\\ @@\ !##@.......\!.@@.\\\\\.\\.@@@\..\@.\.\....\.@@.@...@@\..@\...\.\..\..@@.....@.....@@@.#+##.@@@@..@.@.@@..........@@.\. \ @..@@@@..@\..@.\@ \ ...!#\ !@.@@.\\ \@@@@.@@@.\ \ \\.@@..@@.\@...@@.......@@@@..@@@@...@@\@\! \ ##@@@@@.@...\! #..\\.\!\\\.\@..@@@@@@@@..@@.\...@.@ @@@\@@@.@.\..\\..@...........@....#+##.@@@@@.@@@@@@......@..@@@@\@.@@...@@.....@@..@@@.#.\##*@\!!.@@@. \\@@@@@@@...\\ \.@@@@.\\.@....#...@.....@@..@@...@@@..! \ ## .@@@. !....\\. ! ! .\\\@\.@@.@....@@\ .. .#.\.@@@\@.@\!!.\..\\\.....@....@.......@#+##@@@@.@@@@...@@...........!\.\@@.\..@@ \.@.@@@.@@..@. #*@ !.@@@@@\\\.@@\.@@@@@@@@@@@.\\@@@.@@.....@@@@.....@@@@@@@...@@@.\# \! @\! #\@@@. \@\!!!# \\\\..\@@..@..@@@@@\.\@. !..@.\.\..\@..# .\\.................@.@.@.#+#.@@@...@@@@..@@.........@..@\..\ .. \..\@@.@\\@...@#\!!........@@@@@@@......@...@@@@@@@@.@....@...@@.....@@@@@.@.@@@@ \\# .@@@\\\.\! \ !!!@\\\ !\...@@@....@.\#.@@@ ..\.@@.\..@@@ \\\.\\....@@.@@......@..@@...#+#....##....@@.@@........@... \..\.\@@.@\.@@@.\...@.@@.@\.\@..@................@........@@@@@@@..@@@...@@@@@@..@@@.@@.@@@.\ ###!\\.!## \ . !!##.@..@.\\.\@@..@@....\\## \@ \ !..@ \\@@\@....\\\\\..@..@@......@...@@@@#+#.........##............@@\. \.\ \\\..\\...@\\@\\..\....@@@@@@...@.........................@@@@@@@..@@.@@@@@@@@@@@@@@@@. \ !!\\.!\\ !!\!####!.\\@\\.@\\... .@@.@@.@\.## .@@\.@@ .\.\.\.@.\ ..\.\\..@@.@@@@.@..@@...@@.#+#.....#####..##......@@@@.!\..@\ !! ..@@!!.\.@@.... \.\ \@.....................................@@@@......@.@...........@@\##* !.\ \\!#####.@.@@@.\.\..\ .\..@@...@@...\\@\@ @.\@..!\@...@...\\\.\.@@.@@@@@@.@....@@..#+#.....####.###......@@..\ \.@\ \! .# \\...@@@....@..\\.@...............@...@@........@@@@@@@@..@@.@@@@.@@@@@@@@@@@@@@\#!! #!#!!!##*#!..@@.@.... \\. \\.@@..@..\.@!@..\. !. .@ \!! \\..\!\\\....@@.@@@@@@......@@..#+#....#######....@@@.@..@.\\.\.... #\.\ # .\\..\\\ @.\!\@@@@........@.@@@............@@@...............\........\..\\. #**!.. \####**#..@.....\.\\ \\!\.\\.\...@..@\!.@\ \.@...@.@... .........@.@@...@.@.@@@@@@@@@@#+#......###...#.@@@@@.....\\!.@@..@.!##!\.@@@@@.. \..\..@@@@@@@@@@@@@@@@@@@..........@@@.\...@@@.\! @@@@@@@@..............!! #!*!##**#.\..... .\ ! !#\@\.\.\@ @@\. !..!\\\@ \\.! .@@@\ . .!...........###.###........#+#.....####...#.@@@@@@... !\.@.@. @@.!***###! \\\\. \\.\\\.@@@@@.@@..........@...@..@@.\.@.@@.@@.@......@.@@@@.@@@@.@@@.@\#### ####*#*# !\.... . *#!@. \. ! .....\.\!! ..!@@!\.\..@\\\.\ @.. ##########################+#.....#####...#.@@@@....@\.\.....@@@@#******# \@@.!\...\@@@@@@@.@@@@@@@@@@.@@.@@@@.@..@@@@@@@.@@@@@@@@@@@@@@@@..@\\ \####*!##*#**###!# #\ !!#!\@@.\\.\ !..@\\@ # .\\ ! ..\! .@\ !!!...@##########################+#..########.@..@@@@@.\\..\\.@.\@..@@@@@********#.\ !\#! \ !! !!!!!!!!!!! \...\## !# \ \ \.\\\.\\.\ ###******###*####\*#####*#@..\.\!!\. . ...@\ # .!## \\\\\\ .. \.\ .@##########################+##########.....@.@@.\.\...\@@..@@\.@@..@@*******###!#...\#....@...@@...@....@...........\.! \ \\.\ \\ ! .\\\.@@@@@#####*#*#*##*######**!\\\.\\@ \\!. #! .\. !# !# #!. \..!@\...\ \.@.##########################+########.@@...@@@@@.......\..#\...@.\.@.@.!********# \!!!*!#!##! \ \ !!##!! \\\\\\!#*\ @@ #!##! ! ! ##******##!! ##******####!##*####\@.. \.!\\!!!!! *\.\##!@\ @@\ !.@\\!!# @@@\\\\..##########################+###.@@..@.#...@@@@@@....@\!\@ \ ....@@@....@.##********#**@@.@@.\..@..@@..@@@.@...@@@@@.@@@@. \@\!!! ! .@@.@@@@@@@@@..@.!!#####*######**##*\\.@@. ! ! ! !!! \ !####\\ .!!!@ @\!# @@@!..@\.@.########################+###@@@@.#....@@@@@@@..\.@\!#@!!.@.\ ! \\ \@..@@@@.!**#***#######!\\\\\ ###!####*###!!!!#####!!!#!!!!!#############! \\.#*#******####**#### \#!\\\!#! !### !!!##*# ##!\. # !..!\!!\.@!.\\.####.#########..############+##.@@@@@.....@@..@@.....\\!*.\!#@\.\..@.@..@@@.@...@.@..@@@.@.@@..##!! !!##! \\.. !! .\\\\\.....................\ ...\\\ #############****!!## !!#!#!\####****######*##!\ !#\... !!!!\@....@######@.....#.@@.###########+##@@@@@@....@@@@@.@.....\ #!\.#!#\\\\\#\@..@ .\.@.\\@\\.\..!!!## ..\........\\..\ \@ ## \ !!###!####!\\\\...\\\\ .@@@@.!#########*****#!!#!#!####@ @..*********#####! @\##\@@\\!! !!... .@@@@. ##########.@..#########+#.@@@@@@...@@@@@...@@@@@\\!\!\ !!#! \\.\..\ \..@@@.\ \.@.\*****!*##******\\\\\.\\ \\!.!*##! \\ !! \\\\\\\\ !!!!!!!!#!######**#****************####!@@@@ ********#****#####.\@! !## !\\. .....@@@@.##...@@@@@@@.########+#@@@@@@@..@@@@@@.@@@@@@@\\ !#@..!##### !## ! \\.. \..\\\\@.@@@.\\.\ \@.@ #! \.!\.@@@@@.@.. \\\\\ \ . *# .@@.@@@@@@.\\..\#########******####!!!!@@@@@************######\@ !\!#!!! \ \\\.@@@@@@@.........@@@@@.######+#@@@@@@.@.@@@@@@@@@@@@@\ \!!*. \!##*#####! \ .\\#. !!!. ! !!\\\\@\... \ \...\\\\ ##! .\\\\.###**######!\!!!! ! \\\\\\\ ##################!#!!! @@@. *#*#**##########!\ .@\# !! \\...@..@@@.@@@@@@@@@@@...@@@.####+#@@@@@.#@@@@@...@@@@@@@. #*!!!\\!####*#** ..\\ \ \ ##!!####*#####*#!!! !###!!! \\.\ \.@@@@@@@\#!\....\!######! \\\\!###################! !!@@@ *###**####*##### ....@!# \ \\........@@@.@@@@@@.@....@@@.###+#@@@@@.#@@@@@@.@@@@@@@@ \!!\**!##\###**##**###**!**#*#!..@.@@@@@@@@@@@@@@..@@..\\ !!! ! !!!!!!\\!###*!@......@@@@@@@@@...\######*#####!!!!!!!! !@@\ **#*###*##*#**##!\@\\\\ ! \...........@@@@@@@@.@..@.....@@@.#+#@@@@@##.@@@@@@@@@@@@@@.\! #*#. *\.! \ \.*#!********#.@@.\.\\\ \..@@@@@.\..@@@@.! .@@@@@@@@.@@@@@@@@@..\!\\\\\@@@..@..@.@@@@@@@.\ ######!#!!!!!! ! @ !#*######*#*##### .\\.@ \\\.\.....@@...@@@@@.@@..@@@@@...@@#+#@@@@.@.@@@@@@@@@@@@@@@\ !!!*** #*\!! ...@. !!!# *\ .@@@@ @.@@..@@@..@@@@@@@@..@.@.@...@.@@@@.@@@@@@@@@@...@@@@@@@@@@@@@@@@@@@@@@.#**####!!#!!!!!!!! \###*##########***#\. \! . .\\\\\\\.@@.@@...@@..@..@....@@@@.@@#+#@@@@.@@@@@@@@@@@@@@@@@\\ \#***\##! . !!.@.\#\.@@.@# \\ @@@.....@@..@.@@@.@..@.@@@@@@@@@@@@@@@@@.....@.@@@@@@@..\\\ \ !!!#### @..\!##****###*#### ####**#######*#*## @@@.!! ! \.\\\\\..@.@@@@@.@@@@..@..@@...@..@@@#+#@@@.@@@@@@@@@@@@@@@@@@. \!\***!!#########!\@\...\*!...\!#@.@@@@@@@@@@@@@@...\!!@############!! \\..\.@\@....@@....@@@@@@@@@.@@@@@@.@@\!!!!!#!!!!!!!*#*****###*#####*#!\.\\\ . \\\...@@..@@@..@@@@@..@@@@.#...@#+#@@@..#@@@@@@@@@@@@@@@@@\ \\@ ***# ##*###*##!\#\.#!!\@@.\#*\..\.\ ! !! \ \\...@@@@@@@@@.@@@@@@@@@@@@@@.@@@@@.@..@@.......\\\ \ !#!! !!!#**########! ******###*###*!@#\.! \.\ ### \\@....@.@@@@......@@....@.@##..#+#@@@....@@@@@@@@@@@@@@@@...\@\****#!##**#****##*#*##!#!####..\\ \.\\\.\\\\\!!########!#!########!!! !###**#\ !#! !! \... .\.......@.\#######! .@*#*****#####!@\\@.# !\ !##! \.....@.@.@@@@@@..@..@....@@#####+#@@.@.@@@@@@@@@@@@@@@@@@ .\\ #*****#!##*###*#######*****#** !\....@..\\ ...@..@@.\.\@@. !.@@@@..@@.@.@@@@. \..\\. \!#!\ !!!!#!!!#!########**#####!!#*********##!@@@ @.\@\\!#!!!!! \......@@@@@@@@@@@...@@....@@@####+#@@@..@@@@@@@@@@@@@@@@@@. \\!\******#*#*###!\\\...@\*****#\......\\..\ \ !!# !!!!!###!#!#####*##########. !!!#! \\.\ \... \ ! \\\.@@\!!!!#!!!##*##*#**##! . \.\!! \!#!!!!!!! ........@@@@@@@@@@@@@@@.@...@@.###+#@.@@.@@@@@@@@@@@@@@@@@@@.\ @\#**#******##*\..\ \\\@!****!....@....@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.@@@@@@@@@..@.@@@@@@..@@@.....!*###########\...@\ !###!!!!!!W..........@@.@@@@@@@@@@@@@.#..@@.##+#@@...@..@@@.@@@@@@@@@.@.\ \\#***********\ #!\.\.\!##..@@..@@.@....\.\.\\\\ !\ ! ! ! \ \ \ \ ! !!###!##!####!#!!!###################!\.###########\@@@.!#!!!###!!!!\.............@@@@@@@@@@@@@@@@@...@@.#+#....@..@.@@@@@@@@.@....\\\ \.#*##**********# . ! !*****#*#*****#####!!!#!!!!! \.\ ! !*!@@.\...@\ \..@.@#!!!!...\.\ \...@..\...@@@...@..@.@@@@@@@@@################!###!###! ................@@@.@@@@@@@@@@@@@@..@@@#+#........@@@@@@.@@.@....\\\\ #****************!! #*! !!!! !! !!!!!!!!!########**\\..\ \\\\\\ !\\@@@@@@@@@.@@@@@@@@@@@@@@@.. \ !###!!##!!!#######################!\...............@....@@@@@@@@@@@@@@@@....#+########################################################################################################################################################################################################################
+ maps/full/full2.map view
@@ -0,0 +1,15 @@+############+#.....*....#+#..... ....#+#..\\\ \\..#+#. ....#+#..\\\ \\\.#+#..\.. .#+#..\.. ....#+#..... .\ #+#..... .\ #+#...@. .*\#+#....@ .*\#+#..### ### #+#...R#\#\\.#+######L#####
+ maps/full/full3.map view
@@ -0,0 +1,17 @@+#################+# \\\\# * * #+# ## !!#..@. ####+#* @.!!####.....#+#\\ \@...........#+#\ # .\@ # #.########+#\ # ..\@ # W.. . #+#\ # .. \@ # .. .@ #+#\ # *.. \@ #######\\#+#\ # ### \@ # #\\#+### # \@ # ##L#+#...#@@@*@@**\@ #+#R ..........!\##+#################++Growth 25+Water 2
+ maps/full/full4.map view
@@ -0,0 +1,18 @@+ ######+ #....#############+ #.**.. .. ..*@ \\#+ #.**.. . ... \\#+ #.**.. . . 3 #+######.\\......#****###+#**....*.......# #+#\\...BL\\\....# #+#A......*****..# 2\C#+######R.....###########+ ###.....*.....\\\#+ #\\\\#..1...\\\#+ #\\\\#......\\\#+ ################++Trampoline A targets 1+Trampoline B targets 2+Trampoline C targets 3
+ maps/full/full5.map view
@@ -0,0 +1,19 @@+##############################+#R...........................#+#.........................W..#+#..\\\\\\\\\\\\\\\\\\\\\\\\..#+#............................#+#..**@*@.*\...*...*...*****..#+#..*\....*\....*\*..*.\\@\\..#+#..*\....****..!*!......@....#+#..*\....*\....*\*..*...*....#+#..*\....*\...*...*.....*....#+#............................#+#..\\\\\\\\\\\\\\\\\\\\\\\\..#+#................ ..... .....#+#................ W....L#+##############################++Growth 25+Razors 10+Flooding 30
+ maps/full/full6.map view
@@ -0,0 +1,26 @@+############################################+#..........................\#..............#+#..\\###...#.... ###. ..............#+#..\*\\\.. #.... ..##\\..\#.#..............#+#..\*\.... #.... ..#\#....#.######## ### #+#...\###.. #.... ....#....#.# \... ## #+#... ..... ..... .####......# \.A. #\ #+#\\. #.... .......# \...\\# #+#... #..#. .....*\ ##.......# \\# #+#.#....... ...#.. ....############****##L##+#. ...#... ...#.\ ....#..* @ .............#+##........ ...#.. #....#.#\\# ....@ @...#+#.....*... .....*\#\\.....*.# ....\#\\#\...#+#.***.* .......*\****.....#.* ....##1#....#+#.\\\.. ................ .# .....#.......#+#.##### .###### ##### # .............#+#....\\.................... # .............#+#....****...#.##.....\\\\..\# .............#+#....\\\\...#.........*....\# .............#+#....\\\\...#.\\. #\###.\# #########....#+#.... ..#.... ...#\\\\. # #....\\\\**..#+#........ ..#.... ...#..... # #....\\\\** .#+#........ ........#R#\#............#+############################################++Trampoline A targets 1
+ maps/full/full7.map view
@@ -0,0 +1,29 @@+ ##########+ ####..******####+ ###.. 3ABCDEF...##+ ## ## + ### ##+ ###.....\\\...\\\.....###+ #.. \\\ * \\\ ##+ ## * ##+ ### *** ##+ #*****************##+ ###..............##+ ###...........##+ ####WR..W####+ ##L####+ .....+ ###### ######+ ##1\! G##2 !\H##+ ###### ######++Trampoline A targets 1+Trampoline B targets 1+Trampoline C targets 1+Trampoline D targets 1+Trampoline E targets 1+Trampoline F targets 1+Trampoline G targets 2+Trampoline H targets 3+Growth 5+Razors 0
+ maps/full/full8.map view
@@ -0,0 +1,33 @@+#############################+#.......*.......... ....\\.#+#......###........ W\\\....#+#.. ..............#.......#+#.....##########.\\\#.####..#+#..*...........#....#..\\.\.#+#.*\\.....\.. .##########\..#+# @ *. .\.... .#....#...\\..#+# ###. ....\. ......#....\..#+# #... ..\\\\\\\\\..###.....#+# #... . .#....##..#+# #... ..#. .......#.\\\\\..#+# ##.. ..#. .####..#..\.....#+#.\#.. ..# ........#....#####+#..#.. ... ........#.\\\.. L+####.. ... ....#.....W\ #+#......... ....#........... #+#....#####.....###########. #+#..............#......#.....#+#..\#.\.....#######...#.....#+#..\#.......#.........#.....#+#...........#.\\\\\...#.....#+#...####....#.........#.....#+#.\..\.#.. .#...#####.#.....#+#..#...#....#..*............#+#..#.....\..#...............#+##\\\\### #####.######......#+#........!!R.....\\..#......#+#############################++Water 2+Flooding 40+Waterproof 10
+ maps/full/full9.map view
@@ -0,0 +1,29 @@+###############################################+#****................#..1...\\\\\\\B..# @ #+#R.......############################## ..### #+#.. ..................................# .***. #+#.. ........ \ ......# ..\.. #+#.. .@. ....**.*...#....... ..........# #+#.. ... ....\\\\...#.A..... ..........# #...#+#.. .@. ....\ .....#..*\\\. * \\..# #...#+#.. ... ....\......#..* ... ..........# #...#+#.. ... ....\......#### ##. ..........# #...#+#.. ... ...........#L.# #...........**# #...#+#..\\\\\...........#...\#...........\\# #...#+########### ############## ############ #...#+#...*.................................@\\\#...#+#....*.................. ......#####...#+#... .*....*.............. ..... .....#\ .....#+#....*2*........########.. ..... .....#####...#+#...*...*.......#\\\#..... ...*.......#**# #+#.....\\\.......#\\\#....**..***......#\\# # #+#.... .......#\\\#*................# ##### #+#...............#\\\#*...**...*.......# # # #+#...............#.....................#. ..# #+###### ############## ### #######. # # #+#\\\\\\\\\\\\\\\\\\C\\\\\\\\\\\\\\\\\\*\ # 3 #+###############################################++Trampoline A targets 1+Trampoline B targets 2+Trampoline C targets 3
+ maps/horock1.map view
@@ -0,0 +1,14 @@+#####L######+#....R....A#+#..........#+#\. #@\ ..#+#\...#* ###+#\.........#+#\..*.@....#+####@@. ..#+#....#.. ###+#....#..**.#+#.1..# .\\#+############++Trampoline A targets 1
+ maps/horock2.map view
@@ -0,0 +1,13 @@+#################+#A .@@@@@@#+# .. #*...*1#+# .##########*##+# ..@ \\\\#* #+# ..# #####*.#+# .##### * #+#LR ....... . #+#################++Trampoline A targets 1+Flooding 10+Water 0
+ maps/horock3.map view
@@ -0,0 +1,17 @@+#################+# \\\\# * * #+# ## !!#..@. ####+#* @...####.....#+#\\ \@...........#+#\ # .\@ # #.########+#\ # ..\@ # .. #+#\ # .. \@ # .. #+#\ # *.. \@ ####### #+#\ # ### \@ # #W #+### # \@ # ##L#+#...#@@**@@**\@ #+#R ..........!\##+#################++Growth 25+Water 2
+ maps/identity.map view
@@ -0,0 +1,20 @@+##################################################+# @ @ #+# ##.## #+# ...# A B C D #+# R ...# . . . . #+# #...# .##. 1 2 #+# #..#..###W\# . . ** . . #+# #L.# #.97\\\# E F ** G H #+##################################################++Growth 25+Razors 33+Trampoline A targets 2+Trampoline B targets 1+Trampoline C targets 2+Trampoline D targets 1+Trampoline E targets 7+Trampoline F targets 1+Trampoline G targets 2+Trampoline H targets 9
+ maps/lightning/lightning1.map view
@@ -0,0 +1,6 @@+######+#. *R#+# \.#+#\ * #+L .\#+######
+ maps/lightning/lightning10.map view
@@ -0,0 +1,15 @@+######L#######################+#.#.*.**.*.\..#.#.#\.#.\.\.###+#.\\.\*\\.\.*.#\\*##\#.#.#.\.#+#.\#\..\..*.\\##\#..\.\.#...##+#\..\\..##..\*\#\#\*#...*\#.##+##..##*.#..#.\...#*\\*##..\..#+#\.\.*..#...\#...*\.\#\*.\*\*#+#.*.#.R..*.*#.*.....##\...#*.#+##.#.\.\.#\.*.*..\.#....#*.#*#+##..\.\..*..\.###.\\..*...\\\#+#.#\\...*#...#....*.\.\\*..###+#\..#.*\*.\#*\.#.\\...\..\*\.#+#..#.##...*#...*.*\#..#.\*\..#+##.....\..#*####\.##.#*\.*\.\#+##############################
+ maps/lightning/lightning11.map view
@@ -0,0 +1,29 @@+###############################################+#****................L *...\\\\\\\\... * #+#R.......###############*############## ..### #+#.. ..................................# .***. #+#.. ........ \ ......# ..\.. #+#.. .*. ....**.*...#....... ..........# #+#.. ... ....\\\\...#.\..... ..........# #...#+#.. .*. ....\ .....#..*\\\. * \\..# #...#+#.. ... ....\......#..* ... ..........# #...#+#.. ... ....\......#### ##. ..........# #...#+#.. ... ...........#\.# #...........**# #...#+#..\\\\\...........#...\#...........\\# #...#+########### ############## ############ #...#+#...*.................................\\\\#...#+#....*.................. ......#####...#+#... .*....*.............. ..... .....#\ .....#+#....*\*........########.. ..... .....#####...#+#...*...*.......#\\\#..... ...*.......#**# #+#.....\\\.......#\\\#....**..***......#\\ # #+#.... .......#\\\#*................# ##### #+#...............#\\\#*...**...*.......# # # #+#...............#.....................#. ..# #+###\## ###########\##\### ##\####. # # #+#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ # \ #+###############################################++Water 2+Flooding 100+Waterproof 15
+ maps/lightning/lightning12.map view
@@ -0,0 +1,26 @@+############################################+#..........................\#..............#+#..\\###...#.... ###. ..............#+#..\*\\\.. #.... ..##\\..\#.#..............#+#..\*\.... #.... ..#\#....#.######## ### #+#...\###.. #.... ....#....#.# \... ## #+#... ..... ..... .####......# \.\. #\ #+#\\. #.... .......# \...\\# #+#... #..#. .....*\ ##.......# \\# #+#.#....... ...#.. ....############****##L##+#. ...#... ...#.\ ....#..* \ .............#+##........ ...#.. #....#.#\\# ....\ \...#+#.....*... .....*\#\\.....*.# ....\#\\#\...#+#.***.* .......*\****.....#.* ....##\#....#+#.\\\.. ................ .# .....#.......#+#.##### .###### ##### # .............#+#....\\.................... # .............#+#....****...#.##.....\\\\..\# .............#+#....\\\\...#.........*....\# .............#+#....\\\\...#.\\. #\###.\# #########....#+#.... ..#.... ...#\\\\. # #....\\\\**..#+#........ ..#.... ...#..... # #....\\\\** .#+#........ ........#R#\#............#+############################################++Flooding 40
+ maps/lightning/lightning13.map view
@@ -0,0 +1,42 @@+################################################################L###############+# *.. #*** \\ #. .#+# \#\. ############### #\\\ .. #. .#+# \#\ #\\\.......** ###### #########.## ##########+# \#\ #\\#.#####...##. *\# #.......\ ..........* .#+# # #\\#.....*##. # \.# #*******\......#....#\\ .#+# # #\#####\...## #\ * # ###\.\\\...**..#....... *#+# # #\......####* \ .\# #*****\\ .\\..## #\.#+# #\.######* #.\######### ##\\##### .... ##########+# #\.#. *...##.## ## *# \ # #+# #\##. .. *...# ##\ .*## ####*#### .. #+# #\...... \#.#.# ##\\\\## ## ## #.......# #+# ###########.#.# \\\\\....## ##\\\#### \\\\*##########+# ############\..........#.# ##..\ . ## #*\\ **# *..*\ \\\\\#+# #..........##.##########.# ## . \ . ## #.\**\*** .....**.# \\##\#+# #.....*....\\.#\.........# ##\\\# #\\\\## \\\...... .\\.. \\\\\# +# #..\\\\\\..###################### ###############\\################ +# #. ....#.*..#\.#\\... ......# #..........................\# +# #..\\\\\\\.#.\..#\.\\\.#. ...*..\ #..\\###...#.... ###.# +# \..\.. .#.\ .##.# #.#. ... ..# \..\*\\\.. #.... ..##\\..\#.# +# # \..\.. ....#.\ ...### #. \ ..# #..\*\.... #.... ..#\#....#.# +# # #..... ..* #..\ ..#. .#..... **####\###...\###.. #.... ....#....#.# +# # #..### ### #...\ ##.#\#..... ..\\\*. #... ..... ..... .####......#+# #* #...\\\#\\.#....\ \#*\\#.###. ####\\\ #\\. #.... .......#+# ## ######\#############\\.#. ...## \ \... #..#. .....*\ ##.......#+# ##\ \#\#.#..... ....# \ #.#....... ...#.. ....######+# ## ############\###.#..... ....# #. ...#... ...#.\ ....#..* #+# # # #..\...#..***#\\.#..... ....#\ #......... ...#.. #....#.#\\#+# \\#\\**.. #..*...#..\\\########.. ..###*#\##.....*... .....*\#\\.....*.#+# ########.. #..#...#...**#......... .........#.***.* .......*\****.....#.#+# \ #.\.\..\.*.*\#......... ....***..#.\\\.. ................ .#+# ####**.\\....\..\\\\\ # ####.....\.##### .###### ##### #+# #\.....#######........*R..\\\ .#....\\.................... #+# #\..* .# ##########\##########....****...#.##.....\\\\..\#+# ######## #....\\\\...#.........*....\#+# ................... \....\\\\...#.\\. #\###.\# +# \ \.... ..#.... ...#\\\\. # +# #........ ..#.... ...#..... # +# #........ ........#\# +################################################################################ ++Water 5
+ maps/lightning/lightning14.map view
@@ -0,0 +1,100 @@+########################L###########################################################################+#\.\\**\**.\*\..*#.*.#\\**.\...\#\\\\.#\.......*\\..\.\#.\*\\.\\**\\\#\\*\\*\#.#*\#\.\\.*#\*#\...*\#+#\*.\.\#.#.\\.*#\*..*\\\\\\\\#\...#.\\*\.\#.*.\#\...*#.#**.*\\.**\\\.\***#\#.\\\**#.#\.\\.\*\..\.*.#+#\\.#..*\..\.*\.\\.\..\\.*\\\*.*##.\.\...\#\\*\.\\*\.##\**.\.**...#*.##..\.#\\\\.**\.\...\*..#.*.\\#+#.#*#\*\#\\*#.#\\*#\*\.*...\...*\.\.**\*\\.***\\.\\#*\*#.*\*#\\.#....*#\.###\.\.\..\.\\\#.....\\\###+#*#*\\#.*#*\\..\\#\.*.*#\.##.\*#.\..\#\\*\\\\.\.\\.\\.**\*.\\.**\##**..\.\#\...#\\..*.\.\*.\\*#.\*\#+#*.\*\.\.\***.#..\\*#.\.\.#\\*\.\#\\\.\.\*.*.####\\\.*\.*...\\*..*.\\\#\..#.#.*..\\*.\\.**\.\#\*...#+#...\...\*..\\\\\....\\*\\.\.*\.*#.\\*.\..\\#.\.#\....\\\*\\\\...\\..#.\.\#.**#\\#\.*..*.\#\\.*\..*#+#.\.\\..*.\*.\.*#*\\##\..\\..#\\##...\\\.*\.*\#**#\*...\\#\..\\*..\\\..\\#\#*..\#....\**..\\\#**.*\#+#***\*..*#\##.\\#\.\.**\....#\\\.\\\\\#\..\.*\*.#.#*#.\\\\.\\\.*\.\..\#\\.*\*\..*.*#\.\*\*.\.#.##*##+#\\\..*#\\\*.\.##\**\..\.#..*\#**#..\..\.\***\*..#**.\.#..\.#*\\*#.\..\..**.#*\**\\\.\.#\*\*\\\\.#.#+#..\\\\.#\###*#*\\.\\##*\#.\\...*.#.#\.\#*.\..*#\#\\\..\.*.\\.\..#..\.\\\...**\\\\.*..#.\.*\\\*.\\*#+#..##.\*.*..\#\\..*\#**\#.\**\.\\\*\#....##\#\\\..\.#\*\#....\\\....###.\\\.\*#*#.#*..\*\\\\#.\.\###+#..\\....#\#\.*\\\.\..\.\.\\...\.*#.#\\*#\#\...\*..##\\\.\\\\\....\\.*\\**..*..\\..#\.\.#\\#\\\.#.\#+#..*##\#.##\\\\*\.*.*\\\\\\**\#\\*\\\#\*.\\.\.\.**\.#**.\.#\\\.*\\.\.\\\\*.\.\.\..***\.##.*.*\\\.\.#+###\....\\#.\\\..\*\\*\\\\\\.\.##\...\\.\\\\.*.\\\\*...***\...\**...\.#......\*\##..\\\.\\*\.\##.\.#+#\**\##\*\\.\\.\.\\*\\#*\.\\\#\*..*\....**.\#\.\\#\\\.\*#*#**\\**..#\#\...\.*#\\#\\\\.#\#*.#*#\.\.\#+#.*.\\\\.#\\#*.*..\\\.\..\.\\*...**.\.*.*.\\.\*\\\.#**\#\\\\\\#\..\*..\\.*.\*..\\#.\*\.\\\.\**...\\#+#.#.\##\\..\*.\\..*\**.\.##..\\#.\.\\...*#.\\..**\\...*#..\\\#\...\\*.\#\\\.*\*.\#\\\.#.\.*.*#*.\\\#+#\\\#*.*\\\.#.*\\\***...\\**\\*.#\#.\\#**.*\.**\\....#\.\\*..*.*...#\\\\##\\*#\..#.\*#..\\.\\#**.**#+#.*.#*\#.\.#\\*\\\\\\.*#..\#*.#\..\\\.\\.*#.*##\\.###*\\#\#.*.\.\\.*\...\.\\\\#....\.*#\#*#*\.\\#*.#+#.\\.\*#\\**\#\\**\..\*..\\\\..#.###\*\..#**\..\\**\.\..\#\\.\\***\#\*\\\#\*...#\.*.#......**\*..*\#+#.#.\\\\.*##\.\#.*#..##\.\..\.#\.\\\\...\\#*\.#..\\\\.*....*.*..\\\\\..#...*..\.\.\.#.\\.\.\.*.\\#*#+#####\\\\..#*\.\\.\*...*.\\\\.....#..#\*#.\.#\.\\\....\\\.\.\\\..\\\.\#..**#\*\#*\.\*..#*\.\*..\..\#+##..\...\..\#.\..\\\.*.*..\.##.\#\#.\*\.*.\##\\.\**.\#.\\\*#\*#*\\###*#\**\\#..\\\\...#\....*.*...\#+#\.\\\.#*..\\.#**.....\*..*\#*\\\\...\\\.\..#..\.\.#\\*##\...##.\***.\#.\\\\.\#*...\##.\\.**.\..\#*#+##\*\\..*\..\.\#\..#*.*##*#\#\\*..\.\.\#.#\#.\#.\\#*\\\.#\\#\.\\*\.\*.\.#\.\.*.*.\\.#\#\...\\..#\\\#+#\\*\\*\*\.\#.\#..\..\*\.\*\\#..\...*\*.*.#.\.##\\#.\\\.*\\......\\*#.\*\...\*\*...#\#\...*##*\...\#+##*#*\\\*...\*.\\\\.\\.\*#\#.\\..\\\.\\**.*\\.\\\\.\.#.**.#\\##\\....*\\\\##\.\.\.\\\\##\#...*..#\\#+#.\#*\\*.*\\\..#*\.#.\..\..#*#\*\.*\*.\#\.\\.\\.#.##\*#**..\#\*.\#\*.*\\\.\\\.\.#\..**\\*\#\..##\.##+#*\\..\##.*\\.\\\*\.\#\\\##.\\\\\#*\.*\\.*\#.#\.#.\*#.\...\.\#\.\\#\\**\#*\.**\\*##\..\.#.****\\#\##+##..**\**...#\#.*#*..\\\\*\\\\**.\**\\.\#\\.#..\.\\#*.\\\.\##*\#..\*..\\**\\..*\\.\*#.*##.*.\.#.*..#+#.*\.#\..#.#.#\#\\*#\**\.*..\....\.#**\\.\*##\##.\.\.\#....*\*.\#\\\\\*#\\..#*.**..\.*\*.*.\\*\\.\.#+#\\#\.\*.##..\.\##*\\\\\*.\#**\\..##.\\*..*.#*#\***#\#.#\.#.\#....\\.\..\*\#\##\*.\\\\\.\#\#\..\.###+#\.\\\\\#\R\#.\#\\.\\\##.\*\.#.\\\#*.*.\\#\.*\..\*.\\\\\#\.\#*\\..**..\\*\*.\###\..*###..***\\.\\\.#+#\#.\*\.\\.\#\.\\#\*\\*#\\.\*\\*\..#.*.*..#.#.\**\\#.**\..\\*\#.\\\\..##\\*#..**..*\\.*.*..\\#*.#*##+##.*.**\#*...*\.*#.*.\\\*.*.\*\*\.#.\..#*#.#\\\\...\\\\\#\\#.\..*#.\\.\\.\**\\...#.\#.\.\*.*..\\\*.#+##*.\..#\.\\\##..*.##\\.\..\\\\\\.**\..*..*\\.#\#*..\*\...\\\*...\#.#*.*\\*\.#\\..*\\\*\.\\..#.**.\#+####\\\\\*...\##*\\#...\.\#.\*#*\.#\*.#.....\..\.\\..\\.*.#\.#\\..\*\#\###\#.\\.\#.##..\\*\\\.#..\##+##*\.\\..\#\\\\**\\\#\.#.\##\\\.#.#.#\\.\*\#\..\.\.\..\.\*##\\\\#\.\#\..\\.\\\.#\\\#...\\\\\..**.*\#+#.*#*.*\*\.*\\**.\.\\..\...\\\.*\\.#\*#.**..\\\.**..\#\\.\\.\.*\**\...\.#.\..**\\.*\\###\.#..*.\\.\#+#*\\##.\.\\#.\#.\\\...#\\#\\.\##\\\*#...\....\*#.\...*\\.*#*\#\#\*#.#.\...#*.\*\*.*..\\#\\\\\*.\*.\#+#\\\*\*\*.\\##\.\.\#.\#.\#..#.\\\\..\.#.\*\\\\.\....##.\*.\..\*\\\*\\*\.\#\*\\\*.\.*.\\\\.\\.*.\**\#+#\##*.\##\\\*\.\.#.\*.\\..\..*\...\.\###.\..*.#\#\..\*\*.\...\\.\#*\\**\*\*\\\*.\\.\#*\#.#\###\.**##+#\\.\*.\.\..*#....*#.*\...\\..\.#.*.#\\.\\*#\.*..*\*.\.\.#..\\#........*.*\#\*#\#\\.#\\.*\**\..\*\\#+#.\\\.**#\*..\\\##..\\\#\*.\\#.#\\\#\.##.\.#.#\.*\\*.\*\.\..\.\\\\#.\*#\**\*..\\.#\.\\.#.*\**..\.\*#+##*#.....#\.\.*.\\##\*#..\\\...\*\.#.\.\.#\*.*......\\#\#\*\.#\\\\\#.##\.#*\.\\*..\\\.*\\\#\.\\.\\.#+#...*\\\.\#*\\.#..*#.\#.\..\\\**.\\.#.\.\.\\...*\*..\.\#.\\\\\.*\\..#..\.#*.*\\\\\\#\##*\#.\\#\\\\.#+#.\\\.\.\\*.*...\\*..\##*\#.*\\#\\\\.##.*\*\#..\\\#.\.\..\#\\#.\..*.\\..\\.#...\\.\#\\\*.*\#*\..*.\#+#\\.\\....*.\\.\\\#\.\\\\\\#\.\...\**..*#*\.\.\\.\..\\.\\\#\\.\#\\#\\.\\\#.#.\*.\\\\*....\..\.\#\..#+#*#\.\\\.....\..\.#\\\.\.#\\#.#\#*..*\\\\\.***\\.\.\#....#.\*.\\..*\\.\\\.*\\.\#..\..*\\..\..\\***\#+#\\\...\.*\\\\\.#\.#.*..\*.#...#\*..\**\\*\.*#.....\.\.\\\#\\.*.\.\..*\..#\*.*\#.*\.\\\**\..#...#\.#+##..\..##\\#\#\\\\*\*\\.\.\#\..\..*.#.#*\#\\.#\#*.\\#\.\\*\\#*.\\\\\\\\*\\..\.\..**\\#*.\#\\.##.\..#+#\\\.\.*\.#\\\#\**..\..#\\.\*.\..\\.\\....#.*\.\...##..\.#\..\\.\\..\*\\\\#*\...*.*\..#.*\.\#\\.#\*#+#\#*\.*\\*#*##..\.*.\\#.\..\\\\\.#.\##*\**\\**#\\.\##.\\#.##\.\.\#\\#.#\*..##...#\\\\.*\\\*\*.\..*.#+#\.*#\\.\\...\.*\\##*\###\*......\.\#\.*#.#\.#*\.\.\\..*.\#\#\..#**#.\..*\\\\\\.*\\#*..\\\\\.\....\#+#**.\*#.\.#*\*#..*\*.#.\**#\\..\\#\#\\\.#..\...\**\*\*\#.\\.\*#\\\\\*#.\*....#\.\\...##.\\\*\\.\\.##+#\.\.\\.##\\.\#*\\\.#\\.*#\.\*\.#\\#\\.\.#..#\\*\..*\#\..##.##\\##..#*\#\*\.\\\\*\\\#..\#\\*.\\\.\\#+#*#\.##.*\.\\..\.*#\\**.*..#.\.#\\\.#.\.\\\**#..\*.\\.#.\\#*\*.\\\\\***.\\\\.\*.\\.\.*\*.*.\\.\*\\\#+#\#.#...\.#...\\\*.\#...**.\*.\...#*###\.\..#.\\\*..\.\\\\\#\.\#\#\\.\\*#**\\.\###.*.*...\\*\..#\\*#+#\..*#..#.#\\\.\.\\#.\#.\..*\#\.#.....*.\#.\\\\.#\\\\#\\#.\#.#\\#..#\\.\#..\.*.\.\.\\\\.*..*#..#\\\#+#.\*..\\*\#\...#.##\\\\..\#\\\**#\\.*...\\###\\\..\\.\.\*\\.\#\.\.#\##.\\.#\*#\\##\\.**.\\\\.\#\\\.#+#**.*\#.#\..\.\\.*...\#*###*\\\\\.*\\\.\#\#\#\\\..\.\\\#\.*#\\\\.\\.#.#.\...\###\.*\.\\\\*.\\.\\\#*#+##.\.\#\\**#\#\\.\\.\.\.#.\*....\....*\\\.\\#\##.*#\\#....\*\..\.\.\...\.*.\\*.\##\\###..\.\#\.*#..#+#\.\.*.\#...*#.\#\..\*#\*#..**#\.\\\.\.*\*.\*.##\.*\\\\\#\\*#\\\\#\\.\*.\\....#.\....\\#\\#..\\.\*##+#\....\\\.\\*.*#..#\#*#\\#\.\\\\.*\##\*.\#*###\*\**.\#\.\\\\\\*#\*.###.*.\\.#\........\....\*\...\##+#\\##.\#\\.#\*.\.\#.\##.\\\\.\#\\.\##.\#..*.\.##*\..\#\#.\\\.#\.\\\*\*\*\#\\.\*#.**\\.\\\\*.#**\..\#+##\*#\*\\*\.#*\#.\#..\..\#*.*\#\\.\\.\.#\..\.*\\*\\\#.\.\*.#.\#.\..\.\.*.#\\**.*#**#\\***\.\.\\.#.\#+#\#\*#\.\\.\\..\\\#\..\\*..\.\*\*\*\#\\.***.#\.*\##\#..\#\\##\\.#.\##*\**\#\..\\*..\\\*.#..*.\\*#\\#+#\\*.#.#*\\\*#\.#\\.\\..#\*\#\*\*.\.\#\##\\#\\.\#*..\\\...*\\\\#.*\\\#.\.\\\#...\\.*\\..\*.#\\\\\###+##..#.\\\\##*\.#.*...\\\\\#*.#.....#\#\.*\#.#.*.\\\..#*.\#.\\\.#\#.\\#\.*\\###\\\\*\*..#.#\\\.##*.\#+#\..\\*#\\..#\\\#.#\#.**\.#\\.....*#.#\\\\\.#..\..###.#\.\#..\#\\*#*\.\\*...*\\\\.#..\..\..\\*\\.\\#+#\\*.\..*\*\##...\\\..#\.\\.\\*\.#.\\\..\.\..*\#..#\\\#\\\..\\.\*.###.\*\#\\\\\\\.\..#\\..\.\.\\\**#+#*.#..\*.*#...\\\\.\.####\\\\\\.\#**.*.\.#.#.*.\.\\#\*.\*#\\\..#.*.#.#*\...\..\*..##.....\\..\\*\\\#+#.\#\#..\\#\.\\.\\*.*\\..#\\*\.\##..\\*.\\*.#\\.#.#.#..*\..#..*\\\\\#\*..\.\#\\.*.#\\\...\\\\..\*\.#+#\###*.\.\.\\.#\#....\..#..\\\.#\\#\*#\\\..*\.*#.\#.\#\\\#\**..#.\\*.*##..#\*\..\#\*.\*.\\\..\.#\#\#+#*\\**#\\\\.*.#..\\.\..\*.\*#*.#\..\\#**..**.***##..\\#.#*#...*\.##**.**.\*\.\.#.\*\*##.....*\.#\\*#+#.\\#*\.*\\*##\#.....\.#\*\*.#*#\#.\\\*\.*..#\\**\.\..#.\.#\\\\#*\..*\..\.\#*\\**.\*##*..\\#\*\#.\.#+#\###*.\#...\\\#\\#**.\\.\\...*\*\\.\#*.\#\\.*###*.\\\.\\.*.*\\*\.#.\\\\..#..\..\#..\.*\.*.\\..#\#.#+#.\\\*#\#*\\.\#*#*\##\.\.#*#\\\\\\\.\\#*..\\\\\..\\*.\#.#.#.*..#**#\\.\*.\\.\\..**.\\*..\*.\.\..#\\#+##*..\\\*\\\#*#\.#.\.\\.\\#.\.#\.\*.#\\....\\#.\#.\..*\\\*#\\\.#.\*\#*#.*\##.\#**#.**\\..*.#.#\.\..#+#...\\*\..*.##\\\*##*\..#\*.*.\\*.\*#*\#*...\..\.#.*.\\.#\..\\.\\#\*\...#\.\\\.\.\\*.#\*\#..\*.\**##+#*..\\*####..*#.\\.#*.*\.\.*\.#..\\\\.*...\..\*.\\\.\\*.*\\\*\*#\*\.\\#*...\.\\\..##.*.##.\*.\#\.*\#+#\\#.\.*#.#\.\#\\.*.\##\.\.\#.#.*.\.*.#\\##.\\##\*#...*.\\\\#\...\\\\*#\#\\.#**.\#*.#\*...\.\\\.\..#+#\\\.\\*#\..\\*.\#\*..\*..\\.\\\....\\.\.\#*\..\*.\.\\\\\\\#*\.\#\**\\##*........#\..\.*.\\#..*.\..#+#*..\##\.\\#\**#\*.\...#.....\.\\.\\\\.\.\\..\*.*\.#*\*\*.##*\.\*.*\\\\\\.\\#\..*\\..\#.#....\\#*\.#+####\\\.\#\.\\.##*.\#\#\**....#*..\\.*.\...#.#\\\...\#**\#\\\\#\.#\..#\.\..\.\\.#*.*.....#.\*...\\\#+#.\.\\*.\\..#.\\*\.\\.#\\\#..\\*##**.\#\##**.\\\#.**\.\.#\.\#.#\#\.\*.\\*\.\*\\.#..\\\..#.\..\*.#.\#+#.\#\\.\\*\\\\**.\\*\\..##*\#\\#\\*##\*..*#\....\..\**\**\*\\*.#\\*...#\#.\\\\\\\.#.*\\#\\\#\#\\\\\#+#\..\#\\.\\\..\..\#\.\\.*.\#*..\\.\\#\#.\*\\\*\\\*#\*\..*\....*\...\...\#.#*.\*#*\\*.*\..\*..\.\#\\#+#.\\*\\\#\..\..*#..\.\#\\\#\**\#\**\.#\\\.*#\\..\..\\\\#\#\\.*\.....\\\...*\\\\#\..#...#.\##..*\\..#+#\..#*.\\#\#.\*\..\.\\\.\**..\\.#*\\\.\\\\..#..\*\#\.\\\.#\\*\\\.\**##\#*\#.\*\\.\\...#\\.\\\\.\##\#+#.....\*\.*\.*.#.*..*\#\#.*#\\.#...\..\\.\***\#\#\\.*.#\\.*\#*\#.\\#..\###.\*\\\\.#\#*##\#*.**\#.\\#+#**\\.#\\\\.*.\\*.*#\*\.#\*\\\#\*..\\\.#\#*\*.\###*\#\.*\#\..\#.\.\\.\\\.\\\\.*\.#.\\..#\*.\#.#\\.##+#.\\.**#\.#\*\\\\\*\\\*.\.\*\*\...\\\\*\*.\.\\\\#.\.#\*..\\.#\*#\.*..\*..\\\\*.\\\#\.*.\\\\\.*..\..#+#*.\.#.\#\\.\\#\\*..\*\\.\*\##\\*\\...#*###\.\#\\.#\#\\*\\..\\#*\\#\\\\..\\..*.*#*\.\.\\\\#\.##\.\##+#\\\\\*\.\\*\\\\\*\\\\\\.\#.###.\.\\\*#\\\.*.\#\\\\\#*.#..*\\\..\\.\\*\\##.\\\.\.\..\\\....\\..*..\#+##\\##.\\\*#*.\.\.#\.\*.\*.\\\.*\*\..\..#.**\*\\*.\**\.*#\...\.#\\\\\\\#.\.#\.\\\.#\.#.##*#.\\.\**\#+##....#.\\*\\\.\\\\\.#.\\*.#**\\\\#.#\\#\\#...#\*.*#*..\\#*#\\\*\*\\\\.#\.#...*\*.\\#\\\..\\\.*\*.\#+####################################################################################################
+ maps/lightning/lightning2.map view
@@ -0,0 +1,9 @@+########+#..R...#+#..*...#+#..#...#+#.\.\..L+####**.#+#\.....#+#\..* .#+########
+ maps/lightning/lightning3.map view
@@ -0,0 +1,15 @@+###############+#\\\.......** #+#\\#.#####...##+#\\#.....*##. #+#\#####\...## #+#\......####* #+#\.######* #.\#+#\.#. *...##.##+#\##. .. *...#+#\...... L#.#.#+###########.#.#+#\..........#.#+##.##########.#+#R.#\.........#+###############
+ maps/lightning/lightning4.map view
@@ -0,0 +1,23 @@+########################+#.....................\#+#......*\ ...........#+#......*... ......* ...#+#.. \\... .*..... ...#+#.. ....... ....... ...#+#.. ....... .\\.... ...# ######+#. .... .....\...# #\\\\#+#\\\......... .........# #....#+########### R ########*#####+ #.......... ........***\\\#+ #.......... ............**#+ #.......... ......... *.*\#+ #....\\.... ....\\..... ..L+ #.....................****#+ #........\*...............#+ #........... .........#+ #.........................#+ ###########################++Water 1+Flooding 20+Waterproof 10
+ maps/lightning/lightning5.map view
@@ -0,0 +1,25 @@+######################+#..R#.........\\\\\..#+#...#..#...#..#####..#+#...#..#...#....#\...#+#...####\#*#....#....#+#...\\\#.............#+#.#################..#+#.........\\\... *...#+#...\........... #...#+#...\..***..#... ....#+#...\.......#..# *..\#+#...\\\\\...#..#\#..\#+#...........##......\#+#.#..........######..#+#.#..#########.......#+L.#....#.....#.......#+#####..#...\\#.......#+#....**#.##*########.#+#......#.#.....#.....#+#\\\\\...#...........#+######################++Water 0+Flooding 25+Waterproof 10
+ maps/lightning/lightning6.map view
@@ -0,0 +1,17 @@+####### #######+#..**.# #..*\*#+#.R*\\#######.****#+# \\ ..... \*\*#+# \\\\\ ...\\\*\#+#..........\...\.\#+######..**. #######+ #.##\..#+ #.#.##.#+ # \\...#+###### .#.**#######+# ...\\\\\\\.#+# ................#+#..**........*.*.\#+#\\#. #######\#\.\#+#\\#\ # # ... #+####### #L#####
+ maps/lightning/lightning7.map view
@@ -0,0 +1,17 @@+ ######+ #....#############+ #.**.. .. ..** \\#+ #.**.. . ..\ \\#+ #.**.. . . #+######.\\......#****###+#**....*.......# .. #+#\\...\L\\\....# #+#\......\*\**..# .\\#+######R.....###########+ ###.**. * ....\\\#+ #\\\\#..\\\.\\\#+ #\\\\#......\\\#+ ################++Water 2+Flooding 20
+ maps/lightning/lightning8.map view
@@ -0,0 +1,17 @@+##############################+#R.............#\............#+#..\######################\..#+#..\\\\\\\\\\\\\\\\\\\\\\\\..#+#............................#+#..*****.*\...*...*...*****..#+#..*\....*\....*\*..*.\\*\\..#+#..*\....****..\*\......*....#+#..*\....*\....*\*..*...*....#+#..*\....*\...*...*.....*....#+#............................#+#..\\\\\\\\\\\\\\\\\\\\\\\\..#+#................ ..... .....#+#................ #....L#+##############################++Flooding 30
+ maps/lightning/lightning9.map view
@@ -0,0 +1,20 @@+####################+# # \..\#+#\#\ \#....# ####+#.# # .....# \\ #+#.# # ....# * #+#.# #R # \. #+#.# #****. # ..\ #+#.# #*****\# ..# #+#\# #\....\# \# #+#\ #..#..\# #+#\#### ########### #+#... # # ..\\\\ #+# .. # # \###.. #+# ...... # #+# ###### # ***** #+# ...... #**.\\\.. #+# \ #.. #\\...... #+# .. # # \\\ #+# \\\\#L *... #+####################
+ maps/rocks.map view
@@ -0,0 +1,38 @@+#######+#*****#+#****@#+#***@!#+#***W\#+#* *!\#+#* * #+#* * #+#* * #+# * #+#* * #+# * #+#* * #+# * #+# * #+# * #+# #+# R #+# #+# # # #+# #W# #+# #\# #+# #\# #+# #\# #+# #\# #+# #\# #+# #\# #+# #\# #+# #\# #+# #\# #+# #\# #+###L###++Growth 67+Water 1+Flooding 6+Waterproof 12+
+ maps/secondtimearound.map view
@@ -0,0 +1,38 @@+ + ### + #@### + ##@W.## + ## .R. ## + ## #.# ## + ## ## ## ## + ## ## ## ## + ## ## ## ## + ## ## ## ## + ## ## ## ## + ## ## ## ## + ## ## ## ## + ## ## ## ## + ## ## ## ## + ## ## ##!!## + ##\ ## ##!\## + ##\\## L ##\\## + ##\ ## ##!\## + ## ## ##*!## + ## ## ## .## + ## ## ## # + ##\\##\\ ## ### + ##\\##\ ## ## + ##\\## ## ## + ##\\## ## ## + ## ## ## ## + ## ####### ## + ## #@#@# ## + ## @#* ## + ##\\\\\## + ##\W\## + ######\###### + #\\\\\\\\\\\#+ #############++Growth 3+Razors 0
+ maps/sixty-four-moves.map view
@@ -0,0 +1,100 @@+################+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#**************#+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#************* #+#************. #+#*******.***** #+#......\\..... #+#.......\..... #+#......\\..... #+#......\...... #+#............. #+#............. #+#....\\\\..... #+#...\.....\... #+#...\......... #+#...\......... #+#............. #+#.....\....... #+#.....\....... #+#.....\....... #+#......\\\.... #+#............. #+#............. #+#............. #+#............. #+#............. #+#.............R#+##############L#
+ maps/smash.map view
@@ -0,0 +1,6 @@+#####+# R\L+#* *#+#* *#+#* *#+#####
+ maps/superposition.map view
@@ -0,0 +1,20 @@+ + ###### +##** \# +#R.. \# +### \# + # A# + # \# + # \# + # \# + # 1*##+ # .\#+ #* *##+ ## ###+ # # + # ###+ # L#+#### ###+########++Trampoline A targets 1
+ maps/test0.map view
@@ -0,0 +1,15 @@+###############+#***...R......#+#***... ...*..#+#\\\... ..\\\.#+#...... ...*..#+#.. .. ...#+#.... .... ...#+#.... .... ...#+#.. . ..#+#..*. .. .....#+#.... .. .....#+#.\.. .......*#+#.............#+#......... .#+#############L#
+ maps/test1.map view
@@ -0,0 +1,18 @@+###############+#***...R......#+#***... ...*..#+#\\\!.. ..\\\.#+#...... ...*..#+#.. .. ...#+#.... .... ...#+#.... .... ...#+#.. . ! ..#+#..*. .. . ...#+#.... .. . ...#+#.\.. .... ..*#+#......... . .#+#!....... W #+#############L#++Growth 25+Razors 0
+ maps/test10.map view
@@ -0,0 +1,10 @@+############+#..@.R..*..#+#..A....B..######+#....2.. ..#\\\C#+#......* *.#\\\1#+########L########++Trampoline A targets 1+Trampoline B targets 1+Trampoline C targets 2
+ maps/test2.map view
@@ -0,0 +1,19 @@+########################+#.....................\#+#...... ...........#+#.......... ......@ ...#+#.....\\... ....... ...#+#.......... ....... ...#+#.......... .\\.... ...# ######+#....... .....%...# #\\\\#+#\........... .........# #....#+########### R ########*#####+ #.......... ........***\\\#+ #.......... ............**#+ #.......... ......... *.*\#+ #....\\.... ....\\..... ..L+ #.....................****#+ #........\*...............#+ #........... .........#+ #.........................#+ ###########################
+ maps/test3.map view
@@ -0,0 +1,29 @@+#######################################+#****................#..1...\\\\\\\B..#+#R.......##############################+#.. ..................................#+#.. ........ % ......#+#.. .@. .... ......#....... ..........#+#.. ... ...........#.A..... ..........#+#.. ... ...........#....... * \\..#+#.. ... ...........#....... ..........#+#.. ... ...........#....... ..........#+#.. ... ...........#................**#+#..\\\\\...........#................\\#+########### ############## ############+#...*.................................#+#....*.................. ......#+#... .*....*.............. ..... .....#+#....*2*........########.. ..... .....L+#...*...*.......#\\\#..... ...*.......#+#.....\\\.......#\\\#....**..***......#+#.... .......#\\\#*................#+#...............#\\\#*...**...*.......#+#...............#.....................#+###### ############## ### #######+#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\#+#######################################++Trampoline A targets 1+Trampoline B targets 2+
+ maps/test4.map view
@@ -0,0 +1,9 @@+########+#..R...#+#..*...#+#..#...#+#.\.\..L+####**.#+#\.....#+#\..* .#+########
+ maps/test5.map view
@@ -0,0 +1,16 @@+ ######+ #....#+ #.**.#+ #.**.#+ #.**.#+######.\\.######+#**....*.......#+#\\....L\\\....#+#A......*****..#+######R.....###########+ ###.....*.....\\\#+ #\\\\#..1...\\\#+ #\\\\#......\\\#+ ################++Trampoline A targets 1
+ maps/test6.map view
@@ -0,0 +1,14 @@+ ######+ #....#+ #.**.#+ #.**.#+ #.**.#+######.\\.######+#**....*.......#+#\\....L\\\....#+#.......*****..#+######R.....####+ ###....#+ #\\\\#+ #\\\\#+ ######
+ maps/test7.map view
@@ -0,0 +1,19 @@+##############################+#R...........................#+#.........................W..#+#..\\\\\\\\\\\\\\\\\\\\\\\\..#+#............................#+#..*****.*\...*...*...*****..#+#..*\....*\....*\*..*.\\*\\..#+#..*\....****..!*!......*....#+#..*\....*\....*\*..*...*....#+#..*\....*\...*...*.....*....#+#............................#+#..\\\\\\\\\\\\\\\\\\\\\\\\..#+#................ ..... .....#+#................ W....L#+##############################++Growth 25+Razors 10+Flooding 20
+ maps/test8.map view
@@ -0,0 +1,12 @@+###########+#....R....#+#.*******.#+#.\\\\\\\.#+#. .#+#..*\\\*..#+#.#*\\\*#.#+#########L#++Water 0+Flooding 10+Waterproof 5
+ maps/test9.map view
@@ -0,0 +1,16 @@+ ################+ #*****#!! 1 #+ #..\..# #+#########\\\\ # .\\\. #+#.............# * #+#.. .\\\#..!..#\** #+#.. LW\\#W ..##### ####+#..R\\\\#.. ..*\*\*W...#+#.......A.. ...\.\...\\#+#.......... ** #+############....\.######+ #.....!#+ ########++Growth 15+Trampoline A targets 1
+ maps/trampoline1.map view
@@ -0,0 +1,10 @@+############+#..*.R..*..#+#..A....B..######+#....2.. ..#\\\C#+#......* *.#\\\1#+########L########++Trampoline A targets 1+Trampoline B targets 1+Trampoline C targets 2
+ maps/trampoline2.map view
@@ -0,0 +1,18 @@+ ######+ #....#############+ #.**.. .. ..*@ \\#+ #.**.. . ... \\#+ #.**.. . . 3 #+######.\\......#****###+#**....*.......# #+#\\...BL\\\....# #+#A......*****..# 2\C#+######R.....###########+ ###.....*.....\\\#+ #\\\\#..1...\\\#+ #\\\\#......\\\#+ ################++Trampoline A targets 1+Trampoline B targets 2+Trampoline C targets 3
+ maps/trampoline3.map view
@@ -0,0 +1,29 @@+#######################################+#****................#..1...\\\\\\\B..#+#R.......##############################+#.. ..................................#+#.. ........ \ ......#+#.. .*. ....**.*...#....... ..........#+#.. ... ....\\\\...#.A..... ..........#+#.. ... ....\ .....#....... * \\..#+#.. ... ....\......#....... ..........#+#.. ... ....\......#....... ..........#+#.. ... ...........#................**#+#..\\\\\...........#................\\#+########### ############## ############+#...*.................................#+#....*.................. ......#+#... .*....*.............. ..... .....#+#....*2*........########.. ..... .....L+#...*...*.......#\\\#..... ...*.......#+#.....\\\.......#\\\#....**..***......#+#.... .......#\\\#*................#+#...............#\\\#*...**...*.......#+#...............#.....................#+###### ############## ### #######+#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\#+#######################################++Trampoline A targets 1+Trampoline B targets 2+
+ maps/trampoline4.map view
@@ -0,0 +1,16 @@+ ######+ #....#+ #.**.#+ #.**.#+ #.**.#+######.\\.######+#**....*.......#+#\\....L\\\....#+#A......*****..#+######R.....###########+ ###.....*.....\\\#+ #\\\\#..1...\\\#+ #\\\\#......\\\#+ ################++Trampoline A targets 1
+ maps/wetbeard.map view
@@ -0,0 +1,25 @@+#########################################+#RWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWW\WWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#@WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#+#######################################L#++Water 0+Flooding 10+Waterproof 5+Growth 25+Razors 33
+ maps/zigzag.map view
@@ -0,0 +1,14 @@+###################################################################################################+#L \\\\\\\\\\\\ \\\ \\\\\\\\\\\\\ \\\\\ \\\\\\\\\\\\\\\\\\\\ \\\ \\\\\ \\\\\\\\\\\\\\\ #+##### ############ ### ##### #####21############# ##### ############### #+##### ##W## ############# ##W## ###########ABW###### ### #W# ############### #+#R \\\\\\\\\\\\ \\\\\ \\\\\\\\\\\\\ \\\\\ \\\\\\\\\\\\\\\\\\\\ \\\ \\\ \\\\\\\\\\\\\\\ #+###################################################################################################++Water 0+Flooding 60+Waterproof 9+Growth 3+Razors 0+Trampoline A targets 1+Trampoline B targets 2
+ src/Main.hs view
@@ -0,0 +1,226 @@+module Main where++import Map+import Rules++import Paths_lifter++import Graphics.Gloss+import Graphics.Gloss.Interface.IO.Game+import Graphics.Gloss.Interface.IO.Simulate+import System.FilePath+import System.Directory+import Data.Array.IO+import System.Environment+import Debug.Trace+import Control.Monad++import Foreign.Marshal.Array hiding (newArray)+import Foreign.Storable+import qualified Data.ByteString as B+import Codec.Image.STB +import Data.Bitmap.Simple++data Opts = Opts { mapFile :: FilePath,+ route :: Maybe FilePath,+ displayRun :: Bool,+ tracing :: Bool,+ showEnd :: Bool,+ displaySpeed :: Int,+ mscale :: Float }++main = do ddir <- getDataDir+ args <- getArgs+ opts <- processArgs ddir args + (Opts (error "No map file") Nothing False False False 10 2)+ imgs <- mkImgData+ initSt' <- loadMap imgs (mapFile opts) (tracing opts)+ let initSt = initSt' { iscale = mscale opts }+ ((wl,hl), (wh,hh)) <- getBounds (world initSt)+ let max = ((wh - wl) + 1) * ((hh - hl) + 1)+ case route opts of+ Nothing ->+ playIO (InWindow "Lambda Lifter" (800, 600) (10, 10)) (greyN 0.2)+ 30 -- set FPS+ initSt+ drawWorld+ handleInput+ stepWorld+ Just r ->+ do rinfo <- readFile r + if (displayRun opts)+ then+ simulateIO + (InWindow "Lambda Lifter" (800, 600) (10, 10)) (greyN 0.2)+ (displaySpeed opts) + (initSt, take max rinfo)+ (\ (s, _) -> drawWorld s)+ stepSimulate+ else+ do endSt <- validate initSt (take max rinfo)+ putStrLn $ "Score: " ++ show (score endSt)+ when (won endSt) $ putStrLn "Mining complete"+ when (dead endSt) $ putStrLn "Robot squashed"+ when (showEnd opts) $ do m <- printMap (world endSt) (waterlevel endSt)+ putStrLn m+ where+ processArgs d [] o = return o+ processArgs d ("--route":r:rest) o+ = processArgs d rest (o { route = Just r })+ processArgs d ("--display":rest) o+ = processArgs d rest (o { displayRun = True })+ processArgs d ("--txt":rest) o+ = processArgs d rest (o { showEnd = True })+ processArgs d ("--speed":n:rest) o+ = processArgs d rest (o { displaySpeed = read n })+ processArgs d ("--scale":n:rest) o+ = processArgs d rest (o { mscale = read n })+ processArgs d ("--trace":rest) o+ = processArgs d rest (o { tracing = True })+ processArgs d (m:rest) o+ = do ok <- doesFileExist m+ if ok then processArgs d rest (o { mapFile = m } )+ else processArgs d rest (o { mapFile = (d ++ "/maps/" ++ m) } )+ ++blackPixel = [15,6,2,255]+brownPixel = [139,69,19,255]++lineA, lineB :: [Word8]+lineA = concat (take 8 (repeat (blackPixel ++ brownPixel)))+lineB = concat (take 8 (repeat (brownPixel ++ blackPixel)))++dirtData :: [Word8]+dirtData = concat (take 8 (repeat (lineA ++ lineB)))++dirtBMP = bitmapOfByteString 16 16 (B.pack dirtData) True++getBMPdata :: Bitmap Word8 -> IO Picture +getBMPdata img = withBitmap img $+ \ (w, h) nchans pad ptr ->+ do -- read the raw data+ idata <- word8s (w * h * nchans) ptr []+ -- rgba is reversed, so fix it+ let idata' = swapOrder idata+ -- upside down, so fix it...+ let idata'' = invert (w * nchans) idata'+ return (bmp idata'')+ where word8s 0 ptr acc = return (reverse acc)+ word8s n ptr acc = do i <- peek ptr+ let ptr' = advancePtr ptr 1+ word8s (n - 1) ptr' (i : acc)+ bmp bdata = bitmapOfByteString 16 16 (B.pack bdata) True++ swapOrder (a:b:g:r:rest) = r:g:b:a: (swapOrder rest)+ swapOrder xs = xs++ invert w dat = concat $ reverse (splitAt w dat)+ splitAt n xs | n < length xs = take n xs : splitAt n (drop n xs) + | otherwise = [xs]++loadPic :: String -> IO Picture+loadPic p = do ddir <- getDataDir+ imgIn <- loadImage (ddir ++ "/graphics/" ++ p ++ ".bmp")+ case imgIn of+ Left err ->fail err+ Right img -> getBMPdata img+mkImgData = do brickBMP <- loadPic "bricks"+ lambdaBMP <- loadPic "lambda"+ rockBMP <- loadPic "rock"+ lamrockBMP <- loadPic "lamrock"+ playerBMP <- loadPic "miner"+ bugBMP <- loadPic "bug"+ liftBMP <- loadPic "lift"+ razorBMP <- loadPic "razor"+ beardBMP <- loadPic "beard"+ trampolineBMP <- loadPic "goto"+ targetBMP <- loadPic "target"+ openliftBMP <- loadPic "openlift"+ return (Imgs brickBMP dirtBMP lambdaBMP rockBMP lamrockBMP + playerBMP bugBMP+ liftBMP openliftBMP razorBMP beardBMP trampolineBMP+ targetBMP)++handleInput (EventKey (SpecialKey KeyUp) Down ms fs) s = return $ s { ymove = 1,+ xmove = 0 }+handleInput (EventKey (SpecialKey KeyUp) Up ms fs) s = return $ s { ymove = 0 }+handleInput (EventKey (SpecialKey KeyDown) Down ms fs) s = return $ s { ymove = -1,+ xmove = 0 }+handleInput (EventKey (SpecialKey KeyDown) Up ms fs) s = return $ s { ymove = 0 }+handleInput (EventKey (SpecialKey KeyLeft) Down ms fs) s = return $ s { xmove = -1,+ ymove = 0 }+handleInput (EventKey (SpecialKey KeyLeft) Up ms fs) s = return $ s { xmove = 0 }+handleInput (EventKey (SpecialKey KeyRight) Down ms fs) s = return $ s { xmove = 1,+ ymove = 0 }+handleInput (EventKey (SpecialKey KeyRight) Up ms fs) s = return $ s { xmove = 0 }+handleInput (EventKey (SpecialKey KeySpace) Up ms fs) s = return $ s { shave = True }+handleInput (EventKey (Char 'w') Up ms fs) s = return $ s { pause = True }+handleInput _ s = return $ s++drawWorld st = do ts <- getAssocs (world st)+ let water = waterlevel st+ let (x, y) = playerpos st+ (ex, ey) = exitpos st+ p = player (bitmaps st) + return $ Pictures [+ Scale (iscale st) (iscale st) $ + Pictures (p : -- centre on player+ toPic st water x y (((ex, ey), mkExit) : + (filter (nearPos (iscale st) (x,y)) ts))),+ winPic (won st),+ losePic (dead st),+ scorePic (score st)]+ where mkExit | lambdas st == 0 = ExitOpen+ | otherwise = Exit+ exitOpen st = False+ nearPos s (x, y) ((x', y'), _) = fromIntegral (abs (x - x')) < (40 / s) && + fromIntegral (abs (y - y')) < (40 / s)++winPic False = Pictures []+winPic True = Translate (-250) 0 $ Color yellow $ Text "You win!"++losePic False = Pictures []+losePic True = Translate (-220) 0 $ Color (light red) $ Text "Ouch!!"++scorePic i = Translate (-380) 260 $ Scale 0.2 0.2 $+ Color white $ Text ("Score: " ++ show i)++data ImgData = Imgs { bricks :: Picture,+ dirt :: Picture,+ lambda :: Picture,+ rock :: Picture,+ lamrock :: Picture,+ player :: Picture,+ bug :: Picture,+ closedlift :: Picture,+ openlift :: Picture,+ razor :: Picture,+ beard :: Picture,+ trampoline :: Picture,+ target :: Picture + }++toPic :: GameState ImgData -> Int -> Int -> Int -> [((Int, Int), Tile)] -> [Picture]+toPic st water xoff yoff world = map pic world+ where pic ((x, y), t) = Translate (toEnum ((x-xoff) * 16)) + (toEnum ((y-yoff) * 16)) $+ if (y < water)+ then Pictures [Color (makeColor8 0 0 255 128)+ (Polygon [(-8,-8),(8,-8),(8,8),(-8,8)]), showPic t]+ else showPic t+ showPic Wall = bricks (bitmaps st)+ showPic Dirt = dirt (bitmaps st)+ showPic (Bug _ _) = bug (bitmaps st)+ showPic Rock = rock (bitmaps st)+ showPic Lambda = lambda (bitmaps st)+ showPic LamRock = lamrock (bitmaps st)+ showPic Exit = closedlift (bitmaps st)+ showPic ExitOpen = openlift (bitmaps st)+ showPic Razor = razor (bitmaps st)+ showPic (Beard _) = beard (bitmaps st)+ showPic (Trampoline _) = trampoline (bitmaps st)+ showPic Target = target (bitmaps st)+ showPic _ = Pictures []+++
+ src/Map.hs view
@@ -0,0 +1,169 @@+module Map where++import Rules++import Data.Array.IO+import Control.Monad.State++import Data.Array.IO+import System.IO++import Debug.Trace++mkWorld :: Int -> Int -> [[Tile]] -> IO (IOArray (Int, Int) Tile)+mkWorld width height ts + = do arr <- newArray ((0,0), (width-1, height-1)) Empty+ setArr arr 0 (reverse ts)+ return arr+ where setArr arr h (l : ls) = do setLine arr h 0 l+ setArr arr (h+1) ls+ setArr arr h [] = return ()+ setLine arr h c (x : xs) = do writeArray arr (h,c) x+ setLine arr h (c + 1) xs+ setLine arr h c [] = return ()+++parseMeta s l + = case words l of+ ["Growth", r] -> s { growthrate = read r }+ ["Razors", r] -> s { razors = read r }+ ["Water", r] -> s { waterlevel = read r }+ ["Waterproof", r] -> s { waterproofing = read r }+ ["Flooding", r] -> s { floodstep = read r, floodrate = read r }+ ["Trampoline", [x], "targets", [y]] + -> s { trampPath = updateMap y x (trampPath s) }+ _ -> s++updateMap x y [] = []+updateMap x y ((k, v) : xs) | x == k = (x, v) : (y, v) : updateMap x y xs+ | otherwise = (k, v) : updateMap x y xs++loadMap :: a -> FilePath -> Bool -> IO (GameState a)+loadMap extra f tr + = do fdata <- readFile f+ let (tiles, metadata) = span (not.null) $ lines fdata+ let (w, h) = (maximum (map length tiles), length tiles)+ world <- newArray ((0,0), (w-1, h-1)) Empty+ oldworld <- newArray ((0,0), (w-1, h-1)) Empty+ let initSt = GS extra + (0,0) (0, 0) 0 0 0 0 0 0 growth [] [] False False False False + tr world 0 0 0 0 10 oldworld 0 2+ let mSt = foldl parseMeta initSt metadata+ mSt' <- execStateT (buildWorld w h tiles) mSt+ -- HACK! Do it again to update trampoline metadata+ return $ foldl parseMeta mSt' metadata++buildWorld :: Int -> Int -> [[Char]] -> StateT (GameState a) IO ()+buildWorld w h ts = setArr 0 (reverse (take h ts))+ where setArr h (l : ls) = do setLine h 0 (take w l)+ setArr (h + 1) ls+ setArr h [] = return ()+ setLine h c (x : xs) = do st <- get+ st' <- lift $ setAt st h c x+ put st'+ setLine h (c + 1) xs+ setLine h c [] = return ()++ setAt st h c '#' = do writeArray (world st) (c,h) Wall+ return st+ setAt st h c 'R' = do writeArray (world st) (c,h) Player+ return (st { playerpos = (c,h) })+ setAt st h c 'L' = do writeArray (world st) (c,h) Exit+ return (st { exitpos = (c,h) })+ setAt st h c '.' = do writeArray (world st) (c,h) Dirt+ return st+ setAt st h c '%' = do writeArray (world st) (c,h) (Bug UP RIGHT)+ return st+ setAt st h c '*' = do writeArray (world st) (c,h) Rock+ return st+ setAt st h c '@' = do writeArray (world st) (c,h) LamRock+ return (st { lambdas = 1 + lambdas st,+ totalLams = 1 + totalLams st })+ setAt st h c '!' = do writeArray (world st) (c,h) Razor+ return st+ setAt st h c 'W' = do writeArray (world st) (c,h) (Beard (growthrate st - 1))+ return st+ setAt st h c '\\' = do writeArray (world st) (c,h) Lambda+ return (st { lambdas = 1 + lambdas st,+ totalLams = 1 + totalLams st })+ setAt st h c t + | t `elem` ['A'..'I']+ = do writeArray (world st) (c,h) (Trampoline t)+ return $ st { trampLocs = (t, (c, h)) : trampLocs st }+ | t `elem` ['1'..'9']+ = do writeArray (world st) (c,h) Target+ return $ st { trampPath = (t, (c, h)) : trampPath st }+ setAt st h c _ = do writeArray (world st) (c,h) Empty+ return st++testWorld = let top = take 32 (repeat Wall)+ side = Wall : take 30 (repeat Empty) ++ Wall : [] in+ mkWorld 32 32 $ top : take 30 (repeat side) ++ top : []++stepWorld t s | mkTrace s+ = if (xmove s /= 0 || ymove s /= 0 || shave s || pause s)+ then + do printTrace s+ hFlush stdout+ s <- movePlayer s+ s <- moveBugs s+ s <- applyRules s+ return $ s { timeSinceUpdate = 0, + xmove = 0, ymove = 0,+ shave = False, pause = False }+ else return s+stepWorld t s = let time = t + timeSinceUpdate s in+ if time > 0.1 && not (dead s) then+ do s <- movePlayer s+ s <- moveBugs s+ s <- applyRules s+ return $ s { timeSinceUpdate = 0}+ else return $ s { timeSinceUpdate = time } ++stepSimulate v t (s_in, ('A':cs)) = stepSimulate v t (s_in, []) -- abort+stepSimulate v t (s_in, (c : cs))+ | not (dead s_in)+ = do let s = mkMove s_in c + s <- movePlayer s+ s <- moveBugs s+ s <- applyRules s+ return (s, cs)+stepSimulate v t (s, []) + | not (dead s)+ = do s <- moveBugs s+ s <- applyRules s+ return (s, [])+stepSimulate v t s = return s++validate s_in ('A' : cs) = validate s_in [] -- abort+validate s_in (c : cs)+ | not (dead s_in) && c `elem` "UDLRWS"+ = do let s = mkMove s_in c+ s <- movePlayer s+ s <- moveBugs s+ s <- applyRules s+ validate s cs+ | otherwise = validate s_in cs+validate s _ + = do return s++mkMove :: GameState a -> Char -> GameState a+mkMove s 'U' = s { ymove = 1, xmove = 0, shave = False }+mkMove s 'D' = s { ymove = -1, xmove = 0, shave = False }+mkMove s 'L' = s { ymove = 0, xmove = -1, shave = False }+mkMove s 'R' = s { ymove = 0, xmove = 1, shave = False }+mkMove s 'W' = s { ymove = 0, xmove = 0, shave = False }+mkMove s 'S' = s { ymove = 0, xmove = 0, shave = True }+mkMove s _ = s++printTrace :: GameState a -> IO ()+printTrace s + | xmove s == 1 = putStr "R"+ | xmove s == -1 = putStr "L"+ | ymove s == 1 = putStr "U"+ | ymove s == -1 = putStr "D"+ | shave s = putStr "S"+ | pause s = putStr "W"+printTrace _ = return ()++
+ src/Rules.hs view
@@ -0,0 +1,361 @@+module Rules where++import Data.Array.IO+import Control.Monad++data Direction = UP | RIGHT | DOWN | LEFT+ deriving (Show, Eq, Enum)++next LEFT = UP+next d = succ d++prev UP = LEFT+prev d = pred d++data Tile = Empty+ | Rock+ | LamRock+ | Lambda+ | Bug Direction Direction+ | Dirt+ | Wall+ | Exit+ | ExitOpen+ | Beard Int+ | Razor+ | Trampoline Char+ | Target+ | Player+ deriving (Show, Eq)++toChar :: Tile -> Char+toChar Empty = ' '+toChar Rock = '*'+toChar LamRock = '@'+toChar (Bug _ _) = '%'+toChar Dirt = '.'+toChar Wall = '#'+toChar Lambda = '\\'+toChar Exit = 'L'+toChar ExitOpen = 'O'+toChar (Beard _) = 'W'+toChar Razor = '!'+toChar (Trampoline c) = 'T'+toChar Target = 't'+toChar Player = 'R'++data Metadata = Growth Int | Razors Int+ deriving (Show, Eq)++type GameMap = IOArray (Int, Int) Tile++data GameState a = + GS { bitmaps :: a,+ playerpos :: (Int, Int),+ exitpos :: (Int, Int),+ lambdas :: Int,+ totalLams :: Int,+ xmove :: Int,+ ymove :: Int,+ score :: Int,+ razors :: Int,+ growthrate :: Int,+ trampPath :: [(Char, (Int, Int))],+ trampLocs :: [(Char, (Int, Int))],+ shave :: Bool,+ pause :: Bool,+ won :: Bool,+ dead :: Bool,+ mkTrace ::Bool,+ world :: GameMap, + waterlevel :: Int,+ floodrate :: Int,+ floodstep :: Int,+ glug :: Int,+ waterproofing :: Int,+ oldworld :: GameMap,+ timeSinceUpdate :: Float,+ iscale :: Float+ }++printMap :: GameMap -> Int -> IO String +printMap m w = do ((wl, hl), (wh, hh)) <- getBounds m+ strs <- mapM (\row -> + do mapM (\col -> + do x <- readArray m (col, row)+ return (toChar x)) [wl..wh]) [hh,hh-1..hl]+ return (unlines strs)++growth :: Int+growth = 25 -- steps between beard growth++{- rules for tile movement:++* A player can make one of the following moves:+ - Up, Down, Left, Right, Wait+ (in gameplay, 'Wait' is implied by doing nothing for one game step, say+ 1/20th of a second)+* A player may move to any of the following:+ - Empty, Dirt+ - Lambda (increasing score by 1)+ - Exit (but only if there are no lambdas)+ - Rock (but only if the rock can be pushed sideways into an Empty space)+* When a player moves, the square he moves to becomes Player and the square he+ vacates becomes Empty++After player movement the following rules are applied, in order, to update the+map. We apply the rules to points on the map left to right, then bottom to top:++* A rock will move DOWN if there is an Empty space below it+* A rock will move DOWN and RIGHT if there is a Rock below it and an Empty + right, and below and right+* A rock will move DOWN and RIGHT if there is a Lambda below it and an Empty + right, and below and right+* A rock will move DOWN and LEFT if there is a Rock below it and an Empty + left, and below and left++The game ends in any of the following conditions:++* There is a rock directly above the player [Squashed: lose]+* There are no lambdas left and the player is at the exit (the lambda lift) [win]++-}++surrounding s (x, y) = do ((wl, hl), (wh, hh)) <- getBounds (world s)+ return [(x', y') | x' <- [x-1 .. x+1],+ y' <- [y-1 .. y+1],+ (x', y') /= (x, y),+ (x' >= wl && x' <= wh &&+ y' >= hl && y' <=hh)]++applyRules :: GameState a -> IO (GameState a)+applyRules s | won s = return s+applyRules s = do ((wl, hl), (wh, hh)) <- getBounds (world s)+ -- read the contents of the world before update, so that we don't+ -- run into problems when updating tiles that will get updated again+ -- later.+ mapM_ (\p -> do x <- readArray (world s) p+ writeArray (oldworld s) p x) + [(x,y) | y <- [hl..hh], x <- [wl..wh] ]+ squashTest <- mapM update [(x,y) | y <- [hl..hh], x <- [wl..wh]]+ let squashedLocs = concat squashTest+ -- better check it's still a rock and not overwritten by a beard!+ squashed <- mapM (\p -> do c <- readArray (world s) p + return (c `elem` [Rock, LamRock, Lambda])) + squashedLocs+ let (_, y) = playerpos s+ let glug' = if y < waterlevel s then glug s + 1 else 0+ let dead' = or squashed || dead s || glug' > waterproofing s+ let sc = if dead'+ then score s - (totalLams s - lambdas s) * 25+ else score s+ let fr = floodrate s+ let (w, fs) = if fr == 0 then (waterlevel s, floodstep s)+ else + if (floodstep s - 1 == 0)+ then (waterlevel s + 1, floodrate s)+ else (waterlevel s, floodstep s - 1)+ return s { dead = dead',+ glug = glug',+ score = sc,+ waterlevel = w, floodstep = fs }+ where update (x, y) = do t <- readArray (oldworld s) (x, y)+ case t of+ Rock ->+ do below <- readArray (oldworld s) (x, y-1)+ rt <- readArray (oldworld s) (x+1, y)+ belowrt <- readArray (oldworld s) (x+1, y-1)+ lt <- readArray (oldworld s) (x-1, y)+ belowlt <- readArray (oldworld s) (x-1, y-1)+ moveRock Rock (x, y) below rt belowrt lt belowlt+ LamRock ->+ do below <- readArray (oldworld s) (x, y-1)+ rt <- readArray (oldworld s) (x+1, y)+ belowrt <- readArray (oldworld s) (x+1, y-1)+ lt <- readArray (oldworld s) (x-1, y)+ belowlt <- readArray (oldworld s) (x-1, y-1)+ moveRock LamRock (x, y) below rt belowrt lt belowlt+ Beard 0 -> do writeArray (world s) (x, y) + (Beard (growthrate s - 1))+ growBeard (x, y)+ return []+ Beard n -> do writeArray (world s) (x, y) (Beard (n - 1))+ return []+ _ -> return []++ growBeard (x, y) = do adj <- surrounding s (x, y)+ -- any surrounding which are Empty get a Beard growth+ mapM (\ (x', y') ->+ do t <- readArray (oldworld s) (x', y')+ when (t == Empty) $+ writeArray (world s) (x', y') + (Beard (growthrate s - 1)))+ adj+ + moveRock r (x, y) Empty _ _ _ _ + = do writeArray (world s) (x, y) Empty+ writeArray (world s) (x, y-1) r+ s <- checkSquashed (x, y-2)+ when (r == LamRock) $+ checkTransform (x, y-2) (x, y-1)+ if s then return [(x, y-1)] else return []+ moveRock r (x, y) rck Empty Empty _ _+ | rck `elem` [Rock, LamRock]+ = do writeArray (world s) (x, y) Empty+ writeArray (world s) (x+1, y-1) r+ s <- checkSquashed (x+1, y-2)+ when (r == LamRock) $+ checkTransform (x+1, y-2) (x+1, y-1)+ if s then return [(x+1, y-1)] else return []+ moveRock r (x, y) Lambda Empty Empty _ _+ = do writeArray (world s) (x, y) Empty+ writeArray (world s) (x+1, y-1) r+ s <- checkSquashed (x+1, y-2)+ when (r == LamRock) $+ checkTransform (x+1, y-2) (x+1, y-1)+ if s then return [(x+1, y-1)] else return []+ moveRock r (x, y) rck _ _ Empty Empty+ | rck `elem` [Rock, LamRock]+ = do writeArray (world s) (x, y) Empty+ writeArray (world s) (x-1, y-1) r+ s <- checkSquashed (x-1, y-2)+ when (r == LamRock) $+ checkTransform (x-1, y-2) (x-1, y-1)+ if s then return [(x-1, y-1)] else return []+ moveRock _ _ _ _ _ _ _ = return []++ checkSquashed p = do t <- readArray (oldworld s) p+ case t of+ Bug _ _ -> do writeArray (world s) p Empty+ return False+ Player -> return True+ _ -> return False+ checkTransform p p' + = do t <- readArray (oldworld s) p+ when (t /= Empty) $ writeArray (world s) p' Lambda++moveBugs :: GameState a -> IO (GameState a)+moveBugs s = do ((wl, hl), (wh, hh)) <- getBounds (world s)+ -- read the contents of the world before update, so that we don't+ -- run into problems when updating tiles that will get updated again+ -- later.+ mapM_ (\p -> do x <- readArray (world s) p+ writeArray (oldworld s) p x) + [(x,y) | x <- [wl..wh], y <- [hl..hh]]+ eaten <- mapM update [(x,y) | x <- [wl..wh], y <- [hl..hh]]+ return s { dead = or eaten }+ where update (x, y) = do t <- readArray (oldworld s) (x, y)+ case t of+ Bug d d' -> do (x', y') <- moveBug (x, y) d d'+ return ((x', y') == playerpos s)+ _ -> return False+ moveBug (x, y) d d'+ = do let (x', y') = getNext (x, y) d' -- trying to go this way+ let (x'', y'') = getNext (x, y) d -- default this way+ newtile <- readArray (oldworld s) (x', y')+ newtile' <- readArray (oldworld s) (x'', y'')+ case newtile of+ Empty -> do writeArray (world s) (x, y) Empty+ writeArray (world s) (x', y') (Bug (next d) (next d'))+ return (x', y')+ Player -> do writeArray (world s) (x, y) Empty+ writeArray (world s) (x', y') (Bug (next d) (next d'))+ return (x', y')+ _ -> case newtile' of+ Empty -> do writeArray (world s) (x, y) Empty+ writeArray (world s) (x'', y'')+ (Bug d d')+ return (x'', y'')+ Player -> do writeArray (world s) (x, y) Empty+ writeArray (world s) (x'', y'')+ (Bug d d')+ return (x'', y'')+ _ -> do writeArray (world s) (x, y) (Bug (prev d) (prev d'))+ return (x, y)++ getNext (x, y) d = case d of+ UP -> (x, y + 1)+ DOWN -> (x, y - 1)+ LEFT -> (x - 1, y)+ RIGHT -> (x + 1, y)++++movePlayer :: GameState a -> IO (GameState a)+movePlayer s | won s = return s+movePlayer s | dead s = return s +movePlayer s | shave s + = -- any beard in squares adjacent to the player become Empty+ do let (x, y) = playerpos s+ r <- if (razors s > 0)+ then do adj <- surrounding s (x, y)+ mapM_ shaveBeard adj+ return (razors s - 1)+ else return $ razors s+ return $ s { shave = False, razors = r, score = score s - 1 }+ where shaveBeard (x, y) = do t <- readArray (world s) (x, y)+ case t of+ Beard _ -> writeArray (world s) (x, y) Empty+ _ -> return ()+movePlayer s = do let (x, y) = playerpos s+ let (x', y') = (x + xmove s, y + ymove s)+ tile <- readArray (world s) (x', y')+ -- Can only move onto Empty, Dirt, ExitOpen, Lambda, Razor, Trampoline+ -- Can move to a rock, if the rock can move into the space in the same+ -- direction as the player movement+ execMove tile (x, y) (x', y') (s { score = score s - 1 })++execMove (Trampoline t) (x, y) (x', y') s+ = case lookup t (trampPath s) of+ Just (xt, yt) ->+ do writeArray (world s) (xt, yt) Player+ writeArray (world s) (x', y') Empty -- Eliminate the trampoline+ -- Eliminate others to same target+ mapM_ (\p -> writeArray (world s) p Empty)+ (trampsTo (xt, yt) (trampLocs s) (trampPath s)) + writeArray (world s) (x, y) Empty+ return $ s { playerpos = (xt, yt) }+ _ -> return s+ where trampsTo p [] _ = []+ trampsTo p ((c, t):cs) xs + = case lookup c xs of+ Just p' -> if p == p' then t : trampsTo p cs xs+ else trampsTo p cs xs+ _ -> trampsTo p cs xs+execMove tile (x, y) (x', y') s+ | tile `elem` [Empty, Dirt, ExitOpen, Lambda, Razor] + = do writeArray (world s) (x', y') Player+ writeArray (world s) (x, y) Empty+ let lams = case tile of+ Lambda -> lambdas s - 1+ _ -> lambdas s+ let raz = case tile of+ Razor -> razors s + 1+ _ -> razors s+ let sc = case tile of+ Lambda -> score s + 50+ ExitOpen -> if (not (won s)) then score s + totalLams s * 25+ else score s+ _ -> score s+ when (lams == 0) $+ writeArray (world s) (exitpos s) ExitOpen+ return $ s { playerpos = (x', y'),+ lambdas = lams,+ razors = raz,+ score = sc,+ won = won s || (x', y') == exitpos s }+ | isBug tile+ = do writeArray (world s) (x, y) Empty+ return $ s { dead = True }+ | (tile == Rock || tile == LamRock) && ymove s == 0+ = do tile' <- readArray (world s) (x' + xmove s, y' + ymove s)+ if tile' == Empty then + do writeArray (world s) (x, y) Empty+ writeArray (world s) (x', y') Player+ writeArray (world s) (x' + xmove s, y' + ymove s) tile+ return $ s { playerpos = (x', y') }+ else return s+ where isBug (Bug _ _) = True+ isBug _ = False+execMove tile (x, y) (x', y') s = return s+