From f1d8389b1a7192bc4ac9c61774db6da19a663f48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20B=C3=BChler?= Date: Sat, 14 Jul 2012 19:54:38 +0200 Subject: [PATCH] change meta data handling, added trampoline and some map updates --- js/Makefile | 4 +- js/gui.js | 9 ++- js/maps.js | 2 +- js/mine.js | 148 +++++++++++++++++++++++++++++++------- js/sprites.png | Bin 0 -> 4903 bytes js/target.png | Bin 0 -> 675 bytes js/trampoline.png | Bin 0 -> 609 bytes maps/ems6.map | 19 +++++ maps/solutions.txt | 2 + maps/trampoline1.map | 10 +++ maps/trampoline2.map | 16 +++++ maps/trampoline3.map | 29 ++++++++ specs/images/bricks.bmp | Bin 0 -> 1146 bytes specs/images/lambda.bmp | Bin 0 -> 1146 bytes specs/images/lift.bmp | Bin 0 -> 1146 bytes specs/images/miner.bmp | Bin 0 -> 1146 bytes specs/images/openlift.bmp | Bin 0 -> 1146 bytes specs/images/rock.bmp | Bin 0 -> 1146 bytes specs/trampoline.pdf | Bin 0 -> 44619 bytes 19 files changed, 210 insertions(+), 29 deletions(-) create mode 100644 js/sprites.png create mode 100644 js/target.png create mode 100644 js/trampoline.png create mode 100644 maps/ems6.map create mode 100644 maps/trampoline1.map create mode 100644 maps/trampoline2.map create mode 100644 maps/trampoline3.map create mode 100644 specs/images/bricks.bmp create mode 100644 specs/images/lambda.bmp create mode 100644 specs/images/lift.bmp create mode 100644 specs/images/miner.bmp create mode 100644 specs/images/openlift.bmp create mode 100644 specs/images/rock.bmp create mode 100644 specs/trampoline.pdf diff --git a/js/Makefile b/js/Makefile index 1ef7d05..d55a57e 100644 --- a/js/Makefile +++ b/js/Makefile @@ -1,5 +1,7 @@ -MAPS=$(wildcard ../maps/flood*.map) +MAPS= +MAPS+=$(wildcard ../maps/trampoline*.map) +MAPS+=$(wildcard ../maps/flood*.map) MAPS+=$(wildcard ../maps/contest?.map ../maps/contest10.map) MAPS+=$(wildcard ../maps/ems*.map) MAPS+=../maps/pacman.map ../maps/pacman2.map diff --git a/js/gui.js b/js/gui.js index 17d5995..6792f97 100644 --- a/js/gui.js +++ b/js/gui.js @@ -1,4 +1,4 @@ -var mineGui_mine, mineGui_curmap, mineGui_curndx, mineGui_moves = ""; +var mineGui_mine = false, mineGui_curmap, mineGui_curndx, mineGui_moves = ""; var mineGui_movesBackup = []; var mineGui_customNdx = 1; var mineGui_canvas = true; @@ -14,7 +14,9 @@ var mineGui_spriteOffset = { 'L': 3, 'O': 4, '.': 0, - ' ': 1 + ' ': 1, + 'A': 8,'B': 8,'C': 8,'D': 8,'E': 8,'F': 8,'G': 8,'H': 8,'I': 8, + '1': 9,'2': 9,'3': 9,'4': 9,'5': 9,'6': 9,'7': 9,'8': 9,'9': 9 }; var mineGui_images = {}; @@ -192,7 +194,8 @@ function mineGui_updateMine() { } function mineGui_show() { - var waterLevel = Math.max(mineGui_mine.meta.Water, 0); + if (!mineGui_mine) return; + var waterLevel = Math.max(mineGui_mine.water_level, 0); var map = mineGui_mine.toString().split(/\n/); var canv = document.getElementById("mineGui_mineCanvas"); var mapNode = document.getElementById("mineGui_mineMap"); diff --git a/js/maps.js b/js/maps.js index 5e50cbb..757a86a 100644 --- a/js/maps.js +++ b/js/maps.js @@ -1,2 +1,2 @@ -var mineMaps = {"flood1":"###########\n#....R....#\n#.*******.#\n#.\\\\\\\\\\\\\\.#\n#. .#\n#..*\\\\\\*..#\n#.#*\\\\\\*#.#\n#########L#\n\nWater 1\nFlooding 8 \nWaterproof 5\nHighscore 945\n","flood2":"#######\n#..***#\n#..\\\\\\#\n#...**#\n#.*.*\\#\nLR....#\n#######\n\nFlooding 5\nWaterproof 3\nHighscore 281\n","flood3":"############\n#..........#\n#.....*....#\n#..\\\\\\\\\\\\..#\n#. ....#\n#..\\\\\\\\\\\\\\.#\n#..\\.. .#\n#..\\.. ....#\n#..... ..* #\n#..### ### #\n#...R#\\#\\\\.#\n######L#####\n\nWaterproof 10 \nFlooding 10\nWater 2\nHighscore 1303\n","flood4":"########################\n#.....................\\#\n#......*\\ ...........#\n#......*... ......* ...#\n#.. \\\\... .*..... ...#\n#.. ....... ....... ...#\n#.. ....... .\\\\.... ...# ######\n#. .... .....\\...# #\\\\\\\\#\n#\\\\\\......... .........# #....#\n########### R ########*#####\n #.......... ........***\\\\\\#\n #.......... ............**#\n #.......... ......... *.*\\#\n #....\\\\.... ....\\\\..... ..L\n #.....................****#\n #........\\*...............#\n #........... .........#\n #.........................#\n ###########################\n\nWater 1\nFlooding 20\nWaterproof 10\nHighscore 1592\n","flood5":"#########\n#.*..#\\.#\n#.\\..#\\.L\n#.R .##.#\n#.\\ ...#\n#..\\ ..#\n#...\\ ##\n#....\\ \\#\n#########\n\nWater 2\nFlooding 11\nWaterproof 5\nHighscore 575\n","contest1":"######\n#. *R#\n# \\.#\n#\\ * #\nL .\\#\n######\n\nHighscore 212\n","contest2":"#######\n#..***#\n#..\\\\\\#\n#...**#\n#.*.*\\#\nLR....#\n#######\n\nHighscore 281\n","contest3":"########\n#..R...#\n#..*...#\n#..#...#\n#.\\.\\..L\n####**.#\n#\\.....#\n#\\..* .#\n########\n\nHighscore 275\n","contest4":"#########\n#.*..#\\.#\n#.\\..#\\.L\n#.R .##.#\n#.\\ ...#\n#..\\ ..#\n#...\\ ##\n#....\\ \\#\n#########\n\nHighscore 575\n","contest5":"############\n#..........#\n#.....*....#\n#..\\\\\\\\\\\\..#\n#. ....#\n#..\\\\\\\\\\\\\\.#\n#..\\.. .#\n#..\\.. ....#\n#..... ..* #\n#..### ### #\n#...R#\\#\\\\.#\n######L#####\n\nHighscore 1303\n","contest6":"###############\n#\\\\\\.......** #\n#\\\\#.#####...##\n#\\\\#.....*##. #\n#\\#####\\...## #\n#\\......####* #\n#\\.######* #.\\#\n#\\.#. *...##.##\n#\\##. .. *...#\n#\\...... L#.#.#\n###########.#.#\n#\\..........#.#\n##.##########.#\n#R.#\\.........#\n###############\n\nHighscore 1177\n","contest7":" #######\n ## *#\n ##R *##\n ##\\\\\\\\##\n ##....##\n ##..\\ . ##\n ## . L . ##\n ##\\\\\\# #\\\\\\\\##\n ###### #######\n\nHighscore 869\n","contest8":"##############\n#\\\\... ......#\n###.#. ...*..#\n #.#. ... ..#\n### #. \\ ..#\n#. .#..... **#######\n#.#\\#..... ..\\\\\\*. #\n#*\\\\#.###. ####\\\\\\ #\n#\\\\.#. ...## \\ #\n#\\#.#..... ....# \\ # \n###.#..... ....# ##\n#\\\\.#..... ....#\\ # \n########.. ..###*####\n#......... .........#\n#......... ....***..#\n#..\\\\\\\\\\ # ####.....#\n#........*R..\\\\\\ .#\n##########L##########\n\nHighscore 1973\n","contest9":" #L#######\n #*** \\\\ #\n #\\\\\\ .. #\n#########.## ##########\n#.......\\ ..........* .#\n#*******\\......#....#\\\\ .#\n###\\.\\\\\\...**..#....... *#\n#*****\\\\ .\\\\..## #\\.#\n######### .... ##########\n # #\n ####*#### \n #.......#\n######### \\\\\\\\*##########\n#*\\\\ **# *..*\\ \\\\\\\\\\#\n#.\\**\\*** .....**.# \\\\##\\#\n#\\R...... .\\\\.. \\\\\\\\\\#\n##########################\n\nHighscore 3093\n","contest10":"#############################\n#..........................\\#\n#..\\\\###...#.... ###.#\n#..\\*\\\\\\.. #.... ..##\\\\..\\#.#\n#..\\*\\.... #.... ..#\\#....#.#\n#...\\###.. #.... ....#....#.#\n#... ..... ..... .####......#\n#\\\\. #.... .......#\n#... #..#. .....*\\ ##.......#\n#.#....... ...#.. ....######\n#. ...#... ...#.\\ ....#..* #\n##........ ...#.. #....#.#\\\\#\n#.....*... .....*\\#\\\\.....*.#\n#.***.* .......*\\****.....#.#\n#.\\\\\\.. ................ .#\n#.##### .###### ##### #\n#....\\\\.................... #\n#....****...#.##.....\\\\\\\\..\\#\n#....\\\\\\\\...#.........*....\\#\n#....\\\\\\\\...#.\\\\. #\\###.\\#\n#.... ..#.... ...#\\\\\\\\. #\n#........ ..#.... ...#..... #\n#........ ........#R#\n###########################L#\n\nHighscore 3634\n","ems1":"#######\n#L\\\\\\##\n##* ##\n##* ##\n##* ##\n##* ##\n##* ##\n##* ##\n##* ##\n##* ##\n##* ##\n## ##\n## ##\n##R ##\n## # ##\n#\\ # \\#\n## # ##\n## # ##\n## # ##\n## # ##\n#######\n\nAuthor ems_ (irc)\nHighscore 334\n","ems2":"#########\n###***###\n###***###\n###***###\n###***###\n###***###\n###***###\n# .**\\\\#\n# # #*#\\#\n# # #*#\\#\n# # #*#\\#\n# # #*#\\#\n# # #*#\\#\n# .#\\#\n### **#\n### R \\\\#\n### #L#\n### ###\n### ###\n### ###\n### ###\n### ###\n### ###\n#########\n\nAuthor ems_ (irc)\nHighscore 691\n","ems3":"################\n#\\.****####\\#*##\n#\\.\\\\\\\\.***...##\n##*####.#*###..#\n#\\.R....#...##\\#\n#\\ ####...#.#*.#\n#\\ **######.#..#\n##...\\\\\\\\\\\\...##\n#L.##########.##\n################\n\nAuthor ems_ (irc)\nHighscore 1199\n","ems3v2":"################\n#\\.****####\\#*##\n#\\.\\\\\\\\.***...##\n##*####.#*###..#\n#\\.R....#...##\\#\n#\\ ####...#.#*.#\n#\\ **######.#..#\n##...\\\\\\\\\\\\...##\n#L.#\\########.##\n################\n\nAuthor ems_ (irc)\nHighscore 1272\n","ems4":"#########\n#* L#\n#\\ #\n#\\\\ #\n##\\\\ #\n###\\\\ #\n####\\\\ #\n#####\\\\ #\n####### #\n# #*#*# #\n# * * #\n# #*#*# #\n# * * #\n# #*#*# #\n# R* * #\n# #*#*# #\n# * * #\n# #*#*# #\n# * * #\n# #*#*# #\n# * * #\n###*#*#.#\n#\\. . #\\#\n### # ###\n### # ###\n## # ##\n## # ##\n## # ##\n## # ##\n## # ##\n#########\n\nAuthor ems_ (irc)\nHighscore 908\n","ems5":"###################\n#************* ##\n##***********# * ##\n###*********##.*.##\n####*******####*###\n#####*****#####*###\n######***######*###\n#######*#######*###\n###### * ######*###\n#\\ . #*###\n#\\ \\ #*###\n#\\ ** #*###\n#\\ ## #*###\n#\\ #*###\n#\\ \\ \\ #*###\n#\\ ** ** #*###\n#\\ ## ## #*###\n#\\ #*###\n#\\ \\ \\ \\ #*###\n#R ** ** ** #*\\##\n#### ## ## ## #*###\n###L . ##\n#### ## ## ## ## #\n### # ## # # #\n### # ## # # #\n### # ## # # #\n###################\n\nAuthor ems_ (irc)\nHighscore 897\n","ems5v2":"###################\n#************* ##\n##***********# * ##\n###*********##.*.##\n####*******####*###\n#####*****#####*###\n######***######*###\n#######*#######*###\n###### * ######*###\n#\\ . #*###\n#\\ \\ #*###\n#\\ ** #*###\n#\\ ## #*###\n#\\ #*###\n#\\ \\ \\ #*###\n#\\ ** ** #*###\n#\\ ## ## #*###\n#\\ #*###\n#\\ \\ \\ \\ #*###\n#R ** ** ** #*\\##\n#### ## ## ## #*###\n#### . ##\n#### ## ## ## ## ##\n## ## # # # #\n## * L# #\\ # # *#\n## ## # \\ # ## #\n## #### # \\# \\# #\n###################\n\nAuthor ems_ (irc)\nHighscore 1144\n","ems6":"###########################\n#............R............#\n#.####.######L######.####.#\n#.####.#*#########*#.####.#\n#.####..\\#*******#\\..####.#\n#.######..\\\\\\\\\\\\\\..######.#\n#.####*######.######*####.#\n#.####\\.....#.#.....\\####.#\n#......####.#.#.####....#.#\n#####.#***#.#.#.#***#.#.#.#\n#......\\\\\\..#.#..\\\\\\..#.#.#\n#.#########*****#####.#.#.#\n#..........\\\\\\\\\\......#...#\n###########################\n\nAuthor ems_ (irc)\nWater 7\nWaterproof 42\nHighscore 1414\n","pacman":"###########################\n#............#............#\n#.####.#####.#.#####.####.#\n#\\# #.# #.#.# #.# #\\#\n#.####.#####.#.#####.####.#\n#.........................#\n#.####.#.#########.#.####.#\n#......#.....#.....#......#\n######.#####.#.#####.######\n #.# #.#\n######.# #### #### #.######\nL . # # . **\n######.# ######### #.######\n #.# #.#\n######.# ######### #.######\n#............#............#\n#.####.#####.#.#####.####.#\n#\\...#. R .#...\\#\n####.#.#.#########.#.#.####\n#......#.....#.....#......#\n#.##########.#.##########.#\n#.........................#\n###########################\n\nAuthor newsham (www.thenewsh.com/~newsham/x/pacman.map)\nHighscore 191\n","pacman2":"###########################\n#\\\\\\\\\\\\\\\\\\\\\\\\#\\\\\\\\\\\\\\\\\\\\\\\\#\n#\\####\\#####\\#\\#####\\####\\#\n#.# #\\# #\\#\\# #\\# #.#\n#\\####\\#####\\#\\#####\\####\\#\n#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\#\n#\\####\\#\\#########\\#\\####\\#\n#\\\\\\\\\\\\#\\\\\\\\\\#\\\\\\\\\\#\\\\\\\\\\\\#\n######\\#####\\#\\#####\\######\n #\\# #\\#\n######\\# #### #### #\\######\nL \\ # # \\ **\n######\\# ######### #\\######\n #\\# #\\#\n######\\# ######### #\\######\n#\\\\\\\\\\\\\\\\\\\\\\\\#\\\\\\\\\\\\\\\\\\\\\\\\#\n#\\####\\#####\\#\\#####\\####\\#\n#.\\\\\\#\\ R \\#\\\\\\.#\n####\\#\\#\\#########\\#\\#\\####\n#\\\\\\\\\\\\#\\\\\\\\\\#\\\\\\\\\\#\\\\\\\\\\\\#\n#\\##########\\#\\##########\\#\n#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\#\n###########################\n\nHighscore 15039\n"}; +var mineMaps = {"trampoline1":"############\n#..*.R..*..#\n#..A....B..######\n#....2.. ..#\\\\\\C#\n#......* *.#\\\\\\1#\n########L########\n\nTrampoline A targets 1\nTrampoline B targets 1\nTrampoline C targets 2\n","trampoline2":" ######\n #....#\n #.**.#\n #.**.#\n #.**.#\n######.\\\\.######\n#**....*.......#\n#\\\\....L\\\\\\....#\n#A......*****..#\n######R.....###########\n ###.....*.....\\\\\\#\n #\\\\\\\\#..1...\\\\\\#\n #\\\\\\\\#......\\\\\\#\n ################\n\nTrampoline A targets 1\n","trampoline3":"#######################################\n#****................#..1...\\\\\\\\\\\\\\B..#\n#R.......##############################\n#.. ..................................#\n#.. ........ \\ ......#\n#.. .*. ....**.*...#....... ..........#\n#.. ... ....\\\\\\\\...#.A..... ..........#\n#.. ... ....\\ .....#....... * \\\\..#\n#.. ... ....\\......#....... ..........#\n#.. ... ....\\......#....... ..........#\n#.. ... ...........#................**#\n#..\\\\\\\\\\...........#................\\\\#\n########### ############## ############\n#...*.................................#\n#....*.................. ......#\n#... .*....*.............. ..... .....#\n#....*2*........########.. ..... .....L\n#...*...*.......#\\\\\\#..... ...*.......#\n#.....\\\\\\.......#\\\\\\#....**..***......#\n#.... .......#\\\\\\#*................#\n#...............#\\\\\\#*...**...*.......#\n#...............#.....................#\n###### ############## ### #######\n#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\#\n#######################################\n\nTrampoline A targets 1\nTrampoline B targets 2\n\n","flood1":"###########\n#....R....#\n#.*******.#\n#.\\\\\\\\\\\\\\.#\n#. .#\n#..*\\\\\\*..#\n#.#*\\\\\\*#.#\n#########L#\n\nWater 1\nFlooding 8 \nWaterproof 5\nHighscore 945\n","flood2":"#######\n#..***#\n#..\\\\\\#\n#...**#\n#.*.*\\#\nLR....#\n#######\n\nFlooding 5\nWaterproof 3\nHighscore 281\n","flood3":"############\n#..........#\n#.....*....#\n#..\\\\\\\\\\\\..#\n#. ....#\n#..\\\\\\\\\\\\\\.#\n#..\\.. .#\n#..\\.. ....#\n#..... ..* #\n#..### ### #\n#...R#\\#\\\\.#\n######L#####\n\nWaterproof 10 \nFlooding 10\nWater 2\nHighscore 1303\n","flood4":"########################\n#.....................\\#\n#......*\\ ...........#\n#......*... ......* ...#\n#.. \\\\... .*..... ...#\n#.. ....... ....... ...#\n#.. ....... .\\\\.... ...# ######\n#. .... .....\\...# #\\\\\\\\#\n#\\\\\\......... .........# #....#\n########### R ########*#####\n #.......... ........***\\\\\\#\n #.......... ............**#\n #.......... ......... *.*\\#\n #....\\\\.... ....\\\\..... ..L\n #.....................****#\n #........\\*...............#\n #........... .........#\n #.........................#\n ###########################\n\nWater 1\nFlooding 20\nWaterproof 10\nHighscore 1592\n","flood5":"#########\n#.*..#\\.#\n#.\\..#\\.L\n#.R .##.#\n#.\\ ...#\n#..\\ ..#\n#...\\ ##\n#....\\ \\#\n#########\n\nWater 2\nFlooding 11\nWaterproof 5\nHighscore 575\n","contest1":"######\n#. *R#\n# \\.#\n#\\ * #\nL .\\#\n######\n\nHighscore 212\n","contest2":"#######\n#..***#\n#..\\\\\\#\n#...**#\n#.*.*\\#\nLR....#\n#######\n\nHighscore 281\n","contest3":"########\n#..R...#\n#..*...#\n#..#...#\n#.\\.\\..L\n####**.#\n#\\.....#\n#\\..* .#\n########\n\nHighscore 275\n","contest4":"#########\n#.*..#\\.#\n#.\\..#\\.L\n#.R .##.#\n#.\\ ...#\n#..\\ ..#\n#...\\ ##\n#....\\ \\#\n#########\n\nHighscore 575\n","contest5":"############\n#..........#\n#.....*....#\n#..\\\\\\\\\\\\..#\n#. ....#\n#..\\\\\\\\\\\\\\.#\n#..\\.. .#\n#..\\.. ....#\n#..... ..* #\n#..### ### #\n#...R#\\#\\\\.#\n######L#####\n\nHighscore 1303\n","contest6":"###############\n#\\\\\\.......** #\n#\\\\#.#####...##\n#\\\\#.....*##. #\n#\\#####\\...## #\n#\\......####* #\n#\\.######* #.\\#\n#\\.#. *...##.##\n#\\##. .. *...#\n#\\...... L#.#.#\n###########.#.#\n#\\..........#.#\n##.##########.#\n#R.#\\.........#\n###############\n\nHighscore 1177\n","contest7":" #######\n ## *#\n ##R *##\n ##\\\\\\\\##\n ##....##\n ##..\\ . ##\n ## . L . ##\n ##\\\\\\# #\\\\\\\\##\n ###### #######\n\nHighscore 869\n","contest8":"##############\n#\\\\... ......#\n###.#. ...*..#\n #.#. ... ..#\n### #. \\ ..#\n#. .#..... **#######\n#.#\\#..... ..\\\\\\*. #\n#*\\\\#.###. ####\\\\\\ #\n#\\\\.#. ...## \\ #\n#\\#.#..... ....# \\ # \n###.#..... ....# ##\n#\\\\.#..... ....#\\ # \n########.. ..###*####\n#......... .........#\n#......... ....***..#\n#..\\\\\\\\\\ # ####.....#\n#........*R..\\\\\\ .#\n##########L##########\n\nHighscore 1973\n","contest9":" #L#######\n #*** \\\\ #\n #\\\\\\ .. #\n#########.## ##########\n#.......\\ ..........* .#\n#*******\\......#....#\\\\ .#\n###\\.\\\\\\...**..#....... *#\n#*****\\\\ .\\\\..## #\\.#\n######### .... ##########\n # #\n ####*#### \n #.......#\n######### \\\\\\\\*##########\n#*\\\\ **# *..*\\ \\\\\\\\\\#\n#.\\**\\*** .....**.# \\\\##\\#\n#\\R...... .\\\\.. \\\\\\\\\\#\n##########################\n\nHighscore 3093\n","contest10":"#############################\n#..........................\\#\n#..\\\\###...#.... ###.#\n#..\\*\\\\\\.. #.... ..##\\\\..\\#.#\n#..\\*\\.... #.... ..#\\#....#.#\n#...\\###.. #.... ....#....#.#\n#... ..... ..... .####......#\n#\\\\. #.... .......#\n#... #..#. .....*\\ ##.......#\n#.#....... ...#.. ....######\n#. ...#... ...#.\\ ....#..* #\n##........ ...#.. #....#.#\\\\#\n#.....*... .....*\\#\\\\.....*.#\n#.***.* .......*\\****.....#.#\n#.\\\\\\.. ................ .#\n#.##### .###### ##### #\n#....\\\\.................... #\n#....****...#.##.....\\\\\\\\..\\#\n#....\\\\\\\\...#.........*....\\#\n#....\\\\\\\\...#.\\\\. #\\###.\\#\n#.... ..#.... ...#\\\\\\\\. #\n#........ ..#.... ...#..... #\n#........ ........#R#\n###########################L#\n\nHighscore 3634\n","ems1":"#######\n#L\\\\\\##\n##* ##\n##* ##\n##* ##\n##* ##\n##* ##\n##* ##\n##* ##\n##* ##\n##* ##\n## ##\n## ##\n##R ##\n## # ##\n#\\ # \\#\n## # ##\n## # ##\n## # ##\n## # ##\n#######\n\nAuthor ems_ (irc)\nHighscore 334\n","ems2":"#########\n###***###\n###***###\n###***###\n###***###\n###***###\n###***###\n# .**\\\\#\n# # #*#\\#\n# # #*#\\#\n# # #*#\\#\n# # #*#\\#\n# # #*#\\#\n# .#\\#\n### **#\n### R \\\\#\n### #L#\n### ###\n### ###\n### ###\n### ###\n### ###\n### ###\n#########\n\nAuthor ems_ (irc)\nHighscore 691\n","ems3":"################\n#\\.****####\\#*##\n#\\.\\\\\\\\.***...##\n##*####.#*###..#\n#\\.R....#...##\\#\n#\\ ####...#.#*.#\n#\\ **######.#..#\n##...\\\\\\\\\\\\...##\n#L.##########.##\n################\n\nAuthor ems_ (irc)\nHighscore 1199\n","ems3v2":"################\n#\\.****####\\#*##\n#\\.\\\\\\\\.***...##\n##*####.#*###..#\n#\\.R....#...##\\#\n#\\ ####...#.#*.#\n#\\ **######.#..#\n##...\\\\\\\\\\\\...##\n#L.#\\########.##\n################\n\nAuthor ems_ (irc)\nHighscore 1272\n","ems4":"#########\n#* L#\n#\\ #\n#\\\\ #\n##\\\\ #\n###\\\\ #\n####\\\\ #\n#####\\\\ #\n####### #\n# #*#*# #\n# * * #\n# #*#*# #\n# * * #\n# #*#*# #\n# R* * #\n# #*#*# #\n# * * #\n# #*#*# #\n# * * #\n# #*#*# #\n# * * #\n###*#*#.#\n#\\. . #\\#\n### # ###\n### # ###\n## # ##\n## # ##\n## # ##\n## # ##\n## # ##\n#########\n\nAuthor ems_ (irc)\nHighscore 908\n","ems5":"###################\n#************* ##\n##***********# * ##\n###*********##.*.##\n####*******####*###\n#####*****#####*###\n######***######*###\n#######*#######*###\n###### * ######*###\n#\\ . #*###\n#\\ \\ #*###\n#\\ ** #*###\n#\\ ## #*###\n#\\ #*###\n#\\ \\ \\ #*###\n#\\ ** ** #*###\n#\\ ## ## #*###\n#\\ #*###\n#\\ \\ \\ \\ #*###\n#R ** ** ** #*\\##\n#### ## ## ## #*###\n###L . ##\n#### ## ## ## ## #\n### # ## # # #\n### # ## # # #\n### # ## # # #\n###################\n\nAuthor ems_ (irc)\nHighscore 897\n","ems5v2":"###################\n#************* ##\n##***********# * ##\n###*********##.*.##\n####*******####*###\n#####*****#####*###\n######***######*###\n#######*#######*###\n###### * ######*###\n#\\ . #*###\n#\\ \\ #*###\n#\\ ** #*###\n#\\ ## #*###\n#\\ #*###\n#\\ \\ \\ #*###\n#\\ ** ** #*###\n#\\ ## ## #*###\n#\\ #*###\n#\\ \\ \\ \\ #*###\n#R ** ** ** #*\\##\n#### ## ## ## #*###\n#### . ##\n#### ## ## ## ## ##\n## ## # # # #\n## * L# #\\ # # *#\n## ## # \\ # ## #\n## #### # \\# \\# #\n###################\n\nAuthor ems_ (irc)\nHighscore 1144\n","ems6":"###########################\n#............R............#\n#.####.######L######.####.#\n#.####.#*#########*#.####.#\n#.####..\\#*******#\\..####.#\n#.######..\\\\\\\\\\\\\\..######.#\n#.####*######.######*####.#\n#.####\\.....#.#.....\\####.#\n#......####.#.#.####....#.#\n#####.#***#.#.#.#***#.#.#.#\n#......\\\\\\..#.#..\\\\\\..#.#.#\n#.#########*****#####.#.#.#\n#..........\\\\\\\\\\......#...#\n###########################\n\nAuthor ems_ (irc)\nWater 7\nWaterproof 42\nHighscore 1414\n","pacman":"###########################\n#............#............#\n#.####.#####.#.#####.####.#\n#\\# #.# #.#.# #.# #\\#\n#.####.#####.#.#####.####.#\n#.........................#\n#.####.#.#########.#.####.#\n#......#.....#.....#......#\n######.#####.#.#####.######\n #.# #.#\n######.# #### #### #.######\nL . # # . **\n######.# ######### #.######\n #.# #.#\n######.# ######### #.######\n#............#............#\n#.####.#####.#.#####.####.#\n#\\...#. R .#...\\#\n####.#.#.#########.#.#.####\n#......#.....#.....#......#\n#.##########.#.##########.#\n#.........................#\n###########################\n\nAuthor newsham (www.thenewsh.com/~newsham/x/pacman.map)\nHighscore 191\n","pacman2":"###########################\n#\\\\\\\\\\\\\\\\\\\\\\\\#\\\\\\\\\\\\\\\\\\\\\\\\#\n#\\####\\#####\\#\\#####\\####\\#\n#.# #\\# #\\#\\# #\\# #.#\n#\\####\\#####\\#\\#####\\####\\#\n#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\#\n#\\####\\#\\#########\\#\\####\\#\n#\\\\\\\\\\\\#\\\\\\\\\\#\\\\\\\\\\#\\\\\\\\\\\\#\n######\\#####\\#\\#####\\######\n #\\# #\\#\n######\\# #### #### #\\######\nL \\ # # \\ **\n######\\# ######### #\\######\n #\\# #\\#\n######\\# ######### #\\######\n#\\\\\\\\\\\\\\\\\\\\\\\\#\\\\\\\\\\\\\\\\\\\\\\\\#\n#\\####\\#####\\#\\#####\\####\\#\n#.\\\\\\#\\ R \\#\\\\\\.#\n####\\#\\#\\#########\\#\\#\\####\n#\\\\\\\\\\\\#\\\\\\\\\\#\\\\\\\\\\#\\\\\\\\\\\\#\n#\\##########\\#\\##########\\#\n#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\#\n###########################\n\nHighscore 15039\n"}; if (typeof exports !== "undefined") {exports.maps = mineMaps;} diff --git a/js/mine.js b/js/mine.js index 2d3d08b..9d845b3 100644 --- a/js/mine.js +++ b/js/mine.js @@ -2,14 +2,6 @@ var Mine = function() { var ALIVE = 0, LOST = 1, ABORTED = 2, WON = 3; - function defaultMeta() { - return { - Water: 0, - Flooding: 0, - Waterproof: 10, - } - } - function repeat(str, n) { return new Array(n+1).join(str); } @@ -45,7 +37,18 @@ var Mine = function() { this.moves = 0; this.score = 0; this.moves_below_water = 0; + this.water = { + level: 0, + flooding: 0, + proof: 10 + }; + this.lift = this.robot = false; + this.trampoline = { + sources: { }, // x, y and target + targets: { }, // x, y and sources + }; + this.trampoline.targets = {}; for (i = 0; i < height; ++i) { // padding if (map[i].length < width) map[i] += repeat(' ', width - map[i].length); @@ -70,6 +73,18 @@ var Mine = function() { if (this.robot !== false) throw "Only one robot is allowed"; this.robot = { x: x, y: i }; break; + default: + if (line[x] >= 'A' && line[x] <= 'I') { + if (this.trampoline.sources[line[x]]) throw "Can have only one trampoline " + line[x]; + this.trampoline.sources[line[x]] = { x: x, y: i, target: false }; + this.trampoline.fromSources + } else if (line[x] >= '1' && line[x] <= '9') { + if (this.trampoline.targets[line[x]]) throw "Can have only one trampoline target " + line[x]; + this.trampoline.targets[line[x]] = { x: x, y: i, sources: [] }; + } else { + throw "Invalid character in map: '" + line[x] + "'"; + } + break; } } } @@ -78,12 +93,49 @@ var Mine = function() { if (this.robot === false) throw "Need a robot"; // meta data - this.meta = defaultMeta(); + this.meta = {}; for (i = 0; i < lines.length; ++i) { if (0 == lines[i].length) continue; - pair = lines[i].split(/ +/); - this.meta[pair[0]] = pair.splice(1).join(" "); + var words = lines[i].split(/ +/); + switch (words[0]) { + case 'Water': + this.water.level = words[1]; + break; + case 'Flooding': + this.water.flooding = words[1]; + break; + case 'Waterproof': + this.water.proof = words[1]; + break; + case 'Trampoline': + if (words.length !== 4 || words[2] !== 'targets') + throw "Invalid trampoline: '" + words.join(" ") +"'"; + if (words[1].length != 1 || words[1] < 'A' || words[1] > 'I') + throw "Invalid trampoline source '" + words[1] +"'"; + if (words[3].length != 1 || words[3] < '1' || words[3] > '9') + throw "Invalid trampoline target '" + words[3] +"'"; + if (!this.trampoline.sources[words[1]]) throw "Trampoline " + words[1] + " not defined"; + if (!this.trampoline.targets[words[3]]) throw "Trampoline target " + words[3] + " not defined"; + if (this.trampoline.sources[words[1]].target) throw "Trampoline " + words[1] + " already has a target"; + this.trampoline.sources[words[1]].target = words[3]; + this.trampoline.targets[words[3]].sources.push(words[1]); + break; + default: + this.meta[words[0]] = words.splice(1).join(" "); + break; + } } + for (i in this.trampoline.sources) { + if (this.trampoline.sources.hasOwnProperty(i)) { + if (!this.trampoline.sources[i].target) throw "Trampoline " + i + " has no target"; + } + } + for (i in this.trampoline.targets) { + if (this.trampoline.targets.hasOwnProperty(i)) { + if (0 == this.trampoline.targets[i].sources.length) throw "Trampoline target " + i + " has no sources"; + } + } + this.water_level = this.water.level; this.state = ALIVE; }; @@ -94,7 +146,7 @@ var Mine = function() { Mine.prototype.validMove = function (command) { if (this.state != ALIVE) return false; - var n; + var n, c; command = command.toUpperCase(); switch (command) { case 'L': @@ -102,7 +154,8 @@ var Mine = function() { n = (command == 'L' ? -1 : 1); if (this.robot.x + n < 0) return false; if (this.robot.x + n >= this.width) return false; - switch (this.map[this.robot.y][this.robot.x+n]) { + c = this.map[this.robot.y][this.robot.x+n]; + switch (c) { case '#': return false; case ' ': case '.': @@ -113,6 +166,9 @@ var Mine = function() { if (this.robot.x + 2*n < 0) return false; if (this.robot.x + 2*n >= this.width) return false; if (' ' == this.map[this.robot.y][this.robot.x+2*n]) return true; + default: + if (this.trampoline.sources.hasOwnProperty(c)) return true; + break; } break; case 'U': @@ -120,7 +176,8 @@ var Mine = function() { n = (command == 'D' ? -1 : 1); if (this.robot.y + n < 0) return false; if (this.robot.y + n >= this.height) return false; - switch (this.map[this.robot.y+n][this.robot.x]) { + c = this.map[this.robot.y+n][this.robot.x]; + switch (c) { case '#': return false; case ' ': case '.': @@ -128,7 +185,10 @@ var Mine = function() { case 'L': return false; case 'O': return true; case '*': return false; - " style="} + default: + if (this.trampoline.sources.hasOwnProperty(c)) return true; + break; + } break; case 'W': case 'A': @@ -139,7 +199,7 @@ var Mine = function() { Mine.prototype.move = function(command) { if (this.state != ALIVE) return false; - var n; + var n, c, s, t; command = command.toUpperCase(); if (this.validMove(command)) { switch (command.toUpperCase()) { @@ -147,7 +207,8 @@ var Mine = function() { case 'R': n = (command == 'L' ? -1 : 1); this.map[this.robot.y][this.robot.x] = ' '; - switch (this.map[this.robot.y][this.robot.x+n]) { + c = this.map[this.robot.y][this.robot.x+n]; + switch (c) { case '*': this.map[this.robot.y][this.robot.x+2*n] = '*'; break; @@ -158,6 +219,18 @@ var Mine = function() { case 'O': this._foundLift(); break; + default: + if (this.trampoline.sources.hasOwnProperty(c)) { + s = this.trampoline.sources[c]; + t = this.trampoline.targets[s.target]; + for (n = 0; n < t.sources.length; ++n) { + s = this.trampoline.sources[t.sources[n]]; + this.map[s.y][s.x] = ' '; + } + this.robot.x = t.x; + this.robot.y = t.y; + n = 0; + } } this.robot.x += n; this.map[this.robot.y][this.robot.x] = 'R'; @@ -166,7 +239,8 @@ var Mine = function() { case 'D': n = (command == 'D' ? -1 : 1); this.map[this.robot.y][this.robot.x] = ' '; - switch (this.map[this.robot.y+n][this.robot.x]) { + c = this.map[this.robot.y+n][this.robot.x]; + switch (c) { case '\\': this.lambdas--; this.found_lambdas++; @@ -174,6 +248,18 @@ var Mine = function() { case 'O': this._foundLift(); break; + default: + if (this.trampoline.sources.hasOwnProperty(c)) { + s = this.trampoline.sources[c]; + t = this.trampoline.targets[s.target]; + for (n = 0; n < t.sources.length; ++n) { + s = this.trampoline.sources[t.sources[n]]; + this.map[s.y][s.x] = ' '; + } + this.robot.x = t.x; + this.robot.y = t.y; + n = 0; + } } this.robot.y += n; this.map[this.robot.y][this.robot.x] = 'R'; @@ -185,7 +271,9 @@ var Mine = function() { } this.moves++; if (0 == this.lambdas) { - if (false !== this.lift) this.map[this.lift.y][this.lift.x] = 'O'; + if (false !== this.lift && 'L' == this.map[this.lift.y][this.lift.x]) { + this.map[this.lift.y][this.lift.x] = 'O'; + } } var newMap = [], x, y, below; @@ -216,14 +304,14 @@ var Mine = function() { } this.map = newMap; - if (this.robot.y < this.meta['Water']) { + if (this.robot.y < this.water_level) { this.moves_below_water++; - if (this.moves_below_water > this.meta['Waterproof']) this._drown(); + if (this.moves_below_water > this.water.proof) this._drown(); } else { this.moves_below_water = 0; } - if (this.meta['Flooding'] > 0 && 0 == (this.moves % this.meta['Flooding'])) { - this.meta['Water']++; + if (this.water.flooding > 0 && 0 == (this.moves % this.water.flooding)) { + ++this.water_level; } switch (this.state) { @@ -274,12 +362,24 @@ var Mine = function() { Mine.prototype.metaText = function() { var k, keys = [], lines = []; + if (this.water.level != 0) lines.push("Water " + this.water.level); + if (this.water.flooding != 0) lines.push("Flooding " + this.water.flooding); + if (this.water.proof != 10) lines.push("Waterproof " + this.water.proof); + for (k in this.trampoline.sources) { + if (this.trampoline.sources.hasOwnProperty(k)) keys.push(k); + } + keys.sort(); + for (k = 0; k < keys.length; ++k) { + lines.push("Trampoline " + keys[k] + " targets " + this.trampoline.sources[keys[k]].target); + } + + keys = []; for (k in this.meta) { if (this.meta.hasOwnProperty(k)) keys.push(k); } keys.sort(); for (k = 0; k < keys.length; ++k) { - lines[k] = keys[k] + " " + this.meta[keys[k]]; + lines.push( keys[k] + " " + this.meta[keys[k]]); } return lines.join("\n"); }; diff --git a/js/sprites.png b/js/sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd40796f844036fdaa93011c692c52fc577db7c GIT binary patch literal 4903 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 Z{|7&(WV-V+JbeHF002ovPDHLkV1l1e$T|Q3 literal 0 HcmV?d00001 diff --git a/js/target.png b/js/target.png new file mode 100644 index 0000000000000000000000000000000000000000..d1cfc24c2974b1768b10478849e6d270031f8999 GIT binary patch literal 675 zcmV;U0$lxxP)F~^C_cF>MYW+gwMF6a>*Qjf6Ea@JzBR5%5%(Oc(H zWpM~^TTW=94o`f9WDbvzcvn>AR84j+8N8AV&mU!>&-fwR|9aVrtMTOPL;WPqgc`z8 zh-fN>=Y0Qt?Ds3&STm~)7uVejFY#U`O0teQrFz|Y;91wM*>}K7cK^az!qv{Nk-RZA z%)_hZ{JpKU+eK1x50`V-6Po8MZy$?XK(`tG;S;Cyn|_p9UHXE=Ov@{r|YPnau8# zaCd1i?6QRh{`RN0czPnEh(D+UWt-eGQiXR0{@WLM_nX06KX>OgA7P`*weFQm+(_fU z;EL)b1NKoovCz;`#9<7kL8e;9@(i5p#LHIa>vTHW{Q)-i z>z{Hf7J{b{$S^R#E|8#lU7HbH6kc{br8=qf0glX*gR|g0Dc~1r%@X50EkT27p?X+n z5DN&#<17gHz9djsFc1dl91KZ!5vXRQ?4(RZb|$vMM3n6a`5*7a0lo5tOdbFL002ov JPDHLkV1lWRQ91ws literal 0 HcmV?d00001 diff --git a/js/trampoline.png b/js/trampoline.png new file mode 100644 index 0000000000000000000000000000000000000000..f11fecbf6452602816ee61f5f26bbc525908f5c5 GIT binary patch literal 609 zcmV-n0-pVeP){7jIlf`SU}w_s63qfsQGiG&p?15m^fi@_LjrevEk z#R3-ZDR1ArT}jvau9Z%G26E7GsmGz-D)seS*8?WdTaEQVe17ok(!HyUIDhM0s~d3u zWni3}Pj9|*%KpKNySM*QY8lfkj-T($Z=8R4;amJt>J&>U3LqIPBAwZ`e|~!U@8RNT zKD#d;UcI~g@Y?jzU(3k}L<%aB2Lq@}xfBGj)AiZqlg}TXzO!rF<7v|dqE_T3Mn}$W z0XeL4ZgooTW1BX3*0#5ui@C{PqJ&)M*$U@4cKo_?rfQW4zTQGxR`m zRlhOoqjtSHIo^9&f+woA(Addr=jy@X{(nshKGY=EYkW-nSxT}sn_)!^TGgq`7!<)Z6$T96f$(c#!8?AsYbpeT viiH9RRBg%Gfs!o>L~=$45Y?Qc0fGMk^s)(qVbiEL00000NkvXXu0mjf`~)C9 literal 0 HcmV?d00001 diff --git a/maps/ems6.map b/maps/ems6.map new file mode 100644 index 0000000..7e2d78c --- /dev/null +++ b/maps/ems6.map @@ -0,0 +1,19 @@ +########################### +#............R............# +#.####.######L######.####.# +#.####.#*#########*#.####.# +#.####..\#*******#\..####.# +#.######..\\\\\\\..######.# +#.####*######.######*####.# +#.####\.....#.#.....\####.# +#......####.#.#.####....#.# +#####.#***#.#.#.#***#.#.#.# +#......\\\..#.#..\\\..#.#.# +#.#########*****#####.#.#.# +#..........\\\\\......#...# +########################### + +Author ems_ (irc) +Water 7 +Waterproof 42 +Highscore 1414 diff --git a/maps/solutions.txt b/maps/solutions.txt index 50ae872..9993a52 100644 --- a/maps/solutions.txt +++ b/maps/solutions.txt @@ -1,3 +1,5 @@ +trampoline1: RRLDDRRRRUULLDLLLURRRRRRDD (424) + flood1: LLLLDDRRLDRRDRRDLLUUURRRRRDDDD (945) flood2: RRUDRRULURULLLLDDDL (281) flood3: LLUURUUURUULRRRRRRRDDDDDDDLLRRUUUUULLLLLRDDDDDD (1303) diff --git a/maps/trampoline1.map b/maps/trampoline1.map new file mode 100644 index 0000000..c03b5bf --- /dev/null +++ b/maps/trampoline1.map @@ -0,0 +1,10 @@ +############ +#..*.R..*..# +#..A....B..###### +#....2.. ..#\\\C# +#......* *.#\\\1# +########L######## + +Trampoline A targets 1 +Trampoline B targets 1 +Trampoline C targets 2 diff --git a/maps/trampoline2.map b/maps/trampoline2.map new file mode 100644 index 0000000..f628a4b --- /dev/null +++ b/maps/trampoline2.map @@ -0,0 +1,16 @@ + ###### + #....# + #.**.# + #.**.# + #.**.# +######.\\.###### +#**....*.......# +#\\....L\\\....# +#A......*****..# +######R.....########### + ###.....*.....\\\# + #\\\\#..1...\\\# + #\\\\#......\\\# + ################ + +Trampoline A targets 1 diff --git a/maps/trampoline3.map b/maps/trampoline3.map new file mode 100644 index 0000000..58cb0e7 --- /dev/null +++ b/maps/trampoline3.map @@ -0,0 +1,29 @@ +####################################### +#****................#..1...\\\\\\\B..# +#R.......############################## +#.. ..................................# +#.. ........ \ ......# +#.. .*. ....**.*...#....... ..........# +#.. ... ....\\\\...#.A..... ..........# +#.. ... ....\ .....#....... * \\..# +#.. ... ....\......#....... ..........# +#.. ... ....\......#....... ..........# +#.. ... ...........#................**# +#..\\\\\...........#................\\# +########### ############## ############ +#...*.................................# +#....*.................. ......# +#... .*....*.............. ..... .....# +#....*2*........########.. ..... .....L +#...*...*.......#\\\#..... ...*.......# +#.....\\\.......#\\\#....**..***......# +#.... .......#\\\#*................# +#...............#\\\#*...**...*.......# +#...............#.....................# +###### ############## ### ####### +#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\# +####################################### + +Trampoline A targets 1 +Trampoline B targets 2 + diff --git a/specs/images/bricks.bmp b/specs/images/bricks.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bf27a8f347ad3e043ad373a452405fedd7d426ed GIT binary patch literal 1146 zcmZ?rtzuySgDN1I1H=MQ%*dd?zzmWB$_sHrFo+8Q{}~t{2*mx*2o(iU#IQl?_U+sE zpAxL4we&wW3^N;>97t@i$W!8XkY1So28(}S?m?$-7{KUn+& K3qN!km-_%(Q9Y~x literal 0 HcmV?d00001 diff --git a/specs/images/lambda.bmp b/specs/images/lambda.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8e7531129049df2932fe9d94e9933b990c1d473a GIT binary patch literal 1146 zcmZ?rtzuySgDN1I1H=MQ%*dd?zzmWB$_sHrFo+8Q{}~t{2*mx*2o(iU#ITW+Q^x%N z|33p111X@32mmDYaFs}6c+J444xb#zB0}=`)DWW=<{5Og=zN$ud^D0Cn7e^Ogu@ou dOe8Z#^&$rh7B(ee1u_n*pX6}H;uLxc0RUTh?u`Hd literal 0 HcmV?d00001 diff --git a/specs/images/lift.bmp b/specs/images/lift.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c40df88aeb175461aaaa6a4ecf655d3f0c075c5b GIT binary patch literal 1146 zcmZ?rtzuySgDN1I1H=MQ%*dd?zzmWB$_sHrFo+8Q{}~t{2*mx*2o(iU#IRw?yMcPK zVURq?cx-YYu~Gey5Wp8cBO&}?>401s6h`D?ke#@~pBQnN{{Kh-qz?p;X=Jltav(8e c{n*ri4T72llP6U_OdpIURX?&DU~HHf03?-&IRF3v literal 0 HcmV?d00001 diff --git a/specs/images/miner.bmp b/specs/images/miner.bmp new file mode 100644 index 0000000000000000000000000000000000000000..becd98c76b9abc3838c619077b55999ec6eb28bd GIT binary patch literal 1146 zcmds#y$!-Z422y*M}wGvI%CkY2@_-=id%phYKD6F<<61`*j!ppdFS8nMUiqkPg|MK zr1wR&ZyMw%8%}h7*j2Ht2O{-hiJ^5FdUCh^m+9jMP-{QVxMl3|F=iaE@Us3d58I34 z8vc0)DDRc=elN=-56|$owA$zFMLhe)L@{Fp>fNKrWWknFKz(>dJp0XqoSiq1jJ279 OUwNB%MtaQePWE4{hCHtT literal 0 HcmV?d00001 diff --git a/specs/images/openlift.bmp b/specs/images/openlift.bmp new file mode 100644 index 0000000000000000000000000000000000000000..388d04997738597dd32fbd31b58514aefc0fd057 GIT binary patch literal 1146 zcmZ?rtzuySgDN1I1H=MQ%*dd?zzmWB$_sHrFo+8Q{}~t{2*mx*2o(iU#IRw?yTPWw zc*M~NYZ(|u^@C!8G%%dPk2IfSss@Dxxfo;`DE*O(Vfz0g0gzcBfJ`Hs50e9lA?wGc a25b=2ESNm0`eFKDG^zTL-2h|5%m4tbi|@<; literal 0 HcmV?d00001 diff --git a/specs/images/rock.bmp b/specs/images/rock.bmp new file mode 100644 index 0000000000000000000000000000000000000000..258cb9d643007cb5421bfd592f332b3578170bf3 GIT binary patch literal 1146 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 literal 0 HcmV?d00001