From 3f5492b2bb67326be43cd7c5ba02ccf0ba1ae0e3 Mon Sep 17 00:00:00 2001 From: Justin Wernick Date: Tue, 19 Apr 2022 21:27:56 +0200 Subject: Refile for merging repos --- .gitignore | 3 - 2019-worms/.gitignore | 3 + 2019-worms/Cargo.lock | 299 + 2019-worms/Cargo.toml | 23 + 2019-worms/Makefile | 16 + 2019-worms/README.md | 81 + 2019-worms/bot.json | 8 + 2019-worms/src/bin/benchmark.rs | 22 + 2019-worms/src/bin/explore-config.rs | 116 + 2019-worms/src/command.rs | 73 + 2019-worms/src/constants.rs | 218 + 2019-worms/src/constants/lava.rs | 6225 ++++++++++++++++++++ 2019-worms/src/game.rs | 779 +++ 2019-worms/src/game/map.rs | 49 + 2019-worms/src/game/player.rs | 259 + 2019-worms/src/game/powerup.rs | 6 + 2019-worms/src/geometry.rs | 6 + 2019-worms/src/geometry/direction.rs | 67 + 2019-worms/src/geometry/point.rs | 37 + 2019-worms/src/geometry/vec.rs | 62 + 2019-worms/src/json.rs | 554 ++ 2019-worms/src/lib.rs | 8 + 2019-worms/src/main.rs | 46 + 2019-worms/src/strategy.rs | 5 + 2019-worms/src/strategy/minimax.rs | 330 ++ 2019-worms/tests/example-state.json | 1 + 2019-worms/tests/import-replay.sh | 12 + 2019-worms/tests/official-runner-matching.rs | 238 + .../tests/replays/2019.08.19.21.15.02/A-init.json | 1 + .../tests/replays/2019.08.19.21.15.02/A-log.csv | 298 + .../tests/replays/2019.08.19.21.15.02/B-init.json | 1 + .../tests/replays/2019.08.19.21.15.02/B-log.csv | 298 + .../tests/replays/2019.08.19.21.31.16/A-init.json | 1 + .../tests/replays/2019.08.19.21.31.16/A-log.csv | 274 + .../tests/replays/2019.08.19.21.31.16/B-init.json | 1 + .../tests/replays/2019.08.19.21.31.16/B-log.csv | 274 + .../tests/replays/2019.08.19.21.57.04/A-init.json | 1 + .../tests/replays/2019.08.19.21.57.04/A-log.csv | 214 + .../tests/replays/2019.08.19.21.57.04/B-init.json | 1 + .../tests/replays/2019.08.19.21.57.04/B-log.csv | 214 + 2019-worms/tests/strategy.rs | 27 + Cargo.lock | 299 - Cargo.toml | 23 - Makefile | 16 - README.md | 81 - bot.json | 8 - src/bin/benchmark.rs | 22 - src/bin/explore-config.rs | 116 - src/command.rs | 73 - src/constants.rs | 218 - src/constants/lava.rs | 6225 -------------------- src/game.rs | 779 --- src/game/map.rs | 49 - src/game/player.rs | 259 - src/game/powerup.rs | 6 - src/geometry.rs | 6 - src/geometry/direction.rs | 67 - src/geometry/point.rs | 37 - src/geometry/vec.rs | 62 - src/json.rs | 554 -- src/lib.rs | 8 - src/main.rs | 46 - src/strategy.rs | 5 - src/strategy/minimax.rs | 330 -- tests/example-state.json | 1 - tests/import-replay.sh | 12 - tests/official-runner-matching.rs | 238 - tests/replays/2019.08.19.21.15.02/A-init.json | 1 - tests/replays/2019.08.19.21.15.02/A-log.csv | 298 - tests/replays/2019.08.19.21.15.02/B-init.json | 1 - tests/replays/2019.08.19.21.15.02/B-log.csv | 298 - tests/replays/2019.08.19.21.31.16/A-init.json | 1 - tests/replays/2019.08.19.21.31.16/A-log.csv | 274 - tests/replays/2019.08.19.21.31.16/B-init.json | 1 - tests/replays/2019.08.19.21.31.16/B-log.csv | 274 - tests/replays/2019.08.19.21.57.04/A-init.json | 1 - tests/replays/2019.08.19.21.57.04/A-log.csv | 214 - tests/replays/2019.08.19.21.57.04/B-init.json | 1 - tests/replays/2019.08.19.21.57.04/B-log.csv | 214 - tests/strategy.rs | 27 - 80 files changed, 11148 insertions(+), 11148 deletions(-) delete mode 100644 .gitignore create mode 100644 2019-worms/.gitignore create mode 100644 2019-worms/Cargo.lock create mode 100644 2019-worms/Cargo.toml create mode 100644 2019-worms/Makefile create mode 100644 2019-worms/README.md create mode 100644 2019-worms/bot.json create mode 100644 2019-worms/src/bin/benchmark.rs create mode 100644 2019-worms/src/bin/explore-config.rs create mode 100644 2019-worms/src/command.rs create mode 100644 2019-worms/src/constants.rs create mode 100644 2019-worms/src/constants/lava.rs create mode 100644 2019-worms/src/game.rs create mode 100644 2019-worms/src/game/map.rs create mode 100644 2019-worms/src/game/player.rs create mode 100644 2019-worms/src/game/powerup.rs create mode 100644 2019-worms/src/geometry.rs create mode 100644 2019-worms/src/geometry/direction.rs create mode 100644 2019-worms/src/geometry/point.rs create mode 100644 2019-worms/src/geometry/vec.rs create mode 100644 2019-worms/src/json.rs create mode 100644 2019-worms/src/lib.rs create mode 100644 2019-worms/src/main.rs create mode 100644 2019-worms/src/strategy.rs create mode 100644 2019-worms/src/strategy/minimax.rs create mode 100644 2019-worms/tests/example-state.json create mode 100755 2019-worms/tests/import-replay.sh create mode 100644 2019-worms/tests/official-runner-matching.rs create mode 100644 2019-worms/tests/replays/2019.08.19.21.15.02/A-init.json create mode 100644 2019-worms/tests/replays/2019.08.19.21.15.02/A-log.csv create mode 100644 2019-worms/tests/replays/2019.08.19.21.15.02/B-init.json create mode 100644 2019-worms/tests/replays/2019.08.19.21.15.02/B-log.csv create mode 100644 2019-worms/tests/replays/2019.08.19.21.31.16/A-init.json create mode 100644 2019-worms/tests/replays/2019.08.19.21.31.16/A-log.csv create mode 100644 2019-worms/tests/replays/2019.08.19.21.31.16/B-init.json create mode 100644 2019-worms/tests/replays/2019.08.19.21.31.16/B-log.csv create mode 100644 2019-worms/tests/replays/2019.08.19.21.57.04/A-init.json create mode 100644 2019-worms/tests/replays/2019.08.19.21.57.04/A-log.csv create mode 100644 2019-worms/tests/replays/2019.08.19.21.57.04/B-init.json create mode 100644 2019-worms/tests/replays/2019.08.19.21.57.04/B-log.csv create mode 100644 2019-worms/tests/strategy.rs delete mode 100644 Cargo.lock delete mode 100644 Cargo.toml delete mode 100644 Makefile delete mode 100644 README.md delete mode 100644 bot.json delete mode 100644 src/bin/benchmark.rs delete mode 100644 src/bin/explore-config.rs delete mode 100644 src/command.rs delete mode 100644 src/constants.rs delete mode 100644 src/constants/lava.rs delete mode 100644 src/game.rs delete mode 100644 src/game/map.rs delete mode 100644 src/game/player.rs delete mode 100644 src/game/powerup.rs delete mode 100644 src/geometry.rs delete mode 100644 src/geometry/direction.rs delete mode 100644 src/geometry/point.rs delete mode 100644 src/geometry/vec.rs delete mode 100644 src/json.rs delete mode 100644 src/lib.rs delete mode 100644 src/main.rs delete mode 100644 src/strategy.rs delete mode 100644 src/strategy/minimax.rs delete mode 100644 tests/example-state.json delete mode 100755 tests/import-replay.sh delete mode 100644 tests/official-runner-matching.rs delete mode 100644 tests/replays/2019.08.19.21.15.02/A-init.json delete mode 100644 tests/replays/2019.08.19.21.15.02/A-log.csv delete mode 100644 tests/replays/2019.08.19.21.15.02/B-init.json delete mode 100644 tests/replays/2019.08.19.21.15.02/B-log.csv delete mode 100644 tests/replays/2019.08.19.21.31.16/A-init.json delete mode 100644 tests/replays/2019.08.19.21.31.16/A-log.csv delete mode 100644 tests/replays/2019.08.19.21.31.16/B-init.json delete mode 100644 tests/replays/2019.08.19.21.31.16/B-log.csv delete mode 100644 tests/replays/2019.08.19.21.57.04/A-init.json delete mode 100644 tests/replays/2019.08.19.21.57.04/A-log.csv delete mode 100644 tests/replays/2019.08.19.21.57.04/B-init.json delete mode 100644 tests/replays/2019.08.19.21.57.04/B-log.csv delete mode 100644 tests/strategy.rs diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 791452f..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -target -**/*.rs.bk -submission.zip diff --git a/2019-worms/.gitignore b/2019-worms/.gitignore new file mode 100644 index 0000000..791452f --- /dev/null +++ b/2019-worms/.gitignore @@ -0,0 +1,3 @@ +target +**/*.rs.bk +submission.zip diff --git a/2019-worms/Cargo.lock b/2019-worms/Cargo.lock new file mode 100644 index 0000000..f5c96f0 --- /dev/null +++ b/2019-worms/Cargo.lock @@ -0,0 +1,299 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "arrayvec" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cfg-if" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "crossbeam-deque" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-queue" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-utils" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "either" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fnv" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "itoa" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "lazy_static" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libc" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memoffset" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "nodrop" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "num-traits" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "num_cpus" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro2" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quote" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rayon" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rayon-core" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_syscall" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ryu" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "scopeguard" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "serde" +version = "1.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_derive" +version = "1.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_json" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "steam-powered-wyrm" +version = "1.0.0" +dependencies = [ + "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "syn" +version = "0.15.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "time" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[metadata] +"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" +"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" +"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" +"checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" +"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" +"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" +"checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" +"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" +"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" +"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" +"checksum libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "bedcc7a809076656486ffe045abeeac163da1b558e963a31e29fbfbeba916917" +"checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" +"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" +"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" +"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" +"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" +"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" +"checksum rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4b0186e22767d5b9738a05eab7c6ac90b15db17e5b5f9bd87976dd7d89a10a4" +"checksum rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbe0df8435ac0c397d467b6cad6d25543d06e8a019ef3f6af3c384597515bd2" +"checksum redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)" = "12229c14a0f65c4f1cb046a3b52047cdd9da1f4b30f8a39c5063c8bae515e252" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" +"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +"checksum serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)" = "aa5f7c20820475babd2c077c3ab5f8c77a31c15e16ea38687b4c02d3e48680f4" +"checksum serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)" = "58fc82bec244f168b23d1963b45c8bf5726e9a15a9d146a067f9081aeed2de79" +"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" +"checksum syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b4cfac95805274c6afdb12d8f770fa2d27c045953e7b630a81801953699a9a" +"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" +"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" +"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/2019-worms/Cargo.toml b/2019-worms/Cargo.toml new file mode 100644 index 0000000..e7e33fc --- /dev/null +++ b/2019-worms/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "steam-powered-wyrm" +version = "1.0.0" +edition = "2018" + +[dependencies] +serde = { version = "1.0.90", features = ["derive"] } +serde_json = "1.0.39" +time = "0.1.42" +num-traits = "0.2.6" +arrayvec = "0.4.10" +fnv = "1.0.6" +rayon = "1.1.0" + +[profile.release] +# debug = true +# debug-assertions = true +# overflow-checks = true + +[features] +logging = [] + +default = [] diff --git a/2019-worms/Makefile b/2019-worms/Makefile new file mode 100644 index 0000000..3f3b532 --- /dev/null +++ b/2019-worms/Makefile @@ -0,0 +1,16 @@ +build: + cargo build --release + +test: + cargo test --release + +profile: + cargo flamegraph --bin benchmark + +clean: + cargo clean + +submission.zip: + zip --filesync -r9 submission.zip bot.json Cargo.lock Cargo.toml src + +.PHONY: build test profile clean submission.zip diff --git a/2019-worms/README.md b/2019-worms/README.md new file mode 100644 index 0000000..a0c3008 --- /dev/null +++ b/2019-worms/README.md @@ -0,0 +1,81 @@ +# Steam Powered Wyrm + +This is an entry to the 2019 Entelect Challenge. + +## Environment Setup + +The Rust compiler toolchain can be downloaded from the Rust project +website. + +https://www.rust-lang.org/en-US/install.html + +The project requires these versions of the toolchain (or later). + +- cargo 1.34.0 +- rustc 1.34.0 + +## Building + +Rust's official build tool is called Cargo. It will download +dependencies and call the Rust compiler as required. Dependencies are +configured in [Cargo.toml](./Cargo.toml). + +Cargo needs to be called from the root of the bot (the folder with the +Cargo.toml file). + +```sh +cargo build --release +``` + +## Running Tests + +Rust has support for unit testing built into the language. Any +functions marked with the `#[test]` annotation are considered tests. + +Tests can be run using Cargo: + +```sh +cargo test +``` + +More information on how to write tests is available in +[The Rust Programming Language](https://doc.rust-lang.org/book/ch11-00-testing.html). + +## Exporting the compiled executable + +By default, Rust produces statically linked binaries, so you can just +copy out the executable file from the target directory and put it +wherever you want. + +The name of the binary will match the name of the binary crate in +Cargo.toml. + +Note: This binary has been built for the platform that it was compiled +on. In other words, if it was compiled on 64 bit Linux, you cannot +copy the binary to a Windows machine and run it. You WILL be able to +copy the binary between similar 64 bit Linux machines. + +The machine that the compiled binary is run on does not need to have +the Rust toolchain installed. + +```sh +cp ./target/release/ +``` + +## Running + +The compiled binary can be executed directly. + +```sh +./target/release/ +``` + +For convenience in development, you can compile and run through Cargo. + +Note: This is not recommended for the tournament servers, since there +is a small runtime cost in Cargo checking that the compiled binary is +up to date before running it. + +```sh +cargo run --release +``` diff --git a/2019-worms/bot.json b/2019-worms/bot.json new file mode 100644 index 0000000..5578730 --- /dev/null +++ b/2019-worms/bot.json @@ -0,0 +1,8 @@ +{ + "author": "Justin Wernick", + "email": "justin@worthe-it.co.za", + "nickName": "Steam Powered Wyrm", + "botLocation": "/target/release/", + "botFileName": "steam-powered-wyrm", + "botLanguage": "rust" +} diff --git a/2019-worms/src/bin/benchmark.rs b/2019-worms/src/bin/benchmark.rs new file mode 100644 index 0000000..84e869e --- /dev/null +++ b/2019-worms/src/bin/benchmark.rs @@ -0,0 +1,22 @@ +use std::path::Path; + +use time::{Duration, PreciseTime}; + +use steam_powered_wyrm::game; +use steam_powered_wyrm::json; +use steam_powered_wyrm::strategy::{choose_move, ScoreConfig}; + +fn main() { + let max_time = Duration::milliseconds(19950); + let start_time = PreciseTime::now(); + + match json::read_state_from_json_file(&Path::new(&format!("./tests/example-state.json"))) { + Ok(json_state) => { + let new_board = game::GameBoard::new(json_state); + let _ = choose_move(&new_board, &ScoreConfig::default(), start_time, max_time); + } + Err(e) => { + eprintln!("WARN: State file could not be parsed: {}", e); + } + }; +} diff --git a/2019-worms/src/bin/explore-config.rs b/2019-worms/src/bin/explore-config.rs new file mode 100644 index 0000000..5fb599a --- /dev/null +++ b/2019-worms/src/bin/explore-config.rs @@ -0,0 +1,116 @@ +use std::path::Path; + +use rayon::prelude::*; + +use steam_powered_wyrm::game; +use steam_powered_wyrm::json; +use steam_powered_wyrm::strategy::{choose_move_with_normalized_perf, ScoreConfig}; + +fn main() { + let initial_state = game::GameBoard::new( + json::read_state_from_json_file(&Path::new(&format!("./tests/example-state.json"))) + .unwrap(), + ); + let depth = 1000; + + let configs = ScoreConfigTrials { + max_health_weight: vec![50., 150.], + total_health_weight: vec![5., 20.], + points_weight: vec![1.], + victory_weight: vec![3000., 3500., 4000., 4500., 5000., 5500., 6000., 7000.], + snowball_weight: vec![10.], + bomb_weight: vec![0.], + explore_exploit_weight: vec![10., 500.], + } + .reify(); + + eprintln!("{} configs being tested", configs.len()); + + let mut victories = vec![0; configs.len()]; + + for i in 0..configs.len() { + eprintln!("Progress: {} of {}", i, configs.len()); + + let outcomes: Vec<(usize, game::SimulationOutcome)> = (i + 1..configs.len()) + .collect::>() + .par_iter() + .map(|j| { + let mut state = initial_state.clone(); + + while state.outcome == game::SimulationOutcome::Continue { + let commands = [ + choose_move_with_normalized_perf(&state, &configs[i], 0, depth), + choose_move_with_normalized_perf(&state, &configs[*j], 1, depth), + ]; + state.simulate(commands); + } + + (*j, state.outcome) + }) + .collect(); + for (j, outcome) in outcomes { + match outcome { + game::SimulationOutcome::PlayerWon(0) => victories[i] += 1, + game::SimulationOutcome::PlayerWon(1) => victories[j] += 1, + _ => {} + }; + } + } + + println!("victories, max_health_weight, total_health_weight, points_weight, victory_weight, snowball_weight, bomb_weight, explore_exploit_weight"); + + for (config, victories) in configs.into_iter().zip(victories.iter()) { + println!( + "{}, {}, {}, {}, {}, {}, {}, {}", + victories, + config.max_health_weight, + config.total_health_weight, + config.points_weight, + config.victory_weight, + config.snowball_weight, + config.bomb_weight, + config.explore_exploit_weight + ); + } +} + +pub struct ScoreConfigTrials { + pub max_health_weight: Vec, + pub total_health_weight: Vec, + pub points_weight: Vec, + pub victory_weight: Vec, + pub snowball_weight: Vec, + pub bomb_weight: Vec, + pub explore_exploit_weight: Vec, +} + +impl ScoreConfigTrials { + fn reify(self) -> Vec { + let mut result = Vec::new(); + for max_health_weight in &self.max_health_weight { + for total_health_weight in &self.total_health_weight { + for points_weight in &self.points_weight { + for victory_weight in &self.victory_weight { + for snowball_weight in &self.snowball_weight { + for bomb_weight in &self.bomb_weight { + for explore_exploit_weight in &self.explore_exploit_weight { + result.push(ScoreConfig { + max_health_weight: *max_health_weight, + total_health_weight: *total_health_weight, + points_weight: *points_weight, + victory_weight: *victory_weight, + snowball_weight: *snowball_weight, + bomb_weight: *bomb_weight, + explore_exploit_weight: *explore_exploit_weight, + }); + } + } + } + } + } + } + } + + result + } +} diff --git a/2019-worms/src/command.rs b/2019-worms/src/command.rs new file mode 100644 index 0000000..c6d6695 --- /dev/null +++ b/2019-worms/src/command.rs @@ -0,0 +1,73 @@ +use crate::geometry::Direction; +use crate::geometry::Point2d; +use std::fmt; + +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] +pub struct Command { + pub worm: Option, + pub action: Action, +} + +impl fmt::Display for Command { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self.worm { + Some(worm) => write!(f, "select {};{}", worm, self.action), + None => write!(f, "{}", self.action), + } + } +} + +impl Command { + pub fn with_select(worm: i32, action: Action) -> Command { + Command { + worm: Some(worm), + action, + } + } + + pub fn new(action: Action) -> Command { + Command { worm: None, action } + } +} + +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] +pub enum Action { + Move(Point2d), + Dig(Point2d), + Shoot(Direction), + Bomb(Point2d), + Snowball(Point2d), + DoNothing, +} + +impl fmt::Display for Action { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + use Action::*; + match self { + Move(p) => write!(f, "move {} {}", p.x, p.y), + Dig(p) => write!(f, "dig {} {}", p.x, p.y), + Shoot(dir) => write!(f, "shoot {}", dir), + Bomb(p) => write!(f, "banana {} {}", p.x, p.y), + Snowball(p) => write!(f, "snowball {} {}", p.x, p.y), + DoNothing => write!(f, "nothing"), + } + } +} + +impl Action { + pub fn is_attack(&self) -> bool { + use Action::*; + match self { + Shoot(_) | Bomb(_) => true, + _ => false, + } + } + + pub fn is_snowball(&self) -> bool { + use Action::*; + match self { + Snowball(_) => true, + _ => false, + } + } +} diff --git a/2019-worms/src/constants.rs b/2019-worms/src/constants.rs new file mode 100644 index 0000000..3f36db4 --- /dev/null +++ b/2019-worms/src/constants.rs @@ -0,0 +1,218 @@ +use crate::geometry::Vec2d; + +pub mod lava; +pub use self::lava::*; + +pub const MAP_SIZE: usize = 33; +pub const MAP_ROW_SIZE: [MapRow; MAP_SIZE] = [ + MapRow { + start_bit: 0, + x_offset: 11, + }, + MapRow { + start_bit: 11, + x_offset: 8, + }, + MapRow { + start_bit: 28, + x_offset: 7, + }, + MapRow { + start_bit: 47, + x_offset: 6, + }, + MapRow { + start_bit: 68, + x_offset: 4, + }, + MapRow { + start_bit: 93, + x_offset: 4, + }, + MapRow { + start_bit: 118, + x_offset: 3, + }, + MapRow { + start_bit: 145, + x_offset: 2, + }, + MapRow { + start_bit: 174, + x_offset: 1, + }, + MapRow { + start_bit: 205, + x_offset: 1, + }, + MapRow { + start_bit: 236, + x_offset: 1, + }, + MapRow { + start_bit: 267, + x_offset: 0, + }, + MapRow { + start_bit: 300, + x_offset: 0, + }, + MapRow { + start_bit: 333, + x_offset: 0, + }, + MapRow { + start_bit: 366, + x_offset: 0, + }, + MapRow { + start_bit: 399, + x_offset: 0, + }, + MapRow { + start_bit: 432, + x_offset: 0, + }, + MapRow { + start_bit: 465, + x_offset: 0, + }, + MapRow { + start_bit: 498, + x_offset: 0, + }, + MapRow { + start_bit: 531, + x_offset: 0, + }, + MapRow { + start_bit: 564, + x_offset: 0, + }, + MapRow { + start_bit: 597, + x_offset: 0, + }, + MapRow { + start_bit: 630, + x_offset: 1, + }, + MapRow { + start_bit: 661, + x_offset: 1, + }, + MapRow { + start_bit: 692, + x_offset: 1, + }, + MapRow { + start_bit: 723, + x_offset: 2, + }, + MapRow { + start_bit: 752, + x_offset: 3, + }, + MapRow { + start_bit: 779, + x_offset: 4, + }, + MapRow { + start_bit: 804, + x_offset: 4, + }, + MapRow { + start_bit: 829, + x_offset: 6, + }, + MapRow { + start_bit: 850, + x_offset: 7, + }, + MapRow { + start_bit: 869, + x_offset: 8, + }, + MapRow { + start_bit: 886, + x_offset: 11, + }, +]; +pub const MAP_BITSIZE: usize = 897; +pub const MAP_U64S: usize = 15; + +pub struct MapRow { + pub start_bit: usize, + pub x_offset: usize, +} + +impl MapRow { + pub fn len(&self) -> usize { + MAP_SIZE - 2 * self.x_offset + } + + pub fn is_empty(&self) -> bool { + self.len() == 0 + } +} + +pub const HEALTH_PACK_VALUE: i32 = 10; + +pub const SHOOT_RANGE: i8 = 4; +pub const SHOOT_RANGE_DIAGONAL: i8 = 3; +pub const SHOOT_DAMAGE: i32 = 8; + +pub const BOMB_RANGE: i8 = 5; +pub const BOMB_DAMAGED_SPACES: usize = 13; +pub const BOMB_DAMAGE_RANGE: i8 = 2; +pub const BOMB_DAMAGES: [(Vec2d, i32); BOMB_DAMAGED_SPACES] = [ + (Vec2d::new(0, -2), 7), + (Vec2d::new(2, 0), 7), + (Vec2d::new(0, 2), 7), + (Vec2d::new(-2, 0), 7), + (Vec2d::new(1, -1), 11), + (Vec2d::new(1, 1), 11), + (Vec2d::new(-1, 1), 11), + (Vec2d::new(-1, -1), 11), + (Vec2d::new(0, -1), 13), + (Vec2d::new(1, 0), 13), + (Vec2d::new(0, 1), 13), + (Vec2d::new(-1, 0), 13), + (Vec2d::new(0, 0), 20), +]; + +pub const SNOWBALL_RANGE: i8 = 5; +pub const SNOWBALL_FREEZES_SPACES: usize = 9; +pub const SNOWBALL_FREEZE_RANGE: i8 = 1; +pub const SNOWBALL_FREEZES: [Vec2d; SNOWBALL_FREEZES_SPACES] = [ + Vec2d::new(-1, -1), + Vec2d::new(0, -1), + Vec2d::new(1, -1), + Vec2d::new(-1, 0), + Vec2d::new(0, 0), + Vec2d::new(1, 0), + Vec2d::new(-1, 1), + Vec2d::new(0, 1), + Vec2d::new(1, 1), +]; + +pub const MISSED_ATTACK_SCORE: i32 = 2; +pub const ATTACK_SCORE_MULTIPLIER: i32 = 2; +pub const KILL_SCORE: i32 = 40; +pub const DIG_SCORE: i32 = 7; +pub const MOVE_SCORE: i32 = 5; +pub const INVALID_COMMAND_SCORE_PENALTY: i32 = 4; + +pub const STARTING_BOMBS: u8 = 3; +pub const STARTING_SNOWBALLS: u8 = 3; + +pub const COLLISION_DAMAGE: i32 = 20; + +pub const LAVA_DAMAGE: i32 = 3; + +pub const LAVA_ROUND_START: usize = 100; +pub const LAVA_ROUND_END: usize = 350; +pub const MAX_ROUNDS: usize = 400; + +pub const FREEZE_DURATION: u8 = 5; +pub const FREEZE_SCORE: i32 = 17; diff --git a/2019-worms/src/constants/lava.rs b/2019-worms/src/constants/lava.rs new file mode 100644 index 0000000..238d668 --- /dev/null +++ b/2019-worms/src/constants/lava.rs @@ -0,0 +1,6225 @@ +use crate::constants::*; +use crate::game::map::Map; + +#[allow(clippy::all)] +pub const LAVA_MAP: [Map; MAX_ROUNDS as usize + 1] = [ + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + }, + Map { + cells: [ + 0xE0003E003FDF, + 0x60000038000038, + 0xE00000030000, + 0x180000003800, + 0x180000000C00, + 0x600000003000, + 0x80000000C000, + 0x6000000020000, + 0x180000000C0000, + 0x60000000300000, + 0x38000000300000, + 0x18000000E0000, + 0x3800003800000C00, + 0xF7F800F8000E0000, + 0x1, + ], + }, + Map { + cells: [ + 0xE0003E003FFF, + 0x60000038000038, + 0xE00000030000, + 0x180000003800, + 0x180000000C00, + 0x600000003000, + 0x180000000C000, + 0x6000000030000, + 0x180000000C0000, + 0x60000000300000, + 0x38000000300000, + 0x18000000E0000, + 0x3800003800000C00, + 0xFFF800F8000E0000, + 0x1, + ], + }, + Map { + cells: [ + 0xE0003E003FFF, + 0x60000038000038, + 0xE00000030000, + 0x180000003800, + 0x180000000C00, + 0x600000003000, + 0x180000000C000, + 0x6000000030000, + 0x180000000C0000, + 0x60000000300000, + 0x38000000300000, + 0x18000000E0000, + 0x3800003800000C00, + 0xFFF800F8000E0000, + 0x1, + ], + }, + Map { + cells: [ + 0x1E0003F007FFF, + 0x6000003800003C, + 0xF00000070000, + 0x180000003800, + 0x1C0000001C00, + 0x600000003000, + 0x180000000C000, + 0x6000000030000, + 0x180000000C0000, + 0x70000000700000, + 0x38000000300000, + 0x1C000001E0000, + 0x7800003800000C00, + 0xFFFC01F8000F0000, + 0x1, + ], + }, + Map { + cells: [ + 0x1E0003F007FFF, + 0x6000003800003C, + 0xF00000070000, + 0x180000003800, + 0x1C0000001C00, + 0x600000003000, + 0x180000000C000, + 0x6000000030000, + 0x180000000C0000, + 0x70000000700000, + 0x38000000300000, + 0x1C000001E0000, + 0x7800003800000C00, + 0xFFFC01F8000F0000, + 0x1, + ], + }, + Map { + cells: [ + 0x1E0003F007FFF, + 0x6000003800003C, + 0xF00000070000, + 0x180000003800, + 0x1C0000001C00, + 0x600000003000, + 0x180000000C000, + 0x6000000030000, + 0x180000000C0000, + 0x70000000700000, + 0x38000000300000, + 0x1C000001E0000, + 0x7800003800000C00, + 0xFFFC01F8000F0000, + 0x1, + ], + }, + Map { + cells: [ + 0x1F0007F007FFF, + 0xE000003C00007C, + 0xF00000078000, + 0x1C0000007800, + 0x1C0000001C00, + 0x600000003000, + 0x180000000C000, + 0x6000000030000, + 0x180000000C0000, + 0x70000000700000, + 0x3C000000700000, + 0x3C000001E0000, + 0x7C00007800000E00, + 0xFFFC01FC001F0000, + 0x1, + ], + }, + Map { + cells: [ + 0x1F0007F007FFF, + 0xF000007C00007C, + 0xF00000078000, + 0x1C0000007800, + 0x1C0000001C00, + 0x600000003000, + 0x180000000C000, + 0x6000000030000, + 0x180000000C0000, + 0x70000000700000, + 0x3C000000700000, + 0x3C000001E0000, + 0x7C00007C00001E00, + 0xFFFC01FC001F0000, + 0x1, + ], + }, + Map { + cells: [ + 0x1F0007F80FFFF, + 0xF000007C00007C, + 0xF00000078000, + 0x1C0000007800, + 0x3C0000001C00, + 0x600000003800, + 0x180000000C000, + 0x6000000030000, + 0x380000000C0000, + 0x70000000780000, + 0x3C000000700000, + 0x3C000001E0000, + 0x7C00007C00001E00, + 0xFFFE03FC001F0000, + 0x1, + ], + }, + Map { + cells: [ + 0x1F0007F80FFFF, + 0xF000007C00007C, + 0xF00000078000, + 0x1C0000007800, + 0x3C0000001C00, + 0x600000003800, + 0x180000000C000, + 0x6000000030000, + 0x380000000C0000, + 0x70000000780000, + 0x3C000000700000, + 0x3C000001E0000, + 0x7C00007C00001E00, + 0xFFFE03FC001F0000, + 0x1, + ], + }, + Map { + cells: [ + 0x1F0007F80FFFF, + 0xF000007C00007C, + 0xF00000078000, + 0x1C0000007800, + 0x3C0000001C00, + 0x600000003800, + 0x180000000C000, + 0x6000000030000, + 0x380000000C0000, + 0x70000000780000, + 0x3C000000700000, + 0x3C000001E0000, + 0x7C00007C00001E00, + 0xFFFE03FC001F0000, + 0x1, + ], + }, + Map { + cells: [ + 0x1F0007FC1FFFF, + 0xF000007C00007C, + 0xF00000078000, + 0x1C0000007800, + 0x3C0000001C00, + 0x700000007800, + 0x180000000C000, + 0x6000000030000, + 0x3C0000001C0000, + 0x70000000780000, + 0x3C000000700000, + 0x3C000001E0000, + 0x7C00007C00001E00, + 0xFFFF07FC001F0000, + 0x1, + ], + }, + Map { + cells: [ + 0x3F0007FC1FFFF, + 0xF000007C00007E, + 0x1F00000078000, + 0x1C0000007C00, + 0x3C0000001C00, + 0x700000007800, + 0x180000000C000, + 0x6000000030000, + 0x3C0000001C0000, + 0x70000000780000, + 0x7C000000700000, + 0x3C000001F0000, + 0xFC00007C00001E00, + 0xFFFF07FC001F8000, + 0x1, + ], + }, + Map { + cells: [ + 0x3F800FFC1FFFF, + 0xF000007C00007E, + 0x1F00000078000, + 0x3C0000007C00, + 0x3C0000001E00, + 0x700000007800, + 0x180000000C000, + 0x6000000030000, + 0x3C0000001C0000, + 0xF0000000780000, + 0x7C000000780000, + 0x3C000001F0000, + 0xFC00007C00001E00, + 0xFFFF07FE003F8000, + 0x1, + ], + }, + Map { + cells: [ + 0x3F800FFE3FFFF, + 0xF000007C00007E, + 0x1F00000078000, + 0x3C0000007C00, + 0x3C0000001E00, + 0xF00000007800, + 0x180000000E000, + 0xE000000030000, + 0x3C0000001E0000, + 0xF0000000780000, + 0x7C000000780000, + 0x3C000001F0000, + 0xFC00007C00001E00, + 0xFFFF8FFE003F8000, + 0x1, + ], + }, + Map { + cells: [ + 0x3F800FFE3FFFF, + 0xF000007C00007E, + 0x1F00000078000, + 0x3C0000007C00, + 0x3C0000001E00, + 0xF00000007800, + 0x180000000E000, + 0xE000000030000, + 0x3C0000001E0000, + 0xF0000000780000, + 0x7C000000780000, + 0x3C000001F0000, + 0xFC00007C00001E00, + 0xFFFF8FFE003F8000, + 0x1, + ], + }, + Map { + cells: [ + 0x3F800FFFFFFFF, + 0xF000007E0000FE, + 0x1F800000F8000, + 0x3C0000007C00, + 0x3C0000001E00, + 0xF00000007800, + 0x3C0000001E000, + 0xF000000078000, + 0x3C0000001E0000, + 0xF0000000780000, + 0x7C000000780000, + 0x3E000003F0000, + 0xFE0000FC00001E00, + 0xFFFFFFFE003F8000, + 0x1, + ], + }, + Map { + cells: [ + 0x3F800FFFFFFFF, + 0xF000007E0000FE, + 0x1F800000F8000, + 0x3C0000007C00, + 0x3C0000001E00, + 0xF00000007800, + 0x3C0000001E000, + 0xF000000078000, + 0x3C0000001E0000, + 0xF0000000780000, + 0x7C000000780000, + 0x3E000003F0000, + 0xFE0000FC00001E00, + 0xFFFFFFFE003F8000, + 0x1, + ], + }, + Map { + cells: [ + 0x3FC01FFFFFFFF, + 0x1F80000FE0000FE, + 0x1F800000FC000, + 0x3C0000007C00, + 0x3E0000003E00, + 0xF00000007800, + 0x3C0000001E000, + 0xF000000078000, + 0x3C0000001E0000, + 0xF8000000F80000, + 0x7C000000780000, + 0x7E000003F0000, + 0xFE0000FE00003F00, + 0xFFFFFFFF007F8000, + 0x1, + ], + }, + Map { + cells: [ + 0x3FC01FFFFFFFF, + 0x1F80000FE0000FE, + 0x1F800000FC000, + 0x3C0000007C00, + 0x3E0000003E00, + 0xF00000007800, + 0x3C0000001E000, + 0xF000000078000, + 0x3C0000001E0000, + 0xF8000000F80000, + 0x7C000000780000, + 0x7E000003F0000, + 0xFE0000FE00003F00, + 0xFFFFFFFF007F8000, + 0x1, + ], + }, + Map { + cells: [ + 0x7FC01FFFFFFFF, + 0x1F80000FE0000FF, + 0x1F800000FC000, + 0x3E000000FC00, + 0x3E0000003E00, + 0xF00000007800, + 0x3C0000001E000, + 0xF000000078000, + 0x3C0000001E0000, + 0xF8000000F80000, + 0x7E000000F80000, + 0x7E000003F0000, + 0xFE0000FE00003F00, + 0xFFFFFFFF007FC001, + 0x1, + ], + }, + Map { + cells: [ + 0x7FC01FFFFFFFF, + 0x1F80000FE0000FF, + 0x1F800000FC000, + 0x3E000000FC00, + 0x3E0000003E00, + 0xF00000007800, + 0x3C0000001E000, + 0xF000000078000, + 0x3C0000001E0000, + 0xF8000000F80000, + 0x7E000000F80000, + 0x7E000003F0000, + 0xFE0000FE00003F00, + 0xFFFFFFFF007FC001, + 0x1, + ], + }, + Map { + cells: [ + 0x7FC01FFFFFFFF, + 0x1F80000FE0000FF, + 0x1F800000FC000, + 0x3E000000FC00, + 0x3E0000003E00, + 0xF00000007800, + 0x3C0000001E000, + 0xF000000078000, + 0x3C0000001E0000, + 0xF8000000F80000, + 0x7E000000F80000, + 0x7E000003F0000, + 0xFE0000FE00003F00, + 0xFFFFFFFF007FC001, + 0x1, + ], + }, + Map { + cells: [ + 0x7FE03FFFFFFFF, + 0x1F80000FE0000FF, + 0x1F800000FC000, + 0x3E000000FC00, + 0x7E0000003E00, + 0xF00000007C00, + 0x3C0000001E000, + 0xF000000078000, + 0x7C0000001E0000, + 0xF8000000FC0000, + 0x7E000000F80000, + 0x7E000003F0000, + 0xFE0000FE00003F00, + 0xFFFFFFFF80FFC001, + 0x1, + ], + }, + Map { + cells: [ + 0x7FE03FFFFFFFF, + 0x1F80000FE0000FF, + 0x1F800000FC000, + 0x3E000000FC00, + 0x7E0000003E00, + 0xF00000007C00, + 0x3C0000001E000, + 0xF000000078000, + 0x7C0000001E0000, + 0xF8000000FC0000, + 0x7E000000F80000, + 0x7E000003F0000, + 0xFE0000FE00003F00, + 0xFFFFFFFF80FFC001, + 0x1, + ], + }, + Map { + cells: [ + 0x7FE03FFFFFFFF, + 0x1F80000FF0001FF, + 0x3F800000FC000, + 0x3E000000FE00, + 0x7E0000003E00, + 0xF00000007C00, + 0x3C0000001E000, + 0xF000000078000, + 0x7C0000001E0000, + 0xF8000000FC0000, + 0xFE000000F80000, + 0x7E000003F8000, + 0xFF0001FE00003F00, + 0xFFFFFFFF80FFC001, + 0x1, + ], + }, + Map { + cells: [ + 0x7FE03FFFFFFFF, + 0x1F80000FF0001FF, + 0x3F800000FC000, + 0x3E000000FE00, + 0x7E0000003E00, + 0xF00000007C00, + 0x3C0000001E000, + 0xF000000078000, + 0x7C0000001E0000, + 0xF8000000FC0000, + 0xFE000000F80000, + 0x7E000003F8000, + 0xFF0001FE00003F00, + 0xFFFFFFFF80FFC001, + 0x1, + ], + }, + Map { + cells: [ + 0x800FFF07FFFFFFFF, + 0x1F80000FF0001FF, + 0x3F800000FC000, + 0x7E000000FE00, + 0x7E0000003F00, + 0xF8000000FC00, + 0x3C0000001E000, + 0xF000000078000, + 0x7E0000003E0000, + 0x1F8000000FC0000, + 0xFE000000FC0000, + 0x7E000003F8000, + 0xFF0001FE00003F00, + 0xFFFFFFFFC1FFE003, + 0x1, + ], + }, + Map { + cells: [ + 0x800FFF07FFFFFFFF, + 0x1FC0001FF0001FF, + 0x3FC00001FC000, + 0x7E000000FE00, + 0x7E0000003F00, + 0xF8000000FC00, + 0x3C0000001E000, + 0xF000000078000, + 0x7E0000003E0000, + 0x1F8000000FC0000, + 0xFE000000FC0000, + 0x7F000007F8000, + 0xFF0001FF00007F00, + 0xFFFFFFFFC1FFE003, + 0x1, + ], + }, + Map { + cells: [ + 0x800FFF07FFFFFFFF, + 0x1FC0001FF0001FF, + 0x3FC00001FC000, + 0x7E000000FE00, + 0x7E0000003F00, + 0xF8000000FC00, + 0x3C0000001E000, + 0xF000000078000, + 0x7E0000003E0000, + 0x1F8000000FC0000, + 0xFE000000FC0000, + 0x7F000007F8000, + 0xFF0001FF00007F00, + 0xFFFFFFFFC1FFE003, + 0x1, + ], + }, + Map { + cells: [ + 0x800FFF8FFFFFFFFF, + 0x3FC0001FF0001FF, + 0x3FC00001FE000, + 0x7E000000FE00, + 0x7E0000003F00, + 0x1F8000000FC00, + 0x3C0000001F000, + 0x1F000000078000, + 0x7E0000003F0000, + 0x1F8000000FC0000, + 0xFE000000FC0000, + 0xFF000007F8000, + 0xFF0001FF00007F80, + 0xFFFFFFFFE3FFE003, + 0x1, + ], + }, + Map { + cells: [ + 0x800FFFDFFFFFFFFF, + 0x3FC0001FF0001FF, + 0x3FC00001FE000, + 0x7E000000FE00, + 0x7E0000003F00, + 0x1F8000000FC00, + 0x3E0000003F000, + 0x1F8000000F8000, + 0x7E0000003F0000, + 0x1F8000000FC0000, + 0xFE000000FC0000, + 0xFF000007F8000, + 0xFF0001FF00007F80, + 0xFFFFFFFFF7FFE003, + 0x1, + ], + }, + Map { + cells: [ + 0x800FFFFFFFFFFFFF, + 0x3FC0001FF0001FF, + 0x3FC00001FE000, + 0x7E000000FE00, + 0x7E0000003F00, + 0x1F8000000FC00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0x7E0000003F0000, + 0x1F8000000FC0000, + 0xFE000000FC0000, + 0xFF000007F8000, + 0xFF0001FF00007F80, + 0xFFFFFFFFFFFFE003, + 0x1, + ], + }, + Map { + cells: [ + 0xC01FFFFFFFFFFFFF, + 0x3FC0001FF8003FF, + 0x3FC00001FE000, + 0x7F000001FE00, + 0x7F0000007F00, + 0x1F8000000FC00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0x7E0000003F0000, + 0x1FC000001FC0000, + 0xFF000001FC0000, + 0xFF000007F8000, + 0xFF8003FF00007F80, + 0xFFFFFFFFFFFFF007, + 0x1, + ], + }, + Map { + cells: [ + 0xC01FFFFFFFFFFFFF, + 0x3FC0001FF8003FF, + 0x3FC00001FE000, + 0x7F000001FE00, + 0x7F0000007F00, + 0x1F8000000FC00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0x7E0000003F0000, + 0x1FC000001FC0000, + 0xFF000001FC0000, + 0xFF000007F8000, + 0xFF8003FF00007F80, + 0xFFFFFFFFFFFFF007, + 0x1, + ], + }, + Map { + cells: [ + 0xC01FFFFFFFFFFFFF, + 0x3FC0001FF8003FF, + 0x3FC00001FE000, + 0x7F000001FE00, + 0x7F0000007F00, + 0x1F8000000FC00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0x7E0000003F0000, + 0x1FC000001FC0000, + 0xFF000001FC0000, + 0xFF000007F8000, + 0xFF8003FF00007F80, + 0xFFFFFFFFFFFFF007, + 0x1, + ], + }, + Map { + cells: [ + 0xC01FFFFFFFFFFFFF, + 0x3FC0001FF8003FF, + 0x3FC00001FE000, + 0x7F000001FE00, + 0x7F0000007F00, + 0x1F8000000FC00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0x7E0000003F0000, + 0x1FC000001FC0000, + 0xFF000001FC0000, + 0xFF000007F8000, + 0xFF8003FF00007F80, + 0xFFFFFFFFFFFFF007, + 0x1, + ], + }, + Map { + cells: [ + 0xC01FFFFFFFFFFFFF, + 0x3FC0001FF8003FF, + 0x3FC00001FE000, + 0x7F000001FE00, + 0x7F0000007F00, + 0x1F8000000FC00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0x7E0000003F0000, + 0x1FC000001FC0000, + 0xFF000001FC0000, + 0xFF000007F8000, + 0xFF8003FF00007F80, + 0xFFFFFFFFFFFFF007, + 0x1, + ], + }, + Map { + cells: [ + 0xE03FFFFFFFFFFFFF, + 0x3FE0003FF8003FF, + 0x7FC00001FE000, + 0x7F000001FF00, + 0xFF0000007F00, + 0x1F8000000FE00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0xFE0000003F0000, + 0x1FC000001FE0000, + 0x1FF000001FC0000, + 0xFF000007FC000, + 0xFF8003FF8000FF80, + 0xFFFFFFFFFFFFF80F, + 0x1, + ], + }, + Map { + cells: [ + 0xE03FFFFFFFFFFFFF, + 0x3FE0003FF8003FF, + 0x7FC00001FE000, + 0x7F000001FF00, + 0xFF0000007F00, + 0x1F8000000FE00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0xFE0000003F0000, + 0x1FC000001FE0000, + 0x1FF000001FC0000, + 0xFF000007FC000, + 0xFF8003FF8000FF80, + 0xFFFFFFFFFFFFF80F, + 0x1, + ], + }, + Map { + cells: [ + 0xE03FFFFFFFFFFFFF, + 0x7FE0003FF8003FF, + 0x7FE00003FF000, + 0x7F000001FF00, + 0xFF0000007F00, + 0x1F8000000FE00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0xFE0000003F0000, + 0x1FC000001FE0000, + 0x1FF000001FC0000, + 0x1FF80000FFC000, + 0xFF8003FF8000FFC0, + 0xFFFFFFFFFFFFF80F, + 0x1, + ], + }, + Map { + cells: [ + 0xE03FFFFFFFFFFFFF, + 0x7FE0003FFC007FF, + 0x7FE00003FF000, + 0xFF000001FF00, + 0xFF0000007F80, + 0x1F8000000FE00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0xFE0000003F0000, + 0x3FC000001FE0000, + 0x1FF000001FE0000, + 0x1FF80000FFC000, + 0xFFC007FF8000FFC0, + 0xFFFFFFFFFFFFF80F, + 0x1, + ], + }, + Map { + cells: [ + 0xF07FFFFFFFFFFFFF, + 0x7FE0003FFC007FF, + 0x7FE00003FF000, + 0xFF000001FF00, + 0xFF0000007F80, + 0x1FC000001FE00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0xFF0000007F0000, + 0x3FC000001FE0000, + 0x1FF000001FE0000, + 0x1FF80000FFC000, + 0xFFC007FF8000FFC0, + 0xFFFFFFFFFFFFFC1F, + 0x1, + ], + }, + Map { + cells: [ + 0xF07FFFFFFFFFFFFF, + 0x7FE0003FFC007FF, + 0x7FE00003FF000, + 0xFF000001FF00, + 0xFF0000007F80, + 0x1FC000001FE00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0xFF0000007F0000, + 0x3FC000001FE0000, + 0x1FF000001FE0000, + 0x1FF80000FFC000, + 0xFFC007FF8000FFC0, + 0xFFFFFFFFFFFFFC1F, + 0x1, + ], + }, + Map { + cells: [ + 0xF07FFFFFFFFFFFFF, + 0x7FE0003FFC007FF, + 0x7FE00003FF000, + 0xFF000001FF00, + 0xFF0000007F80, + 0x1FC000001FE00, + 0x7E0000003F000, + 0x1F8000000FC000, + 0xFF0000007F0000, + 0x3FC000001FE0000, + 0x1FF000001FE0000, + 0x1FF80000FFC000, + 0xFFC007FF8000FFC0, + 0xFFFFFFFFFFFFFC1F, + 0x1, + ], + }, + Map { + cells: [ + 0xF8FFFFFFFFFFFFFF, + 0x7FE0003FFC007FF, + 0x7FE00003FF000, + 0xFF000001FF00, + 0xFF0000007F80, + 0x3FC000001FE00, + 0x7E0000003F800, + 0x3F8000000FC000, + 0xFF0000007F8000, + 0x3FC000001FE0000, + 0x1FF000001FE0000, + 0x1FF80000FFC000, + 0xFFC007FF8000FFC0, + 0xFFFFFFFFFFFFFE3F, + 0x1, + ], + }, + Map { + cells: [ + 0xF8FFFFFFFFFFFFFF, + 0x7FE0003FFC007FF, + 0x7FE00003FF000, + 0xFF000001FF00, + 0xFF0000007F80, + 0x3FC000001FE00, + 0x7E0000003F800, + 0x3F8000000FC000, + 0xFF0000007F8000, + 0x3FC000001FE0000, + 0x1FF000001FE0000, + 0x1FF80000FFC000, + 0xFFC007FF8000FFC0, + 0xFFFFFFFFFFFFFE3F, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x7FF0007FFE00FFF, + 0x7FE00003FF000, + 0xFF800003FF00, + 0xFF800000FF80, + 0x3FC000001FE00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0xFF0000007F8000, + 0x3FE000003FE0000, + 0x1FF800003FE0000, + 0x1FF80000FFC000, + 0xFFE00FFFC001FFC0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x7FF0007FFE00FFF, + 0x7FE00003FF000, + 0xFF800003FF00, + 0xFF800000FF80, + 0x3FC000001FE00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0xFF0000007F8000, + 0x3FE000003FE0000, + 0x1FF800003FE0000, + 0x1FF80000FFC000, + 0xFFE00FFFC001FFC0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x7FF0007FFE00FFF, + 0x7FE00003FF000, + 0xFF800003FF00, + 0xFF800000FF80, + 0x3FC000001FE00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0xFF0000007F8000, + 0x3FE000003FE0000, + 0x1FF800003FE0000, + 0x1FF80000FFC000, + 0xFFE00FFFC001FFC0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFF0007FFE00FFF, + 0xFFE00003FF800, + 0xFF800003FF80, + 0xFF800000FF80, + 0x3FC000001FE00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0xFF0000007F8000, + 0x3FE000003FE0000, + 0x3FF800003FE0000, + 0x3FF80000FFE000, + 0xFFE00FFFC001FFE0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFF0007FFE00FFF, + 0xFFE00003FF800, + 0xFF800003FF80, + 0xFF800000FF80, + 0x3FC000001FE00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0xFF0000007F8000, + 0x3FE000003FE0000, + 0x3FF800003FE0000, + 0x3FF80000FFE000, + 0xFFE00FFFC001FFE0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFF0007FFE00FFF, + 0xFFF00007FF800, + 0xFF800003FF80, + 0xFF800000FF80, + 0x3FC000001FE00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0xFF0000007F8000, + 0x3FE000003FE0000, + 0x3FF800003FE0000, + 0x3FFC0001FFE000, + 0xFFE00FFFC001FFE0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFF0007FFF01FFF, + 0xFFF00007FF800, + 0xFF800003FF80, + 0x1FF800000FF80, + 0x3FC000001FF00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0x1FF0000007F8000, + 0x3FE000003FF0000, + 0x3FF800003FE0000, + 0x3FFC0001FFE000, + 0xFFF01FFFC001FFE0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFF0007FFF01FFF, + 0xFFF00007FF800, + 0xFF800003FF80, + 0x1FF800000FF80, + 0x3FC000001FF00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0x1FF0000007F8000, + 0x3FE000003FF0000, + 0x3FF800003FE0000, + 0x3FFC0001FFE000, + 0xFFF01FFFC001FFE0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFF800FFFF01FFF, + 0xFFF00007FF800, + 0x1FF800003FF80, + 0x1FF800000FFC0, + 0x3FC000001FF00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0x1FF0000007F8000, + 0x7FE000003FF0000, + 0x3FF800003FF0000, + 0x3FFC0001FFE000, + 0xFFF01FFFE003FFE0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFF800FFFF01FFF, + 0xFFF00007FF800, + 0x1FF800003FF80, + 0x1FF800000FFC0, + 0x3FC000001FF00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0x1FF0000007F8000, + 0x7FE000003FF0000, + 0x3FF800003FF0000, + 0x3FFC0001FFE000, + 0xFFF01FFFE003FFE0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFF800FFFF83FFF, + 0xFFF00007FF800, + 0x1FF800003FF80, + 0x1FF800000FFC0, + 0x3FE000003FF00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0x1FF800000FF8000, + 0x7FE000003FF0000, + 0x3FF800003FF0000, + 0x3FFC0001FFE000, + 0xFFF83FFFE003FFE0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFF800FFFF83FFF, + 0xFFF00007FF800, + 0x1FF800003FF80, + 0x1FF800000FFC0, + 0x3FE000003FF00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0x1FF800000FF8000, + 0x7FE000003FF0000, + 0x3FF800003FF0000, + 0x3FFC0001FFE000, + 0xFFF83FFFE003FFE0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFF800FFFF83FFF, + 0xFFF00007FF800, + 0x1FF800003FF80, + 0x1FF800000FFC0, + 0x3FE000003FF00, + 0xFF0000007F800, + 0x3FC000001FE000, + 0x1FF800000FF8000, + 0x7FE000003FF0000, + 0x3FF800003FF0000, + 0x3FFC0001FFE000, + 0xFFF83FFFE003FFE0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x1FFF800FFFFC7FFF, + 0xFFF00007FFC00, + 0x1FFC00007FF80, + 0x1FF800000FFC0, + 0x7FE000003FF00, + 0xFF0000007FC00, + 0x7FC000001FE000, + 0x1FF800000FFC000, + 0x7FE000003FF0000, + 0x3FFC00007FF0000, + 0x7FFC0001FFE000, + 0xFFFC7FFFE003FFF0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x1FFF800FFFFC7FFF, + 0xFFF00007FFC00, + 0x1FFC00007FF80, + 0x1FF800000FFC0, + 0x7FE000003FF00, + 0xFF0000007FC00, + 0x7FC000001FE000, + 0x1FF800000FFC000, + 0x7FE000003FF0000, + 0x3FFC00007FF0000, + 0x7FFC0001FFE000, + 0xFFFC7FFFE003FFF0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x1FFFC01FFFFEFFFF, + 0x1FFF8000FFFC00, + 0x1FFC00007FFC0, + 0x1FFC00001FFC0, + 0x7FE000003FF00, + 0xFF800000FFC00, + 0x7FE000003FE000, + 0x1FF800000FFC000, + 0x7FF000007FF0000, + 0x7FFC00007FF0000, + 0x7FFE0003FFF000, + 0xFFFEFFFFF007FFF0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x1FFFC01FFFFFFFFF, + 0x1FFF8000FFFC00, + 0x1FFC00007FFC0, + 0x1FFC00001FFC0, + 0x7FE000003FF00, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x1FF800000FFC000, + 0x7FF000007FF0000, + 0x7FFC00007FF0000, + 0x7FFE0003FFF000, + 0xFFFFFFFFF007FFF0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x1FFFC01FFFFFFFFF, + 0x1FFF8000FFFC00, + 0x1FFC00007FFC0, + 0x1FFC00001FFC0, + 0x7FE000003FF00, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x1FF800000FFC000, + 0x7FF000007FF0000, + 0x7FFC00007FF0000, + 0x7FFE0003FFF000, + 0xFFFFFFFFF007FFF0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x1FFFC01FFFFFFFFF, + 0x1FFF8000FFFC00, + 0x1FFC00007FFC0, + 0x1FFC00001FFC0, + 0x7FE000003FF00, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x1FF800000FFC000, + 0x7FF000007FF0000, + 0x7FFC00007FF0000, + 0x7FFE0003FFF000, + 0xFFFFFFFFF007FFF0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x1FFFC01FFFFFFFFF, + 0x1FFF8000FFFC00, + 0x1FFC00007FFC0, + 0x1FFC00001FFC0, + 0x7FE000003FF00, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x1FF800000FFC000, + 0x7FF000007FF0000, + 0x7FFC00007FF0000, + 0x7FFE0003FFF000, + 0xFFFFFFFFF007FFF0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x1FFFC01FFFFFFFFF, + 0x1FFF8000FFFC00, + 0x1FFC00007FFC0, + 0x1FFC00001FFC0, + 0x7FE000003FF00, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x1FF800000FFC000, + 0x7FF000007FF0000, + 0x7FFC00007FF0000, + 0x7FFE0003FFF000, + 0xFFFFFFFFF007FFF0, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x3FFFE03FFFFFFFFF, + 0x1FFF8000FFFE00, + 0x3FFC00007FFC0, + 0x3FFC00001FFE0, + 0x7FE000003FF80, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x3FF800000FFC000, + 0xFFF000007FF8000, + 0x7FFC00007FF8000, + 0xFFFE0003FFF000, + 0xFFFFFFFFF80FFFF8, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x3FFFE03FFFFFFFFF, + 0x1FFF8000FFFE00, + 0x3FFC00007FFC0, + 0x3FFC00001FFE0, + 0x7FE000003FF80, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x3FF800000FFC000, + 0xFFF000007FF8000, + 0x7FFC00007FF8000, + 0xFFFE0003FFF000, + 0xFFFFFFFFF80FFFF8, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x3FFFE03FFFFFFFFF, + 0x1FFF8000FFFE00, + 0x3FFC00007FFC0, + 0x3FFC00001FFE0, + 0x7FE000003FF80, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x3FF800000FFC000, + 0xFFF000007FF8000, + 0x7FFC00007FF8000, + 0xFFFE0003FFF000, + 0xFFFFFFFFF80FFFF8, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x3FFFE03FFFFFFFFF, + 0x1FFF8000FFFE00, + 0x3FFC00007FFC0, + 0x3FFC00001FFE0, + 0x7FE000003FF80, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x3FF800000FFC000, + 0xFFF000007FF8000, + 0x7FFC00007FF8000, + 0xFFFE0003FFF000, + 0xFFFFFFFFF80FFFF8, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x3FFFF07FFFFFFFFF, + 0x1FFFC001FFFE00, + 0x3FFE0000FFFC0, + 0x3FFC00001FFE0, + 0x7FF000007FF80, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x3FFC00001FFC000, + 0xFFF000007FF8000, + 0x7FFE0000FFF8000, + 0xFFFF0007FFF000, + 0xFFFFFFFFFC1FFFF8, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x3FFFF07FFFFFFFFF, + 0x1FFFC001FFFE00, + 0x3FFE0000FFFC0, + 0x3FFC00001FFE0, + 0x7FF000007FF80, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x3FFC00001FFC000, + 0xFFF000007FF8000, + 0x7FFE0000FFF8000, + 0xFFFF0007FFF000, + 0xFFFFFFFFFC1FFFF8, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x3FFFF07FFFFFFFFF, + 0x3FFFC001FFFE00, + 0x3FFE0000FFFE0, + 0x3FFC00001FFE0, + 0x7FF000007FF80, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x3FFC00001FFC000, + 0xFFF000007FF8000, + 0xFFFE0000FFF8000, + 0xFFFF0007FFF800, + 0xFFFFFFFFFC1FFFF8, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x3FFFF07FFFFFFFFF, + 0x3FFFC001FFFE00, + 0x3FFE0000FFFE0, + 0x3FFC00001FFE0, + 0x7FF000007FF80, + 0x1FF800000FFC00, + 0x7FE000003FF000, + 0x3FFC00001FFC000, + 0xFFF000007FF8000, + 0xFFFE0000FFF8000, + 0xFFFF0007FFF800, + 0xFFFFFFFFFC1FFFF8, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x7FFFF8FFFFFFFFFF, + 0x3FFFC001FFFF00, + 0x3FFE0000FFFE0, + 0x3FFE00003FFE0, + 0xFFF000007FF80, + 0x1FF800000FFE00, + 0xFFE000003FF000, + 0x3FFC00001FFE000, + 0xFFF80000FFF8000, + 0xFFFE0000FFF8000, + 0x1FFFF0007FFF800, + 0xFFFFFFFFFE3FFFFC, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x7FFFF8FFFFFFFFFF, + 0x3FFFC001FFFF00, + 0x3FFE0000FFFE0, + 0x3FFE00003FFE0, + 0xFFF000007FF80, + 0x1FF800000FFE00, + 0xFFE000003FF000, + 0x3FFC00001FFE000, + 0xFFF80000FFF8000, + 0xFFFE0000FFF8000, + 0x1FFFF0007FFF800, + 0xFFFFFFFFFE3FFFFC, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFDFFFFFFFFFF, + 0x3FFFC001FFFF00, + 0x3FFE0000FFFE0, + 0x3FFE00003FFE0, + 0xFFF000007FF80, + 0x1FFC00001FFE00, + 0xFFF000007FF000, + 0x3FFC00001FFE000, + 0xFFF80000FFF8000, + 0xFFFE0000FFF8000, + 0x1FFFF0007FFF800, + 0xFFFFFFFFFF7FFFFC, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFFFFFFFFFFF, + 0x3FFFC001FFFF00, + 0x3FFE0000FFFE0, + 0x3FFE00003FFE0, + 0xFFF000007FF80, + 0x3FFC00001FFE00, + 0xFFF000007FF800, + 0x3FFC00001FFE000, + 0xFFF80000FFF8000, + 0xFFFE0000FFF8000, + 0x1FFFF0007FFF800, + 0xFFFFFFFFFFFFFFFC, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFFFFFFFFFFF, + 0x3FFFC001FFFF00, + 0x3FFE0000FFFE0, + 0x3FFE00003FFE0, + 0xFFF000007FF80, + 0x3FFC00001FFE00, + 0xFFF000007FF800, + 0x3FFC00001FFE000, + 0xFFF80000FFF8000, + 0xFFFE0000FFF8000, + 0x1FFFF0007FFF800, + 0xFFFFFFFFFFFFFFFC, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFFFFFFFFFFF, + 0x3FFFE003FFFF00, + 0x7FFE0000FFFE0, + 0x3FFE00003FFF0, + 0xFFF000007FF80, + 0x3FFC00001FFE00, + 0xFFF000007FF800, + 0x3FFC00001FFE000, + 0x1FFF80000FFF8000, + 0xFFFE0000FFFC000, + 0x1FFFF800FFFF800, + 0xFFFFFFFFFFFFFFFC, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x3FFFE003FFFF80, + 0x7FFE0000FFFE0, + 0x7FFE00003FFF0, + 0xFFF000007FFC0, + 0x3FFC00001FFE00, + 0xFFF000007FF800, + 0x7FFC00001FFE000, + 0x1FFF80000FFFC000, + 0xFFFE0000FFFC000, + 0x3FFFF800FFFF800, + 0xFFFFFFFFFFFFFFFE, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x3FFFE003FFFF80, + 0x7FFE0000FFFE0, + 0x7FFE00003FFF0, + 0xFFF000007FFC0, + 0x3FFC00001FFE00, + 0xFFF000007FF800, + 0x7FFC00001FFE000, + 0x1FFF80000FFFC000, + 0xFFFE0000FFFC000, + 0x3FFFF800FFFF800, + 0xFFFFFFFFFFFFFFFE, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFE003FFFF80, + 0x7FFF0001FFFF0, + 0x7FFE00003FFF0, + 0xFFF000007FFC0, + 0x3FFC00001FFE00, + 0xFFF000007FF800, + 0x7FFC00001FFE000, + 0x1FFF80000FFFC000, + 0x1FFFF0001FFFC000, + 0x3FFFF800FFFFC00, + 0xFFFFFFFFFFFFFFFE, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFE003FFFF80, + 0x7FFF0001FFFF0, + 0x7FFE00003FFF0, + 0xFFF000007FFC0, + 0x3FFC00001FFE00, + 0xFFF000007FF800, + 0x7FFC00001FFE000, + 0x1FFF80000FFFC000, + 0x1FFFF0001FFFC000, + 0x3FFFF800FFFFC00, + 0xFFFFFFFFFFFFFFFE, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFE003FFFF80, + 0x7FFF0001FFFF0, + 0x7FFE00003FFF0, + 0xFFF000007FFC0, + 0x3FFC00001FFE00, + 0xFFF000007FF800, + 0x7FFC00001FFE000, + 0x1FFF80000FFFC000, + 0x1FFFF0001FFFC000, + 0x3FFFF800FFFFC00, + 0xFFFFFFFFFFFFFFFE, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFE003FFFFC1, + 0x7FFF0001FFFF0, + 0x7FFE00003FFF0, + 0xFFF80000FFFC0, + 0x3FFC00001FFE00, + 0xFFF000007FF800, + 0x7FFE00003FFE000, + 0x1FFF80000FFFC000, + 0x1FFFF0001FFFC000, + 0x7FFFF800FFFFC00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFE003FFFFC1, + 0x7FFF0001FFFF0, + 0x7FFE00003FFF0, + 0xFFF80000FFFC0, + 0x3FFC00001FFE00, + 0xFFF000007FF800, + 0x7FFE00003FFE000, + 0x1FFF80000FFFC000, + 0x1FFFF0001FFFC000, + 0x7FFFF800FFFFC00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFE003FFFFC1, + 0x7FFF0001FFFF0, + 0x7FFE00003FFF0, + 0xFFF80000FFFC0, + 0x3FFC00001FFE00, + 0xFFF000007FF800, + 0x7FFE00003FFE000, + 0x1FFF80000FFFC000, + 0x1FFFF0001FFFC000, + 0x7FFFF800FFFFC00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFF007FFFFC1, + 0x7FFF0001FFFF0, + 0x7FFF00007FFF0, + 0xFFF80000FFFC0, + 0x3FFC00001FFE00, + 0xFFF000007FF800, + 0x7FFE00003FFE000, + 0x1FFFC0001FFFC000, + 0x1FFFF0001FFFC000, + 0x7FFFFC01FFFFC00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFF007FFFFE3, + 0x7FFF0001FFFF0, + 0x7FFF00007FFF0, + 0x1FFF80000FFFC0, + 0x3FFC00001FFF00, + 0x1FFF000007FF800, + 0x7FFE00003FFF000, + 0x1FFFC0001FFFC000, + 0x1FFFF0001FFFC000, + 0x8FFFFFC01FFFFC00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFF007FFFFE3, + 0x7FFF0001FFFF0, + 0x7FFF00007FFF0, + 0x1FFF80000FFFC0, + 0x3FFC00001FFF00, + 0x1FFF000007FF800, + 0x7FFE00003FFF000, + 0x1FFFC0001FFFC000, + 0x1FFFF0001FFFC000, + 0x8FFFFFC01FFFFC00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFF007FFFFF7, + 0x7FFF0001FFFF0, + 0x7FFF00007FFF0, + 0x1FFF80000FFFC0, + 0x3FFE00003FFF00, + 0x1FFF80000FFF800, + 0x7FFE00003FFF000, + 0x1FFFC0001FFFC000, + 0x1FFFF0001FFFC000, + 0xDFFFFFC01FFFFC00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFF007FFFFFF, + 0xFFFF0001FFFF8, + 0x7FFF00007FFF8, + 0x1FFF80000FFFC0, + 0x7FFE00003FFF00, + 0x1FFF80000FFFC00, + 0x7FFE00003FFF000, + 0x3FFFC0001FFFC000, + 0x3FFFF0001FFFE000, + 0xFFFFFFC01FFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFF007FFFFFF, + 0xFFFF0001FFFF8, + 0x7FFF00007FFF8, + 0x1FFF80000FFFC0, + 0x7FFE00003FFF00, + 0x1FFF80000FFFC00, + 0x7FFE00003FFF000, + 0x3FFFC0001FFFC000, + 0x3FFFF0001FFFE000, + 0xFFFFFFC01FFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFF007FFFFFF, + 0xFFFF8003FFFF8, + 0x7FFF00007FFF8, + 0x1FFF80000FFFC0, + 0x7FFE00003FFF00, + 0x1FFF80000FFFC00, + 0x7FFE00003FFF000, + 0x3FFFC0001FFFC000, + 0x3FFFF8003FFFE000, + 0xFFFFFFC01FFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFF80FFFFFFF, + 0xFFFF8003FFFF8, + 0xFFFF00007FFF8, + 0x1FFF80000FFFE0, + 0x7FFE00003FFF00, + 0x1FFF80000FFFC00, + 0xFFFE00003FFF000, + 0x3FFFC0001FFFE000, + 0x3FFFF8003FFFE000, + 0xFFFFFFE03FFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFF80FFFFFFF, + 0xFFFF8003FFFF8, + 0xFFFF00007FFF8, + 0x1FFF80000FFFE0, + 0x7FFE00003FFF00, + 0x1FFF80000FFFC00, + 0xFFFE00003FFF000, + 0x3FFFC0001FFFE000, + 0x3FFFF8003FFFE000, + 0xFFFFFFE03FFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFF80FFFFFFF, + 0xFFFF8003FFFF8, + 0xFFFF00007FFF8, + 0x1FFF80000FFFE0, + 0x7FFE00003FFF00, + 0x1FFF80000FFFC00, + 0xFFFE00003FFF000, + 0x3FFFC0001FFFE000, + 0x3FFFF8003FFFE000, + 0xFFFFFFE03FFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFF80FFFFFFF, + 0xFFFF8003FFFF8, + 0xFFFF00007FFF8, + 0x1FFF80000FFFE0, + 0x7FFE00003FFF00, + 0x1FFF80000FFFC00, + 0xFFFE00003FFF000, + 0x3FFFC0001FFFE000, + 0x3FFFF8003FFFE000, + 0xFFFFFFE03FFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFF80FFFFFFF, + 0xFFFF8003FFFF8, + 0xFFFF00007FFF8, + 0x1FFF80000FFFE0, + 0x7FFE00003FFF00, + 0x1FFF80000FFFC00, + 0xFFFE00003FFF000, + 0x3FFFC0001FFFE000, + 0x3FFFF8003FFFE000, + 0xFFFFFFE03FFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFC1FFFFFFF, + 0xFFFF8003FFFF8, + 0xFFFF00007FFF8, + 0x1FFFC0001FFFE0, + 0x7FFE00003FFF00, + 0x1FFF80000FFFC00, + 0xFFFF00007FFF000, + 0x3FFFC0001FFFE000, + 0x3FFFF8003FFFE000, + 0xFFFFFFF07FFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFC1FFFFFFF, + 0xFFFF8003FFFFC, + 0xFFFF8000FFFF8, + 0x1FFFC0001FFFE0, + 0x7FFE00003FFF00, + 0x1FFF80000FFFC00, + 0xFFFF00007FFF000, + 0x3FFFE0003FFFE000, + 0x7FFFF8003FFFE000, + 0xFFFFFFF07FFFFF00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFC1FFFFFFF, + 0xFFFF8003FFFFC, + 0xFFFF8000FFFF8, + 0x1FFFC0001FFFE0, + 0x7FFE00003FFF00, + 0x1FFF80000FFFC00, + 0xFFFF00007FFF000, + 0x3FFFE0003FFFE000, + 0x7FFFF8003FFFE000, + 0xFFFFFFF07FFFFF00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFC1FFFFFFF, + 0xFFFF8003FFFFC, + 0xFFFF8000FFFF8, + 0x1FFFC0001FFFE0, + 0x7FFE00003FFF00, + 0x1FFF80000FFFC00, + 0xFFFF00007FFF000, + 0x3FFFE0003FFFE000, + 0x7FFFF8003FFFE000, + 0xFFFFFFF07FFFFF00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFE3FFFFFFF, + 0x1FFFFC007FFFFC, + 0xFFFF8000FFFFC, + 0x3FFFC0001FFFE0, + 0x7FFE00003FFF80, + 0x3FFF80000FFFC00, + 0xFFFF00007FFF800, + 0x7FFFE0003FFFE000, + 0x7FFFFC007FFFF000, + 0xFFFFFFF8FFFFFF00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFE3FFFFFFF, + 0x1FFFFC007FFFFC, + 0xFFFF8000FFFFC, + 0x3FFFC0001FFFE0, + 0x7FFE00003FFF80, + 0x3FFF80000FFFC00, + 0xFFFF00007FFF800, + 0x7FFFE0003FFFE000, + 0x7FFFFC007FFFF000, + 0xFFFFFFF8FFFFFF00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFE3FFFFFFF, + 0x1FFFFC007FFFFC, + 0xFFFF8000FFFFC, + 0x3FFFC0001FFFE0, + 0x7FFE00003FFF80, + 0x3FFF80000FFFC00, + 0xFFFF00007FFF800, + 0x7FFFE0003FFFE000, + 0x7FFFFC007FFFF000, + 0xFFFFFFF8FFFFFF00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFF7FFFFFFF, + 0x1FFFFC007FFFFC, + 0xFFFF8000FFFFC, + 0x3FFFC0001FFFE0, + 0x7FFF00007FFF80, + 0x3FFFC0001FFFC00, + 0xFFFF00007FFF800, + 0x7FFFE0003FFFE000, + 0x7FFFFC007FFFF000, + 0xFFFFFFFDFFFFFF00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFFFFFFFFFF, + 0x1FFFFC007FFFFC, + 0xFFFF8000FFFFC, + 0x3FFFC0001FFFE0, + 0xFFFF00007FFF80, + 0x3FFFC0001FFFE00, + 0xFFFF00007FFF800, + 0x7FFFE0003FFFE000, + 0x7FFFFC007FFFF000, + 0xFFFFFFFFFFFFFF00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x3FFFFFFFFFFFFFF, + 0x1FFFFC007FFFFE, + 0x1FFFF8000FFFFC, + 0x3FFFC0001FFFF0, + 0xFFFF00007FFF80, + 0x3FFFC0001FFFE00, + 0x1FFFF00007FFF800, + 0x7FFFE0003FFFF000, + 0xFFFFFC007FFFF000, + 0xFFFFFFFFFFFFFF80, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x3FFFFFFFFFFFFFF, + 0x1FFFFC007FFFFE, + 0x1FFFF8000FFFFC, + 0x3FFFC0001FFFF0, + 0xFFFF00007FFF80, + 0x3FFFC0001FFFE00, + 0x1FFFF00007FFF800, + 0x7FFFE0003FFFF000, + 0xFFFFFC007FFFF000, + 0xFFFFFFFFFFFFFF80, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x3FFFFFFFFFFFFFF, + 0x1FFFFC007FFFFE, + 0x1FFFF8000FFFFC, + 0x3FFFC0001FFFF0, + 0xFFFF00007FFF80, + 0x3FFFC0001FFFE00, + 0x1FFFF00007FFF800, + 0x7FFFE0003FFFF000, + 0xFFFFFC007FFFF000, + 0xFFFFFFFFFFFFFF80, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x3FFFFFFFFFFFFFF, + 0x1FFFFC007FFFFE, + 0x1FFFF8000FFFFC, + 0x3FFFC0001FFFF0, + 0xFFFF00007FFF80, + 0x3FFFC0001FFFE00, + 0x1FFFF00007FFF800, + 0x7FFFE0003FFFF000, + 0xFFFFFC007FFFF000, + 0xFFFFFFFFFFFFFF80, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x3FFFFFFFFFFFFFF, + 0x1FFFFC007FFFFE, + 0x1FFFF8000FFFFC, + 0x3FFFC0001FFFF0, + 0xFFFF00007FFF80, + 0x3FFFC0001FFFE00, + 0x1FFFF00007FFF800, + 0x7FFFE0003FFFF000, + 0xFFFFFC007FFFF000, + 0xFFFFFFFFFFFFFF80, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x3FFFFFFFFFFFFFF, + 0x1FFFFE00FFFFFE, + 0x1FFFFC001FFFFC, + 0x3FFFC0001FFFF0, + 0xFFFF00007FFF80, + 0x3FFFC0001FFFE00, + 0x1FFFF00007FFF800, + 0x7FFFF0007FFFF000, + 0xFFFFFE00FFFFF000, + 0xFFFFFFFFFFFFFF80, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFFFFFFFFFF, + 0x1FFFFE00FFFFFF, + 0x1FFFFC001FFFFC, + 0x3FFFE0003FFFF0, + 0xFFFF00007FFF80, + 0x3FFFC0001FFFE00, + 0x1FFFF8000FFFF800, + 0x7FFFF0007FFFF000, + 0xFFFFFE00FFFFF000, + 0xFFFFFFFFFFFFFFC1, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFFFFFFFFFF, + 0x3FFFFE00FFFFFF, + 0x1FFFFC001FFFFE, + 0x3FFFE0003FFFF0, + 0xFFFF00007FFF80, + 0x3FFFC0001FFFE00, + 0x1FFFF8000FFFF800, + 0xFFFFF0007FFFF000, + 0xFFFFFE00FFFFF800, + 0xFFFFFFFFFFFFFFC1, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFFFFFFFFFF, + 0x3FFFFE00FFFFFF, + 0x1FFFFC001FFFFE, + 0x3FFFE0003FFFF0, + 0xFFFF00007FFF80, + 0x3FFFC0001FFFE00, + 0x1FFFF8000FFFF800, + 0xFFFFF0007FFFF000, + 0xFFFFFE00FFFFF800, + 0xFFFFFFFFFFFFFFC1, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFFFFFFFFFF, + 0x3FFFFE00FFFFFF, + 0x1FFFFC001FFFFE, + 0x3FFFE0003FFFF0, + 0xFFFF00007FFF80, + 0x3FFFC0001FFFE00, + 0x1FFFF8000FFFF800, + 0xFFFFF0007FFFF000, + 0xFFFFFE00FFFFF800, + 0xFFFFFFFFFFFFFFC1, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFFFFFFFFFF, + 0x3FFFFE00FFFFFF, + 0x1FFFFC001FFFFE, + 0x3FFFE0003FFFF0, + 0xFFFF00007FFF80, + 0x3FFFC0001FFFE00, + 0x1FFFF8000FFFF800, + 0xFFFFF0007FFFF000, + 0xFFFFFE00FFFFF800, + 0xFFFFFFFFFFFFFFC1, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x8FFFFFFFFFFFFFFF, + 0x3FFFFE00FFFFFF, + 0x1FFFFC001FFFFE, + 0x7FFFE0003FFFF0, + 0xFFFF00007FFFC0, + 0x7FFFC0001FFFE00, + 0x1FFFF8000FFFFC00, + 0xFFFFF0007FFFF000, + 0xFFFFFE00FFFFF800, + 0xFFFFFFFFFFFFFFE3, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x8FFFFFFFFFFFFFFF, + 0x3FFFFE00FFFFFF, + 0x1FFFFC001FFFFE, + 0x7FFFE0003FFFF0, + 0xFFFF00007FFFC0, + 0x7FFFC0001FFFE00, + 0x1FFFF8000FFFFC00, + 0xFFFFF0007FFFF000, + 0xFFFFFE00FFFFF800, + 0xFFFFFFFFFFFFFFE3, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x8FFFFFFFFFFFFFFF, + 0x3FFFFE00FFFFFF, + 0x1FFFFC001FFFFE, + 0x7FFFE0003FFFF0, + 0xFFFF00007FFFC0, + 0x7FFFC0001FFFE00, + 0x1FFFF8000FFFFC00, + 0xFFFFF0007FFFF000, + 0xFFFFFE00FFFFF800, + 0xFFFFFFFFFFFFFFE3, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xDFFFFFFFFFFFFFFF, + 0x3FFFFF01FFFFFF, + 0x3FFFFC001FFFFE, + 0x7FFFE0003FFFF8, + 0xFFFF8000FFFFC0, + 0x7FFFE0003FFFE00, + 0x3FFFF8000FFFFC00, + 0xFFFFF0007FFFF800, + 0xFFFFFF01FFFFF800, + 0xFFFFFFFFFFFFFFF7, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x3FFFFF01FFFFFF, + 0x3FFFFC001FFFFE, + 0x7FFFE0003FFFF8, + 0x1FFFF8000FFFFC0, + 0x7FFFE0003FFFF00, + 0x3FFFF8000FFFFC00, + 0xFFFFF0007FFFF800, + 0xFFFFFF01FFFFF800, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x3FFFFF01FFFFFF, + 0x3FFFFC001FFFFE, + 0x7FFFE0003FFFF8, + 0x1FFFF8000FFFFC0, + 0x7FFFE0003FFFF00, + 0x3FFFF8000FFFFC00, + 0xFFFFF0007FFFF800, + 0xFFFFFF01FFFFF800, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFF01FFFFFF, + 0x3FFFFE003FFFFF, + 0x7FFFE0003FFFF8, + 0x1FFFF8000FFFFC0, + 0x7FFFE0003FFFF00, + 0x3FFFF8000FFFFC00, + 0xFFFFF800FFFFF800, + 0xFFFFFF01FFFFFC01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFF01FFFFFF, + 0x3FFFFE003FFFFF, + 0x7FFFE0003FFFF8, + 0x1FFFF8000FFFFC0, + 0x7FFFE0003FFFF00, + 0x3FFFF8000FFFFC00, + 0xFFFFF800FFFFF800, + 0xFFFFFF01FFFFFC01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFF01FFFFFF, + 0x3FFFFE003FFFFF, + 0x7FFFE0003FFFF8, + 0x1FFFF8000FFFFC0, + 0x7FFFE0003FFFF00, + 0x3FFFF8000FFFFC00, + 0xFFFFF800FFFFF800, + 0xFFFFFF01FFFFFC01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFF01FFFFFF, + 0x3FFFFE003FFFFF, + 0x7FFFE0003FFFF8, + 0x1FFFF8000FFFFC0, + 0x7FFFE0003FFFF00, + 0x3FFFF8000FFFFC00, + 0xFFFFF800FFFFF800, + 0xFFFFFF01FFFFFC01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFF83FFFFFF, + 0x3FFFFE003FFFFF, + 0x7FFFF0007FFFF8, + 0x1FFFF8000FFFFC0, + 0x7FFFE0003FFFF00, + 0x3FFFFC001FFFFC00, + 0xFFFFF800FFFFF800, + 0xFFFFFF83FFFFFC01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFF83FFFFFF, + 0x3FFFFE003FFFFF, + 0x7FFFF0007FFFF8, + 0x1FFFF8000FFFFC0, + 0x7FFFE0003FFFF00, + 0x3FFFFC001FFFFC00, + 0xFFFFF800FFFFF800, + 0xFFFFFF83FFFFFC01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFF83FFFFFF, + 0x3FFFFE003FFFFF, + 0x7FFFF0007FFFF8, + 0x1FFFF8000FFFFC0, + 0x7FFFE0003FFFF00, + 0x3FFFFC001FFFFC00, + 0xFFFFF800FFFFF800, + 0xFFFFFF83FFFFFC01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFF83FFFFFF, + 0x3FFFFE003FFFFF, + 0x7FFFF0007FFFF8, + 0x1FFFF8000FFFFC0, + 0x7FFFE0003FFFF00, + 0x3FFFFC001FFFFC00, + 0xFFFFF800FFFFF800, + 0xFFFFFF83FFFFFC01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFF83FFFFFF, + 0x3FFFFE003FFFFF, + 0x7FFFF0007FFFF8, + 0x1FFFF8000FFFFC0, + 0x7FFFE0003FFFF00, + 0x3FFFFC001FFFFC00, + 0xFFFFF800FFFFF800, + 0xFFFFFF83FFFFFC01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFC7FFFFFF, + 0x3FFFFE003FFFFF, + 0xFFFFF0007FFFF8, + 0x1FFFF8000FFFFE0, + 0xFFFFE0003FFFF00, + 0x3FFFFC001FFFFE00, + 0xFFFFF800FFFFF800, + 0xFFFFFFC7FFFFFC01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x80FFFFFFC7FFFFFF, + 0x7FFFFE003FFFFF, + 0xFFFFF0007FFFFC, + 0x1FFFF8000FFFFE0, + 0xFFFFE0003FFFF00, + 0x7FFFFC001FFFFE00, + 0xFFFFF800FFFFFC00, + 0xFFFFFFC7FFFFFE03, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x80FFFFFFC7FFFFFF, + 0x7FFFFE003FFFFF, + 0xFFFFF0007FFFFC, + 0x1FFFF8000FFFFE0, + 0xFFFFE0003FFFF00, + 0x7FFFFC001FFFFE00, + 0xFFFFF800FFFFFC00, + 0xFFFFFFC7FFFFFE03, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x80FFFFFFEFFFFFFF, + 0x7FFFFF007FFFFF, + 0xFFFFF0007FFFFC, + 0x1FFFFC001FFFFE0, + 0xFFFFF0007FFFF00, + 0x7FFFFC001FFFFE00, + 0xFFFFFC01FFFFFC00, + 0xFFFFFFEFFFFFFE03, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x80FFFFFFFFFFFFFF, + 0x7FFFFF007FFFFF, + 0xFFFFF0007FFFFC, + 0x3FFFFC001FFFFE0, + 0xFFFFF0007FFFF80, + 0x7FFFFC001FFFFE00, + 0xFFFFFC01FFFFFC00, + 0xFFFFFFFFFFFFFE03, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x80FFFFFFFFFFFFFF, + 0x7FFFFF007FFFFF, + 0xFFFFF0007FFFFC, + 0x3FFFFC001FFFFE0, + 0xFFFFF0007FFFF80, + 0x7FFFFC001FFFFE00, + 0xFFFFFC01FFFFFC00, + 0xFFFFFFFFFFFFFE03, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x80FFFFFFFFFFFFFF, + 0x7FFFFF007FFFFF, + 0xFFFFF0007FFFFC, + 0x3FFFFC001FFFFE0, + 0xFFFFF0007FFFF80, + 0x7FFFFC001FFFFE00, + 0xFFFFFC01FFFFFC00, + 0xFFFFFFFFFFFFFE03, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x80FFFFFFFFFFFFFF, + 0x7FFFFF007FFFFF, + 0xFFFFF0007FFFFC, + 0x3FFFFC001FFFFE0, + 0xFFFFF0007FFFF80, + 0x7FFFFC001FFFFE00, + 0xFFFFFC01FFFFFC00, + 0xFFFFFFFFFFFFFE03, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x80FFFFFFFFFFFFFF, + 0x7FFFFF007FFFFF, + 0xFFFFF0007FFFFC, + 0x3FFFFC001FFFFE0, + 0xFFFFF0007FFFF80, + 0x7FFFFC001FFFFE00, + 0xFFFFFC01FFFFFC00, + 0xFFFFFFFFFFFFFE03, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xC1FFFFFFFFFFFFFF, + 0x7FFFFF007FFFFF, + 0xFFFFF800FFFFFC, + 0x3FFFFC001FFFFE0, + 0xFFFFF0007FFFF80, + 0x7FFFFE003FFFFE00, + 0xFFFFFC01FFFFFC00, + 0xFFFFFFFFFFFFFF07, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xC1FFFFFFFFFFFFFF, + 0x7FFFFF007FFFFF, + 0xFFFFF800FFFFFC, + 0x3FFFFC001FFFFE0, + 0xFFFFF0007FFFF80, + 0x7FFFFE003FFFFE00, + 0xFFFFFC01FFFFFC00, + 0xFFFFFFFFFFFFFF07, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xC1FFFFFFFFFFFFFF, + 0x7FFFFF007FFFFF, + 0xFFFFF800FFFFFC, + 0x3FFFFC001FFFFE0, + 0xFFFFF0007FFFF80, + 0x7FFFFE003FFFFE00, + 0xFFFFFC01FFFFFC00, + 0xFFFFFFFFFFFFFF07, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xC1FFFFFFFFFFFFFF, + 0x7FFFFF007FFFFF, + 0xFFFFF800FFFFFC, + 0x3FFFFC001FFFFE0, + 0xFFFFF0007FFFF80, + 0x7FFFFE003FFFFE00, + 0xFFFFFC01FFFFFC00, + 0xFFFFFFFFFFFFFF07, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xC1FFFFFFFFFFFFFF, + 0xFFFFFF80FFFFFF, + 0xFFFFF800FFFFFE, + 0x3FFFFC001FFFFE0, + 0xFFFFF0007FFFF80, + 0xFFFFFE003FFFFE00, + 0xFFFFFE03FFFFFE00, + 0xFFFFFFFFFFFFFF07, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xC1FFFFFFFFFFFFFF, + 0xFFFFFF80FFFFFF, + 0xFFFFF800FFFFFE, + 0x3FFFFC001FFFFE0, + 0xFFFFF0007FFFF80, + 0xFFFFFE003FFFFE00, + 0xFFFFFE03FFFFFE00, + 0xFFFFFFFFFFFFFF07, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xE3FFFFFFFFFFFFFF, + 0xFFFFFF80FFFFFF, + 0x1FFFFF800FFFFFE, + 0x3FFFFC001FFFFF0, + 0x1FFFFF0007FFFF80, + 0xFFFFFE003FFFFF00, + 0xFFFFFE03FFFFFE00, + 0xFFFFFFFFFFFFFF8F, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xE3FFFFFFFFFFFFFF, + 0xFFFFFF80FFFFFF, + 0x1FFFFF800FFFFFE, + 0x3FFFFC001FFFFF0, + 0x1FFFFF0007FFFF80, + 0xFFFFFE003FFFFF00, + 0xFFFFFE03FFFFFE00, + 0xFFFFFFFFFFFFFF8F, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xE3FFFFFFFFFFFFFF, + 0xFFFFFF80FFFFFF, + 0x1FFFFF800FFFFFE, + 0x3FFFFC001FFFFF0, + 0x1FFFFF0007FFFF80, + 0xFFFFFE003FFFFF00, + 0xFFFFFE03FFFFFE00, + 0xFFFFFFFFFFFFFF8F, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xF7FFFFFFFFFFFFFF, + 0xFFFFFF80FFFFFF, + 0x1FFFFF800FFFFFE, + 0x3FFFFE003FFFFF0, + 0x1FFFFF800FFFFF80, + 0xFFFFFE003FFFFF00, + 0xFFFFFE03FFFFFE00, + 0xFFFFFFFFFFFFFFDF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xF7FFFFFFFFFFFFFF, + 0xFFFFFF80FFFFFF, + 0x1FFFFF800FFFFFE, + 0x3FFFFE003FFFFF0, + 0x1FFFFF800FFFFF80, + 0xFFFFFE003FFFFF00, + 0xFFFFFE03FFFFFE00, + 0xFFFFFFFFFFFFFFDF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFF80FFFFFF, + 0x1FFFFF800FFFFFE, + 0x7FFFFE003FFFFF0, + 0x1FFFFF800FFFFFC0, + 0xFFFFFE003FFFFF00, + 0xFFFFFE03FFFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFF80FFFFFF, + 0x1FFFFF800FFFFFE, + 0x7FFFFE003FFFFF0, + 0x1FFFFF800FFFFFC0, + 0xFFFFFE003FFFFF00, + 0xFFFFFE03FFFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFC1FFFFFF, + 0x1FFFFFC01FFFFFE, + 0x7FFFFE003FFFFF0, + 0x1FFFFF800FFFFFC0, + 0xFFFFFF007FFFFF00, + 0xFFFFFF07FFFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFC1FFFFFF, + 0x1FFFFFC01FFFFFE, + 0x7FFFFE003FFFFF0, + 0x1FFFFF800FFFFFC0, + 0xFFFFFF007FFFFF00, + 0xFFFFFF07FFFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFC1FFFFFF, + 0x1FFFFFC01FFFFFE, + 0x7FFFFE003FFFFF0, + 0x1FFFFF800FFFFFC0, + 0xFFFFFF007FFFFF00, + 0xFFFFFF07FFFFFE00, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFFC1FFFFFF, + 0x1FFFFFC01FFFFFF, + 0x7FFFFE003FFFFF0, + 0x1FFFFF800FFFFFC0, + 0xFFFFFF007FFFFF00, + 0xFFFFFF07FFFFFF01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFFC1FFFFFF, + 0x1FFFFFC01FFFFFF, + 0x7FFFFE003FFFFF0, + 0x1FFFFF800FFFFFC0, + 0xFFFFFF007FFFFF00, + 0xFFFFFF07FFFFFF01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFFC1FFFFFF, + 0x1FFFFFC01FFFFFF, + 0x7FFFFE003FFFFF0, + 0x1FFFFF800FFFFFC0, + 0xFFFFFF007FFFFF00, + 0xFFFFFF07FFFFFF01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFFC1FFFFFF, + 0x1FFFFFC01FFFFFF, + 0x7FFFFE003FFFFF0, + 0x1FFFFF800FFFFFC0, + 0xFFFFFF007FFFFF00, + 0xFFFFFF07FFFFFF01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFFE3FFFFFF, + 0x3FFFFFC01FFFFFF, + 0x7FFFFE003FFFFF8, + 0x3FFFFF800FFFFFC0, + 0xFFFFFF007FFFFF80, + 0xFFFFFF8FFFFFFF01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFFE3FFFFFF, + 0x3FFFFFC01FFFFFF, + 0x7FFFFE003FFFFF8, + 0x3FFFFF800FFFFFC0, + 0xFFFFFF007FFFFF80, + 0xFFFFFF8FFFFFFF01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFFE3FFFFFF, + 0x3FFFFFC01FFFFFF, + 0x7FFFFE003FFFFF8, + 0x3FFFFF800FFFFFC0, + 0xFFFFFF007FFFFF80, + 0xFFFFFF8FFFFFFF01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFFE3FFFFFF, + 0x3FFFFFC01FFFFFF, + 0x7FFFFE003FFFFF8, + 0x3FFFFF800FFFFFC0, + 0xFFFFFF007FFFFF80, + 0xFFFFFF8FFFFFFF01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFFE3FFFFFF, + 0x3FFFFFC01FFFFFF, + 0x7FFFFE003FFFFF8, + 0x3FFFFF800FFFFFC0, + 0xFFFFFF007FFFFF80, + 0xFFFFFF8FFFFFFF01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1FFFFFFF7FFFFFF, + 0x3FFFFFC01FFFFFF, + 0x7FFFFF007FFFFF8, + 0x3FFFFFC01FFFFFC0, + 0xFFFFFF007FFFFF80, + 0xFFFFFFDFFFFFFF01, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x83FFFFFFFFFFFFFF, + 0x3FFFFFE03FFFFFF, + 0xFFFFFF007FFFFF8, + 0x3FFFFFC01FFFFFE0, + 0xFFFFFF80FFFFFF80, + 0xFFFFFFFFFFFFFF83, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x83FFFFFFFFFFFFFF, + 0x3FFFFFE03FFFFFF, + 0xFFFFFF007FFFFF8, + 0x3FFFFFC01FFFFFE0, + 0xFFFFFF80FFFFFF80, + 0xFFFFFFFFFFFFFF83, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x83FFFFFFFFFFFFFF, + 0x3FFFFFE03FFFFFF, + 0xFFFFFF007FFFFF8, + 0x3FFFFFC01FFFFFE0, + 0xFFFFFF80FFFFFF80, + 0xFFFFFFFFFFFFFF83, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x83FFFFFFFFFFFFFF, + 0x3FFFFFE03FFFFFF, + 0xFFFFFF007FFFFF8, + 0x3FFFFFC01FFFFFE0, + 0xFFFFFF80FFFFFF80, + 0xFFFFFFFFFFFFFF83, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x83FFFFFFFFFFFFFF, + 0x3FFFFFE03FFFFFF, + 0xFFFFFF007FFFFF8, + 0x3FFFFFC01FFFFFE0, + 0xFFFFFF80FFFFFF80, + 0xFFFFFFFFFFFFFF83, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x83FFFFFFFFFFFFFF, + 0x3FFFFFE03FFFFFF, + 0xFFFFFF007FFFFF8, + 0x3FFFFFC01FFFFFE0, + 0xFFFFFF80FFFFFF80, + 0xFFFFFFFFFFFFFF83, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x83FFFFFFFFFFFFFF, + 0x3FFFFFE03FFFFFF, + 0xFFFFFF007FFFFF8, + 0x3FFFFFC01FFFFFE0, + 0xFFFFFF80FFFFFF80, + 0xFFFFFFFFFFFFFF83, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x83FFFFFFFFFFFFFF, + 0x3FFFFFE03FFFFFF, + 0xFFFFFF007FFFFF8, + 0x3FFFFFC01FFFFFE0, + 0xFFFFFF80FFFFFF80, + 0xFFFFFFFFFFFFFF83, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x83FFFFFFFFFFFFFF, + 0x3FFFFFE03FFFFFF, + 0xFFFFFF007FFFFF8, + 0x3FFFFFC01FFFFFE0, + 0xFFFFFF80FFFFFF80, + 0xFFFFFFFFFFFFFF83, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xC7FFFFFFFFFFFFFF, + 0x7FFFFFE03FFFFFF, + 0xFFFFFF007FFFFFC, + 0x7FFFFFC01FFFFFE0, + 0xFFFFFF80FFFFFFC0, + 0xFFFFFFFFFFFFFFC7, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xC7FFFFFFFFFFFFFF, + 0x7FFFFFE03FFFFFF, + 0xFFFFFF007FFFFFC, + 0x7FFFFFC01FFFFFE0, + 0xFFFFFF80FFFFFFC0, + 0xFFFFFFFFFFFFFFC7, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xC7FFFFFFFFFFFFFF, + 0x7FFFFFE03FFFFFF, + 0xFFFFFF007FFFFFC, + 0x7FFFFFC01FFFFFE0, + 0xFFFFFF80FFFFFFC0, + 0xFFFFFFFFFFFFFFC7, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xC7FFFFFFFFFFFFFF, + 0x7FFFFFF07FFFFFF, + 0xFFFFFF007FFFFFC, + 0x7FFFFFC01FFFFFE0, + 0xFFFFFFC1FFFFFFC0, + 0xFFFFFFFFFFFFFFC7, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xC7FFFFFFFFFFFFFF, + 0x7FFFFFF07FFFFFF, + 0xFFFFFF007FFFFFC, + 0x7FFFFFC01FFFFFE0, + 0xFFFFFFC1FFFFFFC0, + 0xFFFFFFFFFFFFFFC7, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xEFFFFFFFFFFFFFFF, + 0x7FFFFFF07FFFFFF, + 0xFFFFFF80FFFFFFC, + 0x7FFFFFE03FFFFFE0, + 0xFFFFFFC1FFFFFFC0, + 0xFFFFFFFFFFFFFFEF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xEFFFFFFFFFFFFFFF, + 0x7FFFFFF07FFFFFF, + 0xFFFFFF80FFFFFFC, + 0x7FFFFFE03FFFFFE0, + 0xFFFFFFC1FFFFFFC0, + 0xFFFFFFFFFFFFFFEF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFF07FFFFFF, + 0x1FFFFFF80FFFFFFC, + 0x7FFFFFE03FFFFFF0, + 0xFFFFFFC1FFFFFFC0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFF07FFFFFF, + 0x1FFFFFF80FFFFFFC, + 0x7FFFFFE03FFFFFF0, + 0xFFFFFFC1FFFFFFC0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFF07FFFFFF, + 0x1FFFFFF80FFFFFFC, + 0x7FFFFFE03FFFFFF0, + 0xFFFFFFC1FFFFFFC0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFF07FFFFFF, + 0x1FFFFFF80FFFFFFC, + 0x7FFFFFE03FFFFFF0, + 0xFFFFFFC1FFFFFFC0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFF07FFFFFF, + 0x1FFFFFF80FFFFFFC, + 0x7FFFFFE03FFFFFF0, + 0xFFFFFFC1FFFFFFC0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x7FFFFFF07FFFFFF, + 0x1FFFFFF80FFFFFFC, + 0x7FFFFFE03FFFFFF0, + 0xFFFFFFC1FFFFFFC0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFF8FFFFFFF, + 0x1FFFFFF80FFFFFFE, + 0xFFFFFFE03FFFFFF0, + 0xFFFFFFE3FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFF8FFFFFFF, + 0x1FFFFFF80FFFFFFE, + 0xFFFFFFE03FFFFFF0, + 0xFFFFFFE3FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFF8FFFFFFF, + 0x1FFFFFF80FFFFFFE, + 0xFFFFFFE03FFFFFF0, + 0xFFFFFFE3FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFF8FFFFFFF, + 0x1FFFFFF80FFFFFFE, + 0xFFFFFFE03FFFFFF0, + 0xFFFFFFE3FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFF8FFFFFFF, + 0x1FFFFFF80FFFFFFE, + 0xFFFFFFE03FFFFFF0, + 0xFFFFFFE3FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFF8FFFFFFF, + 0x1FFFFFF80FFFFFFE, + 0xFFFFFFE03FFFFFF0, + 0xFFFFFFE3FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFF8FFFFFFF, + 0x1FFFFFF80FFFFFFE, + 0xFFFFFFE03FFFFFF0, + 0xFFFFFFE3FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, + Map { + cells: [ + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFDFFFFFFF, + 0x1FFFFFFC1FFFFFFE, + 0xFFFFFFF07FFFFFF0, + 0xFFFFFFF7FFFFFFE0, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0xFFFFFFFFFFFFFFFF, + 0x1, + ], + }, +]; diff --git a/2019-worms/src/game.rs b/2019-worms/src/game.rs new file mode 100644 index 0000000..00289a0 --- /dev/null +++ b/2019-worms/src/game.rs @@ -0,0 +1,779 @@ +use crate::command::{Action, Command}; +use crate::constants::*; +use crate::geometry::*; +use crate::json; + +mod player; +use player::*; + +mod powerup; +use powerup::*; + +pub mod map; +use map::*; + +use arrayvec::ArrayVec; + +#[derive(Debug, PartialEq, Eq, Clone)] +pub struct GameBoard { + pub round: u16, + pub max_rounds: u16, + pub players: [Player; 2], + pub powerups: ArrayVec<[Powerup; 2]>, + pub map: Map, + pub occupied_cells: ArrayVec<[Point2d; 6]>, + pub outcome: SimulationOutcome, +} + +#[derive(Debug, PartialEq, Eq, Clone, Copy)] +pub enum SimulationOutcome { + PlayerWon(usize), + Draw, + Continue, +} + +impl GameBoard { + pub fn new(json: json::State) -> GameBoard { + let player = Player { + active_worm: json.active_worm_index().unwrap(), + moves_score: json.my_player.score - json.my_player.health_score(), + select_moves: json.my_player.remaining_worm_selections, + worms: json + .my_player + .worms + .iter() + .map(|w| Worm { + id: w.id, + health: w.health, + position: Point2d::new(w.position.x, w.position.y), + rounds_until_unfrozen: w.rounds_until_unfrozen, + bombs: w.banana_bombs.as_ref().map(|b| b.count).unwrap_or(0), + snowballs: w.snowballs.as_ref().map(|b| b.count).unwrap_or(0), + }) + .collect(), + }; + + let opponent = Player { + active_worm: 0, + moves_score: json.opponents[0].score - json.opponents[0].health_score(), + select_moves: json.opponents[0].remaining_worm_selections, + worms: json + .opponents + .iter() + .flat_map(|o| &o.worms) + .map(|w| Worm { + id: w.id, + health: w.health, + position: Point2d::new(w.position.x, w.position.y), + rounds_until_unfrozen: w.rounds_until_unfrozen, + bombs: if w.profession == json::WormType::Agent { + STARTING_BOMBS + } else { + 0 + }, + snowballs: if w.profession == json::WormType::Technologist { + STARTING_SNOWBALLS + } else { + 0 + }, + }) + .collect(), + }; + + let mut map = Map::default(); + for cell in json.map.iter().flatten() { + if cell.cell_type == json::CellType::Dirt { + map.set(Point2d::new(cell.x, cell.y)) + } + } + + let players = [player, opponent]; + let occupied_cells = players + .iter() + .flat_map(|p| p.worms.iter()) + .map(|w| w.position) + .collect(); + + GameBoard { + round: json.current_round, + max_rounds: json.max_rounds, + players, + powerups: json + .map + .iter() + .flatten() + .filter_map(|c| { + c.powerup.as_ref().map(|_p| Powerup { + position: Point2d::new(c.x, c.y), + }) + }) + .collect(), + map, + occupied_cells, + outcome: SimulationOutcome::Continue, + } + } + + pub fn update(&mut self, json: json::State) { + for w in &json.my_player.worms { + if let Some(worm) = self.players[0].find_worm_mut(w.id) { + worm.health = w.health; + worm.position = Point2d::new(w.position.x, w.position.y); + worm.bombs = w.banana_bombs.as_ref().map(|b| b.count).unwrap_or(0); + worm.snowballs = w.snowballs.as_ref().map(|b| b.count).unwrap_or(0); + } + } + for w in json.opponents.iter().flat_map(|o| &o.worms) { + if let Some(worm) = self.players[1].find_worm_mut(w.id) { + worm.health = w.health; + worm.position = Point2d::new(w.position.x, w.position.y); + } + } + + if !self.players[1].active_worm_is_frozen() { + if json + .opponents + .iter() + .any(|o| o.previous_command.starts_with("banana")) + { + for worm in &mut self.players[1].worms { + worm.bombs = worm.bombs.saturating_sub(1); + } + } + if json + .opponents + .iter() + .any(|o| o.previous_command.starts_with("snowball")) + { + for worm in &mut self.players[1].worms { + worm.snowballs = worm.snowballs.saturating_sub(1); + } + } + } + + self.players[0].moves_score = json.my_player.score - json.my_player.health_score(); + self.players[1].moves_score = json.opponents[0].score - json.opponents[0].health_score(); + + self.players[0].select_moves = json.my_player.remaining_worm_selections; + self.players[1].select_moves = json.opponents[0].remaining_worm_selections; + + self.powerups = json + .map + .iter() + .flatten() + .filter_map(|c| { + c.powerup.as_ref().map(|_p| Powerup { + position: Point2d::new(c.x, c.y), + }) + }) + .collect(); + + for cell in json.map.iter().flatten() { + let point = Point2d::new(cell.x, cell.y); + + if cfg!(debug_assertions) { + // This checks if my lava map is the same as the game + // engine's lava map. It's off by one because the game + // engine will update its one at the beginning of + // processing the round. + let lava = LAVA_MAP[self.round as usize]; + + let lava_at = lava.at(point); + // NB: Map hasn't been updated yet, so it can be used to tell previous state. + match (&cell.cell_type, self.map.at(point)) { + (json::CellType::Air, Some(false)) => assert!( + lava_at == Some(false), + "Lava at {:?} expected Some(false), but found {:?}", + point, + lava_at + ), + (json::CellType::Air, _) => assert!( + lava_at.is_some(), + "Lava at {:?} expected Some(_), but found {:?}", + point, + lava_at + ), + (json::CellType::Lava, _) => assert!( + lava_at == Some(true), + "Lava at {:?} expected Some(true), but found {:?}", + point, + lava_at + ), + (json::CellType::DeepSpace, _) => assert!( + lava_at == None, + "Lava at {:?} expected None, but found {:?}", + point, + lava_at + ), + (json::CellType::Dirt, _) => assert!( + lava_at.is_some(), + "Lava at {:?} expected Some(_), but found {:?}", + point, + lava_at + ), + }; + } + + if cell.cell_type == json::CellType::Air { + self.map.clear(point) + } + } + + self.clear_dead_worms(); + self.players[0].active_worm = json.active_worm_index().unwrap_or(0); + self.players[1].active_worm = json.opponent_active_worm_index().unwrap_or(0); + + self.round += 1; + debug_assert_eq!(json.current_round, self.round); + } + + pub fn simulate(&mut self, moves: [Command; 2]) { + self.simulate_worms_on_lava(); + self.simulate_tick_frozen_timers(); + + self.simulate_select(moves); + + let actions = self.identify_actions(moves); + + self.simulate_moves(actions); + self.simulate_digs(actions); + self.simulate_bombs(actions); + self.simulate_shoots(actions); + self.simulate_snowballs(actions); + + self.clear_dead_worms(); + + for player in &mut self.players { + player.next_active_worm(); + } + + self.round += 1; + + self.outcome = match ( + self.players[0].worms.len(), + self.players[1].worms.len(), + self.round > self.max_rounds, + ) { + (0, 0, _) => SimulationOutcome::Draw, + (_, 0, _) => SimulationOutcome::PlayerWon(0), + (0, _, _) => SimulationOutcome::PlayerWon(1), + (_, _, true) => SimulationOutcome::Draw, + _ => SimulationOutcome::Continue, + }; + } + + fn simulate_worms_on_lava(&mut self) { + let lava_map = LAVA_MAP[self.round as usize]; + self.players + .iter_mut() + .flat_map(|p| p.worms.iter_mut()) + .filter(|w| lava_map.at(w.position) == Some(true)) + .for_each(|ref mut w| w.health -= LAVA_DAMAGE); + } + + fn simulate_tick_frozen_timers(&mut self) { + self.players + .iter_mut() + .flat_map(|p| p.worms.iter_mut()) + .filter(|w| w.health > 0) + .for_each(|ref mut w| { + w.rounds_until_unfrozen = w.rounds_until_unfrozen.saturating_sub(1) + }); + } + + fn identify_actions(&self, moves: [Command; 2]) -> [Action; 2] { + let mut it = self.players.iter().zip(moves.iter()).map(|(p, m)| { + if p.active_worm_is_frozen() { + Action::DoNothing + } else { + m.action + } + }); + [it.next().unwrap(), it.next().unwrap()] + } + + fn simulate_select(&mut self, moves: [Command; 2]) { + moves + .iter() + .zip(self.players.iter_mut()) + .filter(|(_m, player)| !player.active_worm_is_frozen()) + .for_each(|(m, player)| { + if let Some(worm) = m.worm { + debug_assert!( + player.select_moves > 0, + "Could not make select move, out of select tokens" + ); + player.select_moves = player.select_moves.saturating_sub(1); + player.active_worm = player.find_worm_position(worm).unwrap_or(0); + } + }); + } + + fn simulate_moves(&mut self, actions: [Action; 2]) { + match actions { + [Action::Move(p1), Action::Move(p2)] if p1.x == p2.x && p1.y == p2.y => { + let damage = COLLISION_DAMAGE; + + debug_assert_eq!( + Some(false), + self.map.at(Point2d::new(p1.x, p1.y)), + "Movement target wasn't empty, ({}, {})", + p1.x, + p1.y + ); + // Worms have a 50% chance of swapping places + // here. I'm treating that as an edge case that I + // don't need to handle for now. + for player in &mut self.players { + if let Some(worm) = player.active_worm_mut() { + worm.health -= damage; + } + // You might expect damage score too here, but nope + player.moves_score += MOVE_SCORE; + } + } + _ => { + for player_index in 0..actions.len() { + if let Action::Move(p) = actions[player_index] { + debug_assert_eq!( + Some(false), + self.map.at(p), + "Movement target wasn't empty, ({}, {})", + p.x, + p.y + ); + + self.players[player_index].moves_score += MOVE_SCORE; + + if let Some(worm) = self.players[player_index].active_worm_mut() { + debug_assert!( + (worm.position.x - p.x).abs() <= 1 + && (worm.position.y - p.y).abs() <= 1, + "Tried to move too far away, ({}, {})", + p.x, + p.y + ); + + worm.position = p; + + self.powerups.retain(|power| { + if power.position == worm.position { + worm.health += HEALTH_PACK_VALUE; + false + } else { + true + } + }); + } + } + } + } + } + } + + fn simulate_digs(&mut self, actions: [Action; 2]) { + for player_index in 0..actions.len() { + if let Action::Dig(p) = actions[player_index] { + debug_assert!( + Some(true) == self.map.at(p) + || (player_index == 1 && actions[0] == Action::Dig(p)), + "Tried to dig through air, ({}, {})", + p.x, + p.y + ); + debug_assert! { + (self.players[player_index].active_worm().unwrap().position.x - p.x).abs() <= 1 && + (self.players[player_index].active_worm().unwrap().position.y - p.y).abs() <= 1, + "Tried to dig too far away, ({}, {})", p.x, p.y + }; + + self.players[player_index].moves_score += DIG_SCORE; + + self.map.clear(p); + } + } + } + + fn simulate_bombs(&mut self, actions: [Action; 2]) { + // NB: Damage radius has the cell distance rounded UP, throwing range has the cell distance rounded DOWN + + let map_clone: Map = self.map; + + for player_index in 0..actions.len() { + if let Action::Bomb(p) = actions[player_index] { + if self.map.at(p).is_some() { + if let Some(worm) = self.players[player_index].active_worm_mut() { + debug_assert!(worm.bombs > 0, "Worm is throwing a bomb it doesn't have"); + debug_assert!((worm.position - p).magnitude_squared() < 6 * 6); // max range is 5, but it's 5 after rounding down + + worm.bombs = worm.bombs.saturating_sub(1); + + for &(damage_offset, weapon_damage) in BOMB_DAMAGES.iter() { + let target = p + damage_offset; + + if map_clone.at(target) == Some(true) { + self.map.clear(target); + self.players[player_index].moves_score += DIG_SCORE; + } + self.powerups.retain(|powerup| powerup.position != target); + + let target_own_worm: Option<&mut Worm> = self.players[player_index] + .worms + .iter_mut() + .find(|w| w.position == target); + + if let Some(target_worm) = target_own_worm { + target_worm.health -= weapon_damage; + self.players[player_index].moves_score -= + weapon_damage * ATTACK_SCORE_MULTIPLIER; + if target_worm.health <= 0 { + self.players[player_index].moves_score -= KILL_SCORE; + } + } + + let target_opponent_worm: Option<&mut Worm> = self.players + [GameBoard::opponent(player_index)] + .worms + .iter_mut() + .find(|w| w.position == target); + if let Some(target_worm) = target_opponent_worm { + target_worm.health -= weapon_damage; + self.players[player_index].moves_score += + weapon_damage * ATTACK_SCORE_MULTIPLIER; + if target_worm.health <= 0 { + self.players[player_index].moves_score += KILL_SCORE; + } + } + } + } + } + } + } + } + + pub fn simulate_snowballs(&mut self, actions: [Action; 2]) { + for player_index in 0..actions.len() { + if let Action::Snowball(p) = actions[player_index] { + if self.map.at(p).is_some() { + if let Some(worm) = self.players[player_index].active_worm_mut() { + debug_assert!( + worm.snowballs > 0, + "Worm is throwing a snowball it doesn't have" + ); + debug_assert!((worm.position - p).magnitude_squared() < 6 * 6); // max range is 5, but it's 5 after rounding down + + worm.snowballs = worm.snowballs.saturating_sub(1); + + for &freeze_offset in SNOWBALL_FREEZES.iter() { + let target = p + freeze_offset; + + let target_own_worm: Option<&mut Worm> = self.players[player_index] + .worms + .iter_mut() + .find(|w| w.position == target); + + if let Some(target_worm) = target_own_worm { + target_worm.rounds_until_unfrozen = FREEZE_DURATION; + self.players[player_index].moves_score -= FREEZE_SCORE; + } + + let target_opponent_worm: Option<&mut Worm> = self.players + [GameBoard::opponent(player_index)] + .worms + .iter_mut() + .find(|w| w.position == target); + if let Some(target_worm) = target_opponent_worm { + target_worm.rounds_until_unfrozen = FREEZE_DURATION; + self.players[player_index].moves_score += FREEZE_SCORE; + } + } + } + } + } + } + } + + fn simulate_shoots(&mut self, actions: [Action; 2]) { + 'players_loop: for player_index in 0..actions.len() { + if let Action::Shoot(dir) = actions[player_index] { + if let Some(worm) = self.players[player_index].active_worm() { + let center = worm.position; + let diff = dir.as_vec(); + + let range = if dir.is_diagonal() { + SHOOT_RANGE_DIAGONAL + } else { + SHOOT_RANGE + }; + + for distance in 1..=range { + let target = center + diff * distance; + match self.map.at(target) { + Some(false) => { + let target_own_worm: Option<&mut Worm> = self.players[player_index] + .worms + .iter_mut() + .find(|w| w.position == target); + + if let Some(target_worm) = target_own_worm { + target_worm.health -= SHOOT_DAMAGE; + self.players[player_index].moves_score -= + SHOOT_DAMAGE * ATTACK_SCORE_MULTIPLIER; + if target_worm.health <= 0 { + self.players[player_index].moves_score -= KILL_SCORE; + } + continue 'players_loop; + } + + let target_opponent_worm: Option<&mut Worm> = self.players + [GameBoard::opponent(player_index)] + .worms + .iter_mut() + .find(|w| w.position == target); + + if let Some(target_worm) = target_opponent_worm { + target_worm.health -= SHOOT_DAMAGE; + self.players[player_index].moves_score += + SHOOT_DAMAGE * ATTACK_SCORE_MULTIPLIER; + if target_worm.health <= 0 { + self.players[player_index].moves_score += KILL_SCORE; + } + + continue 'players_loop; + } + } + _ => break, + } + } + + // You get here if the shot missed. Hits are an early return. + self.players[player_index].moves_score += MISSED_ATTACK_SCORE; + } + } + } + } + + fn clear_dead_worms(&mut self) { + for player in &mut self.players { + player.clear_dead_worms(); + } + + self.occupied_cells = self + .players + .iter() + .flat_map(|p| p.worms.iter()) + .map(|w| w.position) + .collect(); + } + + pub fn opponent(player_index: usize) -> usize { + (player_index + 1) % 2 + } + + fn selects_iter(&self, player_index: usize) -> impl Iterator, &Worm)> { + let no_select = self.players[player_index] + .active_worm() + .into_iter() + .map(|w| (None, w)); + + let has_select_moves = self.players[player_index].select_moves > 0; + let active_worm_index = self.players[player_index].active_worm; + let selects = self.players[player_index] + .worms + .iter() + .enumerate() + .filter(move |(p, _w)| has_select_moves && active_worm_index != *p) + .map(|(_p, w)| (Some(w.id), w)); + + no_select.chain(selects) + } + + fn pruned_valid_move_commands(&self, player_index: usize) -> ArrayVec<[Command; 8]> { + self.players[player_index] + .active_worm() + .into_iter() + .flat_map(|worm| { + // TODO: If you aren't on lava, don't step onto the lava + Direction::ALL + .iter() + .map(Direction::as_vec) + .map(move |d| worm.position + d) + .filter(|p| !self.occupied_cells.contains(p)) + .filter_map(|p| match self.map.at(p) { + Some(false) => Some(Action::Move(p)), + Some(true) => Some(Action::Dig(p)), + _ => None, + }) + .map(Command::new) + }) + .collect() + } + + fn pruned_valid_bomb_commands(&self, player_index: usize) -> Vec { + self.selects_iter(player_index) + .filter(|(_, worm)| worm.bombs > 0) + .flat_map(|(select, worm)| { + let mut result = Vec::with_capacity((BOMB_RANGE * 2 + 1).pow(2) as usize - 12); + let own_worm_positions: ArrayVec<[Point2d; 3]> = self.players[player_index] + .worms + .iter() + .map(|w| w.position) + .collect(); + let opponent_worm_positions: ArrayVec<[Point2d; 3]> = self.players + [GameBoard::opponent(player_index)] + .worms + .iter() + .map(|w| w.position) + .collect(); + + for y in worm.position.y - BOMB_RANGE..=worm.position.y + BOMB_RANGE { + for x in worm.position.x - BOMB_RANGE..=worm.position.x + BOMB_RANGE { + let target = Point2d::new(x, y); + if self.map.at(target).is_some() + && (worm.position - target).magnitude_squared() + < (BOMB_RANGE + 1).pow(2) + { + let own_affected_worms = own_worm_positions.iter().any(|p| { + (target - *p).magnitude_squared() + <= BOMB_DAMAGE_RANGE * BOMB_DAMAGE_RANGE + }); + let opponent_affected_worms = opponent_worm_positions.iter().any(|p| { + (target - *p).magnitude_squared() + <= BOMB_DAMAGE_RANGE * BOMB_DAMAGE_RANGE + }); + + if !own_affected_worms && opponent_affected_worms { + result.push(Command { + worm: select, + action: Action::Bomb(target), + }); + } + } + } + } + + result + }) + .collect() + } + + fn pruned_valid_snowball_commands(&self, player_index: usize) -> Vec { + self.selects_iter(player_index) + .filter(|(_, worm)| worm.snowballs > 0) + .flat_map(|(select, worm)| { + let mut result = Vec::with_capacity((SNOWBALL_RANGE * 2 + 1).pow(2) as usize - 12); + let own_worm_positions: ArrayVec<[Point2d; 3]> = self.players[player_index] + .worms + .iter() + .map(|w| w.position) + .collect(); + let opponent_worm_positions: ArrayVec<[Point2d; 3]> = self.players + [GameBoard::opponent(player_index)] + .worms + .iter() + .map(|w| w.position) + .collect(); + + for y in worm.position.y - SNOWBALL_RANGE..=worm.position.y + SNOWBALL_RANGE { + for x in worm.position.x - SNOWBALL_RANGE..=worm.position.x + SNOWBALL_RANGE { + let target = Point2d::new(x, y); + if self.map.at(target).is_some() + && (worm.position - target).magnitude_squared() + < (SNOWBALL_RANGE + 1).pow(2) + { + let own_affected_worms = own_worm_positions.iter().any(|p| { + (target - *p).magnitude_squared() + <= SNOWBALL_FREEZE_RANGE * SNOWBALL_FREEZE_RANGE + }); + let opponent_affected_worms = opponent_worm_positions.iter().any(|p| { + (target - *p).magnitude_squared() + <= SNOWBALL_FREEZE_RANGE * SNOWBALL_FREEZE_RANGE + }); + + if !own_affected_worms && opponent_affected_worms { + result.push(Command { + worm: select, + action: Action::Snowball(target), + }); + } + } + } + } + + result + }) + .collect() + } + + fn pruned_valid_shoot_commands(&self, player_index: usize) -> Vec { + self.selects_iter(player_index) + .flat_map(|(select, worm)| { + self.players[GameBoard::opponent(player_index)] + .worms + .iter() + .filter_map(move |w| { + let diff = w.position - worm.position; + if diff.x == 0 && diff.y.abs() <= SHOOT_RANGE { + if diff.y > 0 { + Some((Direction::South, diff.y)) + } else { + Some((Direction::North, -diff.y)) + } + } else if diff.y == 0 && diff.x.abs() <= SHOOT_RANGE { + if diff.x > 0 { + Some((Direction::East, diff.x)) + } else { + Some((Direction::West, -diff.x)) + } + } else if diff.x.abs() == diff.y.abs() + && diff.x.abs() <= SHOOT_RANGE_DIAGONAL + { + match (diff.x > 0, diff.y > 0) { + (true, true) => Some((Direction::SouthEast, diff.x)), + (false, true) => Some((Direction::SouthWest, -diff.x)), + (true, false) => Some((Direction::NorthEast, diff.x)), + (false, false) => Some((Direction::NorthWest, -diff.x)), + } + } else { + None + } + }) + .filter(move |(dir, range)| { + let diff = dir.as_vec(); + // NB: This is up to range EXCLUSIVE, so if there's + // anything in the way, even another good shot, skip. + !(1..*range).any(|distance| { + self.map.at(worm.position + diff * distance) != Some(false) + && !self + .players + .iter() + .flat_map(|p| p.worms.iter()) + .any(|w| w.position == worm.position + diff * distance) + }) + }) + .map(move |(dir, _range)| Command { + worm: select, + action: Action::Shoot(dir), + }) + }) + .collect() + } + + pub fn pruned_valid_moves(&self, player_index: usize) -> Vec { + if self.players[player_index].active_worm_is_frozen_after_tick() { + vec![Command::new(Action::DoNothing)] + } else { + self.pruned_valid_shoot_commands(player_index) + .iter() + .chain(self.pruned_valid_move_commands(player_index).iter()) + .chain(self.pruned_valid_bomb_commands(player_index).iter()) + .chain(self.pruned_valid_snowball_commands(player_index).iter()) + .chain([Command::new(Action::DoNothing)].iter()) + .cloned() + .collect() + } + } +} + +#[cfg(test)] +mod test {} diff --git a/2019-worms/src/game/map.rs b/2019-worms/src/game/map.rs new file mode 100644 index 0000000..84ec99a --- /dev/null +++ b/2019-worms/src/game/map.rs @@ -0,0 +1,49 @@ +use crate::constants::*; +use crate::geometry::*; + +#[derive(Default, Debug, PartialEq, Eq, Clone, Copy)] +pub struct Map { + pub cells: [u64; MAP_U64S], +} + +impl Map { + fn internal_index(p: Point2d) -> Option<(usize, usize)> { + if p.y < 0 || p.y as usize >= MAP_SIZE { + None + } else { + let row_data = &MAP_ROW_SIZE[p.y as usize]; + if p.x < row_data.x_offset as i8 || p.x as usize >= row_data.x_offset + row_data.len() { + None + } else { + let global_bit = row_data.start_bit + p.x as usize - row_data.x_offset; + let integer = global_bit / 64; + let bit = global_bit % 64; + Some((integer, bit)) + } + } + } + + pub fn at(&self, p: Point2d) -> Option { + Map::internal_index(p).map(|(integer, bit)| { + let mask = 1 << bit; + self.cells[integer] & mask != 0 + }) + } + + pub fn set(&mut self, p: Point2d) { + if let Some((integer, bit)) = Map::internal_index(p) { + let mask = 1 << bit; + self.cells[integer] |= mask; + } else { + panic!("Tried to set an out of bounds bit, {:?}", p); + } + } + pub fn clear(&mut self, p: Point2d) { + if let Some((integer, bit)) = Map::internal_index(p) { + let mask = !(1 << bit); + self.cells[integer] &= mask; + } else { + panic!("Tried to set an out of bounds bit, {:?}", p); + } + } +} diff --git a/2019-worms/src/game/player.rs b/2019-worms/src/game/player.rs new file mode 100644 index 0000000..0874c76 --- /dev/null +++ b/2019-worms/src/game/player.rs @@ -0,0 +1,259 @@ +use crate::geometry::*; +use arrayvec::ArrayVec; + +#[derive(Debug, PartialEq, Eq, Clone)] +pub struct Player { + pub moves_score: i32, + pub active_worm: usize, + pub select_moves: u8, + pub worms: ArrayVec<[Worm; 3]>, +} + +#[derive(Debug, PartialEq, Eq, Clone)] +pub struct Worm { + pub id: i32, + pub health: i32, + pub position: Point2d, + pub bombs: u8, + pub snowballs: u8, + pub rounds_until_unfrozen: u8, +} + +impl Player { + pub fn find_worm_position(&self, id: i32) -> Option { + self.worms.iter().position(|w| w.id == id) + } + + pub fn find_worm(&self, id: i32) -> Option<&Worm> { + self.worms.iter().find(|w| w.id == id) + } + + pub fn find_worm_mut(&mut self, id: i32) -> Option<&mut Worm> { + self.worms.iter_mut().find(|w| w.id == id) + } + + pub fn active_worm(&self) -> Option<&Worm> { + self.worms.get(self.active_worm) + } + + pub fn active_worm_mut(&mut self) -> Option<&mut Worm> { + self.worms.get_mut(self.active_worm) + } + + pub fn health(&self) -> i32 { + self.worms.iter().map(|w| w.health).sum() + } + + pub fn max_worm_health(&self) -> i32 { + self.worms.iter().map(|w| w.health).max().unwrap_or(0) + } + + pub fn clear_dead_worms(&mut self) { + for worm_index in (0..self.worms.len()).rev() { + if self.worms[worm_index].health <= 0 { + self.worms.remove(worm_index); + if self.active_worm >= worm_index { + self.active_worm = if self.active_worm > 0 { + self.active_worm - 1 + } else if self.worms.len() > 0 { + self.worms.len() - 1 + } else { + 0 + }; + } + } + } + } + + pub fn next_active_worm(&mut self) { + self.active_worm = (self.active_worm + 1) + .checked_rem(self.worms.len()) + .unwrap_or(0); + } + + fn health_score(&self) -> i32 { + self.health() / 3 + } + + pub fn score(&self) -> i32 { + self.moves_score + self.health_score() + } + + pub fn active_worm_is_frozen(&self) -> bool { + self.active_worm() + .map(|worm| worm.rounds_until_unfrozen > 0) + .unwrap_or(false) + } + + pub fn active_worm_is_frozen_after_tick(&self) -> bool { + self.active_worm() + .map(|worm| worm.rounds_until_unfrozen > 1) + .unwrap_or(false) + } + + pub fn bombs(&self) -> u8 { + self.worms.iter().map(|w| w.bombs).sum() + } + + pub fn snowballs(&self) -> u8 { + self.worms.iter().map(|w| w.snowballs).sum() + } +} + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn clear_dead_worms_after_active_worm() { + let mut worms = ArrayVec::new(); + worms.push(Worm { + id: 1, + health: 50, + position: Point2d::new(0, 0), + rounds_until_unfrozen: 0, + bombs: 0, + snowballs: 0, + }); + worms.push(Worm { + id: 2, + health: 10, + position: Point2d::new(0, 0), + rounds_until_unfrozen: 0, + bombs: 0, + snowballs: 0, + }); + worms.push(Worm { + id: 3, + health: -2, + position: Point2d::new(0, 0), + rounds_until_unfrozen: 0, + bombs: 0, + snowballs: 0, + }); + let mut player = Player { + active_worm: 1, + moves_score: 0, + select_moves: 0, + worms, + }; + + player.clear_dead_worms(); + + assert_eq!(2, player.worms.len()); + assert_eq!(1, player.active_worm); + + assert_eq!(1, player.worms[0].id); + assert_eq!(2, player.worms[1].id); + } + + #[test] + fn clear_dead_worms_before_active_worm() { + let mut worms = ArrayVec::new(); + worms.push(Worm { + id: 1, + health: 0, + position: Point2d::new(0, 0), + rounds_until_unfrozen: 0, + bombs: 0, + snowballs: 0, + }); + worms.push(Worm { + id: 2, + health: 10, + position: Point2d::new(0, 0), + rounds_until_unfrozen: 0, + bombs: 0, + snowballs: 0, + }); + worms.push(Worm { + id: 3, + health: 2, + position: Point2d::new(0, 0), + rounds_until_unfrozen: 0, + bombs: 0, + snowballs: 0, + }); + let mut player = Player { + active_worm: 1, + moves_score: 0, + worms, + select_moves: 0, + }; + + player.clear_dead_worms(); + + assert_eq!(2, player.worms.len()); + assert_eq!(0, player.active_worm); + + assert_eq!(2, player.worms[0].id); + assert_eq!(3, player.worms[1].id); + } + + #[test] + fn clear_dead_worms_before_active_worm_wrapping() { + let mut worms = ArrayVec::new(); + worms.push(Worm { + id: 1, + health: 0, + position: Point2d::new(0, 0), + rounds_until_unfrozen: 0, + bombs: 0, + snowballs: 0, + }); + worms.push(Worm { + id: 2, + health: 10, + position: Point2d::new(0, 0), + rounds_until_unfrozen: 0, + bombs: 0, + snowballs: 0, + }); + worms.push(Worm { + id: 3, + health: 2, + position: Point2d::new(0, 0), + rounds_until_unfrozen: 0, + bombs: 0, + snowballs: 0, + }); + let mut player = Player { + active_worm: 0, + moves_score: 0, + worms, + select_moves: 0, + }; + + player.clear_dead_worms(); + + assert_eq!(2, player.worms.len()); + assert_eq!(1, player.active_worm); + + assert_eq!(2, player.worms[0].id); + assert_eq!(3, player.worms[1].id); + } + + #[test] + fn clear_last_dead_worm() { + let mut worms = ArrayVec::new(); + worms.push(Worm { + id: 1, + health: -10, + position: Point2d::new(0, 0), + rounds_until_unfrozen: 0, + bombs: 0, + snowballs: 0, + }); + let mut player = Player { + active_worm: 0, + moves_score: 0, + worms, + select_moves: 0, + }; + + player.clear_dead_worms(); + + assert_eq!(0, player.worms.len()); + // active worm is undefined in this case, but clearing the worms must not panic. + } +} diff --git a/2019-worms/src/game/powerup.rs b/2019-worms/src/game/powerup.rs new file mode 100644 index 0000000..47e73a1 --- /dev/null +++ b/2019-worms/src/game/powerup.rs @@ -0,0 +1,6 @@ +use crate::geometry::*; + +#[derive(Debug, PartialEq, Eq, Clone, Copy)] +pub struct Powerup { + pub position: Point2d, +} diff --git a/2019-worms/src/geometry.rs b/2019-worms/src/geometry.rs new file mode 100644 index 0000000..1bcdace --- /dev/null +++ b/2019-worms/src/geometry.rs @@ -0,0 +1,6 @@ +mod vec; +pub use self::vec::*; +mod point; +pub use self::point::*; +mod direction; +pub use self::direction::*; diff --git a/2019-worms/src/geometry/direction.rs b/2019-worms/src/geometry/direction.rs new file mode 100644 index 0000000..e37f750 --- /dev/null +++ b/2019-worms/src/geometry/direction.rs @@ -0,0 +1,67 @@ +use crate::geometry::vec::Vec2d; +use std::fmt; + +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum Direction { + North, + NorthEast, + East, + SouthEast, + South, + SouthWest, + West, + NorthWest, +} + +impl fmt::Display for Direction { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + use Direction::*; + let s = match self { + North => "N", + NorthEast => "NE", + East => "E", + SouthEast => "SE", + South => "S", + SouthWest => "SW", + West => "W", + NorthWest => "NW", + }; + f.write_str(s) + } +} + +impl Direction { + pub fn is_diagonal(&self) -> bool { + use Direction::*; + + match self { + NorthEast | SouthEast | SouthWest | NorthWest => true, + _ => false, + } + } + + pub fn as_vec(&self) -> Vec2d { + use Direction::*; + match self { + North => Vec2d::new(0, -1), + NorthEast => Vec2d::new(1, -1), + East => Vec2d::new(1, 0), + SouthEast => Vec2d::new(1, 1), + South => Vec2d::new(0, 1), + SouthWest => Vec2d::new(-1, 1), + West => Vec2d::new(-1, 0), + NorthWest => Vec2d::new(-1, -1), + } + } + + pub const ALL: [Direction; 8] = [ + Direction::North, + Direction::NorthEast, + Direction::East, + Direction::SouthEast, + Direction::South, + Direction::SouthWest, + Direction::West, + Direction::NorthWest, + ]; +} diff --git a/2019-worms/src/geometry/point.rs b/2019-worms/src/geometry/point.rs new file mode 100644 index 0000000..1ab9b36 --- /dev/null +++ b/2019-worms/src/geometry/point.rs @@ -0,0 +1,37 @@ +use crate::geometry::vec::*; + +use std::ops::*; + +#[derive(Debug, Default, Clone, Copy, Hash, PartialEq, Eq)] +pub struct Point2d { + pub x: i8, + pub y: i8, +} + +impl Point2d { + pub fn new(x: i8, y: i8) -> Point2d { + Point2d { x, y } + } +} + +impl Add for Point2d { + type Output = Self; + + fn add(self, other: Vec2d) -> Self { + Point2d { + x: self.x.saturating_add(other.x), + y: self.y.saturating_add(other.y), + } + } +} + +impl Sub for Point2d { + type Output = Vec2d; + + fn sub(self, other: Self) -> Vec2d { + Vec2d { + x: self.x.saturating_sub(other.x), + y: self.y.saturating_sub(other.y), + } + } +} diff --git a/2019-worms/src/geometry/vec.rs b/2019-worms/src/geometry/vec.rs new file mode 100644 index 0000000..375a0f9 --- /dev/null +++ b/2019-worms/src/geometry/vec.rs @@ -0,0 +1,62 @@ +use std::ops::*; + +#[derive(Debug, Default, Clone, Copy, Hash, PartialEq, Eq)] +pub struct Vec2d { + pub x: i8, + pub y: i8, +} + +impl Vec2d { + pub const fn new(x: i8, y: i8) -> Vec2d { + Vec2d { x, y } + } + pub fn magnitude_squared(&self) -> i8 { + self.x + .saturating_pow(2) + .saturating_add(self.y.saturating_pow(2)) + } +} + +impl Add for Vec2d { + type Output = Self; + + fn add(self, other: Self) -> Self { + Vec2d { + x: self.x.saturating_add(other.x), + y: self.y.saturating_add(other.y), + } + } +} + +impl Sub for Vec2d { + type Output = Self; + + fn sub(self, other: Self) -> Self { + Vec2d { + x: self.x.saturating_sub(other.x), + y: self.y.saturating_sub(other.y), + } + } +} + +impl Mul for Vec2d { + type Output = Self; + + fn mul(self, other: i8) -> Self { + Vec2d { + x: self.x.saturating_mul(other), + y: self.y.saturating_mul(other), + } + } +} + +impl Neg for Vec2d { + type Output = Self; + + fn neg(self) -> Self { + Vec2d { + x: -self.x, + y: -self.y, + } + } +} diff --git a/2019-worms/src/json.rs b/2019-worms/src/json.rs new file mode 100644 index 0000000..a83f102 --- /dev/null +++ b/2019-worms/src/json.rs @@ -0,0 +1,554 @@ +use std::error::Error; +use std::fs::File; +use std::io::prelude::*; +use std::path::Path; + +use serde::{Deserialize, Serialize}; +use serde_json; + +pub fn read_state_from_json_file(filename: &Path) -> Result> { + let mut file = File::open(filename)?; + let mut content = String::new(); + file.read_to_string(&mut content)?; + let state: State = serde_json::from_str(content.as_ref())?; + + Ok(state) +} + +// TODO: Narrow numeric types +// TODO: comment out stuff I don't want / need + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct State { + pub current_round: u16, + pub max_rounds: u16, + pub pushback_damage: i32, + pub lava_damage: i32, + pub map_size: u8, + pub current_worm_id: i32, + pub consecutive_do_nothing_count: u32, + pub my_player: Player, + pub opponents: Vec, + pub map: Vec>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct Player { + pub id: i32, + pub score: i32, + pub health: i32, + pub worms: Vec, + pub remaining_worm_selections: u8, +} + +impl Player { + pub fn health_score(&self) -> i32 { + self.health / 3 + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct PlayerWorm { + pub id: i32, + pub health: i32, + pub position: Position, + pub digging_range: u32, + pub movement_range: u32, + pub rounds_until_unfrozen: u8, + pub weapon: Weapon, + pub banana_bombs: Option, + pub snowballs: Option, + pub profession: WormType, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct Opponent { + pub id: i32, + pub score: i32, + pub current_worm_id: i32, + pub previous_command: String, + pub worms: Vec, + pub remaining_worm_selections: u8, +} + +impl Opponent { + pub fn health_score(&self) -> i32 { + self.worms.iter().map(|w| w.health).sum::() / 3 + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct OpponentWorm { + pub id: i32, + pub health: i32, + pub position: Position, + pub digging_range: u32, + pub movement_range: u32, + pub rounds_until_unfrozen: u8, + pub profession: WormType, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "PascalCase")] +pub enum WormType { + Commando, + Agent, + Technologist, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct Cell { + pub x: i8, + pub y: i8, + #[serde(rename = "type")] + pub cell_type: CellType, + pub occupier: Option, + pub powerup: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +pub enum CellType { + Air, + Dirt, + Lava, + DeepSpace, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(untagged)] +#[serde(rename_all = "camelCase")] +pub enum CellWorm { + #[serde(rename_all = "camelCase")] + PlayerWorm { + id: i32, + player_id: i32, + health: i32, + position: Position, + digging_range: u32, + movement_range: u32, + weapon: Weapon, + }, + #[serde(rename_all = "camelCase")] + OpponentWorm { + id: i32, + player_id: i32, + health: i32, + position: Position, + digging_range: u32, + movement_range: u32, + }, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct Powerup { + #[serde(rename = "type")] + pub powerup_type: PowerupType, + pub value: i32, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +pub enum PowerupType { + HealthPack, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct Position { + pub x: i8, + pub y: i8, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct Weapon { + pub damage: i32, + pub range: u8, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct Bomb { + pub damage: i32, + pub range: u8, + pub count: u8, + pub damage_radius: u8, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct Snowball { + pub freeze_duration: u8, + pub range: u8, + pub count: u8, + pub freeze_radius: u8, +} + +impl State { + pub fn active_worm_index(&self) -> Option { + self.my_player + .worms + .iter() + .filter(|w| w.health > 0) + .position(|w| w.id == self.current_worm_id) + } + + pub fn opponent_active_worm_index(&self) -> Option { + self.opponents[0] + .worms + .iter() + .filter(|w| w.health > 0) + .position(|w| w.id == self.opponents[0].current_worm_id) + } +} + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn example_parses_correctly() { + let example = r#" +{ + "currentRound": 0, + "maxRounds": 200, + "pushbackDamage": 20, + "lavaDamage": 3, + "mapSize": 33, + "currentWormId": 1, + "consecutiveDoNothingCount": 0, + "myPlayer": { + "id": 1, + "score": 100, + "health": 300, + "currentWormId": 1, + "remainingWormSelections": 1, + "worms": [ + { + "id": 1, + "health": 100, + "position": { + "x": 24, + "y": 29 + }, + "weapon": { + "damage": 1, + "range": 3 + }, + "bananaBombs": { + "damage": 20, + "range": 5, + "count": 3, + "damageRadius": 2 + }, + "diggingRange": 1, + "movementRange": 1, + "roundsUntilUnfrozen": 0, + "profession": "Agent" + }, + { + "id": 2, + "health": 150, + "position": { + "x": 1, + "y": 16 + }, + "weapon": { + "damage": 1, + "range": 3 + }, + "diggingRange": 1, + "movementRange": 1, + "roundsUntilUnfrozen": 0, + "profession": "Commando" + }, + { + "id": 3, + "health": 100, + "position": { + "x": 24, + "y": 4 + }, + "weapon": { + "damage": 8, + "range": 4 + }, + "snowballs": { + "freezeDuration": 5, + "range": 5, + "count": 3, + "freezeRadius": 1 + }, + "diggingRange": 1, + "movementRange": 1, + "roundsUntilUnfrozen": 3, + "profession": "Technologist" + } + ] + }, + "opponents": [ + { + "id": 2, + "score": 100, + "currentWormId": 3, + "remainingWormSelections": 2, + "previousCommand": "nothing", + "worms": [ + { + "id": 1, + "health": 100, + "position": { + "x": 31, + "y": 16 + }, + "diggingRange": 1, + "movementRange": 1, + "roundsUntilUnfrozen": 0, + "profession": "Commando" + } + ] + } + ], + "map": [ + [ + { + "x": 0, + "y": 0, + "type": "DEEP_SPACE" + }, + { + "x": 1, + "y": 0, + "type": "AIR" + }, + { + "x": 2, + "y": 0, + "type": "DIRT" + } + ], + [ + { + "x": 0, + "y": 1, + "type": "AIR", + "powerup": { + "type": "HEALTH_PACK", + "value": 5 + } + }, + { + "x": 1, + "y": 1, + "type": "AIR", + "occupier": { + "id": 1, + "playerId": 2, + "health": 100, + "position": { + "x": 1, + "y": 1 + }, + "diggingRange": 1, + "movementRange": 1 + } + }, + { + "x": 2, + "y": 1, + "type": "AIR", + "occupier": { + "id": 1, + "playerId": 1, + "health": 100, + "position": { + "x": 2, + "y": 1 + }, + "weapon": { + "damage": 1, + "range": 3 + }, + "diggingRange": 1, + "movementRange": 1 + } + } + ] + ] +}"#; + + let expected = State { + current_round: 0, + max_rounds: 200, + pushback_damage: 20, + lava_damage: 3, + map_size: 33, + current_worm_id: 1, + consecutive_do_nothing_count: 0, + my_player: Player { + id: 1, + score: 100, + health: 300, + remaining_worm_selections: 1, + worms: vec![ + PlayerWorm { + id: 1, + health: 100, + position: Position { x: 24, y: 29 }, + weapon: Weapon { + damage: 1, + range: 3, + }, + digging_range: 1, + movement_range: 1, + banana_bombs: Some(Bomb { + damage: 20, + range: 5, + count: 3, + damage_radius: 2, + }), + snowballs: None, + rounds_until_unfrozen: 0, + profession: WormType::Agent, + }, + PlayerWorm { + id: 2, + health: 150, + position: Position { x: 1, y: 16 }, + weapon: Weapon { + damage: 1, + range: 3, + }, + digging_range: 1, + movement_range: 1, + banana_bombs: None, + snowballs: None, + rounds_until_unfrozen: 0, + profession: WormType::Commando, + }, + PlayerWorm { + id: 3, + health: 100, + position: Position { x: 24, y: 4 }, + weapon: Weapon { + damage: 8, + range: 4, + }, + digging_range: 1, + movement_range: 1, + banana_bombs: None, + snowballs: Some(Snowball { + freeze_duration: 5, + range: 5, + count: 3, + freeze_radius: 1, + }), + rounds_until_unfrozen: 3, + profession: WormType::Technologist, + }, + ], + }, + opponents: vec![Opponent { + id: 2, + score: 100, + remaining_worm_selections: 2, + current_worm_id: 3, + previous_command: "nothing".into(), + worms: vec![OpponentWorm { + id: 1, + health: 100, + position: Position { x: 31, y: 16 }, + digging_range: 1, + movement_range: 1, + rounds_until_unfrozen: 0, + profession: WormType::Commando, + }], + }], + map: vec![ + vec![ + Cell { + x: 0, + y: 0, + cell_type: CellType::DeepSpace, + occupier: None, + powerup: None, + }, + Cell { + x: 1, + y: 0, + cell_type: CellType::Air, + occupier: None, + powerup: None, + }, + Cell { + x: 2, + y: 0, + cell_type: CellType::Dirt, + occupier: None, + powerup: None, + }, + ], + vec![ + Cell { + x: 0, + y: 1, + cell_type: CellType::Air, + occupier: None, + powerup: Some(Powerup { + powerup_type: PowerupType::HealthPack, + value: 5, + }), + }, + Cell { + x: 1, + y: 1, + cell_type: CellType::Air, + occupier: Some(CellWorm::OpponentWorm { + id: 1, + player_id: 2, + health: 100, + position: Position { x: 1, y: 1 }, + digging_range: 1, + movement_range: 1, + }), + powerup: None, + }, + Cell { + x: 2, + y: 1, + cell_type: CellType::Air, + occupier: Some(CellWorm::PlayerWorm { + id: 1, + player_id: 1, + health: 100, + position: Position { x: 2, y: 1 }, + digging_range: 1, + movement_range: 1, + weapon: Weapon { + damage: 1, + range: 3, + }, + }), + powerup: None, + }, + ], + ], + }; + + let parsed: State = serde_json::from_str(example).unwrap(); + + assert_eq!( + parsed, expected, + "Parsed value did not match the expected value.\nParsed = {:#?}\nExpected = {:#?}", + parsed, expected + ); + } +} diff --git a/2019-worms/src/lib.rs b/2019-worms/src/lib.rs new file mode 100644 index 0000000..9922cce --- /dev/null +++ b/2019-worms/src/lib.rs @@ -0,0 +1,8 @@ +#![warn(clippy::all)] + +pub mod command; +pub mod json; +pub mod geometry; +pub mod game; +pub mod strategy; +pub mod constants; diff --git a/2019-worms/src/main.rs b/2019-worms/src/main.rs new file mode 100644 index 0000000..4f98e75 --- /dev/null +++ b/2019-worms/src/main.rs @@ -0,0 +1,46 @@ +use std::io::prelude::*; +use std::io::stdin; +use std::path::Path; + +use time::{Duration, PreciseTime}; + +use steam_powered_wyrm::command::{Action, Command}; +use steam_powered_wyrm::game; +use steam_powered_wyrm::json; +use steam_powered_wyrm::strategy::{choose_move, ScoreConfig}; + +fn main() { + let max_time = Duration::milliseconds(900); + let config = ScoreConfig::default(); + + let mut game_board = None; + for line in stdin().lock().lines() { + let start_time = PreciseTime::now(); + + let round_number = line.expect("Failed to read line from stdin: {}"); + + let command = match json::read_state_from_json_file(&Path::new(&format!( + "./rounds/{}/state.json", + round_number + ))) { + Ok(json_state) => match &mut game_board { + None => { + let new_board = game::GameBoard::new(json_state); + let command = choose_move(&new_board, &config, start_time, max_time); + game_board = Some(new_board); + command + } + Some(game_board) => { + game_board.update(json_state); + choose_move(&game_board, &config, start_time, max_time) + } + }, + Err(e) => { + #[cfg(feature = "logging")] + eprintln!("WARN: State file could not be parsed: {}", e); + Command::new(Action::DoNothing) + } + }; + println!("C;{};{}", round_number, command); + } +} diff --git a/2019-worms/src/strategy.rs b/2019-worms/src/strategy.rs new file mode 100644 index 0000000..fce842b --- /dev/null +++ b/2019-worms/src/strategy.rs @@ -0,0 +1,5 @@ +//mod mcts; +//pub use mcts::{choose_move, Node}; + +mod minimax; +pub use minimax::{choose_move, choose_move_with_normalized_perf, Node, ScoreConfig}; diff --git a/2019-worms/src/strategy/minimax.rs b/2019-worms/src/strategy/minimax.rs new file mode 100644 index 0000000..656ee36 --- /dev/null +++ b/2019-worms/src/strategy/minimax.rs @@ -0,0 +1,330 @@ +use crate::command::{Action, Command}; +use crate::constants::*; +use crate::game::{GameBoard, SimulationOutcome}; + +use fnv::FnvHashMap; +use std::cmp; +use std::ops::*; +use time::{Duration, PreciseTime}; + +#[derive(Debug, Clone)] +pub struct ScoreConfig { + pub max_health_weight: f32, + pub total_health_weight: f32, + pub points_weight: f32, + pub victory_weight: f32, + pub snowball_weight: f32, + pub bomb_weight: f32, + pub explore_exploit_weight: f32, +} + +impl Default for ScoreConfig { + fn default() -> ScoreConfig { + ScoreConfig { + max_health_weight: 100., + total_health_weight: 10., + points_weight: 1., + victory_weight: 4500., + snowball_weight: 10., + bomb_weight: 10., + explore_exploit_weight: 100., + } + } +} + +pub fn choose_move( + state: &GameBoard, + config: &ScoreConfig, + start_time: PreciseTime, + max_time: Duration, +) -> Command { + let mut root_node = Node { + score_sum: ScoreSum::new(), + player_score_sums: [FnvHashMap::default(), FnvHashMap::default()], + unexplored: move_combos(state), + children: FnvHashMap::default(), + }; + + #[cfg(feature = "logging")] + { + let mut max_expand_time = Duration::milliseconds(0); + while start_time.to(PreciseTime::now()) < max_time { + let expand_start_time = PreciseTime::now(); + let _ = expand_tree(&mut root_node, state.clone(), config); + max_expand_time = max_expand_time.max(expand_start_time.to(PreciseTime::now())); + } + eprintln!( + "Max expand time: {:?} ns", + max_expand_time.num_nanoseconds() + ); + } + #[cfg(not(feature = "logging"))] + { + while start_time.to(PreciseTime::now()) < max_time { + let _ = expand_tree(&mut root_node, state.clone(), config); + } + } + + #[cfg(feature = "logging")] + { + eprintln!("Number of simulations: {}", root_node.score_sum.visit_count); + for (command, score_sum) in &root_node.player_score_sums[0] { + eprintln!( + "{} = {} ({} visits)", + command, + score_sum.avg().val, + score_sum.visit_count + ); + } + } + + best_player_move(&root_node, 0) +} + +pub fn choose_move_with_normalized_perf( + state: &GameBoard, + config: &ScoreConfig, + player_index: usize, + iterations: usize, +) -> Command { + let mut root_node = Node { + score_sum: ScoreSum::new(), + player_score_sums: [FnvHashMap::default(), FnvHashMap::default()], + unexplored: move_combos(state), + children: FnvHashMap::default(), + }; + + for _ in 0..iterations { + let _ = expand_tree(&mut root_node, state.clone(), config); + } + + #[cfg(feature = "logging")] + { + eprintln!("Number of simulations: {}", root_node.score_sum.visit_count); + for (command, score_sum) in &root_node.player_score_sums[player_index] { + eprintln!( + "{} = {} ({} visits)", + command, + score_sum.avg().val, + score_sum.visit_count + ); + } + } + + best_player_move(&root_node, player_index) +} + +pub struct Node { + score_sum: ScoreSum, + player_score_sums: [FnvHashMap; 2], + unexplored: Vec<[Command; 2]>, + children: FnvHashMap<[Command; 2], Node>, +} + +#[derive(Clone, Copy, Debug, PartialEq, PartialOrd)] +struct Score { + val: f32, +} + +impl AddAssign for Score { + fn add_assign(&mut self, other: Self) { + self.val = self.val + other.val; + } +} + +impl Div for Score { + type Output = Self; + fn div(self, other: u32) -> Self { + Score { + val: self.val / other as f32, + } + } +} + +impl Mul for Score { + type Output = Self; + fn mul(self, other: f32) -> Self { + Score { + val: self.val * other, + } + } +} + +impl cmp::Eq for Score {} +impl cmp::Ord for Score { + fn cmp(&self, other: &Score) -> cmp::Ordering { + self.val + .partial_cmp(&other.val) + .unwrap_or(cmp::Ordering::Equal) + } +} + +struct ScoreSum { + sum: Score, + visit_count: u32, +} + +impl ScoreSum { + fn new() -> ScoreSum { + ScoreSum { + sum: Score { val: 0. }, + visit_count: 0, + } + } + fn with_initial(score: Score) -> ScoreSum { + ScoreSum { + sum: score, + visit_count: 1, + } + } + fn avg(&self) -> Score { + self.sum / self.visit_count + } +} + +impl AddAssign for ScoreSum { + fn add_assign(&mut self, other: Score) { + self.sum += other; + self.visit_count = self.visit_count.saturating_add(1); + } +} + +fn expand_tree(node: &mut Node, mut state: GameBoard, config: &ScoreConfig) -> Score { + if state.outcome != SimulationOutcome::Continue { + score(&state, config) + } else if let Some(commands) = node.unexplored.pop() { + state.simulate(commands); + let score = score(&state, config); + let unexplored = if state.outcome == SimulationOutcome::Continue { + move_combos(&state) + } else { + Vec::new() + }; + + let new_node = Node { + score_sum: ScoreSum::with_initial(score), + player_score_sums: [FnvHashMap::default(), FnvHashMap::default()], + unexplored, + children: FnvHashMap::default(), + }; + node.children.insert(commands, new_node); + update(node, commands, score); + + score + } else { + let commands = choose_existing(node, config); + state.simulate(commands); + let score = expand_tree( + node.children + .get_mut(&commands) + .expect("The existing node hasn't been tried yet"), + state, + config, + ); + update(node, commands, score); + score + } +} + +fn move_combos(state: &GameBoard) -> Vec<[Command; 2]> { + let player_moves = state.pruned_valid_moves(0); + let opponent_moves = state.pruned_valid_moves(1); + debug_assert!(!player_moves.is_empty(), "No player moves"); + debug_assert!(!opponent_moves.is_empty(), "No opponent moves"); + + let mut result = Vec::with_capacity(player_moves.len() * opponent_moves.len()); + for p in &player_moves { + for o in &opponent_moves { + result.push([*p, *o]); + } + } + + result +} + +fn best_player_move(node: &Node, player_index: usize) -> Command { + let multiplier = if player_index == 0 { 1. } else { -1. }; + node.player_score_sums[player_index] + .iter() + .max_by_key(|(_command, score_sum)| score_sum.avg() * multiplier) + .map(|(command, _score_sum)| *command) + .unwrap_or_else(|| Command::new(Action::DoNothing)) +} + +fn score(state: &GameBoard, config: &ScoreConfig) -> Score { + let max_health = + (state.players[0].max_worm_health() - state.players[1].max_worm_health()) as f32; + let total_health = (state.players[0].health() - state.players[1].health()) as f32; + let points = (state.players[0].score() - state.players[1].score()) as f32; + let victory = match state.outcome { + SimulationOutcome::PlayerWon(0) => 1., + SimulationOutcome::PlayerWon(1) => -1., + _ => 0., + }; + + let time_to_end = MAX_ROUNDS as f32 - state.round as f32 + 1.; + + let snowballs = state.players[0].snowballs() as f32 - state.players[1].snowballs() as f32; + let bombs = state.players[0].bombs() as f32 - state.players[1].bombs() as f32; + + Score { + val: max_health * config.max_health_weight + + total_health * config.total_health_weight + + points * config.points_weight + + victory * config.victory_weight + + snowballs * config.snowball_weight / time_to_end + + bombs * config.bomb_weight / time_to_end, + } +} + +fn choose_existing(node: &Node, config: &ScoreConfig) -> [Command; 2] { + [ + choose_one_existing(node, 0, config), + choose_one_existing(node, 1, config), + ] +} + +fn choose_one_existing(node: &Node, player_index: usize, config: &ScoreConfig) -> Command { + let ln_n = (node.score_sum.visit_count as f32).ln(); + let multiplier = if player_index == 0 { 1. } else { -1. }; + let mut command_confidences = + node.player_score_sums[player_index] + .iter() + .map(|(command, score_sum)| { + ( + command, + (score_sum.avg() * multiplier).val + + config.explore_exploit_weight + * (ln_n / score_sum.visit_count as f32).sqrt(), + ) + }); + + command_confidences + .next() + .map(|first| { + command_confidences + .fold( + first, + |(acc_command, acc_confidence), (next_command, next_confidence)| { + if acc_confidence > next_confidence { + (acc_command, acc_confidence) + } else { + (next_command, next_confidence) + } + }, + ) + .0 + .clone() + }) + .unwrap_or_else(|| Command::new(Action::DoNothing)) +} + +fn update(node: &mut Node, commands: [Command; 2], score: Score) { + *node.player_score_sums[0] + .entry(commands[0]) + .or_insert_with(ScoreSum::new) += score; + *node.player_score_sums[1] + .entry(commands[1]) + .or_insert_with(ScoreSum::new) += score; + node.score_sum += score; +} diff --git a/2019-worms/tests/example-state.json b/2019-worms/tests/example-state.json new file mode 100644 index 0000000..d7a8fa3 --- /dev/null +++ b/2019-worms/tests/example-state.json @@ -0,0 +1 @@ +{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":1,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":2,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"AIR"},{"x":13,"y":0,"type":"AIR"},{"x":14,"y":0,"type":"AIR"},{"x":15,"y":0,"type":"DIRT"},{"x":16,"y":0,"type":"DIRT"},{"x":17,"y":0,"type":"DIRT"},{"x":18,"y":0,"type":"AIR"},{"x":19,"y":0,"type":"AIR"},{"x":20,"y":0,"type":"AIR"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"DIRT"},{"x":10,"y":1,"type":"DIRT"},{"x":11,"y":1,"type":"DIRT"},{"x":12,"y":1,"type":"AIR"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"DIRT"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"DIRT"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"DIRT"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"AIR"},{"x":21,"y":1,"type":"DIRT"},{"x":22,"y":1,"type":"DIRT"},{"x":23,"y":1,"type":"DIRT"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"AIR"},{"x":12,"y":2,"type":"AIR"},{"x":13,"y":2,"type":"AIR"},{"x":14,"y":2,"type":"AIR"},{"x":15,"y":2,"type":"DIRT"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"DIRT"},{"x":18,"y":2,"type":"AIR"},{"x":19,"y":2,"type":"AIR"},{"x":20,"y":2,"type":"AIR"},{"x":21,"y":2,"type":"AIR"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"AIR"},{"x":12,"y":3,"type":"AIR"},{"x":13,"y":3,"type":"AIR"},{"x":14,"y":3,"type":"AIR"},{"x":15,"y":3,"type":"DIRT"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"DIRT"},{"x":18,"y":3,"type":"AIR"},{"x":19,"y":3,"type":"AIR"},{"x":20,"y":3,"type":"AIR"},{"x":21,"y":3,"type":"AIR"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"AIR"},{"x":5,"y":4,"type":"AIR"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"AIR"},{"x":12,"y":4,"type":"AIR"},{"x":13,"y":4,"type":"DIRT"},{"x":14,"y":4,"type":"DIRT"},{"x":15,"y":4,"type":"DIRT"},{"x":16,"y":4,"type":"AIR"},{"x":17,"y":4,"type":"DIRT"},{"x":18,"y":4,"type":"DIRT"},{"x":19,"y":4,"type":"DIRT"},{"x":20,"y":4,"type":"AIR"},{"x":21,"y":4,"type":"AIR"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"AIR"},{"x":28,"y":4,"type":"AIR"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"AIR"},{"x":5,"y":5,"type":"AIR"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"AIR"},{"x":13,"y":5,"type":"AIR"},{"x":14,"y":5,"type":"AIR"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"AIR"},{"x":19,"y":5,"type":"AIR"},{"x":20,"y":5,"type":"AIR"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"AIR"},{"x":28,"y":5,"type":"AIR"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"AIR"},{"x":4,"y":6,"type":"AIR"},{"x":5,"y":6,"type":"AIR"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"DIRT"},{"x":12,"y":6,"type":"AIR"},{"x":13,"y":6,"type":"AIR"},{"x":14,"y":6,"type":"AIR"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"AIR"},{"x":19,"y":6,"type":"AIR"},{"x":20,"y":6,"type":"AIR"},{"x":21,"y":6,"type":"DIRT"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"AIR"},{"x":28,"y":6,"type":"AIR"},{"x":29,"y":6,"type":"AIR"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"AIR"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"AIR"},{"x":5,"y":7,"type":"AIR"},{"x":6,"y":7,"type":"AIR"},{"x":7,"y":7,"type":"AIR"},{"x":8,"y":7,"type":"AIR"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"AIR"},{"x":12,"y":7,"type":"DIRT"},{"x":13,"y":7,"type":"DIRT"},{"x":14,"y":7,"type":"AIR"},{"x":15,"y":7,"type":"AIR"},{"x":16,"y":7,"type":"DIRT"},{"x":17,"y":7,"type":"AIR"},{"x":18,"y":7,"type":"AIR"},{"x":19,"y":7,"type":"DIRT"},{"x":20,"y":7,"type":"DIRT"},{"x":21,"y":7,"type":"AIR"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"AIR"},{"x":25,"y":7,"type":"AIR"},{"x":26,"y":7,"type":"AIR"},{"x":27,"y":7,"type":"AIR"},{"x":28,"y":7,"type":"AIR"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"AIR"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"DIRT"},{"x":2,"y":8,"type":"DIRT"},{"x":3,"y":8,"type":"AIR"},{"x":4,"y":8,"type":"AIR"},{"x":5,"y":8,"type":"AIR"},{"x":6,"y":8,"type":"AIR"},{"x":7,"y":8,"type":"DIRT"},{"x":8,"y":8,"type":"DIRT"},{"x":9,"y":8,"type":"AIR"},{"x":10,"y":8,"type":"AIR"},{"x":11,"y":8,"type":"AIR"},{"x":12,"y":8,"type":"DIRT"},{"x":13,"y":8,"type":"DIRT"},{"x":14,"y":8,"type":"DIRT"},{"x":15,"y":8,"type":"AIR"},{"x":16,"y":8,"type":"DIRT"},{"x":17,"y":8,"type":"AIR"},{"x":18,"y":8,"type":"DIRT"},{"x":19,"y":8,"type":"DIRT"},{"x":20,"y":8,"type":"DIRT"},{"x":21,"y":8,"type":"AIR"},{"x":22,"y":8,"type":"AIR"},{"x":23,"y":8,"type":"AIR"},{"x":24,"y":8,"type":"DIRT"},{"x":25,"y":8,"type":"DIRT"},{"x":26,"y":8,"type":"AIR"},{"x":27,"y":8,"type":"AIR"},{"x":28,"y":8,"type":"AIR"},{"x":29,"y":8,"type":"AIR"},{"x":30,"y":8,"type":"DIRT"},{"x":31,"y":8,"type":"DIRT"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"DIRT"},{"x":2,"y":9,"type":"DIRT"},{"x":3,"y":9,"type":"AIR"},{"x":4,"y":9,"type":"AIR"},{"x":5,"y":9,"type":"AIR"},{"x":6,"y":9,"type":"DIRT"},{"x":7,"y":9,"type":"AIR"},{"x":8,"y":9,"type":"DIRT"},{"x":9,"y":9,"type":"DIRT"},{"x":10,"y":9,"type":"AIR"},{"x":11,"y":9,"type":"DIRT"},{"x":12,"y":9,"type":"DIRT"},{"x":13,"y":9,"type":"DIRT"},{"x":14,"y":9,"type":"DIRT"},{"x":15,"y":9,"type":"AIR"},{"x":16,"y":9,"type":"DIRT"},{"x":17,"y":9,"type":"AIR"},{"x":18,"y":9,"type":"DIRT"},{"x":19,"y":9,"type":"DIRT"},{"x":20,"y":9,"type":"DIRT"},{"x":21,"y":9,"type":"DIRT"},{"x":22,"y":9,"type":"AIR"},{"x":23,"y":9,"type":"DIRT"},{"x":24,"y":9,"type":"DIRT"},{"x":25,"y":9,"type":"AIR"},{"x":26,"y":9,"type":"DIRT"},{"x":27,"y":9,"type":"AIR"},{"x":28,"y":9,"type":"AIR"},{"x":29,"y":9,"type":"AIR"},{"x":30,"y":9,"type":"DIRT"},{"x":31,"y":9,"type":"DIRT"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"AIR"},{"x":2,"y":10,"type":"AIR"},{"x":3,"y":10,"type":"DIRT"},{"x":4,"y":10,"type":"DIRT"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"DIRT"},{"x":7,"y":10,"type":"AIR"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"DIRT"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"DIRT"},{"x":12,"y":10,"type":"DIRT"},{"x":13,"y":10,"type":"DIRT"},{"x":14,"y":10,"type":"DIRT"},{"x":15,"y":10,"type":"DIRT"},{"x":16,"y":10,"type":"DIRT"},{"x":17,"y":10,"type":"DIRT"},{"x":18,"y":10,"type":"DIRT"},{"x":19,"y":10,"type":"DIRT"},{"x":20,"y":10,"type":"DIRT"},{"x":21,"y":10,"type":"DIRT"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"DIRT"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"AIR"},{"x":26,"y":10,"type":"DIRT"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"DIRT"},{"x":29,"y":10,"type":"DIRT"},{"x":30,"y":10,"type":"AIR"},{"x":31,"y":10,"type":"AIR"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"AIR"},{"x":1,"y":11,"type":"AIR"},{"x":2,"y":11,"type":"DIRT"},{"x":3,"y":11,"type":"DIRT"},{"x":4,"y":11,"type":"DIRT"},{"x":5,"y":11,"type":"AIR"},{"x":6,"y":11,"type":"DIRT"},{"x":7,"y":11,"type":"AIR"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"AIR"},{"x":10,"y":11,"type":"DIRT"},{"x":11,"y":11,"type":"DIRT"},{"x":12,"y":11,"type":"DIRT"},{"x":13,"y":11,"type":"DIRT"},{"x":14,"y":11,"type":"AIR"},{"x":15,"y":11,"type":"AIR"},{"x":16,"y":11,"type":"AIR"},{"x":17,"y":11,"type":"AIR"},{"x":18,"y":11,"type":"AIR"},{"x":19,"y":11,"type":"DIRT"},{"x":20,"y":11,"type":"DIRT"},{"x":21,"y":11,"type":"DIRT"},{"x":22,"y":11,"type":"DIRT"},{"x":23,"y":11,"type":"AIR"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"AIR"},{"x":26,"y":11,"type":"DIRT"},{"x":27,"y":11,"type":"AIR"},{"x":28,"y":11,"type":"DIRT"},{"x":29,"y":11,"type":"DIRT"},{"x":30,"y":11,"type":"DIRT"},{"x":31,"y":11,"type":"AIR"},{"x":32,"y":11,"type":"AIR"}],[{"x":0,"y":12,"type":"AIR"},{"x":1,"y":12,"type":"AIR"},{"x":2,"y":12,"type":"DIRT"},{"x":3,"y":12,"type":"AIR"},{"x":4,"y":12,"type":"AIR"},{"x":5,"y":12,"type":"DIRT"},{"x":6,"y":12,"type":"DIRT"},{"x":7,"y":12,"type":"AIR"},{"x":8,"y":12,"type":"AIR"},{"x":9,"y":12,"type":"AIR"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"DIRT"},{"x":12,"y":12,"type":"DIRT"},{"x":13,"y":12,"type":"AIR"},{"x":14,"y":12,"type":"AIR"},{"x":15,"y":12,"type":"DIRT"},{"x":16,"y":12,"type":"DIRT"},{"x":17,"y":12,"type":"DIRT"},{"x":18,"y":12,"type":"AIR"},{"x":19,"y":12,"type":"AIR"},{"x":20,"y":12,"type":"DIRT"},{"x":21,"y":12,"type":"DIRT"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"AIR"},{"x":24,"y":12,"type":"AIR"},{"x":25,"y":12,"type":"AIR"},{"x":26,"y":12,"type":"DIRT"},{"x":27,"y":12,"type":"DIRT"},{"x":28,"y":12,"type":"AIR"},{"x":29,"y":12,"type":"AIR"},{"x":30,"y":12,"type":"DIRT"},{"x":31,"y":12,"type":"AIR"},{"x":32,"y":12,"type":"AIR"}],[{"x":0,"y":13,"type":"AIR"},{"x":1,"y":13,"type":"AIR"},{"x":2,"y":13,"type":"DIRT"},{"x":3,"y":13,"type":"DIRT"},{"x":4,"y":13,"type":"AIR"},{"x":5,"y":13,"type":"DIRT"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"AIR"},{"x":8,"y":13,"type":"DIRT"},{"x":9,"y":13,"type":"DIRT"},{"x":10,"y":13,"type":"DIRT"},{"x":11,"y":13,"type":"DIRT"},{"x":12,"y":13,"type":"AIR"},{"x":13,"y":13,"type":"AIR"},{"x":14,"y":13,"type":"DIRT"},{"x":15,"y":13,"type":"DIRT"},{"x":16,"y":13,"type":"DIRT"},{"x":17,"y":13,"type":"DIRT"},{"x":18,"y":13,"type":"DIRT"},{"x":19,"y":13,"type":"AIR"},{"x":20,"y":13,"type":"AIR"},{"x":21,"y":13,"type":"DIRT"},{"x":22,"y":13,"type":"DIRT"},{"x":23,"y":13,"type":"DIRT"},{"x":24,"y":13,"type":"DIRT"},{"x":25,"y":13,"type":"AIR"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"DIRT"},{"x":28,"y":13,"type":"AIR"},{"x":29,"y":13,"type":"DIRT"},{"x":30,"y":13,"type":"DIRT"},{"x":31,"y":13,"type":"AIR"},{"x":32,"y":13,"type":"AIR"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"AIR"},{"x":5,"y":14,"type":"AIR"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"AIR"},{"x":8,"y":14,"type":"AIR"},{"x":9,"y":14,"type":"AIR"},{"x":10,"y":14,"type":"AIR"},{"x":11,"y":14,"type":"DIRT"},{"x":12,"y":14,"type":"AIR"},{"x":13,"y":14,"type":"AIR"},{"x":14,"y":14,"type":"DIRT"},{"x":15,"y":14,"type":"DIRT"},{"x":16,"y":14,"type":"AIR"},{"x":17,"y":14,"type":"DIRT"},{"x":18,"y":14,"type":"DIRT"},{"x":19,"y":14,"type":"AIR"},{"x":20,"y":14,"type":"AIR"},{"x":21,"y":14,"type":"DIRT"},{"x":22,"y":14,"type":"AIR"},{"x":23,"y":14,"type":"AIR"},{"x":24,"y":14,"type":"AIR"},{"x":25,"y":14,"type":"AIR"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"AIR"},{"x":28,"y":14,"type":"AIR"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"AIR"},{"x":5,"y":15,"type":"DIRT"},{"x":6,"y":15,"type":"DIRT"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"AIR"},{"x":9,"y":15,"type":"AIR"},{"x":10,"y":15,"type":"AIR"},{"x":11,"y":15,"type":"AIR"},{"x":12,"y":15,"type":"AIR"},{"x":13,"y":15,"type":"AIR"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"AIR"},{"x":16,"y":15,"type":"AIR"},{"x":17,"y":15,"type":"AIR"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"AIR"},{"x":20,"y":15,"type":"AIR"},{"x":21,"y":15,"type":"AIR"},{"x":22,"y":15,"type":"AIR"},{"x":23,"y":15,"type":"AIR"},{"x":24,"y":15,"type":"AIR"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"DIRT"},{"x":27,"y":15,"type":"DIRT"},{"x":28,"y":15,"type":"AIR"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"AIR"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"DIRT"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"DIRT"},{"x":10,"y":16,"type":"AIR"},{"x":11,"y":16,"type":"AIR"},{"x":12,"y":16,"type":"AIR"},{"x":13,"y":16,"type":"AIR"},{"x":14,"y":16,"type":"AIR"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"AIR"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"AIR"},{"x":19,"y":16,"type":"AIR"},{"x":20,"y":16,"type":"AIR"},{"x":21,"y":16,"type":"AIR"},{"x":22,"y":16,"type":"AIR"},{"x":23,"y":16,"type":"DIRT"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"DIRT"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"AIR"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"AIR"},{"x":5,"y":17,"type":"AIR"},{"x":6,"y":17,"type":"AIR"},{"x":7,"y":17,"type":"AIR"},{"x":8,"y":17,"type":"DIRT"},{"x":9,"y":17,"type":"DIRT"},{"x":10,"y":17,"type":"DIRT"},{"x":11,"y":17,"type":"AIR"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"DIRT"},{"x":14,"y":17,"type":"DIRT"},{"x":15,"y":17,"type":"DIRT"},{"x":16,"y":17,"type":"AIR"},{"x":17,"y":17,"type":"DIRT"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"DIRT"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"AIR"},{"x":22,"y":17,"type":"DIRT"},{"x":23,"y":17,"type":"DIRT"},{"x":24,"y":17,"type":"DIRT"},{"x":25,"y":17,"type":"AIR"},{"x":26,"y":17,"type":"AIR"},{"x":27,"y":17,"type":"AIR"},{"x":28,"y":17,"type":"AIR"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"AIR"},{"x":5,"y":18,"type":"AIR"},{"x":6,"y":18,"type":"AIR"},{"x":7,"y":18,"type":"AIR"},{"x":8,"y":18,"type":"DIRT"},{"x":9,"y":18,"type":"DIRT"},{"x":10,"y":18,"type":"DIRT"},{"x":11,"y":18,"type":"AIR"},{"x":12,"y":18,"type":"AIR"},{"x":13,"y":18,"type":"AIR"},{"x":14,"y":18,"type":"DIRT"},{"x":15,"y":18,"type":"AIR"},{"x":16,"y":18,"type":"AIR"},{"x":17,"y":18,"type":"AIR"},{"x":18,"y":18,"type":"DIRT"},{"x":19,"y":18,"type":"AIR"},{"x":20,"y":18,"type":"AIR"},{"x":21,"y":18,"type":"AIR"},{"x":22,"y":18,"type":"DIRT"},{"x":23,"y":18,"type":"DIRT"},{"x":24,"y":18,"type":"DIRT"},{"x":25,"y":18,"type":"AIR"},{"x":26,"y":18,"type":"AIR"},{"x":27,"y":18,"type":"AIR"},{"x":28,"y":18,"type":"AIR"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"DIRT"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"AIR"},{"x":3,"y":19,"type":"AIR"},{"x":4,"y":19,"type":"AIR"},{"x":5,"y":19,"type":"AIR"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"AIR"},{"x":8,"y":19,"type":"AIR"},{"x":9,"y":19,"type":"DIRT"},{"x":10,"y":19,"type":"DIRT"},{"x":11,"y":19,"type":"DIRT"},{"x":12,"y":19,"type":"AIR"},{"x":13,"y":19,"type":"AIR"},{"x":14,"y":19,"type":"DIRT"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"DIRT"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"DIRT"},{"x":19,"y":19,"type":"AIR"},{"x":20,"y":19,"type":"AIR"},{"x":21,"y":19,"type":"DIRT"},{"x":22,"y":19,"type":"DIRT"},{"x":23,"y":19,"type":"DIRT"},{"x":24,"y":19,"type":"AIR"},{"x":25,"y":19,"type":"AIR"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"AIR"},{"x":28,"y":19,"type":"AIR"},{"x":29,"y":19,"type":"AIR"},{"x":30,"y":19,"type":"AIR"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"DIRT"}],[{"x":0,"y":20,"type":"DIRT"},{"x":1,"y":20,"type":"DIRT"},{"x":2,"y":20,"type":"DIRT"},{"x":3,"y":20,"type":"AIR"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"AIR"},{"x":6,"y":20,"type":"AIR"},{"x":7,"y":20,"type":"AIR"},{"x":8,"y":20,"type":"AIR"},{"x":9,"y":20,"type":"DIRT"},{"x":10,"y":20,"type":"DIRT"},{"x":11,"y":20,"type":"DIRT"},{"x":12,"y":20,"type":"AIR"},{"x":13,"y":20,"type":"DIRT"},{"x":14,"y":20,"type":"DIRT"},{"x":15,"y":20,"type":"DIRT"},{"x":16,"y":20,"type":"DIRT"},{"x":17,"y":20,"type":"DIRT"},{"x":18,"y":20,"type":"DIRT"},{"x":19,"y":20,"type":"DIRT"},{"x":20,"y":20,"type":"AIR"},{"x":21,"y":20,"type":"DIRT"},{"x":22,"y":20,"type":"DIRT"},{"x":23,"y":20,"type":"DIRT"},{"x":24,"y":20,"type":"AIR"},{"x":25,"y":20,"type":"AIR"},{"x":26,"y":20,"type":"AIR"},{"x":27,"y":20,"type":"AIR"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"AIR"},{"x":30,"y":20,"type":"DIRT"},{"x":31,"y":20,"type":"DIRT"},{"x":32,"y":20,"type":"DIRT"}],[{"x":0,"y":21,"type":"DIRT"},{"x":1,"y":21,"type":"DIRT"},{"x":2,"y":21,"type":"DIRT"},{"x":3,"y":21,"type":"AIR"},{"x":4,"y":21,"type":"AIR"},{"x":5,"y":21,"type":"DIRT"},{"x":6,"y":21,"type":"DIRT"},{"x":7,"y":21,"type":"DIRT"},{"x":8,"y":21,"type":"AIR"},{"x":9,"y":21,"type":"AIR"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"DIRT"},{"x":12,"y":21,"type":"DIRT"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"DIRT"},{"x":15,"y":21,"type":"DIRT"},{"x":16,"y":21,"type":"AIR"},{"x":17,"y":21,"type":"DIRT"},{"x":18,"y":21,"type":"DIRT"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"DIRT"},{"x":21,"y":21,"type":"DIRT"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"AIR"},{"x":24,"y":21,"type":"AIR"},{"x":25,"y":21,"type":"DIRT"},{"x":26,"y":21,"type":"DIRT"},{"x":27,"y":21,"type":"DIRT"},{"x":28,"y":21,"type":"AIR"},{"x":29,"y":21,"type":"AIR"},{"x":30,"y":21,"type":"DIRT"},{"x":31,"y":21,"type":"DIRT"},{"x":32,"y":21,"type":"DIRT"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"DIRT"},{"x":2,"y":22,"type":"DIRT"},{"x":3,"y":22,"type":"AIR"},{"x":4,"y":22,"type":"DIRT"},{"x":5,"y":22,"type":"AIR"},{"x":6,"y":22,"type":"DIRT"},{"x":7,"y":22,"type":"DIRT"},{"x":8,"y":22,"type":"AIR"},{"x":9,"y":22,"type":"AIR"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"DIRT"},{"x":13,"y":22,"type":"AIR"},{"x":14,"y":22,"type":"AIR"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"AIR"},{"x":19,"y":22,"type":"AIR"},{"x":20,"y":22,"type":"DIRT"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"AIR"},{"x":24,"y":22,"type":"AIR"},{"x":25,"y":22,"type":"DIRT"},{"x":26,"y":22,"type":"DIRT"},{"x":27,"y":22,"type":"AIR"},{"x":28,"y":22,"type":"DIRT"},{"x":29,"y":22,"type":"AIR"},{"x":30,"y":22,"type":"DIRT"},{"x":31,"y":22,"type":"DIRT"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"AIR"},{"x":2,"y":23,"type":"AIR"},{"x":3,"y":23,"type":"AIR"},{"x":4,"y":23,"type":"DIRT"},{"x":5,"y":23,"type":"AIR"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"DIRT"},{"x":8,"y":23,"type":"AIR"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"DIRT"},{"x":13,"y":23,"type":"AIR"},{"x":14,"y":23,"type":"AIR"},{"x":15,"y":23,"type":"AIR"},{"x":16,"y":23,"type":"AIR"},{"x":17,"y":23,"type":"AIR"},{"x":18,"y":23,"type":"AIR"},{"x":19,"y":23,"type":"AIR"},{"x":20,"y":23,"type":"DIRT"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"AIR"},{"x":25,"y":23,"type":"DIRT"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"AIR"},{"x":28,"y":23,"type":"DIRT"},{"x":29,"y":23,"type":"AIR"},{"x":30,"y":23,"type":"AIR"},{"x":31,"y":23,"type":"AIR"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"AIR"},{"x":2,"y":24,"type":"AIR"},{"x":3,"y":24,"type":"AIR"},{"x":4,"y":24,"type":"DIRT"},{"x":5,"y":24,"type":"AIR"},{"x":6,"y":24,"type":"AIR"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"AIR"},{"x":9,"y":24,"type":"DIRT"},{"x":10,"y":24,"type":"DIRT"},{"x":11,"y":24,"type":"AIR"},{"x":12,"y":24,"type":"DIRT"},{"x":13,"y":24,"type":"DIRT"},{"x":14,"y":24,"type":"DIRT"},{"x":15,"y":24,"type":"AIR"},{"x":16,"y":24,"type":"AIR"},{"x":17,"y":24,"type":"AIR"},{"x":18,"y":24,"type":"DIRT"},{"x":19,"y":24,"type":"DIRT"},{"x":20,"y":24,"type":"DIRT"},{"x":21,"y":24,"type":"AIR"},{"x":22,"y":24,"type":"DIRT"},{"x":23,"y":24,"type":"DIRT"},{"x":24,"y":24,"type":"AIR"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"AIR"},{"x":27,"y":24,"type":"AIR"},{"x":28,"y":24,"type":"DIRT"},{"x":29,"y":24,"type":"AIR"},{"x":30,"y":24,"type":"AIR"},{"x":31,"y":24,"type":"AIR"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"AIR"},{"x":3,"y":25,"type":"AIR"},{"x":4,"y":25,"type":"AIR"},{"x":5,"y":25,"type":"AIR"},{"x":6,"y":25,"type":"AIR"},{"x":7,"y":25,"type":"AIR"},{"x":8,"y":25,"type":"DIRT"},{"x":9,"y":25,"type":"DIRT"},{"x":10,"y":25,"type":"AIR"},{"x":11,"y":25,"type":"AIR"},{"x":12,"y":25,"type":"AIR"},{"x":13,"y":25,"type":"AIR"},{"x":14,"y":25,"type":"AIR"},{"x":15,"y":25,"type":"AIR"},{"x":16,"y":25,"type":"AIR"},{"x":17,"y":25,"type":"AIR"},{"x":18,"y":25,"type":"AIR"},{"x":19,"y":25,"type":"AIR"},{"x":20,"y":25,"type":"AIR"},{"x":21,"y":25,"type":"AIR"},{"x":22,"y":25,"type":"AIR"},{"x":23,"y":25,"type":"DIRT"},{"x":24,"y":25,"type":"DIRT"},{"x":25,"y":25,"type":"AIR"},{"x":26,"y":25,"type":"AIR"},{"x":27,"y":25,"type":"AIR"},{"x":28,"y":25,"type":"AIR"},{"x":29,"y":25,"type":"AIR"},{"x":30,"y":25,"type":"AIR"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"AIR"},{"x":5,"y":26,"type":"DIRT"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"DIRT"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"AIR"},{"x":14,"y":26,"type":"AIR"},{"x":15,"y":26,"type":"AIR"},{"x":16,"y":26,"type":"AIR"},{"x":17,"y":26,"type":"AIR"},{"x":18,"y":26,"type":"AIR"},{"x":19,"y":26,"type":"AIR"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"DIRT"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"DIRT"},{"x":28,"y":26,"type":"AIR"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"AIR"},{"x":5,"y":27,"type":"AIR"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"AIR"},{"x":14,"y":27,"type":"AIR"},{"x":15,"y":27,"type":"AIR"},{"x":16,"y":27,"type":"AIR"},{"x":17,"y":27,"type":"AIR"},{"x":18,"y":27,"type":"AIR"},{"x":19,"y":27,"type":"AIR"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"AIR"},{"x":28,"y":27,"type":"AIR"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"AIR"},{"x":5,"y":28,"type":"AIR"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"DIRT"},{"x":12,"y":28,"type":"DIRT"},{"x":13,"y":28,"type":"DIRT"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"AIR"},{"x":16,"y":28,"type":"AIR"},{"x":17,"y":28,"type":"AIR"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"DIRT"},{"x":20,"y":28,"type":"DIRT"},{"x":21,"y":28,"type":"DIRT"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"AIR"},{"x":28,"y":28,"type":"AIR"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"AIR"},{"x":12,"y":29,"type":"AIR"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"DIRT"},{"x":15,"y":29,"type":"AIR"},{"x":16,"y":29,"type":"AIR"},{"x":17,"y":29,"type":"AIR"},{"x":18,"y":29,"type":"DIRT"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"AIR"},{"x":21,"y":29,"type":"AIR"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"AIR"},{"x":12,"y":30,"type":"AIR"},{"x":13,"y":30,"type":"AIR"},{"x":14,"y":30,"type":"DIRT"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"DIRT"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"DIRT"},{"x":19,"y":30,"type":"AIR"},{"x":20,"y":30,"type":"AIR"},{"x":21,"y":30,"type":"AIR"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"AIR"},{"x":9,"y":31,"type":"AIR"},{"x":10,"y":31,"type":"AIR"},{"x":11,"y":31,"type":"DIRT"},{"x":12,"y":31,"type":"DIRT"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"AIR"},{"x":16,"y":31,"type":"DIRT"},{"x":17,"y":31,"type":"AIR"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"DIRT"},{"x":21,"y":31,"type":"DIRT"},{"x":22,"y":31,"type":"AIR"},{"x":23,"y":31,"type":"AIR"},{"x":24,"y":31,"type":"AIR"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"DIRT"},{"x":12,"y":32,"type":"DIRT"},{"x":13,"y":32,"type":"DIRT"},{"x":14,"y":32,"type":"AIR"},{"x":15,"y":32,"type":"AIR"},{"x":16,"y":32,"type":"AIR"},{"x":17,"y":32,"type":"AIR"},{"x":18,"y":32,"type":"AIR"},{"x":19,"y":32,"type":"DIRT"},{"x":20,"y":32,"type":"DIRT"},{"x":21,"y":32,"type":"DIRT"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/2019-worms/tests/import-replay.sh b/2019-worms/tests/import-replay.sh new file mode 100755 index 0000000..216c235 --- /dev/null +++ b/2019-worms/tests/import-replay.sh @@ -0,0 +1,12 @@ +#/bin/sh + +# $1: The match-log directory +# Should be run from the tests directory. + +logname=$(basename $1) + +mkdir replays/$logname +cp $1/A*.csv replays/$logname/A-log.csv +cp $1/B*.csv replays/$logname/B-log.csv +cp $1/Round\ 001/A*/JsonMap.json replays/$logname/A-init.json +cp $1/Round\ 001/B*/JsonMap.json replays/$logname/B-init.json diff --git a/2019-worms/tests/official-runner-matching.rs b/2019-worms/tests/official-runner-matching.rs new file mode 100644 index 0000000..1b62088 --- /dev/null +++ b/2019-worms/tests/official-runner-matching.rs @@ -0,0 +1,238 @@ +use steam_powered_wyrm::command::{Action, Command}; +use steam_powered_wyrm::constants::*; +use steam_powered_wyrm::game::*; +use steam_powered_wyrm::geometry::*; +use steam_powered_wyrm::json; + +use std::fs::File; +use std::io::prelude::*; +use std::path::Path; + +#[test] +fn simulates_the_same_match() { + let replays = Path::new("tests/replays/"); + for replay in replays.read_dir().expect("read_dir failed") { + let replay = replay.expect("error on replay").path(); + + let mut game_board = GameBoard::new( + json::read_state_from_json_file(&replay.join(Path::new("A-init.json"))) + .expect("Failed to read initial state"), + ); + let player_csv = read_file_lines(&replay.join(Path::new("A-log.csv")), 1); + let opponent_csv = read_file_lines(&replay.join(Path::new("B-log.csv")), 1); + + for round in 0..player_csv.len() { + println!("Testing round {}", round); + + let player = split_csv(&player_csv[round]); + let opponent = split_csv(&opponent_csv[round]); + + assert_eq!( + round + 1, + player[0] + .parse::() + .expect(&format!("Invalid player input on round {}", round)) + ); + assert_eq!( + round + 1, + opponent[0] + .parse::() + .expect(&format!("Invalid opponent input on round {}", round)) + ); + + if round != 0 { + let player_move = read_move( + &player, + game_board.players[0].worms[game_board.players[0].active_worm].id, + ); + let opponent_move = read_move( + &opponent, + game_board.players[1].worms[game_board.players[1].active_worm].id, + ); + let _ = game_board.simulate([player_move, opponent_move]); + if player[1] == "invalid" { + game_board.players[0].moves_score -= INVALID_COMMAND_SCORE_PENALTY; + } + if opponent[1] == "invalid" { + game_board.players[1].moves_score -= INVALID_COMMAND_SCORE_PENALTY; + } + } + + for player_index in 0..2 { + let csv_row = match player_index { + 0 => &player, + _ => &opponent, + }; + assert_eq!( + csv_row[4].parse::().unwrap(), + game_board.players[player_index].score(), + "Score is incorrect for player {}, Row: {:?}", + player_index, + csv_row + ); + for worm_index in 0..3 { + let worm_id = worm_index as i32 + 1; + + match game_board.players[player_index].find_worm(worm_id) { + Some(worm) => { + assert_eq!( + csv_row[6 + worm_index * 3].parse::().unwrap(), + worm.health, + "Worm health is incorrect for worm {} on player {}, Row: {:?}", + worm_id, + player_index, + csv_row + ); + assert_eq!( + csv_row[7 + worm_index * 3].parse::().unwrap(), + worm.position.x, + "Worm x is incorrect for worm {} on player {}, Row: {:?}", + worm_id, + player_index, + csv_row + ); + assert_eq!( + csv_row[8 + worm_index * 3].parse::().unwrap(), + worm.position.y, + "Worm y is incorrect for worm {} on player {}, Row: {:?}", + worm_id, + player_index, + csv_row + ); + } + None => { + // If the worms don't appear in my state, they should be dead + assert!( + csv_row[6 + worm_index * 3].parse::().unwrap() <= 0, + "Worm is not actually dead" + ); + } + } + } + } + } + } +} + +fn read_file_lines(path: &Path, skip: usize) -> Vec { + let mut file = File::open(path).unwrap(); + let mut contents = String::new(); + file.read_to_string(&mut contents).unwrap(); + contents + .split("\n") + .skip(skip) + .map(String::from) + .filter(|s| !s.is_empty()) + .collect() +} + +fn split_csv(input: &str) -> Vec { + let mut result = Vec::new(); + let mut next = Vec::new(); + let mut quoted = false; + + for c in input.chars() { + match c { + '"' => { + quoted = !quoted; + } + ',' if !quoted => { + result.push(next.iter().collect()); + next = Vec::new(); + } + c => { + next.push(c); + } + } + } + result.push(next.iter().collect()); + result +} + +fn read_move(csv_line: &[String], expected_worm_id: i32) -> Command { + let worm_id = csv_line[3].parse::().unwrap(); + let select = if worm_id == expected_worm_id { + None + } else { + Some(worm_id) + }; + match csv_line[1].as_ref() { + "move" => { + let (x, y) = read_xy_pair(&csv_line[2]); + Command { + worm: select, + action: Action::Move(Point2d::new(x, y)), + } + } + "dig" => { + let (x, y) = read_xy_pair(&csv_line[2]); + Command { + worm: select, + action: Action::Dig(Point2d::new(x, y)), + } + } + "banana" => { + let (x, y) = read_xy_pair(&csv_line[2]); + Command { + worm: select, + action: Action::Bomb(Point2d::new(x, y)), + } + } + "snowball" => { + let (x, y) = read_xy_pair(&csv_line[2]); + Command { + worm: select, + action: Action::Snowball(Point2d::new(x, y)), + } + } + "nothing" | "invalid" => Command { + worm: select, + action: Action::DoNothing, + }, + "shoot" => { + use steam_powered_wyrm::geometry::Direction::*; + + let dir = match csv_line[2].as_ref() { + "shoot N" => North, + "shoot NE" => NorthEast, + "shoot E" => East, + "shoot SE" => SouthEast, + "shoot S" => South, + "shoot SW" => SouthWest, + "shoot W" => West, + "shoot NW" => NorthWest, + _ => panic!("Unknown shoot direction: {}", csv_line[2]), + }; + Command { + worm: select, + action: Action::Shoot(dir), + } + } + x => { + panic!("Unknown command {}", x); + } + } +} + +fn read_xy_pair(input: &str) -> (i8, i8) { + let mut char_iter = input.chars(); + let _ = char_iter + .by_ref() + .take_while(|c| *c != ' ') + .collect::(); + let x = char_iter + .by_ref() + .take_while(|c| *c != ' ') + .collect::() + .trim() + .parse::() + .unwrap(); + let y = char_iter + .by_ref() + .take_while(|c| *c != ' ') + .collect::() + .trim() + .parse::() + .unwrap(); + (x, y) +} diff --git a/2019-worms/tests/replays/2019.08.19.21.15.02/A-init.json b/2019-worms/tests/replays/2019.08.19.21.15.02/A-init.json new file mode 100644 index 0000000..ea2e948 --- /dev/null +++ b/2019-worms/tests/replays/2019.08.19.21.15.02/A-init.json @@ -0,0 +1 @@ +{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":1,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":2,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"AIR"},{"x":13,"y":0,"type":"DIRT"},{"x":14,"y":0,"type":"DIRT"},{"x":15,"y":0,"type":"DIRT"},{"x":16,"y":0,"type":"AIR"},{"x":17,"y":0,"type":"DIRT"},{"x":18,"y":0,"type":"DIRT"},{"x":19,"y":0,"type":"DIRT"},{"x":20,"y":0,"type":"AIR"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"AIR"},{"x":10,"y":1,"type":"AIR"},{"x":11,"y":1,"type":"AIR"},{"x":12,"y":1,"type":"AIR"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"DIRT"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"AIR"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"DIRT"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"AIR"},{"x":21,"y":1,"type":"AIR"},{"x":22,"y":1,"type":"AIR"},{"x":23,"y":1,"type":"AIR"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"DIRT"},{"x":12,"y":2,"type":"DIRT"},{"x":13,"y":2,"type":"AIR"},{"x":14,"y":2,"type":"AIR"},{"x":15,"y":2,"type":"DIRT"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"DIRT"},{"x":18,"y":2,"type":"AIR"},{"x":19,"y":2,"type":"AIR"},{"x":20,"y":2,"type":"DIRT"},{"x":21,"y":2,"type":"DIRT"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"DIRT"},{"x":12,"y":3,"type":"DIRT"},{"x":13,"y":3,"type":"DIRT"},{"x":14,"y":3,"type":"AIR"},{"x":15,"y":3,"type":"AIR"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"AIR"},{"x":18,"y":3,"type":"AIR"},{"x":19,"y":3,"type":"DIRT"},{"x":20,"y":3,"type":"DIRT"},{"x":21,"y":3,"type":"DIRT"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"DIRT"},{"x":5,"y":4,"type":"DIRT"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"DIRT"},{"x":12,"y":4,"type":"DIRT"},{"x":13,"y":4,"type":"DIRT"},{"x":14,"y":4,"type":"DIRT"},{"x":15,"y":4,"type":"AIR"},{"x":16,"y":4,"type":"DIRT"},{"x":17,"y":4,"type":"AIR"},{"x":18,"y":4,"type":"DIRT"},{"x":19,"y":4,"type":"DIRT"},{"x":20,"y":4,"type":"DIRT"},{"x":21,"y":4,"type":"DIRT"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"DIRT"},{"x":28,"y":4,"type":"DIRT"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"AIR"},{"x":5,"y":5,"type":"AIR"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"DIRT"},{"x":13,"y":5,"type":"DIRT"},{"x":14,"y":5,"type":"DIRT"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"DIRT"},{"x":19,"y":5,"type":"DIRT"},{"x":20,"y":5,"type":"DIRT"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"AIR"},{"x":28,"y":5,"type":"AIR"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"DIRT"},{"x":4,"y":6,"type":"DIRT"},{"x":5,"y":6,"type":"AIR"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"DIRT"},{"x":12,"y":6,"type":"DIRT"},{"x":13,"y":6,"type":"DIRT"},{"x":14,"y":6,"type":"DIRT"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"DIRT"},{"x":19,"y":6,"type":"DIRT"},{"x":20,"y":6,"type":"DIRT"},{"x":21,"y":6,"type":"DIRT"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"AIR"},{"x":28,"y":6,"type":"DIRT"},{"x":29,"y":6,"type":"DIRT"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"AIR"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"DIRT"},{"x":5,"y":7,"type":"AIR"},{"x":6,"y":7,"type":"AIR"},{"x":7,"y":7,"type":"DIRT"},{"x":8,"y":7,"type":"DIRT"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"DIRT"},{"x":12,"y":7,"type":"DIRT"},{"x":13,"y":7,"type":"AIR"},{"x":14,"y":7,"type":"AIR"},{"x":15,"y":7,"type":"AIR"},{"x":16,"y":7,"type":"DIRT"},{"x":17,"y":7,"type":"AIR"},{"x":18,"y":7,"type":"AIR"},{"x":19,"y":7,"type":"AIR"},{"x":20,"y":7,"type":"DIRT"},{"x":21,"y":7,"type":"DIRT"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"DIRT"},{"x":25,"y":7,"type":"DIRT"},{"x":26,"y":7,"type":"AIR"},{"x":27,"y":7,"type":"AIR"},{"x":28,"y":7,"type":"DIRT"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"AIR"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"AIR"},{"x":2,"y":8,"type":"AIR"},{"x":3,"y":8,"type":"AIR"},{"x":4,"y":8,"type":"AIR"},{"x":5,"y":8,"type":"DIRT"},{"x":6,"y":8,"type":"DIRT"},{"x":7,"y":8,"type":"DIRT"},{"x":8,"y":8,"type":"DIRT"},{"x":9,"y":8,"type":"DIRT"},{"x":10,"y":8,"type":"DIRT"},{"x":11,"y":8,"type":"DIRT"},{"x":12,"y":8,"type":"DIRT"},{"x":13,"y":8,"type":"AIR"},{"x":14,"y":8,"type":"AIR"},{"x":15,"y":8,"type":"DIRT"},{"x":16,"y":8,"type":"DIRT"},{"x":17,"y":8,"type":"DIRT"},{"x":18,"y":8,"type":"AIR"},{"x":19,"y":8,"type":"AIR"},{"x":20,"y":8,"type":"DIRT"},{"x":21,"y":8,"type":"DIRT"},{"x":22,"y":8,"type":"DIRT"},{"x":23,"y":8,"type":"DIRT"},{"x":24,"y":8,"type":"DIRT"},{"x":25,"y":8,"type":"DIRT"},{"x":26,"y":8,"type":"DIRT"},{"x":27,"y":8,"type":"DIRT"},{"x":28,"y":8,"type":"AIR"},{"x":29,"y":8,"type":"AIR"},{"x":30,"y":8,"type":"AIR"},{"x":31,"y":8,"type":"AIR"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"AIR"},{"x":2,"y":9,"type":"AIR"},{"x":3,"y":9,"type":"AIR"},{"x":4,"y":9,"type":"DIRT"},{"x":5,"y":9,"type":"DIRT"},{"x":6,"y":9,"type":"DIRT"},{"x":7,"y":9,"type":"DIRT"},{"x":8,"y":9,"type":"DIRT"},{"x":9,"y":9,"type":"DIRT"},{"x":10,"y":9,"type":"DIRT"},{"x":11,"y":9,"type":"AIR"},{"x":12,"y":9,"type":"DIRT"},{"x":13,"y":9,"type":"AIR"},{"x":14,"y":9,"type":"AIR"},{"x":15,"y":9,"type":"DIRT"},{"x":16,"y":9,"type":"DIRT"},{"x":17,"y":9,"type":"DIRT"},{"x":18,"y":9,"type":"AIR"},{"x":19,"y":9,"type":"AIR"},{"x":20,"y":9,"type":"DIRT"},{"x":21,"y":9,"type":"AIR"},{"x":22,"y":9,"type":"DIRT"},{"x":23,"y":9,"type":"DIRT"},{"x":24,"y":9,"type":"DIRT"},{"x":25,"y":9,"type":"DIRT"},{"x":26,"y":9,"type":"DIRT"},{"x":27,"y":9,"type":"DIRT"},{"x":28,"y":9,"type":"DIRT"},{"x":29,"y":9,"type":"AIR"},{"x":30,"y":9,"type":"AIR"},{"x":31,"y":9,"type":"AIR"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"AIR"},{"x":2,"y":10,"type":"AIR"},{"x":3,"y":10,"type":"AIR"},{"x":4,"y":10,"type":"AIR"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"DIRT"},{"x":7,"y":10,"type":"DIRT"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"DIRT"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"AIR"},{"x":12,"y":10,"type":"DIRT"},{"x":13,"y":10,"type":"DIRT"},{"x":14,"y":10,"type":"DIRT"},{"x":15,"y":10,"type":"DIRT"},{"x":16,"y":10,"type":"AIR"},{"x":17,"y":10,"type":"DIRT"},{"x":18,"y":10,"type":"DIRT"},{"x":19,"y":10,"type":"DIRT"},{"x":20,"y":10,"type":"DIRT"},{"x":21,"y":10,"type":"AIR"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"DIRT"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"DIRT"},{"x":26,"y":10,"type":"DIRT"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"AIR"},{"x":29,"y":10,"type":"AIR"},{"x":30,"y":10,"type":"AIR"},{"x":31,"y":10,"type":"AIR"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"DIRT"},{"x":1,"y":11,"type":"DIRT"},{"x":2,"y":11,"type":"AIR"},{"x":3,"y":11,"type":"AIR"},{"x":4,"y":11,"type":"AIR"},{"x":5,"y":11,"type":"AIR"},{"x":6,"y":11,"type":"DIRT"},{"x":7,"y":11,"type":"DIRT"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"DIRT"},{"x":10,"y":11,"type":"AIR"},{"x":11,"y":11,"type":"AIR"},{"x":12,"y":11,"type":"DIRT"},{"x":13,"y":11,"type":"DIRT"},{"x":14,"y":11,"type":"DIRT"},{"x":15,"y":11,"type":"AIR"},{"x":16,"y":11,"type":"AIR"},{"x":17,"y":11,"type":"AIR"},{"x":18,"y":11,"type":"DIRT"},{"x":19,"y":11,"type":"DIRT"},{"x":20,"y":11,"type":"DIRT"},{"x":21,"y":11,"type":"AIR"},{"x":22,"y":11,"type":"AIR"},{"x":23,"y":11,"type":"DIRT"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"DIRT"},{"x":26,"y":11,"type":"DIRT"},{"x":27,"y":11,"type":"AIR"},{"x":28,"y":11,"type":"AIR"},{"x":29,"y":11,"type":"AIR"},{"x":30,"y":11,"type":"AIR"},{"x":31,"y":11,"type":"DIRT"},{"x":32,"y":11,"type":"DIRT"}],[{"x":0,"y":12,"type":"AIR"},{"x":1,"y":12,"type":"AIR"},{"x":2,"y":12,"type":"AIR"},{"x":3,"y":12,"type":"AIR"},{"x":4,"y":12,"type":"AIR"},{"x":5,"y":12,"type":"AIR"},{"x":6,"y":12,"type":"AIR"},{"x":7,"y":12,"type":"DIRT"},{"x":8,"y":12,"type":"DIRT"},{"x":9,"y":12,"type":"DIRT"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"AIR"},{"x":12,"y":12,"type":"AIR"},{"x":13,"y":12,"type":"DIRT"},{"x":14,"y":12,"type":"DIRT"},{"x":15,"y":12,"type":"AIR"},{"x":16,"y":12,"type":"AIR"},{"x":17,"y":12,"type":"AIR"},{"x":18,"y":12,"type":"DIRT"},{"x":19,"y":12,"type":"DIRT"},{"x":20,"y":12,"type":"AIR"},{"x":21,"y":12,"type":"AIR"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"DIRT"},{"x":24,"y":12,"type":"DIRT"},{"x":25,"y":12,"type":"DIRT"},{"x":26,"y":12,"type":"AIR"},{"x":27,"y":12,"type":"AIR"},{"x":28,"y":12,"type":"AIR"},{"x":29,"y":12,"type":"AIR"},{"x":30,"y":12,"type":"AIR"},{"x":31,"y":12,"type":"AIR"},{"x":32,"y":12,"type":"AIR"}],[{"x":0,"y":13,"type":"AIR"},{"x":1,"y":13,"type":"AIR"},{"x":2,"y":13,"type":"AIR"},{"x":3,"y":13,"type":"AIR"},{"x":4,"y":13,"type":"DIRT"},{"x":5,"y":13,"type":"DIRT"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"DIRT"},{"x":8,"y":13,"type":"DIRT"},{"x":9,"y":13,"type":"DIRT"},{"x":10,"y":13,"type":"DIRT"},{"x":11,"y":13,"type":"AIR"},{"x":12,"y":13,"type":"DIRT"},{"x":13,"y":13,"type":"DIRT"},{"x":14,"y":13,"type":"DIRT"},{"x":15,"y":13,"type":"AIR"},{"x":16,"y":13,"type":"AIR"},{"x":17,"y":13,"type":"AIR"},{"x":18,"y":13,"type":"DIRT"},{"x":19,"y":13,"type":"DIRT"},{"x":20,"y":13,"type":"DIRT"},{"x":21,"y":13,"type":"AIR"},{"x":22,"y":13,"type":"DIRT"},{"x":23,"y":13,"type":"DIRT"},{"x":24,"y":13,"type":"DIRT"},{"x":25,"y":13,"type":"DIRT"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"DIRT"},{"x":28,"y":13,"type":"DIRT"},{"x":29,"y":13,"type":"AIR"},{"x":30,"y":13,"type":"AIR"},{"x":31,"y":13,"type":"AIR"},{"x":32,"y":13,"type":"AIR"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"DIRT"},{"x":5,"y":14,"type":"DIRT"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"DIRT"},{"x":8,"y":14,"type":"DIRT"},{"x":9,"y":14,"type":"DIRT"},{"x":10,"y":14,"type":"AIR"},{"x":11,"y":14,"type":"AIR"},{"x":12,"y":14,"type":"AIR"},{"x":13,"y":14,"type":"DIRT"},{"x":14,"y":14,"type":"AIR"},{"x":15,"y":14,"type":"AIR"},{"x":16,"y":14,"type":"AIR"},{"x":17,"y":14,"type":"AIR"},{"x":18,"y":14,"type":"AIR"},{"x":19,"y":14,"type":"DIRT"},{"x":20,"y":14,"type":"AIR"},{"x":21,"y":14,"type":"AIR"},{"x":22,"y":14,"type":"AIR"},{"x":23,"y":14,"type":"DIRT"},{"x":24,"y":14,"type":"DIRT"},{"x":25,"y":14,"type":"DIRT"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"DIRT"},{"x":28,"y":14,"type":"DIRT"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"DIRT"},{"x":5,"y":15,"type":"DIRT"},{"x":6,"y":15,"type":"AIR"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"AIR"},{"x":9,"y":15,"type":"AIR"},{"x":10,"y":15,"type":"AIR"},{"x":11,"y":15,"type":"AIR"},{"x":12,"y":15,"type":"AIR"},{"x":13,"y":15,"type":"AIR"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"AIR"},{"x":16,"y":15,"type":"AIR"},{"x":17,"y":15,"type":"AIR"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"AIR"},{"x":20,"y":15,"type":"AIR"},{"x":21,"y":15,"type":"AIR"},{"x":22,"y":15,"type":"AIR"},{"x":23,"y":15,"type":"AIR"},{"x":24,"y":15,"type":"AIR"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"AIR"},{"x":27,"y":15,"type":"DIRT"},{"x":28,"y":15,"type":"DIRT"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"DIRT"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"AIR"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"AIR"},{"x":10,"y":16,"type":"DIRT"},{"x":11,"y":16,"type":"DIRT"},{"x":12,"y":16,"type":"DIRT"},{"x":13,"y":16,"type":"AIR"},{"x":14,"y":16,"type":"AIR"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"AIR"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"AIR"},{"x":19,"y":16,"type":"AIR"},{"x":20,"y":16,"type":"DIRT"},{"x":21,"y":16,"type":"DIRT"},{"x":22,"y":16,"type":"DIRT"},{"x":23,"y":16,"type":"AIR"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"AIR"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"DIRT"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"DIRT"},{"x":5,"y":17,"type":"DIRT"},{"x":6,"y":17,"type":"AIR"},{"x":7,"y":17,"type":"AIR"},{"x":8,"y":17,"type":"DIRT"},{"x":9,"y":17,"type":"DIRT"},{"x":10,"y":17,"type":"AIR"},{"x":11,"y":17,"type":"AIR"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"DIRT"},{"x":14,"y":17,"type":"AIR"},{"x":15,"y":17,"type":"AIR"},{"x":16,"y":17,"type":"DIRT"},{"x":17,"y":17,"type":"AIR"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"DIRT"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"AIR"},{"x":22,"y":17,"type":"AIR"},{"x":23,"y":17,"type":"DIRT"},{"x":24,"y":17,"type":"DIRT"},{"x":25,"y":17,"type":"AIR"},{"x":26,"y":17,"type":"AIR"},{"x":27,"y":17,"type":"DIRT"},{"x":28,"y":17,"type":"DIRT"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"DIRT"},{"x":5,"y":18,"type":"AIR"},{"x":6,"y":18,"type":"AIR"},{"x":7,"y":18,"type":"DIRT"},{"x":8,"y":18,"type":"DIRT"},{"x":9,"y":18,"type":"DIRT"},{"x":10,"y":18,"type":"AIR"},{"x":11,"y":18,"type":"AIR"},{"x":12,"y":18,"type":"AIR"},{"x":13,"y":18,"type":"DIRT"},{"x":14,"y":18,"type":"DIRT"},{"x":15,"y":18,"type":"AIR"},{"x":16,"y":18,"type":"DIRT"},{"x":17,"y":18,"type":"AIR"},{"x":18,"y":18,"type":"DIRT"},{"x":19,"y":18,"type":"DIRT"},{"x":20,"y":18,"type":"AIR"},{"x":21,"y":18,"type":"AIR"},{"x":22,"y":18,"type":"AIR"},{"x":23,"y":18,"type":"DIRT"},{"x":24,"y":18,"type":"DIRT"},{"x":25,"y":18,"type":"DIRT"},{"x":26,"y":18,"type":"AIR"},{"x":27,"y":18,"type":"AIR"},{"x":28,"y":18,"type":"DIRT"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"AIR"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"AIR"},{"x":3,"y":19,"type":"AIR"},{"x":4,"y":19,"type":"DIRT"},{"x":5,"y":19,"type":"DIRT"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"AIR"},{"x":8,"y":19,"type":"DIRT"},{"x":9,"y":19,"type":"AIR"},{"x":10,"y":19,"type":"AIR"},{"x":11,"y":19,"type":"AIR"},{"x":12,"y":19,"type":"DIRT"},{"x":13,"y":19,"type":"DIRT"},{"x":14,"y":19,"type":"AIR"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"AIR"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"AIR"},{"x":19,"y":19,"type":"DIRT"},{"x":20,"y":19,"type":"DIRT"},{"x":21,"y":19,"type":"AIR"},{"x":22,"y":19,"type":"AIR"},{"x":23,"y":19,"type":"AIR"},{"x":24,"y":19,"type":"DIRT"},{"x":25,"y":19,"type":"AIR"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"DIRT"},{"x":28,"y":19,"type":"DIRT"},{"x":29,"y":19,"type":"AIR"},{"x":30,"y":19,"type":"AIR"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"AIR"}],[{"x":0,"y":20,"type":"DIRT"},{"x":1,"y":20,"type":"AIR"},{"x":2,"y":20,"type":"AIR"},{"x":3,"y":20,"type":"AIR"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"DIRT"},{"x":6,"y":20,"type":"DIRT"},{"x":7,"y":20,"type":"AIR"},{"x":8,"y":20,"type":"AIR"},{"x":9,"y":20,"type":"AIR"},{"x":10,"y":20,"type":"DIRT"},{"x":11,"y":20,"type":"DIRT"},{"x":12,"y":20,"type":"DIRT"},{"x":13,"y":20,"type":"DIRT"},{"x":14,"y":20,"type":"DIRT"},{"x":15,"y":20,"type":"AIR"},{"x":16,"y":20,"type":"AIR"},{"x":17,"y":20,"type":"AIR"},{"x":18,"y":20,"type":"DIRT"},{"x":19,"y":20,"type":"DIRT"},{"x":20,"y":20,"type":"DIRT"},{"x":21,"y":20,"type":"DIRT"},{"x":22,"y":20,"type":"DIRT"},{"x":23,"y":20,"type":"AIR"},{"x":24,"y":20,"type":"AIR"},{"x":25,"y":20,"type":"AIR"},{"x":26,"y":20,"type":"DIRT"},{"x":27,"y":20,"type":"DIRT"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"AIR"},{"x":30,"y":20,"type":"AIR"},{"x":31,"y":20,"type":"AIR"},{"x":32,"y":20,"type":"DIRT"}],[{"x":0,"y":21,"type":"DIRT"},{"x":1,"y":21,"type":"AIR"},{"x":2,"y":21,"type":"AIR"},{"x":3,"y":21,"type":"AIR"},{"x":4,"y":21,"type":"AIR"},{"x":5,"y":21,"type":"DIRT"},{"x":6,"y":21,"type":"DIRT"},{"x":7,"y":21,"type":"DIRT"},{"x":8,"y":21,"type":"AIR"},{"x":9,"y":21,"type":"DIRT"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"DIRT"},{"x":12,"y":21,"type":"DIRT"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"AIR"},{"x":15,"y":21,"type":"AIR"},{"x":16,"y":21,"type":"DIRT"},{"x":17,"y":21,"type":"AIR"},{"x":18,"y":21,"type":"AIR"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"DIRT"},{"x":21,"y":21,"type":"DIRT"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"DIRT"},{"x":24,"y":21,"type":"AIR"},{"x":25,"y":21,"type":"DIRT"},{"x":26,"y":21,"type":"DIRT"},{"x":27,"y":21,"type":"DIRT"},{"x":28,"y":21,"type":"AIR"},{"x":29,"y":21,"type":"AIR"},{"x":30,"y":21,"type":"AIR"},{"x":31,"y":21,"type":"AIR"},{"x":32,"y":21,"type":"DIRT"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"AIR"},{"x":2,"y":22,"type":"AIR"},{"x":3,"y":22,"type":"DIRT"},{"x":4,"y":22,"type":"DIRT"},{"x":5,"y":22,"type":"DIRT"},{"x":6,"y":22,"type":"DIRT"},{"x":7,"y":22,"type":"DIRT"},{"x":8,"y":22,"type":"DIRT"},{"x":9,"y":22,"type":"DIRT"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"DIRT"},{"x":13,"y":22,"type":"DIRT"},{"x":14,"y":22,"type":"AIR"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"AIR"},{"x":19,"y":22,"type":"DIRT"},{"x":20,"y":22,"type":"DIRT"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"DIRT"},{"x":24,"y":22,"type":"DIRT"},{"x":25,"y":22,"type":"DIRT"},{"x":26,"y":22,"type":"DIRT"},{"x":27,"y":22,"type":"DIRT"},{"x":28,"y":22,"type":"DIRT"},{"x":29,"y":22,"type":"DIRT"},{"x":30,"y":22,"type":"AIR"},{"x":31,"y":22,"type":"AIR"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"AIR"},{"x":2,"y":23,"type":"DIRT"},{"x":3,"y":23,"type":"DIRT"},{"x":4,"y":23,"type":"DIRT"},{"x":5,"y":23,"type":"AIR"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"DIRT"},{"x":8,"y":23,"type":"DIRT"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"DIRT"},{"x":13,"y":23,"type":"AIR"},{"x":14,"y":23,"type":"AIR"},{"x":15,"y":23,"type":"DIRT"},{"x":16,"y":23,"type":"DIRT"},{"x":17,"y":23,"type":"DIRT"},{"x":18,"y":23,"type":"AIR"},{"x":19,"y":23,"type":"AIR"},{"x":20,"y":23,"type":"DIRT"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"DIRT"},{"x":25,"y":23,"type":"DIRT"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"AIR"},{"x":28,"y":23,"type":"DIRT"},{"x":29,"y":23,"type":"DIRT"},{"x":30,"y":23,"type":"DIRT"},{"x":31,"y":23,"type":"AIR"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"DIRT"},{"x":2,"y":24,"type":"DIRT"},{"x":3,"y":24,"type":"DIRT"},{"x":4,"y":24,"type":"DIRT"},{"x":5,"y":24,"type":"AIR"},{"x":6,"y":24,"type":"AIR"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"DIRT"},{"x":9,"y":24,"type":"AIR"},{"x":10,"y":24,"type":"DIRT"},{"x":11,"y":24,"type":"DIRT"},{"x":12,"y":24,"type":"DIRT"},{"x":13,"y":24,"type":"AIR"},{"x":14,"y":24,"type":"DIRT"},{"x":15,"y":24,"type":"DIRT"},{"x":16,"y":24,"type":"DIRT"},{"x":17,"y":24,"type":"DIRT"},{"x":18,"y":24,"type":"DIRT"},{"x":19,"y":24,"type":"AIR"},{"x":20,"y":24,"type":"DIRT"},{"x":21,"y":24,"type":"DIRT"},{"x":22,"y":24,"type":"DIRT"},{"x":23,"y":24,"type":"AIR"},{"x":24,"y":24,"type":"DIRT"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"AIR"},{"x":27,"y":24,"type":"AIR"},{"x":28,"y":24,"type":"DIRT"},{"x":29,"y":24,"type":"DIRT"},{"x":30,"y":24,"type":"DIRT"},{"x":31,"y":24,"type":"DIRT"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"DIRT"},{"x":3,"y":25,"type":"DIRT"},{"x":4,"y":25,"type":"DIRT"},{"x":5,"y":25,"type":"DIRT"},{"x":6,"y":25,"type":"DIRT"},{"x":7,"y":25,"type":"DIRT"},{"x":8,"y":25,"type":"DIRT"},{"x":9,"y":25,"type":"DIRT"},{"x":10,"y":25,"type":"DIRT"},{"x":11,"y":25,"type":"DIRT"},{"x":12,"y":25,"type":"DIRT"},{"x":13,"y":25,"type":"DIRT"},{"x":14,"y":25,"type":"DIRT"},{"x":15,"y":25,"type":"DIRT"},{"x":16,"y":25,"type":"AIR"},{"x":17,"y":25,"type":"DIRT"},{"x":18,"y":25,"type":"DIRT"},{"x":19,"y":25,"type":"DIRT"},{"x":20,"y":25,"type":"DIRT"},{"x":21,"y":25,"type":"DIRT"},{"x":22,"y":25,"type":"DIRT"},{"x":23,"y":25,"type":"DIRT"},{"x":24,"y":25,"type":"DIRT"},{"x":25,"y":25,"type":"DIRT"},{"x":26,"y":25,"type":"DIRT"},{"x":27,"y":25,"type":"DIRT"},{"x":28,"y":25,"type":"DIRT"},{"x":29,"y":25,"type":"DIRT"},{"x":30,"y":25,"type":"DIRT"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"DIRT"},{"x":5,"y":26,"type":"DIRT"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"AIR"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"DIRT"},{"x":14,"y":26,"type":"AIR"},{"x":15,"y":26,"type":"AIR"},{"x":16,"y":26,"type":"AIR"},{"x":17,"y":26,"type":"AIR"},{"x":18,"y":26,"type":"AIR"},{"x":19,"y":26,"type":"DIRT"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"AIR"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"DIRT"},{"x":28,"y":26,"type":"DIRT"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"DIRT"},{"x":5,"y":27,"type":"DIRT"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"DIRT"},{"x":14,"y":27,"type":"AIR"},{"x":15,"y":27,"type":"AIR"},{"x":16,"y":27,"type":"DIRT"},{"x":17,"y":27,"type":"AIR"},{"x":18,"y":27,"type":"AIR"},{"x":19,"y":27,"type":"DIRT"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"DIRT"},{"x":28,"y":27,"type":"DIRT"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"DIRT"},{"x":5,"y":28,"type":"DIRT"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"DIRT"},{"x":12,"y":28,"type":"DIRT"},{"x":13,"y":28,"type":"DIRT"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"DIRT"},{"x":16,"y":28,"type":"DIRT"},{"x":17,"y":28,"type":"DIRT"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"DIRT"},{"x":20,"y":28,"type":"DIRT"},{"x":21,"y":28,"type":"DIRT"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"DIRT"},{"x":28,"y":28,"type":"DIRT"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"AIR"},{"x":12,"y":29,"type":"DIRT"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"AIR"},{"x":15,"y":29,"type":"DIRT"},{"x":16,"y":29,"type":"AIR"},{"x":17,"y":29,"type":"DIRT"},{"x":18,"y":29,"type":"AIR"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"DIRT"},{"x":21,"y":29,"type":"AIR"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"AIR"},{"x":12,"y":30,"type":"DIRT"},{"x":13,"y":30,"type":"AIR"},{"x":14,"y":30,"type":"AIR"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"DIRT"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"AIR"},{"x":19,"y":30,"type":"AIR"},{"x":20,"y":30,"type":"DIRT"},{"x":21,"y":30,"type":"AIR"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"AIR"},{"x":9,"y":31,"type":"DIRT"},{"x":10,"y":31,"type":"AIR"},{"x":11,"y":31,"type":"AIR"},{"x":12,"y":31,"type":"AIR"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"DIRT"},{"x":16,"y":31,"type":"DIRT"},{"x":17,"y":31,"type":"DIRT"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"AIR"},{"x":21,"y":31,"type":"AIR"},{"x":22,"y":31,"type":"AIR"},{"x":23,"y":31,"type":"DIRT"},{"x":24,"y":31,"type":"AIR"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"AIR"},{"x":12,"y":32,"type":"AIR"},{"x":13,"y":32,"type":"AIR"},{"x":14,"y":32,"type":"AIR"},{"x":15,"y":32,"type":"DIRT"},{"x":16,"y":32,"type":"AIR"},{"x":17,"y":32,"type":"DIRT"},{"x":18,"y":32,"type":"AIR"},{"x":19,"y":32,"type":"AIR"},{"x":20,"y":32,"type":"AIR"},{"x":21,"y":32,"type":"AIR"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/2019-worms/tests/replays/2019.08.19.21.15.02/A-log.csv b/2019-worms/tests/replays/2019.08.19.21.15.02/A-log.csv new file mode 100644 index 0000000..373de29 --- /dev/null +++ b/2019-worms/tests/replays/2019.08.19.21.15.02/A-log.csv @@ -0,0 +1,298 @@ +Round,LastCommandType,LastCommand,ActiveWorm,Score,Health,Worm1 Health,Worm1 x,Worm1 y,Worm2 Health,Worm2 x,Worm2 y,Worm3 Health,Worm3 x,Worm3 y +1,null,"null",1,116,350,150,24,4,100,24,28,100,1,16 +2,move,"move 23 3",1,121,350,150,23,3,100,24,28,100,1,16 +3,move,"move 23 28",2,126,350,150,23,3,100,23,28,100,1,16 +4,move,"move 2 16",3,131,350,150,23,3,100,23,28,100,2,16 +5,dig,"dig 22 3",1,138,350,150,23,3,100,23,28,100,2,16 +6,dig,"dig 22 28",2,145,350,150,23,3,100,23,28,100,2,16 +7,dig,"dig 3 16",3,152,350,150,23,3,100,23,28,100,2,16 +8,move,"move 22 3",1,157,350,150,22,3,100,23,28,100,2,16 +9,move,"move 22 28",2,162,350,150,22,3,100,22,28,100,2,16 +10,move,"move 2 15",3,167,350,150,22,3,100,22,28,100,2,15 +11,move,"move 23 3",1,172,350,150,23,3,100,22,28,100,2,15 +12,move,"move 23 28",2,177,350,150,23,3,100,23,28,100,2,15 +13,move,"move 2 16",3,182,350,150,23,3,100,23,28,100,2,16 +14,move,"move 22 3",1,187,350,150,22,3,100,23,28,100,2,16 +15,move,"move 22 28",2,192,350,150,22,3,100,22,28,100,2,16 +16,move,"move 2 15",3,197,350,150,22,3,100,22,28,100,2,15 +17,move,"move 23 3",1,202,350,150,23,3,100,22,28,100,2,15 +18,move,"move 23 28",2,207,350,150,23,3,100,23,28,100,2,15 +19,move,"move 2 16",3,212,350,150,23,3,100,23,28,100,2,16 +20,move,"move 22 3",1,217,350,150,22,3,100,23,28,100,2,16 +21,move,"move 22 28",2,222,350,150,22,3,100,22,28,100,2,16 +22,move,"move 2 15",3,227,350,150,22,3,100,22,28,100,2,15 +23,move,"move 23 3",1,232,350,150,23,3,100,22,28,100,2,15 +24,move,"move 23 28",2,237,350,150,23,3,100,23,28,100,2,15 +25,move,"move 2 16",3,242,350,150,23,3,100,23,28,100,2,16 +26,move,"move 22 3",1,247,350,150,22,3,100,23,28,100,2,16 +27,move,"move 22 28",2,252,350,150,22,3,100,22,28,100,2,16 +28,move,"move 2 15",3,257,350,150,22,3,100,22,28,100,2,15 +29,move,"move 23 3",1,262,350,150,23,3,100,22,28,100,2,15 +30,move,"move 23 28",2,267,350,150,23,3,100,23,28,100,2,15 +31,move,"move 2 16",3,272,350,150,23,3,100,23,28,100,2,16 +32,move,"move 22 3",1,277,350,150,22,3,100,23,28,100,2,16 +33,move,"move 22 28",2,282,350,150,22,3,100,22,28,100,2,16 +34,move,"move 2 15",3,287,350,150,22,3,100,22,28,100,2,15 +35,move,"move 23 3",1,292,350,150,23,3,100,22,28,100,2,15 +36,move,"move 23 28",2,297,350,150,23,3,100,23,28,100,2,15 +37,move,"move 2 16",3,302,350,150,23,3,100,23,28,100,2,16 +38,move,"move 24 3",1,307,350,150,24,3,100,23,28,100,2,16 +39,move,"move 22 28",2,312,350,150,24,3,100,22,28,100,2,16 +40,move,"move 2 15",3,317,350,150,24,3,100,22,28,100,2,15 +41,move,"move 24 4",1,322,350,150,24,4,100,22,28,100,2,15 +42,dig,"dig 21 27",2,329,350,150,24,4,100,22,28,100,2,15 +43,move,"move 1 16",3,334,350,150,24,4,100,22,28,100,1,16 +44,move,"move 25 3",1,339,350,150,25,3,100,22,28,100,1,16 +45,move,"move 23 28",2,344,350,150,25,3,100,23,28,100,1,16 +46,move,"move 2 16",3,349,350,150,25,3,100,23,28,100,2,16 +47,dig,"dig 25 2",1,356,350,150,25,3,100,23,28,100,2,16 +48,move,"move 22 28",2,361,350,150,25,3,100,22,28,100,2,16 +49,move,"move 2 15",3,366,350,150,25,3,100,22,28,100,2,15 +50,move,"move 24 3",1,371,350,150,24,3,100,22,28,100,2,15 +51,move,"move 23 28",2,376,350,150,24,3,100,23,28,100,2,15 +52,dig,"dig 1 14",3,383,350,150,24,3,100,23,28,100,2,15 +53,dig,"dig 24 2",1,390,350,150,24,3,100,23,28,100,2,15 +54,move,"move 24 27",2,395,350,150,24,3,100,24,27,100,2,15 +55,move,"move 2 16",3,400,350,150,24,3,100,24,27,100,2,16 +56,move,"move 23 3",1,405,350,150,23,3,100,24,27,100,2,16 +57,move,"move 23 28",2,410,350,150,23,3,100,23,28,100,2,16 +58,move,"move 2 15",3,415,350,150,23,3,100,23,28,100,2,15 +59,move,"move 24 2",1,420,350,150,24,2,100,23,28,100,2,15 +60,move,"move 22 28",2,425,350,150,24,2,100,22,28,100,2,15 +61,move,"move 2 16",3,430,350,150,24,2,100,22,28,100,2,16 +62,move,"move 23 3",1,435,350,150,23,3,100,22,28,100,2,16 +63,move,"move 23 28",2,440,350,150,23,3,100,23,28,100,2,16 +64,move,"move 2 15",3,445,350,150,23,3,100,23,28,100,2,15 +65,move,"move 24 2",1,450,350,150,24,2,100,23,28,100,2,15 +66,move,"move 22 28",2,455,350,150,24,2,100,22,28,100,2,15 +67,move,"move 2 16",3,460,350,150,24,2,100,22,28,100,2,16 +68,move,"move 23 3",1,465,350,150,23,3,100,22,28,100,2,16 +69,move,"move 23 28",2,470,350,150,23,3,100,23,28,100,2,16 +70,move,"move 2 15",3,475,350,150,23,3,100,23,28,100,2,15 +71,move,"move 24 2",1,480,350,150,24,2,100,23,28,100,2,15 +72,move,"move 22 28",2,485,350,150,24,2,100,22,28,100,2,15 +73,move,"move 2 16",3,490,350,150,24,2,100,22,28,100,2,16 +74,move,"move 23 3",1,495,350,150,23,3,100,22,28,100,2,16 +75,move,"move 23 28",2,500,350,150,23,3,100,23,28,100,2,16 +76,dig,"dig 3 17",3,507,350,150,23,3,100,23,28,100,2,16 +77,move,"move 24 2",1,512,350,150,24,2,100,23,28,100,2,16 +78,move,"move 22 28",2,517,350,150,24,2,100,22,28,100,2,16 +79,move,"move 2 15",3,522,350,150,24,2,100,22,28,100,2,15 +80,move,"move 25 3",1,527,350,150,25,3,100,22,28,100,2,15 +81,dig,"dig 22 27",2,534,350,150,25,3,100,22,28,100,2,15 +82,dig,"dig 2 14",3,541,350,150,25,3,100,22,28,100,2,15 +83,move,"move 25 2",1,546,350,150,25,2,100,22,28,100,2,15 +84,move,"move 23 28",2,551,350,150,25,2,100,23,28,100,2,15 +85,dig,"dig 3 14",3,558,350,150,25,2,100,23,28,100,2,15 +86,move,"move 25 3",1,563,350,150,25,3,100,23,28,100,2,15 +87,move,"move 24 28",2,568,350,150,25,3,100,24,28,100,2,15 +88,nothing,"nothing "Player chose to do nothing"",3,568,350,150,25,3,100,24,28,100,2,15 +89,move,"move 25 2",1,573,350,150,25,2,100,24,28,100,2,15 +90,move,"move 23 28",2,578,350,150,25,2,100,23,28,100,2,15 +91,move,"move 1 16",3,583,350,150,25,2,100,23,28,100,1,16 +92,move,"move 24 3",1,588,350,150,24,3,100,23,28,100,1,16 +93,move,"move 23 29",2,587,330,130,24,3,100,23,29,100,1,16 +94,move,"move 2 16",3,592,330,130,24,3,100,23,29,100,2,16 +95,move,"move 23 4",1,597,330,130,23,4,100,23,29,100,2,16 +96,move,"move 22 28",2,595,310,110,23,4,100,22,28,100,2,16 +97,move,"move 1 16",3,600,310,110,23,4,100,22,28,100,1,16 +98,move,"move 22 3",1,600,310,110,23,4,100,22,28,100,1,16 +99,shoot,"shoot S",1,593,290,90,23,4,100,22,28,100,1,16 +100,shoot,"shoot S",1,591,282,82,23,4,100,22,28,100,1,16 +101,shoot,"shoot S",1,588,274,74,23,4,100,22,28,100,1,16 +102,shoot,"shoot S",1,601,266,66,23,4,100,22,28,100,1,16 +103,shoot,"shoot S",1,615,258,58,23,4,100,22,28,100,1,16 +104,dig,"dig 21 28",2,619,250,50,23,4,100,22,28,100,1,16 +105,nothing,"nothing "Player chose to do nothing"",3,619,250,50,23,4,100,22,28,100,1,16 +106,move,"move 24 3",1,624,250,50,24,3,100,22,28,100,1,16 +107,nothing,"nothing "Player chose to do nothing"",2,624,250,50,24,3,100,22,28,100,1,16 +108,move,"move 2 17",3,629,250,50,24,3,100,22,28,100,2,17 +109,move,"move 25 4",1,629,250,50,24,3,100,22,28,100,2,17 +110,move,"move 23 28",2,634,250,50,24,3,100,23,28,100,2,17 +111,move,"move 1 17",3,636,242,42,24,3,100,23,28,100,1,17 +112,move,"move 25 4",1,641,242,42,25,4,100,23,28,100,1,17 +113,move,"move 23 27",2,646,242,42,25,4,100,23,27,100,1,17 +114,move,"move 2 16",3,649,234,34,25,4,100,23,27,100,2,16 +115,shoot,"shoot W",1,649,234,34,25,4,100,23,27,100,2,16 +116,move,"move 22 28",2,651,226,26,25,4,100,22,28,100,2,16 +117,move,"move 3 16",3,652,215,15,25,4,100,22,28,100,3,16 +118,shoot,"shoot W",1,667,212,12,25,4,100,22,28,100,3,16 +119,move,"move 23 27",2,669,201,1,25,4,100,23,27,100,3,16 +120,move,"move 2 17",3,673,200,-10,25,4,100,23,27,100,2,17 +121,move,"move 24 27",2,678,200,-10,25,4,100,24,27,100,2,17 +122,move,"move 2 16",3,683,200,-10,25,4,100,24,27,100,2,16 +123,dig,"dig 25 26",2,690,200,-10,25,4,100,24,27,100,2,16 +124,move,"move 3 17",3,695,200,-10,25,4,100,24,27,100,3,17 +125,move,"move 23 28",2,700,200,-10,25,4,100,23,28,100,3,17 +126,move,"move 2 17",3,705,200,-10,25,4,100,23,28,100,2,17 +127,move,"move 22 28",2,710,200,-10,25,4,100,22,28,100,2,17 +128,dig,"dig 3 18",3,717,200,-10,25,4,100,22,28,100,2,17 +129,move,"move 23 28",2,722,200,-10,25,4,100,23,28,100,2,17 +130,move,"move 3 18",3,727,200,-10,25,4,100,23,28,100,3,18 +131,move,"move 22 28",2,732,200,-10,25,4,100,22,28,100,3,18 +132,move,"move 3 19",3,737,200,-10,25,4,100,22,28,100,3,19 +133,move,"move 22 27",2,742,200,-10,25,4,100,22,27,100,3,19 +134,move,"move 4 20",3,747,200,-10,25,4,100,22,27,100,4,20 +135,move,"move 21 26",2,752,200,-10,25,4,100,21,26,100,4,20 +136,move,"move 4 21",3,757,200,-10,25,4,100,21,26,100,4,21 +137,dig,"dig 20 25",2,764,200,-10,25,4,100,21,26,100,4,21 +138,nothing,"nothing "Player chose to do nothing"",3,764,200,-10,25,4,100,21,26,100,4,21 +139,move,"move 22 27",2,769,200,-10,25,4,100,22,27,100,4,21 +140,dig,"dig 5 20",3,776,200,-10,25,4,100,22,27,100,4,21 +141,move,"move 23 27",2,781,200,-10,25,4,100,23,27,100,4,21 +142,move,"move 4 20",3,786,200,-10,25,4,100,23,27,100,4,20 +143,nothing,"nothing "Player chose to do nothing"",2,786,200,-10,25,4,100,23,27,100,4,20 +144,move,"move 5 20",3,791,200,-10,25,4,100,23,27,100,5,20 +145,dig,"dig 23 26",2,798,200,-10,25,4,100,23,27,100,5,20 +146,dig,"dig 6 21",3,805,200,-10,25,4,100,23,27,100,5,20 +147,move,"move 23 26",2,810,200,-10,25,4,100,23,26,100,5,20 +148,dig,"dig 6 20",3,817,200,-10,25,4,100,23,26,100,5,20 +149,dig,"dig 22 25",2,824,200,-10,25,4,100,23,26,100,5,20 +150,dig,"dig 5 21",3,831,200,-10,25,4,100,23,26,100,5,20 +151,dig,"dig 24 25",2,838,200,-10,25,4,100,23,26,100,5,20 +152,move,"move 5 21",3,843,200,-10,25,4,100,23,26,100,5,21 +153,nothing,"nothing "Player chose to do nothing"",2,843,200,-10,25,4,100,23,26,100,5,21 +154,move,"move 5 20",3,848,200,-10,25,4,100,23,26,100,5,20 +155,dig,"dig 24 26",2,855,200,-10,25,4,100,23,26,100,5,20 +156,nothing,"nothing "Player chose to do nothing"",3,855,200,-10,25,4,100,23,26,100,5,20 +157,dig,"dig 22 26",2,862,200,-10,25,4,100,23,26,100,5,20 +158,move,"move 6 19",3,867,200,-10,25,4,100,23,26,100,6,19 +159,move,"move 24 25",2,872,200,-10,25,4,100,24,25,100,6,19 +160,move,"move 5 18",3,877,200,-10,25,4,100,24,25,100,5,18 +161,move,"move 23 24",2,882,200,-10,25,4,100,23,24,100,5,18 +162,dig,"dig 4 19",3,889,200,-10,25,4,100,23,24,100,5,18 +163,dig,"dig 22 24",2,896,200,-10,25,4,100,23,24,100,5,18 +164,dig,"dig 5 19",3,903,200,-10,25,4,100,23,24,100,5,18 +165,banana,"banana 23 19",2,952,200,-10,25,4,100,23,24,100,5,18 +166,move,"move 6 19",3,957,200,-10,25,4,100,23,24,100,6,19 +167,banana,"banana 23 19",2,997,200,-10,25,4,100,23,24,100,6,19 +168,move,"move 7 19",3,1002,200,-10,25,4,100,23,24,100,7,19 +169,banana,"banana 23 19",2,1056,200,-10,25,4,100,23,24,100,7,19 +170,dig,"dig 7 18",3,1063,200,-10,25,4,100,23,24,100,7,19 +171,dig,"dig 23 23",2,1070,200,-10,25,4,100,23,24,100,7,19 +172,move,"move 7 18",3,1075,200,-10,25,4,100,23,24,100,7,18 +173,move,"move 22 24",2,1080,200,-10,25,4,100,22,24,100,7,18 +174,move,"move 7 17",3,1085,200,-10,25,4,100,22,24,100,7,17 +175,dig,"dig 21 25",2,1092,200,-10,25,4,100,22,24,100,7,17 +176,dig,"dig 8 18",3,1099,200,-10,25,4,100,22,24,100,7,17 +177,dig,"dig 21 23",2,1106,200,-10,25,4,100,22,24,100,7,17 +178,dig,"dig 8 17",3,1113,200,-10,25,4,100,22,24,100,7,17 +179,move,"move 21 25",2,1118,200,-10,25,4,100,21,25,100,7,17 +180,nothing,"nothing "Player chose to do nothing"",3,1118,200,-10,25,4,100,21,25,100,7,17 +181,move,"move 20 25",2,1123,200,-10,25,4,100,20,25,100,7,17 +182,nothing,"nothing "Player chose to do nothing"",3,1123,200,-10,25,4,100,20,25,100,7,17 +183,move,"move 19 24",2,1128,200,-10,25,4,100,19,24,100,7,17 +184,move,"move 8 18",3,1133,200,-10,25,4,100,19,24,100,8,18 +185,move,"move 20 25",2,1138,200,-10,25,4,100,20,25,100,8,18 +186,move,"move 8 17",3,1143,200,-10,25,4,100,20,25,100,8,17 +187,move,"move 19 24",2,1148,200,-10,25,4,100,19,24,100,8,17 +188,dig,"dig 9 18",3,1155,200,-10,25,4,100,19,24,100,8,17 +189,shoot,"shoot NE",2,1171,200,-10,25,4,100,19,24,100,8,17 +190,move,"move 8 18",3,1174,192,-10,25,4,92,19,24,100,8,18 +191,shoot,"shoot NE",2,1190,192,-10,25,4,92,19,24,100,8,18 +192,move,"move 9 18",3,1195,192,-10,25,4,92,19,24,100,9,18 +193,shoot,"shoot NE",2,1208,184,-10,25,4,84,19,24,100,9,18 +194,move,"move 9 19",3,1213,184,-10,25,4,84,19,24,100,9,19 +195,move,"move 18 23",2,1218,184,-10,25,4,84,18,23,100,9,19 +196,move,"move 10 19",3,1223,184,-10,25,4,84,18,23,100,10,19 +197,shoot,"shoot NE",2,1236,176,-10,25,4,76,18,23,100,10,19 +198,move,"move 9 20",3,1239,168,-10,25,4,68,18,23,100,9,20 +199,shoot,"shoot E",2,1255,168,-10,25,4,68,18,23,100,9,20 +200,dig,"dig 10 20",3,1259,160,-10,25,4,60,18,23,100,9,20 +201,move,"move 17 22",2,1264,160,-10,25,4,60,17,22,100,9,20 +202,move,"move 10 20",3,1269,160,-10,25,4,60,17,22,100,10,20 +203,shoot,"shoot E",2,1285,160,-10,25,4,60,17,22,100,10,20 +204,move,"move 9 20",3,1290,160,-10,25,4,60,17,22,100,9,20 +205,move,"move 16 22",2,1295,160,-10,25,4,60,16,22,100,9,20 +206,dig,"dig 9 21",3,1299,152,-10,25,4,52,16,22,100,9,20 +207,shoot,"shoot E",2,1315,152,-10,25,4,52,16,22,100,9,20 +208,move,"move 10 19",3,1320,152,-10,25,4,52,16,22,100,10,19 +209,shoot,"shoot E",2,1334,144,-10,25,4,44,16,22,100,10,19 +210,move,"move 11 19",3,1339,144,-10,25,4,44,16,22,100,11,19 +211,shoot,"shoot E",2,1355,144,-10,25,4,44,16,22,100,11,19 +212,move,"move 11 18",3,1360,144,-10,25,4,44,16,22,100,11,18 +213,shoot,"shoot NE",2,1373,136,-10,25,4,36,16,22,100,11,18 +214,snowball,"snowball 16 20",3,1390,136,-10,25,4,36,16,22,100,11,18 +215,shoot,"shoot E",2,1406,136,-10,25,4,36,16,22,100,11,18 +216,dig,"dig 12 17",3,1410,128,-10,25,4,28,16,22,100,11,18 +217,shoot,"shoot E",2,1426,128,-10,25,4,28,16,22,100,11,18 +218,snowball,"snowball 16 20",3,1443,128,-10,25,4,28,16,22,100,11,18 +219,shoot,"shoot E",2,1457,120,-10,25,4,20,16,22,100,11,18 +220,snowball,"snowball 16 20",3,1474,120,-10,25,4,20,16,22,100,11,18 +221,move,"move 15 21",2,1479,120,-10,25,4,20,15,21,100,11,18 +222,invalid,"invalid",3,1475,120,-10,25,4,20,15,21,100,11,18 +223,shoot,"shoot E",2,1491,120,-10,25,4,20,15,21,100,11,18 +224,move,"move 12 17",3,1496,120,-10,25,4,20,15,21,100,12,17 +225,shoot,"shoot E",2,1512,120,-10,25,4,20,15,21,100,12,17 +226,dig,"dig 13 18",3,1519,120,-10,25,4,20,15,21,100,12,17 +227,shoot,"shoot E",2,1535,120,-10,25,4,20,15,21,100,12,17 +228,move,"move 13 18",3,1537,112,-10,25,4,12,15,21,100,13,18 +229,shoot,"shoot E",2,1553,112,-10,25,4,12,15,21,100,13,18 +230,shoot,"shoot SE",3,1569,112,-10,25,4,12,15,21,100,13,18 +231,shoot,"shoot E",2,1582,104,-10,25,4,4,15,21,100,13,18 +232,shoot,"shoot SE",3,1598,104,-10,25,4,4,15,21,100,13,18 +233,shoot,"shoot E",2,1614,104,-10,25,4,4,15,21,100,13,18 +234,move,"move 14 17",3,1618,100,-10,25,4,-4,15,21,100,14,17 +235,invalid,"invalid",3,1614,100,-10,25,4,-4,15,21,100,14,17 +236,move,"move 15 18",3,1619,100,-10,25,4,-4,15,21,100,15,18 +237,move,"move 15 19",3,1624,100,-10,25,4,-4,15,21,100,15,19 +238,shoot,"shoot SE",3,1640,100,-10,25,4,-4,15,21,100,15,19 +239,shoot,"shoot S",3,1653,92,-10,25,4,-4,15,21,92,15,19 +240,shoot,"shoot SE",3,1667,84,-10,25,4,-4,15,21,84,15,19 +241,shoot,"shoot SE",3,1683,84,-10,25,4,-4,15,21,84,15,19 +242,move,"move 16 19",3,1688,84,-10,25,4,-4,15,21,84,16,19 +243,move,"move 17 20",3,1693,84,-10,25,4,-4,15,21,84,17,20 +244,shoot,"shoot S",3,1709,84,-10,25,4,-4,15,21,84,17,20 +245,shoot,"shoot W",3,1722,76,-10,25,4,-4,15,21,76,17,20 +246,shoot,"shoot S",3,1738,76,-10,25,4,-4,15,21,76,17,20 +247,move,"move 18 19",3,1743,76,-10,25,4,-4,15,21,76,18,19 +248,move,"move 17 19",3,1748,76,-10,25,4,-4,15,21,76,17,19 +249,shoot,"shoot SW",3,1764,76,-10,25,4,-4,15,21,76,17,19 +250,move,"move 18 19",3,1769,76,-10,25,4,-4,15,21,76,18,19 +251,move,"move 17 19",3,1774,76,-10,25,4,-4,15,21,76,17,19 +252,shoot,"shoot SE",3,1790,76,-10,25,4,-4,15,21,76,17,19 +253,move,"move 17 18",3,1795,76,-10,25,4,-4,15,21,76,17,18 +254,shoot,"shoot SW",3,1851,76,-10,25,4,-4,15,21,76,17,18 +255,shoot,"shoot S",3,1867,76,-10,25,4,-4,15,21,76,17,18 +256,move,"move 18 17",3,1872,76,-10,25,4,-4,15,21,76,18,17 +257,move,"move 18 16",3,1877,76,-10,25,4,-4,15,21,76,18,16 +258,move,"move 18 17",3,1882,76,-10,25,4,-4,15,21,76,18,17 +259,shoot,"shoot S",3,1938,76,-10,25,4,-4,15,21,76,18,17 +260,move,"move 17 18",3,1943,76,-10,25,4,-4,15,21,76,17,18 +261,move,"move 18 18",3,1948,76,-10,25,4,-4,15,21,76,18,18 +262,move,"move 17 18",3,1953,76,-10,25,4,-4,15,21,76,17,18 +263,move,"move 18 18",3,1958,76,-10,25,4,-4,15,21,76,18,18 +264,move,"move 17 18",3,1963,76,-10,25,4,-4,15,21,76,17,18 +265,move,"move 18 18",3,1968,76,-10,25,4,-4,15,21,76,18,18 +266,move,"move 17 19",3,1973,76,-10,25,4,-4,15,21,76,17,19 +267,move,"move 17 20",3,1978,76,-10,25,4,-4,15,21,76,17,20 +268,move,"move 17 19",3,1983,76,-10,25,4,-4,15,21,76,17,19 +269,move,"move 17 20",3,1988,76,-10,25,4,-4,15,21,76,17,20 +270,move,"move 17 19",3,1993,76,-10,25,4,-4,15,21,76,17,19 +271,move,"move 17 20",3,1998,76,-10,25,4,-4,15,21,76,17,20 +272,move,"move 17 19",3,2003,76,-10,25,4,-4,15,21,76,17,19 +273,move,"move 17 20",3,2008,76,-10,25,4,-4,15,21,76,17,20 +274,move,"move 17 19",3,2013,76,-10,25,4,-4,15,21,76,17,19 +275,move,"move 18 20",3,2018,76,-10,25,4,-4,15,21,76,18,20 +276,move,"move 17 20",3,2023,76,-10,25,4,-4,15,21,76,17,20 +277,move,"move 17 19",3,2028,76,-10,25,4,-4,15,21,76,17,19 +278,move,"move 17 20",3,2033,76,-10,25,4,-4,15,21,76,17,20 +279,move,"move 18 20",3,2038,76,-10,25,4,-4,15,21,76,18,20 +280,move,"move 17 20",3,2043,76,-10,25,4,-4,15,21,76,17,20 +281,move,"move 17 19",3,2048,76,-10,25,4,-4,15,21,76,17,19 +282,move,"move 17 20",3,2053,76,-10,25,4,-4,15,21,76,17,20 +283,move,"move 17 19",3,2058,76,-10,25,4,-4,15,21,76,17,19 +284,move,"move 17 20",3,2063,76,-10,25,4,-4,15,21,76,17,20 +285,move,"move 17 19",3,2068,76,-10,25,4,-4,15,21,76,17,19 +286,move,"move 18 20",3,2073,76,-10,25,4,-4,15,21,76,18,20 +287,move,"move 17 19",3,2077,73,-10,25,4,-4,15,21,73,17,19 +288,move,"move 18 20",3,2082,73,-10,25,4,-4,15,21,73,18,20 +289,move,"move 17 19",3,2086,70,-10,25,4,-4,15,21,70,17,19 +290,move,"move 18 20",3,2091,70,-10,25,4,-4,15,21,70,18,20 +291,move,"move 17 19",3,2095,67,-10,25,4,-4,15,21,67,17,19 +292,move,"move 18 20",3,2100,67,-10,25,4,-4,15,21,67,18,20 +293,move,"move 17 19",3,2104,64,-10,25,4,-4,15,21,64,17,19 +294,move,"move 18 20",3,2109,64,-10,25,4,-4,15,21,64,18,20 +295,move,"move 17 20",3,2113,61,-10,25,4,-4,15,21,61,17,20 +296,move,"move 18 20",3,2117,58,-10,25,4,-4,15,21,58,18,20 +297,move,"move 17 20",3,2121,55,-10,25,4,-4,15,21,55,17,20 diff --git a/2019-worms/tests/replays/2019.08.19.21.15.02/B-init.json b/2019-worms/tests/replays/2019.08.19.21.15.02/B-init.json new file mode 100644 index 0000000..8889378 --- /dev/null +++ b/2019-worms/tests/replays/2019.08.19.21.15.02/B-init.json @@ -0,0 +1 @@ +{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":2,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":8,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":4},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":31,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":1,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":24,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":1,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"AIR"},{"x":13,"y":0,"type":"DIRT"},{"x":14,"y":0,"type":"DIRT"},{"x":15,"y":0,"type":"DIRT"},{"x":16,"y":0,"type":"AIR"},{"x":17,"y":0,"type":"DIRT"},{"x":18,"y":0,"type":"DIRT"},{"x":19,"y":0,"type":"DIRT"},{"x":20,"y":0,"type":"AIR"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"AIR"},{"x":10,"y":1,"type":"AIR"},{"x":11,"y":1,"type":"AIR"},{"x":12,"y":1,"type":"AIR"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"DIRT"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"AIR"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"DIRT"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"AIR"},{"x":21,"y":1,"type":"AIR"},{"x":22,"y":1,"type":"AIR"},{"x":23,"y":1,"type":"AIR"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"DIRT"},{"x":12,"y":2,"type":"DIRT"},{"x":13,"y":2,"type":"AIR"},{"x":14,"y":2,"type":"AIR"},{"x":15,"y":2,"type":"DIRT"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"DIRT"},{"x":18,"y":2,"type":"AIR"},{"x":19,"y":2,"type":"AIR"},{"x":20,"y":2,"type":"DIRT"},{"x":21,"y":2,"type":"DIRT"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"DIRT"},{"x":12,"y":3,"type":"DIRT"},{"x":13,"y":3,"type":"DIRT"},{"x":14,"y":3,"type":"AIR"},{"x":15,"y":3,"type":"AIR"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"AIR"},{"x":18,"y":3,"type":"AIR"},{"x":19,"y":3,"type":"DIRT"},{"x":20,"y":3,"type":"DIRT"},{"x":21,"y":3,"type":"DIRT"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"DIRT"},{"x":5,"y":4,"type":"DIRT"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":4},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"DIRT"},{"x":12,"y":4,"type":"DIRT"},{"x":13,"y":4,"type":"DIRT"},{"x":14,"y":4,"type":"DIRT"},{"x":15,"y":4,"type":"AIR"},{"x":16,"y":4,"type":"DIRT"},{"x":17,"y":4,"type":"AIR"},{"x":18,"y":4,"type":"DIRT"},{"x":19,"y":4,"type":"DIRT"},{"x":20,"y":4,"type":"DIRT"},{"x":21,"y":4,"type":"DIRT"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"DIRT"},{"x":28,"y":4,"type":"DIRT"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"AIR"},{"x":5,"y":5,"type":"AIR"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"DIRT"},{"x":13,"y":5,"type":"DIRT"},{"x":14,"y":5,"type":"DIRT"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"DIRT"},{"x":19,"y":5,"type":"DIRT"},{"x":20,"y":5,"type":"DIRT"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"AIR"},{"x":28,"y":5,"type":"AIR"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"DIRT"},{"x":4,"y":6,"type":"DIRT"},{"x":5,"y":6,"type":"AIR"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"DIRT"},{"x":12,"y":6,"type":"DIRT"},{"x":13,"y":6,"type":"DIRT"},{"x":14,"y":6,"type":"DIRT"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"DIRT"},{"x":19,"y":6,"type":"DIRT"},{"x":20,"y":6,"type":"DIRT"},{"x":21,"y":6,"type":"DIRT"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"AIR"},{"x":28,"y":6,"type":"DIRT"},{"x":29,"y":6,"type":"DIRT"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"AIR"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"DIRT"},{"x":5,"y":7,"type":"AIR"},{"x":6,"y":7,"type":"AIR"},{"x":7,"y":7,"type":"DIRT"},{"x":8,"y":7,"type":"DIRT"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"DIRT"},{"x":12,"y":7,"type":"DIRT"},{"x":13,"y":7,"type":"AIR"},{"x":14,"y":7,"type":"AIR"},{"x":15,"y":7,"type":"AIR"},{"x":16,"y":7,"type":"DIRT"},{"x":17,"y":7,"type":"AIR"},{"x":18,"y":7,"type":"AIR"},{"x":19,"y":7,"type":"AIR"},{"x":20,"y":7,"type":"DIRT"},{"x":21,"y":7,"type":"DIRT"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"DIRT"},{"x":25,"y":7,"type":"DIRT"},{"x":26,"y":7,"type":"AIR"},{"x":27,"y":7,"type":"AIR"},{"x":28,"y":7,"type":"DIRT"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"AIR"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"AIR"},{"x":2,"y":8,"type":"AIR"},{"x":3,"y":8,"type":"AIR"},{"x":4,"y":8,"type":"AIR"},{"x":5,"y":8,"type":"DIRT"},{"x":6,"y":8,"type":"DIRT"},{"x":7,"y":8,"type":"DIRT"},{"x":8,"y":8,"type":"DIRT"},{"x":9,"y":8,"type":"DIRT"},{"x":10,"y":8,"type":"DIRT"},{"x":11,"y":8,"type":"DIRT"},{"x":12,"y":8,"type":"DIRT"},{"x":13,"y":8,"type":"AIR"},{"x":14,"y":8,"type":"AIR"},{"x":15,"y":8,"type":"DIRT"},{"x":16,"y":8,"type":"DIRT"},{"x":17,"y":8,"type":"DIRT"},{"x":18,"y":8,"type":"AIR"},{"x":19,"y":8,"type":"AIR"},{"x":20,"y":8,"type":"DIRT"},{"x":21,"y":8,"type":"DIRT"},{"x":22,"y":8,"type":"DIRT"},{"x":23,"y":8,"type":"DIRT"},{"x":24,"y":8,"type":"DIRT"},{"x":25,"y":8,"type":"DIRT"},{"x":26,"y":8,"type":"DIRT"},{"x":27,"y":8,"type":"DIRT"},{"x":28,"y":8,"type":"AIR"},{"x":29,"y":8,"type":"AIR"},{"x":30,"y":8,"type":"AIR"},{"x":31,"y":8,"type":"AIR"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"AIR"},{"x":2,"y":9,"type":"AIR"},{"x":3,"y":9,"type":"AIR"},{"x":4,"y":9,"type":"DIRT"},{"x":5,"y":9,"type":"DIRT"},{"x":6,"y":9,"type":"DIRT"},{"x":7,"y":9,"type":"DIRT"},{"x":8,"y":9,"type":"DIRT"},{"x":9,"y":9,"type":"DIRT"},{"x":10,"y":9,"type":"DIRT"},{"x":11,"y":9,"type":"AIR"},{"x":12,"y":9,"type":"DIRT"},{"x":13,"y":9,"type":"AIR"},{"x":14,"y":9,"type":"AIR"},{"x":15,"y":9,"type":"DIRT"},{"x":16,"y":9,"type":"DIRT"},{"x":17,"y":9,"type":"DIRT"},{"x":18,"y":9,"type":"AIR"},{"x":19,"y":9,"type":"AIR"},{"x":20,"y":9,"type":"DIRT"},{"x":21,"y":9,"type":"AIR"},{"x":22,"y":9,"type":"DIRT"},{"x":23,"y":9,"type":"DIRT"},{"x":24,"y":9,"type":"DIRT"},{"x":25,"y":9,"type":"DIRT"},{"x":26,"y":9,"type":"DIRT"},{"x":27,"y":9,"type":"DIRT"},{"x":28,"y":9,"type":"DIRT"},{"x":29,"y":9,"type":"AIR"},{"x":30,"y":9,"type":"AIR"},{"x":31,"y":9,"type":"AIR"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"AIR"},{"x":2,"y":10,"type":"AIR"},{"x":3,"y":10,"type":"AIR"},{"x":4,"y":10,"type":"AIR"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"DIRT"},{"x":7,"y":10,"type":"DIRT"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"DIRT"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"AIR"},{"x":12,"y":10,"type":"DIRT"},{"x":13,"y":10,"type":"DIRT"},{"x":14,"y":10,"type":"DIRT"},{"x":15,"y":10,"type":"DIRT"},{"x":16,"y":10,"type":"AIR"},{"x":17,"y":10,"type":"DIRT"},{"x":18,"y":10,"type":"DIRT"},{"x":19,"y":10,"type":"DIRT"},{"x":20,"y":10,"type":"DIRT"},{"x":21,"y":10,"type":"AIR"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"DIRT"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"DIRT"},{"x":26,"y":10,"type":"DIRT"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"AIR"},{"x":29,"y":10,"type":"AIR"},{"x":30,"y":10,"type":"AIR"},{"x":31,"y":10,"type":"AIR"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"DIRT"},{"x":1,"y":11,"type":"DIRT"},{"x":2,"y":11,"type":"AIR"},{"x":3,"y":11,"type":"AIR"},{"x":4,"y":11,"type":"AIR"},{"x":5,"y":11,"type":"AIR"},{"x":6,"y":11,"type":"DIRT"},{"x":7,"y":11,"type":"DIRT"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"DIRT"},{"x":10,"y":11,"type":"AIR"},{"x":11,"y":11,"type":"AIR"},{"x":12,"y":11,"type":"DIRT"},{"x":13,"y":11,"type":"DIRT"},{"x":14,"y":11,"type":"DIRT"},{"x":15,"y":11,"type":"AIR"},{"x":16,"y":11,"type":"AIR"},{"x":17,"y":11,"type":"AIR"},{"x":18,"y":11,"type":"DIRT"},{"x":19,"y":11,"type":"DIRT"},{"x":20,"y":11,"type":"DIRT"},{"x":21,"y":11,"type":"AIR"},{"x":22,"y":11,"type":"AIR"},{"x":23,"y":11,"type":"DIRT"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"DIRT"},{"x":26,"y":11,"type":"DIRT"},{"x":27,"y":11,"type":"AIR"},{"x":28,"y":11,"type":"AIR"},{"x":29,"y":11,"type":"AIR"},{"x":30,"y":11,"type":"AIR"},{"x":31,"y":11,"type":"DIRT"},{"x":32,"y":11,"type":"DIRT"}],[{"x":0,"y":12,"type":"AIR"},{"x":1,"y":12,"type":"AIR"},{"x":2,"y":12,"type":"AIR"},{"x":3,"y":12,"type":"AIR"},{"x":4,"y":12,"type":"AIR"},{"x":5,"y":12,"type":"AIR"},{"x":6,"y":12,"type":"AIR"},{"x":7,"y":12,"type":"DIRT"},{"x":8,"y":12,"type":"DIRT"},{"x":9,"y":12,"type":"DIRT"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"AIR"},{"x":12,"y":12,"type":"AIR"},{"x":13,"y":12,"type":"DIRT"},{"x":14,"y":12,"type":"DIRT"},{"x":15,"y":12,"type":"AIR"},{"x":16,"y":12,"type":"AIR"},{"x":17,"y":12,"type":"AIR"},{"x":18,"y":12,"type":"DIRT"},{"x":19,"y":12,"type":"DIRT"},{"x":20,"y":12,"type":"AIR"},{"x":21,"y":12,"type":"AIR"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"DIRT"},{"x":24,"y":12,"type":"DIRT"},{"x":25,"y":12,"type":"DIRT"},{"x":26,"y":12,"type":"AIR"},{"x":27,"y":12,"type":"AIR"},{"x":28,"y":12,"type":"AIR"},{"x":29,"y":12,"type":"AIR"},{"x":30,"y":12,"type":"AIR"},{"x":31,"y":12,"type":"AIR"},{"x":32,"y":12,"type":"AIR"}],[{"x":0,"y":13,"type":"AIR"},{"x":1,"y":13,"type":"AIR"},{"x":2,"y":13,"type":"AIR"},{"x":3,"y":13,"type":"AIR"},{"x":4,"y":13,"type":"DIRT"},{"x":5,"y":13,"type":"DIRT"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"DIRT"},{"x":8,"y":13,"type":"DIRT"},{"x":9,"y":13,"type":"DIRT"},{"x":10,"y":13,"type":"DIRT"},{"x":11,"y":13,"type":"AIR"},{"x":12,"y":13,"type":"DIRT"},{"x":13,"y":13,"type":"DIRT"},{"x":14,"y":13,"type":"DIRT"},{"x":15,"y":13,"type":"AIR"},{"x":16,"y":13,"type":"AIR"},{"x":17,"y":13,"type":"AIR"},{"x":18,"y":13,"type":"DIRT"},{"x":19,"y":13,"type":"DIRT"},{"x":20,"y":13,"type":"DIRT"},{"x":21,"y":13,"type":"AIR"},{"x":22,"y":13,"type":"DIRT"},{"x":23,"y":13,"type":"DIRT"},{"x":24,"y":13,"type":"DIRT"},{"x":25,"y":13,"type":"DIRT"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"DIRT"},{"x":28,"y":13,"type":"DIRT"},{"x":29,"y":13,"type":"AIR"},{"x":30,"y":13,"type":"AIR"},{"x":31,"y":13,"type":"AIR"},{"x":32,"y":13,"type":"AIR"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"DIRT"},{"x":5,"y":14,"type":"DIRT"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"DIRT"},{"x":8,"y":14,"type":"DIRT"},{"x":9,"y":14,"type":"DIRT"},{"x":10,"y":14,"type":"AIR"},{"x":11,"y":14,"type":"AIR"},{"x":12,"y":14,"type":"AIR"},{"x":13,"y":14,"type":"DIRT"},{"x":14,"y":14,"type":"AIR"},{"x":15,"y":14,"type":"AIR"},{"x":16,"y":14,"type":"AIR"},{"x":17,"y":14,"type":"AIR"},{"x":18,"y":14,"type":"AIR"},{"x":19,"y":14,"type":"DIRT"},{"x":20,"y":14,"type":"AIR"},{"x":21,"y":14,"type":"AIR"},{"x":22,"y":14,"type":"AIR"},{"x":23,"y":14,"type":"DIRT"},{"x":24,"y":14,"type":"DIRT"},{"x":25,"y":14,"type":"DIRT"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"DIRT"},{"x":28,"y":14,"type":"DIRT"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"DIRT"},{"x":5,"y":15,"type":"DIRT"},{"x":6,"y":15,"type":"AIR"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"AIR"},{"x":9,"y":15,"type":"AIR"},{"x":10,"y":15,"type":"AIR"},{"x":11,"y":15,"type":"AIR"},{"x":12,"y":15,"type":"AIR"},{"x":13,"y":15,"type":"AIR"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"AIR"},{"x":16,"y":15,"type":"AIR"},{"x":17,"y":15,"type":"AIR"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"AIR"},{"x":20,"y":15,"type":"AIR"},{"x":21,"y":15,"type":"AIR"},{"x":22,"y":15,"type":"AIR"},{"x":23,"y":15,"type":"AIR"},{"x":24,"y":15,"type":"AIR"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"AIR"},{"x":27,"y":15,"type":"DIRT"},{"x":28,"y":15,"type":"DIRT"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":1,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"DIRT"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"AIR"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"AIR"},{"x":10,"y":16,"type":"DIRT"},{"x":11,"y":16,"type":"DIRT"},{"x":12,"y":16,"type":"DIRT"},{"x":13,"y":16,"type":"AIR"},{"x":14,"y":16,"type":"AIR"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"AIR"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"AIR"},{"x":19,"y":16,"type":"AIR"},{"x":20,"y":16,"type":"DIRT"},{"x":21,"y":16,"type":"DIRT"},{"x":22,"y":16,"type":"DIRT"},{"x":23,"y":16,"type":"AIR"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"AIR"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"DIRT"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":31,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"DIRT"},{"x":5,"y":17,"type":"DIRT"},{"x":6,"y":17,"type":"AIR"},{"x":7,"y":17,"type":"AIR"},{"x":8,"y":17,"type":"DIRT"},{"x":9,"y":17,"type":"DIRT"},{"x":10,"y":17,"type":"AIR"},{"x":11,"y":17,"type":"AIR"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"DIRT"},{"x":14,"y":17,"type":"AIR"},{"x":15,"y":17,"type":"AIR"},{"x":16,"y":17,"type":"DIRT"},{"x":17,"y":17,"type":"AIR"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"DIRT"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"AIR"},{"x":22,"y":17,"type":"AIR"},{"x":23,"y":17,"type":"DIRT"},{"x":24,"y":17,"type":"DIRT"},{"x":25,"y":17,"type":"AIR"},{"x":26,"y":17,"type":"AIR"},{"x":27,"y":17,"type":"DIRT"},{"x":28,"y":17,"type":"DIRT"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"DIRT"},{"x":5,"y":18,"type":"AIR"},{"x":6,"y":18,"type":"AIR"},{"x":7,"y":18,"type":"DIRT"},{"x":8,"y":18,"type":"DIRT"},{"x":9,"y":18,"type":"DIRT"},{"x":10,"y":18,"type":"AIR"},{"x":11,"y":18,"type":"AIR"},{"x":12,"y":18,"type":"AIR"},{"x":13,"y":18,"type":"DIRT"},{"x":14,"y":18,"type":"DIRT"},{"x":15,"y":18,"type":"AIR"},{"x":16,"y":18,"type":"DIRT"},{"x":17,"y":18,"type":"AIR"},{"x":18,"y":18,"type":"DIRT"},{"x":19,"y":18,"type":"DIRT"},{"x":20,"y":18,"type":"AIR"},{"x":21,"y":18,"type":"AIR"},{"x":22,"y":18,"type":"AIR"},{"x":23,"y":18,"type":"DIRT"},{"x":24,"y":18,"type":"DIRT"},{"x":25,"y":18,"type":"DIRT"},{"x":26,"y":18,"type":"AIR"},{"x":27,"y":18,"type":"AIR"},{"x":28,"y":18,"type":"DIRT"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"AIR"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"AIR"},{"x":3,"y":19,"type":"AIR"},{"x":4,"y":19,"type":"DIRT"},{"x":5,"y":19,"type":"DIRT"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"AIR"},{"x":8,"y":19,"type":"DIRT"},{"x":9,"y":19,"type":"AIR"},{"x":10,"y":19,"type":"AIR"},{"x":11,"y":19,"type":"AIR"},{"x":12,"y":19,"type":"DIRT"},{"x":13,"y":19,"type":"DIRT"},{"x":14,"y":19,"type":"AIR"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"AIR"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"AIR"},{"x":19,"y":19,"type":"DIRT"},{"x":20,"y":19,"type":"DIRT"},{"x":21,"y":19,"type":"AIR"},{"x":22,"y":19,"type":"AIR"},{"x":23,"y":19,"type":"AIR"},{"x":24,"y":19,"type":"DIRT"},{"x":25,"y":19,"type":"AIR"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"DIRT"},{"x":28,"y":19,"type":"DIRT"},{"x":29,"y":19,"type":"AIR"},{"x":30,"y":19,"type":"AIR"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"AIR"}],[{"x":0,"y":20,"type":"DIRT"},{"x":1,"y":20,"type":"AIR"},{"x":2,"y":20,"type":"AIR"},{"x":3,"y":20,"type":"AIR"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"DIRT"},{"x":6,"y":20,"type":"DIRT"},{"x":7,"y":20,"type":"AIR"},{"x":8,"y":20,"type":"AIR"},{"x":9,"y":20,"type":"AIR"},{"x":10,"y":20,"type":"DIRT"},{"x":11,"y":20,"type":"DIRT"},{"x":12,"y":20,"type":"DIRT"},{"x":13,"y":20,"type":"DIRT"},{"x":14,"y":20,"type":"DIRT"},{"x":15,"y":20,"type":"AIR"},{"x":16,"y":20,"type":"AIR"},{"x":17,"y":20,"type":"AIR"},{"x":18,"y":20,"type":"DIRT"},{"x":19,"y":20,"type":"DIRT"},{"x":20,"y":20,"type":"DIRT"},{"x":21,"y":20,"type":"DIRT"},{"x":22,"y":20,"type":"DIRT"},{"x":23,"y":20,"type":"AIR"},{"x":24,"y":20,"type":"AIR"},{"x":25,"y":20,"type":"AIR"},{"x":26,"y":20,"type":"DIRT"},{"x":27,"y":20,"type":"DIRT"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"AIR"},{"x":30,"y":20,"type":"AIR"},{"x":31,"y":20,"type":"AIR"},{"x":32,"y":20,"type":"DIRT"}],[{"x":0,"y":21,"type":"DIRT"},{"x":1,"y":21,"type":"AIR"},{"x":2,"y":21,"type":"AIR"},{"x":3,"y":21,"type":"AIR"},{"x":4,"y":21,"type":"AIR"},{"x":5,"y":21,"type":"DIRT"},{"x":6,"y":21,"type":"DIRT"},{"x":7,"y":21,"type":"DIRT"},{"x":8,"y":21,"type":"AIR"},{"x":9,"y":21,"type":"DIRT"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"DIRT"},{"x":12,"y":21,"type":"DIRT"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"AIR"},{"x":15,"y":21,"type":"AIR"},{"x":16,"y":21,"type":"DIRT"},{"x":17,"y":21,"type":"AIR"},{"x":18,"y":21,"type":"AIR"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"DIRT"},{"x":21,"y":21,"type":"DIRT"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"DIRT"},{"x":24,"y":21,"type":"AIR"},{"x":25,"y":21,"type":"DIRT"},{"x":26,"y":21,"type":"DIRT"},{"x":27,"y":21,"type":"DIRT"},{"x":28,"y":21,"type":"AIR"},{"x":29,"y":21,"type":"AIR"},{"x":30,"y":21,"type":"AIR"},{"x":31,"y":21,"type":"AIR"},{"x":32,"y":21,"type":"DIRT"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"AIR"},{"x":2,"y":22,"type":"AIR"},{"x":3,"y":22,"type":"DIRT"},{"x":4,"y":22,"type":"DIRT"},{"x":5,"y":22,"type":"DIRT"},{"x":6,"y":22,"type":"DIRT"},{"x":7,"y":22,"type":"DIRT"},{"x":8,"y":22,"type":"DIRT"},{"x":9,"y":22,"type":"DIRT"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"DIRT"},{"x":13,"y":22,"type":"DIRT"},{"x":14,"y":22,"type":"AIR"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"AIR"},{"x":19,"y":22,"type":"DIRT"},{"x":20,"y":22,"type":"DIRT"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"DIRT"},{"x":24,"y":22,"type":"DIRT"},{"x":25,"y":22,"type":"DIRT"},{"x":26,"y":22,"type":"DIRT"},{"x":27,"y":22,"type":"DIRT"},{"x":28,"y":22,"type":"DIRT"},{"x":29,"y":22,"type":"DIRT"},{"x":30,"y":22,"type":"AIR"},{"x":31,"y":22,"type":"AIR"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"AIR"},{"x":2,"y":23,"type":"DIRT"},{"x":3,"y":23,"type":"DIRT"},{"x":4,"y":23,"type":"DIRT"},{"x":5,"y":23,"type":"AIR"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"DIRT"},{"x":8,"y":23,"type":"DIRT"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"DIRT"},{"x":13,"y":23,"type":"AIR"},{"x":14,"y":23,"type":"AIR"},{"x":15,"y":23,"type":"DIRT"},{"x":16,"y":23,"type":"DIRT"},{"x":17,"y":23,"type":"DIRT"},{"x":18,"y":23,"type":"AIR"},{"x":19,"y":23,"type":"AIR"},{"x":20,"y":23,"type":"DIRT"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"DIRT"},{"x":25,"y":23,"type":"DIRT"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"AIR"},{"x":28,"y":23,"type":"DIRT"},{"x":29,"y":23,"type":"DIRT"},{"x":30,"y":23,"type":"DIRT"},{"x":31,"y":23,"type":"AIR"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"DIRT"},{"x":2,"y":24,"type":"DIRT"},{"x":3,"y":24,"type":"DIRT"},{"x":4,"y":24,"type":"DIRT"},{"x":5,"y":24,"type":"AIR"},{"x":6,"y":24,"type":"AIR"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"DIRT"},{"x":9,"y":24,"type":"AIR"},{"x":10,"y":24,"type":"DIRT"},{"x":11,"y":24,"type":"DIRT"},{"x":12,"y":24,"type":"DIRT"},{"x":13,"y":24,"type":"AIR"},{"x":14,"y":24,"type":"DIRT"},{"x":15,"y":24,"type":"DIRT"},{"x":16,"y":24,"type":"DIRT"},{"x":17,"y":24,"type":"DIRT"},{"x":18,"y":24,"type":"DIRT"},{"x":19,"y":24,"type":"AIR"},{"x":20,"y":24,"type":"DIRT"},{"x":21,"y":24,"type":"DIRT"},{"x":22,"y":24,"type":"DIRT"},{"x":23,"y":24,"type":"AIR"},{"x":24,"y":24,"type":"DIRT"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"AIR"},{"x":27,"y":24,"type":"AIR"},{"x":28,"y":24,"type":"DIRT"},{"x":29,"y":24,"type":"DIRT"},{"x":30,"y":24,"type":"DIRT"},{"x":31,"y":24,"type":"DIRT"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"DIRT"},{"x":3,"y":25,"type":"DIRT"},{"x":4,"y":25,"type":"DIRT"},{"x":5,"y":25,"type":"DIRT"},{"x":6,"y":25,"type":"DIRT"},{"x":7,"y":25,"type":"DIRT"},{"x":8,"y":25,"type":"DIRT"},{"x":9,"y":25,"type":"DIRT"},{"x":10,"y":25,"type":"DIRT"},{"x":11,"y":25,"type":"DIRT"},{"x":12,"y":25,"type":"DIRT"},{"x":13,"y":25,"type":"DIRT"},{"x":14,"y":25,"type":"DIRT"},{"x":15,"y":25,"type":"DIRT"},{"x":16,"y":25,"type":"AIR"},{"x":17,"y":25,"type":"DIRT"},{"x":18,"y":25,"type":"DIRT"},{"x":19,"y":25,"type":"DIRT"},{"x":20,"y":25,"type":"DIRT"},{"x":21,"y":25,"type":"DIRT"},{"x":22,"y":25,"type":"DIRT"},{"x":23,"y":25,"type":"DIRT"},{"x":24,"y":25,"type":"DIRT"},{"x":25,"y":25,"type":"DIRT"},{"x":26,"y":25,"type":"DIRT"},{"x":27,"y":25,"type":"DIRT"},{"x":28,"y":25,"type":"DIRT"},{"x":29,"y":25,"type":"DIRT"},{"x":30,"y":25,"type":"DIRT"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"DIRT"},{"x":5,"y":26,"type":"DIRT"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"AIR"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"DIRT"},{"x":14,"y":26,"type":"AIR"},{"x":15,"y":26,"type":"AIR"},{"x":16,"y":26,"type":"AIR"},{"x":17,"y":26,"type":"AIR"},{"x":18,"y":26,"type":"AIR"},{"x":19,"y":26,"type":"DIRT"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"AIR"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"DIRT"},{"x":28,"y":26,"type":"DIRT"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"DIRT"},{"x":5,"y":27,"type":"DIRT"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"DIRT"},{"x":14,"y":27,"type":"AIR"},{"x":15,"y":27,"type":"AIR"},{"x":16,"y":27,"type":"DIRT"},{"x":17,"y":27,"type":"AIR"},{"x":18,"y":27,"type":"AIR"},{"x":19,"y":27,"type":"DIRT"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"DIRT"},{"x":28,"y":27,"type":"DIRT"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"DIRT"},{"x":5,"y":28,"type":"DIRT"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":8,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"DIRT"},{"x":12,"y":28,"type":"DIRT"},{"x":13,"y":28,"type":"DIRT"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"DIRT"},{"x":16,"y":28,"type":"DIRT"},{"x":17,"y":28,"type":"DIRT"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"DIRT"},{"x":20,"y":28,"type":"DIRT"},{"x":21,"y":28,"type":"DIRT"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":24,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"DIRT"},{"x":28,"y":28,"type":"DIRT"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"AIR"},{"x":12,"y":29,"type":"DIRT"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"AIR"},{"x":15,"y":29,"type":"DIRT"},{"x":16,"y":29,"type":"AIR"},{"x":17,"y":29,"type":"DIRT"},{"x":18,"y":29,"type":"AIR"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"DIRT"},{"x":21,"y":29,"type":"AIR"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"AIR"},{"x":12,"y":30,"type":"DIRT"},{"x":13,"y":30,"type":"AIR"},{"x":14,"y":30,"type":"AIR"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"DIRT"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"AIR"},{"x":19,"y":30,"type":"AIR"},{"x":20,"y":30,"type":"DIRT"},{"x":21,"y":30,"type":"AIR"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"AIR"},{"x":9,"y":31,"type":"DIRT"},{"x":10,"y":31,"type":"AIR"},{"x":11,"y":31,"type":"AIR"},{"x":12,"y":31,"type":"AIR"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"DIRT"},{"x":16,"y":31,"type":"DIRT"},{"x":17,"y":31,"type":"DIRT"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"AIR"},{"x":21,"y":31,"type":"AIR"},{"x":22,"y":31,"type":"AIR"},{"x":23,"y":31,"type":"DIRT"},{"x":24,"y":31,"type":"AIR"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"AIR"},{"x":12,"y":32,"type":"AIR"},{"x":13,"y":32,"type":"AIR"},{"x":14,"y":32,"type":"AIR"},{"x":15,"y":32,"type":"DIRT"},{"x":16,"y":32,"type":"AIR"},{"x":17,"y":32,"type":"DIRT"},{"x":18,"y":32,"type":"AIR"},{"x":19,"y":32,"type":"AIR"},{"x":20,"y":32,"type":"AIR"},{"x":21,"y":32,"type":"AIR"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/2019-worms/tests/replays/2019.08.19.21.15.02/B-log.csv b/2019-worms/tests/replays/2019.08.19.21.15.02/B-log.csv new file mode 100644 index 0000000..04d9660 --- /dev/null +++ b/2019-worms/tests/replays/2019.08.19.21.15.02/B-log.csv @@ -0,0 +1,298 @@ +Round,LastCommandType,LastCommand,ActiveWorm,Score,Health,Worm1 Health,Worm1 x,Worm1 y,Worm2 Health,Worm2 x,Worm2 y,Worm3 Health,Worm3 x,Worm3 y +1,null,"null",1,116,350,150,8,28,100,8,4,100,31,16 +2,move,"move 9 27",1,121,350,150,9,27,100,8,4,100,31,16 +3,move,"move 9 5",2,126,350,150,9,27,100,9,5,100,31,16 +4,move,"move 30 17",3,131,350,150,9,27,100,9,5,100,30,17 +5,dig,"dig 10 26",1,138,350,150,9,27,100,9,5,100,30,17 +6,dig,"dig 10 6",2,145,350,150,9,27,100,9,5,100,30,17 +7,dig,"dig 29 17",3,152,350,150,9,27,100,9,5,100,30,17 +8,move,"move 10 26",1,157,350,150,10,26,100,9,5,100,30,17 +9,move,"move 10 6",2,162,350,150,10,26,100,10,6,100,30,17 +10,move,"move 29 17",3,167,350,150,10,26,100,10,6,100,29,17 +11,dig,"dig 11 25",1,174,350,150,10,26,100,10,6,100,29,17 +12,dig,"dig 11 7",2,181,350,150,10,26,100,10,6,100,29,17 +13,dig,"dig 28 17",3,188,350,150,10,26,100,10,6,100,29,17 +14,move,"move 11 25",1,193,350,150,11,25,100,10,6,100,29,17 +15,move,"move 11 7",2,198,350,150,11,25,100,11,7,100,29,17 +16,move,"move 28 17",3,203,350,150,11,25,100,11,7,100,28,17 +17,dig,"dig 12 24",1,210,350,150,11,25,100,11,7,100,28,17 +18,dig,"dig 12 8",2,217,350,150,11,25,100,11,7,100,28,17 +19,dig,"dig 27 17",3,224,350,150,11,25,100,11,7,100,28,17 +20,move,"move 12 24",1,229,350,150,12,24,100,11,7,100,28,17 +21,move,"move 12 8",2,234,350,150,12,24,100,12,8,100,28,17 +22,move,"move 27 17",3,239,350,150,12,24,100,12,8,100,27,17 +23,move,"move 13 23",1,244,350,150,13,23,100,12,8,100,27,17 +24,move,"move 13 9",2,249,350,150,13,23,100,13,9,100,27,17 +25,move,"move 26 17",3,254,350,150,13,23,100,13,9,100,26,17 +26,move,"move 14 22",1,259,350,150,14,22,100,13,9,100,26,17 +27,dig,"dig 14 10",2,266,350,150,14,22,100,13,9,100,26,17 +28,move,"move 25 17",3,271,350,150,14,22,100,13,9,100,25,17 +29,move,"move 15 21",1,276,350,150,15,21,100,13,9,100,25,17 +30,move,"move 14 10",2,281,350,150,15,21,100,14,10,100,25,17 +31,dig,"dig 24 17",3,288,350,150,15,21,100,14,10,100,25,17 +32,move,"move 16 20",1,293,350,150,16,20,100,14,10,100,25,17 +33,dig,"dig 14 11",2,300,350,150,16,20,100,14,10,100,25,17 +34,move,"move 24 17",3,305,350,150,16,20,100,14,10,100,24,17 +35,move,"move 17 19",1,310,350,150,17,19,100,14,10,100,24,17 +36,move,"move 14 11",2,315,350,150,17,19,100,14,11,100,24,17 +37,dig,"dig 23 17",3,322,350,150,17,19,100,14,11,100,24,17 +38,dig,"dig 18 18",1,329,350,150,17,19,100,14,11,100,24,17 +39,dig,"dig 14 12",2,336,350,150,17,19,100,14,11,100,24,17 +40,move,"move 23 17",3,341,350,150,17,19,100,14,11,100,23,17 +41,move,"move 18 18",1,346,350,150,18,18,100,14,11,100,23,17 +42,move,"move 14 12",2,351,350,150,18,18,100,14,12,100,23,17 +43,move,"move 22 17",3,356,350,150,18,18,100,14,12,100,22,17 +44,move,"move 18 17",1,365,360,160,18,17,100,14,12,100,22,17 +45,dig,"dig 14 13",2,372,360,160,18,17,100,14,12,100,22,17 +46,dig,"dig 21 16",3,379,360,160,18,17,100,14,12,100,22,17 +47,move,"move 17 16",1,384,360,160,17,16,100,14,12,100,22,17 +48,move,"move 14 13",2,389,360,160,17,16,100,14,13,100,22,17 +49,move,"move 21 16",3,394,360,160,17,16,100,14,13,100,21,16 +50,move,"move 16 15",1,399,360,160,16,15,100,14,13,100,21,16 +51,move,"move 14 14",2,404,360,160,16,15,100,14,14,100,21,16 +52,move,"move 20 15",3,409,360,160,16,15,100,14,14,100,20,15 +53,move,"move 15 15",1,414,360,160,15,15,100,14,14,100,20,15 +54,move,"move 14 15",2,422,370,160,15,15,110,14,15,100,20,15 +55,move,"move 21 14",3,427,370,160,15,15,110,14,15,100,21,14 +56,move,"move 16 14",1,432,370,160,16,14,110,14,15,100,21,14 +57,move,"move 15 14",2,437,370,160,16,14,110,15,14,100,21,14 +58,dig,"dig 22 13",3,444,370,160,16,14,110,15,14,100,21,14 +59,move,"move 17 13",1,449,370,160,17,13,110,15,14,100,21,14 +60,move,"move 16 13",2,454,370,160,17,13,110,16,13,100,21,14 +61,move,"move 22 13",3,459,370,160,17,13,110,16,13,100,22,13 +62,dig,"dig 18 12",1,466,370,160,17,13,110,16,13,100,22,13 +63,move,"move 17 12",2,471,370,160,17,13,110,17,12,100,22,13 +64,dig,"dig 23 12",3,478,370,160,17,13,110,17,12,100,22,13 +65,move,"move 18 12",1,483,370,160,18,12,110,17,12,100,22,13 +66,dig,"dig 18 11",2,490,370,160,18,12,110,17,12,100,22,13 +67,move,"move 23 12",3,495,370,160,18,12,110,17,12,100,23,12 +68,dig,"dig 19 11",1,502,370,160,18,12,110,17,12,100,23,12 +69,move,"move 18 11",2,507,370,160,18,12,110,18,11,100,23,12 +70,dig,"dig 23 11",3,514,370,160,18,12,110,18,11,100,23,12 +71,move,"move 19 11",1,519,370,160,19,11,110,18,11,100,23,12 +72,dig,"dig 19 10",2,526,370,160,19,11,110,18,11,100,23,12 +73,move,"move 24 11",3,531,370,160,19,11,110,18,11,100,24,11 +74,dig,"dig 20 10",1,538,370,160,19,11,110,18,11,100,24,11 +75,move,"move 19 10",2,543,370,160,19,11,110,19,10,100,24,11 +76,dig,"dig 23 10",3,550,370,160,19,11,110,19,10,100,24,11 +77,move,"move 20 10",1,555,370,160,20,10,110,19,10,100,24,11 +78,dig,"dig 20 9",2,562,370,160,20,10,110,19,10,100,24,11 +79,move,"move 24 10",3,567,370,160,20,10,110,19,10,100,24,10 +80,move,"move 21 9",1,572,370,160,21,9,110,19,10,100,24,10 +81,move,"move 20 9",2,577,370,160,21,9,110,20,9,100,24,10 +82,dig,"dig 25 9",3,584,370,160,21,9,110,20,9,100,24,10 +83,dig,"dig 22 8",1,591,370,160,21,9,110,20,9,100,24,10 +84,dig,"dig 21 8",2,598,370,160,21,9,110,20,9,100,24,10 +85,move,"move 25 9",3,603,370,160,21,9,110,20,9,100,25,9 +86,move,"move 22 8",1,608,370,160,22,8,110,20,9,100,25,9 +87,move,"move 21 8",2,613,370,160,22,8,110,21,8,100,25,9 +88,dig,"dig 25 8",3,620,370,160,22,8,110,21,8,100,25,9 +89,move,"move 23 7",1,625,370,160,23,7,110,21,8,100,25,9 +90,move,"move 22 7",2,630,370,160,23,7,110,22,7,100,25,9 +91,move,"move 25 8",3,635,370,160,23,7,110,22,7,100,25,8 +92,dig,"dig 24 6",1,642,370,160,23,7,110,22,7,100,25,8 +93,banana,"banana 24 3",2,703,370,160,23,7,110,22,7,100,25,8 +94,dig,"dig 24 7",3,710,370,160,23,7,110,22,7,100,25,8 +95,move,"move 24 6",1,715,370,160,24,6,110,22,7,100,25,8 +96,banana,"banana 23 4",2,783,370,160,24,6,110,22,7,100,25,8 +97,snowball,"snowball 23 4",3,800,370,160,24,6,110,22,7,100,25,8 +98,move,"move 23 5",1,805,370,160,23,5,110,22,7,100,25,8 +99,banana,"banana 23 4",2,815,357,147,23,5,110,22,7,100,25,8 +100,shoot,"shoot N",1,831,357,147,23,5,110,22,7,100,25,8 +101,shoot,"shoot N",1,847,357,147,23,5,110,22,7,100,25,8 +102,shoot,"shoot N",1,860,349,139,23,5,110,22,7,100,25,8 +103,shoot,"shoot N",1,873,341,131,23,5,110,22,7,100,25,8 +104,shoot,"shoot N",1,889,341,131,23,5,110,22,7,100,25,8 +105,move,"move 23 6",2,894,341,131,23,5,110,23,6,100,25,8 +106,snowball,"snowball 23 4",3,894,341,131,23,5,110,23,6,100,25,8 +107,move,"move 24 4",1,894,341,131,23,5,110,23,6,100,25,8 +108,move,"move 24 5",2,899,341,131,23,5,110,24,5,100,25,8 +109,move,"move 24 7",3,904,341,131,23,5,110,24,5,100,24,7 +110,move,"move 24 4",1,904,341,131,23,5,110,24,5,100,24,7 +111,shoot,"shoot N",2,920,341,131,23,5,110,24,5,100,24,7 +112,snowball,"snowball 24 3",3,937,341,131,23,5,110,24,5,100,24,7 +113,move,"move 24 4",1,942,341,131,24,4,110,24,5,100,24,7 +114,shoot,"shoot NE",2,958,341,131,24,4,110,24,5,100,24,7 +115,dig,"dig 25 6",3,965,341,131,24,4,110,24,5,100,24,7 +116,shoot,"shoot E",1,981,341,131,24,4,110,24,5,100,24,7 +117,shoot,"shoot NE",2,997,341,131,24,4,110,24,5,100,24,7 +118,move,"move 25 6",3,1000,333,123,24,4,110,24,5,100,25,6 +119,shoot,"shoot E",1,1016,333,123,24,4,110,24,5,100,25,6 +120,shoot,"shoot NE",2,1072,333,123,24,4,110,24,5,100,25,6 +121,move,"move 24 7",3,1077,333,123,24,4,110,24,5,100,24,7 +122,nothing,"nothing "Player chose to do nothing"",1,1077,333,123,24,4,110,24,5,100,24,7 +123,move,"move 24 6",2,1082,333,123,24,4,110,24,6,100,24,7 +124,dig,"dig 24 8",3,1089,333,123,24,4,110,24,6,100,24,7 +125,move,"move 24 5",1,1094,333,123,24,5,110,24,6,100,24,7 +126,move,"move 23 7",2,1099,333,123,24,5,110,23,7,100,24,7 +127,dig,"dig 23 8",3,1106,333,123,24,5,110,23,7,100,24,7 +128,move,"move 23 6",1,1111,333,123,23,6,110,23,7,100,24,7 +129,move,"move 22 8",2,1116,333,123,23,6,110,22,8,100,24,7 +130,move,"move 23 8",3,1121,333,123,23,6,110,22,8,100,23,8 +131,move,"move 23 7",1,1126,333,123,23,7,110,22,8,100,23,8 +132,dig,"dig 22 9",2,1133,333,123,23,7,110,22,8,100,23,8 +133,move,"move 22 9",3,1138,333,123,23,7,110,22,8,100,22,9 +134,move,"move 22 7",1,1143,333,123,22,7,110,22,8,100,22,9 +135,move,"move 21 9",2,1148,333,123,22,7,110,21,9,100,22,9 +136,move,"move 21 10",3,1153,333,123,22,7,110,21,9,100,21,10 +137,move,"move 21 8",1,1158,333,123,21,8,110,21,9,100,21,10 +138,invalid,"invalid",2,1154,333,123,21,8,110,21,9,100,21,10 +139,move,"move 21 11",3,1159,333,123,21,8,110,21,9,100,21,11 +140,move,"move 22 9",1,1164,333,123,22,9,110,21,9,100,21,11 +141,dig,"dig 22 10",2,1171,333,123,22,9,110,21,9,100,21,11 +142,move,"move 22 12",3,1176,333,123,22,9,110,21,9,100,22,12 +143,move,"move 23 10",1,1181,333,123,23,10,110,21,9,100,22,12 +144,move,"move 22 10",2,1186,333,123,23,10,110,22,10,100,22,12 +145,dig,"dig 23 13",3,1193,333,123,23,10,110,22,10,100,22,12 +146,move,"move 23 11",1,1198,333,123,23,11,110,22,10,100,22,12 +147,move,"move 21 9",2,1203,333,123,23,11,110,21,9,100,22,12 +148,move,"move 23 13",3,1208,333,123,23,11,110,21,9,100,23,13 +149,move,"move 23 12",1,1213,333,123,23,12,110,21,9,100,23,13 +150,move,"move 22 10",2,1218,333,123,23,12,110,22,10,100,23,13 +151,dig,"dig 23 14",3,1225,333,123,23,12,110,22,10,100,23,13 +152,move,"move 22 13",1,1230,333,123,22,13,110,22,10,100,23,13 +153,move,"move 23 11",2,1235,333,123,22,13,110,23,11,100,23,13 +154,move,"move 23 14",3,1240,333,123,22,13,110,23,11,100,23,14 +155,move,"move 23 13",1,1245,333,123,23,13,110,23,11,100,23,14 +156,move,"move 23 12",2,1250,333,123,23,13,110,23,12,100,23,14 +157,move,"move 23 15",3,1255,333,123,23,13,110,23,12,100,23,15 +158,move,"move 23 14",1,1260,333,123,23,14,110,23,12,100,23,15 +159,move,"move 23 13",2,1265,333,123,23,14,110,23,13,100,23,15 +160,move,"move 24 16",3,1270,333,123,23,14,110,23,13,100,24,16 +161,move,"move 24 15",1,1275,333,123,24,15,110,23,13,100,24,16 +162,move,"move 23 14",2,1280,333,123,24,15,110,23,14,100,24,16 +163,move,"move 23 17",3,1285,333,123,24,15,110,23,14,100,23,17 +164,move,"move 23 16",1,1290,333,123,23,16,110,23,14,100,23,17 +165,move,"move 23 15",2,1292,326,123,23,16,110,23,15,93,23,17 +166,move,"move 23 18",3,1297,326,123,23,16,110,23,15,93,23,18 +167,move,"move 23 17",1,1296,306,116,23,17,110,23,15,80,23,18 +168,move,"move 23 16",2,1301,306,116,23,17,110,23,16,80,23,18 +169,move,"move 23 19",3,1297,279,109,23,17,110,23,16,60,23,19 +170,move,"move 23 18",1,1302,279,109,23,18,110,23,16,60,23,19 +171,move,"move 23 17",2,1307,279,109,23,18,110,23,17,60,23,19 +172,move,"move 23 20",3,1312,279,109,23,18,110,23,17,60,23,20 +173,move,"move 23 19",1,1317,279,109,23,19,110,23,17,60,23,20 +174,move,"move 22 18",2,1322,279,109,23,19,110,22,18,60,23,20 +175,dig,"dig 22 21",3,1329,279,109,23,19,110,22,18,60,23,20 +176,move,"move 22 20",1,1334,279,109,22,20,110,22,18,60,23,20 +177,move,"move 22 19",2,1339,279,109,22,20,110,22,19,60,23,20 +178,move,"move 22 21",3,1344,279,109,22,20,110,22,19,60,22,21 +179,invalid,"invalid",1,1340,279,109,22,20,110,22,19,60,22,21 +180,dig,"dig 21 20",2,1347,279,109,22,20,110,22,19,60,22,21 +181,dig,"dig 21 22",3,1354,279,109,22,20,110,22,19,60,22,21 +182,dig,"dig 21 21",1,1361,279,109,22,20,110,22,19,60,22,21 +183,move,"move 21 20",2,1366,279,109,22,20,110,21,20,60,22,21 +184,move,"move 21 22",3,1371,279,109,22,20,110,21,20,60,21,22 +185,move,"move 21 21",1,1376,279,109,21,21,110,21,20,60,21,22 +186,dig,"dig 20 21",2,1383,279,109,21,21,110,21,20,60,21,22 +187,dig,"dig 20 23",3,1390,279,109,21,21,110,21,20,60,21,22 +188,dig,"dig 20 22",1,1397,279,109,21,21,110,21,20,60,21,22 +189,move,"move 20 21",2,1399,271,109,21,21,110,20,21,52,21,22 +190,shoot,"shoot SW",3,1415,271,109,21,21,110,20,21,52,21,22 +191,move,"move 20 22",1,1417,263,109,20,22,110,20,21,44,21,22 +192,dig,"dig 19 22",2,1424,263,109,20,22,110,20,21,44,21,22 +193,shoot,"shoot SW",3,1438,255,109,20,22,110,20,21,36,21,22 +194,move,"move 19 23",1,1443,255,109,19,23,110,20,21,36,21,22 +195,move,"move 19 22",2,1448,255,109,19,23,110,19,22,36,21,22 +196,move,"move 20 23",3,1453,255,109,19,23,110,19,22,36,20,23 +197,shoot,"shoot W",1,1466,247,109,19,23,102,19,22,36,20,23 +198,shoot,"shoot SW",2,1482,247,109,19,23,102,19,22,36,20,23 +199,invalid,"invalid",3,1475,239,101,19,23,102,19,22,36,20,23 +200,shoot,"shoot W",1,1491,239,101,19,23,102,19,22,36,20,23 +201,shoot,"shoot SW",2,1493,239,101,19,23,102,19,22,36,20,23 +202,move,"move 19 24",3,1498,239,101,19,23,102,19,22,36,19,24 +203,move,"move 18 22",1,1501,231,93,18,22,102,19,22,36,19,24 +204,dig,"dig 19 21",2,1508,231,93,18,22,102,19,22,36,19,24 +205,shoot,"shoot NW",3,1510,231,93,18,22,102,19,22,36,19,24 +206,shoot,"shoot W",1,1526,231,93,18,22,102,19,22,36,19,24 +207,move,"move 18 23",2,1528,223,85,18,22,102,18,23,36,19,24 +208,dig,"dig 18 25",3,1535,223,85,18,22,102,18,23,36,19,24 +209,shoot,"shoot W",1,1548,215,77,18,22,102,18,23,36,19,24 +210,move,"move 17 22",2,1553,215,77,18,22,102,17,22,36,19,24 +211,move,"move 18 23",3,1556,207,77,18,22,94,17,22,36,18,23 +212,move,"move 17 21",1,1561,207,77,17,21,94,17,22,36,18,23 +213,shoot,"shoot W",2,1574,199,69,17,21,94,17,22,36,18,23 +214,move,"move 19 23",3,1579,199,69,17,21,94,17,22,36,19,23 +215,shoot,"shoot SW",1,1576,191,69,17,21,86,17,22,36,19,23 +216,shoot,"shoot W",2,1592,191,69,17,21,86,17,22,36,19,23 +217,move,"move 18 22",3,1595,183,69,17,21,78,17,22,36,18,22 +218,shoot,"shoot SW",1,1595,183,69,17,21,78,17,22,36,18,22 +219,shoot,"shoot W",2,1608,175,69,17,21,70,17,22,36,18,22 +220,invalid,"invalid",3,1604,175,69,17,21,70,17,22,36,18,22 +221,shoot,"shoot SW",1,1604,175,69,17,21,70,17,22,36,18,22 +222,dig,"dig 16 21",2,1611,175,69,17,21,70,17,22,36,18,22 +223,move,"move 18 23",3,1613,167,61,17,21,70,17,22,36,18,23 +224,shoot,"shoot W",1,1613,167,61,17,21,70,17,22,36,18,23 +225,move,"move 16 21",2,1616,159,61,17,21,62,16,21,36,18,23 +226,move,"move 17 22",3,1621,159,61,17,21,62,16,21,36,17,22 +227,move,"move 18 21",1,1623,151,61,18,21,54,16,21,36,17,22 +228,shoot,"shoot W",2,1639,151,61,18,21,54,16,21,36,17,22 +229,dig,"dig 17 23",3,1643,143,61,18,21,46,16,21,36,17,22 +230,move,"move 17 21",1,1646,135,61,17,21,38,16,21,36,17,22 +231,shoot,"shoot W",2,1659,127,61,17,21,30,16,21,36,17,22 +232,invalid,"invalid",3,1652,119,61,17,21,22,16,21,36,17,22 +233,move,"move 18 22",1,1655,111,61,18,22,14,16,21,36,17,22 +234,shoot,"shoot W",2,1711,111,61,18,22,14,16,21,36,17,22 +235,move,"move 17 23",3,1716,111,61,18,22,14,16,21,36,17,23 +236,move,"move 17 21",1,1721,111,61,17,21,14,16,21,36,17,23 +237,move,"move 15 20",2,1726,111,61,17,21,14,15,20,36,17,23 +238,move,"move 16 22",3,1728,103,53,17,21,14,15,20,36,16,22 +239,shoot,"shoot NW",1,1741,95,53,17,21,6,15,20,36,16,22 +240,shoot,"shoot N",2,1755,87,45,17,21,6,15,20,36,16,22 +241,move,"move 15 21",3,1757,79,37,17,21,6,15,20,36,15,21 +242,shoot,"shoot NW",1,1759,79,37,17,21,6,15,20,36,15,21 +243,shoot,"shoot NE",2,1761,79,37,17,21,6,15,20,36,15,21 +244,move,"move 16 20",3,1763,71,29,17,21,6,15,20,36,16,20 +245,shoot,"shoot N",1,1777,63,29,17,21,6,15,20,28,16,20 +246,move,"move 15 21",2,1779,55,21,17,21,6,15,21,28,16,20 +247,shoot,"shoot E",3,1781,55,21,17,21,6,15,21,28,16,20 +248,dig,"dig 18 20",1,1788,55,21,17,21,6,15,21,28,16,20 +249,dig,"dig 14 20",2,1792,47,21,17,21,6,15,21,20,16,20 +250,shoot,"shoot NE",3,1794,47,21,17,21,6,15,21,20,16,20 +251,move,"move 18 20",1,1799,47,21,18,20,6,15,21,20,16,20 +252,move,"move 14 21",2,1802,39,13,18,20,6,14,21,20,16,20 +253,shoot,"shoot NE",3,1804,39,13,18,20,6,14,21,20,16,20 +254,move,"move 17 19",1,1807,33,13,17,19,-2,14,21,20,16,20 +255,move,"move 16 21",3,1809,25,5,17,19,-2,14,21,20,16,21 +256,shoot,"shoot N",1,1811,25,5,17,19,-2,14,21,20,16,21 +257,move,"move 17 20",3,1816,25,5,17,19,-2,14,21,20,17,20 +258,move,"move 18 18",1,1821,25,5,18,18,-2,14,21,20,17,20 +259,move,"move 18 19",3,1824,20,-3,18,18,-2,14,21,20,18,19 +260,shoot,"shoot N",3,1826,20,-3,18,18,-2,14,21,20,18,19 +261,shoot,"shoot NW",3,1828,20,-3,18,18,-2,14,21,20,18,19 +262,shoot,"shoot N",3,1830,20,-3,18,18,-2,14,21,20,18,19 +263,shoot,"shoot NW",3,1832,20,-3,18,18,-2,14,21,20,18,19 +264,shoot,"shoot N",3,1834,20,-3,18,18,-2,14,21,20,18,19 +265,shoot,"shoot NW",3,1836,20,-3,18,18,-2,14,21,20,18,19 +266,shoot,"shoot N",3,1838,20,-3,18,18,-2,14,21,20,18,19 +267,shoot,"shoot W",3,1840,20,-3,18,18,-2,14,21,20,18,19 +268,shoot,"shoot SW",3,1842,20,-3,18,18,-2,14,21,20,18,19 +269,shoot,"shoot W",3,1844,20,-3,18,18,-2,14,21,20,18,19 +270,shoot,"shoot SW",3,1846,20,-3,18,18,-2,14,21,20,18,19 +271,shoot,"shoot W",3,1848,20,-3,18,18,-2,14,21,20,18,19 +272,shoot,"shoot SW",3,1850,20,-3,18,18,-2,14,21,20,18,19 +273,shoot,"shoot W",3,1852,20,-3,18,18,-2,14,21,20,18,19 +274,shoot,"shoot SW",3,1854,20,-3,18,18,-2,14,21,20,18,19 +275,shoot,"shoot W",3,1856,20,-3,18,18,-2,14,21,20,18,19 +276,shoot,"shoot S",3,1858,20,-3,18,18,-2,14,21,20,18,19 +277,shoot,"shoot SW",3,1860,20,-3,18,18,-2,14,21,20,18,19 +278,shoot,"shoot W",3,1862,20,-3,18,18,-2,14,21,20,18,19 +279,shoot,"shoot SW",3,1864,20,-3,18,18,-2,14,21,20,18,19 +280,shoot,"shoot S",3,1866,20,-3,18,18,-2,14,21,20,18,19 +281,shoot,"shoot SW",3,1868,20,-3,18,18,-2,14,21,20,18,19 +282,shoot,"shoot W",3,1870,20,-3,18,18,-2,14,21,20,18,19 +283,shoot,"shoot SW",3,1872,20,-3,18,18,-2,14,21,20,18,19 +284,shoot,"shoot W",3,1874,20,-3,18,18,-2,14,21,20,18,19 +285,shoot,"shoot SW",3,1876,20,-3,18,18,-2,14,21,20,18,19 +286,shoot,"shoot W",3,1878,20,-3,18,18,-2,14,21,20,18,19 +287,shoot,"shoot S",3,1880,20,-3,18,18,-2,14,21,20,18,19 +288,shoot,"shoot W",3,1882,20,-3,18,18,-2,14,21,20,18,19 +289,shoot,"shoot S",3,1884,20,-3,18,18,-2,14,21,20,18,19 +290,shoot,"shoot W",3,1886,20,-3,18,18,-2,14,21,20,18,19 +291,shoot,"shoot S",3,1888,20,-3,18,18,-2,14,21,20,18,19 +292,shoot,"shoot W",3,1890,20,-3,18,18,-2,14,21,20,18,19 +293,shoot,"shoot S",3,1892,20,-3,18,18,-2,14,21,20,18,19 +294,shoot,"shoot W",3,1894,20,-3,18,18,-2,14,21,20,18,19 +295,shoot,"shoot S",3,1895,17,-3,18,18,-2,14,21,17,18,19 +296,shoot,"shoot SW",3,1896,14,-3,18,18,-2,14,21,14,18,19 +297,shoot,"shoot S",3,1897,11,-3,18,18,-2,14,21,11,18,19 diff --git a/2019-worms/tests/replays/2019.08.19.21.31.16/A-init.json b/2019-worms/tests/replays/2019.08.19.21.31.16/A-init.json new file mode 100644 index 0000000..31546d4 --- /dev/null +++ b/2019-worms/tests/replays/2019.08.19.21.31.16/A-init.json @@ -0,0 +1 @@ +{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":1,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":2,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"DIRT"},{"x":13,"y":0,"type":"DIRT"},{"x":14,"y":0,"type":"AIR"},{"x":15,"y":0,"type":"AIR"},{"x":16,"y":0,"type":"DIRT"},{"x":17,"y":0,"type":"AIR"},{"x":18,"y":0,"type":"AIR"},{"x":19,"y":0,"type":"DIRT"},{"x":20,"y":0,"type":"DIRT"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"DIRT"},{"x":10,"y":1,"type":"DIRT"},{"x":11,"y":1,"type":"DIRT"},{"x":12,"y":1,"type":"DIRT"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"AIR"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"DIRT"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"AIR"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"DIRT"},{"x":21,"y":1,"type":"DIRT"},{"x":22,"y":1,"type":"DIRT"},{"x":23,"y":1,"type":"DIRT"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"DIRT"},{"x":12,"y":2,"type":"DIRT"},{"x":13,"y":2,"type":"DIRT"},{"x":14,"y":2,"type":"DIRT"},{"x":15,"y":2,"type":"AIR"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"AIR"},{"x":18,"y":2,"type":"DIRT"},{"x":19,"y":2,"type":"DIRT"},{"x":20,"y":2,"type":"DIRT"},{"x":21,"y":2,"type":"DIRT"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"DIRT"},{"x":12,"y":3,"type":"AIR"},{"x":13,"y":3,"type":"DIRT"},{"x":14,"y":3,"type":"DIRT"},{"x":15,"y":3,"type":"AIR"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"AIR"},{"x":18,"y":3,"type":"DIRT"},{"x":19,"y":3,"type":"DIRT"},{"x":20,"y":3,"type":"AIR"},{"x":21,"y":3,"type":"DIRT"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"AIR"},{"x":5,"y":4,"type":"AIR"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"AIR"},{"x":12,"y":4,"type":"AIR"},{"x":13,"y":4,"type":"AIR"},{"x":14,"y":4,"type":"AIR"},{"x":15,"y":4,"type":"AIR"},{"x":16,"y":4,"type":"AIR"},{"x":17,"y":4,"type":"AIR"},{"x":18,"y":4,"type":"AIR"},{"x":19,"y":4,"type":"AIR"},{"x":20,"y":4,"type":"AIR"},{"x":21,"y":4,"type":"AIR"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"AIR"},{"x":28,"y":4,"type":"AIR"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"AIR"},{"x":5,"y":5,"type":"AIR"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"AIR"},{"x":13,"y":5,"type":"AIR"},{"x":14,"y":5,"type":"AIR"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"AIR"},{"x":19,"y":5,"type":"AIR"},{"x":20,"y":5,"type":"AIR"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"AIR"},{"x":28,"y":5,"type":"AIR"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"AIR"},{"x":4,"y":6,"type":"AIR"},{"x":5,"y":6,"type":"AIR"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"DIRT"},{"x":12,"y":6,"type":"AIR"},{"x":13,"y":6,"type":"AIR"},{"x":14,"y":6,"type":"AIR"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"AIR"},{"x":19,"y":6,"type":"AIR"},{"x":20,"y":6,"type":"AIR"},{"x":21,"y":6,"type":"DIRT"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"AIR"},{"x":28,"y":6,"type":"AIR"},{"x":29,"y":6,"type":"AIR"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"AIR"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"AIR"},{"x":5,"y":7,"type":"DIRT"},{"x":6,"y":7,"type":"AIR"},{"x":7,"y":7,"type":"AIR"},{"x":8,"y":7,"type":"AIR"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"AIR"},{"x":12,"y":7,"type":"AIR"},{"x":13,"y":7,"type":"DIRT"},{"x":14,"y":7,"type":"AIR"},{"x":15,"y":7,"type":"AIR"},{"x":16,"y":7,"type":"AIR"},{"x":17,"y":7,"type":"AIR"},{"x":18,"y":7,"type":"AIR"},{"x":19,"y":7,"type":"DIRT"},{"x":20,"y":7,"type":"AIR"},{"x":21,"y":7,"type":"AIR"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"AIR"},{"x":25,"y":7,"type":"AIR"},{"x":26,"y":7,"type":"AIR"},{"x":27,"y":7,"type":"DIRT"},{"x":28,"y":7,"type":"AIR"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"AIR"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"AIR"},{"x":2,"y":8,"type":"AIR"},{"x":3,"y":8,"type":"DIRT"},{"x":4,"y":8,"type":"DIRT"},{"x":5,"y":8,"type":"DIRT"},{"x":6,"y":8,"type":"AIR"},{"x":7,"y":8,"type":"AIR"},{"x":8,"y":8,"type":"AIR"},{"x":9,"y":8,"type":"AIR"},{"x":10,"y":8,"type":"AIR"},{"x":11,"y":8,"type":"AIR"},{"x":12,"y":8,"type":"AIR"},{"x":13,"y":8,"type":"DIRT"},{"x":14,"y":8,"type":"AIR"},{"x":15,"y":8,"type":"AIR"},{"x":16,"y":8,"type":"AIR"},{"x":17,"y":8,"type":"AIR"},{"x":18,"y":8,"type":"AIR"},{"x":19,"y":8,"type":"DIRT"},{"x":20,"y":8,"type":"AIR"},{"x":21,"y":8,"type":"AIR"},{"x":22,"y":8,"type":"AIR"},{"x":23,"y":8,"type":"AIR"},{"x":24,"y":8,"type":"AIR"},{"x":25,"y":8,"type":"AIR"},{"x":26,"y":8,"type":"AIR"},{"x":27,"y":8,"type":"DIRT"},{"x":28,"y":8,"type":"DIRT"},{"x":29,"y":8,"type":"DIRT"},{"x":30,"y":8,"type":"AIR"},{"x":31,"y":8,"type":"AIR"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"DIRT"},{"x":2,"y":9,"type":"AIR"},{"x":3,"y":9,"type":"DIRT"},{"x":4,"y":9,"type":"DIRT"},{"x":5,"y":9,"type":"AIR"},{"x":6,"y":9,"type":"AIR"},{"x":7,"y":9,"type":"DIRT"},{"x":8,"y":9,"type":"AIR"},{"x":9,"y":9,"type":"AIR"},{"x":10,"y":9,"type":"DIRT"},{"x":11,"y":9,"type":"AIR"},{"x":12,"y":9,"type":"DIRT"},{"x":13,"y":9,"type":"DIRT"},{"x":14,"y":9,"type":"AIR"},{"x":15,"y":9,"type":"DIRT"},{"x":16,"y":9,"type":"AIR"},{"x":17,"y":9,"type":"DIRT"},{"x":18,"y":9,"type":"AIR"},{"x":19,"y":9,"type":"DIRT"},{"x":20,"y":9,"type":"DIRT"},{"x":21,"y":9,"type":"AIR"},{"x":22,"y":9,"type":"DIRT"},{"x":23,"y":9,"type":"AIR"},{"x":24,"y":9,"type":"AIR"},{"x":25,"y":9,"type":"DIRT"},{"x":26,"y":9,"type":"AIR"},{"x":27,"y":9,"type":"AIR"},{"x":28,"y":9,"type":"DIRT"},{"x":29,"y":9,"type":"DIRT"},{"x":30,"y":9,"type":"AIR"},{"x":31,"y":9,"type":"DIRT"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"DIRT"},{"x":2,"y":10,"type":"AIR"},{"x":3,"y":10,"type":"AIR"},{"x":4,"y":10,"type":"DIRT"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"DIRT"},{"x":7,"y":10,"type":"DIRT"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"AIR"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"DIRT"},{"x":12,"y":10,"type":"DIRT"},{"x":13,"y":10,"type":"DIRT"},{"x":14,"y":10,"type":"AIR"},{"x":15,"y":10,"type":"AIR"},{"x":16,"y":10,"type":"AIR"},{"x":17,"y":10,"type":"AIR"},{"x":18,"y":10,"type":"AIR"},{"x":19,"y":10,"type":"DIRT"},{"x":20,"y":10,"type":"DIRT"},{"x":21,"y":10,"type":"DIRT"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"AIR"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"DIRT"},{"x":26,"y":10,"type":"DIRT"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"DIRT"},{"x":29,"y":10,"type":"AIR"},{"x":30,"y":10,"type":"AIR"},{"x":31,"y":10,"type":"DIRT"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"DIRT"},{"x":1,"y":11,"type":"DIRT"},{"x":2,"y":11,"type":"DIRT"},{"x":3,"y":11,"type":"AIR"},{"x":4,"y":11,"type":"AIR"},{"x":5,"y":11,"type":"AIR"},{"x":6,"y":11,"type":"AIR"},{"x":7,"y":11,"type":"AIR"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"AIR"},{"x":10,"y":11,"type":"AIR"},{"x":11,"y":11,"type":"AIR"},{"x":12,"y":11,"type":"AIR"},{"x":13,"y":11,"type":"DIRT"},{"x":14,"y":11,"type":"AIR"},{"x":15,"y":11,"type":"DIRT"},{"x":16,"y":11,"type":"DIRT"},{"x":17,"y":11,"type":"DIRT"},{"x":18,"y":11,"type":"AIR"},{"x":19,"y":11,"type":"DIRT"},{"x":20,"y":11,"type":"AIR"},{"x":21,"y":11,"type":"AIR"},{"x":22,"y":11,"type":"AIR"},{"x":23,"y":11,"type":"AIR"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"AIR"},{"x":26,"y":11,"type":"AIR"},{"x":27,"y":11,"type":"AIR"},{"x":28,"y":11,"type":"AIR"},{"x":29,"y":11,"type":"AIR"},{"x":30,"y":11,"type":"DIRT"},{"x":31,"y":11,"type":"DIRT"},{"x":32,"y":11,"type":"DIRT"}],[{"x":0,"y":12,"type":"DIRT"},{"x":1,"y":12,"type":"DIRT"},{"x":2,"y":12,"type":"DIRT"},{"x":3,"y":12,"type":"DIRT"},{"x":4,"y":12,"type":"DIRT"},{"x":5,"y":12,"type":"AIR"},{"x":6,"y":12,"type":"AIR"},{"x":7,"y":12,"type":"AIR"},{"x":8,"y":12,"type":"DIRT"},{"x":9,"y":12,"type":"DIRT"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"AIR"},{"x":12,"y":12,"type":"AIR"},{"x":13,"y":12,"type":"AIR"},{"x":14,"y":12,"type":"DIRT"},{"x":15,"y":12,"type":"DIRT"},{"x":16,"y":12,"type":"DIRT"},{"x":17,"y":12,"type":"DIRT"},{"x":18,"y":12,"type":"DIRT"},{"x":19,"y":12,"type":"AIR"},{"x":20,"y":12,"type":"AIR"},{"x":21,"y":12,"type":"AIR"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"DIRT"},{"x":24,"y":12,"type":"DIRT"},{"x":25,"y":12,"type":"AIR"},{"x":26,"y":12,"type":"AIR"},{"x":27,"y":12,"type":"AIR"},{"x":28,"y":12,"type":"DIRT"},{"x":29,"y":12,"type":"DIRT"},{"x":30,"y":12,"type":"DIRT"},{"x":31,"y":12,"type":"DIRT"},{"x":32,"y":12,"type":"DIRT"}],[{"x":0,"y":13,"type":"DIRT"},{"x":1,"y":13,"type":"DIRT"},{"x":2,"y":13,"type":"AIR"},{"x":3,"y":13,"type":"DIRT"},{"x":4,"y":13,"type":"DIRT"},{"x":5,"y":13,"type":"AIR"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"AIR"},{"x":8,"y":13,"type":"DIRT"},{"x":9,"y":13,"type":"DIRT"},{"x":10,"y":13,"type":"AIR"},{"x":11,"y":13,"type":"AIR"},{"x":12,"y":13,"type":"AIR"},{"x":13,"y":13,"type":"AIR"},{"x":14,"y":13,"type":"DIRT"},{"x":15,"y":13,"type":"DIRT"},{"x":16,"y":13,"type":"DIRT"},{"x":17,"y":13,"type":"DIRT"},{"x":18,"y":13,"type":"DIRT"},{"x":19,"y":13,"type":"AIR"},{"x":20,"y":13,"type":"AIR"},{"x":21,"y":13,"type":"AIR"},{"x":22,"y":13,"type":"AIR"},{"x":23,"y":13,"type":"DIRT"},{"x":24,"y":13,"type":"DIRT"},{"x":25,"y":13,"type":"AIR"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"AIR"},{"x":28,"y":13,"type":"DIRT"},{"x":29,"y":13,"type":"DIRT"},{"x":30,"y":13,"type":"AIR"},{"x":31,"y":13,"type":"DIRT"},{"x":32,"y":13,"type":"DIRT"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"DIRT"},{"x":5,"y":14,"type":"AIR"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"AIR"},{"x":8,"y":14,"type":"DIRT"},{"x":9,"y":14,"type":"DIRT"},{"x":10,"y":14,"type":"DIRT"},{"x":11,"y":14,"type":"AIR"},{"x":12,"y":14,"type":"AIR"},{"x":13,"y":14,"type":"AIR"},{"x":14,"y":14,"type":"AIR"},{"x":15,"y":14,"type":"AIR"},{"x":16,"y":14,"type":"DIRT"},{"x":17,"y":14,"type":"AIR"},{"x":18,"y":14,"type":"AIR"},{"x":19,"y":14,"type":"AIR"},{"x":20,"y":14,"type":"AIR"},{"x":21,"y":14,"type":"AIR"},{"x":22,"y":14,"type":"DIRT"},{"x":23,"y":14,"type":"DIRT"},{"x":24,"y":14,"type":"DIRT"},{"x":25,"y":14,"type":"AIR"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"AIR"},{"x":28,"y":14,"type":"DIRT"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"AIR"},{"x":5,"y":15,"type":"AIR"},{"x":6,"y":15,"type":"AIR"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"DIRT"},{"x":9,"y":15,"type":"DIRT"},{"x":10,"y":15,"type":"DIRT"},{"x":11,"y":15,"type":"DIRT"},{"x":12,"y":15,"type":"AIR"},{"x":13,"y":15,"type":"AIR"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"DIRT"},{"x":16,"y":15,"type":"DIRT"},{"x":17,"y":15,"type":"DIRT"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"AIR"},{"x":20,"y":15,"type":"AIR"},{"x":21,"y":15,"type":"DIRT"},{"x":22,"y":15,"type":"DIRT"},{"x":23,"y":15,"type":"DIRT"},{"x":24,"y":15,"type":"DIRT"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"AIR"},{"x":27,"y":15,"type":"AIR"},{"x":28,"y":15,"type":"AIR"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"DIRT"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"DIRT"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"AIR"},{"x":10,"y":16,"type":"AIR"},{"x":11,"y":16,"type":"DIRT"},{"x":12,"y":16,"type":"DIRT"},{"x":13,"y":16,"type":"AIR"},{"x":14,"y":16,"type":"AIR"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"DIRT"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"AIR"},{"x":19,"y":16,"type":"AIR"},{"x":20,"y":16,"type":"DIRT"},{"x":21,"y":16,"type":"DIRT"},{"x":22,"y":16,"type":"AIR"},{"x":23,"y":16,"type":"AIR"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"DIRT"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"DIRT"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"DIRT"},{"x":5,"y":17,"type":"DIRT"},{"x":6,"y":17,"type":"DIRT"},{"x":7,"y":17,"type":"AIR"},{"x":8,"y":17,"type":"AIR"},{"x":9,"y":17,"type":"AIR"},{"x":10,"y":17,"type":"AIR"},{"x":11,"y":17,"type":"DIRT"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"AIR"},{"x":14,"y":17,"type":"AIR"},{"x":15,"y":17,"type":"AIR"},{"x":16,"y":17,"type":"DIRT"},{"x":17,"y":17,"type":"AIR"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"AIR"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"DIRT"},{"x":22,"y":17,"type":"AIR"},{"x":23,"y":17,"type":"AIR"},{"x":24,"y":17,"type":"AIR"},{"x":25,"y":17,"type":"AIR"},{"x":26,"y":17,"type":"DIRT"},{"x":27,"y":17,"type":"DIRT"},{"x":28,"y":17,"type":"DIRT"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"DIRT"},{"x":5,"y":18,"type":"DIRT"},{"x":6,"y":18,"type":"DIRT"},{"x":7,"y":18,"type":"AIR"},{"x":8,"y":18,"type":"AIR"},{"x":9,"y":18,"type":"AIR"},{"x":10,"y":18,"type":"DIRT"},{"x":11,"y":18,"type":"DIRT"},{"x":12,"y":18,"type":"DIRT"},{"x":13,"y":18,"type":"DIRT"},{"x":14,"y":18,"type":"DIRT"},{"x":15,"y":18,"type":"DIRT"},{"x":16,"y":18,"type":"DIRT"},{"x":17,"y":18,"type":"DIRT"},{"x":18,"y":18,"type":"DIRT"},{"x":19,"y":18,"type":"DIRT"},{"x":20,"y":18,"type":"DIRT"},{"x":21,"y":18,"type":"DIRT"},{"x":22,"y":18,"type":"DIRT"},{"x":23,"y":18,"type":"AIR"},{"x":24,"y":18,"type":"AIR"},{"x":25,"y":18,"type":"AIR"},{"x":26,"y":18,"type":"DIRT"},{"x":27,"y":18,"type":"DIRT"},{"x":28,"y":18,"type":"DIRT"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"AIR"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"AIR"},{"x":3,"y":19,"type":"DIRT"},{"x":4,"y":19,"type":"DIRT"},{"x":5,"y":19,"type":"AIR"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"DIRT"},{"x":8,"y":19,"type":"DIRT"},{"x":9,"y":19,"type":"AIR"},{"x":10,"y":19,"type":"AIR"},{"x":11,"y":19,"type":"DIRT"},{"x":12,"y":19,"type":"DIRT"},{"x":13,"y":19,"type":"AIR"},{"x":14,"y":19,"type":"AIR"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"DIRT"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"AIR"},{"x":19,"y":19,"type":"AIR"},{"x":20,"y":19,"type":"DIRT"},{"x":21,"y":19,"type":"DIRT"},{"x":22,"y":19,"type":"AIR"},{"x":23,"y":19,"type":"AIR"},{"x":24,"y":19,"type":"DIRT"},{"x":25,"y":19,"type":"DIRT"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"AIR"},{"x":28,"y":19,"type":"DIRT"},{"x":29,"y":19,"type":"DIRT"},{"x":30,"y":19,"type":"AIR"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"AIR"}],[{"x":0,"y":20,"type":"DIRT"},{"x":1,"y":20,"type":"AIR"},{"x":2,"y":20,"type":"AIR"},{"x":3,"y":20,"type":"AIR"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"AIR"},{"x":6,"y":20,"type":"AIR"},{"x":7,"y":20,"type":"DIRT"},{"x":8,"y":20,"type":"DIRT"},{"x":9,"y":20,"type":"AIR"},{"x":10,"y":20,"type":"AIR"},{"x":11,"y":20,"type":"AIR"},{"x":12,"y":20,"type":"AIR"},{"x":13,"y":20,"type":"AIR"},{"x":14,"y":20,"type":"AIR"},{"x":15,"y":20,"type":"AIR"},{"x":16,"y":20,"type":"DIRT"},{"x":17,"y":20,"type":"AIR"},{"x":18,"y":20,"type":"AIR"},{"x":19,"y":20,"type":"AIR"},{"x":20,"y":20,"type":"AIR"},{"x":21,"y":20,"type":"AIR"},{"x":22,"y":20,"type":"AIR"},{"x":23,"y":20,"type":"AIR"},{"x":24,"y":20,"type":"DIRT"},{"x":25,"y":20,"type":"DIRT"},{"x":26,"y":20,"type":"AIR"},{"x":27,"y":20,"type":"AIR"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"AIR"},{"x":30,"y":20,"type":"AIR"},{"x":31,"y":20,"type":"AIR"},{"x":32,"y":20,"type":"DIRT"}],[{"x":0,"y":21,"type":"AIR"},{"x":1,"y":21,"type":"AIR"},{"x":2,"y":21,"type":"AIR"},{"x":3,"y":21,"type":"AIR"},{"x":4,"y":21,"type":"AIR"},{"x":5,"y":21,"type":"AIR"},{"x":6,"y":21,"type":"AIR"},{"x":7,"y":21,"type":"AIR"},{"x":8,"y":21,"type":"DIRT"},{"x":9,"y":21,"type":"DIRT"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"AIR"},{"x":12,"y":21,"type":"AIR"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"DIRT"},{"x":15,"y":21,"type":"AIR"},{"x":16,"y":21,"type":"AIR"},{"x":17,"y":21,"type":"AIR"},{"x":18,"y":21,"type":"DIRT"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"AIR"},{"x":21,"y":21,"type":"AIR"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"DIRT"},{"x":24,"y":21,"type":"DIRT"},{"x":25,"y":21,"type":"AIR"},{"x":26,"y":21,"type":"AIR"},{"x":27,"y":21,"type":"AIR"},{"x":28,"y":21,"type":"AIR"},{"x":29,"y":21,"type":"AIR"},{"x":30,"y":21,"type":"AIR"},{"x":31,"y":21,"type":"AIR"},{"x":32,"y":21,"type":"AIR"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"AIR"},{"x":2,"y":22,"type":"DIRT"},{"x":3,"y":22,"type":"DIRT"},{"x":4,"y":22,"type":"AIR"},{"x":5,"y":22,"type":"AIR"},{"x":6,"y":22,"type":"AIR"},{"x":7,"y":22,"type":"AIR"},{"x":8,"y":22,"type":"AIR"},{"x":9,"y":22,"type":"DIRT"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"AIR"},{"x":13,"y":22,"type":"DIRT"},{"x":14,"y":22,"type":"DIRT"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"DIRT"},{"x":19,"y":22,"type":"DIRT"},{"x":20,"y":22,"type":"AIR"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"DIRT"},{"x":24,"y":22,"type":"AIR"},{"x":25,"y":22,"type":"AIR"},{"x":26,"y":22,"type":"AIR"},{"x":27,"y":22,"type":"AIR"},{"x":28,"y":22,"type":"AIR"},{"x":29,"y":22,"type":"DIRT"},{"x":30,"y":22,"type":"DIRT"},{"x":31,"y":22,"type":"AIR"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"AIR"},{"x":2,"y":23,"type":"DIRT"},{"x":3,"y":23,"type":"DIRT"},{"x":4,"y":23,"type":"AIR"},{"x":5,"y":23,"type":"AIR"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"AIR"},{"x":8,"y":23,"type":"AIR"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"AIR"},{"x":13,"y":23,"type":"DIRT"},{"x":14,"y":23,"type":"DIRT"},{"x":15,"y":23,"type":"AIR"},{"x":16,"y":23,"type":"DIRT"},{"x":17,"y":23,"type":"AIR"},{"x":18,"y":23,"type":"DIRT"},{"x":19,"y":23,"type":"DIRT"},{"x":20,"y":23,"type":"AIR"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"AIR"},{"x":25,"y":23,"type":"AIR"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"AIR"},{"x":28,"y":23,"type":"AIR"},{"x":29,"y":23,"type":"DIRT"},{"x":30,"y":23,"type":"DIRT"},{"x":31,"y":23,"type":"AIR"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"AIR"},{"x":2,"y":24,"type":"DIRT"},{"x":3,"y":24,"type":"DIRT"},{"x":4,"y":24,"type":"AIR"},{"x":5,"y":24,"type":"AIR"},{"x":6,"y":24,"type":"DIRT"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"AIR"},{"x":9,"y":24,"type":"AIR"},{"x":10,"y":24,"type":"AIR"},{"x":11,"y":24,"type":"AIR"},{"x":12,"y":24,"type":"AIR"},{"x":13,"y":24,"type":"AIR"},{"x":14,"y":24,"type":"AIR"},{"x":15,"y":24,"type":"AIR"},{"x":16,"y":24,"type":"DIRT"},{"x":17,"y":24,"type":"AIR"},{"x":18,"y":24,"type":"AIR"},{"x":19,"y":24,"type":"AIR"},{"x":20,"y":24,"type":"AIR"},{"x":21,"y":24,"type":"AIR"},{"x":22,"y":24,"type":"AIR"},{"x":23,"y":24,"type":"AIR"},{"x":24,"y":24,"type":"AIR"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"DIRT"},{"x":27,"y":24,"type":"AIR"},{"x":28,"y":24,"type":"AIR"},{"x":29,"y":24,"type":"DIRT"},{"x":30,"y":24,"type":"DIRT"},{"x":31,"y":24,"type":"AIR"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"AIR"},{"x":3,"y":25,"type":"AIR"},{"x":4,"y":25,"type":"DIRT"},{"x":5,"y":25,"type":"AIR"},{"x":6,"y":25,"type":"AIR"},{"x":7,"y":25,"type":"AIR"},{"x":8,"y":25,"type":"AIR"},{"x":9,"y":25,"type":"AIR"},{"x":10,"y":25,"type":"AIR"},{"x":11,"y":25,"type":"AIR"},{"x":12,"y":25,"type":"AIR"},{"x":13,"y":25,"type":"AIR"},{"x":14,"y":25,"type":"AIR"},{"x":15,"y":25,"type":"AIR"},{"x":16,"y":25,"type":"DIRT"},{"x":17,"y":25,"type":"AIR"},{"x":18,"y":25,"type":"AIR"},{"x":19,"y":25,"type":"AIR"},{"x":20,"y":25,"type":"AIR"},{"x":21,"y":25,"type":"AIR"},{"x":22,"y":25,"type":"AIR"},{"x":23,"y":25,"type":"AIR"},{"x":24,"y":25,"type":"AIR"},{"x":25,"y":25,"type":"AIR"},{"x":26,"y":25,"type":"AIR"},{"x":27,"y":25,"type":"AIR"},{"x":28,"y":25,"type":"DIRT"},{"x":29,"y":25,"type":"AIR"},{"x":30,"y":25,"type":"AIR"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"AIR"},{"x":5,"y":26,"type":"AIR"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"AIR"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"DIRT"},{"x":14,"y":26,"type":"DIRT"},{"x":15,"y":26,"type":"AIR"},{"x":16,"y":26,"type":"DIRT"},{"x":17,"y":26,"type":"AIR"},{"x":18,"y":26,"type":"DIRT"},{"x":19,"y":26,"type":"DIRT"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"AIR"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"AIR"},{"x":28,"y":26,"type":"AIR"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"AIR"},{"x":5,"y":27,"type":"AIR"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"DIRT"},{"x":14,"y":27,"type":"DIRT"},{"x":15,"y":27,"type":"AIR"},{"x":16,"y":27,"type":"AIR"},{"x":17,"y":27,"type":"AIR"},{"x":18,"y":27,"type":"DIRT"},{"x":19,"y":27,"type":"DIRT"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"AIR"},{"x":28,"y":27,"type":"AIR"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"DIRT"},{"x":5,"y":28,"type":"DIRT"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"AIR"},{"x":12,"y":28,"type":"AIR"},{"x":13,"y":28,"type":"DIRT"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"AIR"},{"x":16,"y":28,"type":"AIR"},{"x":17,"y":28,"type":"AIR"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"DIRT"},{"x":20,"y":28,"type":"AIR"},{"x":21,"y":28,"type":"AIR"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"DIRT"},{"x":28,"y":28,"type":"DIRT"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"AIR"},{"x":12,"y":29,"type":"DIRT"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"DIRT"},{"x":15,"y":29,"type":"AIR"},{"x":16,"y":29,"type":"DIRT"},{"x":17,"y":29,"type":"AIR"},{"x":18,"y":29,"type":"DIRT"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"DIRT"},{"x":21,"y":29,"type":"AIR"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"DIRT"},{"x":12,"y":30,"type":"DIRT"},{"x":13,"y":30,"type":"DIRT"},{"x":14,"y":30,"type":"AIR"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"DIRT"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"AIR"},{"x":19,"y":30,"type":"DIRT"},{"x":20,"y":30,"type":"DIRT"},{"x":21,"y":30,"type":"DIRT"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"AIR"},{"x":9,"y":31,"type":"AIR"},{"x":10,"y":31,"type":"AIR"},{"x":11,"y":31,"type":"AIR"},{"x":12,"y":31,"type":"DIRT"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"DIRT"},{"x":16,"y":31,"type":"DIRT"},{"x":17,"y":31,"type":"DIRT"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"DIRT"},{"x":21,"y":31,"type":"AIR"},{"x":22,"y":31,"type":"AIR"},{"x":23,"y":31,"type":"AIR"},{"x":24,"y":31,"type":"AIR"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"AIR"},{"x":12,"y":32,"type":"DIRT"},{"x":13,"y":32,"type":"DIRT"},{"x":14,"y":32,"type":"DIRT"},{"x":15,"y":32,"type":"DIRT"},{"x":16,"y":32,"type":"DIRT"},{"x":17,"y":32,"type":"DIRT"},{"x":18,"y":32,"type":"DIRT"},{"x":19,"y":32,"type":"DIRT"},{"x":20,"y":32,"type":"DIRT"},{"x":21,"y":32,"type":"AIR"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/2019-worms/tests/replays/2019.08.19.21.31.16/A-log.csv b/2019-worms/tests/replays/2019.08.19.21.31.16/A-log.csv new file mode 100644 index 0000000..14e4b3c --- /dev/null +++ b/2019-worms/tests/replays/2019.08.19.21.31.16/A-log.csv @@ -0,0 +1,274 @@ +Round,LastCommandType,LastCommand,ActiveWorm,Score,Health,Worm1 Health,Worm1 x,Worm1 y,Worm2 Health,Worm2 x,Worm2 y,Worm3 Health,Worm3 x,Worm3 y +1,null,"null",1,116,350,150,24,4,100,24,28,100,1,16 +2,move,"move 23 3",1,121,350,150,23,3,100,24,28,100,1,16 +3,move,"move 23 28",2,126,350,150,23,3,100,23,28,100,1,16 +4,move,"move 2 16",3,131,350,150,23,3,100,23,28,100,2,16 +5,dig,"dig 22 3",1,138,350,150,23,3,100,23,28,100,2,16 +6,dig,"dig 22 28",2,145,350,150,23,3,100,23,28,100,2,16 +7,dig,"dig 3 16",3,152,350,150,23,3,100,23,28,100,2,16 +8,move,"move 22 3",1,157,350,150,22,3,100,23,28,100,2,16 +9,move,"move 22 28",2,162,350,150,22,3,100,22,28,100,2,16 +10,move,"move 2 15",3,167,350,150,22,3,100,22,28,100,2,15 +11,move,"move 23 3",1,172,350,150,23,3,100,22,28,100,2,15 +12,move,"move 23 28",2,177,350,150,23,3,100,23,28,100,2,15 +13,move,"move 2 16",3,182,350,150,23,3,100,23,28,100,2,16 +14,move,"move 22 3",1,187,350,150,22,3,100,23,28,100,2,16 +15,move,"move 22 28",2,192,350,150,22,3,100,22,28,100,2,16 +16,move,"move 2 15",3,197,350,150,22,3,100,22,28,100,2,15 +17,move,"move 23 3",1,202,350,150,23,3,100,22,28,100,2,15 +18,move,"move 23 28",2,207,350,150,23,3,100,23,28,100,2,15 +19,move,"move 2 16",3,212,350,150,23,3,100,23,28,100,2,16 +20,move,"move 22 3",1,217,350,150,22,3,100,23,28,100,2,16 +21,move,"move 22 28",2,222,350,150,22,3,100,22,28,100,2,16 +22,move,"move 2 15",3,227,350,150,22,3,100,22,28,100,2,15 +23,move,"move 23 3",1,232,350,150,23,3,100,22,28,100,2,15 +24,move,"move 23 28",2,237,350,150,23,3,100,23,28,100,2,15 +25,move,"move 2 16",3,242,350,150,23,3,100,23,28,100,2,16 +26,move,"move 22 3",1,247,350,150,22,3,100,23,28,100,2,16 +27,move,"move 22 28",2,252,350,150,22,3,100,22,28,100,2,16 +28,move,"move 2 15",3,257,350,150,22,3,100,22,28,100,2,15 +29,move,"move 23 3",1,262,350,150,23,3,100,22,28,100,2,15 +30,move,"move 23 28",2,267,350,150,23,3,100,23,28,100,2,15 +31,move,"move 2 16",3,272,350,150,23,3,100,23,28,100,2,16 +32,move,"move 22 3",1,277,350,150,22,3,100,23,28,100,2,16 +33,move,"move 22 28",2,282,350,150,22,3,100,22,28,100,2,16 +34,move,"move 2 15",3,287,350,150,22,3,100,22,28,100,2,15 +35,move,"move 23 3",1,292,350,150,23,3,100,22,28,100,2,15 +36,move,"move 23 28",2,297,350,150,23,3,100,23,28,100,2,15 +37,move,"move 2 16",3,302,350,150,23,3,100,23,28,100,2,16 +38,move,"move 22 3",1,307,350,150,22,3,100,23,28,100,2,16 +39,move,"move 22 28",2,312,350,150,22,3,100,22,28,100,2,16 +40,move,"move 2 15",3,317,350,150,22,3,100,22,28,100,2,15 +41,move,"move 23 3",1,322,350,150,23,3,100,22,28,100,2,15 +42,move,"move 23 28",2,327,350,150,23,3,100,23,28,100,2,15 +43,move,"move 1 16",3,332,350,150,23,3,100,23,28,100,1,16 +44,dig,"dig 22 2",1,339,350,150,23,3,100,23,28,100,1,16 +45,move,"move 23 27",2,344,350,150,23,3,100,23,27,100,1,16 +46,move,"move 1 15",3,349,350,150,23,3,100,23,27,100,1,15 +47,dig,"dig 22 4",1,356,350,150,23,3,100,23,27,100,1,15 +48,move,"move 22 28",2,361,350,150,23,3,100,22,28,100,1,15 +49,move,"move 2 16",3,366,350,150,23,3,100,22,28,100,2,16 +50,move,"move 22 3",1,371,350,150,22,3,100,22,28,100,2,16 +51,move,"move 23 28",2,376,350,150,22,3,100,23,28,100,2,16 +52,move,"move 2 15",3,381,350,150,22,3,100,23,28,100,2,15 +53,move,"move 23 3",1,386,350,150,23,3,100,23,28,100,2,15 +54,move,"move 22 28",2,391,350,150,23,3,100,22,28,100,2,15 +55,move,"move 2 16",3,396,350,150,23,3,100,22,28,100,2,16 +56,move,"move 22 3",1,401,350,150,22,3,100,22,28,100,2,16 +57,move,"move 23 28",2,406,350,150,22,3,100,23,28,100,2,16 +58,move,"move 2 15",3,411,350,150,22,3,100,23,28,100,2,15 +59,move,"move 23 3",1,416,350,150,23,3,100,23,28,100,2,15 +60,move,"move 22 28",2,421,350,150,23,3,100,22,28,100,2,15 +61,move,"move 2 16",3,426,350,150,23,3,100,22,28,100,2,16 +62,move,"move 22 3",1,431,350,150,22,3,100,22,28,100,2,16 +63,move,"move 23 28",2,436,350,150,22,3,100,23,28,100,2,16 +64,nothing,"nothing "Player chose to do nothing"",3,436,350,150,22,3,100,23,28,100,2,16 +65,move,"move 23 3",1,441,350,150,23,3,100,23,28,100,2,16 +66,move,"move 24 29",2,446,350,150,23,3,100,24,29,100,2,16 +67,move,"move 1 17",3,451,350,150,23,3,100,24,29,100,1,17 +68,move,"move 24 3",1,456,350,150,24,3,100,24,29,100,1,17 +69,dig,"dig 24 30",2,463,350,150,24,3,100,24,29,100,1,17 +70,dig,"dig 1 18",3,470,350,150,24,3,100,24,29,100,1,17 +71,move,"move 23 3",1,475,350,150,23,3,100,24,29,100,1,17 +72,move,"move 25 28",2,480,350,150,23,3,100,25,28,100,1,17 +73,move,"move 1 18",3,485,350,150,23,3,100,25,28,100,1,18 +74,move,"move 22 2",1,490,350,150,22,2,100,25,28,100,1,18 +75,dig,"dig 26 29",2,497,350,150,22,2,100,25,28,100,1,18 +76,move,"move 0 19",3,502,350,150,22,2,100,25,28,100,0,19 +77,nothing,"nothing "Player chose to do nothing"",1,502,350,150,22,2,100,25,28,100,0,19 +78,move,"move 24 29",2,507,350,150,22,2,100,24,29,100,0,19 +79,nothing,"nothing "Player chose to do nothing"",3,507,350,150,22,2,100,24,29,100,0,19 +80,dig,"dig 21 1",1,514,350,150,22,2,100,24,29,100,0,19 +81,move,"move 23 28",2,519,350,150,22,2,100,23,28,100,0,19 +82,dig,"dig 0 20",3,526,350,150,22,2,100,23,28,100,0,19 +83,move,"move 21 1",1,531,350,150,21,1,100,23,28,100,0,19 +84,move,"move 24 27",2,536,350,150,21,1,100,24,27,100,0,19 +85,dig,"dig 0 18",3,543,350,150,21,1,100,24,27,100,0,19 +86,nothing,"nothing "Player chose to do nothing"",1,543,350,150,21,1,100,24,27,100,0,19 +87,dig,"dig 23 26",2,550,350,150,21,1,100,24,27,100,0,19 +88,move,"move 0 20",3,555,350,150,21,1,100,24,27,100,0,20 +89,nothing,"nothing "Player chose to do nothing"",1,555,350,150,21,1,100,24,27,100,0,20 +90,move,"move 24 28",2,560,350,150,21,1,100,24,28,100,0,20 +91,move,"move 1 21",3,565,350,150,21,1,100,24,28,100,1,21 +92,dig,"dig 22 1",1,572,350,150,21,1,100,24,28,100,1,21 +93,move,"move 23 28",2,577,350,150,21,1,100,23,28,100,1,21 +94,move,"move 1 22",3,582,350,150,21,1,100,23,28,100,1,22 +95,dig,"dig 20 2",1,589,350,150,21,1,100,23,28,100,1,22 +96,dig,"dig 22 29",2,596,350,150,21,1,100,23,28,100,1,22 +97,dig,"dig 2 23",3,603,350,150,21,1,100,23,28,100,1,22 +98,dig,"dig 21 2",1,610,350,150,21,1,100,23,28,100,1,22 +99,shoot,"shoot S",1,620,330,130,21,1,100,23,28,100,1,22 +100,shoot,"shoot S",1,633,322,122,21,1,100,23,28,100,1,22 +101,shoot,"shoot S",1,641,299,102,21,1,100,23,28,97,1,22 +102,shoot,"shoot S",1,654,288,94,21,1,100,23,28,94,1,22 +103,shoot,"shoot S",1,662,265,74,21,1,100,23,28,91,1,22 +104,move,"move 22 28",2,662,251,63,21,1,100,22,28,88,1,22 +105,move,"move 2 21",3,663,237,52,21,1,100,22,28,85,2,21 +106,move,"move 22 2",1,667,234,49,22,2,100,22,28,85,2,21 +107,move,"move 23 29",2,672,234,49,22,2,100,23,29,85,2,21 +108,move,"move 3 21",3,677,234,49,22,2,100,23,29,85,3,21 +109,shoot,"shoot S",1,693,234,49,22,2,100,23,29,85,3,21 +110,move,"move 22 28",2,698,234,49,22,2,100,22,28,85,3,21 +111,move,"move 3 20",3,703,234,49,22,2,100,22,28,85,3,20 +112,move,"move 21 2",1,703,234,49,22,2,100,22,28,85,3,20 +113,dig,"dig 22 27",2,710,234,49,22,2,100,22,28,85,3,20 +114,move,"move 4 21",3,714,231,46,22,2,100,22,28,85,4,21 +115,move,"move 21 2",1,713,228,43,22,2,100,22,28,85,4,21 +116,dig,"dig 21 27",2,719,225,40,22,2,100,22,28,85,4,21 +117,move,"move 5 22",3,723,222,37,22,2,100,22,28,85,5,22 +118,shoot,"shoot S",1,722,219,34,22,2,100,22,28,85,5,22 +119,move,"move 21 27",2,726,216,31,22,2,100,21,27,85,5,22 +120,move,"move 6 22",3,730,213,28,22,2,100,21,27,85,6,22 +121,move,"move 21 3",1,729,210,25,22,2,100,21,27,85,6,22 +122,dig,"dig 22 26",2,735,207,22,22,2,100,21,27,85,6,22 +123,move,"move 5 22",3,739,204,19,22,2,100,21,27,85,5,22 +124,move,"move 21 3",1,738,201,16,22,2,100,21,27,85,5,22 +125,nothing,"nothing "Player chose to do nothing"",2,737,198,13,22,2,100,21,27,85,5,22 +126,move,"move 6 21",3,741,195,10,22,2,100,21,27,85,6,21 +127,move,"move 23 3",1,740,192,7,22,2,100,21,27,85,6,21 +128,move,"move 22 26",2,744,189,4,22,2,100,22,26,85,6,21 +129,nothing,"nothing "Player chose to do nothing"",3,743,186,1,22,2,100,22,26,85,6,21 +130,shoot,"shoot S",1,758,185,-10,22,2,100,22,26,85,6,21 +131,move,"move 21 26",2,763,185,-10,22,2,100,21,26,85,6,21 +132,dig,"dig 7 20",3,770,185,-10,22,2,100,21,26,85,6,21 +133,dig,"dig 20 27",2,777,185,-10,22,2,100,21,26,85,6,21 +134,move,"move 5 20",3,782,185,-10,22,2,100,21,26,85,5,20 +135,move,"move 21 25",2,787,185,-10,22,2,100,21,25,85,5,20 +136,move,"move 4 20",3,792,185,-10,22,2,100,21,25,85,4,20 +137,move,"move 20 25",2,797,185,-10,22,2,100,20,25,85,4,20 +138,nothing,"nothing "Player chose to do nothing"",3,797,185,-10,22,2,100,20,25,85,4,20 +139,dig,"dig 19 26",2,804,185,-10,22,2,100,20,25,85,4,20 +140,nothing,"nothing "Player chose to do nothing"",3,804,185,-10,22,2,100,20,25,85,4,20 +141,move,"move 21 25",2,809,185,-10,22,2,100,21,25,85,4,20 +142,nothing,"nothing "Player chose to do nothing"",3,809,185,-10,22,2,100,21,25,85,4,20 +143,move,"move 21 26",2,814,185,-10,22,2,100,21,26,85,4,20 +144,move,"move 5 20",3,819,185,-10,22,2,100,21,26,85,5,20 +145,move,"move 20 27",2,824,185,-10,22,2,100,20,27,85,5,20 +146,move,"move 6 21",3,829,185,-10,22,2,100,20,27,85,6,21 +147,dig,"dig 20 26",2,836,185,-10,22,2,100,20,27,85,6,21 +148,move,"move 5 22",3,841,185,-10,22,2,100,20,27,85,5,22 +149,move,"move 19 26",2,846,185,-10,22,2,100,19,26,85,5,22 +150,move,"move 6 22",3,851,185,-10,22,2,100,19,26,85,6,22 +151,dig,"dig 19 27",2,858,185,-10,22,2,100,19,26,85,6,22 +152,move,"move 7 21",3,863,185,-10,22,2,100,19,26,85,7,21 +153,move,"move 20 25",2,868,185,-10,22,2,100,20,25,85,7,21 +154,move,"move 6 22",3,873,185,-10,22,2,100,20,25,85,6,22 +155,move,"move 19 24",2,878,185,-10,22,2,100,19,24,85,6,22 +156,move,"move 5 21",3,883,185,-10,22,2,100,19,24,85,5,21 +157,nothing,"nothing "Player chose to do nothing"",2,883,185,-10,22,2,100,19,24,85,5,21 +158,move,"move 6 20",3,888,185,-10,22,2,100,19,24,85,6,20 +159,dig,"dig 18 23",2,895,185,-10,22,2,100,19,24,85,6,20 +160,move,"move 5 21",3,900,185,-10,22,2,100,19,24,85,5,21 +161,move,"move 20 23",2,905,185,-10,22,2,100,20,23,85,5,21 +162,move,"move 6 22",3,910,185,-10,22,2,100,20,23,85,6,22 +163,move,"move 20 22",2,915,185,-10,22,2,100,20,22,85,6,22 +164,move,"move 7 21",3,920,185,-10,22,2,100,20,22,85,7,21 +165,move,"move 21 21",2,925,185,-10,22,2,100,21,21,85,7,21 +166,nothing,"nothing "Player chose to do nothing"",3,925,185,-10,22,2,100,21,21,85,7,21 +167,banana,"banana 20 16",2,967,185,-10,22,2,100,21,21,85,7,21 +168,move,"move 6 21",3,972,185,-10,22,2,100,21,21,85,6,21 +169,move,"move 21 20",2,977,185,-10,22,2,100,21,20,85,6,21 +170,nothing,"nothing "Player chose to do nothing"",3,977,185,-10,22,2,100,21,20,85,6,21 +171,banana,"banana 21 15",2,1043,185,-10,22,2,100,21,20,85,6,21 +172,move,"move 6 20",3,1048,185,-10,22,2,100,21,20,85,6,20 +173,banana,"banana 21 16",2,1121,185,-10,22,2,100,21,20,85,6,20 +174,dig,"dig 7 19",3,1128,185,-10,22,2,100,21,20,85,6,20 +175,nothing,"nothing "Player chose to do nothing"",2,1128,185,-10,22,2,100,21,20,85,6,20 +176,move,"move 7 19",3,1133,185,-10,22,2,100,21,20,85,7,19 +177,move,"move 21 21",2,1138,185,-10,22,2,100,21,21,85,7,19 +178,move,"move 8 18",3,1143,185,-10,22,2,100,21,21,85,8,18 +179,move,"move 20 22",2,1148,185,-10,22,2,100,20,22,85,8,18 +180,move,"move 9 17",3,1153,185,-10,22,2,100,20,22,85,9,17 +181,move,"move 20 21",2,1158,185,-10,22,2,100,20,21,85,9,17 +182,move,"move 9 16",3,1163,185,-10,22,2,100,20,21,85,9,16 +183,shoot,"shoot N",2,1179,185,-10,22,2,100,20,21,85,9,16 +184,dig,"dig 10 15",3,1186,185,-10,22,2,100,20,21,85,9,16 +185,shoot,"shoot N",2,1202,185,-10,22,2,100,20,21,85,9,16 +186,move,"move 10 16",3,1207,185,-10,22,2,100,20,21,85,10,16 +187,move,"move 21 21",2,1212,185,-10,22,2,100,21,21,85,10,16 +188,dig,"dig 11 17",3,1219,185,-10,22,2,100,21,21,85,10,16 +189,shoot,"shoot N",2,1235,185,-10,22,2,100,21,21,85,10,16 +190,dig,"dig 11 15",3,1242,185,-10,22,2,100,21,21,85,10,16 +191,shoot,"shoot N",2,1258,185,-10,22,2,100,21,21,85,10,16 +192,dig,"dig 9 15",3,1265,185,-10,22,2,100,21,21,85,10,16 +193,move,"move 22 20",2,1270,185,-10,22,2,100,22,20,85,10,16 +194,dig,"dig 11 16",3,1277,185,-10,22,2,100,22,20,85,10,16 +195,move,"move 23 19",2,1282,185,-10,22,2,100,23,19,85,10,16 +196,move,"move 11 17",3,1287,185,-10,22,2,100,23,19,85,11,17 +197,shoot,"shoot W",2,1303,185,-10,22,2,100,23,19,85,11,17 +198,dig,"dig 12 16",3,1310,185,-10,22,2,100,23,19,85,11,17 +199,move,"move 23 18",2,1315,185,-10,22,2,100,23,18,85,11,17 +200,nothing,"nothing "Player chose to do nothing"",3,1315,185,-10,22,2,100,23,18,85,11,17 +201,move,"move 23 17",2,1320,185,-10,22,2,100,23,17,85,11,17 +202,dig,"dig 12 18",3,1327,185,-10,22,2,100,23,17,85,11,17 +203,shoot,"shoot S",2,1343,185,-10,22,2,100,23,17,85,11,17 +204,dig,"dig 12 17",3,1350,185,-10,22,2,100,23,17,85,11,17 +205,move,"move 24 16",2,1355,185,-10,22,2,100,24,16,85,11,17 +206,move,"move 10 16",3,1360,185,-10,22,2,100,24,16,85,10,16 +207,shoot,"shoot W",2,1376,185,-10,22,2,100,24,16,85,10,16 +208,move,"move 9 15",3,1381,185,-10,22,2,100,24,16,85,9,15 +209,move,"move 23 15",2,1386,185,-10,22,2,100,23,15,85,9,15 +210,dig,"dig 8 15",3,1393,185,-10,22,2,100,23,15,85,9,15 +211,move,"move 22 14",2,1398,185,-10,22,2,100,22,14,85,9,15 +212,move,"move 10 15",3,1403,185,-10,22,2,100,22,14,85,10,15 +213,shoot,"shoot S",2,1419,185,-10,22,2,100,22,14,85,10,15 +214,nothing,"nothing "Player chose to do nothing"",3,1419,185,-10,22,2,100,22,14,85,10,15 +215,move,"move 21 13",2,1424,185,-10,22,2,100,21,13,85,10,15 +216,move,"move 11 15",3,1429,185,-10,22,2,100,21,13,85,11,15 +217,nothing,"nothing "Player chose to do nothing"",2,1429,185,-10,22,2,100,21,13,85,11,15 +218,move,"move 12 15",3,1434,185,-10,22,2,100,21,13,85,12,15 +219,shoot,"shoot S",2,1450,185,-10,22,2,100,21,13,85,12,15 +220,move,"move 12 16",3,1455,185,-10,22,2,100,21,13,85,12,16 +221,move,"move 22 12",2,1460,185,-10,22,2,100,22,12,85,12,16 +222,move,"move 12 17",3,1465,185,-10,22,2,100,22,12,85,12,17 +223,move,"move 22 11",2,1470,185,-10,22,2,100,22,11,85,12,17 +224,dig,"dig 13 18",3,1477,185,-10,22,2,100,22,11,85,12,17 +225,shoot,"shoot S",2,1493,185,-10,22,2,100,22,11,85,12,17 +226,nothing,"nothing "Player chose to do nothing"",3,1493,185,-10,22,2,100,22,11,85,12,17 +227,move,"move 21 11",2,1498,185,-10,22,2,100,21,11,85,12,17 +228,nothing,"nothing "Player chose to do nothing"",3,1498,185,-10,22,2,100,21,11,85,12,17 +229,move,"move 20 10",2,1503,185,-10,22,2,100,20,10,85,12,17 +230,move,"move 11 16",3,1508,185,-10,22,2,100,20,10,85,11,16 +231,nothing,"nothing "Player chose to do nothing"",2,1508,185,-10,22,2,100,20,10,85,11,16 +232,move,"move 10 16",3,1513,185,-10,22,2,100,20,10,85,10,16 +233,move,"move 19 10",2,1518,185,-10,22,2,100,19,10,85,10,16 +234,move,"move 9 17",3,1523,185,-10,22,2,100,19,10,85,9,17 +235,move,"move 18 10",2,1528,185,-10,22,2,100,18,10,85,9,17 +236,move,"move 10 16",3,1533,185,-10,22,2,100,18,10,85,10,16 +237,move,"move 17 10",2,1538,185,-10,22,2,100,17,10,85,10,16 +238,move,"move 9 15",3,1543,185,-10,22,2,100,17,10,85,9,15 +239,shoot,"shoot SE",2,1559,185,-10,22,2,100,17,10,85,9,15 +240,move,"move 10 16",3,1562,177,-10,22,2,92,17,10,85,10,16 +241,shoot,"shoot SE",2,1575,169,-10,22,2,84,17,10,85,10,16 +242,move,"move 11 15",3,1580,169,-10,22,2,84,17,10,85,11,15 +243,shoot,"shoot SE",2,1593,161,-10,22,2,76,17,10,85,11,15 +244,move,"move 11 14",3,1596,153,-10,22,2,68,17,10,85,11,14 +245,shoot,"shoot SE",2,1612,153,-10,22,2,68,17,10,85,11,14 +246,dig,"dig 10 14",3,1616,145,-10,22,2,60,17,10,85,11,14 +247,shoot,"shoot SE",2,1629,137,-10,22,2,52,17,10,85,11,14 +248,move,"move 11 13",3,1634,137,-10,22,2,52,17,10,85,11,13 +249,shoot,"shoot SE",2,1648,129,-10,22,2,44,17,10,85,11,13 +250,move,"move 12 13",3,1650,121,-10,22,2,36,17,10,85,12,13 +251,shoot,"shoot SE",2,1666,121,-10,22,2,36,17,10,85,12,13 +252,move,"move 11 14",3,1668,113,-10,22,2,28,17,10,85,11,14 +253,shoot,"shoot SE",2,1682,105,-10,22,2,20,17,10,85,11,14 +254,move,"move 12 15",3,1687,105,-10,22,2,20,17,10,85,12,15 +255,move,"move 16 10",2,1692,105,-10,22,2,20,16,10,85,12,15 +256,move,"move 13 14",3,1697,105,-10,22,2,20,16,10,85,13,14 +257,dig,"dig 15 11",2,1701,97,-10,22,2,12,16,10,85,13,14 +258,move,"move 12 14",3,1702,86,-10,22,2,1,16,10,85,12,14 +259,shoot,"shoot E",2,1718,85,-10,22,2,-10,16,10,85,12,14 +260,move,"move 13 15",3,1723,85,-10,22,2,-10,16,10,85,13,15 +261,move,"move 13 16",3,1728,85,-10,22,2,-10,16,10,85,13,16 +262,move,"move 12 17",3,1733,85,-10,22,2,-10,16,10,85,12,17 +263,move,"move 12 18",3,1738,85,-10,22,2,-10,16,10,85,12,18 +264,move,"move 13 19",3,1743,85,-10,22,2,-10,16,10,85,13,19 +265,move,"move 14 20",3,1748,85,-10,22,2,-10,16,10,85,14,20 +266,move,"move 15 20",3,1753,85,-10,22,2,-10,16,10,85,15,20 +267,move,"move 16 20",3,1758,85,-10,22,2,-10,16,10,85,16,20 +268,move,"move 15 19",3,1763,85,-10,22,2,-10,16,10,85,15,19 +269,dig,"dig 16 18",3,1770,85,-10,22,2,-10,16,10,85,15,19 +270,move,"move 16 18",3,1775,85,-10,22,2,-10,16,10,85,16,18 +271,move,"move 15 18",3,1780,85,-10,22,2,-10,16,10,85,15,18 +272,move,"move 14 17",3,1785,85,-10,22,2,-10,16,10,85,14,17 +273,shoot,"shoot E",3,1798,77,-10,22,2,-10,16,10,77,14,17 diff --git a/2019-worms/tests/replays/2019.08.19.21.31.16/B-init.json b/2019-worms/tests/replays/2019.08.19.21.31.16/B-init.json new file mode 100644 index 0000000..373ec6e --- /dev/null +++ b/2019-worms/tests/replays/2019.08.19.21.31.16/B-init.json @@ -0,0 +1 @@ +{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":2,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":8,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":4},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":31,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":1,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":24,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":1,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"DIRT"},{"x":13,"y":0,"type":"DIRT"},{"x":14,"y":0,"type":"AIR"},{"x":15,"y":0,"type":"AIR"},{"x":16,"y":0,"type":"DIRT"},{"x":17,"y":0,"type":"AIR"},{"x":18,"y":0,"type":"AIR"},{"x":19,"y":0,"type":"DIRT"},{"x":20,"y":0,"type":"DIRT"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"DIRT"},{"x":10,"y":1,"type":"DIRT"},{"x":11,"y":1,"type":"DIRT"},{"x":12,"y":1,"type":"DIRT"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"AIR"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"DIRT"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"AIR"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"DIRT"},{"x":21,"y":1,"type":"DIRT"},{"x":22,"y":1,"type":"DIRT"},{"x":23,"y":1,"type":"DIRT"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"DIRT"},{"x":12,"y":2,"type":"DIRT"},{"x":13,"y":2,"type":"DIRT"},{"x":14,"y":2,"type":"DIRT"},{"x":15,"y":2,"type":"AIR"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"AIR"},{"x":18,"y":2,"type":"DIRT"},{"x":19,"y":2,"type":"DIRT"},{"x":20,"y":2,"type":"DIRT"},{"x":21,"y":2,"type":"DIRT"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"DIRT"},{"x":12,"y":3,"type":"AIR"},{"x":13,"y":3,"type":"DIRT"},{"x":14,"y":3,"type":"DIRT"},{"x":15,"y":3,"type":"AIR"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"AIR"},{"x":18,"y":3,"type":"DIRT"},{"x":19,"y":3,"type":"DIRT"},{"x":20,"y":3,"type":"AIR"},{"x":21,"y":3,"type":"DIRT"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"AIR"},{"x":5,"y":4,"type":"AIR"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":4},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"AIR"},{"x":12,"y":4,"type":"AIR"},{"x":13,"y":4,"type":"AIR"},{"x":14,"y":4,"type":"AIR"},{"x":15,"y":4,"type":"AIR"},{"x":16,"y":4,"type":"AIR"},{"x":17,"y":4,"type":"AIR"},{"x":18,"y":4,"type":"AIR"},{"x":19,"y":4,"type":"AIR"},{"x":20,"y":4,"type":"AIR"},{"x":21,"y":4,"type":"AIR"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"AIR"},{"x":28,"y":4,"type":"AIR"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"AIR"},{"x":5,"y":5,"type":"AIR"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"AIR"},{"x":13,"y":5,"type":"AIR"},{"x":14,"y":5,"type":"AIR"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"AIR"},{"x":19,"y":5,"type":"AIR"},{"x":20,"y":5,"type":"AIR"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"AIR"},{"x":28,"y":5,"type":"AIR"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"AIR"},{"x":4,"y":6,"type":"AIR"},{"x":5,"y":6,"type":"AIR"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"DIRT"},{"x":12,"y":6,"type":"AIR"},{"x":13,"y":6,"type":"AIR"},{"x":14,"y":6,"type":"AIR"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"AIR"},{"x":19,"y":6,"type":"AIR"},{"x":20,"y":6,"type":"AIR"},{"x":21,"y":6,"type":"DIRT"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"AIR"},{"x":28,"y":6,"type":"AIR"},{"x":29,"y":6,"type":"AIR"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"AIR"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"AIR"},{"x":5,"y":7,"type":"DIRT"},{"x":6,"y":7,"type":"AIR"},{"x":7,"y":7,"type":"AIR"},{"x":8,"y":7,"type":"AIR"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"AIR"},{"x":12,"y":7,"type":"AIR"},{"x":13,"y":7,"type":"DIRT"},{"x":14,"y":7,"type":"AIR"},{"x":15,"y":7,"type":"AIR"},{"x":16,"y":7,"type":"AIR"},{"x":17,"y":7,"type":"AIR"},{"x":18,"y":7,"type":"AIR"},{"x":19,"y":7,"type":"DIRT"},{"x":20,"y":7,"type":"AIR"},{"x":21,"y":7,"type":"AIR"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"AIR"},{"x":25,"y":7,"type":"AIR"},{"x":26,"y":7,"type":"AIR"},{"x":27,"y":7,"type":"DIRT"},{"x":28,"y":7,"type":"AIR"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"AIR"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"AIR"},{"x":2,"y":8,"type":"AIR"},{"x":3,"y":8,"type":"DIRT"},{"x":4,"y":8,"type":"DIRT"},{"x":5,"y":8,"type":"DIRT"},{"x":6,"y":8,"type":"AIR"},{"x":7,"y":8,"type":"AIR"},{"x":8,"y":8,"type":"AIR"},{"x":9,"y":8,"type":"AIR"},{"x":10,"y":8,"type":"AIR"},{"x":11,"y":8,"type":"AIR"},{"x":12,"y":8,"type":"AIR"},{"x":13,"y":8,"type":"DIRT"},{"x":14,"y":8,"type":"AIR"},{"x":15,"y":8,"type":"AIR"},{"x":16,"y":8,"type":"AIR"},{"x":17,"y":8,"type":"AIR"},{"x":18,"y":8,"type":"AIR"},{"x":19,"y":8,"type":"DIRT"},{"x":20,"y":8,"type":"AIR"},{"x":21,"y":8,"type":"AIR"},{"x":22,"y":8,"type":"AIR"},{"x":23,"y":8,"type":"AIR"},{"x":24,"y":8,"type":"AIR"},{"x":25,"y":8,"type":"AIR"},{"x":26,"y":8,"type":"AIR"},{"x":27,"y":8,"type":"DIRT"},{"x":28,"y":8,"type":"DIRT"},{"x":29,"y":8,"type":"DIRT"},{"x":30,"y":8,"type":"AIR"},{"x":31,"y":8,"type":"AIR"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"DIRT"},{"x":2,"y":9,"type":"AIR"},{"x":3,"y":9,"type":"DIRT"},{"x":4,"y":9,"type":"DIRT"},{"x":5,"y":9,"type":"AIR"},{"x":6,"y":9,"type":"AIR"},{"x":7,"y":9,"type":"DIRT"},{"x":8,"y":9,"type":"AIR"},{"x":9,"y":9,"type":"AIR"},{"x":10,"y":9,"type":"DIRT"},{"x":11,"y":9,"type":"AIR"},{"x":12,"y":9,"type":"DIRT"},{"x":13,"y":9,"type":"DIRT"},{"x":14,"y":9,"type":"AIR"},{"x":15,"y":9,"type":"DIRT"},{"x":16,"y":9,"type":"AIR"},{"x":17,"y":9,"type":"DIRT"},{"x":18,"y":9,"type":"AIR"},{"x":19,"y":9,"type":"DIRT"},{"x":20,"y":9,"type":"DIRT"},{"x":21,"y":9,"type":"AIR"},{"x":22,"y":9,"type":"DIRT"},{"x":23,"y":9,"type":"AIR"},{"x":24,"y":9,"type":"AIR"},{"x":25,"y":9,"type":"DIRT"},{"x":26,"y":9,"type":"AIR"},{"x":27,"y":9,"type":"AIR"},{"x":28,"y":9,"type":"DIRT"},{"x":29,"y":9,"type":"DIRT"},{"x":30,"y":9,"type":"AIR"},{"x":31,"y":9,"type":"DIRT"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"DIRT"},{"x":2,"y":10,"type":"AIR"},{"x":3,"y":10,"type":"AIR"},{"x":4,"y":10,"type":"DIRT"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"DIRT"},{"x":7,"y":10,"type":"DIRT"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"AIR"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"DIRT"},{"x":12,"y":10,"type":"DIRT"},{"x":13,"y":10,"type":"DIRT"},{"x":14,"y":10,"type":"AIR"},{"x":15,"y":10,"type":"AIR"},{"x":16,"y":10,"type":"AIR"},{"x":17,"y":10,"type":"AIR"},{"x":18,"y":10,"type":"AIR"},{"x":19,"y":10,"type":"DIRT"},{"x":20,"y":10,"type":"DIRT"},{"x":21,"y":10,"type":"DIRT"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"AIR"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"DIRT"},{"x":26,"y":10,"type":"DIRT"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"DIRT"},{"x":29,"y":10,"type":"AIR"},{"x":30,"y":10,"type":"AIR"},{"x":31,"y":10,"type":"DIRT"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"DIRT"},{"x":1,"y":11,"type":"DIRT"},{"x":2,"y":11,"type":"DIRT"},{"x":3,"y":11,"type":"AIR"},{"x":4,"y":11,"type":"AIR"},{"x":5,"y":11,"type":"AIR"},{"x":6,"y":11,"type":"AIR"},{"x":7,"y":11,"type":"AIR"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"AIR"},{"x":10,"y":11,"type":"AIR"},{"x":11,"y":11,"type":"AIR"},{"x":12,"y":11,"type":"AIR"},{"x":13,"y":11,"type":"DIRT"},{"x":14,"y":11,"type":"AIR"},{"x":15,"y":11,"type":"DIRT"},{"x":16,"y":11,"type":"DIRT"},{"x":17,"y":11,"type":"DIRT"},{"x":18,"y":11,"type":"AIR"},{"x":19,"y":11,"type":"DIRT"},{"x":20,"y":11,"type":"AIR"},{"x":21,"y":11,"type":"AIR"},{"x":22,"y":11,"type":"AIR"},{"x":23,"y":11,"type":"AIR"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"AIR"},{"x":26,"y":11,"type":"AIR"},{"x":27,"y":11,"type":"AIR"},{"x":28,"y":11,"type":"AIR"},{"x":29,"y":11,"type":"AIR"},{"x":30,"y":11,"type":"DIRT"},{"x":31,"y":11,"type":"DIRT"},{"x":32,"y":11,"type":"DIRT"}],[{"x":0,"y":12,"type":"DIRT"},{"x":1,"y":12,"type":"DIRT"},{"x":2,"y":12,"type":"DIRT"},{"x":3,"y":12,"type":"DIRT"},{"x":4,"y":12,"type":"DIRT"},{"x":5,"y":12,"type":"AIR"},{"x":6,"y":12,"type":"AIR"},{"x":7,"y":12,"type":"AIR"},{"x":8,"y":12,"type":"DIRT"},{"x":9,"y":12,"type":"DIRT"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"AIR"},{"x":12,"y":12,"type":"AIR"},{"x":13,"y":12,"type":"AIR"},{"x":14,"y":12,"type":"DIRT"},{"x":15,"y":12,"type":"DIRT"},{"x":16,"y":12,"type":"DIRT"},{"x":17,"y":12,"type":"DIRT"},{"x":18,"y":12,"type":"DIRT"},{"x":19,"y":12,"type":"AIR"},{"x":20,"y":12,"type":"AIR"},{"x":21,"y":12,"type":"AIR"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"DIRT"},{"x":24,"y":12,"type":"DIRT"},{"x":25,"y":12,"type":"AIR"},{"x":26,"y":12,"type":"AIR"},{"x":27,"y":12,"type":"AIR"},{"x":28,"y":12,"type":"DIRT"},{"x":29,"y":12,"type":"DIRT"},{"x":30,"y":12,"type":"DIRT"},{"x":31,"y":12,"type":"DIRT"},{"x":32,"y":12,"type":"DIRT"}],[{"x":0,"y":13,"type":"DIRT"},{"x":1,"y":13,"type":"DIRT"},{"x":2,"y":13,"type":"AIR"},{"x":3,"y":13,"type":"DIRT"},{"x":4,"y":13,"type":"DIRT"},{"x":5,"y":13,"type":"AIR"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"AIR"},{"x":8,"y":13,"type":"DIRT"},{"x":9,"y":13,"type":"DIRT"},{"x":10,"y":13,"type":"AIR"},{"x":11,"y":13,"type":"AIR"},{"x":12,"y":13,"type":"AIR"},{"x":13,"y":13,"type":"AIR"},{"x":14,"y":13,"type":"DIRT"},{"x":15,"y":13,"type":"DIRT"},{"x":16,"y":13,"type":"DIRT"},{"x":17,"y":13,"type":"DIRT"},{"x":18,"y":13,"type":"DIRT"},{"x":19,"y":13,"type":"AIR"},{"x":20,"y":13,"type":"AIR"},{"x":21,"y":13,"type":"AIR"},{"x":22,"y":13,"type":"AIR"},{"x":23,"y":13,"type":"DIRT"},{"x":24,"y":13,"type":"DIRT"},{"x":25,"y":13,"type":"AIR"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"AIR"},{"x":28,"y":13,"type":"DIRT"},{"x":29,"y":13,"type":"DIRT"},{"x":30,"y":13,"type":"AIR"},{"x":31,"y":13,"type":"DIRT"},{"x":32,"y":13,"type":"DIRT"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"DIRT"},{"x":5,"y":14,"type":"AIR"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"AIR"},{"x":8,"y":14,"type":"DIRT"},{"x":9,"y":14,"type":"DIRT"},{"x":10,"y":14,"type":"DIRT"},{"x":11,"y":14,"type":"AIR"},{"x":12,"y":14,"type":"AIR"},{"x":13,"y":14,"type":"AIR"},{"x":14,"y":14,"type":"AIR"},{"x":15,"y":14,"type":"AIR"},{"x":16,"y":14,"type":"DIRT"},{"x":17,"y":14,"type":"AIR"},{"x":18,"y":14,"type":"AIR"},{"x":19,"y":14,"type":"AIR"},{"x":20,"y":14,"type":"AIR"},{"x":21,"y":14,"type":"AIR"},{"x":22,"y":14,"type":"DIRT"},{"x":23,"y":14,"type":"DIRT"},{"x":24,"y":14,"type":"DIRT"},{"x":25,"y":14,"type":"AIR"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"AIR"},{"x":28,"y":14,"type":"DIRT"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"AIR"},{"x":5,"y":15,"type":"AIR"},{"x":6,"y":15,"type":"AIR"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"DIRT"},{"x":9,"y":15,"type":"DIRT"},{"x":10,"y":15,"type":"DIRT"},{"x":11,"y":15,"type":"DIRT"},{"x":12,"y":15,"type":"AIR"},{"x":13,"y":15,"type":"AIR"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"DIRT"},{"x":16,"y":15,"type":"DIRT"},{"x":17,"y":15,"type":"DIRT"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"AIR"},{"x":20,"y":15,"type":"AIR"},{"x":21,"y":15,"type":"DIRT"},{"x":22,"y":15,"type":"DIRT"},{"x":23,"y":15,"type":"DIRT"},{"x":24,"y":15,"type":"DIRT"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"AIR"},{"x":27,"y":15,"type":"AIR"},{"x":28,"y":15,"type":"AIR"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":1,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"DIRT"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"DIRT"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"AIR"},{"x":10,"y":16,"type":"AIR"},{"x":11,"y":16,"type":"DIRT"},{"x":12,"y":16,"type":"DIRT"},{"x":13,"y":16,"type":"AIR"},{"x":14,"y":16,"type":"AIR"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"DIRT"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"AIR"},{"x":19,"y":16,"type":"AIR"},{"x":20,"y":16,"type":"DIRT"},{"x":21,"y":16,"type":"DIRT"},{"x":22,"y":16,"type":"AIR"},{"x":23,"y":16,"type":"AIR"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"DIRT"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"DIRT"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":31,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"DIRT"},{"x":5,"y":17,"type":"DIRT"},{"x":6,"y":17,"type":"DIRT"},{"x":7,"y":17,"type":"AIR"},{"x":8,"y":17,"type":"AIR"},{"x":9,"y":17,"type":"AIR"},{"x":10,"y":17,"type":"AIR"},{"x":11,"y":17,"type":"DIRT"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"AIR"},{"x":14,"y":17,"type":"AIR"},{"x":15,"y":17,"type":"AIR"},{"x":16,"y":17,"type":"DIRT"},{"x":17,"y":17,"type":"AIR"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"AIR"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"DIRT"},{"x":22,"y":17,"type":"AIR"},{"x":23,"y":17,"type":"AIR"},{"x":24,"y":17,"type":"AIR"},{"x":25,"y":17,"type":"AIR"},{"x":26,"y":17,"type":"DIRT"},{"x":27,"y":17,"type":"DIRT"},{"x":28,"y":17,"type":"DIRT"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"DIRT"},{"x":5,"y":18,"type":"DIRT"},{"x":6,"y":18,"type":"DIRT"},{"x":7,"y":18,"type":"AIR"},{"x":8,"y":18,"type":"AIR"},{"x":9,"y":18,"type":"AIR"},{"x":10,"y":18,"type":"DIRT"},{"x":11,"y":18,"type":"DIRT"},{"x":12,"y":18,"type":"DIRT"},{"x":13,"y":18,"type":"DIRT"},{"x":14,"y":18,"type":"DIRT"},{"x":15,"y":18,"type":"DIRT"},{"x":16,"y":18,"type":"DIRT"},{"x":17,"y":18,"type":"DIRT"},{"x":18,"y":18,"type":"DIRT"},{"x":19,"y":18,"type":"DIRT"},{"x":20,"y":18,"type":"DIRT"},{"x":21,"y":18,"type":"DIRT"},{"x":22,"y":18,"type":"DIRT"},{"x":23,"y":18,"type":"AIR"},{"x":24,"y":18,"type":"AIR"},{"x":25,"y":18,"type":"AIR"},{"x":26,"y":18,"type":"DIRT"},{"x":27,"y":18,"type":"DIRT"},{"x":28,"y":18,"type":"DIRT"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"AIR"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"AIR"},{"x":3,"y":19,"type":"DIRT"},{"x":4,"y":19,"type":"DIRT"},{"x":5,"y":19,"type":"AIR"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"DIRT"},{"x":8,"y":19,"type":"DIRT"},{"x":9,"y":19,"type":"AIR"},{"x":10,"y":19,"type":"AIR"},{"x":11,"y":19,"type":"DIRT"},{"x":12,"y":19,"type":"DIRT"},{"x":13,"y":19,"type":"AIR"},{"x":14,"y":19,"type":"AIR"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"DIRT"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"AIR"},{"x":19,"y":19,"type":"AIR"},{"x":20,"y":19,"type":"DIRT"},{"x":21,"y":19,"type":"DIRT"},{"x":22,"y":19,"type":"AIR"},{"x":23,"y":19,"type":"AIR"},{"x":24,"y":19,"type":"DIRT"},{"x":25,"y":19,"type":"DIRT"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"AIR"},{"x":28,"y":19,"type":"DIRT"},{"x":29,"y":19,"type":"DIRT"},{"x":30,"y":19,"type":"AIR"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"AIR"}],[{"x":0,"y":20,"type":"DIRT"},{"x":1,"y":20,"type":"AIR"},{"x":2,"y":20,"type":"AIR"},{"x":3,"y":20,"type":"AIR"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"AIR"},{"x":6,"y":20,"type":"AIR"},{"x":7,"y":20,"type":"DIRT"},{"x":8,"y":20,"type":"DIRT"},{"x":9,"y":20,"type":"AIR"},{"x":10,"y":20,"type":"AIR"},{"x":11,"y":20,"type":"AIR"},{"x":12,"y":20,"type":"AIR"},{"x":13,"y":20,"type":"AIR"},{"x":14,"y":20,"type":"AIR"},{"x":15,"y":20,"type":"AIR"},{"x":16,"y":20,"type":"DIRT"},{"x":17,"y":20,"type":"AIR"},{"x":18,"y":20,"type":"AIR"},{"x":19,"y":20,"type":"AIR"},{"x":20,"y":20,"type":"AIR"},{"x":21,"y":20,"type":"AIR"},{"x":22,"y":20,"type":"AIR"},{"x":23,"y":20,"type":"AIR"},{"x":24,"y":20,"type":"DIRT"},{"x":25,"y":20,"type":"DIRT"},{"x":26,"y":20,"type":"AIR"},{"x":27,"y":20,"type":"AIR"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"AIR"},{"x":30,"y":20,"type":"AIR"},{"x":31,"y":20,"type":"AIR"},{"x":32,"y":20,"type":"DIRT"}],[{"x":0,"y":21,"type":"AIR"},{"x":1,"y":21,"type":"AIR"},{"x":2,"y":21,"type":"AIR"},{"x":3,"y":21,"type":"AIR"},{"x":4,"y":21,"type":"AIR"},{"x":5,"y":21,"type":"AIR"},{"x":6,"y":21,"type":"AIR"},{"x":7,"y":21,"type":"AIR"},{"x":8,"y":21,"type":"DIRT"},{"x":9,"y":21,"type":"DIRT"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"AIR"},{"x":12,"y":21,"type":"AIR"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"DIRT"},{"x":15,"y":21,"type":"AIR"},{"x":16,"y":21,"type":"AIR"},{"x":17,"y":21,"type":"AIR"},{"x":18,"y":21,"type":"DIRT"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"AIR"},{"x":21,"y":21,"type":"AIR"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"DIRT"},{"x":24,"y":21,"type":"DIRT"},{"x":25,"y":21,"type":"AIR"},{"x":26,"y":21,"type":"AIR"},{"x":27,"y":21,"type":"AIR"},{"x":28,"y":21,"type":"AIR"},{"x":29,"y":21,"type":"AIR"},{"x":30,"y":21,"type":"AIR"},{"x":31,"y":21,"type":"AIR"},{"x":32,"y":21,"type":"AIR"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"AIR"},{"x":2,"y":22,"type":"DIRT"},{"x":3,"y":22,"type":"DIRT"},{"x":4,"y":22,"type":"AIR"},{"x":5,"y":22,"type":"AIR"},{"x":6,"y":22,"type":"AIR"},{"x":7,"y":22,"type":"AIR"},{"x":8,"y":22,"type":"AIR"},{"x":9,"y":22,"type":"DIRT"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"AIR"},{"x":13,"y":22,"type":"DIRT"},{"x":14,"y":22,"type":"DIRT"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"DIRT"},{"x":19,"y":22,"type":"DIRT"},{"x":20,"y":22,"type":"AIR"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"DIRT"},{"x":24,"y":22,"type":"AIR"},{"x":25,"y":22,"type":"AIR"},{"x":26,"y":22,"type":"AIR"},{"x":27,"y":22,"type":"AIR"},{"x":28,"y":22,"type":"AIR"},{"x":29,"y":22,"type":"DIRT"},{"x":30,"y":22,"type":"DIRT"},{"x":31,"y":22,"type":"AIR"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"AIR"},{"x":2,"y":23,"type":"DIRT"},{"x":3,"y":23,"type":"DIRT"},{"x":4,"y":23,"type":"AIR"},{"x":5,"y":23,"type":"AIR"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"AIR"},{"x":8,"y":23,"type":"AIR"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"AIR"},{"x":13,"y":23,"type":"DIRT"},{"x":14,"y":23,"type":"DIRT"},{"x":15,"y":23,"type":"AIR"},{"x":16,"y":23,"type":"DIRT"},{"x":17,"y":23,"type":"AIR"},{"x":18,"y":23,"type":"DIRT"},{"x":19,"y":23,"type":"DIRT"},{"x":20,"y":23,"type":"AIR"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"AIR"},{"x":25,"y":23,"type":"AIR"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"AIR"},{"x":28,"y":23,"type":"AIR"},{"x":29,"y":23,"type":"DIRT"},{"x":30,"y":23,"type":"DIRT"},{"x":31,"y":23,"type":"AIR"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"AIR"},{"x":2,"y":24,"type":"DIRT"},{"x":3,"y":24,"type":"DIRT"},{"x":4,"y":24,"type":"AIR"},{"x":5,"y":24,"type":"AIR"},{"x":6,"y":24,"type":"DIRT"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"AIR"},{"x":9,"y":24,"type":"AIR"},{"x":10,"y":24,"type":"AIR"},{"x":11,"y":24,"type":"AIR"},{"x":12,"y":24,"type":"AIR"},{"x":13,"y":24,"type":"AIR"},{"x":14,"y":24,"type":"AIR"},{"x":15,"y":24,"type":"AIR"},{"x":16,"y":24,"type":"DIRT"},{"x":17,"y":24,"type":"AIR"},{"x":18,"y":24,"type":"AIR"},{"x":19,"y":24,"type":"AIR"},{"x":20,"y":24,"type":"AIR"},{"x":21,"y":24,"type":"AIR"},{"x":22,"y":24,"type":"AIR"},{"x":23,"y":24,"type":"AIR"},{"x":24,"y":24,"type":"AIR"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"DIRT"},{"x":27,"y":24,"type":"AIR"},{"x":28,"y":24,"type":"AIR"},{"x":29,"y":24,"type":"DIRT"},{"x":30,"y":24,"type":"DIRT"},{"x":31,"y":24,"type":"AIR"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"AIR"},{"x":3,"y":25,"type":"AIR"},{"x":4,"y":25,"type":"DIRT"},{"x":5,"y":25,"type":"AIR"},{"x":6,"y":25,"type":"AIR"},{"x":7,"y":25,"type":"AIR"},{"x":8,"y":25,"type":"AIR"},{"x":9,"y":25,"type":"AIR"},{"x":10,"y":25,"type":"AIR"},{"x":11,"y":25,"type":"AIR"},{"x":12,"y":25,"type":"AIR"},{"x":13,"y":25,"type":"AIR"},{"x":14,"y":25,"type":"AIR"},{"x":15,"y":25,"type":"AIR"},{"x":16,"y":25,"type":"DIRT"},{"x":17,"y":25,"type":"AIR"},{"x":18,"y":25,"type":"AIR"},{"x":19,"y":25,"type":"AIR"},{"x":20,"y":25,"type":"AIR"},{"x":21,"y":25,"type":"AIR"},{"x":22,"y":25,"type":"AIR"},{"x":23,"y":25,"type":"AIR"},{"x":24,"y":25,"type":"AIR"},{"x":25,"y":25,"type":"AIR"},{"x":26,"y":25,"type":"AIR"},{"x":27,"y":25,"type":"AIR"},{"x":28,"y":25,"type":"DIRT"},{"x":29,"y":25,"type":"AIR"},{"x":30,"y":25,"type":"AIR"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"AIR"},{"x":5,"y":26,"type":"AIR"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"AIR"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"DIRT"},{"x":14,"y":26,"type":"DIRT"},{"x":15,"y":26,"type":"AIR"},{"x":16,"y":26,"type":"DIRT"},{"x":17,"y":26,"type":"AIR"},{"x":18,"y":26,"type":"DIRT"},{"x":19,"y":26,"type":"DIRT"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"AIR"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"AIR"},{"x":28,"y":26,"type":"AIR"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"AIR"},{"x":5,"y":27,"type":"AIR"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"DIRT"},{"x":14,"y":27,"type":"DIRT"},{"x":15,"y":27,"type":"AIR"},{"x":16,"y":27,"type":"AIR"},{"x":17,"y":27,"type":"AIR"},{"x":18,"y":27,"type":"DIRT"},{"x":19,"y":27,"type":"DIRT"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"AIR"},{"x":28,"y":27,"type":"AIR"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"DIRT"},{"x":5,"y":28,"type":"DIRT"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":8,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"AIR"},{"x":12,"y":28,"type":"AIR"},{"x":13,"y":28,"type":"DIRT"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"AIR"},{"x":16,"y":28,"type":"AIR"},{"x":17,"y":28,"type":"AIR"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"DIRT"},{"x":20,"y":28,"type":"AIR"},{"x":21,"y":28,"type":"AIR"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":24,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"DIRT"},{"x":28,"y":28,"type":"DIRT"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"AIR"},{"x":12,"y":29,"type":"DIRT"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"DIRT"},{"x":15,"y":29,"type":"AIR"},{"x":16,"y":29,"type":"DIRT"},{"x":17,"y":29,"type":"AIR"},{"x":18,"y":29,"type":"DIRT"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"DIRT"},{"x":21,"y":29,"type":"AIR"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"DIRT"},{"x":12,"y":30,"type":"DIRT"},{"x":13,"y":30,"type":"DIRT"},{"x":14,"y":30,"type":"AIR"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"DIRT"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"AIR"},{"x":19,"y":30,"type":"DIRT"},{"x":20,"y":30,"type":"DIRT"},{"x":21,"y":30,"type":"DIRT"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"AIR"},{"x":9,"y":31,"type":"AIR"},{"x":10,"y":31,"type":"AIR"},{"x":11,"y":31,"type":"AIR"},{"x":12,"y":31,"type":"DIRT"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"DIRT"},{"x":16,"y":31,"type":"DIRT"},{"x":17,"y":31,"type":"DIRT"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"DIRT"},{"x":21,"y":31,"type":"AIR"},{"x":22,"y":31,"type":"AIR"},{"x":23,"y":31,"type":"AIR"},{"x":24,"y":31,"type":"AIR"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"AIR"},{"x":12,"y":32,"type":"DIRT"},{"x":13,"y":32,"type":"DIRT"},{"x":14,"y":32,"type":"DIRT"},{"x":15,"y":32,"type":"DIRT"},{"x":16,"y":32,"type":"DIRT"},{"x":17,"y":32,"type":"DIRT"},{"x":18,"y":32,"type":"DIRT"},{"x":19,"y":32,"type":"DIRT"},{"x":20,"y":32,"type":"DIRT"},{"x":21,"y":32,"type":"AIR"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/2019-worms/tests/replays/2019.08.19.21.31.16/B-log.csv b/2019-worms/tests/replays/2019.08.19.21.31.16/B-log.csv new file mode 100644 index 0000000..57ec18e --- /dev/null +++ b/2019-worms/tests/replays/2019.08.19.21.31.16/B-log.csv @@ -0,0 +1,274 @@ +Round,LastCommandType,LastCommand,ActiveWorm,Score,Health,Worm1 Health,Worm1 x,Worm1 y,Worm2 Health,Worm2 x,Worm2 y,Worm3 Health,Worm3 x,Worm3 y +1,null,"null",1,116,350,150,8,28,100,8,4,100,31,16 +2,move,"move 9 27",1,121,350,150,9,27,100,8,4,100,31,16 +3,move,"move 9 5",2,126,350,150,9,27,100,9,5,100,31,16 +4,move,"move 30 17",3,131,350,150,9,27,100,9,5,100,30,17 +5,dig,"dig 10 26",1,138,350,150,9,27,100,9,5,100,30,17 +6,dig,"dig 10 6",2,145,350,150,9,27,100,9,5,100,30,17 +7,dig,"dig 29 17",3,152,350,150,9,27,100,9,5,100,30,17 +8,move,"move 10 26",1,157,350,150,10,26,100,9,5,100,30,17 +9,move,"move 10 6",2,162,350,150,10,26,100,10,6,100,30,17 +10,move,"move 29 17",3,167,350,150,10,26,100,10,6,100,29,17 +11,move,"move 11 25",1,172,350,150,11,25,100,10,6,100,29,17 +12,move,"move 11 7",2,177,350,150,11,25,100,11,7,100,29,17 +13,dig,"dig 28 17",3,184,350,150,11,25,100,11,7,100,29,17 +14,move,"move 12 24",1,189,350,150,12,24,100,11,7,100,29,17 +15,move,"move 12 8",2,194,350,150,12,24,100,12,8,100,29,17 +16,move,"move 28 17",3,199,350,150,12,24,100,12,8,100,28,17 +17,dig,"dig 13 23",1,206,350,150,12,24,100,12,8,100,28,17 +18,dig,"dig 13 9",2,213,350,150,12,24,100,12,8,100,28,17 +19,dig,"dig 27 17",3,220,350,150,12,24,100,12,8,100,28,17 +20,move,"move 13 23",1,225,350,150,13,23,100,12,8,100,28,17 +21,move,"move 13 9",2,230,350,150,13,23,100,13,9,100,28,17 +22,move,"move 27 17",3,235,350,150,13,23,100,13,9,100,27,17 +23,dig,"dig 14 22",1,242,350,150,13,23,100,13,9,100,27,17 +24,move,"move 14 10",2,247,350,150,13,23,100,14,10,100,27,17 +25,dig,"dig 26 17",3,254,350,150,13,23,100,14,10,100,27,17 +26,move,"move 14 22",1,259,350,150,14,22,100,14,10,100,27,17 +27,move,"move 14 11",2,264,350,150,14,22,100,14,11,100,27,17 +28,move,"move 26 17",3,269,350,150,14,22,100,14,11,100,26,17 +29,move,"move 15 21",1,274,350,150,15,21,100,14,11,100,26,17 +30,dig,"dig 14 12",2,281,350,150,15,21,100,14,11,100,26,17 +31,move,"move 25 17",3,286,350,150,15,21,100,14,11,100,25,17 +32,dig,"dig 16 20",1,293,350,150,15,21,100,14,11,100,25,17 +33,move,"move 14 12",2,298,350,150,15,21,100,14,12,100,25,17 +34,move,"move 24 17",3,303,350,150,15,21,100,14,12,100,24,17 +35,move,"move 16 20",1,308,350,150,16,20,100,14,12,100,24,17 +36,dig,"dig 14 13",2,315,350,150,16,20,100,14,12,100,24,17 +37,move,"move 23 17",3,320,350,150,16,20,100,14,12,100,23,17 +38,move,"move 17 19",1,325,350,150,17,19,100,14,12,100,23,17 +39,move,"move 14 13",2,330,350,150,17,19,100,14,13,100,23,17 +40,move,"move 22 17",3,335,350,150,17,19,100,14,13,100,22,17 +41,dig,"dig 18 18",1,342,350,150,17,19,100,14,13,100,22,17 +42,move,"move 14 14",2,347,350,150,17,19,100,14,14,100,22,17 +43,dig,"dig 21 17",3,354,350,150,17,19,100,14,14,100,22,17 +44,move,"move 18 18",1,359,350,150,18,18,100,14,14,100,22,17 +45,move,"move 14 15",2,368,360,150,18,18,110,14,15,100,22,17 +46,move,"move 21 17",3,373,360,150,18,18,110,14,15,100,21,17 +47,move,"move 18 17",1,381,370,160,18,17,110,14,15,100,21,17 +48,move,"move 15 14",2,386,370,160,18,17,110,15,14,100,21,17 +49,move,"move 22 16",3,391,370,160,18,17,110,15,14,100,22,16 +50,move,"move 19 16",1,396,370,160,19,16,110,15,14,100,22,16 +51,dig,"dig 16 13",2,403,370,160,19,16,110,15,14,100,22,16 +52,dig,"dig 22 15",3,410,370,160,19,16,110,15,14,100,22,16 +53,move,"move 20 15",1,415,370,160,20,15,110,15,14,100,22,16 +54,move,"move 16 13",2,420,370,160,20,15,110,16,13,100,22,16 +55,dig,"dig 23 15",3,427,370,160,20,15,110,16,13,100,22,16 +56,move,"move 21 14",1,432,370,160,21,14,110,16,13,100,22,16 +57,dig,"dig 17 12",2,439,370,160,21,14,110,16,13,100,22,16 +58,move,"move 22 15",3,444,370,160,21,14,110,16,13,100,22,15 +59,move,"move 22 13",1,449,370,160,22,13,110,16,13,100,22,15 +60,move,"move 17 12",2,454,370,160,22,13,110,17,12,100,22,15 +61,dig,"dig 23 14",3,461,370,160,22,13,110,17,12,100,22,15 +62,dig,"dig 23 12",1,468,370,160,22,13,110,17,12,100,22,15 +63,move,"move 18 11",2,473,370,160,22,13,110,18,11,100,22,15 +64,dig,"dig 22 14",3,480,370,160,22,13,110,18,11,100,22,15 +65,move,"move 22 12",1,485,370,160,22,12,110,18,11,100,22,15 +66,dig,"dig 19 10",2,492,370,160,22,12,110,18,11,100,22,15 +67,move,"move 23 14",3,497,370,160,22,12,110,18,11,100,23,14 +68,move,"move 23 11",1,502,370,160,23,11,110,18,11,100,23,14 +69,move,"move 19 10",2,507,370,160,23,11,110,19,10,100,23,14 +70,dig,"dig 24 13",3,514,370,160,23,11,110,19,10,100,23,14 +71,move,"move 24 10",1,519,370,160,24,10,110,19,10,100,23,14 +72,dig,"dig 20 9",2,526,370,160,24,10,110,19,10,100,23,14 +73,dig,"dig 23 13",3,533,370,160,24,10,110,19,10,100,23,14 +74,move,"move 23 9",1,538,370,160,23,9,110,19,10,100,23,14 +75,move,"move 20 9",2,543,370,160,23,9,110,20,9,100,23,14 +76,move,"move 22 13",3,548,370,160,23,9,110,20,9,100,22,13 +77,move,"move 22 8",1,553,370,160,22,8,110,20,9,100,22,13 +78,move,"move 21 8",2,558,370,160,22,8,110,21,8,100,22,13 +79,move,"move 22 12",3,563,370,160,22,8,110,21,8,100,22,12 +80,move,"move 22 7",1,568,370,160,22,7,110,21,8,100,22,12 +81,move,"move 20 7",2,573,370,160,22,7,110,20,7,100,22,12 +82,move,"move 22 11",3,578,370,160,22,7,110,20,7,100,22,11 +83,dig,"dig 22 6",1,585,370,160,22,7,110,20,7,100,22,11 +84,dig,"dig 21 6",2,592,370,160,22,7,110,20,7,100,22,11 +85,dig,"dig 21 10",3,599,370,160,22,7,110,20,7,100,22,11 +86,move,"move 21 6",1,604,370,160,21,6,110,20,7,100,22,11 +87,dig,"dig 19 8",2,611,370,160,21,6,110,20,7,100,22,11 +88,move,"move 21 10",3,616,370,160,21,6,110,20,7,100,21,10 +89,dig,"dig 21 5",1,623,370,160,21,6,110,20,7,100,21,10 +90,move,"move 21 8",2,628,370,160,21,6,110,21,8,100,21,10 +91,move,"move 21 9",3,633,370,160,21,6,110,21,8,100,21,9 +92,move,"move 21 5",1,638,370,160,21,5,110,21,8,100,21,9 +93,move,"move 21 7",2,643,370,160,21,5,110,21,7,100,21,9 +94,move,"move 21 8",3,648,370,160,21,5,110,21,7,100,21,8 +95,move,"move 21 4",1,653,370,160,21,4,110,21,7,100,21,8 +96,move,"move 21 6",2,658,370,160,21,4,110,21,6,100,21,8 +97,move,"move 21 7",3,663,370,160,21,4,110,21,6,100,21,7 +98,dig,"dig 21 3",1,670,370,160,21,4,110,21,6,100,21,7 +99,banana,"banana 21 1",2,735,362,152,21,4,110,21,6,100,21,7 +100,shoot,"shoot N",1,749,354,144,21,4,110,21,6,100,21,7 +101,banana,"banana 21 1",2,786,346,136,21,4,110,21,6,100,21,7 +102,shoot,"shoot N",1,799,338,128,21,4,110,21,6,100,21,7 +103,banana,"banana 21 1",2,837,330,120,21,4,110,21,6,100,21,7 +104,shoot,"shoot N",1,853,330,120,21,4,110,21,6,100,21,7 +105,shoot,"shoot N",1,869,330,120,21,4,110,21,6,100,21,7 +106,shoot,"shoot N",1,871,330,120,21,4,110,21,6,100,21,7 +107,dig,"dig 22 5",2,878,330,120,21,4,110,21,6,100,21,7 +108,move,"move 22 6",3,883,330,120,21,4,110,21,6,100,22,6 +109,move,"move 22 3",1,885,322,112,22,3,110,21,6,100,22,6 +110,move,"move 22 5",2,890,322,112,22,3,110,22,5,100,22,6 +111,snowball,"snowball 22 2",3,890,322,112,22,3,110,22,5,100,22,6 +112,shoot,"shoot N",1,890,322,112,22,3,110,22,5,100,22,6 +113,move,"move 22 4",2,895,322,112,22,3,110,22,4,100,22,6 +114,move,"move 22 5",3,900,322,112,22,3,110,22,4,100,22,5 +115,shoot,"shoot N",1,900,322,112,22,3,110,22,4,100,22,5 +116,invalid,"invalid",2,896,322,112,22,3,110,22,4,100,22,5 +117,snowball,"snowball 22 2",3,896,322,112,22,3,110,22,4,100,22,5 +118,shoot,"shoot N",1,896,322,112,22,3,110,22,4,100,22,5 +119,move,"move 23 4",2,901,322,112,22,3,110,23,4,100,22,5 +120,move,"move 22 4",3,906,322,112,22,3,110,23,4,100,22,4 +121,shoot,"shoot N",1,906,322,112,22,3,110,23,4,100,22,4 +122,invalid,"invalid",2,902,322,112,22,3,110,23,4,100,22,4 +123,snowball,"snowball 22 2",3,902,322,112,22,3,110,23,4,100,22,4 +124,shoot,"shoot N",1,902,322,112,22,3,110,23,4,100,22,4 +125,move,"move 23 5",2,907,322,112,22,3,110,23,5,100,22,4 +126,move,"move 21 4",3,912,322,112,22,3,110,23,5,100,21,4 +127,shoot,"shoot N",1,912,322,112,22,3,110,23,5,100,21,4 +128,move,"move 22 4",2,916,319,109,22,3,110,22,4,100,21,4 +129,move,"move 20 4",3,920,316,106,22,3,110,22,4,100,20,4 +130,shoot,"shoot N",1,972,305,95,22,3,110,22,4,100,20,4 +131,move,"move 22 5",2,976,302,92,22,3,110,22,5,100,20,4 +132,move,"move 21 5",3,980,299,89,22,3,110,22,5,100,21,5 +133,move,"move 21 4",1,984,296,86,21,4,110,22,5,100,21,5 +134,move,"move 21 6",2,989,296,86,21,4,110,21,6,100,21,5 +135,move,"move 22 4",3,994,296,86,21,4,110,21,6,100,22,4 +136,move,"move 21 5",1,999,296,86,21,5,110,21,6,100,22,4 +137,move,"move 21 7",2,1004,296,86,21,5,110,21,7,100,22,4 +138,move,"move 23 5",3,1009,296,86,21,5,110,21,7,100,23,5 +139,move,"move 20 6",1,1014,296,86,20,6,110,21,7,100,23,5 +140,move,"move 20 8",2,1019,296,86,20,6,110,20,8,100,23,5 +141,move,"move 22 6",3,1024,296,86,20,6,110,20,8,100,22,6 +142,move,"move 21 7",1,1029,296,86,21,7,110,20,8,100,22,6 +143,move,"move 21 9",2,1034,296,86,21,7,110,21,9,100,22,6 +144,move,"move 21 5",3,1039,296,86,21,7,110,21,9,100,21,5 +145,move,"move 21 8",1,1044,296,86,21,8,110,21,9,100,21,5 +146,dig,"dig 20 10",2,1051,296,86,21,8,110,21,9,100,21,5 +147,move,"move 20 6",3,1056,296,86,21,8,110,21,9,100,20,6 +148,move,"move 20 9",1,1061,296,86,20,9,110,21,9,100,20,6 +149,move,"move 20 10",2,1066,296,86,20,9,110,20,10,100,20,6 +150,dig,"dig 19 7",3,1073,296,86,20,9,110,20,10,100,20,6 +151,move,"move 19 10",1,1078,296,86,19,10,110,20,10,100,20,6 +152,dig,"dig 19 11",2,1085,296,86,19,10,110,20,10,100,20,6 +153,move,"move 19 7",3,1090,296,86,19,10,110,20,10,100,19,7 +154,move,"move 20 11",1,1095,296,86,20,11,110,20,10,100,19,7 +155,move,"move 21 11",2,1100,296,86,20,11,110,21,11,100,19,7 +156,move,"move 20 8",3,1105,296,86,20,11,110,21,11,100,20,8 +157,move,"move 19 12",1,1110,296,86,19,12,110,21,11,100,20,8 +158,move,"move 20 12",2,1115,296,86,19,12,110,20,12,100,20,8 +159,dig,"dig 19 9",3,1122,296,86,19,12,110,20,12,100,20,8 +160,move,"move 19 13",1,1127,296,86,19,13,110,20,12,100,20,8 +161,move,"move 20 11",2,1132,296,86,19,13,110,20,11,100,20,8 +162,move,"move 19 9",3,1137,296,86,19,13,110,20,11,100,19,9 +163,move,"move 20 14",1,1142,296,86,20,14,110,20,11,100,19,9 +164,move,"move 20 12",2,1147,296,86,20,14,110,20,12,100,19,9 +165,move,"move 20 10",3,1152,296,86,20,14,110,20,12,100,20,10 +166,dig,"dig 21 15",1,1159,296,86,20,14,110,20,12,100,20,10 +167,move,"move 21 13",2,1162,289,79,20,14,110,21,13,100,20,10 +168,move,"move 20 11",3,1167,289,79,20,14,110,21,13,100,20,11 +169,move,"move 21 15",1,1172,289,79,21,15,110,21,13,100,20,11 +170,move,"move 21 14",2,1177,289,79,21,15,110,21,14,100,20,11 +171,move,"move 21 12",3,1171,256,59,21,15,97,21,14,100,21,12 +172,move,"move 21 16",1,1176,256,59,21,16,97,21,14,100,21,12 +173,move,"move 21 15",2,1170,223,39,21,16,84,21,15,100,21,12 +174,move,"move 21 13",3,1175,223,39,21,16,84,21,15,100,21,13 +175,move,"move 21 17",1,1180,223,39,21,17,84,21,15,100,21,13 +176,move,"move 21 16",2,1185,223,39,21,17,84,21,16,100,21,13 +177,move,"move 21 14",3,1190,223,39,21,17,84,21,16,100,21,14 +178,move,"move 21 18",1,1195,223,39,21,18,84,21,16,100,21,14 +179,move,"move 21 17",2,1200,223,39,21,18,84,21,17,100,21,14 +180,move,"move 21 15",3,1205,223,39,21,18,84,21,17,100,21,15 +181,dig,"dig 20 19",1,1212,223,39,21,18,84,21,17,100,21,15 +182,move,"move 20 18",2,1217,223,39,21,18,84,20,18,100,21,15 +183,move,"move 20 16",3,1219,215,39,21,18,76,20,18,100,20,16 +184,move,"move 20 19",1,1224,215,39,20,19,76,20,18,100,20,16 +185,dig,"dig 21 19",2,1229,207,31,20,19,76,20,18,100,20,16 +186,move,"move 20 17",3,1234,207,31,20,19,76,20,18,100,20,17 +187,shoot,"shoot S",1,1236,207,31,20,19,76,20,18,100,20,17 +188,move,"move 21 19",2,1241,207,31,20,19,76,21,19,100,20,17 +189,move,"move 21 18",3,1243,199,31,20,19,68,21,19,100,21,18 +190,move,"move 21 20",1,1248,199,31,21,20,68,21,19,100,21,18 +191,move,"move 20 18",2,1250,191,23,21,20,68,20,18,100,21,18 +192,move,"move 21 19",3,1255,191,23,21,20,68,20,18,100,21,19 +193,shoot,"shoot S",1,1257,191,23,21,20,68,20,18,100,21,19 +194,invalid,"invalid",2,1253,191,23,21,20,68,20,18,100,21,19 +195,shoot,"shoot SE",3,1255,191,23,21,20,68,20,18,100,21,19 +196,move,"move 22 19",1,1260,191,23,22,19,68,20,18,100,21,19 +197,move,"move 20 17",2,1263,183,15,22,19,68,20,17,100,21,19 +198,move,"move 22 20",3,1268,183,15,22,19,68,20,17,100,22,20 +199,shoot,"shoot E",1,1270,183,15,22,19,68,20,17,100,22,20 +200,move,"move 21 18",2,1275,183,15,22,19,68,21,18,100,22,20 +201,move,"move 23 19",3,1280,183,15,22,19,68,21,18,100,23,19 +202,move,"move 23 18",1,1285,183,15,23,18,68,21,18,100,23,19 +203,move,"move 22 17",2,1287,175,7,23,18,68,22,17,100,23,19 +204,move,"move 22 19",3,1292,175,7,23,18,68,22,17,100,22,19 +205,shoot,"shoot N",1,1294,175,7,23,18,68,22,17,100,22,19 +206,move,"move 23 16",2,1299,175,7,23,18,68,23,16,100,22,19 +207,move,"move 23 20",3,1301,167,7,23,18,60,23,16,100,23,20 +208,move,"move 24 17",1,1306,167,7,24,17,60,23,16,100,23,20 +209,shoot,"shoot E",2,1308,167,7,24,17,60,23,16,100,23,20 +210,dig,"dig 24 19",3,1315,167,7,24,17,60,23,16,100,23,20 +211,move,"move 23 17",1,1320,167,7,23,17,60,23,16,100,23,20 +212,move,"move 22 15",2,1325,167,7,23,17,60,22,15,100,23,20 +213,move,"move 22 19",3,1328,159,7,23,17,52,22,15,100,22,19 +214,move,"move 22 16",1,1333,159,7,22,16,52,22,15,100,22,19 +215,shoot,"shoot N",2,1335,159,7,22,16,52,22,15,100,22,19 +216,move,"move 21 18",3,1340,159,7,22,16,52,22,15,100,21,18 +217,move,"move 21 15",1,1345,159,7,21,15,52,22,15,100,21,18 +218,move,"move 21 14",2,1350,159,7,21,15,52,21,14,100,21,18 +219,move,"move 21 17",3,1352,151,7,21,15,44,21,14,100,21,17 +220,move,"move 20 14",1,1357,151,7,20,14,44,21,14,100,21,17 +221,shoot,"shoot N",2,1359,151,7,20,14,44,21,14,100,21,17 +222,move,"move 20 16",3,1364,151,7,20,14,44,21,14,100,20,16 +223,shoot,"shoot NE",1,1366,151,7,20,14,44,21,14,100,20,16 +224,move,"move 22 13",2,1371,151,7,20,14,44,22,13,100,20,16 +225,move,"move 21 15",3,1373,143,7,20,14,36,22,13,100,21,15 +226,move,"move 21 13",1,1378,143,7,21,13,36,22,13,100,21,15 +227,shoot,"shoot N",2,1380,143,7,21,13,36,22,13,100,21,15 +228,move,"move 21 14",3,1385,143,7,21,13,36,22,13,100,21,14 +229,shoot,"shoot N",1,1387,143,7,21,13,36,22,13,100,21,14 +230,move,"move 21 12",2,1392,143,7,21,13,36,21,12,100,21,14 +231,move,"move 20 13",3,1397,143,7,21,13,36,21,12,100,20,13 +232,move,"move 20 12",1,1402,143,7,20,12,36,21,12,100,20,13 +233,move,"move 20 11",2,1407,143,7,20,12,36,20,11,100,20,13 +234,move,"move 19 12",3,1412,143,7,20,12,36,20,11,100,19,12 +235,move,"move 19 11",1,1417,143,7,19,11,36,20,11,100,19,12 +236,move,"move 19 10",2,1422,143,7,19,11,36,19,10,100,19,12 +237,move,"move 18 11",3,1427,143,7,19,11,36,19,10,100,18,11 +238,move,"move 18 10",1,1432,143,7,18,10,36,19,10,100,18,11 +239,move,"move 20 10",2,1435,135,7,18,10,36,20,10,92,18,11 +240,shoot,"shoot NW",3,1450,132,7,18,10,33,20,10,92,18,11 +241,shoot,"shoot W",1,1462,121,7,18,10,30,20,10,84,18,11 +242,move,"move 19 10",2,1466,118,7,18,10,27,19,10,84,18,11 +243,shoot,"shoot NW",3,1479,110,7,18,10,27,19,10,76,18,11 +244,shoot,"shoot W",1,1495,110,7,18,10,27,19,10,76,18,11 +245,invalid,"invalid",2,1489,102,7,18,10,27,19,10,68,18,11 +246,shoot,"shoot NW",3,1505,102,7,18,10,27,19,10,68,18,11 +247,shoot,"shoot W",1,1517,91,7,18,10,24,19,10,60,18,11 +248,nothing,"nothing "Player chose to do nothing"",2,1516,88,7,18,10,21,19,10,60,18,11 +249,shoot,"shoot NW",3,1528,77,7,18,10,18,19,10,52,18,11 +250,shoot,"shoot W",1,1543,74,7,18,10,15,19,10,52,18,11 +251,nothing,"nothing "Player chose to do nothing"",2,1540,63,7,18,10,12,19,10,44,18,11 +252,shoot,"shoot NW",3,1555,60,7,18,10,9,19,10,44,18,11 +253,shoot,"shoot W",1,1566,46,4,18,10,6,19,10,36,18,11 +254,nothing,"nothing "Player chose to do nothing"",2,1564,40,1,18,10,3,19,10,36,18,11 +255,shoot,"shoot NW",3,1565,36,-2,18,10,0,19,10,36,18,11 +256,move,"move 17 10",3,1570,36,-2,18,10,0,19,10,36,17,10 +257,shoot,"shoot W",3,1585,33,-2,18,10,0,19,10,33,17,10 +258,shoot,"shoot W",3,1600,30,-2,18,10,0,19,10,30,17,10 +259,shoot,"shoot W",3,1652,19,-2,18,10,0,19,10,19,17,10 +260,dig,"dig 16 11",3,1658,16,-2,18,10,0,19,10,16,17,10 +261,move,"move 16 11",3,1662,13,-2,18,10,0,19,10,13,16,11 +262,dig,"dig 15 12",3,1669,13,-2,18,10,0,19,10,13,16,11 +263,move,"move 15 12",3,1674,13,-2,18,10,0,19,10,13,15,12 +264,move,"move 14 13",3,1679,13,-2,18,10,0,19,10,13,14,13 +265,move,"move 13 14",3,1684,13,-2,18,10,0,19,10,13,13,14 +266,move,"move 14 15",3,1689,13,-2,18,10,0,19,10,13,14,15 +267,move,"move 15 16",3,1694,13,-2,18,10,0,19,10,13,15,16 +268,dig,"dig 16 17",3,1701,13,-2,18,10,0,19,10,13,15,16 +269,move,"move 15 17",3,1706,13,-2,18,10,0,19,10,13,15,17 +270,dig,"dig 15 18",3,1713,13,-2,18,10,0,19,10,13,15,17 +271,shoot,"shoot SE",3,1715,13,-2,18,10,0,19,10,13,15,17 +272,shoot,"shoot S",3,1717,13,-2,18,10,0,19,10,13,15,17 +273,shoot,"shoot W",3,1730,5,-2,18,10,0,19,10,5,15,17 diff --git a/2019-worms/tests/replays/2019.08.19.21.57.04/A-init.json b/2019-worms/tests/replays/2019.08.19.21.57.04/A-init.json new file mode 100644 index 0000000..b8ed313 --- /dev/null +++ b/2019-worms/tests/replays/2019.08.19.21.57.04/A-init.json @@ -0,0 +1 @@ +{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":1,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":2,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"DIRT"},{"x":13,"y":0,"type":"DIRT"},{"x":14,"y":0,"type":"AIR"},{"x":15,"y":0,"type":"AIR"},{"x":16,"y":0,"type":"DIRT"},{"x":17,"y":0,"type":"AIR"},{"x":18,"y":0,"type":"AIR"},{"x":19,"y":0,"type":"DIRT"},{"x":20,"y":0,"type":"DIRT"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"DIRT"},{"x":10,"y":1,"type":"AIR"},{"x":11,"y":1,"type":"DIRT"},{"x":12,"y":1,"type":"DIRT"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"AIR"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"DIRT"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"AIR"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"DIRT"},{"x":21,"y":1,"type":"DIRT"},{"x":22,"y":1,"type":"AIR"},{"x":23,"y":1,"type":"DIRT"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"DIRT"},{"x":12,"y":2,"type":"DIRT"},{"x":13,"y":2,"type":"DIRT"},{"x":14,"y":2,"type":"DIRT"},{"x":15,"y":2,"type":"AIR"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"AIR"},{"x":18,"y":2,"type":"DIRT"},{"x":19,"y":2,"type":"DIRT"},{"x":20,"y":2,"type":"DIRT"},{"x":21,"y":2,"type":"DIRT"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"DIRT"},{"x":12,"y":3,"type":"DIRT"},{"x":13,"y":3,"type":"DIRT"},{"x":14,"y":3,"type":"AIR"},{"x":15,"y":3,"type":"AIR"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"AIR"},{"x":18,"y":3,"type":"AIR"},{"x":19,"y":3,"type":"DIRT"},{"x":20,"y":3,"type":"DIRT"},{"x":21,"y":3,"type":"DIRT"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"DIRT"},{"x":5,"y":4,"type":"DIRT"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"DIRT"},{"x":12,"y":4,"type":"AIR"},{"x":13,"y":4,"type":"AIR"},{"x":14,"y":4,"type":"AIR"},{"x":15,"y":4,"type":"AIR"},{"x":16,"y":4,"type":"AIR"},{"x":17,"y":4,"type":"AIR"},{"x":18,"y":4,"type":"AIR"},{"x":19,"y":4,"type":"AIR"},{"x":20,"y":4,"type":"AIR"},{"x":21,"y":4,"type":"DIRT"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"DIRT"},{"x":28,"y":4,"type":"DIRT"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"DIRT"},{"x":5,"y":5,"type":"DIRT"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"DIRT"},{"x":13,"y":5,"type":"DIRT"},{"x":14,"y":5,"type":"AIR"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"AIR"},{"x":19,"y":5,"type":"DIRT"},{"x":20,"y":5,"type":"DIRT"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"DIRT"},{"x":28,"y":5,"type":"DIRT"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"AIR"},{"x":4,"y":6,"type":"DIRT"},{"x":5,"y":6,"type":"DIRT"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"AIR"},{"x":12,"y":6,"type":"AIR"},{"x":13,"y":6,"type":"DIRT"},{"x":14,"y":6,"type":"DIRT"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"DIRT"},{"x":19,"y":6,"type":"DIRT"},{"x":20,"y":6,"type":"AIR"},{"x":21,"y":6,"type":"AIR"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"DIRT"},{"x":28,"y":6,"type":"DIRT"},{"x":29,"y":6,"type":"AIR"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"DIRT"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"DIRT"},{"x":5,"y":7,"type":"DIRT"},{"x":6,"y":7,"type":"DIRT"},{"x":7,"y":7,"type":"AIR"},{"x":8,"y":7,"type":"AIR"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"DIRT"},{"x":12,"y":7,"type":"DIRT"},{"x":13,"y":7,"type":"DIRT"},{"x":14,"y":7,"type":"DIRT"},{"x":15,"y":7,"type":"DIRT"},{"x":16,"y":7,"type":"AIR"},{"x":17,"y":7,"type":"DIRT"},{"x":18,"y":7,"type":"DIRT"},{"x":19,"y":7,"type":"DIRT"},{"x":20,"y":7,"type":"DIRT"},{"x":21,"y":7,"type":"DIRT"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"AIR"},{"x":25,"y":7,"type":"AIR"},{"x":26,"y":7,"type":"DIRT"},{"x":27,"y":7,"type":"DIRT"},{"x":28,"y":7,"type":"DIRT"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"DIRT"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"DIRT"},{"x":2,"y":8,"type":"DIRT"},{"x":3,"y":8,"type":"AIR"},{"x":4,"y":8,"type":"AIR"},{"x":5,"y":8,"type":"DIRT"},{"x":6,"y":8,"type":"DIRT"},{"x":7,"y":8,"type":"AIR"},{"x":8,"y":8,"type":"AIR"},{"x":9,"y":8,"type":"AIR"},{"x":10,"y":8,"type":"AIR"},{"x":11,"y":8,"type":"DIRT"},{"x":12,"y":8,"type":"DIRT"},{"x":13,"y":8,"type":"AIR"},{"x":14,"y":8,"type":"AIR"},{"x":15,"y":8,"type":"AIR"},{"x":16,"y":8,"type":"DIRT"},{"x":17,"y":8,"type":"AIR"},{"x":18,"y":8,"type":"AIR"},{"x":19,"y":8,"type":"AIR"},{"x":20,"y":8,"type":"DIRT"},{"x":21,"y":8,"type":"DIRT"},{"x":22,"y":8,"type":"AIR"},{"x":23,"y":8,"type":"AIR"},{"x":24,"y":8,"type":"AIR"},{"x":25,"y":8,"type":"AIR"},{"x":26,"y":8,"type":"DIRT"},{"x":27,"y":8,"type":"DIRT"},{"x":28,"y":8,"type":"AIR"},{"x":29,"y":8,"type":"AIR"},{"x":30,"y":8,"type":"DIRT"},{"x":31,"y":8,"type":"DIRT"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"DIRT"},{"x":2,"y":9,"type":"DIRT"},{"x":3,"y":9,"type":"AIR"},{"x":4,"y":9,"type":"AIR"},{"x":5,"y":9,"type":"DIRT"},{"x":6,"y":9,"type":"DIRT"},{"x":7,"y":9,"type":"AIR"},{"x":8,"y":9,"type":"AIR"},{"x":9,"y":9,"type":"AIR"},{"x":10,"y":9,"type":"DIRT"},{"x":11,"y":9,"type":"DIRT"},{"x":12,"y":9,"type":"AIR"},{"x":13,"y":9,"type":"AIR"},{"x":14,"y":9,"type":"DIRT"},{"x":15,"y":9,"type":"AIR"},{"x":16,"y":9,"type":"DIRT"},{"x":17,"y":9,"type":"AIR"},{"x":18,"y":9,"type":"DIRT"},{"x":19,"y":9,"type":"AIR"},{"x":20,"y":9,"type":"AIR"},{"x":21,"y":9,"type":"DIRT"},{"x":22,"y":9,"type":"DIRT"},{"x":23,"y":9,"type":"AIR"},{"x":24,"y":9,"type":"AIR"},{"x":25,"y":9,"type":"AIR"},{"x":26,"y":9,"type":"DIRT"},{"x":27,"y":9,"type":"DIRT"},{"x":28,"y":9,"type":"AIR"},{"x":29,"y":9,"type":"AIR"},{"x":30,"y":9,"type":"DIRT"},{"x":31,"y":9,"type":"DIRT"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"DIRT"},{"x":2,"y":10,"type":"DIRT"},{"x":3,"y":10,"type":"DIRT"},{"x":4,"y":10,"type":"DIRT"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"AIR"},{"x":7,"y":10,"type":"AIR"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"AIR"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"AIR"},{"x":12,"y":10,"type":"AIR"},{"x":13,"y":10,"type":"AIR"},{"x":14,"y":10,"type":"DIRT"},{"x":15,"y":10,"type":"AIR"},{"x":16,"y":10,"type":"AIR"},{"x":17,"y":10,"type":"AIR"},{"x":18,"y":10,"type":"DIRT"},{"x":19,"y":10,"type":"AIR"},{"x":20,"y":10,"type":"AIR"},{"x":21,"y":10,"type":"AIR"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"AIR"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"AIR"},{"x":26,"y":10,"type":"AIR"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"DIRT"},{"x":29,"y":10,"type":"DIRT"},{"x":30,"y":10,"type":"DIRT"},{"x":31,"y":10,"type":"DIRT"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"DIRT"},{"x":1,"y":11,"type":"DIRT"},{"x":2,"y":11,"type":"DIRT"},{"x":3,"y":11,"type":"DIRT"},{"x":4,"y":11,"type":"DIRT"},{"x":5,"y":11,"type":"DIRT"},{"x":6,"y":11,"type":"AIR"},{"x":7,"y":11,"type":"AIR"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"AIR"},{"x":10,"y":11,"type":"AIR"},{"x":11,"y":11,"type":"AIR"},{"x":12,"y":11,"type":"AIR"},{"x":13,"y":11,"type":"AIR"},{"x":14,"y":11,"type":"DIRT"},{"x":15,"y":11,"type":"DIRT"},{"x":16,"y":11,"type":"DIRT"},{"x":17,"y":11,"type":"DIRT"},{"x":18,"y":11,"type":"DIRT"},{"x":19,"y":11,"type":"AIR"},{"x":20,"y":11,"type":"AIR"},{"x":21,"y":11,"type":"AIR"},{"x":22,"y":11,"type":"AIR"},{"x":23,"y":11,"type":"AIR"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"AIR"},{"x":26,"y":11,"type":"AIR"},{"x":27,"y":11,"type":"DIRT"},{"x":28,"y":11,"type":"DIRT"},{"x":29,"y":11,"type":"DIRT"},{"x":30,"y":11,"type":"DIRT"},{"x":31,"y":11,"type":"DIRT"},{"x":32,"y":11,"type":"DIRT"}],[{"x":0,"y":12,"type":"DIRT"},{"x":1,"y":12,"type":"DIRT"},{"x":2,"y":12,"type":"AIR"},{"x":3,"y":12,"type":"DIRT"},{"x":4,"y":12,"type":"DIRT"},{"x":5,"y":12,"type":"DIRT"},{"x":6,"y":12,"type":"DIRT"},{"x":7,"y":12,"type":"AIR"},{"x":8,"y":12,"type":"AIR"},{"x":9,"y":12,"type":"AIR"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"AIR"},{"x":12,"y":12,"type":"DIRT"},{"x":13,"y":12,"type":"DIRT"},{"x":14,"y":12,"type":"AIR"},{"x":15,"y":12,"type":"AIR"},{"x":16,"y":12,"type":"DIRT"},{"x":17,"y":12,"type":"AIR"},{"x":18,"y":12,"type":"AIR"},{"x":19,"y":12,"type":"DIRT"},{"x":20,"y":12,"type":"DIRT"},{"x":21,"y":12,"type":"AIR"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"AIR"},{"x":24,"y":12,"type":"AIR"},{"x":25,"y":12,"type":"AIR"},{"x":26,"y":12,"type":"DIRT"},{"x":27,"y":12,"type":"DIRT"},{"x":28,"y":12,"type":"DIRT"},{"x":29,"y":12,"type":"DIRT"},{"x":30,"y":12,"type":"AIR"},{"x":31,"y":12,"type":"DIRT"},{"x":32,"y":12,"type":"DIRT"}],[{"x":0,"y":13,"type":"DIRT"},{"x":1,"y":13,"type":"AIR"},{"x":2,"y":13,"type":"AIR"},{"x":3,"y":13,"type":"DIRT"},{"x":4,"y":13,"type":"DIRT"},{"x":5,"y":13,"type":"DIRT"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"AIR"},{"x":8,"y":13,"type":"AIR"},{"x":9,"y":13,"type":"AIR"},{"x":10,"y":13,"type":"AIR"},{"x":11,"y":13,"type":"AIR"},{"x":12,"y":13,"type":"DIRT"},{"x":13,"y":13,"type":"DIRT"},{"x":14,"y":13,"type":"AIR"},{"x":15,"y":13,"type":"AIR"},{"x":16,"y":13,"type":"AIR"},{"x":17,"y":13,"type":"AIR"},{"x":18,"y":13,"type":"AIR"},{"x":19,"y":13,"type":"DIRT"},{"x":20,"y":13,"type":"DIRT"},{"x":21,"y":13,"type":"AIR"},{"x":22,"y":13,"type":"AIR"},{"x":23,"y":13,"type":"AIR"},{"x":24,"y":13,"type":"AIR"},{"x":25,"y":13,"type":"AIR"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"DIRT"},{"x":28,"y":13,"type":"DIRT"},{"x":29,"y":13,"type":"DIRT"},{"x":30,"y":13,"type":"AIR"},{"x":31,"y":13,"type":"AIR"},{"x":32,"y":13,"type":"DIRT"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"DIRT"},{"x":5,"y":14,"type":"DIRT"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"AIR"},{"x":8,"y":14,"type":"AIR"},{"x":9,"y":14,"type":"DIRT"},{"x":10,"y":14,"type":"DIRT"},{"x":11,"y":14,"type":"DIRT"},{"x":12,"y":14,"type":"DIRT"},{"x":13,"y":14,"type":"DIRT"},{"x":14,"y":14,"type":"DIRT"},{"x":15,"y":14,"type":"AIR"},{"x":16,"y":14,"type":"AIR"},{"x":17,"y":14,"type":"AIR"},{"x":18,"y":14,"type":"DIRT"},{"x":19,"y":14,"type":"DIRT"},{"x":20,"y":14,"type":"DIRT"},{"x":21,"y":14,"type":"DIRT"},{"x":22,"y":14,"type":"DIRT"},{"x":23,"y":14,"type":"DIRT"},{"x":24,"y":14,"type":"AIR"},{"x":25,"y":14,"type":"AIR"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"DIRT"},{"x":28,"y":14,"type":"DIRT"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"DIRT"},{"x":5,"y":15,"type":"AIR"},{"x":6,"y":15,"type":"AIR"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"DIRT"},{"x":9,"y":15,"type":"AIR"},{"x":10,"y":15,"type":"DIRT"},{"x":11,"y":15,"type":"DIRT"},{"x":12,"y":15,"type":"DIRT"},{"x":13,"y":15,"type":"DIRT"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"AIR"},{"x":16,"y":15,"type":"DIRT"},{"x":17,"y":15,"type":"AIR"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"DIRT"},{"x":20,"y":15,"type":"DIRT"},{"x":21,"y":15,"type":"DIRT"},{"x":22,"y":15,"type":"DIRT"},{"x":23,"y":15,"type":"AIR"},{"x":24,"y":15,"type":"DIRT"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"AIR"},{"x":27,"y":15,"type":"AIR"},{"x":28,"y":15,"type":"DIRT"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"AIR"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"DIRT"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"DIRT"},{"x":10,"y":16,"type":"DIRT"},{"x":11,"y":16,"type":"DIRT"},{"x":12,"y":16,"type":"DIRT"},{"x":13,"y":16,"type":"DIRT"},{"x":14,"y":16,"type":"DIRT"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"DIRT"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"DIRT"},{"x":19,"y":16,"type":"DIRT"},{"x":20,"y":16,"type":"DIRT"},{"x":21,"y":16,"type":"DIRT"},{"x":22,"y":16,"type":"DIRT"},{"x":23,"y":16,"type":"DIRT"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"DIRT"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"AIR"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"DIRT"},{"x":5,"y":17,"type":"DIRT"},{"x":6,"y":17,"type":"DIRT"},{"x":7,"y":17,"type":"DIRT"},{"x":8,"y":17,"type":"AIR"},{"x":9,"y":17,"type":"DIRT"},{"x":10,"y":17,"type":"DIRT"},{"x":11,"y":17,"type":"AIR"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"DIRT"},{"x":14,"y":17,"type":"DIRT"},{"x":15,"y":17,"type":"AIR"},{"x":16,"y":17,"type":"AIR"},{"x":17,"y":17,"type":"AIR"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"DIRT"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"AIR"},{"x":22,"y":17,"type":"DIRT"},{"x":23,"y":17,"type":"DIRT"},{"x":24,"y":17,"type":"AIR"},{"x":25,"y":17,"type":"DIRT"},{"x":26,"y":17,"type":"DIRT"},{"x":27,"y":17,"type":"DIRT"},{"x":28,"y":17,"type":"DIRT"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"DIRT"},{"x":5,"y":18,"type":"DIRT"},{"x":6,"y":18,"type":"DIRT"},{"x":7,"y":18,"type":"DIRT"},{"x":8,"y":18,"type":"DIRT"},{"x":9,"y":18,"type":"AIR"},{"x":10,"y":18,"type":"AIR"},{"x":11,"y":18,"type":"DIRT"},{"x":12,"y":18,"type":"DIRT"},{"x":13,"y":18,"type":"DIRT"},{"x":14,"y":18,"type":"AIR"},{"x":15,"y":18,"type":"AIR"},{"x":16,"y":18,"type":"AIR"},{"x":17,"y":18,"type":"AIR"},{"x":18,"y":18,"type":"AIR"},{"x":19,"y":18,"type":"DIRT"},{"x":20,"y":18,"type":"DIRT"},{"x":21,"y":18,"type":"DIRT"},{"x":22,"y":18,"type":"AIR"},{"x":23,"y":18,"type":"AIR"},{"x":24,"y":18,"type":"DIRT"},{"x":25,"y":18,"type":"DIRT"},{"x":26,"y":18,"type":"DIRT"},{"x":27,"y":18,"type":"DIRT"},{"x":28,"y":18,"type":"DIRT"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"AIR"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"DIRT"},{"x":3,"y":19,"type":"AIR"},{"x":4,"y":19,"type":"AIR"},{"x":5,"y":19,"type":"AIR"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"AIR"},{"x":8,"y":19,"type":"DIRT"},{"x":9,"y":19,"type":"AIR"},{"x":10,"y":19,"type":"AIR"},{"x":11,"y":19,"type":"DIRT"},{"x":12,"y":19,"type":"DIRT"},{"x":13,"y":19,"type":"AIR"},{"x":14,"y":19,"type":"AIR"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"AIR"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"AIR"},{"x":19,"y":19,"type":"AIR"},{"x":20,"y":19,"type":"DIRT"},{"x":21,"y":19,"type":"DIRT"},{"x":22,"y":19,"type":"AIR"},{"x":23,"y":19,"type":"AIR"},{"x":24,"y":19,"type":"DIRT"},{"x":25,"y":19,"type":"AIR"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"AIR"},{"x":28,"y":19,"type":"AIR"},{"x":29,"y":19,"type":"AIR"},{"x":30,"y":19,"type":"DIRT"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"AIR"}],[{"x":0,"y":20,"type":"AIR"},{"x":1,"y":20,"type":"AIR"},{"x":2,"y":20,"type":"DIRT"},{"x":3,"y":20,"type":"DIRT"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"AIR"},{"x":6,"y":20,"type":"AIR"},{"x":7,"y":20,"type":"AIR"},{"x":8,"y":20,"type":"AIR"},{"x":9,"y":20,"type":"AIR"},{"x":10,"y":20,"type":"AIR"},{"x":11,"y":20,"type":"DIRT"},{"x":12,"y":20,"type":"DIRT"},{"x":13,"y":20,"type":"DIRT"},{"x":14,"y":20,"type":"AIR"},{"x":15,"y":20,"type":"AIR"},{"x":16,"y":20,"type":"AIR"},{"x":17,"y":20,"type":"AIR"},{"x":18,"y":20,"type":"AIR"},{"x":19,"y":20,"type":"DIRT"},{"x":20,"y":20,"type":"DIRT"},{"x":21,"y":20,"type":"DIRT"},{"x":22,"y":20,"type":"AIR"},{"x":23,"y":20,"type":"AIR"},{"x":24,"y":20,"type":"AIR"},{"x":25,"y":20,"type":"AIR"},{"x":26,"y":20,"type":"AIR"},{"x":27,"y":20,"type":"AIR"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"DIRT"},{"x":30,"y":20,"type":"DIRT"},{"x":31,"y":20,"type":"AIR"},{"x":32,"y":20,"type":"AIR"}],[{"x":0,"y":21,"type":"AIR"},{"x":1,"y":21,"type":"DIRT"},{"x":2,"y":21,"type":"DIRT"},{"x":3,"y":21,"type":"DIRT"},{"x":4,"y":21,"type":"DIRT"},{"x":5,"y":21,"type":"AIR"},{"x":6,"y":21,"type":"AIR"},{"x":7,"y":21,"type":"AIR"},{"x":8,"y":21,"type":"AIR"},{"x":9,"y":21,"type":"AIR"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"DIRT"},{"x":12,"y":21,"type":"DIRT"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"DIRT"},{"x":15,"y":21,"type":"AIR"},{"x":16,"y":21,"type":"AIR"},{"x":17,"y":21,"type":"AIR"},{"x":18,"y":21,"type":"DIRT"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"DIRT"},{"x":21,"y":21,"type":"DIRT"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"AIR"},{"x":24,"y":21,"type":"AIR"},{"x":25,"y":21,"type":"AIR"},{"x":26,"y":21,"type":"AIR"},{"x":27,"y":21,"type":"AIR"},{"x":28,"y":21,"type":"DIRT"},{"x":29,"y":21,"type":"DIRT"},{"x":30,"y":21,"type":"DIRT"},{"x":31,"y":21,"type":"DIRT"},{"x":32,"y":21,"type":"AIR"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"DIRT"},{"x":2,"y":22,"type":"AIR"},{"x":3,"y":22,"type":"DIRT"},{"x":4,"y":22,"type":"DIRT"},{"x":5,"y":22,"type":"AIR"},{"x":6,"y":22,"type":"AIR"},{"x":7,"y":22,"type":"AIR"},{"x":8,"y":22,"type":"AIR"},{"x":9,"y":22,"type":"AIR"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"AIR"},{"x":13,"y":22,"type":"AIR"},{"x":14,"y":22,"type":"DIRT"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"DIRT"},{"x":19,"y":22,"type":"AIR"},{"x":20,"y":22,"type":"AIR"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"AIR"},{"x":24,"y":22,"type":"AIR"},{"x":25,"y":22,"type":"AIR"},{"x":26,"y":22,"type":"AIR"},{"x":27,"y":22,"type":"AIR"},{"x":28,"y":22,"type":"DIRT"},{"x":29,"y":22,"type":"DIRT"},{"x":30,"y":22,"type":"AIR"},{"x":31,"y":22,"type":"DIRT"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"DIRT"},{"x":2,"y":23,"type":"AIR"},{"x":3,"y":23,"type":"DIRT"},{"x":4,"y":23,"type":"DIRT"},{"x":5,"y":23,"type":"DIRT"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"AIR"},{"x":8,"y":23,"type":"DIRT"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"AIR"},{"x":13,"y":23,"type":"AIR"},{"x":14,"y":23,"type":"DIRT"},{"x":15,"y":23,"type":"AIR"},{"x":16,"y":23,"type":"AIR"},{"x":17,"y":23,"type":"AIR"},{"x":18,"y":23,"type":"DIRT"},{"x":19,"y":23,"type":"AIR"},{"x":20,"y":23,"type":"AIR"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"DIRT"},{"x":25,"y":23,"type":"AIR"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"DIRT"},{"x":28,"y":23,"type":"DIRT"},{"x":29,"y":23,"type":"DIRT"},{"x":30,"y":23,"type":"AIR"},{"x":31,"y":23,"type":"DIRT"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"DIRT"},{"x":2,"y":24,"type":"DIRT"},{"x":3,"y":24,"type":"DIRT"},{"x":4,"y":24,"type":"DIRT"},{"x":5,"y":24,"type":"DIRT"},{"x":6,"y":24,"type":"AIR"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"DIRT"},{"x":9,"y":24,"type":"AIR"},{"x":10,"y":24,"type":"AIR"},{"x":11,"y":24,"type":"AIR"},{"x":12,"y":24,"type":"AIR"},{"x":13,"y":24,"type":"AIR"},{"x":14,"y":24,"type":"DIRT"},{"x":15,"y":24,"type":"DIRT"},{"x":16,"y":24,"type":"DIRT"},{"x":17,"y":24,"type":"DIRT"},{"x":18,"y":24,"type":"DIRT"},{"x":19,"y":24,"type":"AIR"},{"x":20,"y":24,"type":"AIR"},{"x":21,"y":24,"type":"AIR"},{"x":22,"y":24,"type":"AIR"},{"x":23,"y":24,"type":"AIR"},{"x":24,"y":24,"type":"DIRT"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"AIR"},{"x":27,"y":24,"type":"DIRT"},{"x":28,"y":24,"type":"DIRT"},{"x":29,"y":24,"type":"DIRT"},{"x":30,"y":24,"type":"DIRT"},{"x":31,"y":24,"type":"DIRT"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"DIRT"},{"x":3,"y":25,"type":"AIR"},{"x":4,"y":25,"type":"DIRT"},{"x":5,"y":25,"type":"DIRT"},{"x":6,"y":25,"type":"AIR"},{"x":7,"y":25,"type":"AIR"},{"x":8,"y":25,"type":"DIRT"},{"x":9,"y":25,"type":"DIRT"},{"x":10,"y":25,"type":"AIR"},{"x":11,"y":25,"type":"AIR"},{"x":12,"y":25,"type":"AIR"},{"x":13,"y":25,"type":"AIR"},{"x":14,"y":25,"type":"DIRT"},{"x":15,"y":25,"type":"AIR"},{"x":16,"y":25,"type":"DIRT"},{"x":17,"y":25,"type":"AIR"},{"x":18,"y":25,"type":"DIRT"},{"x":19,"y":25,"type":"AIR"},{"x":20,"y":25,"type":"AIR"},{"x":21,"y":25,"type":"AIR"},{"x":22,"y":25,"type":"AIR"},{"x":23,"y":25,"type":"DIRT"},{"x":24,"y":25,"type":"DIRT"},{"x":25,"y":25,"type":"AIR"},{"x":26,"y":25,"type":"AIR"},{"x":27,"y":25,"type":"DIRT"},{"x":28,"y":25,"type":"DIRT"},{"x":29,"y":25,"type":"AIR"},{"x":30,"y":25,"type":"DIRT"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"AIR"},{"x":5,"y":26,"type":"AIR"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"AIR"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"AIR"},{"x":14,"y":26,"type":"AIR"},{"x":15,"y":26,"type":"DIRT"},{"x":16,"y":26,"type":"DIRT"},{"x":17,"y":26,"type":"DIRT"},{"x":18,"y":26,"type":"AIR"},{"x":19,"y":26,"type":"AIR"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"AIR"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"AIR"},{"x":28,"y":26,"type":"AIR"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"AIR"},{"x":5,"y":27,"type":"AIR"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"AIR"},{"x":14,"y":27,"type":"AIR"},{"x":15,"y":27,"type":"DIRT"},{"x":16,"y":27,"type":"DIRT"},{"x":17,"y":27,"type":"DIRT"},{"x":18,"y":27,"type":"AIR"},{"x":19,"y":27,"type":"AIR"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"AIR"},{"x":28,"y":27,"type":"AIR"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"AIR"},{"x":5,"y":28,"type":"AIR"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"DIRT"},{"x":12,"y":28,"type":"AIR"},{"x":13,"y":28,"type":"AIR"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"DIRT"},{"x":16,"y":28,"type":"DIRT"},{"x":17,"y":28,"type":"DIRT"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"AIR"},{"x":20,"y":28,"type":"AIR"},{"x":21,"y":28,"type":"DIRT"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"AIR"},{"x":28,"y":28,"type":"AIR"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"DIRT"},{"x":12,"y":29,"type":"AIR"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"DIRT"},{"x":15,"y":29,"type":"DIRT"},{"x":16,"y":29,"type":"DIRT"},{"x":17,"y":29,"type":"DIRT"},{"x":18,"y":29,"type":"DIRT"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"AIR"},{"x":21,"y":29,"type":"DIRT"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"DIRT"},{"x":12,"y":30,"type":"AIR"},{"x":13,"y":30,"type":"AIR"},{"x":14,"y":30,"type":"DIRT"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"AIR"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"DIRT"},{"x":19,"y":30,"type":"AIR"},{"x":20,"y":30,"type":"AIR"},{"x":21,"y":30,"type":"DIRT"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"DIRT"},{"x":9,"y":31,"type":"DIRT"},{"x":10,"y":31,"type":"DIRT"},{"x":11,"y":31,"type":"DIRT"},{"x":12,"y":31,"type":"AIR"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"AIR"},{"x":16,"y":31,"type":"AIR"},{"x":17,"y":31,"type":"AIR"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"AIR"},{"x":21,"y":31,"type":"DIRT"},{"x":22,"y":31,"type":"DIRT"},{"x":23,"y":31,"type":"DIRT"},{"x":24,"y":31,"type":"DIRT"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"DIRT"},{"x":12,"y":32,"type":"DIRT"},{"x":13,"y":32,"type":"DIRT"},{"x":14,"y":32,"type":"AIR"},{"x":15,"y":32,"type":"AIR"},{"x":16,"y":32,"type":"DIRT"},{"x":17,"y":32,"type":"AIR"},{"x":18,"y":32,"type":"AIR"},{"x":19,"y":32,"type":"DIRT"},{"x":20,"y":32,"type":"DIRT"},{"x":21,"y":32,"type":"DIRT"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/2019-worms/tests/replays/2019.08.19.21.57.04/A-log.csv b/2019-worms/tests/replays/2019.08.19.21.57.04/A-log.csv new file mode 100644 index 0000000..f620e90 --- /dev/null +++ b/2019-worms/tests/replays/2019.08.19.21.57.04/A-log.csv @@ -0,0 +1,214 @@ +Round,LastCommandType,LastCommand,ActiveWorm,Score,Health,Worm1 Health,Worm1 x,Worm1 y,Worm2 Health,Worm2 x,Worm2 y,Worm3 Health,Worm3 x,Worm3 y +1,null,"null",1,116,350,150,24,4,100,24,28,100,1,16 +2,move,"move 23 3",1,121,350,150,23,3,100,24,28,100,1,16 +3,move,"move 23 28",2,126,350,150,23,3,100,23,28,100,1,16 +4,move,"move 2 16",3,131,350,150,23,3,100,23,28,100,2,16 +5,dig,"dig 22 3",1,138,350,150,23,3,100,23,28,100,2,16 +6,dig,"dig 22 28",2,145,350,150,23,3,100,23,28,100,2,16 +7,dig,"dig 3 16",3,152,350,150,23,3,100,23,28,100,2,16 +8,move,"move 22 3",1,157,350,150,22,3,100,23,28,100,2,16 +9,move,"move 22 28",2,162,350,150,22,3,100,22,28,100,2,16 +10,move,"move 2 15",3,167,350,150,22,3,100,22,28,100,2,15 +11,move,"move 23 3",1,172,350,150,23,3,100,22,28,100,2,15 +12,move,"move 23 28",2,177,350,150,23,3,100,23,28,100,2,15 +13,move,"move 2 16",3,182,350,150,23,3,100,23,28,100,2,16 +14,move,"move 22 3",1,187,350,150,22,3,100,23,28,100,2,16 +15,move,"move 22 28",2,192,350,150,22,3,100,22,28,100,2,16 +16,move,"move 2 15",3,197,350,150,22,3,100,22,28,100,2,15 +17,move,"move 23 3",1,202,350,150,23,3,100,22,28,100,2,15 +18,move,"move 23 28",2,207,350,150,23,3,100,23,28,100,2,15 +19,move,"move 2 16",3,212,350,150,23,3,100,23,28,100,2,16 +20,move,"move 22 3",1,217,350,150,22,3,100,23,28,100,2,16 +21,move,"move 22 28",2,222,350,150,22,3,100,22,28,100,2,16 +22,move,"move 2 15",3,227,350,150,22,3,100,22,28,100,2,15 +23,move,"move 23 3",1,232,350,150,23,3,100,22,28,100,2,15 +24,move,"move 23 28",2,237,350,150,23,3,100,23,28,100,2,15 +25,move,"move 2 16",3,242,350,150,23,3,100,23,28,100,2,16 +26,move,"move 22 3",1,247,350,150,22,3,100,23,28,100,2,16 +27,move,"move 22 28",2,252,350,150,22,3,100,22,28,100,2,16 +28,move,"move 2 15",3,257,350,150,22,3,100,22,28,100,2,15 +29,move,"move 23 3",1,262,350,150,23,3,100,22,28,100,2,15 +30,move,"move 23 28",2,267,350,150,23,3,100,23,28,100,2,15 +31,move,"move 2 16",3,272,350,150,23,3,100,23,28,100,2,16 +32,move,"move 22 3",1,277,350,150,22,3,100,23,28,100,2,16 +33,move,"move 22 28",2,282,350,150,22,3,100,22,28,100,2,16 +34,move,"move 2 15",3,287,350,150,22,3,100,22,28,100,2,15 +35,dig,"dig 22 2",1,294,350,150,22,3,100,22,28,100,2,15 +36,move,"move 23 27",2,299,350,150,22,3,100,23,27,100,2,15 +37,move,"move 1 16",3,304,350,150,22,3,100,23,27,100,1,16 +38,move,"move 22 2",1,309,350,150,22,2,100,23,27,100,1,16 +39,move,"move 22 28",2,314,350,150,22,2,100,22,28,100,1,16 +40,move,"move 2 16",3,319,350,150,22,2,100,22,28,100,2,16 +41,move,"move 23 3",1,324,350,150,23,3,100,22,28,100,2,16 +42,move,"move 23 28",2,329,350,150,23,3,100,23,28,100,2,16 +43,move,"move 2 15",3,334,350,150,23,3,100,23,28,100,2,15 +44,move,"move 22 3",1,339,350,150,22,3,100,23,28,100,2,15 +45,move,"move 22 28",2,344,350,150,22,3,100,22,28,100,2,15 +46,move,"move 2 16",3,349,350,150,22,3,100,22,28,100,2,16 +47,move,"move 23 3",1,354,350,150,23,3,100,22,28,100,2,16 +48,move,"move 23 28",2,359,350,150,23,3,100,23,28,100,2,16 +49,move,"move 3 16",3,364,350,150,23,3,100,23,28,100,3,16 +50,move,"move 23 4",1,369,350,150,23,4,100,23,28,100,3,16 +51,move,"move 24 27",2,374,350,150,23,4,100,24,27,100,3,16 +52,move,"move 2 16",3,379,350,150,23,4,100,24,27,100,2,16 +53,move,"move 23 3",1,384,350,150,23,3,100,24,27,100,2,16 +54,move,"move 23 28",2,389,350,150,23,3,100,23,28,100,2,16 +55,move,"move 2 15",3,394,350,150,23,3,100,23,28,100,2,15 +56,move,"move 22 3",1,399,350,150,22,3,100,23,28,100,2,15 +57,move,"move 22 28",2,404,350,150,22,3,100,22,28,100,2,15 +58,move,"move 2 16",3,409,350,150,22,3,100,22,28,100,2,16 +59,move,"move 23 3",1,414,350,150,23,3,100,22,28,100,2,16 +60,move,"move 23 28",2,419,350,150,23,3,100,23,28,100,2,16 +61,move,"move 2 15",3,424,350,150,23,3,100,23,28,100,2,15 +62,move,"move 22 3",1,429,350,150,22,3,100,23,28,100,2,15 +63,move,"move 22 28",2,434,350,150,22,3,100,22,28,100,2,15 +64,move,"move 2 16",3,439,350,150,22,3,100,22,28,100,2,16 +65,move,"move 23 4",1,444,350,150,23,4,100,22,28,100,2,16 +66,dig,"dig 22 29",2,451,350,150,23,4,100,22,28,100,2,16 +67,dig,"dig 3 15",3,458,350,150,23,4,100,22,28,100,2,16 +68,move,"move 24 4",1,463,350,150,24,4,100,22,28,100,2,16 +69,move,"move 23 28",2,468,350,150,24,4,100,23,28,100,2,16 +70,nothing,"nothing "Player chose to do nothing"",3,468,350,150,24,4,100,23,28,100,2,16 +71,move,"move 25 3",1,473,350,150,25,3,100,23,28,100,2,16 +72,move,"move 23 29",2,478,350,150,25,3,100,23,29,100,2,16 +73,move,"move 1 15",3,483,350,150,25,3,100,23,29,100,1,15 +74,dig,"dig 24 2",1,490,350,150,25,3,100,23,29,100,1,15 +75,move,"move 22 29",2,495,350,150,25,3,100,22,29,100,1,15 +76,dig,"dig 2 14",3,502,350,150,25,3,100,22,29,100,1,15 +77,nothing,"nothing "Player chose to do nothing"",1,502,350,150,25,3,100,22,29,100,1,15 +78,move,"move 23 28",2,507,350,150,25,3,100,23,28,100,1,15 +79,move,"move 2 16",3,512,350,150,25,3,100,23,28,100,2,16 +80,dig,"dig 25 2",1,512,350,150,25,3,100,23,28,100,2,16 +81,move,"move 22 29",2,517,350,150,25,3,100,22,29,100,2,16 +82,move,"move 3 15",3,522,350,150,25,3,100,22,29,100,3,15 +83,move,"move 25 4",1,522,350,150,25,3,100,22,29,100,3,15 +84,move,"move 23 29",2,521,330,130,25,3,100,23,29,100,3,15 +85,dig,"dig 4 14",3,528,330,130,25,3,100,23,29,100,3,15 +86,move,"move 24 4",1,525,322,122,25,3,100,23,29,100,3,15 +87,shoot,"shoot S",1,538,314,114,25,3,100,23,29,100,3,15 +88,shoot,"shoot S",1,552,306,106,25,3,100,23,29,100,3,15 +89,shoot,"shoot S",1,565,298,98,25,3,100,23,29,100,3,15 +90,shoot,"shoot S",1,578,290,90,25,3,100,23,29,100,3,15 +91,move,"move 24 29",2,583,290,90,25,3,100,24,29,100,3,15 +92,shoot,"shoot S",1,593,270,70,25,3,100,24,29,100,3,15 +93,move,"move 25 29",2,598,270,70,25,3,100,25,29,100,3,15 +94,move,"move 2 16",3,600,262,62,25,3,100,25,29,100,2,16 +95,move,"move 24 2",1,593,242,42,25,3,100,25,29,100,2,16 +96,move,"move 24 29",2,598,242,42,25,3,100,24,29,100,2,16 +97,move,"move 2 15",3,601,234,34,25,3,100,24,29,100,2,15 +98,shoot,"shoot S",1,617,234,34,25,3,100,24,29,100,2,15 +99,dig,"dig 24 30",2,624,234,34,25,3,100,24,29,100,2,15 +100,move,"move 2 16",3,626,226,26,25,3,100,24,29,100,2,16 +101,shoot,"shoot S",1,642,226,26,25,3,100,24,29,100,2,16 +102,move,"move 24 28",2,647,226,26,25,3,100,24,28,100,2,16 +103,move,"move 2 15",3,649,218,18,25,3,100,24,28,100,2,15 +104,shoot,"shoot S",1,664,215,15,25,3,100,24,28,100,2,15 +105,move,"move 25 28",2,668,212,12,25,3,100,25,28,100,2,15 +106,move,"move 2 16",3,670,201,1,25,3,100,25,28,100,2,16 +107,shoot,"shoot S",1,685,200,-2,25,3,100,25,28,100,2,16 +108,move,"move 25 27",2,690,200,-2,25,3,100,25,27,100,2,16 +109,dig,"dig 3 17",3,697,200,-2,25,3,100,25,27,100,2,16 +110,move,"move 24 27",2,702,200,-2,25,3,100,24,27,100,2,16 +111,nothing,"nothing "Player chose to do nothing"",3,702,200,-2,25,3,100,24,27,100,2,16 +112,move,"move 25 28",2,707,200,-2,25,3,100,25,28,100,2,16 +113,move,"move 1 17",3,712,200,-2,25,3,100,25,28,100,1,17 +114,move,"move 25 27",2,717,200,-2,25,3,100,25,27,100,1,17 +115,move,"move 2 17",3,722,200,-2,25,3,100,25,27,100,2,17 +116,dig,"dig 24 26",2,729,200,-2,25,3,100,25,27,100,2,17 +117,move,"move 3 17",3,734,200,-2,25,3,100,25,27,100,3,17 +118,move,"move 24 26",2,739,200,-2,25,3,100,24,26,100,3,17 +119,move,"move 3 16",3,744,200,-2,25,3,100,24,26,100,3,16 +120,move,"move 25 25",2,749,200,-2,25,3,100,25,25,100,3,16 +121,move,"move 4 16",3,754,200,-2,25,3,100,25,25,100,4,16 +122,move,"move 26 25",2,759,200,-2,25,3,100,26,25,100,4,16 +123,move,"move 3 17",3,764,200,-2,25,3,100,26,25,100,3,17 +124,move,"move 25 24",2,769,200,-2,25,3,100,25,24,100,3,17 +125,move,"move 2 16",3,774,200,-2,25,3,100,25,24,100,2,16 +126,move,"move 26 24",2,779,200,-2,25,3,100,26,24,100,2,16 +127,move,"move 3 17",3,784,200,-2,25,3,100,26,24,100,3,17 +128,dig,"dig 27 24",2,791,200,-2,25,3,100,26,24,100,3,17 +129,dig,"dig 3 18",3,798,200,-2,25,3,100,26,24,100,3,17 +130,move,"move 25 23",2,803,200,-2,25,3,100,25,23,100,3,17 +131,move,"move 4 16",3,808,200,-2,25,3,100,25,23,100,4,16 +132,move,"move 26 24",2,813,200,-2,25,3,100,26,24,100,4,16 +133,dig,"dig 4 15",3,820,200,-2,25,3,100,26,24,100,4,16 +134,move,"move 26 23",2,825,200,-2,25,3,100,26,23,100,4,16 +135,move,"move 5 15",3,830,200,-2,25,3,100,26,23,100,5,15 +136,move,"move 26 22",2,835,200,-2,25,3,100,26,22,100,5,15 +137,dig,"dig 5 16",3,842,200,-2,25,3,100,26,22,100,5,15 +138,move,"move 25 21",2,847,200,-2,25,3,100,25,21,100,5,15 +139,dig,"dig 5 14",3,854,200,-2,25,3,100,25,21,100,5,15 +140,banana,"banana 25 16",2,937,200,-2,25,3,100,25,21,100,5,15 +141,move,"move 5 14",3,942,200,-2,25,3,100,25,21,100,5,14 +142,banana,"banana 25 16",2,1022,200,-2,25,3,100,25,21,100,5,14 +143,dig,"dig 4 13",3,1029,200,-2,25,3,100,25,21,100,5,14 +144,banana,"banana 26 16",2,1094,200,-2,25,3,100,25,21,100,5,14 +145,nothing,"nothing "Player chose to do nothing"",3,1094,200,-2,25,3,100,25,21,100,5,14 +146,shoot,"shoot N",2,1110,200,-2,25,3,100,25,21,100,5,14 +147,move,"move 5 15",3,1113,192,-2,25,3,92,25,21,100,5,15 +148,shoot,"shoot N",2,1129,192,-2,25,3,92,25,21,100,5,15 +149,move,"move 6 14",3,1134,192,-2,25,3,92,25,21,100,6,14 +150,shoot,"shoot N",2,1147,184,-2,25,3,84,25,21,100,6,14 +151,move,"move 7 14",3,1152,184,-2,25,3,84,25,21,100,7,14 +152,shoot,"shoot N",2,1208,184,-2,25,3,84,25,21,100,7,14 +153,invalid,"invalid",3,1204,184,-2,25,3,84,25,21,100,7,14 +154,shoot,"shoot N",2,1220,184,-2,25,3,84,25,21,100,7,14 +155,move,"move 7 13",3,1222,176,-2,25,3,76,25,21,100,7,13 +156,shoot,"shoot N",2,1238,176,-2,25,3,76,25,21,100,7,13 +157,move,"move 6 14",3,1241,168,-2,25,3,68,25,21,100,6,14 +158,shoot,"shoot N",2,1257,168,-2,25,3,68,25,21,100,6,14 +159,move,"move 5 15",3,1259,160,-2,25,3,60,25,21,100,5,15 +160,shoot,"shoot N",2,1275,160,-2,25,3,60,25,21,100,5,15 +161,move,"move 4 16",3,1277,152,-2,25,3,52,25,21,100,4,16 +162,shoot,"shoot N",2,1293,152,-2,25,3,52,25,21,100,4,16 +163,move,"move 5 15",3,1296,144,-2,25,3,44,25,21,100,5,15 +164,shoot,"shoot N",2,1312,144,-2,25,3,44,25,21,100,5,15 +165,move,"move 5 14",3,1314,136,-2,25,3,36,25,21,100,5,14 +166,shoot,"shoot N",2,1330,136,-2,25,3,36,25,21,100,5,14 +167,move,"move 6 15",3,1335,136,-2,25,3,36,25,21,100,6,15 +168,shoot,"shoot N",2,1348,128,-2,25,3,28,25,21,100,6,15 +169,dig,"dig 6 16",3,1355,128,-2,25,3,28,25,21,100,6,15 +170,shoot,"shoot N",2,1371,128,-2,25,3,28,25,21,100,6,15 +171,move,"move 6 16",3,1374,120,-2,25,3,20,25,21,100,6,16 +172,shoot,"shoot N",2,1390,120,-2,25,3,20,25,21,100,6,16 +173,move,"move 7 16",3,1392,112,-2,25,3,12,25,21,100,7,16 +174,shoot,"shoot N",2,1408,112,-2,25,3,12,25,21,100,7,16 +175,move,"move 8 16",3,1410,104,-2,25,3,4,25,21,100,8,16 +176,shoot,"shoot N",2,1466,104,-2,25,3,4,25,21,100,8,16 +177,nothing,"nothing "Player chose to do nothing"",3,1466,104,-2,25,3,4,25,21,100,8,16 +178,shoot,"shoot N",2,1481,100,-2,25,3,-4,25,21,100,8,16 +179,dig,"dig 7 17",3,1488,100,-2,25,3,-4,25,21,100,8,16 +180,dig,"dig 8 15",3,1495,100,-2,25,3,-4,25,21,100,8,16 +181,move,"move 8 15",3,1500,100,-2,25,3,-4,25,21,100,8,15 +182,move,"move 9 15",3,1505,100,-2,25,3,-4,25,21,100,9,15 +183,dig,"dig 10 15",3,1512,100,-2,25,3,-4,25,21,100,9,15 +184,move,"move 10 15",3,1517,100,-2,25,3,-4,25,21,100,10,15 +185,nothing,"nothing "Player chose to do nothing"",3,1517,100,-2,25,3,-4,25,21,100,10,15 +186,dig,"dig 10 16",3,1524,100,-2,25,3,-4,25,21,100,10,15 +187,dig,"dig 10 14",3,1531,100,-2,25,3,-4,25,21,100,10,15 +188,dig,"dig 11 16",3,1538,100,-2,25,3,-4,25,21,100,10,15 +189,move,"move 9 15",3,1543,100,-2,25,3,-4,25,21,100,9,15 +190,nothing,"nothing "Player chose to do nothing"",3,1543,100,-2,25,3,-4,25,21,100,9,15 +191,move,"move 8 15",3,1548,100,-2,25,3,-4,25,21,100,8,15 +192,move,"move 8 16",3,1553,100,-2,25,3,-4,25,21,100,8,16 +193,move,"move 8 17",3,1558,100,-2,25,3,-4,25,21,100,8,17 +194,move,"move 7 17",3,1563,100,-2,25,3,-4,25,21,100,7,17 +195,dig,"dig 7 18",3,1570,100,-2,25,3,-4,25,21,100,7,17 +196,move,"move 7 18",3,1575,100,-2,25,3,-4,25,21,100,7,18 +197,nothing,"nothing "Player chose to do nothing"",3,1575,100,-2,25,3,-4,25,21,100,7,18 +198,nothing,"nothing "Player chose to do nothing"",3,1575,100,-2,25,3,-4,25,21,100,7,18 +199,move,"move 7 17",3,1580,100,-2,25,3,-4,25,21,100,7,17 +200,move,"move 8 17",3,1585,100,-2,25,3,-4,25,21,100,8,17 +201,move,"move 8 16",3,1590,100,-2,25,3,-4,25,21,100,8,16 +202,snowball,"snowball 11 17",3,1607,100,-2,25,3,-4,25,21,100,8,16 +203,snowball,"snowball 10 16",3,1624,100,-2,25,3,-4,25,21,100,8,16 +204,snowball,"snowball 10 16",3,1641,100,-2,25,3,-4,25,21,100,8,16 +205,move,"move 8 17",3,1646,100,-2,25,3,-4,25,21,100,8,17 +206,dig,"dig 8 18",3,1653,100,-2,25,3,-4,25,21,100,8,17 +207,move,"move 9 18",3,1658,100,-2,25,3,-4,25,21,100,9,18 +208,move,"move 9 19",3,1663,100,-2,25,3,-4,25,21,100,9,19 +209,move,"move 10 19",3,1668,100,-2,25,3,-4,25,21,100,10,19 +210,shoot,"shoot N",3,1681,92,-2,25,3,-4,25,21,92,10,19 +211,shoot,"shoot N",3,1695,84,-2,25,3,-4,25,21,84,10,19 +212,shoot,"shoot N",3,1708,76,-2,25,3,-4,25,21,76,10,19 +213,move,"move 11 18",3,1713,76,-2,25,3,-4,25,21,76,11,18 diff --git a/2019-worms/tests/replays/2019.08.19.21.57.04/B-init.json b/2019-worms/tests/replays/2019.08.19.21.57.04/B-init.json new file mode 100644 index 0000000..2d71d9a --- /dev/null +++ b/2019-worms/tests/replays/2019.08.19.21.57.04/B-init.json @@ -0,0 +1 @@ +{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":2,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":8,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":4},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":31,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":1,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":24,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":1,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"DIRT"},{"x":13,"y":0,"type":"DIRT"},{"x":14,"y":0,"type":"AIR"},{"x":15,"y":0,"type":"AIR"},{"x":16,"y":0,"type":"DIRT"},{"x":17,"y":0,"type":"AIR"},{"x":18,"y":0,"type":"AIR"},{"x":19,"y":0,"type":"DIRT"},{"x":20,"y":0,"type":"DIRT"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"DIRT"},{"x":10,"y":1,"type":"AIR"},{"x":11,"y":1,"type":"DIRT"},{"x":12,"y":1,"type":"DIRT"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"AIR"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"DIRT"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"AIR"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"DIRT"},{"x":21,"y":1,"type":"DIRT"},{"x":22,"y":1,"type":"AIR"},{"x":23,"y":1,"type":"DIRT"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"DIRT"},{"x":12,"y":2,"type":"DIRT"},{"x":13,"y":2,"type":"DIRT"},{"x":14,"y":2,"type":"DIRT"},{"x":15,"y":2,"type":"AIR"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"AIR"},{"x":18,"y":2,"type":"DIRT"},{"x":19,"y":2,"type":"DIRT"},{"x":20,"y":2,"type":"DIRT"},{"x":21,"y":2,"type":"DIRT"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"DIRT"},{"x":12,"y":3,"type":"DIRT"},{"x":13,"y":3,"type":"DIRT"},{"x":14,"y":3,"type":"AIR"},{"x":15,"y":3,"type":"AIR"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"AIR"},{"x":18,"y":3,"type":"AIR"},{"x":19,"y":3,"type":"DIRT"},{"x":20,"y":3,"type":"DIRT"},{"x":21,"y":3,"type":"DIRT"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"DIRT"},{"x":5,"y":4,"type":"DIRT"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":4},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"DIRT"},{"x":12,"y":4,"type":"AIR"},{"x":13,"y":4,"type":"AIR"},{"x":14,"y":4,"type":"AIR"},{"x":15,"y":4,"type":"AIR"},{"x":16,"y":4,"type":"AIR"},{"x":17,"y":4,"type":"AIR"},{"x":18,"y":4,"type":"AIR"},{"x":19,"y":4,"type":"AIR"},{"x":20,"y":4,"type":"AIR"},{"x":21,"y":4,"type":"DIRT"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"DIRT"},{"x":28,"y":4,"type":"DIRT"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"DIRT"},{"x":5,"y":5,"type":"DIRT"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"DIRT"},{"x":13,"y":5,"type":"DIRT"},{"x":14,"y":5,"type":"AIR"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"AIR"},{"x":19,"y":5,"type":"DIRT"},{"x":20,"y":5,"type":"DIRT"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"DIRT"},{"x":28,"y":5,"type":"DIRT"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"AIR"},{"x":4,"y":6,"type":"DIRT"},{"x":5,"y":6,"type":"DIRT"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"AIR"},{"x":12,"y":6,"type":"AIR"},{"x":13,"y":6,"type":"DIRT"},{"x":14,"y":6,"type":"DIRT"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"DIRT"},{"x":19,"y":6,"type":"DIRT"},{"x":20,"y":6,"type":"AIR"},{"x":21,"y":6,"type":"AIR"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"DIRT"},{"x":28,"y":6,"type":"DIRT"},{"x":29,"y":6,"type":"AIR"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"DIRT"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"DIRT"},{"x":5,"y":7,"type":"DIRT"},{"x":6,"y":7,"type":"DIRT"},{"x":7,"y":7,"type":"AIR"},{"x":8,"y":7,"type":"AIR"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"DIRT"},{"x":12,"y":7,"type":"DIRT"},{"x":13,"y":7,"type":"DIRT"},{"x":14,"y":7,"type":"DIRT"},{"x":15,"y":7,"type":"DIRT"},{"x":16,"y":7,"type":"AIR"},{"x":17,"y":7,"type":"DIRT"},{"x":18,"y":7,"type":"DIRT"},{"x":19,"y":7,"type":"DIRT"},{"x":20,"y":7,"type":"DIRT"},{"x":21,"y":7,"type":"DIRT"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"AIR"},{"x":25,"y":7,"type":"AIR"},{"x":26,"y":7,"type":"DIRT"},{"x":27,"y":7,"type":"DIRT"},{"x":28,"y":7,"type":"DIRT"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"DIRT"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"DIRT"},{"x":2,"y":8,"type":"DIRT"},{"x":3,"y":8,"type":"AIR"},{"x":4,"y":8,"type":"AIR"},{"x":5,"y":8,"type":"DIRT"},{"x":6,"y":8,"type":"DIRT"},{"x":7,"y":8,"type":"AIR"},{"x":8,"y":8,"type":"AIR"},{"x":9,"y":8,"type":"AIR"},{"x":10,"y":8,"type":"AIR"},{"x":11,"y":8,"type":"DIRT"},{"x":12,"y":8,"type":"DIRT"},{"x":13,"y":8,"type":"AIR"},{"x":14,"y":8,"type":"AIR"},{"x":15,"y":8,"type":"AIR"},{"x":16,"y":8,"type":"DIRT"},{"x":17,"y":8,"type":"AIR"},{"x":18,"y":8,"type":"AIR"},{"x":19,"y":8,"type":"AIR"},{"x":20,"y":8,"type":"DIRT"},{"x":21,"y":8,"type":"DIRT"},{"x":22,"y":8,"type":"AIR"},{"x":23,"y":8,"type":"AIR"},{"x":24,"y":8,"type":"AIR"},{"x":25,"y":8,"type":"AIR"},{"x":26,"y":8,"type":"DIRT"},{"x":27,"y":8,"type":"DIRT"},{"x":28,"y":8,"type":"AIR"},{"x":29,"y":8,"type":"AIR"},{"x":30,"y":8,"type":"DIRT"},{"x":31,"y":8,"type":"DIRT"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"DIRT"},{"x":2,"y":9,"type":"DIRT"},{"x":3,"y":9,"type":"AIR"},{"x":4,"y":9,"type":"AIR"},{"x":5,"y":9,"type":"DIRT"},{"x":6,"y":9,"type":"DIRT"},{"x":7,"y":9,"type":"AIR"},{"x":8,"y":9,"type":"AIR"},{"x":9,"y":9,"type":"AIR"},{"x":10,"y":9,"type":"DIRT"},{"x":11,"y":9,"type":"DIRT"},{"x":12,"y":9,"type":"AIR"},{"x":13,"y":9,"type":"AIR"},{"x":14,"y":9,"type":"DIRT"},{"x":15,"y":9,"type":"AIR"},{"x":16,"y":9,"type":"DIRT"},{"x":17,"y":9,"type":"AIR"},{"x":18,"y":9,"type":"DIRT"},{"x":19,"y":9,"type":"AIR"},{"x":20,"y":9,"type":"AIR"},{"x":21,"y":9,"type":"DIRT"},{"x":22,"y":9,"type":"DIRT"},{"x":23,"y":9,"type":"AIR"},{"x":24,"y":9,"type":"AIR"},{"x":25,"y":9,"type":"AIR"},{"x":26,"y":9,"type":"DIRT"},{"x":27,"y":9,"type":"DIRT"},{"x":28,"y":9,"type":"AIR"},{"x":29,"y":9,"type":"AIR"},{"x":30,"y":9,"type":"DIRT"},{"x":31,"y":9,"type":"DIRT"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"DIRT"},{"x":2,"y":10,"type":"DIRT"},{"x":3,"y":10,"type":"DIRT"},{"x":4,"y":10,"type":"DIRT"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"AIR"},{"x":7,"y":10,"type":"AIR"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"AIR"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"AIR"},{"x":12,"y":10,"type":"AIR"},{"x":13,"y":10,"type":"AIR"},{"x":14,"y":10,"type":"DIRT"},{"x":15,"y":10,"type":"AIR"},{"x":16,"y":10,"type":"AIR"},{"x":17,"y":10,"type":"AIR"},{"x":18,"y":10,"type":"DIRT"},{"x":19,"y":10,"type":"AIR"},{"x":20,"y":10,"type":"AIR"},{"x":21,"y":10,"type":"AIR"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"AIR"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"AIR"},{"x":26,"y":10,"type":"AIR"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"DIRT"},{"x":29,"y":10,"type":"DIRT"},{"x":30,"y":10,"type":"DIRT"},{"x":31,"y":10,"type":"DIRT"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"DIRT"},{"x":1,"y":11,"type":"DIRT"},{"x":2,"y":11,"type":"DIRT"},{"x":3,"y":11,"type":"DIRT"},{"x":4,"y":11,"type":"DIRT"},{"x":5,"y":11,"type":"DIRT"},{"x":6,"y":11,"type":"AIR"},{"x":7,"y":11,"type":"AIR"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"AIR"},{"x":10,"y":11,"type":"AIR"},{"x":11,"y":11,"type":"AIR"},{"x":12,"y":11,"type":"AIR"},{"x":13,"y":11,"type":"AIR"},{"x":14,"y":11,"type":"DIRT"},{"x":15,"y":11,"type":"DIRT"},{"x":16,"y":11,"type":"DIRT"},{"x":17,"y":11,"type":"DIRT"},{"x":18,"y":11,"type":"DIRT"},{"x":19,"y":11,"type":"AIR"},{"x":20,"y":11,"type":"AIR"},{"x":21,"y":11,"type":"AIR"},{"x":22,"y":11,"type":"AIR"},{"x":23,"y":11,"type":"AIR"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"AIR"},{"x":26,"y":11,"type":"AIR"},{"x":27,"y":11,"type":"DIRT"},{"x":28,"y":11,"type":"DIRT"},{"x":29,"y":11,"type":"DIRT"},{"x":30,"y":11,"type":"DIRT"},{"x":31,"y":11,"type":"DIRT"},{"x":32,"y":11,"type":"DIRT"}],[{"x":0,"y":12,"type":"DIRT"},{"x":1,"y":12,"type":"DIRT"},{"x":2,"y":12,"type":"AIR"},{"x":3,"y":12,"type":"DIRT"},{"x":4,"y":12,"type":"DIRT"},{"x":5,"y":12,"type":"DIRT"},{"x":6,"y":12,"type":"DIRT"},{"x":7,"y":12,"type":"AIR"},{"x":8,"y":12,"type":"AIR"},{"x":9,"y":12,"type":"AIR"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"AIR"},{"x":12,"y":12,"type":"DIRT"},{"x":13,"y":12,"type":"DIRT"},{"x":14,"y":12,"type":"AIR"},{"x":15,"y":12,"type":"AIR"},{"x":16,"y":12,"type":"DIRT"},{"x":17,"y":12,"type":"AIR"},{"x":18,"y":12,"type":"AIR"},{"x":19,"y":12,"type":"DIRT"},{"x":20,"y":12,"type":"DIRT"},{"x":21,"y":12,"type":"AIR"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"AIR"},{"x":24,"y":12,"type":"AIR"},{"x":25,"y":12,"type":"AIR"},{"x":26,"y":12,"type":"DIRT"},{"x":27,"y":12,"type":"DIRT"},{"x":28,"y":12,"type":"DIRT"},{"x":29,"y":12,"type":"DIRT"},{"x":30,"y":12,"type":"AIR"},{"x":31,"y":12,"type":"DIRT"},{"x":32,"y":12,"type":"DIRT"}],[{"x":0,"y":13,"type":"DIRT"},{"x":1,"y":13,"type":"AIR"},{"x":2,"y":13,"type":"AIR"},{"x":3,"y":13,"type":"DIRT"},{"x":4,"y":13,"type":"DIRT"},{"x":5,"y":13,"type":"DIRT"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"AIR"},{"x":8,"y":13,"type":"AIR"},{"x":9,"y":13,"type":"AIR"},{"x":10,"y":13,"type":"AIR"},{"x":11,"y":13,"type":"AIR"},{"x":12,"y":13,"type":"DIRT"},{"x":13,"y":13,"type":"DIRT"},{"x":14,"y":13,"type":"AIR"},{"x":15,"y":13,"type":"AIR"},{"x":16,"y":13,"type":"AIR"},{"x":17,"y":13,"type":"AIR"},{"x":18,"y":13,"type":"AIR"},{"x":19,"y":13,"type":"DIRT"},{"x":20,"y":13,"type":"DIRT"},{"x":21,"y":13,"type":"AIR"},{"x":22,"y":13,"type":"AIR"},{"x":23,"y":13,"type":"AIR"},{"x":24,"y":13,"type":"AIR"},{"x":25,"y":13,"type":"AIR"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"DIRT"},{"x":28,"y":13,"type":"DIRT"},{"x":29,"y":13,"type":"DIRT"},{"x":30,"y":13,"type":"AIR"},{"x":31,"y":13,"type":"AIR"},{"x":32,"y":13,"type":"DIRT"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"DIRT"},{"x":5,"y":14,"type":"DIRT"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"AIR"},{"x":8,"y":14,"type":"AIR"},{"x":9,"y":14,"type":"DIRT"},{"x":10,"y":14,"type":"DIRT"},{"x":11,"y":14,"type":"DIRT"},{"x":12,"y":14,"type":"DIRT"},{"x":13,"y":14,"type":"DIRT"},{"x":14,"y":14,"type":"DIRT"},{"x":15,"y":14,"type":"AIR"},{"x":16,"y":14,"type":"AIR"},{"x":17,"y":14,"type":"AIR"},{"x":18,"y":14,"type":"DIRT"},{"x":19,"y":14,"type":"DIRT"},{"x":20,"y":14,"type":"DIRT"},{"x":21,"y":14,"type":"DIRT"},{"x":22,"y":14,"type":"DIRT"},{"x":23,"y":14,"type":"DIRT"},{"x":24,"y":14,"type":"AIR"},{"x":25,"y":14,"type":"AIR"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"DIRT"},{"x":28,"y":14,"type":"DIRT"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"DIRT"},{"x":5,"y":15,"type":"AIR"},{"x":6,"y":15,"type":"AIR"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"DIRT"},{"x":9,"y":15,"type":"AIR"},{"x":10,"y":15,"type":"DIRT"},{"x":11,"y":15,"type":"DIRT"},{"x":12,"y":15,"type":"DIRT"},{"x":13,"y":15,"type":"DIRT"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"AIR"},{"x":16,"y":15,"type":"DIRT"},{"x":17,"y":15,"type":"AIR"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"DIRT"},{"x":20,"y":15,"type":"DIRT"},{"x":21,"y":15,"type":"DIRT"},{"x":22,"y":15,"type":"DIRT"},{"x":23,"y":15,"type":"AIR"},{"x":24,"y":15,"type":"DIRT"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"AIR"},{"x":27,"y":15,"type":"AIR"},{"x":28,"y":15,"type":"DIRT"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":1,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"AIR"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"DIRT"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"DIRT"},{"x":10,"y":16,"type":"DIRT"},{"x":11,"y":16,"type":"DIRT"},{"x":12,"y":16,"type":"DIRT"},{"x":13,"y":16,"type":"DIRT"},{"x":14,"y":16,"type":"DIRT"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"DIRT"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"DIRT"},{"x":19,"y":16,"type":"DIRT"},{"x":20,"y":16,"type":"DIRT"},{"x":21,"y":16,"type":"DIRT"},{"x":22,"y":16,"type":"DIRT"},{"x":23,"y":16,"type":"DIRT"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"DIRT"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"AIR"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":31,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"DIRT"},{"x":5,"y":17,"type":"DIRT"},{"x":6,"y":17,"type":"DIRT"},{"x":7,"y":17,"type":"DIRT"},{"x":8,"y":17,"type":"AIR"},{"x":9,"y":17,"type":"DIRT"},{"x":10,"y":17,"type":"DIRT"},{"x":11,"y":17,"type":"AIR"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"DIRT"},{"x":14,"y":17,"type":"DIRT"},{"x":15,"y":17,"type":"AIR"},{"x":16,"y":17,"type":"AIR"},{"x":17,"y":17,"type":"AIR"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"DIRT"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"AIR"},{"x":22,"y":17,"type":"DIRT"},{"x":23,"y":17,"type":"DIRT"},{"x":24,"y":17,"type":"AIR"},{"x":25,"y":17,"type":"DIRT"},{"x":26,"y":17,"type":"DIRT"},{"x":27,"y":17,"type":"DIRT"},{"x":28,"y":17,"type":"DIRT"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"DIRT"},{"x":5,"y":18,"type":"DIRT"},{"x":6,"y":18,"type":"DIRT"},{"x":7,"y":18,"type":"DIRT"},{"x":8,"y":18,"type":"DIRT"},{"x":9,"y":18,"type":"AIR"},{"x":10,"y":18,"type":"AIR"},{"x":11,"y":18,"type":"DIRT"},{"x":12,"y":18,"type":"DIRT"},{"x":13,"y":18,"type":"DIRT"},{"x":14,"y":18,"type":"AIR"},{"x":15,"y":18,"type":"AIR"},{"x":16,"y":18,"type":"AIR"},{"x":17,"y":18,"type":"AIR"},{"x":18,"y":18,"type":"AIR"},{"x":19,"y":18,"type":"DIRT"},{"x":20,"y":18,"type":"DIRT"},{"x":21,"y":18,"type":"DIRT"},{"x":22,"y":18,"type":"AIR"},{"x":23,"y":18,"type":"AIR"},{"x":24,"y":18,"type":"DIRT"},{"x":25,"y":18,"type":"DIRT"},{"x":26,"y":18,"type":"DIRT"},{"x":27,"y":18,"type":"DIRT"},{"x":28,"y":18,"type":"DIRT"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"AIR"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"DIRT"},{"x":3,"y":19,"type":"AIR"},{"x":4,"y":19,"type":"AIR"},{"x":5,"y":19,"type":"AIR"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"AIR"},{"x":8,"y":19,"type":"DIRT"},{"x":9,"y":19,"type":"AIR"},{"x":10,"y":19,"type":"AIR"},{"x":11,"y":19,"type":"DIRT"},{"x":12,"y":19,"type":"DIRT"},{"x":13,"y":19,"type":"AIR"},{"x":14,"y":19,"type":"AIR"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"AIR"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"AIR"},{"x":19,"y":19,"type":"AIR"},{"x":20,"y":19,"type":"DIRT"},{"x":21,"y":19,"type":"DIRT"},{"x":22,"y":19,"type":"AIR"},{"x":23,"y":19,"type":"AIR"},{"x":24,"y":19,"type":"DIRT"},{"x":25,"y":19,"type":"AIR"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"AIR"},{"x":28,"y":19,"type":"AIR"},{"x":29,"y":19,"type":"AIR"},{"x":30,"y":19,"type":"DIRT"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"AIR"}],[{"x":0,"y":20,"type":"AIR"},{"x":1,"y":20,"type":"AIR"},{"x":2,"y":20,"type":"DIRT"},{"x":3,"y":20,"type":"DIRT"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"AIR"},{"x":6,"y":20,"type":"AIR"},{"x":7,"y":20,"type":"AIR"},{"x":8,"y":20,"type":"AIR"},{"x":9,"y":20,"type":"AIR"},{"x":10,"y":20,"type":"AIR"},{"x":11,"y":20,"type":"DIRT"},{"x":12,"y":20,"type":"DIRT"},{"x":13,"y":20,"type":"DIRT"},{"x":14,"y":20,"type":"AIR"},{"x":15,"y":20,"type":"AIR"},{"x":16,"y":20,"type":"AIR"},{"x":17,"y":20,"type":"AIR"},{"x":18,"y":20,"type":"AIR"},{"x":19,"y":20,"type":"DIRT"},{"x":20,"y":20,"type":"DIRT"},{"x":21,"y":20,"type":"DIRT"},{"x":22,"y":20,"type":"AIR"},{"x":23,"y":20,"type":"AIR"},{"x":24,"y":20,"type":"AIR"},{"x":25,"y":20,"type":"AIR"},{"x":26,"y":20,"type":"AIR"},{"x":27,"y":20,"type":"AIR"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"DIRT"},{"x":30,"y":20,"type":"DIRT"},{"x":31,"y":20,"type":"AIR"},{"x":32,"y":20,"type":"AIR"}],[{"x":0,"y":21,"type":"AIR"},{"x":1,"y":21,"type":"DIRT"},{"x":2,"y":21,"type":"DIRT"},{"x":3,"y":21,"type":"DIRT"},{"x":4,"y":21,"type":"DIRT"},{"x":5,"y":21,"type":"AIR"},{"x":6,"y":21,"type":"AIR"},{"x":7,"y":21,"type":"AIR"},{"x":8,"y":21,"type":"AIR"},{"x":9,"y":21,"type":"AIR"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"DIRT"},{"x":12,"y":21,"type":"DIRT"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"DIRT"},{"x":15,"y":21,"type":"AIR"},{"x":16,"y":21,"type":"AIR"},{"x":17,"y":21,"type":"AIR"},{"x":18,"y":21,"type":"DIRT"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"DIRT"},{"x":21,"y":21,"type":"DIRT"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"AIR"},{"x":24,"y":21,"type":"AIR"},{"x":25,"y":21,"type":"AIR"},{"x":26,"y":21,"type":"AIR"},{"x":27,"y":21,"type":"AIR"},{"x":28,"y":21,"type":"DIRT"},{"x":29,"y":21,"type":"DIRT"},{"x":30,"y":21,"type":"DIRT"},{"x":31,"y":21,"type":"DIRT"},{"x":32,"y":21,"type":"AIR"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"DIRT"},{"x":2,"y":22,"type":"AIR"},{"x":3,"y":22,"type":"DIRT"},{"x":4,"y":22,"type":"DIRT"},{"x":5,"y":22,"type":"AIR"},{"x":6,"y":22,"type":"AIR"},{"x":7,"y":22,"type":"AIR"},{"x":8,"y":22,"type":"AIR"},{"x":9,"y":22,"type":"AIR"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"AIR"},{"x":13,"y":22,"type":"AIR"},{"x":14,"y":22,"type":"DIRT"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"DIRT"},{"x":19,"y":22,"type":"AIR"},{"x":20,"y":22,"type":"AIR"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"AIR"},{"x":24,"y":22,"type":"AIR"},{"x":25,"y":22,"type":"AIR"},{"x":26,"y":22,"type":"AIR"},{"x":27,"y":22,"type":"AIR"},{"x":28,"y":22,"type":"DIRT"},{"x":29,"y":22,"type":"DIRT"},{"x":30,"y":22,"type":"AIR"},{"x":31,"y":22,"type":"DIRT"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"DIRT"},{"x":2,"y":23,"type":"AIR"},{"x":3,"y":23,"type":"DIRT"},{"x":4,"y":23,"type":"DIRT"},{"x":5,"y":23,"type":"DIRT"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"AIR"},{"x":8,"y":23,"type":"DIRT"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"AIR"},{"x":13,"y":23,"type":"AIR"},{"x":14,"y":23,"type":"DIRT"},{"x":15,"y":23,"type":"AIR"},{"x":16,"y":23,"type":"AIR"},{"x":17,"y":23,"type":"AIR"},{"x":18,"y":23,"type":"DIRT"},{"x":19,"y":23,"type":"AIR"},{"x":20,"y":23,"type":"AIR"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"DIRT"},{"x":25,"y":23,"type":"AIR"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"DIRT"},{"x":28,"y":23,"type":"DIRT"},{"x":29,"y":23,"type":"DIRT"},{"x":30,"y":23,"type":"AIR"},{"x":31,"y":23,"type":"DIRT"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"DIRT"},{"x":2,"y":24,"type":"DIRT"},{"x":3,"y":24,"type":"DIRT"},{"x":4,"y":24,"type":"DIRT"},{"x":5,"y":24,"type":"DIRT"},{"x":6,"y":24,"type":"AIR"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"DIRT"},{"x":9,"y":24,"type":"AIR"},{"x":10,"y":24,"type":"AIR"},{"x":11,"y":24,"type":"AIR"},{"x":12,"y":24,"type":"AIR"},{"x":13,"y":24,"type":"AIR"},{"x":14,"y":24,"type":"DIRT"},{"x":15,"y":24,"type":"DIRT"},{"x":16,"y":24,"type":"DIRT"},{"x":17,"y":24,"type":"DIRT"},{"x":18,"y":24,"type":"DIRT"},{"x":19,"y":24,"type":"AIR"},{"x":20,"y":24,"type":"AIR"},{"x":21,"y":24,"type":"AIR"},{"x":22,"y":24,"type":"AIR"},{"x":23,"y":24,"type":"AIR"},{"x":24,"y":24,"type":"DIRT"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"AIR"},{"x":27,"y":24,"type":"DIRT"},{"x":28,"y":24,"type":"DIRT"},{"x":29,"y":24,"type":"DIRT"},{"x":30,"y":24,"type":"DIRT"},{"x":31,"y":24,"type":"DIRT"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"DIRT"},{"x":3,"y":25,"type":"AIR"},{"x":4,"y":25,"type":"DIRT"},{"x":5,"y":25,"type":"DIRT"},{"x":6,"y":25,"type":"AIR"},{"x":7,"y":25,"type":"AIR"},{"x":8,"y":25,"type":"DIRT"},{"x":9,"y":25,"type":"DIRT"},{"x":10,"y":25,"type":"AIR"},{"x":11,"y":25,"type":"AIR"},{"x":12,"y":25,"type":"AIR"},{"x":13,"y":25,"type":"AIR"},{"x":14,"y":25,"type":"DIRT"},{"x":15,"y":25,"type":"AIR"},{"x":16,"y":25,"type":"DIRT"},{"x":17,"y":25,"type":"AIR"},{"x":18,"y":25,"type":"DIRT"},{"x":19,"y":25,"type":"AIR"},{"x":20,"y":25,"type":"AIR"},{"x":21,"y":25,"type":"AIR"},{"x":22,"y":25,"type":"AIR"},{"x":23,"y":25,"type":"DIRT"},{"x":24,"y":25,"type":"DIRT"},{"x":25,"y":25,"type":"AIR"},{"x":26,"y":25,"type":"AIR"},{"x":27,"y":25,"type":"DIRT"},{"x":28,"y":25,"type":"DIRT"},{"x":29,"y":25,"type":"AIR"},{"x":30,"y":25,"type":"DIRT"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"AIR"},{"x":5,"y":26,"type":"AIR"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"AIR"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"AIR"},{"x":14,"y":26,"type":"AIR"},{"x":15,"y":26,"type":"DIRT"},{"x":16,"y":26,"type":"DIRT"},{"x":17,"y":26,"type":"DIRT"},{"x":18,"y":26,"type":"AIR"},{"x":19,"y":26,"type":"AIR"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"AIR"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"AIR"},{"x":28,"y":26,"type":"AIR"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"AIR"},{"x":5,"y":27,"type":"AIR"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"AIR"},{"x":14,"y":27,"type":"AIR"},{"x":15,"y":27,"type":"DIRT"},{"x":16,"y":27,"type":"DIRT"},{"x":17,"y":27,"type":"DIRT"},{"x":18,"y":27,"type":"AIR"},{"x":19,"y":27,"type":"AIR"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"AIR"},{"x":28,"y":27,"type":"AIR"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"AIR"},{"x":5,"y":28,"type":"AIR"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":8,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"DIRT"},{"x":12,"y":28,"type":"AIR"},{"x":13,"y":28,"type":"AIR"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"DIRT"},{"x":16,"y":28,"type":"DIRT"},{"x":17,"y":28,"type":"DIRT"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"AIR"},{"x":20,"y":28,"type":"AIR"},{"x":21,"y":28,"type":"DIRT"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":24,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"AIR"},{"x":28,"y":28,"type":"AIR"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"DIRT"},{"x":12,"y":29,"type":"AIR"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"DIRT"},{"x":15,"y":29,"type":"DIRT"},{"x":16,"y":29,"type":"DIRT"},{"x":17,"y":29,"type":"DIRT"},{"x":18,"y":29,"type":"DIRT"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"AIR"},{"x":21,"y":29,"type":"DIRT"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"DIRT"},{"x":12,"y":30,"type":"AIR"},{"x":13,"y":30,"type":"AIR"},{"x":14,"y":30,"type":"DIRT"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"AIR"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"DIRT"},{"x":19,"y":30,"type":"AIR"},{"x":20,"y":30,"type":"AIR"},{"x":21,"y":30,"type":"DIRT"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"DIRT"},{"x":9,"y":31,"type":"DIRT"},{"x":10,"y":31,"type":"DIRT"},{"x":11,"y":31,"type":"DIRT"},{"x":12,"y":31,"type":"AIR"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"AIR"},{"x":16,"y":31,"type":"AIR"},{"x":17,"y":31,"type":"AIR"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"AIR"},{"x":21,"y":31,"type":"DIRT"},{"x":22,"y":31,"type":"DIRT"},{"x":23,"y":31,"type":"DIRT"},{"x":24,"y":31,"type":"DIRT"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"DIRT"},{"x":12,"y":32,"type":"DIRT"},{"x":13,"y":32,"type":"DIRT"},{"x":14,"y":32,"type":"AIR"},{"x":15,"y":32,"type":"AIR"},{"x":16,"y":32,"type":"DIRT"},{"x":17,"y":32,"type":"AIR"},{"x":18,"y":32,"type":"AIR"},{"x":19,"y":32,"type":"DIRT"},{"x":20,"y":32,"type":"DIRT"},{"x":21,"y":32,"type":"DIRT"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/2019-worms/tests/replays/2019.08.19.21.57.04/B-log.csv b/2019-worms/tests/replays/2019.08.19.21.57.04/B-log.csv new file mode 100644 index 0000000..cc2bfa5 --- /dev/null +++ b/2019-worms/tests/replays/2019.08.19.21.57.04/B-log.csv @@ -0,0 +1,214 @@ +Round,LastCommandType,LastCommand,ActiveWorm,Score,Health,Worm1 Health,Worm1 x,Worm1 y,Worm2 Health,Worm2 x,Worm2 y,Worm3 Health,Worm3 x,Worm3 y +1,null,"null",1,116,350,150,8,28,100,8,4,100,31,16 +2,move,"move 9 27",1,121,350,150,9,27,100,8,4,100,31,16 +3,move,"move 9 5",2,126,350,150,9,27,100,9,5,100,31,16 +4,move,"move 30 17",3,131,350,150,9,27,100,9,5,100,30,17 +5,dig,"dig 10 26",1,138,350,150,9,27,100,9,5,100,30,17 +6,dig,"dig 10 6",2,145,350,150,9,27,100,9,5,100,30,17 +7,dig,"dig 29 17",3,152,350,150,9,27,100,9,5,100,30,17 +8,move,"move 10 26",1,157,350,150,10,26,100,9,5,100,30,17 +9,move,"move 10 6",2,162,350,150,10,26,100,10,6,100,30,17 +10,move,"move 29 17",3,167,350,150,10,26,100,10,6,100,29,17 +11,move,"move 11 25",1,172,350,150,11,25,100,10,6,100,29,17 +12,dig,"dig 11 7",2,179,350,150,11,25,100,10,6,100,29,17 +13,dig,"dig 28 17",3,186,350,150,11,25,100,10,6,100,29,17 +14,move,"move 12 24",1,191,350,150,12,24,100,10,6,100,29,17 +15,move,"move 11 7",2,196,350,150,12,24,100,11,7,100,29,17 +16,move,"move 28 17",3,201,350,150,12,24,100,11,7,100,28,17 +17,move,"move 13 23",1,206,350,150,13,23,100,11,7,100,28,17 +18,dig,"dig 12 8",2,213,350,150,13,23,100,11,7,100,28,17 +19,dig,"dig 27 17",3,220,350,150,13,23,100,11,7,100,28,17 +20,dig,"dig 14 22",1,227,350,150,13,23,100,11,7,100,28,17 +21,move,"move 12 8",2,232,350,150,13,23,100,12,8,100,28,17 +22,move,"move 27 17",3,237,350,150,13,23,100,12,8,100,27,17 +23,move,"move 14 22",1,242,350,150,14,22,100,12,8,100,27,17 +24,move,"move 13 9",2,247,350,150,14,22,100,13,9,100,27,17 +25,dig,"dig 26 17",3,254,350,150,14,22,100,13,9,100,27,17 +26,move,"move 15 21",1,259,350,150,15,21,100,13,9,100,27,17 +27,dig,"dig 14 10",2,266,350,150,15,21,100,13,9,100,27,17 +28,move,"move 26 17",3,271,350,150,15,21,100,13,9,100,26,17 +29,move,"move 16 20",1,276,350,150,16,20,100,13,9,100,26,17 +30,move,"move 14 10",2,281,350,150,16,20,100,14,10,100,26,17 +31,dig,"dig 25 17",3,288,350,150,16,20,100,14,10,100,26,17 +32,move,"move 17 19",1,293,350,150,17,19,100,14,10,100,26,17 +33,dig,"dig 14 11",2,300,350,150,17,19,100,14,10,100,26,17 +34,move,"move 25 17",3,305,350,150,17,19,100,14,10,100,25,17 +35,move,"move 18 18",1,310,350,150,18,18,100,14,10,100,25,17 +36,move,"move 14 11",2,315,350,150,18,18,100,14,11,100,25,17 +37,move,"move 24 17",3,320,350,150,18,18,100,14,11,100,24,17 +38,move,"move 18 17",1,329,360,160,18,17,100,14,11,100,24,17 +39,move,"move 14 12",2,334,360,160,18,17,100,14,12,100,24,17 +40,dig,"dig 23 16",3,341,360,160,18,17,100,14,12,100,24,17 +41,move,"move 17 16",1,346,360,160,17,16,100,14,12,100,24,17 +42,move,"move 14 13",2,351,360,160,17,16,100,14,13,100,24,17 +43,move,"move 23 16",3,356,360,160,17,16,100,14,13,100,23,16 +44,dig,"dig 16 15",1,363,360,160,17,16,100,14,13,100,23,16 +45,dig,"dig 14 14",2,370,360,160,17,16,100,14,13,100,23,16 +46,dig,"dig 22 15",3,377,360,160,17,16,100,14,13,100,23,16 +47,move,"move 16 15",1,382,360,160,16,15,100,14,13,100,23,16 +48,move,"move 14 14",2,387,360,160,16,15,100,14,14,100,23,16 +49,move,"move 22 15",3,392,360,160,16,15,100,14,14,100,22,15 +50,move,"move 15 15",1,397,360,160,15,15,100,14,14,100,22,15 +51,move,"move 14 15",2,405,370,160,15,15,110,14,15,100,22,15 +52,dig,"dig 23 14",3,412,370,160,15,15,110,14,15,100,22,15 +53,move,"move 16 14",1,417,370,160,16,14,110,14,15,100,22,15 +54,move,"move 15 14",2,422,370,160,16,14,110,15,14,100,22,15 +55,move,"move 23 14",3,427,370,160,16,14,110,15,14,100,23,14 +56,move,"move 17 13",1,432,370,160,17,13,110,15,14,100,23,14 +57,move,"move 16 13",2,437,370,160,17,13,110,16,13,100,23,14 +58,move,"move 22 13",3,442,370,160,17,13,110,16,13,100,22,13 +59,move,"move 18 12",1,447,370,160,18,12,110,16,13,100,22,13 +60,move,"move 17 12",2,452,370,160,18,12,110,17,12,100,22,13 +61,move,"move 23 12",3,457,370,160,18,12,110,17,12,100,23,12 +62,move,"move 19 11",1,462,370,160,19,11,110,17,12,100,23,12 +63,dig,"dig 18 11",2,469,370,160,19,11,110,17,12,100,23,12 +64,move,"move 22 11",3,474,370,160,19,11,110,17,12,100,22,11 +65,move,"move 20 10",1,479,370,160,20,10,110,17,12,100,22,11 +66,move,"move 18 11",2,484,370,160,20,10,110,18,11,100,22,11 +67,move,"move 23 10",3,489,370,160,20,10,110,18,11,100,23,10 +68,dig,"dig 21 9",1,496,370,160,20,10,110,18,11,100,23,10 +69,move,"move 19 10",2,501,370,160,20,10,110,19,10,100,23,10 +70,move,"move 24 9",3,506,370,160,20,10,110,19,10,100,24,9 +71,move,"move 21 9",1,511,370,160,21,9,110,19,10,100,24,9 +72,move,"move 20 9",2,516,370,160,21,9,110,20,9,100,24,9 +73,move,"move 25 8",3,521,370,160,21,9,110,20,9,100,25,8 +74,move,"move 22 8",1,526,370,160,22,8,110,20,9,100,25,8 +75,dig,"dig 21 8",2,533,370,160,22,8,110,20,9,100,25,8 +76,snowball,"snowball 25 3",3,550,370,160,22,8,110,20,9,100,25,8 +77,move,"move 23 7",1,555,370,160,23,7,110,20,9,100,25,8 +78,move,"move 21 8",2,560,370,160,23,7,110,21,8,100,25,8 +79,move,"move 25 7",3,565,370,160,23,7,110,21,8,100,25,7 +80,dig,"dig 24 6",1,572,370,160,23,7,110,21,8,100,25,7 +81,move,"move 22 7",2,577,370,160,23,7,110,22,7,100,25,7 +82,snowball,"snowball 25 3",3,594,370,160,23,7,110,22,7,100,25,7 +83,move,"move 24 6",1,599,370,160,24,6,110,22,7,100,25,7 +84,banana,"banana 25 3",2,660,370,160,24,6,110,22,7,100,25,7 +85,dig,"dig 25 6",3,667,370,160,24,6,110,22,7,100,25,7 +86,shoot,"shoot N",3,683,370,160,24,6,110,22,7,100,25,7 +87,shoot,"shoot N",3,696,362,160,24,6,110,22,7,92,25,7 +88,shoot,"shoot N",3,710,354,160,24,6,110,22,7,84,25,7 +89,shoot,"shoot N",3,723,346,160,24,6,110,22,7,76,25,7 +90,shoot,"shoot N",3,736,338,160,24,6,110,22,7,68,25,7 +91,move,"move 25 5",1,741,338,160,25,5,110,22,7,68,25,7 +92,banana,"banana 25 3",2,762,323,145,25,5,110,22,7,68,25,7 +93,snowball,"snowball 25 3",3,779,323,145,25,5,110,22,7,68,25,7 +94,shoot,"shoot N",1,795,323,145,25,5,110,22,7,68,25,7 +95,banana,"banana 25 3",2,819,316,138,25,5,110,22,7,68,25,7 +96,move,"move 25 6",3,824,316,138,25,5,110,22,7,68,25,6 +97,shoot,"shoot N",1,840,316,138,25,5,110,22,7,68,25,6 +98,dig,"dig 23 6",2,844,308,130,25,5,110,22,7,68,25,6 +99,move,"move 25 7",3,849,308,130,25,5,110,22,7,68,25,7 +100,shoot,"shoot N",1,865,308,130,25,5,110,22,7,68,25,7 +101,move,"move 23 6",2,868,300,122,25,5,110,23,6,68,25,7 +102,move,"move 25 6",3,873,300,122,25,5,110,23,6,68,25,6 +103,shoot,"shoot N",1,889,300,122,25,5,110,23,6,68,25,6 +104,move,"move 24 5",2,891,292,114,25,5,110,24,5,68,25,6 +105,move,"move 24 7",3,896,292,114,25,5,110,24,5,68,24,7 +106,shoot,"shoot N",1,912,292,114,25,5,110,24,5,68,24,7 +107,move,"move 25 4",2,914,284,114,25,5,102,25,4,68,24,7 +108,move,"move 25 8",3,919,284,114,25,5,102,25,4,68,25,8 +109,move,"move 25 6",1,924,284,114,25,6,102,25,4,68,25,8 +110,move,"move 25 5",2,929,284,114,25,6,102,25,5,68,25,8 +111,move,"move 24 9",3,934,284,114,25,6,102,25,5,68,24,9 +112,move,"move 24 7",1,939,284,114,24,7,102,25,5,68,24,9 +113,move,"move 25 6",2,944,284,114,24,7,102,25,6,68,24,9 +114,move,"move 25 10",3,949,284,114,24,7,102,25,6,68,25,10 +115,move,"move 25 8",1,954,284,114,25,8,102,25,6,68,25,10 +116,move,"move 25 7",2,959,284,114,25,8,102,25,7,68,25,10 +117,move,"move 25 11",3,964,284,114,25,8,102,25,7,68,25,11 +118,move,"move 25 9",1,969,284,114,25,9,102,25,7,68,25,11 +119,move,"move 24 8",2,974,284,114,25,9,102,24,8,68,25,11 +120,move,"move 24 12",3,979,284,114,25,9,102,24,8,68,24,12 +121,move,"move 25 10",1,984,284,114,25,10,102,24,8,68,24,12 +122,move,"move 25 9",2,989,284,114,25,10,102,25,9,68,24,12 +123,move,"move 25 13",3,994,284,114,25,10,102,25,9,68,25,13 +124,move,"move 26 11",1,999,284,114,26,11,102,25,9,68,25,13 +125,move,"move 25 10",2,1004,284,114,26,11,102,25,10,68,25,13 +126,move,"move 25 14",3,1009,284,114,26,11,102,25,10,68,25,14 +127,dig,"dig 26 12",1,1016,284,114,26,11,102,25,10,68,25,14 +128,move,"move 24 10",2,1021,284,114,26,11,102,24,10,68,25,14 +129,move,"move 26 13",3,1026,284,114,26,11,102,24,10,68,26,13 +130,move,"move 26 12",1,1031,284,114,26,12,102,24,10,68,26,13 +131,move,"move 25 11",2,1036,284,114,26,12,102,25,11,68,26,13 +132,move,"move 25 14",3,1041,284,114,26,12,102,25,11,68,25,14 +133,move,"move 26 13",1,1046,284,114,26,13,102,25,11,68,25,14 +134,move,"move 26 12",2,1051,284,114,26,13,102,26,12,68,25,14 +135,move,"move 26 15",3,1056,284,114,26,13,102,26,12,68,26,15 +136,move,"move 26 14",1,1061,284,114,26,14,102,26,12,68,26,15 +137,move,"move 26 13",2,1066,284,114,26,14,102,26,13,68,26,15 +138,dig,"dig 26 16",3,1073,284,114,26,14,102,26,13,68,26,15 +139,move,"move 25 15",1,1078,284,114,25,15,102,26,13,68,26,15 +140,move,"move 25 14",2,1073,253,101,25,15,95,25,14,57,26,15 +141,move,"move 25 16",3,1078,253,101,25,15,95,25,14,57,25,16 +142,invalid,"invalid",1,1061,213,88,25,15,88,25,14,37,25,16 +143,move,"move 26 14",2,1066,213,88,25,15,88,26,14,37,25,16 +144,move,"move 25 17",3,1061,184,77,25,15,81,26,14,26,25,17 +145,move,"move 25 16",1,1066,184,77,25,16,81,26,14,26,25,17 +146,move,"move 25 15",2,1068,176,77,25,16,81,25,15,18,25,17 +147,shoot,"shoot S",3,1084,176,77,25,16,81,25,15,18,25,17 +148,move,"move 24 15",1,1087,168,77,24,15,81,25,15,10,25,17 +149,move,"move 25 16",2,1092,168,77,24,15,81,25,16,10,25,17 +150,shoot,"shoot S",3,1105,160,77,24,15,81,25,16,2,25,17 +151,move,"move 24 16",1,1110,160,77,24,16,81,25,16,2,25,17 +152,move,"move 24 15",2,1114,158,77,24,16,81,24,15,-6,25,17 +153,move,"move 25 17",1,1119,158,77,25,17,81,24,15,-6,25,17 +154,move,"move 25 16",2,1122,150,69,25,17,81,25,16,-6,25,17 +155,shoot,"shoot S",1,1138,150,69,25,17,81,25,16,-6,25,17 +156,move,"move 24 15",2,1140,142,61,25,17,81,24,15,-6,25,17 +157,shoot,"shoot S",1,1156,142,61,25,17,81,24,15,-6,25,17 +158,move,"move 25 16",2,1158,134,53,25,17,81,25,16,-6,25,17 +159,shoot,"shoot S",1,1174,134,53,25,17,81,25,16,-6,25,17 +160,move,"move 24 15",2,1177,126,45,25,17,81,24,15,-6,25,17 +161,shoot,"shoot S",1,1193,126,45,25,17,81,24,15,-6,25,17 +162,move,"move 25 16",2,1195,118,37,25,17,81,25,16,-6,25,17 +163,shoot,"shoot S",1,1211,118,37,25,17,81,25,16,-6,25,17 +164,move,"move 24 17",2,1213,110,29,25,17,81,24,17,-6,25,17 +165,shoot,"shoot S",1,1229,110,29,25,17,81,24,17,-6,25,17 +166,move,"move 25 18",2,1232,102,29,25,17,73,25,18,-6,25,17 +167,move,"move 26 18",1,1237,102,29,26,18,73,25,18,-6,25,17 +168,shoot,"shoot S",2,1250,94,29,26,18,65,25,18,-6,25,17 +169,move,"move 25 19",1,1255,94,29,25,19,65,25,18,-6,25,17 +170,dig,"dig 24 18",2,1259,86,21,25,19,65,25,18,-6,25,17 +171,shoot,"shoot S",1,1275,86,21,25,19,65,25,18,-6,25,17 +172,move,"move 25 17",2,1278,78,13,25,19,65,25,17,-6,25,17 +173,shoot,"shoot S",1,1294,78,13,25,19,65,25,17,-6,25,17 +174,move,"move 25 18",2,1296,70,5,25,19,65,25,18,-6,25,17 +175,shoot,"shoot S",1,1312,70,5,25,19,65,25,18,-6,25,17 +176,move,"move 24 17",2,1315,65,-3,25,19,65,24,17,-6,25,17 +177,move,"move 25 18",2,1320,65,-3,25,19,65,25,18,-6,25,17 +178,shoot,"shoot S",2,1374,57,-3,25,19,57,25,18,-6,25,17 +179,move,"move 24 17",2,1379,57,-3,25,19,57,24,17,-6,25,17 +180,move,"move 23 16",2,1384,57,-3,25,19,57,23,16,-6,25,17 +181,dig,"dig 22 16",2,1391,57,-3,25,19,57,23,16,-6,25,17 +182,move,"move 22 15",2,1396,57,-3,25,19,57,22,15,-6,25,17 +183,dig,"dig 21 15",2,1403,57,-3,25,19,57,22,15,-6,25,17 +184,move,"move 21 15",2,1408,57,-3,25,19,57,21,15,-6,25,17 +185,dig,"dig 20 15",2,1415,57,-3,25,19,57,21,15,-6,25,17 +186,move,"move 20 15",2,1420,57,-3,25,19,57,20,15,-6,25,17 +187,dig,"dig 19 15",2,1427,57,-3,25,19,57,20,15,-6,25,17 +188,move,"move 19 15",2,1432,57,-3,25,19,57,19,15,-6,25,17 +189,move,"move 18 15",2,1437,57,-3,25,19,57,18,15,-6,25,17 +190,move,"move 17 15",2,1442,57,-3,25,19,57,17,15,-6,25,17 +191,move,"move 16 15",2,1447,57,-3,25,19,57,16,15,-6,25,17 +192,move,"move 15 15",2,1452,57,-3,25,19,57,15,15,-6,25,17 +193,dig,"dig 14 16",2,1459,57,-3,25,19,57,15,15,-6,25,17 +194,move,"move 14 16",2,1464,57,-3,25,19,57,14,16,-6,25,17 +195,dig,"dig 13 17",2,1471,57,-3,25,19,57,14,16,-6,25,17 +196,move,"move 13 17",2,1476,57,-3,25,19,57,13,17,-6,25,17 +197,dig,"dig 12 18",2,1483,57,-3,25,19,57,13,17,-6,25,17 +198,move,"move 12 18",2,1488,57,-3,25,19,57,12,18,-6,25,17 +199,dig,"dig 11 18",2,1495,57,-3,25,19,57,12,18,-6,25,17 +200,move,"move 11 17",2,1500,57,-3,25,19,57,11,17,-6,25,17 +201,dig,"dig 10 17",2,1507,57,-3,25,19,57,11,17,-6,25,17 +202,move,"move 10 16",2,1512,57,-3,25,19,57,10,16,-6,25,17 +203,dig,"dig 9 16",2,1512,57,-3,25,19,57,10,16,-6,25,17 +204,dig,"dig 9 16",2,1512,57,-3,25,19,57,10,16,-6,25,17 +205,dig,"dig 9 16",2,1512,57,-3,25,19,57,10,16,-6,25,17 +206,dig,"dig 9 17",2,1512,57,-3,25,19,57,10,16,-6,25,17 +207,dig,"dig 9 17",2,1512,57,-3,25,19,57,10,16,-6,25,17 +208,dig,"dig 9 17",2,1512,57,-3,25,19,57,10,16,-6,25,17 +209,dig,"dig 9 17",2,1519,57,-3,25,19,57,10,16,-6,25,17 +210,shoot,"shoot S",2,1532,49,-3,25,19,49,10,16,-6,25,17 +211,shoot,"shoot S",2,1545,41,-3,25,19,41,10,16,-6,25,17 +212,shoot,"shoot S",2,1559,33,-3,25,19,33,10,16,-6,25,17 +213,shoot,"shoot S",2,1561,33,-3,25,19,33,10,16,-6,25,17 diff --git a/2019-worms/tests/strategy.rs b/2019-worms/tests/strategy.rs new file mode 100644 index 0000000..7088099 --- /dev/null +++ b/2019-worms/tests/strategy.rs @@ -0,0 +1,27 @@ +use std::path::Path; + +use steam_powered_wyrm::game; +use steam_powered_wyrm::json; +use steam_powered_wyrm::strategy::{choose_move_with_normalized_perf, ScoreConfig}; + +#[test] +fn strategy_is_implemented_symetrically() { + let state = game::GameBoard::new( + json::read_state_from_json_file(&Path::new(&format!("./tests/example-state.json"))) + .unwrap(), + ); + let depth = 100; + + let config = ScoreConfig::default(); + let flipped_state = { + let mut flipped_state = state.clone(); + flipped_state.players[0] = state.players[1].clone(); + flipped_state.players[1] = state.players[0].clone(); + flipped_state + }; + + let position_one_move = choose_move_with_normalized_perf(&state, &config, 0, depth); + let position_two_move = choose_move_with_normalized_perf(&flipped_state, &config, 1, depth); + + assert_eq!(position_one_move, position_two_move); +} diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index f5c96f0..0000000 --- a/Cargo.lock +++ /dev/null @@ -1,299 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "arrayvec" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "cfg-if" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "crossbeam-deque" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-queue" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-utils" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "either" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "fnv" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "itoa" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "lazy_static" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "libc" -version = "0.2.51" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "memoffset" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "nodrop" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "num-traits" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "num_cpus" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro2" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "quote" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rayon" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rayon-core" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "redox_syscall" -version = "0.1.54" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ryu" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "scopeguard" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "serde" -version = "1.0.90" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_derive" -version = "1.0.90" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "serde_json" -version = "1.0.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "steam-powered-wyrm" -version = "1.0.0" -dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "syn" -version = "0.15.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "time" -version = "0.1.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[metadata] -"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" -"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" -"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" -"checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" -"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" -"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" -"checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" -"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" -"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" -"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" -"checksum libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "bedcc7a809076656486ffe045abeeac163da1b558e963a31e29fbfbeba916917" -"checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" -"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" -"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" -"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" -"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" -"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" -"checksum rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4b0186e22767d5b9738a05eab7c6ac90b15db17e5b5f9bd87976dd7d89a10a4" -"checksum rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbe0df8435ac0c397d467b6cad6d25543d06e8a019ef3f6af3c384597515bd2" -"checksum redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)" = "12229c14a0f65c4f1cb046a3b52047cdd9da1f4b30f8a39c5063c8bae515e252" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" -"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)" = "aa5f7c20820475babd2c077c3ab5f8c77a31c15e16ea38687b4c02d3e48680f4" -"checksum serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)" = "58fc82bec244f168b23d1963b45c8bf5726e9a15a9d146a067f9081aeed2de79" -"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" -"checksum syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b4cfac95805274c6afdb12d8f770fa2d27c045953e7b630a81801953699a9a" -"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index e7e33fc..0000000 --- a/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "steam-powered-wyrm" -version = "1.0.0" -edition = "2018" - -[dependencies] -serde = { version = "1.0.90", features = ["derive"] } -serde_json = "1.0.39" -time = "0.1.42" -num-traits = "0.2.6" -arrayvec = "0.4.10" -fnv = "1.0.6" -rayon = "1.1.0" - -[profile.release] -# debug = true -# debug-assertions = true -# overflow-checks = true - -[features] -logging = [] - -default = [] diff --git a/Makefile b/Makefile deleted file mode 100644 index 3f3b532..0000000 --- a/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -build: - cargo build --release - -test: - cargo test --release - -profile: - cargo flamegraph --bin benchmark - -clean: - cargo clean - -submission.zip: - zip --filesync -r9 submission.zip bot.json Cargo.lock Cargo.toml src - -.PHONY: build test profile clean submission.zip diff --git a/README.md b/README.md deleted file mode 100644 index a0c3008..0000000 --- a/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# Steam Powered Wyrm - -This is an entry to the 2019 Entelect Challenge. - -## Environment Setup - -The Rust compiler toolchain can be downloaded from the Rust project -website. - -https://www.rust-lang.org/en-US/install.html - -The project requires these versions of the toolchain (or later). - -- cargo 1.34.0 -- rustc 1.34.0 - -## Building - -Rust's official build tool is called Cargo. It will download -dependencies and call the Rust compiler as required. Dependencies are -configured in [Cargo.toml](./Cargo.toml). - -Cargo needs to be called from the root of the bot (the folder with the -Cargo.toml file). - -```sh -cargo build --release -``` - -## Running Tests - -Rust has support for unit testing built into the language. Any -functions marked with the `#[test]` annotation are considered tests. - -Tests can be run using Cargo: - -```sh -cargo test -``` - -More information on how to write tests is available in -[The Rust Programming Language](https://doc.rust-lang.org/book/ch11-00-testing.html). - -## Exporting the compiled executable - -By default, Rust produces statically linked binaries, so you can just -copy out the executable file from the target directory and put it -wherever you want. - -The name of the binary will match the name of the binary crate in -Cargo.toml. - -Note: This binary has been built for the platform that it was compiled -on. In other words, if it was compiled on 64 bit Linux, you cannot -copy the binary to a Windows machine and run it. You WILL be able to -copy the binary between similar 64 bit Linux machines. - -The machine that the compiled binary is run on does not need to have -the Rust toolchain installed. - -```sh -cp ./target/release/ -``` - -## Running - -The compiled binary can be executed directly. - -```sh -./target/release/ -``` - -For convenience in development, you can compile and run through Cargo. - -Note: This is not recommended for the tournament servers, since there -is a small runtime cost in Cargo checking that the compiled binary is -up to date before running it. - -```sh -cargo run --release -``` diff --git a/bot.json b/bot.json deleted file mode 100644 index 5578730..0000000 --- a/bot.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "author": "Justin Wernick", - "email": "justin@worthe-it.co.za", - "nickName": "Steam Powered Wyrm", - "botLocation": "/target/release/", - "botFileName": "steam-powered-wyrm", - "botLanguage": "rust" -} diff --git a/src/bin/benchmark.rs b/src/bin/benchmark.rs deleted file mode 100644 index 84e869e..0000000 --- a/src/bin/benchmark.rs +++ /dev/null @@ -1,22 +0,0 @@ -use std::path::Path; - -use time::{Duration, PreciseTime}; - -use steam_powered_wyrm::game; -use steam_powered_wyrm::json; -use steam_powered_wyrm::strategy::{choose_move, ScoreConfig}; - -fn main() { - let max_time = Duration::milliseconds(19950); - let start_time = PreciseTime::now(); - - match json::read_state_from_json_file(&Path::new(&format!("./tests/example-state.json"))) { - Ok(json_state) => { - let new_board = game::GameBoard::new(json_state); - let _ = choose_move(&new_board, &ScoreConfig::default(), start_time, max_time); - } - Err(e) => { - eprintln!("WARN: State file could not be parsed: {}", e); - } - }; -} diff --git a/src/bin/explore-config.rs b/src/bin/explore-config.rs deleted file mode 100644 index 5fb599a..0000000 --- a/src/bin/explore-config.rs +++ /dev/null @@ -1,116 +0,0 @@ -use std::path::Path; - -use rayon::prelude::*; - -use steam_powered_wyrm::game; -use steam_powered_wyrm::json; -use steam_powered_wyrm::strategy::{choose_move_with_normalized_perf, ScoreConfig}; - -fn main() { - let initial_state = game::GameBoard::new( - json::read_state_from_json_file(&Path::new(&format!("./tests/example-state.json"))) - .unwrap(), - ); - let depth = 1000; - - let configs = ScoreConfigTrials { - max_health_weight: vec![50., 150.], - total_health_weight: vec![5., 20.], - points_weight: vec![1.], - victory_weight: vec![3000., 3500., 4000., 4500., 5000., 5500., 6000., 7000.], - snowball_weight: vec![10.], - bomb_weight: vec![0.], - explore_exploit_weight: vec![10., 500.], - } - .reify(); - - eprintln!("{} configs being tested", configs.len()); - - let mut victories = vec![0; configs.len()]; - - for i in 0..configs.len() { - eprintln!("Progress: {} of {}", i, configs.len()); - - let outcomes: Vec<(usize, game::SimulationOutcome)> = (i + 1..configs.len()) - .collect::>() - .par_iter() - .map(|j| { - let mut state = initial_state.clone(); - - while state.outcome == game::SimulationOutcome::Continue { - let commands = [ - choose_move_with_normalized_perf(&state, &configs[i], 0, depth), - choose_move_with_normalized_perf(&state, &configs[*j], 1, depth), - ]; - state.simulate(commands); - } - - (*j, state.outcome) - }) - .collect(); - for (j, outcome) in outcomes { - match outcome { - game::SimulationOutcome::PlayerWon(0) => victories[i] += 1, - game::SimulationOutcome::PlayerWon(1) => victories[j] += 1, - _ => {} - }; - } - } - - println!("victories, max_health_weight, total_health_weight, points_weight, victory_weight, snowball_weight, bomb_weight, explore_exploit_weight"); - - for (config, victories) in configs.into_iter().zip(victories.iter()) { - println!( - "{}, {}, {}, {}, {}, {}, {}, {}", - victories, - config.max_health_weight, - config.total_health_weight, - config.points_weight, - config.victory_weight, - config.snowball_weight, - config.bomb_weight, - config.explore_exploit_weight - ); - } -} - -pub struct ScoreConfigTrials { - pub max_health_weight: Vec, - pub total_health_weight: Vec, - pub points_weight: Vec, - pub victory_weight: Vec, - pub snowball_weight: Vec, - pub bomb_weight: Vec, - pub explore_exploit_weight: Vec, -} - -impl ScoreConfigTrials { - fn reify(self) -> Vec { - let mut result = Vec::new(); - for max_health_weight in &self.max_health_weight { - for total_health_weight in &self.total_health_weight { - for points_weight in &self.points_weight { - for victory_weight in &self.victory_weight { - for snowball_weight in &self.snowball_weight { - for bomb_weight in &self.bomb_weight { - for explore_exploit_weight in &self.explore_exploit_weight { - result.push(ScoreConfig { - max_health_weight: *max_health_weight, - total_health_weight: *total_health_weight, - points_weight: *points_weight, - victory_weight: *victory_weight, - snowball_weight: *snowball_weight, - bomb_weight: *bomb_weight, - explore_exploit_weight: *explore_exploit_weight, - }); - } - } - } - } - } - } - } - - result - } -} diff --git a/src/command.rs b/src/command.rs deleted file mode 100644 index c6d6695..0000000 --- a/src/command.rs +++ /dev/null @@ -1,73 +0,0 @@ -use crate::geometry::Direction; -use crate::geometry::Point2d; -use std::fmt; - -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] -pub struct Command { - pub worm: Option, - pub action: Action, -} - -impl fmt::Display for Command { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match self.worm { - Some(worm) => write!(f, "select {};{}", worm, self.action), - None => write!(f, "{}", self.action), - } - } -} - -impl Command { - pub fn with_select(worm: i32, action: Action) -> Command { - Command { - worm: Some(worm), - action, - } - } - - pub fn new(action: Action) -> Command { - Command { worm: None, action } - } -} - -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] -pub enum Action { - Move(Point2d), - Dig(Point2d), - Shoot(Direction), - Bomb(Point2d), - Snowball(Point2d), - DoNothing, -} - -impl fmt::Display for Action { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - use Action::*; - match self { - Move(p) => write!(f, "move {} {}", p.x, p.y), - Dig(p) => write!(f, "dig {} {}", p.x, p.y), - Shoot(dir) => write!(f, "shoot {}", dir), - Bomb(p) => write!(f, "banana {} {}", p.x, p.y), - Snowball(p) => write!(f, "snowball {} {}", p.x, p.y), - DoNothing => write!(f, "nothing"), - } - } -} - -impl Action { - pub fn is_attack(&self) -> bool { - use Action::*; - match self { - Shoot(_) | Bomb(_) => true, - _ => false, - } - } - - pub fn is_snowball(&self) -> bool { - use Action::*; - match self { - Snowball(_) => true, - _ => false, - } - } -} diff --git a/src/constants.rs b/src/constants.rs deleted file mode 100644 index 3f36db4..0000000 --- a/src/constants.rs +++ /dev/null @@ -1,218 +0,0 @@ -use crate::geometry::Vec2d; - -pub mod lava; -pub use self::lava::*; - -pub const MAP_SIZE: usize = 33; -pub const MAP_ROW_SIZE: [MapRow; MAP_SIZE] = [ - MapRow { - start_bit: 0, - x_offset: 11, - }, - MapRow { - start_bit: 11, - x_offset: 8, - }, - MapRow { - start_bit: 28, - x_offset: 7, - }, - MapRow { - start_bit: 47, - x_offset: 6, - }, - MapRow { - start_bit: 68, - x_offset: 4, - }, - MapRow { - start_bit: 93, - x_offset: 4, - }, - MapRow { - start_bit: 118, - x_offset: 3, - }, - MapRow { - start_bit: 145, - x_offset: 2, - }, - MapRow { - start_bit: 174, - x_offset: 1, - }, - MapRow { - start_bit: 205, - x_offset: 1, - }, - MapRow { - start_bit: 236, - x_offset: 1, - }, - MapRow { - start_bit: 267, - x_offset: 0, - }, - MapRow { - start_bit: 300, - x_offset: 0, - }, - MapRow { - start_bit: 333, - x_offset: 0, - }, - MapRow { - start_bit: 366, - x_offset: 0, - }, - MapRow { - start_bit: 399, - x_offset: 0, - }, - MapRow { - start_bit: 432, - x_offset: 0, - }, - MapRow { - start_bit: 465, - x_offset: 0, - }, - MapRow { - start_bit: 498, - x_offset: 0, - }, - MapRow { - start_bit: 531, - x_offset: 0, - }, - MapRow { - start_bit: 564, - x_offset: 0, - }, - MapRow { - start_bit: 597, - x_offset: 0, - }, - MapRow { - start_bit: 630, - x_offset: 1, - }, - MapRow { - start_bit: 661, - x_offset: 1, - }, - MapRow { - start_bit: 692, - x_offset: 1, - }, - MapRow { - start_bit: 723, - x_offset: 2, - }, - MapRow { - start_bit: 752, - x_offset: 3, - }, - MapRow { - start_bit: 779, - x_offset: 4, - }, - MapRow { - start_bit: 804, - x_offset: 4, - }, - MapRow { - start_bit: 829, - x_offset: 6, - }, - MapRow { - start_bit: 850, - x_offset: 7, - }, - MapRow { - start_bit: 869, - x_offset: 8, - }, - MapRow { - start_bit: 886, - x_offset: 11, - }, -]; -pub const MAP_BITSIZE: usize = 897; -pub const MAP_U64S: usize = 15; - -pub struct MapRow { - pub start_bit: usize, - pub x_offset: usize, -} - -impl MapRow { - pub fn len(&self) -> usize { - MAP_SIZE - 2 * self.x_offset - } - - pub fn is_empty(&self) -> bool { - self.len() == 0 - } -} - -pub const HEALTH_PACK_VALUE: i32 = 10; - -pub const SHOOT_RANGE: i8 = 4; -pub const SHOOT_RANGE_DIAGONAL: i8 = 3; -pub const SHOOT_DAMAGE: i32 = 8; - -pub const BOMB_RANGE: i8 = 5; -pub const BOMB_DAMAGED_SPACES: usize = 13; -pub const BOMB_DAMAGE_RANGE: i8 = 2; -pub const BOMB_DAMAGES: [(Vec2d, i32); BOMB_DAMAGED_SPACES] = [ - (Vec2d::new(0, -2), 7), - (Vec2d::new(2, 0), 7), - (Vec2d::new(0, 2), 7), - (Vec2d::new(-2, 0), 7), - (Vec2d::new(1, -1), 11), - (Vec2d::new(1, 1), 11), - (Vec2d::new(-1, 1), 11), - (Vec2d::new(-1, -1), 11), - (Vec2d::new(0, -1), 13), - (Vec2d::new(1, 0), 13), - (Vec2d::new(0, 1), 13), - (Vec2d::new(-1, 0), 13), - (Vec2d::new(0, 0), 20), -]; - -pub const SNOWBALL_RANGE: i8 = 5; -pub const SNOWBALL_FREEZES_SPACES: usize = 9; -pub const SNOWBALL_FREEZE_RANGE: i8 = 1; -pub const SNOWBALL_FREEZES: [Vec2d; SNOWBALL_FREEZES_SPACES] = [ - Vec2d::new(-1, -1), - Vec2d::new(0, -1), - Vec2d::new(1, -1), - Vec2d::new(-1, 0), - Vec2d::new(0, 0), - Vec2d::new(1, 0), - Vec2d::new(-1, 1), - Vec2d::new(0, 1), - Vec2d::new(1, 1), -]; - -pub const MISSED_ATTACK_SCORE: i32 = 2; -pub const ATTACK_SCORE_MULTIPLIER: i32 = 2; -pub const KILL_SCORE: i32 = 40; -pub const DIG_SCORE: i32 = 7; -pub const MOVE_SCORE: i32 = 5; -pub const INVALID_COMMAND_SCORE_PENALTY: i32 = 4; - -pub const STARTING_BOMBS: u8 = 3; -pub const STARTING_SNOWBALLS: u8 = 3; - -pub const COLLISION_DAMAGE: i32 = 20; - -pub const LAVA_DAMAGE: i32 = 3; - -pub const LAVA_ROUND_START: usize = 100; -pub const LAVA_ROUND_END: usize = 350; -pub const MAX_ROUNDS: usize = 400; - -pub const FREEZE_DURATION: u8 = 5; -pub const FREEZE_SCORE: i32 = 17; diff --git a/src/constants/lava.rs b/src/constants/lava.rs deleted file mode 100644 index 238d668..0000000 --- a/src/constants/lava.rs +++ /dev/null @@ -1,6225 +0,0 @@ -use crate::constants::*; -use crate::game::map::Map; - -#[allow(clippy::all)] -pub const LAVA_MAP: [Map; MAX_ROUNDS as usize + 1] = [ - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - ], - }, - Map { - cells: [ - 0xE0003E003FDF, - 0x60000038000038, - 0xE00000030000, - 0x180000003800, - 0x180000000C00, - 0x600000003000, - 0x80000000C000, - 0x6000000020000, - 0x180000000C0000, - 0x60000000300000, - 0x38000000300000, - 0x18000000E0000, - 0x3800003800000C00, - 0xF7F800F8000E0000, - 0x1, - ], - }, - Map { - cells: [ - 0xE0003E003FFF, - 0x60000038000038, - 0xE00000030000, - 0x180000003800, - 0x180000000C00, - 0x600000003000, - 0x180000000C000, - 0x6000000030000, - 0x180000000C0000, - 0x60000000300000, - 0x38000000300000, - 0x18000000E0000, - 0x3800003800000C00, - 0xFFF800F8000E0000, - 0x1, - ], - }, - Map { - cells: [ - 0xE0003E003FFF, - 0x60000038000038, - 0xE00000030000, - 0x180000003800, - 0x180000000C00, - 0x600000003000, - 0x180000000C000, - 0x6000000030000, - 0x180000000C0000, - 0x60000000300000, - 0x38000000300000, - 0x18000000E0000, - 0x3800003800000C00, - 0xFFF800F8000E0000, - 0x1, - ], - }, - Map { - cells: [ - 0x1E0003F007FFF, - 0x6000003800003C, - 0xF00000070000, - 0x180000003800, - 0x1C0000001C00, - 0x600000003000, - 0x180000000C000, - 0x6000000030000, - 0x180000000C0000, - 0x70000000700000, - 0x38000000300000, - 0x1C000001E0000, - 0x7800003800000C00, - 0xFFFC01F8000F0000, - 0x1, - ], - }, - Map { - cells: [ - 0x1E0003F007FFF, - 0x6000003800003C, - 0xF00000070000, - 0x180000003800, - 0x1C0000001C00, - 0x600000003000, - 0x180000000C000, - 0x6000000030000, - 0x180000000C0000, - 0x70000000700000, - 0x38000000300000, - 0x1C000001E0000, - 0x7800003800000C00, - 0xFFFC01F8000F0000, - 0x1, - ], - }, - Map { - cells: [ - 0x1E0003F007FFF, - 0x6000003800003C, - 0xF00000070000, - 0x180000003800, - 0x1C0000001C00, - 0x600000003000, - 0x180000000C000, - 0x6000000030000, - 0x180000000C0000, - 0x70000000700000, - 0x38000000300000, - 0x1C000001E0000, - 0x7800003800000C00, - 0xFFFC01F8000F0000, - 0x1, - ], - }, - Map { - cells: [ - 0x1F0007F007FFF, - 0xE000003C00007C, - 0xF00000078000, - 0x1C0000007800, - 0x1C0000001C00, - 0x600000003000, - 0x180000000C000, - 0x6000000030000, - 0x180000000C0000, - 0x70000000700000, - 0x3C000000700000, - 0x3C000001E0000, - 0x7C00007800000E00, - 0xFFFC01FC001F0000, - 0x1, - ], - }, - Map { - cells: [ - 0x1F0007F007FFF, - 0xF000007C00007C, - 0xF00000078000, - 0x1C0000007800, - 0x1C0000001C00, - 0x600000003000, - 0x180000000C000, - 0x6000000030000, - 0x180000000C0000, - 0x70000000700000, - 0x3C000000700000, - 0x3C000001E0000, - 0x7C00007C00001E00, - 0xFFFC01FC001F0000, - 0x1, - ], - }, - Map { - cells: [ - 0x1F0007F80FFFF, - 0xF000007C00007C, - 0xF00000078000, - 0x1C0000007800, - 0x3C0000001C00, - 0x600000003800, - 0x180000000C000, - 0x6000000030000, - 0x380000000C0000, - 0x70000000780000, - 0x3C000000700000, - 0x3C000001E0000, - 0x7C00007C00001E00, - 0xFFFE03FC001F0000, - 0x1, - ], - }, - Map { - cells: [ - 0x1F0007F80FFFF, - 0xF000007C00007C, - 0xF00000078000, - 0x1C0000007800, - 0x3C0000001C00, - 0x600000003800, - 0x180000000C000, - 0x6000000030000, - 0x380000000C0000, - 0x70000000780000, - 0x3C000000700000, - 0x3C000001E0000, - 0x7C00007C00001E00, - 0xFFFE03FC001F0000, - 0x1, - ], - }, - Map { - cells: [ - 0x1F0007F80FFFF, - 0xF000007C00007C, - 0xF00000078000, - 0x1C0000007800, - 0x3C0000001C00, - 0x600000003800, - 0x180000000C000, - 0x6000000030000, - 0x380000000C0000, - 0x70000000780000, - 0x3C000000700000, - 0x3C000001E0000, - 0x7C00007C00001E00, - 0xFFFE03FC001F0000, - 0x1, - ], - }, - Map { - cells: [ - 0x1F0007FC1FFFF, - 0xF000007C00007C, - 0xF00000078000, - 0x1C0000007800, - 0x3C0000001C00, - 0x700000007800, - 0x180000000C000, - 0x6000000030000, - 0x3C0000001C0000, - 0x70000000780000, - 0x3C000000700000, - 0x3C000001E0000, - 0x7C00007C00001E00, - 0xFFFF07FC001F0000, - 0x1, - ], - }, - Map { - cells: [ - 0x3F0007FC1FFFF, - 0xF000007C00007E, - 0x1F00000078000, - 0x1C0000007C00, - 0x3C0000001C00, - 0x700000007800, - 0x180000000C000, - 0x6000000030000, - 0x3C0000001C0000, - 0x70000000780000, - 0x7C000000700000, - 0x3C000001F0000, - 0xFC00007C00001E00, - 0xFFFF07FC001F8000, - 0x1, - ], - }, - Map { - cells: [ - 0x3F800FFC1FFFF, - 0xF000007C00007E, - 0x1F00000078000, - 0x3C0000007C00, - 0x3C0000001E00, - 0x700000007800, - 0x180000000C000, - 0x6000000030000, - 0x3C0000001C0000, - 0xF0000000780000, - 0x7C000000780000, - 0x3C000001F0000, - 0xFC00007C00001E00, - 0xFFFF07FE003F8000, - 0x1, - ], - }, - Map { - cells: [ - 0x3F800FFE3FFFF, - 0xF000007C00007E, - 0x1F00000078000, - 0x3C0000007C00, - 0x3C0000001E00, - 0xF00000007800, - 0x180000000E000, - 0xE000000030000, - 0x3C0000001E0000, - 0xF0000000780000, - 0x7C000000780000, - 0x3C000001F0000, - 0xFC00007C00001E00, - 0xFFFF8FFE003F8000, - 0x1, - ], - }, - Map { - cells: [ - 0x3F800FFE3FFFF, - 0xF000007C00007E, - 0x1F00000078000, - 0x3C0000007C00, - 0x3C0000001E00, - 0xF00000007800, - 0x180000000E000, - 0xE000000030000, - 0x3C0000001E0000, - 0xF0000000780000, - 0x7C000000780000, - 0x3C000001F0000, - 0xFC00007C00001E00, - 0xFFFF8FFE003F8000, - 0x1, - ], - }, - Map { - cells: [ - 0x3F800FFFFFFFF, - 0xF000007E0000FE, - 0x1F800000F8000, - 0x3C0000007C00, - 0x3C0000001E00, - 0xF00000007800, - 0x3C0000001E000, - 0xF000000078000, - 0x3C0000001E0000, - 0xF0000000780000, - 0x7C000000780000, - 0x3E000003F0000, - 0xFE0000FC00001E00, - 0xFFFFFFFE003F8000, - 0x1, - ], - }, - Map { - cells: [ - 0x3F800FFFFFFFF, - 0xF000007E0000FE, - 0x1F800000F8000, - 0x3C0000007C00, - 0x3C0000001E00, - 0xF00000007800, - 0x3C0000001E000, - 0xF000000078000, - 0x3C0000001E0000, - 0xF0000000780000, - 0x7C000000780000, - 0x3E000003F0000, - 0xFE0000FC00001E00, - 0xFFFFFFFE003F8000, - 0x1, - ], - }, - Map { - cells: [ - 0x3FC01FFFFFFFF, - 0x1F80000FE0000FE, - 0x1F800000FC000, - 0x3C0000007C00, - 0x3E0000003E00, - 0xF00000007800, - 0x3C0000001E000, - 0xF000000078000, - 0x3C0000001E0000, - 0xF8000000F80000, - 0x7C000000780000, - 0x7E000003F0000, - 0xFE0000FE00003F00, - 0xFFFFFFFF007F8000, - 0x1, - ], - }, - Map { - cells: [ - 0x3FC01FFFFFFFF, - 0x1F80000FE0000FE, - 0x1F800000FC000, - 0x3C0000007C00, - 0x3E0000003E00, - 0xF00000007800, - 0x3C0000001E000, - 0xF000000078000, - 0x3C0000001E0000, - 0xF8000000F80000, - 0x7C000000780000, - 0x7E000003F0000, - 0xFE0000FE00003F00, - 0xFFFFFFFF007F8000, - 0x1, - ], - }, - Map { - cells: [ - 0x7FC01FFFFFFFF, - 0x1F80000FE0000FF, - 0x1F800000FC000, - 0x3E000000FC00, - 0x3E0000003E00, - 0xF00000007800, - 0x3C0000001E000, - 0xF000000078000, - 0x3C0000001E0000, - 0xF8000000F80000, - 0x7E000000F80000, - 0x7E000003F0000, - 0xFE0000FE00003F00, - 0xFFFFFFFF007FC001, - 0x1, - ], - }, - Map { - cells: [ - 0x7FC01FFFFFFFF, - 0x1F80000FE0000FF, - 0x1F800000FC000, - 0x3E000000FC00, - 0x3E0000003E00, - 0xF00000007800, - 0x3C0000001E000, - 0xF000000078000, - 0x3C0000001E0000, - 0xF8000000F80000, - 0x7E000000F80000, - 0x7E000003F0000, - 0xFE0000FE00003F00, - 0xFFFFFFFF007FC001, - 0x1, - ], - }, - Map { - cells: [ - 0x7FC01FFFFFFFF, - 0x1F80000FE0000FF, - 0x1F800000FC000, - 0x3E000000FC00, - 0x3E0000003E00, - 0xF00000007800, - 0x3C0000001E000, - 0xF000000078000, - 0x3C0000001E0000, - 0xF8000000F80000, - 0x7E000000F80000, - 0x7E000003F0000, - 0xFE0000FE00003F00, - 0xFFFFFFFF007FC001, - 0x1, - ], - }, - Map { - cells: [ - 0x7FE03FFFFFFFF, - 0x1F80000FE0000FF, - 0x1F800000FC000, - 0x3E000000FC00, - 0x7E0000003E00, - 0xF00000007C00, - 0x3C0000001E000, - 0xF000000078000, - 0x7C0000001E0000, - 0xF8000000FC0000, - 0x7E000000F80000, - 0x7E000003F0000, - 0xFE0000FE00003F00, - 0xFFFFFFFF80FFC001, - 0x1, - ], - }, - Map { - cells: [ - 0x7FE03FFFFFFFF, - 0x1F80000FE0000FF, - 0x1F800000FC000, - 0x3E000000FC00, - 0x7E0000003E00, - 0xF00000007C00, - 0x3C0000001E000, - 0xF000000078000, - 0x7C0000001E0000, - 0xF8000000FC0000, - 0x7E000000F80000, - 0x7E000003F0000, - 0xFE0000FE00003F00, - 0xFFFFFFFF80FFC001, - 0x1, - ], - }, - Map { - cells: [ - 0x7FE03FFFFFFFF, - 0x1F80000FF0001FF, - 0x3F800000FC000, - 0x3E000000FE00, - 0x7E0000003E00, - 0xF00000007C00, - 0x3C0000001E000, - 0xF000000078000, - 0x7C0000001E0000, - 0xF8000000FC0000, - 0xFE000000F80000, - 0x7E000003F8000, - 0xFF0001FE00003F00, - 0xFFFFFFFF80FFC001, - 0x1, - ], - }, - Map { - cells: [ - 0x7FE03FFFFFFFF, - 0x1F80000FF0001FF, - 0x3F800000FC000, - 0x3E000000FE00, - 0x7E0000003E00, - 0xF00000007C00, - 0x3C0000001E000, - 0xF000000078000, - 0x7C0000001E0000, - 0xF8000000FC0000, - 0xFE000000F80000, - 0x7E000003F8000, - 0xFF0001FE00003F00, - 0xFFFFFFFF80FFC001, - 0x1, - ], - }, - Map { - cells: [ - 0x800FFF07FFFFFFFF, - 0x1F80000FF0001FF, - 0x3F800000FC000, - 0x7E000000FE00, - 0x7E0000003F00, - 0xF8000000FC00, - 0x3C0000001E000, - 0xF000000078000, - 0x7E0000003E0000, - 0x1F8000000FC0000, - 0xFE000000FC0000, - 0x7E000003F8000, - 0xFF0001FE00003F00, - 0xFFFFFFFFC1FFE003, - 0x1, - ], - }, - Map { - cells: [ - 0x800FFF07FFFFFFFF, - 0x1FC0001FF0001FF, - 0x3FC00001FC000, - 0x7E000000FE00, - 0x7E0000003F00, - 0xF8000000FC00, - 0x3C0000001E000, - 0xF000000078000, - 0x7E0000003E0000, - 0x1F8000000FC0000, - 0xFE000000FC0000, - 0x7F000007F8000, - 0xFF0001FF00007F00, - 0xFFFFFFFFC1FFE003, - 0x1, - ], - }, - Map { - cells: [ - 0x800FFF07FFFFFFFF, - 0x1FC0001FF0001FF, - 0x3FC00001FC000, - 0x7E000000FE00, - 0x7E0000003F00, - 0xF8000000FC00, - 0x3C0000001E000, - 0xF000000078000, - 0x7E0000003E0000, - 0x1F8000000FC0000, - 0xFE000000FC0000, - 0x7F000007F8000, - 0xFF0001FF00007F00, - 0xFFFFFFFFC1FFE003, - 0x1, - ], - }, - Map { - cells: [ - 0x800FFF8FFFFFFFFF, - 0x3FC0001FF0001FF, - 0x3FC00001FE000, - 0x7E000000FE00, - 0x7E0000003F00, - 0x1F8000000FC00, - 0x3C0000001F000, - 0x1F000000078000, - 0x7E0000003F0000, - 0x1F8000000FC0000, - 0xFE000000FC0000, - 0xFF000007F8000, - 0xFF0001FF00007F80, - 0xFFFFFFFFE3FFE003, - 0x1, - ], - }, - Map { - cells: [ - 0x800FFFDFFFFFFFFF, - 0x3FC0001FF0001FF, - 0x3FC00001FE000, - 0x7E000000FE00, - 0x7E0000003F00, - 0x1F8000000FC00, - 0x3E0000003F000, - 0x1F8000000F8000, - 0x7E0000003F0000, - 0x1F8000000FC0000, - 0xFE000000FC0000, - 0xFF000007F8000, - 0xFF0001FF00007F80, - 0xFFFFFFFFF7FFE003, - 0x1, - ], - }, - Map { - cells: [ - 0x800FFFFFFFFFFFFF, - 0x3FC0001FF0001FF, - 0x3FC00001FE000, - 0x7E000000FE00, - 0x7E0000003F00, - 0x1F8000000FC00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0x7E0000003F0000, - 0x1F8000000FC0000, - 0xFE000000FC0000, - 0xFF000007F8000, - 0xFF0001FF00007F80, - 0xFFFFFFFFFFFFE003, - 0x1, - ], - }, - Map { - cells: [ - 0xC01FFFFFFFFFFFFF, - 0x3FC0001FF8003FF, - 0x3FC00001FE000, - 0x7F000001FE00, - 0x7F0000007F00, - 0x1F8000000FC00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0x7E0000003F0000, - 0x1FC000001FC0000, - 0xFF000001FC0000, - 0xFF000007F8000, - 0xFF8003FF00007F80, - 0xFFFFFFFFFFFFF007, - 0x1, - ], - }, - Map { - cells: [ - 0xC01FFFFFFFFFFFFF, - 0x3FC0001FF8003FF, - 0x3FC00001FE000, - 0x7F000001FE00, - 0x7F0000007F00, - 0x1F8000000FC00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0x7E0000003F0000, - 0x1FC000001FC0000, - 0xFF000001FC0000, - 0xFF000007F8000, - 0xFF8003FF00007F80, - 0xFFFFFFFFFFFFF007, - 0x1, - ], - }, - Map { - cells: [ - 0xC01FFFFFFFFFFFFF, - 0x3FC0001FF8003FF, - 0x3FC00001FE000, - 0x7F000001FE00, - 0x7F0000007F00, - 0x1F8000000FC00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0x7E0000003F0000, - 0x1FC000001FC0000, - 0xFF000001FC0000, - 0xFF000007F8000, - 0xFF8003FF00007F80, - 0xFFFFFFFFFFFFF007, - 0x1, - ], - }, - Map { - cells: [ - 0xC01FFFFFFFFFFFFF, - 0x3FC0001FF8003FF, - 0x3FC00001FE000, - 0x7F000001FE00, - 0x7F0000007F00, - 0x1F8000000FC00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0x7E0000003F0000, - 0x1FC000001FC0000, - 0xFF000001FC0000, - 0xFF000007F8000, - 0xFF8003FF00007F80, - 0xFFFFFFFFFFFFF007, - 0x1, - ], - }, - Map { - cells: [ - 0xC01FFFFFFFFFFFFF, - 0x3FC0001FF8003FF, - 0x3FC00001FE000, - 0x7F000001FE00, - 0x7F0000007F00, - 0x1F8000000FC00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0x7E0000003F0000, - 0x1FC000001FC0000, - 0xFF000001FC0000, - 0xFF000007F8000, - 0xFF8003FF00007F80, - 0xFFFFFFFFFFFFF007, - 0x1, - ], - }, - Map { - cells: [ - 0xE03FFFFFFFFFFFFF, - 0x3FE0003FF8003FF, - 0x7FC00001FE000, - 0x7F000001FF00, - 0xFF0000007F00, - 0x1F8000000FE00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0xFE0000003F0000, - 0x1FC000001FE0000, - 0x1FF000001FC0000, - 0xFF000007FC000, - 0xFF8003FF8000FF80, - 0xFFFFFFFFFFFFF80F, - 0x1, - ], - }, - Map { - cells: [ - 0xE03FFFFFFFFFFFFF, - 0x3FE0003FF8003FF, - 0x7FC00001FE000, - 0x7F000001FF00, - 0xFF0000007F00, - 0x1F8000000FE00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0xFE0000003F0000, - 0x1FC000001FE0000, - 0x1FF000001FC0000, - 0xFF000007FC000, - 0xFF8003FF8000FF80, - 0xFFFFFFFFFFFFF80F, - 0x1, - ], - }, - Map { - cells: [ - 0xE03FFFFFFFFFFFFF, - 0x7FE0003FF8003FF, - 0x7FE00003FF000, - 0x7F000001FF00, - 0xFF0000007F00, - 0x1F8000000FE00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0xFE0000003F0000, - 0x1FC000001FE0000, - 0x1FF000001FC0000, - 0x1FF80000FFC000, - 0xFF8003FF8000FFC0, - 0xFFFFFFFFFFFFF80F, - 0x1, - ], - }, - Map { - cells: [ - 0xE03FFFFFFFFFFFFF, - 0x7FE0003FFC007FF, - 0x7FE00003FF000, - 0xFF000001FF00, - 0xFF0000007F80, - 0x1F8000000FE00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0xFE0000003F0000, - 0x3FC000001FE0000, - 0x1FF000001FE0000, - 0x1FF80000FFC000, - 0xFFC007FF8000FFC0, - 0xFFFFFFFFFFFFF80F, - 0x1, - ], - }, - Map { - cells: [ - 0xF07FFFFFFFFFFFFF, - 0x7FE0003FFC007FF, - 0x7FE00003FF000, - 0xFF000001FF00, - 0xFF0000007F80, - 0x1FC000001FE00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0xFF0000007F0000, - 0x3FC000001FE0000, - 0x1FF000001FE0000, - 0x1FF80000FFC000, - 0xFFC007FF8000FFC0, - 0xFFFFFFFFFFFFFC1F, - 0x1, - ], - }, - Map { - cells: [ - 0xF07FFFFFFFFFFFFF, - 0x7FE0003FFC007FF, - 0x7FE00003FF000, - 0xFF000001FF00, - 0xFF0000007F80, - 0x1FC000001FE00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0xFF0000007F0000, - 0x3FC000001FE0000, - 0x1FF000001FE0000, - 0x1FF80000FFC000, - 0xFFC007FF8000FFC0, - 0xFFFFFFFFFFFFFC1F, - 0x1, - ], - }, - Map { - cells: [ - 0xF07FFFFFFFFFFFFF, - 0x7FE0003FFC007FF, - 0x7FE00003FF000, - 0xFF000001FF00, - 0xFF0000007F80, - 0x1FC000001FE00, - 0x7E0000003F000, - 0x1F8000000FC000, - 0xFF0000007F0000, - 0x3FC000001FE0000, - 0x1FF000001FE0000, - 0x1FF80000FFC000, - 0xFFC007FF8000FFC0, - 0xFFFFFFFFFFFFFC1F, - 0x1, - ], - }, - Map { - cells: [ - 0xF8FFFFFFFFFFFFFF, - 0x7FE0003FFC007FF, - 0x7FE00003FF000, - 0xFF000001FF00, - 0xFF0000007F80, - 0x3FC000001FE00, - 0x7E0000003F800, - 0x3F8000000FC000, - 0xFF0000007F8000, - 0x3FC000001FE0000, - 0x1FF000001FE0000, - 0x1FF80000FFC000, - 0xFFC007FF8000FFC0, - 0xFFFFFFFFFFFFFE3F, - 0x1, - ], - }, - Map { - cells: [ - 0xF8FFFFFFFFFFFFFF, - 0x7FE0003FFC007FF, - 0x7FE00003FF000, - 0xFF000001FF00, - 0xFF0000007F80, - 0x3FC000001FE00, - 0x7E0000003F800, - 0x3F8000000FC000, - 0xFF0000007F8000, - 0x3FC000001FE0000, - 0x1FF000001FE0000, - 0x1FF80000FFC000, - 0xFFC007FF8000FFC0, - 0xFFFFFFFFFFFFFE3F, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x7FF0007FFE00FFF, - 0x7FE00003FF000, - 0xFF800003FF00, - 0xFF800000FF80, - 0x3FC000001FE00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0xFF0000007F8000, - 0x3FE000003FE0000, - 0x1FF800003FE0000, - 0x1FF80000FFC000, - 0xFFE00FFFC001FFC0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x7FF0007FFE00FFF, - 0x7FE00003FF000, - 0xFF800003FF00, - 0xFF800000FF80, - 0x3FC000001FE00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0xFF0000007F8000, - 0x3FE000003FE0000, - 0x1FF800003FE0000, - 0x1FF80000FFC000, - 0xFFE00FFFC001FFC0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x7FF0007FFE00FFF, - 0x7FE00003FF000, - 0xFF800003FF00, - 0xFF800000FF80, - 0x3FC000001FE00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0xFF0000007F8000, - 0x3FE000003FE0000, - 0x1FF800003FE0000, - 0x1FF80000FFC000, - 0xFFE00FFFC001FFC0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFF0007FFE00FFF, - 0xFFE00003FF800, - 0xFF800003FF80, - 0xFF800000FF80, - 0x3FC000001FE00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0xFF0000007F8000, - 0x3FE000003FE0000, - 0x3FF800003FE0000, - 0x3FF80000FFE000, - 0xFFE00FFFC001FFE0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFF0007FFE00FFF, - 0xFFE00003FF800, - 0xFF800003FF80, - 0xFF800000FF80, - 0x3FC000001FE00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0xFF0000007F8000, - 0x3FE000003FE0000, - 0x3FF800003FE0000, - 0x3FF80000FFE000, - 0xFFE00FFFC001FFE0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFF0007FFE00FFF, - 0xFFF00007FF800, - 0xFF800003FF80, - 0xFF800000FF80, - 0x3FC000001FE00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0xFF0000007F8000, - 0x3FE000003FE0000, - 0x3FF800003FE0000, - 0x3FFC0001FFE000, - 0xFFE00FFFC001FFE0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFF0007FFF01FFF, - 0xFFF00007FF800, - 0xFF800003FF80, - 0x1FF800000FF80, - 0x3FC000001FF00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0x1FF0000007F8000, - 0x3FE000003FF0000, - 0x3FF800003FE0000, - 0x3FFC0001FFE000, - 0xFFF01FFFC001FFE0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFF0007FFF01FFF, - 0xFFF00007FF800, - 0xFF800003FF80, - 0x1FF800000FF80, - 0x3FC000001FF00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0x1FF0000007F8000, - 0x3FE000003FF0000, - 0x3FF800003FE0000, - 0x3FFC0001FFE000, - 0xFFF01FFFC001FFE0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFF800FFFF01FFF, - 0xFFF00007FF800, - 0x1FF800003FF80, - 0x1FF800000FFC0, - 0x3FC000001FF00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0x1FF0000007F8000, - 0x7FE000003FF0000, - 0x3FF800003FF0000, - 0x3FFC0001FFE000, - 0xFFF01FFFE003FFE0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFF800FFFF01FFF, - 0xFFF00007FF800, - 0x1FF800003FF80, - 0x1FF800000FFC0, - 0x3FC000001FF00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0x1FF0000007F8000, - 0x7FE000003FF0000, - 0x3FF800003FF0000, - 0x3FFC0001FFE000, - 0xFFF01FFFE003FFE0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFF800FFFF83FFF, - 0xFFF00007FF800, - 0x1FF800003FF80, - 0x1FF800000FFC0, - 0x3FE000003FF00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0x1FF800000FF8000, - 0x7FE000003FF0000, - 0x3FF800003FF0000, - 0x3FFC0001FFE000, - 0xFFF83FFFE003FFE0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFF800FFFF83FFF, - 0xFFF00007FF800, - 0x1FF800003FF80, - 0x1FF800000FFC0, - 0x3FE000003FF00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0x1FF800000FF8000, - 0x7FE000003FF0000, - 0x3FF800003FF0000, - 0x3FFC0001FFE000, - 0xFFF83FFFE003FFE0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFF800FFFF83FFF, - 0xFFF00007FF800, - 0x1FF800003FF80, - 0x1FF800000FFC0, - 0x3FE000003FF00, - 0xFF0000007F800, - 0x3FC000001FE000, - 0x1FF800000FF8000, - 0x7FE000003FF0000, - 0x3FF800003FF0000, - 0x3FFC0001FFE000, - 0xFFF83FFFE003FFE0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x1FFF800FFFFC7FFF, - 0xFFF00007FFC00, - 0x1FFC00007FF80, - 0x1FF800000FFC0, - 0x7FE000003FF00, - 0xFF0000007FC00, - 0x7FC000001FE000, - 0x1FF800000FFC000, - 0x7FE000003FF0000, - 0x3FFC00007FF0000, - 0x7FFC0001FFE000, - 0xFFFC7FFFE003FFF0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x1FFF800FFFFC7FFF, - 0xFFF00007FFC00, - 0x1FFC00007FF80, - 0x1FF800000FFC0, - 0x7FE000003FF00, - 0xFF0000007FC00, - 0x7FC000001FE000, - 0x1FF800000FFC000, - 0x7FE000003FF0000, - 0x3FFC00007FF0000, - 0x7FFC0001FFE000, - 0xFFFC7FFFE003FFF0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x1FFFC01FFFFEFFFF, - 0x1FFF8000FFFC00, - 0x1FFC00007FFC0, - 0x1FFC00001FFC0, - 0x7FE000003FF00, - 0xFF800000FFC00, - 0x7FE000003FE000, - 0x1FF800000FFC000, - 0x7FF000007FF0000, - 0x7FFC00007FF0000, - 0x7FFE0003FFF000, - 0xFFFEFFFFF007FFF0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x1FFFC01FFFFFFFFF, - 0x1FFF8000FFFC00, - 0x1FFC00007FFC0, - 0x1FFC00001FFC0, - 0x7FE000003FF00, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x1FF800000FFC000, - 0x7FF000007FF0000, - 0x7FFC00007FF0000, - 0x7FFE0003FFF000, - 0xFFFFFFFFF007FFF0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x1FFFC01FFFFFFFFF, - 0x1FFF8000FFFC00, - 0x1FFC00007FFC0, - 0x1FFC00001FFC0, - 0x7FE000003FF00, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x1FF800000FFC000, - 0x7FF000007FF0000, - 0x7FFC00007FF0000, - 0x7FFE0003FFF000, - 0xFFFFFFFFF007FFF0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x1FFFC01FFFFFFFFF, - 0x1FFF8000FFFC00, - 0x1FFC00007FFC0, - 0x1FFC00001FFC0, - 0x7FE000003FF00, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x1FF800000FFC000, - 0x7FF000007FF0000, - 0x7FFC00007FF0000, - 0x7FFE0003FFF000, - 0xFFFFFFFFF007FFF0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x1FFFC01FFFFFFFFF, - 0x1FFF8000FFFC00, - 0x1FFC00007FFC0, - 0x1FFC00001FFC0, - 0x7FE000003FF00, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x1FF800000FFC000, - 0x7FF000007FF0000, - 0x7FFC00007FF0000, - 0x7FFE0003FFF000, - 0xFFFFFFFFF007FFF0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x1FFFC01FFFFFFFFF, - 0x1FFF8000FFFC00, - 0x1FFC00007FFC0, - 0x1FFC00001FFC0, - 0x7FE000003FF00, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x1FF800000FFC000, - 0x7FF000007FF0000, - 0x7FFC00007FF0000, - 0x7FFE0003FFF000, - 0xFFFFFFFFF007FFF0, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x3FFFE03FFFFFFFFF, - 0x1FFF8000FFFE00, - 0x3FFC00007FFC0, - 0x3FFC00001FFE0, - 0x7FE000003FF80, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x3FF800000FFC000, - 0xFFF000007FF8000, - 0x7FFC00007FF8000, - 0xFFFE0003FFF000, - 0xFFFFFFFFF80FFFF8, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x3FFFE03FFFFFFFFF, - 0x1FFF8000FFFE00, - 0x3FFC00007FFC0, - 0x3FFC00001FFE0, - 0x7FE000003FF80, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x3FF800000FFC000, - 0xFFF000007FF8000, - 0x7FFC00007FF8000, - 0xFFFE0003FFF000, - 0xFFFFFFFFF80FFFF8, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x3FFFE03FFFFFFFFF, - 0x1FFF8000FFFE00, - 0x3FFC00007FFC0, - 0x3FFC00001FFE0, - 0x7FE000003FF80, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x3FF800000FFC000, - 0xFFF000007FF8000, - 0x7FFC00007FF8000, - 0xFFFE0003FFF000, - 0xFFFFFFFFF80FFFF8, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x3FFFE03FFFFFFFFF, - 0x1FFF8000FFFE00, - 0x3FFC00007FFC0, - 0x3FFC00001FFE0, - 0x7FE000003FF80, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x3FF800000FFC000, - 0xFFF000007FF8000, - 0x7FFC00007FF8000, - 0xFFFE0003FFF000, - 0xFFFFFFFFF80FFFF8, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x3FFFF07FFFFFFFFF, - 0x1FFFC001FFFE00, - 0x3FFE0000FFFC0, - 0x3FFC00001FFE0, - 0x7FF000007FF80, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x3FFC00001FFC000, - 0xFFF000007FF8000, - 0x7FFE0000FFF8000, - 0xFFFF0007FFF000, - 0xFFFFFFFFFC1FFFF8, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x3FFFF07FFFFFFFFF, - 0x1FFFC001FFFE00, - 0x3FFE0000FFFC0, - 0x3FFC00001FFE0, - 0x7FF000007FF80, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x3FFC00001FFC000, - 0xFFF000007FF8000, - 0x7FFE0000FFF8000, - 0xFFFF0007FFF000, - 0xFFFFFFFFFC1FFFF8, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x3FFFF07FFFFFFFFF, - 0x3FFFC001FFFE00, - 0x3FFE0000FFFE0, - 0x3FFC00001FFE0, - 0x7FF000007FF80, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x3FFC00001FFC000, - 0xFFF000007FF8000, - 0xFFFE0000FFF8000, - 0xFFFF0007FFF800, - 0xFFFFFFFFFC1FFFF8, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x3FFFF07FFFFFFFFF, - 0x3FFFC001FFFE00, - 0x3FFE0000FFFE0, - 0x3FFC00001FFE0, - 0x7FF000007FF80, - 0x1FF800000FFC00, - 0x7FE000003FF000, - 0x3FFC00001FFC000, - 0xFFF000007FF8000, - 0xFFFE0000FFF8000, - 0xFFFF0007FFF800, - 0xFFFFFFFFFC1FFFF8, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x7FFFF8FFFFFFFFFF, - 0x3FFFC001FFFF00, - 0x3FFE0000FFFE0, - 0x3FFE00003FFE0, - 0xFFF000007FF80, - 0x1FF800000FFE00, - 0xFFE000003FF000, - 0x3FFC00001FFE000, - 0xFFF80000FFF8000, - 0xFFFE0000FFF8000, - 0x1FFFF0007FFF800, - 0xFFFFFFFFFE3FFFFC, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x7FFFF8FFFFFFFFFF, - 0x3FFFC001FFFF00, - 0x3FFE0000FFFE0, - 0x3FFE00003FFE0, - 0xFFF000007FF80, - 0x1FF800000FFE00, - 0xFFE000003FF000, - 0x3FFC00001FFE000, - 0xFFF80000FFF8000, - 0xFFFE0000FFF8000, - 0x1FFFF0007FFF800, - 0xFFFFFFFFFE3FFFFC, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFDFFFFFFFFFF, - 0x3FFFC001FFFF00, - 0x3FFE0000FFFE0, - 0x3FFE00003FFE0, - 0xFFF000007FF80, - 0x1FFC00001FFE00, - 0xFFF000007FF000, - 0x3FFC00001FFE000, - 0xFFF80000FFF8000, - 0xFFFE0000FFF8000, - 0x1FFFF0007FFF800, - 0xFFFFFFFFFF7FFFFC, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFFFFFFFFFFF, - 0x3FFFC001FFFF00, - 0x3FFE0000FFFE0, - 0x3FFE00003FFE0, - 0xFFF000007FF80, - 0x3FFC00001FFE00, - 0xFFF000007FF800, - 0x3FFC00001FFE000, - 0xFFF80000FFF8000, - 0xFFFE0000FFF8000, - 0x1FFFF0007FFF800, - 0xFFFFFFFFFFFFFFFC, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFFFFFFFFFFF, - 0x3FFFC001FFFF00, - 0x3FFE0000FFFE0, - 0x3FFE00003FFE0, - 0xFFF000007FF80, - 0x3FFC00001FFE00, - 0xFFF000007FF800, - 0x3FFC00001FFE000, - 0xFFF80000FFF8000, - 0xFFFE0000FFF8000, - 0x1FFFF0007FFF800, - 0xFFFFFFFFFFFFFFFC, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFFFFFFFFFFF, - 0x3FFFE003FFFF00, - 0x7FFE0000FFFE0, - 0x3FFE00003FFF0, - 0xFFF000007FF80, - 0x3FFC00001FFE00, - 0xFFF000007FF800, - 0x3FFC00001FFE000, - 0x1FFF80000FFF8000, - 0xFFFE0000FFFC000, - 0x1FFFF800FFFF800, - 0xFFFFFFFFFFFFFFFC, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x3FFFE003FFFF80, - 0x7FFE0000FFFE0, - 0x7FFE00003FFF0, - 0xFFF000007FFC0, - 0x3FFC00001FFE00, - 0xFFF000007FF800, - 0x7FFC00001FFE000, - 0x1FFF80000FFFC000, - 0xFFFE0000FFFC000, - 0x3FFFF800FFFF800, - 0xFFFFFFFFFFFFFFFE, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x3FFFE003FFFF80, - 0x7FFE0000FFFE0, - 0x7FFE00003FFF0, - 0xFFF000007FFC0, - 0x3FFC00001FFE00, - 0xFFF000007FF800, - 0x7FFC00001FFE000, - 0x1FFF80000FFFC000, - 0xFFFE0000FFFC000, - 0x3FFFF800FFFF800, - 0xFFFFFFFFFFFFFFFE, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFE003FFFF80, - 0x7FFF0001FFFF0, - 0x7FFE00003FFF0, - 0xFFF000007FFC0, - 0x3FFC00001FFE00, - 0xFFF000007FF800, - 0x7FFC00001FFE000, - 0x1FFF80000FFFC000, - 0x1FFFF0001FFFC000, - 0x3FFFF800FFFFC00, - 0xFFFFFFFFFFFFFFFE, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFE003FFFF80, - 0x7FFF0001FFFF0, - 0x7FFE00003FFF0, - 0xFFF000007FFC0, - 0x3FFC00001FFE00, - 0xFFF000007FF800, - 0x7FFC00001FFE000, - 0x1FFF80000FFFC000, - 0x1FFFF0001FFFC000, - 0x3FFFF800FFFFC00, - 0xFFFFFFFFFFFFFFFE, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFE003FFFF80, - 0x7FFF0001FFFF0, - 0x7FFE00003FFF0, - 0xFFF000007FFC0, - 0x3FFC00001FFE00, - 0xFFF000007FF800, - 0x7FFC00001FFE000, - 0x1FFF80000FFFC000, - 0x1FFFF0001FFFC000, - 0x3FFFF800FFFFC00, - 0xFFFFFFFFFFFFFFFE, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFE003FFFFC1, - 0x7FFF0001FFFF0, - 0x7FFE00003FFF0, - 0xFFF80000FFFC0, - 0x3FFC00001FFE00, - 0xFFF000007FF800, - 0x7FFE00003FFE000, - 0x1FFF80000FFFC000, - 0x1FFFF0001FFFC000, - 0x7FFFF800FFFFC00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFE003FFFFC1, - 0x7FFF0001FFFF0, - 0x7FFE00003FFF0, - 0xFFF80000FFFC0, - 0x3FFC00001FFE00, - 0xFFF000007FF800, - 0x7FFE00003FFE000, - 0x1FFF80000FFFC000, - 0x1FFFF0001FFFC000, - 0x7FFFF800FFFFC00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFE003FFFFC1, - 0x7FFF0001FFFF0, - 0x7FFE00003FFF0, - 0xFFF80000FFFC0, - 0x3FFC00001FFE00, - 0xFFF000007FF800, - 0x7FFE00003FFE000, - 0x1FFF80000FFFC000, - 0x1FFFF0001FFFC000, - 0x7FFFF800FFFFC00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFF007FFFFC1, - 0x7FFF0001FFFF0, - 0x7FFF00007FFF0, - 0xFFF80000FFFC0, - 0x3FFC00001FFE00, - 0xFFF000007FF800, - 0x7FFE00003FFE000, - 0x1FFFC0001FFFC000, - 0x1FFFF0001FFFC000, - 0x7FFFFC01FFFFC00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFF007FFFFE3, - 0x7FFF0001FFFF0, - 0x7FFF00007FFF0, - 0x1FFF80000FFFC0, - 0x3FFC00001FFF00, - 0x1FFF000007FF800, - 0x7FFE00003FFF000, - 0x1FFFC0001FFFC000, - 0x1FFFF0001FFFC000, - 0x8FFFFFC01FFFFC00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFF007FFFFE3, - 0x7FFF0001FFFF0, - 0x7FFF00007FFF0, - 0x1FFF80000FFFC0, - 0x3FFC00001FFF00, - 0x1FFF000007FF800, - 0x7FFE00003FFF000, - 0x1FFFC0001FFFC000, - 0x1FFFF0001FFFC000, - 0x8FFFFFC01FFFFC00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFF007FFFFF7, - 0x7FFF0001FFFF0, - 0x7FFF00007FFF0, - 0x1FFF80000FFFC0, - 0x3FFE00003FFF00, - 0x1FFF80000FFF800, - 0x7FFE00003FFF000, - 0x1FFFC0001FFFC000, - 0x1FFFF0001FFFC000, - 0xDFFFFFC01FFFFC00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFF007FFFFFF, - 0xFFFF0001FFFF8, - 0x7FFF00007FFF8, - 0x1FFF80000FFFC0, - 0x7FFE00003FFF00, - 0x1FFF80000FFFC00, - 0x7FFE00003FFF000, - 0x3FFFC0001FFFC000, - 0x3FFFF0001FFFE000, - 0xFFFFFFC01FFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFF007FFFFFF, - 0xFFFF0001FFFF8, - 0x7FFF00007FFF8, - 0x1FFF80000FFFC0, - 0x7FFE00003FFF00, - 0x1FFF80000FFFC00, - 0x7FFE00003FFF000, - 0x3FFFC0001FFFC000, - 0x3FFFF0001FFFE000, - 0xFFFFFFC01FFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFF007FFFFFF, - 0xFFFF8003FFFF8, - 0x7FFF00007FFF8, - 0x1FFF80000FFFC0, - 0x7FFE00003FFF00, - 0x1FFF80000FFFC00, - 0x7FFE00003FFF000, - 0x3FFFC0001FFFC000, - 0x3FFFF8003FFFE000, - 0xFFFFFFC01FFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFF80FFFFFFF, - 0xFFFF8003FFFF8, - 0xFFFF00007FFF8, - 0x1FFF80000FFFE0, - 0x7FFE00003FFF00, - 0x1FFF80000FFFC00, - 0xFFFE00003FFF000, - 0x3FFFC0001FFFE000, - 0x3FFFF8003FFFE000, - 0xFFFFFFE03FFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFF80FFFFFFF, - 0xFFFF8003FFFF8, - 0xFFFF00007FFF8, - 0x1FFF80000FFFE0, - 0x7FFE00003FFF00, - 0x1FFF80000FFFC00, - 0xFFFE00003FFF000, - 0x3FFFC0001FFFE000, - 0x3FFFF8003FFFE000, - 0xFFFFFFE03FFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFF80FFFFFFF, - 0xFFFF8003FFFF8, - 0xFFFF00007FFF8, - 0x1FFF80000FFFE0, - 0x7FFE00003FFF00, - 0x1FFF80000FFFC00, - 0xFFFE00003FFF000, - 0x3FFFC0001FFFE000, - 0x3FFFF8003FFFE000, - 0xFFFFFFE03FFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFF80FFFFFFF, - 0xFFFF8003FFFF8, - 0xFFFF00007FFF8, - 0x1FFF80000FFFE0, - 0x7FFE00003FFF00, - 0x1FFF80000FFFC00, - 0xFFFE00003FFF000, - 0x3FFFC0001FFFE000, - 0x3FFFF8003FFFE000, - 0xFFFFFFE03FFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFF80FFFFFFF, - 0xFFFF8003FFFF8, - 0xFFFF00007FFF8, - 0x1FFF80000FFFE0, - 0x7FFE00003FFF00, - 0x1FFF80000FFFC00, - 0xFFFE00003FFF000, - 0x3FFFC0001FFFE000, - 0x3FFFF8003FFFE000, - 0xFFFFFFE03FFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFC1FFFFFFF, - 0xFFFF8003FFFF8, - 0xFFFF00007FFF8, - 0x1FFFC0001FFFE0, - 0x7FFE00003FFF00, - 0x1FFF80000FFFC00, - 0xFFFF00007FFF000, - 0x3FFFC0001FFFE000, - 0x3FFFF8003FFFE000, - 0xFFFFFFF07FFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFC1FFFFFFF, - 0xFFFF8003FFFFC, - 0xFFFF8000FFFF8, - 0x1FFFC0001FFFE0, - 0x7FFE00003FFF00, - 0x1FFF80000FFFC00, - 0xFFFF00007FFF000, - 0x3FFFE0003FFFE000, - 0x7FFFF8003FFFE000, - 0xFFFFFFF07FFFFF00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFC1FFFFFFF, - 0xFFFF8003FFFFC, - 0xFFFF8000FFFF8, - 0x1FFFC0001FFFE0, - 0x7FFE00003FFF00, - 0x1FFF80000FFFC00, - 0xFFFF00007FFF000, - 0x3FFFE0003FFFE000, - 0x7FFFF8003FFFE000, - 0xFFFFFFF07FFFFF00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFC1FFFFFFF, - 0xFFFF8003FFFFC, - 0xFFFF8000FFFF8, - 0x1FFFC0001FFFE0, - 0x7FFE00003FFF00, - 0x1FFF80000FFFC00, - 0xFFFF00007FFF000, - 0x3FFFE0003FFFE000, - 0x7FFFF8003FFFE000, - 0xFFFFFFF07FFFFF00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFE3FFFFFFF, - 0x1FFFFC007FFFFC, - 0xFFFF8000FFFFC, - 0x3FFFC0001FFFE0, - 0x7FFE00003FFF80, - 0x3FFF80000FFFC00, - 0xFFFF00007FFF800, - 0x7FFFE0003FFFE000, - 0x7FFFFC007FFFF000, - 0xFFFFFFF8FFFFFF00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFE3FFFFFFF, - 0x1FFFFC007FFFFC, - 0xFFFF8000FFFFC, - 0x3FFFC0001FFFE0, - 0x7FFE00003FFF80, - 0x3FFF80000FFFC00, - 0xFFFF00007FFF800, - 0x7FFFE0003FFFE000, - 0x7FFFFC007FFFF000, - 0xFFFFFFF8FFFFFF00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFE3FFFFFFF, - 0x1FFFFC007FFFFC, - 0xFFFF8000FFFFC, - 0x3FFFC0001FFFE0, - 0x7FFE00003FFF80, - 0x3FFF80000FFFC00, - 0xFFFF00007FFF800, - 0x7FFFE0003FFFE000, - 0x7FFFFC007FFFF000, - 0xFFFFFFF8FFFFFF00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFF7FFFFFFF, - 0x1FFFFC007FFFFC, - 0xFFFF8000FFFFC, - 0x3FFFC0001FFFE0, - 0x7FFF00007FFF80, - 0x3FFFC0001FFFC00, - 0xFFFF00007FFF800, - 0x7FFFE0003FFFE000, - 0x7FFFFC007FFFF000, - 0xFFFFFFFDFFFFFF00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFFFFFFFFFF, - 0x1FFFFC007FFFFC, - 0xFFFF8000FFFFC, - 0x3FFFC0001FFFE0, - 0xFFFF00007FFF80, - 0x3FFFC0001FFFE00, - 0xFFFF00007FFF800, - 0x7FFFE0003FFFE000, - 0x7FFFFC007FFFF000, - 0xFFFFFFFFFFFFFF00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x3FFFFFFFFFFFFFF, - 0x1FFFFC007FFFFE, - 0x1FFFF8000FFFFC, - 0x3FFFC0001FFFF0, - 0xFFFF00007FFF80, - 0x3FFFC0001FFFE00, - 0x1FFFF00007FFF800, - 0x7FFFE0003FFFF000, - 0xFFFFFC007FFFF000, - 0xFFFFFFFFFFFFFF80, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x3FFFFFFFFFFFFFF, - 0x1FFFFC007FFFFE, - 0x1FFFF8000FFFFC, - 0x3FFFC0001FFFF0, - 0xFFFF00007FFF80, - 0x3FFFC0001FFFE00, - 0x1FFFF00007FFF800, - 0x7FFFE0003FFFF000, - 0xFFFFFC007FFFF000, - 0xFFFFFFFFFFFFFF80, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x3FFFFFFFFFFFFFF, - 0x1FFFFC007FFFFE, - 0x1FFFF8000FFFFC, - 0x3FFFC0001FFFF0, - 0xFFFF00007FFF80, - 0x3FFFC0001FFFE00, - 0x1FFFF00007FFF800, - 0x7FFFE0003FFFF000, - 0xFFFFFC007FFFF000, - 0xFFFFFFFFFFFFFF80, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x3FFFFFFFFFFFFFF, - 0x1FFFFC007FFFFE, - 0x1FFFF8000FFFFC, - 0x3FFFC0001FFFF0, - 0xFFFF00007FFF80, - 0x3FFFC0001FFFE00, - 0x1FFFF00007FFF800, - 0x7FFFE0003FFFF000, - 0xFFFFFC007FFFF000, - 0xFFFFFFFFFFFFFF80, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x3FFFFFFFFFFFFFF, - 0x1FFFFC007FFFFE, - 0x1FFFF8000FFFFC, - 0x3FFFC0001FFFF0, - 0xFFFF00007FFF80, - 0x3FFFC0001FFFE00, - 0x1FFFF00007FFF800, - 0x7FFFE0003FFFF000, - 0xFFFFFC007FFFF000, - 0xFFFFFFFFFFFFFF80, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x3FFFFFFFFFFFFFF, - 0x1FFFFE00FFFFFE, - 0x1FFFFC001FFFFC, - 0x3FFFC0001FFFF0, - 0xFFFF00007FFF80, - 0x3FFFC0001FFFE00, - 0x1FFFF00007FFF800, - 0x7FFFF0007FFFF000, - 0xFFFFFE00FFFFF000, - 0xFFFFFFFFFFFFFF80, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFFFFFFFFFF, - 0x1FFFFE00FFFFFF, - 0x1FFFFC001FFFFC, - 0x3FFFE0003FFFF0, - 0xFFFF00007FFF80, - 0x3FFFC0001FFFE00, - 0x1FFFF8000FFFF800, - 0x7FFFF0007FFFF000, - 0xFFFFFE00FFFFF000, - 0xFFFFFFFFFFFFFFC1, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFFFFFFFFFF, - 0x3FFFFE00FFFFFF, - 0x1FFFFC001FFFFE, - 0x3FFFE0003FFFF0, - 0xFFFF00007FFF80, - 0x3FFFC0001FFFE00, - 0x1FFFF8000FFFF800, - 0xFFFFF0007FFFF000, - 0xFFFFFE00FFFFF800, - 0xFFFFFFFFFFFFFFC1, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFFFFFFFFFF, - 0x3FFFFE00FFFFFF, - 0x1FFFFC001FFFFE, - 0x3FFFE0003FFFF0, - 0xFFFF00007FFF80, - 0x3FFFC0001FFFE00, - 0x1FFFF8000FFFF800, - 0xFFFFF0007FFFF000, - 0xFFFFFE00FFFFF800, - 0xFFFFFFFFFFFFFFC1, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFFFFFFFFFF, - 0x3FFFFE00FFFFFF, - 0x1FFFFC001FFFFE, - 0x3FFFE0003FFFF0, - 0xFFFF00007FFF80, - 0x3FFFC0001FFFE00, - 0x1FFFF8000FFFF800, - 0xFFFFF0007FFFF000, - 0xFFFFFE00FFFFF800, - 0xFFFFFFFFFFFFFFC1, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFFFFFFFFFF, - 0x3FFFFE00FFFFFF, - 0x1FFFFC001FFFFE, - 0x3FFFE0003FFFF0, - 0xFFFF00007FFF80, - 0x3FFFC0001FFFE00, - 0x1FFFF8000FFFF800, - 0xFFFFF0007FFFF000, - 0xFFFFFE00FFFFF800, - 0xFFFFFFFFFFFFFFC1, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x8FFFFFFFFFFFFFFF, - 0x3FFFFE00FFFFFF, - 0x1FFFFC001FFFFE, - 0x7FFFE0003FFFF0, - 0xFFFF00007FFFC0, - 0x7FFFC0001FFFE00, - 0x1FFFF8000FFFFC00, - 0xFFFFF0007FFFF000, - 0xFFFFFE00FFFFF800, - 0xFFFFFFFFFFFFFFE3, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x8FFFFFFFFFFFFFFF, - 0x3FFFFE00FFFFFF, - 0x1FFFFC001FFFFE, - 0x7FFFE0003FFFF0, - 0xFFFF00007FFFC0, - 0x7FFFC0001FFFE00, - 0x1FFFF8000FFFFC00, - 0xFFFFF0007FFFF000, - 0xFFFFFE00FFFFF800, - 0xFFFFFFFFFFFFFFE3, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x8FFFFFFFFFFFFFFF, - 0x3FFFFE00FFFFFF, - 0x1FFFFC001FFFFE, - 0x7FFFE0003FFFF0, - 0xFFFF00007FFFC0, - 0x7FFFC0001FFFE00, - 0x1FFFF8000FFFFC00, - 0xFFFFF0007FFFF000, - 0xFFFFFE00FFFFF800, - 0xFFFFFFFFFFFFFFE3, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xDFFFFFFFFFFFFFFF, - 0x3FFFFF01FFFFFF, - 0x3FFFFC001FFFFE, - 0x7FFFE0003FFFF8, - 0xFFFF8000FFFFC0, - 0x7FFFE0003FFFE00, - 0x3FFFF8000FFFFC00, - 0xFFFFF0007FFFF800, - 0xFFFFFF01FFFFF800, - 0xFFFFFFFFFFFFFFF7, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x3FFFFF01FFFFFF, - 0x3FFFFC001FFFFE, - 0x7FFFE0003FFFF8, - 0x1FFFF8000FFFFC0, - 0x7FFFE0003FFFF00, - 0x3FFFF8000FFFFC00, - 0xFFFFF0007FFFF800, - 0xFFFFFF01FFFFF800, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x3FFFFF01FFFFFF, - 0x3FFFFC001FFFFE, - 0x7FFFE0003FFFF8, - 0x1FFFF8000FFFFC0, - 0x7FFFE0003FFFF00, - 0x3FFFF8000FFFFC00, - 0xFFFFF0007FFFF800, - 0xFFFFFF01FFFFF800, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFF01FFFFFF, - 0x3FFFFE003FFFFF, - 0x7FFFE0003FFFF8, - 0x1FFFF8000FFFFC0, - 0x7FFFE0003FFFF00, - 0x3FFFF8000FFFFC00, - 0xFFFFF800FFFFF800, - 0xFFFFFF01FFFFFC01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFF01FFFFFF, - 0x3FFFFE003FFFFF, - 0x7FFFE0003FFFF8, - 0x1FFFF8000FFFFC0, - 0x7FFFE0003FFFF00, - 0x3FFFF8000FFFFC00, - 0xFFFFF800FFFFF800, - 0xFFFFFF01FFFFFC01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFF01FFFFFF, - 0x3FFFFE003FFFFF, - 0x7FFFE0003FFFF8, - 0x1FFFF8000FFFFC0, - 0x7FFFE0003FFFF00, - 0x3FFFF8000FFFFC00, - 0xFFFFF800FFFFF800, - 0xFFFFFF01FFFFFC01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFF01FFFFFF, - 0x3FFFFE003FFFFF, - 0x7FFFE0003FFFF8, - 0x1FFFF8000FFFFC0, - 0x7FFFE0003FFFF00, - 0x3FFFF8000FFFFC00, - 0xFFFFF800FFFFF800, - 0xFFFFFF01FFFFFC01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFF83FFFFFF, - 0x3FFFFE003FFFFF, - 0x7FFFF0007FFFF8, - 0x1FFFF8000FFFFC0, - 0x7FFFE0003FFFF00, - 0x3FFFFC001FFFFC00, - 0xFFFFF800FFFFF800, - 0xFFFFFF83FFFFFC01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFF83FFFFFF, - 0x3FFFFE003FFFFF, - 0x7FFFF0007FFFF8, - 0x1FFFF8000FFFFC0, - 0x7FFFE0003FFFF00, - 0x3FFFFC001FFFFC00, - 0xFFFFF800FFFFF800, - 0xFFFFFF83FFFFFC01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFF83FFFFFF, - 0x3FFFFE003FFFFF, - 0x7FFFF0007FFFF8, - 0x1FFFF8000FFFFC0, - 0x7FFFE0003FFFF00, - 0x3FFFFC001FFFFC00, - 0xFFFFF800FFFFF800, - 0xFFFFFF83FFFFFC01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFF83FFFFFF, - 0x3FFFFE003FFFFF, - 0x7FFFF0007FFFF8, - 0x1FFFF8000FFFFC0, - 0x7FFFE0003FFFF00, - 0x3FFFFC001FFFFC00, - 0xFFFFF800FFFFF800, - 0xFFFFFF83FFFFFC01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFF83FFFFFF, - 0x3FFFFE003FFFFF, - 0x7FFFF0007FFFF8, - 0x1FFFF8000FFFFC0, - 0x7FFFE0003FFFF00, - 0x3FFFFC001FFFFC00, - 0xFFFFF800FFFFF800, - 0xFFFFFF83FFFFFC01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFC7FFFFFF, - 0x3FFFFE003FFFFF, - 0xFFFFF0007FFFF8, - 0x1FFFF8000FFFFE0, - 0xFFFFE0003FFFF00, - 0x3FFFFC001FFFFE00, - 0xFFFFF800FFFFF800, - 0xFFFFFFC7FFFFFC01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x80FFFFFFC7FFFFFF, - 0x7FFFFE003FFFFF, - 0xFFFFF0007FFFFC, - 0x1FFFF8000FFFFE0, - 0xFFFFE0003FFFF00, - 0x7FFFFC001FFFFE00, - 0xFFFFF800FFFFFC00, - 0xFFFFFFC7FFFFFE03, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x80FFFFFFC7FFFFFF, - 0x7FFFFE003FFFFF, - 0xFFFFF0007FFFFC, - 0x1FFFF8000FFFFE0, - 0xFFFFE0003FFFF00, - 0x7FFFFC001FFFFE00, - 0xFFFFF800FFFFFC00, - 0xFFFFFFC7FFFFFE03, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x80FFFFFFEFFFFFFF, - 0x7FFFFF007FFFFF, - 0xFFFFF0007FFFFC, - 0x1FFFFC001FFFFE0, - 0xFFFFF0007FFFF00, - 0x7FFFFC001FFFFE00, - 0xFFFFFC01FFFFFC00, - 0xFFFFFFEFFFFFFE03, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x80FFFFFFFFFFFFFF, - 0x7FFFFF007FFFFF, - 0xFFFFF0007FFFFC, - 0x3FFFFC001FFFFE0, - 0xFFFFF0007FFFF80, - 0x7FFFFC001FFFFE00, - 0xFFFFFC01FFFFFC00, - 0xFFFFFFFFFFFFFE03, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x80FFFFFFFFFFFFFF, - 0x7FFFFF007FFFFF, - 0xFFFFF0007FFFFC, - 0x3FFFFC001FFFFE0, - 0xFFFFF0007FFFF80, - 0x7FFFFC001FFFFE00, - 0xFFFFFC01FFFFFC00, - 0xFFFFFFFFFFFFFE03, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x80FFFFFFFFFFFFFF, - 0x7FFFFF007FFFFF, - 0xFFFFF0007FFFFC, - 0x3FFFFC001FFFFE0, - 0xFFFFF0007FFFF80, - 0x7FFFFC001FFFFE00, - 0xFFFFFC01FFFFFC00, - 0xFFFFFFFFFFFFFE03, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x80FFFFFFFFFFFFFF, - 0x7FFFFF007FFFFF, - 0xFFFFF0007FFFFC, - 0x3FFFFC001FFFFE0, - 0xFFFFF0007FFFF80, - 0x7FFFFC001FFFFE00, - 0xFFFFFC01FFFFFC00, - 0xFFFFFFFFFFFFFE03, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x80FFFFFFFFFFFFFF, - 0x7FFFFF007FFFFF, - 0xFFFFF0007FFFFC, - 0x3FFFFC001FFFFE0, - 0xFFFFF0007FFFF80, - 0x7FFFFC001FFFFE00, - 0xFFFFFC01FFFFFC00, - 0xFFFFFFFFFFFFFE03, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xC1FFFFFFFFFFFFFF, - 0x7FFFFF007FFFFF, - 0xFFFFF800FFFFFC, - 0x3FFFFC001FFFFE0, - 0xFFFFF0007FFFF80, - 0x7FFFFE003FFFFE00, - 0xFFFFFC01FFFFFC00, - 0xFFFFFFFFFFFFFF07, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xC1FFFFFFFFFFFFFF, - 0x7FFFFF007FFFFF, - 0xFFFFF800FFFFFC, - 0x3FFFFC001FFFFE0, - 0xFFFFF0007FFFF80, - 0x7FFFFE003FFFFE00, - 0xFFFFFC01FFFFFC00, - 0xFFFFFFFFFFFFFF07, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xC1FFFFFFFFFFFFFF, - 0x7FFFFF007FFFFF, - 0xFFFFF800FFFFFC, - 0x3FFFFC001FFFFE0, - 0xFFFFF0007FFFF80, - 0x7FFFFE003FFFFE00, - 0xFFFFFC01FFFFFC00, - 0xFFFFFFFFFFFFFF07, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xC1FFFFFFFFFFFFFF, - 0x7FFFFF007FFFFF, - 0xFFFFF800FFFFFC, - 0x3FFFFC001FFFFE0, - 0xFFFFF0007FFFF80, - 0x7FFFFE003FFFFE00, - 0xFFFFFC01FFFFFC00, - 0xFFFFFFFFFFFFFF07, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xC1FFFFFFFFFFFFFF, - 0xFFFFFF80FFFFFF, - 0xFFFFF800FFFFFE, - 0x3FFFFC001FFFFE0, - 0xFFFFF0007FFFF80, - 0xFFFFFE003FFFFE00, - 0xFFFFFE03FFFFFE00, - 0xFFFFFFFFFFFFFF07, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xC1FFFFFFFFFFFFFF, - 0xFFFFFF80FFFFFF, - 0xFFFFF800FFFFFE, - 0x3FFFFC001FFFFE0, - 0xFFFFF0007FFFF80, - 0xFFFFFE003FFFFE00, - 0xFFFFFE03FFFFFE00, - 0xFFFFFFFFFFFFFF07, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xE3FFFFFFFFFFFFFF, - 0xFFFFFF80FFFFFF, - 0x1FFFFF800FFFFFE, - 0x3FFFFC001FFFFF0, - 0x1FFFFF0007FFFF80, - 0xFFFFFE003FFFFF00, - 0xFFFFFE03FFFFFE00, - 0xFFFFFFFFFFFFFF8F, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xE3FFFFFFFFFFFFFF, - 0xFFFFFF80FFFFFF, - 0x1FFFFF800FFFFFE, - 0x3FFFFC001FFFFF0, - 0x1FFFFF0007FFFF80, - 0xFFFFFE003FFFFF00, - 0xFFFFFE03FFFFFE00, - 0xFFFFFFFFFFFFFF8F, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xE3FFFFFFFFFFFFFF, - 0xFFFFFF80FFFFFF, - 0x1FFFFF800FFFFFE, - 0x3FFFFC001FFFFF0, - 0x1FFFFF0007FFFF80, - 0xFFFFFE003FFFFF00, - 0xFFFFFE03FFFFFE00, - 0xFFFFFFFFFFFFFF8F, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xF7FFFFFFFFFFFFFF, - 0xFFFFFF80FFFFFF, - 0x1FFFFF800FFFFFE, - 0x3FFFFE003FFFFF0, - 0x1FFFFF800FFFFF80, - 0xFFFFFE003FFFFF00, - 0xFFFFFE03FFFFFE00, - 0xFFFFFFFFFFFFFFDF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xF7FFFFFFFFFFFFFF, - 0xFFFFFF80FFFFFF, - 0x1FFFFF800FFFFFE, - 0x3FFFFE003FFFFF0, - 0x1FFFFF800FFFFF80, - 0xFFFFFE003FFFFF00, - 0xFFFFFE03FFFFFE00, - 0xFFFFFFFFFFFFFFDF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFF80FFFFFF, - 0x1FFFFF800FFFFFE, - 0x7FFFFE003FFFFF0, - 0x1FFFFF800FFFFFC0, - 0xFFFFFE003FFFFF00, - 0xFFFFFE03FFFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFF80FFFFFF, - 0x1FFFFF800FFFFFE, - 0x7FFFFE003FFFFF0, - 0x1FFFFF800FFFFFC0, - 0xFFFFFE003FFFFF00, - 0xFFFFFE03FFFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFC1FFFFFF, - 0x1FFFFFC01FFFFFE, - 0x7FFFFE003FFFFF0, - 0x1FFFFF800FFFFFC0, - 0xFFFFFF007FFFFF00, - 0xFFFFFF07FFFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFC1FFFFFF, - 0x1FFFFFC01FFFFFE, - 0x7FFFFE003FFFFF0, - 0x1FFFFF800FFFFFC0, - 0xFFFFFF007FFFFF00, - 0xFFFFFF07FFFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFC1FFFFFF, - 0x1FFFFFC01FFFFFE, - 0x7FFFFE003FFFFF0, - 0x1FFFFF800FFFFFC0, - 0xFFFFFF007FFFFF00, - 0xFFFFFF07FFFFFE00, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFFC1FFFFFF, - 0x1FFFFFC01FFFFFF, - 0x7FFFFE003FFFFF0, - 0x1FFFFF800FFFFFC0, - 0xFFFFFF007FFFFF00, - 0xFFFFFF07FFFFFF01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFFC1FFFFFF, - 0x1FFFFFC01FFFFFF, - 0x7FFFFE003FFFFF0, - 0x1FFFFF800FFFFFC0, - 0xFFFFFF007FFFFF00, - 0xFFFFFF07FFFFFF01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFFC1FFFFFF, - 0x1FFFFFC01FFFFFF, - 0x7FFFFE003FFFFF0, - 0x1FFFFF800FFFFFC0, - 0xFFFFFF007FFFFF00, - 0xFFFFFF07FFFFFF01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFFC1FFFFFF, - 0x1FFFFFC01FFFFFF, - 0x7FFFFE003FFFFF0, - 0x1FFFFF800FFFFFC0, - 0xFFFFFF007FFFFF00, - 0xFFFFFF07FFFFFF01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFFE3FFFFFF, - 0x3FFFFFC01FFFFFF, - 0x7FFFFE003FFFFF8, - 0x3FFFFF800FFFFFC0, - 0xFFFFFF007FFFFF80, - 0xFFFFFF8FFFFFFF01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFFE3FFFFFF, - 0x3FFFFFC01FFFFFF, - 0x7FFFFE003FFFFF8, - 0x3FFFFF800FFFFFC0, - 0xFFFFFF007FFFFF80, - 0xFFFFFF8FFFFFFF01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFFE3FFFFFF, - 0x3FFFFFC01FFFFFF, - 0x7FFFFE003FFFFF8, - 0x3FFFFF800FFFFFC0, - 0xFFFFFF007FFFFF80, - 0xFFFFFF8FFFFFFF01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFFE3FFFFFF, - 0x3FFFFFC01FFFFFF, - 0x7FFFFE003FFFFF8, - 0x3FFFFF800FFFFFC0, - 0xFFFFFF007FFFFF80, - 0xFFFFFF8FFFFFFF01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFFE3FFFFFF, - 0x3FFFFFC01FFFFFF, - 0x7FFFFE003FFFFF8, - 0x3FFFFF800FFFFFC0, - 0xFFFFFF007FFFFF80, - 0xFFFFFF8FFFFFFF01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1FFFFFFF7FFFFFF, - 0x3FFFFFC01FFFFFF, - 0x7FFFFF007FFFFF8, - 0x3FFFFFC01FFFFFC0, - 0xFFFFFF007FFFFF80, - 0xFFFFFFDFFFFFFF01, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x83FFFFFFFFFFFFFF, - 0x3FFFFFE03FFFFFF, - 0xFFFFFF007FFFFF8, - 0x3FFFFFC01FFFFFE0, - 0xFFFFFF80FFFFFF80, - 0xFFFFFFFFFFFFFF83, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x83FFFFFFFFFFFFFF, - 0x3FFFFFE03FFFFFF, - 0xFFFFFF007FFFFF8, - 0x3FFFFFC01FFFFFE0, - 0xFFFFFF80FFFFFF80, - 0xFFFFFFFFFFFFFF83, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x83FFFFFFFFFFFFFF, - 0x3FFFFFE03FFFFFF, - 0xFFFFFF007FFFFF8, - 0x3FFFFFC01FFFFFE0, - 0xFFFFFF80FFFFFF80, - 0xFFFFFFFFFFFFFF83, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x83FFFFFFFFFFFFFF, - 0x3FFFFFE03FFFFFF, - 0xFFFFFF007FFFFF8, - 0x3FFFFFC01FFFFFE0, - 0xFFFFFF80FFFFFF80, - 0xFFFFFFFFFFFFFF83, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x83FFFFFFFFFFFFFF, - 0x3FFFFFE03FFFFFF, - 0xFFFFFF007FFFFF8, - 0x3FFFFFC01FFFFFE0, - 0xFFFFFF80FFFFFF80, - 0xFFFFFFFFFFFFFF83, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x83FFFFFFFFFFFFFF, - 0x3FFFFFE03FFFFFF, - 0xFFFFFF007FFFFF8, - 0x3FFFFFC01FFFFFE0, - 0xFFFFFF80FFFFFF80, - 0xFFFFFFFFFFFFFF83, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x83FFFFFFFFFFFFFF, - 0x3FFFFFE03FFFFFF, - 0xFFFFFF007FFFFF8, - 0x3FFFFFC01FFFFFE0, - 0xFFFFFF80FFFFFF80, - 0xFFFFFFFFFFFFFF83, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x83FFFFFFFFFFFFFF, - 0x3FFFFFE03FFFFFF, - 0xFFFFFF007FFFFF8, - 0x3FFFFFC01FFFFFE0, - 0xFFFFFF80FFFFFF80, - 0xFFFFFFFFFFFFFF83, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x83FFFFFFFFFFFFFF, - 0x3FFFFFE03FFFFFF, - 0xFFFFFF007FFFFF8, - 0x3FFFFFC01FFFFFE0, - 0xFFFFFF80FFFFFF80, - 0xFFFFFFFFFFFFFF83, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xC7FFFFFFFFFFFFFF, - 0x7FFFFFE03FFFFFF, - 0xFFFFFF007FFFFFC, - 0x7FFFFFC01FFFFFE0, - 0xFFFFFF80FFFFFFC0, - 0xFFFFFFFFFFFFFFC7, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xC7FFFFFFFFFFFFFF, - 0x7FFFFFE03FFFFFF, - 0xFFFFFF007FFFFFC, - 0x7FFFFFC01FFFFFE0, - 0xFFFFFF80FFFFFFC0, - 0xFFFFFFFFFFFFFFC7, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xC7FFFFFFFFFFFFFF, - 0x7FFFFFE03FFFFFF, - 0xFFFFFF007FFFFFC, - 0x7FFFFFC01FFFFFE0, - 0xFFFFFF80FFFFFFC0, - 0xFFFFFFFFFFFFFFC7, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xC7FFFFFFFFFFFFFF, - 0x7FFFFFF07FFFFFF, - 0xFFFFFF007FFFFFC, - 0x7FFFFFC01FFFFFE0, - 0xFFFFFFC1FFFFFFC0, - 0xFFFFFFFFFFFFFFC7, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xC7FFFFFFFFFFFFFF, - 0x7FFFFFF07FFFFFF, - 0xFFFFFF007FFFFFC, - 0x7FFFFFC01FFFFFE0, - 0xFFFFFFC1FFFFFFC0, - 0xFFFFFFFFFFFFFFC7, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xEFFFFFFFFFFFFFFF, - 0x7FFFFFF07FFFFFF, - 0xFFFFFF80FFFFFFC, - 0x7FFFFFE03FFFFFE0, - 0xFFFFFFC1FFFFFFC0, - 0xFFFFFFFFFFFFFFEF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xEFFFFFFFFFFFFFFF, - 0x7FFFFFF07FFFFFF, - 0xFFFFFF80FFFFFFC, - 0x7FFFFFE03FFFFFE0, - 0xFFFFFFC1FFFFFFC0, - 0xFFFFFFFFFFFFFFEF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFF07FFFFFF, - 0x1FFFFFF80FFFFFFC, - 0x7FFFFFE03FFFFFF0, - 0xFFFFFFC1FFFFFFC0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFF07FFFFFF, - 0x1FFFFFF80FFFFFFC, - 0x7FFFFFE03FFFFFF0, - 0xFFFFFFC1FFFFFFC0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFF07FFFFFF, - 0x1FFFFFF80FFFFFFC, - 0x7FFFFFE03FFFFFF0, - 0xFFFFFFC1FFFFFFC0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFF07FFFFFF, - 0x1FFFFFF80FFFFFFC, - 0x7FFFFFE03FFFFFF0, - 0xFFFFFFC1FFFFFFC0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFF07FFFFFF, - 0x1FFFFFF80FFFFFFC, - 0x7FFFFFE03FFFFFF0, - 0xFFFFFFC1FFFFFFC0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x7FFFFFF07FFFFFF, - 0x1FFFFFF80FFFFFFC, - 0x7FFFFFE03FFFFFF0, - 0xFFFFFFC1FFFFFFC0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFF8FFFFFFF, - 0x1FFFFFF80FFFFFFE, - 0xFFFFFFE03FFFFFF0, - 0xFFFFFFE3FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFF8FFFFFFF, - 0x1FFFFFF80FFFFFFE, - 0xFFFFFFE03FFFFFF0, - 0xFFFFFFE3FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFF8FFFFFFF, - 0x1FFFFFF80FFFFFFE, - 0xFFFFFFE03FFFFFF0, - 0xFFFFFFE3FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFF8FFFFFFF, - 0x1FFFFFF80FFFFFFE, - 0xFFFFFFE03FFFFFF0, - 0xFFFFFFE3FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFF8FFFFFFF, - 0x1FFFFFF80FFFFFFE, - 0xFFFFFFE03FFFFFF0, - 0xFFFFFFE3FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFF8FFFFFFF, - 0x1FFFFFF80FFFFFFE, - 0xFFFFFFE03FFFFFF0, - 0xFFFFFFE3FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFF8FFFFFFF, - 0x1FFFFFF80FFFFFFE, - 0xFFFFFFE03FFFFFF0, - 0xFFFFFFE3FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, - Map { - cells: [ - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFDFFFFFFF, - 0x1FFFFFFC1FFFFFFE, - 0xFFFFFFF07FFFFFF0, - 0xFFFFFFF7FFFFFFE0, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0xFFFFFFFFFFFFFFFF, - 0x1, - ], - }, -]; diff --git a/src/game.rs b/src/game.rs deleted file mode 100644 index 00289a0..0000000 --- a/src/game.rs +++ /dev/null @@ -1,779 +0,0 @@ -use crate::command::{Action, Command}; -use crate::constants::*; -use crate::geometry::*; -use crate::json; - -mod player; -use player::*; - -mod powerup; -use powerup::*; - -pub mod map; -use map::*; - -use arrayvec::ArrayVec; - -#[derive(Debug, PartialEq, Eq, Clone)] -pub struct GameBoard { - pub round: u16, - pub max_rounds: u16, - pub players: [Player; 2], - pub powerups: ArrayVec<[Powerup; 2]>, - pub map: Map, - pub occupied_cells: ArrayVec<[Point2d; 6]>, - pub outcome: SimulationOutcome, -} - -#[derive(Debug, PartialEq, Eq, Clone, Copy)] -pub enum SimulationOutcome { - PlayerWon(usize), - Draw, - Continue, -} - -impl GameBoard { - pub fn new(json: json::State) -> GameBoard { - let player = Player { - active_worm: json.active_worm_index().unwrap(), - moves_score: json.my_player.score - json.my_player.health_score(), - select_moves: json.my_player.remaining_worm_selections, - worms: json - .my_player - .worms - .iter() - .map(|w| Worm { - id: w.id, - health: w.health, - position: Point2d::new(w.position.x, w.position.y), - rounds_until_unfrozen: w.rounds_until_unfrozen, - bombs: w.banana_bombs.as_ref().map(|b| b.count).unwrap_or(0), - snowballs: w.snowballs.as_ref().map(|b| b.count).unwrap_or(0), - }) - .collect(), - }; - - let opponent = Player { - active_worm: 0, - moves_score: json.opponents[0].score - json.opponents[0].health_score(), - select_moves: json.opponents[0].remaining_worm_selections, - worms: json - .opponents - .iter() - .flat_map(|o| &o.worms) - .map(|w| Worm { - id: w.id, - health: w.health, - position: Point2d::new(w.position.x, w.position.y), - rounds_until_unfrozen: w.rounds_until_unfrozen, - bombs: if w.profession == json::WormType::Agent { - STARTING_BOMBS - } else { - 0 - }, - snowballs: if w.profession == json::WormType::Technologist { - STARTING_SNOWBALLS - } else { - 0 - }, - }) - .collect(), - }; - - let mut map = Map::default(); - for cell in json.map.iter().flatten() { - if cell.cell_type == json::CellType::Dirt { - map.set(Point2d::new(cell.x, cell.y)) - } - } - - let players = [player, opponent]; - let occupied_cells = players - .iter() - .flat_map(|p| p.worms.iter()) - .map(|w| w.position) - .collect(); - - GameBoard { - round: json.current_round, - max_rounds: json.max_rounds, - players, - powerups: json - .map - .iter() - .flatten() - .filter_map(|c| { - c.powerup.as_ref().map(|_p| Powerup { - position: Point2d::new(c.x, c.y), - }) - }) - .collect(), - map, - occupied_cells, - outcome: SimulationOutcome::Continue, - } - } - - pub fn update(&mut self, json: json::State) { - for w in &json.my_player.worms { - if let Some(worm) = self.players[0].find_worm_mut(w.id) { - worm.health = w.health; - worm.position = Point2d::new(w.position.x, w.position.y); - worm.bombs = w.banana_bombs.as_ref().map(|b| b.count).unwrap_or(0); - worm.snowballs = w.snowballs.as_ref().map(|b| b.count).unwrap_or(0); - } - } - for w in json.opponents.iter().flat_map(|o| &o.worms) { - if let Some(worm) = self.players[1].find_worm_mut(w.id) { - worm.health = w.health; - worm.position = Point2d::new(w.position.x, w.position.y); - } - } - - if !self.players[1].active_worm_is_frozen() { - if json - .opponents - .iter() - .any(|o| o.previous_command.starts_with("banana")) - { - for worm in &mut self.players[1].worms { - worm.bombs = worm.bombs.saturating_sub(1); - } - } - if json - .opponents - .iter() - .any(|o| o.previous_command.starts_with("snowball")) - { - for worm in &mut self.players[1].worms { - worm.snowballs = worm.snowballs.saturating_sub(1); - } - } - } - - self.players[0].moves_score = json.my_player.score - json.my_player.health_score(); - self.players[1].moves_score = json.opponents[0].score - json.opponents[0].health_score(); - - self.players[0].select_moves = json.my_player.remaining_worm_selections; - self.players[1].select_moves = json.opponents[0].remaining_worm_selections; - - self.powerups = json - .map - .iter() - .flatten() - .filter_map(|c| { - c.powerup.as_ref().map(|_p| Powerup { - position: Point2d::new(c.x, c.y), - }) - }) - .collect(); - - for cell in json.map.iter().flatten() { - let point = Point2d::new(cell.x, cell.y); - - if cfg!(debug_assertions) { - // This checks if my lava map is the same as the game - // engine's lava map. It's off by one because the game - // engine will update its one at the beginning of - // processing the round. - let lava = LAVA_MAP[self.round as usize]; - - let lava_at = lava.at(point); - // NB: Map hasn't been updated yet, so it can be used to tell previous state. - match (&cell.cell_type, self.map.at(point)) { - (json::CellType::Air, Some(false)) => assert!( - lava_at == Some(false), - "Lava at {:?} expected Some(false), but found {:?}", - point, - lava_at - ), - (json::CellType::Air, _) => assert!( - lava_at.is_some(), - "Lava at {:?} expected Some(_), but found {:?}", - point, - lava_at - ), - (json::CellType::Lava, _) => assert!( - lava_at == Some(true), - "Lava at {:?} expected Some(true), but found {:?}", - point, - lava_at - ), - (json::CellType::DeepSpace, _) => assert!( - lava_at == None, - "Lava at {:?} expected None, but found {:?}", - point, - lava_at - ), - (json::CellType::Dirt, _) => assert!( - lava_at.is_some(), - "Lava at {:?} expected Some(_), but found {:?}", - point, - lava_at - ), - }; - } - - if cell.cell_type == json::CellType::Air { - self.map.clear(point) - } - } - - self.clear_dead_worms(); - self.players[0].active_worm = json.active_worm_index().unwrap_or(0); - self.players[1].active_worm = json.opponent_active_worm_index().unwrap_or(0); - - self.round += 1; - debug_assert_eq!(json.current_round, self.round); - } - - pub fn simulate(&mut self, moves: [Command; 2]) { - self.simulate_worms_on_lava(); - self.simulate_tick_frozen_timers(); - - self.simulate_select(moves); - - let actions = self.identify_actions(moves); - - self.simulate_moves(actions); - self.simulate_digs(actions); - self.simulate_bombs(actions); - self.simulate_shoots(actions); - self.simulate_snowballs(actions); - - self.clear_dead_worms(); - - for player in &mut self.players { - player.next_active_worm(); - } - - self.round += 1; - - self.outcome = match ( - self.players[0].worms.len(), - self.players[1].worms.len(), - self.round > self.max_rounds, - ) { - (0, 0, _) => SimulationOutcome::Draw, - (_, 0, _) => SimulationOutcome::PlayerWon(0), - (0, _, _) => SimulationOutcome::PlayerWon(1), - (_, _, true) => SimulationOutcome::Draw, - _ => SimulationOutcome::Continue, - }; - } - - fn simulate_worms_on_lava(&mut self) { - let lava_map = LAVA_MAP[self.round as usize]; - self.players - .iter_mut() - .flat_map(|p| p.worms.iter_mut()) - .filter(|w| lava_map.at(w.position) == Some(true)) - .for_each(|ref mut w| w.health -= LAVA_DAMAGE); - } - - fn simulate_tick_frozen_timers(&mut self) { - self.players - .iter_mut() - .flat_map(|p| p.worms.iter_mut()) - .filter(|w| w.health > 0) - .for_each(|ref mut w| { - w.rounds_until_unfrozen = w.rounds_until_unfrozen.saturating_sub(1) - }); - } - - fn identify_actions(&self, moves: [Command; 2]) -> [Action; 2] { - let mut it = self.players.iter().zip(moves.iter()).map(|(p, m)| { - if p.active_worm_is_frozen() { - Action::DoNothing - } else { - m.action - } - }); - [it.next().unwrap(), it.next().unwrap()] - } - - fn simulate_select(&mut self, moves: [Command; 2]) { - moves - .iter() - .zip(self.players.iter_mut()) - .filter(|(_m, player)| !player.active_worm_is_frozen()) - .for_each(|(m, player)| { - if let Some(worm) = m.worm { - debug_assert!( - player.select_moves > 0, - "Could not make select move, out of select tokens" - ); - player.select_moves = player.select_moves.saturating_sub(1); - player.active_worm = player.find_worm_position(worm).unwrap_or(0); - } - }); - } - - fn simulate_moves(&mut self, actions: [Action; 2]) { - match actions { - [Action::Move(p1), Action::Move(p2)] if p1.x == p2.x && p1.y == p2.y => { - let damage = COLLISION_DAMAGE; - - debug_assert_eq!( - Some(false), - self.map.at(Point2d::new(p1.x, p1.y)), - "Movement target wasn't empty, ({}, {})", - p1.x, - p1.y - ); - // Worms have a 50% chance of swapping places - // here. I'm treating that as an edge case that I - // don't need to handle for now. - for player in &mut self.players { - if let Some(worm) = player.active_worm_mut() { - worm.health -= damage; - } - // You might expect damage score too here, but nope - player.moves_score += MOVE_SCORE; - } - } - _ => { - for player_index in 0..actions.len() { - if let Action::Move(p) = actions[player_index] { - debug_assert_eq!( - Some(false), - self.map.at(p), - "Movement target wasn't empty, ({}, {})", - p.x, - p.y - ); - - self.players[player_index].moves_score += MOVE_SCORE; - - if let Some(worm) = self.players[player_index].active_worm_mut() { - debug_assert!( - (worm.position.x - p.x).abs() <= 1 - && (worm.position.y - p.y).abs() <= 1, - "Tried to move too far away, ({}, {})", - p.x, - p.y - ); - - worm.position = p; - - self.powerups.retain(|power| { - if power.position == worm.position { - worm.health += HEALTH_PACK_VALUE; - false - } else { - true - } - }); - } - } - } - } - } - } - - fn simulate_digs(&mut self, actions: [Action; 2]) { - for player_index in 0..actions.len() { - if let Action::Dig(p) = actions[player_index] { - debug_assert!( - Some(true) == self.map.at(p) - || (player_index == 1 && actions[0] == Action::Dig(p)), - "Tried to dig through air, ({}, {})", - p.x, - p.y - ); - debug_assert! { - (self.players[player_index].active_worm().unwrap().position.x - p.x).abs() <= 1 && - (self.players[player_index].active_worm().unwrap().position.y - p.y).abs() <= 1, - "Tried to dig too far away, ({}, {})", p.x, p.y - }; - - self.players[player_index].moves_score += DIG_SCORE; - - self.map.clear(p); - } - } - } - - fn simulate_bombs(&mut self, actions: [Action; 2]) { - // NB: Damage radius has the cell distance rounded UP, throwing range has the cell distance rounded DOWN - - let map_clone: Map = self.map; - - for player_index in 0..actions.len() { - if let Action::Bomb(p) = actions[player_index] { - if self.map.at(p).is_some() { - if let Some(worm) = self.players[player_index].active_worm_mut() { - debug_assert!(worm.bombs > 0, "Worm is throwing a bomb it doesn't have"); - debug_assert!((worm.position - p).magnitude_squared() < 6 * 6); // max range is 5, but it's 5 after rounding down - - worm.bombs = worm.bombs.saturating_sub(1); - - for &(damage_offset, weapon_damage) in BOMB_DAMAGES.iter() { - let target = p + damage_offset; - - if map_clone.at(target) == Some(true) { - self.map.clear(target); - self.players[player_index].moves_score += DIG_SCORE; - } - self.powerups.retain(|powerup| powerup.position != target); - - let target_own_worm: Option<&mut Worm> = self.players[player_index] - .worms - .iter_mut() - .find(|w| w.position == target); - - if let Some(target_worm) = target_own_worm { - target_worm.health -= weapon_damage; - self.players[player_index].moves_score -= - weapon_damage * ATTACK_SCORE_MULTIPLIER; - if target_worm.health <= 0 { - self.players[player_index].moves_score -= KILL_SCORE; - } - } - - let target_opponent_worm: Option<&mut Worm> = self.players - [GameBoard::opponent(player_index)] - .worms - .iter_mut() - .find(|w| w.position == target); - if let Some(target_worm) = target_opponent_worm { - target_worm.health -= weapon_damage; - self.players[player_index].moves_score += - weapon_damage * ATTACK_SCORE_MULTIPLIER; - if target_worm.health <= 0 { - self.players[player_index].moves_score += KILL_SCORE; - } - } - } - } - } - } - } - } - - pub fn simulate_snowballs(&mut self, actions: [Action; 2]) { - for player_index in 0..actions.len() { - if let Action::Snowball(p) = actions[player_index] { - if self.map.at(p).is_some() { - if let Some(worm) = self.players[player_index].active_worm_mut() { - debug_assert!( - worm.snowballs > 0, - "Worm is throwing a snowball it doesn't have" - ); - debug_assert!((worm.position - p).magnitude_squared() < 6 * 6); // max range is 5, but it's 5 after rounding down - - worm.snowballs = worm.snowballs.saturating_sub(1); - - for &freeze_offset in SNOWBALL_FREEZES.iter() { - let target = p + freeze_offset; - - let target_own_worm: Option<&mut Worm> = self.players[player_index] - .worms - .iter_mut() - .find(|w| w.position == target); - - if let Some(target_worm) = target_own_worm { - target_worm.rounds_until_unfrozen = FREEZE_DURATION; - self.players[player_index].moves_score -= FREEZE_SCORE; - } - - let target_opponent_worm: Option<&mut Worm> = self.players - [GameBoard::opponent(player_index)] - .worms - .iter_mut() - .find(|w| w.position == target); - if let Some(target_worm) = target_opponent_worm { - target_worm.rounds_until_unfrozen = FREEZE_DURATION; - self.players[player_index].moves_score += FREEZE_SCORE; - } - } - } - } - } - } - } - - fn simulate_shoots(&mut self, actions: [Action; 2]) { - 'players_loop: for player_index in 0..actions.len() { - if let Action::Shoot(dir) = actions[player_index] { - if let Some(worm) = self.players[player_index].active_worm() { - let center = worm.position; - let diff = dir.as_vec(); - - let range = if dir.is_diagonal() { - SHOOT_RANGE_DIAGONAL - } else { - SHOOT_RANGE - }; - - for distance in 1..=range { - let target = center + diff * distance; - match self.map.at(target) { - Some(false) => { - let target_own_worm: Option<&mut Worm> = self.players[player_index] - .worms - .iter_mut() - .find(|w| w.position == target); - - if let Some(target_worm) = target_own_worm { - target_worm.health -= SHOOT_DAMAGE; - self.players[player_index].moves_score -= - SHOOT_DAMAGE * ATTACK_SCORE_MULTIPLIER; - if target_worm.health <= 0 { - self.players[player_index].moves_score -= KILL_SCORE; - } - continue 'players_loop; - } - - let target_opponent_worm: Option<&mut Worm> = self.players - [GameBoard::opponent(player_index)] - .worms - .iter_mut() - .find(|w| w.position == target); - - if let Some(target_worm) = target_opponent_worm { - target_worm.health -= SHOOT_DAMAGE; - self.players[player_index].moves_score += - SHOOT_DAMAGE * ATTACK_SCORE_MULTIPLIER; - if target_worm.health <= 0 { - self.players[player_index].moves_score += KILL_SCORE; - } - - continue 'players_loop; - } - } - _ => break, - } - } - - // You get here if the shot missed. Hits are an early return. - self.players[player_index].moves_score += MISSED_ATTACK_SCORE; - } - } - } - } - - fn clear_dead_worms(&mut self) { - for player in &mut self.players { - player.clear_dead_worms(); - } - - self.occupied_cells = self - .players - .iter() - .flat_map(|p| p.worms.iter()) - .map(|w| w.position) - .collect(); - } - - pub fn opponent(player_index: usize) -> usize { - (player_index + 1) % 2 - } - - fn selects_iter(&self, player_index: usize) -> impl Iterator, &Worm)> { - let no_select = self.players[player_index] - .active_worm() - .into_iter() - .map(|w| (None, w)); - - let has_select_moves = self.players[player_index].select_moves > 0; - let active_worm_index = self.players[player_index].active_worm; - let selects = self.players[player_index] - .worms - .iter() - .enumerate() - .filter(move |(p, _w)| has_select_moves && active_worm_index != *p) - .map(|(_p, w)| (Some(w.id), w)); - - no_select.chain(selects) - } - - fn pruned_valid_move_commands(&self, player_index: usize) -> ArrayVec<[Command; 8]> { - self.players[player_index] - .active_worm() - .into_iter() - .flat_map(|worm| { - // TODO: If you aren't on lava, don't step onto the lava - Direction::ALL - .iter() - .map(Direction::as_vec) - .map(move |d| worm.position + d) - .filter(|p| !self.occupied_cells.contains(p)) - .filter_map(|p| match self.map.at(p) { - Some(false) => Some(Action::Move(p)), - Some(true) => Some(Action::Dig(p)), - _ => None, - }) - .map(Command::new) - }) - .collect() - } - - fn pruned_valid_bomb_commands(&self, player_index: usize) -> Vec { - self.selects_iter(player_index) - .filter(|(_, worm)| worm.bombs > 0) - .flat_map(|(select, worm)| { - let mut result = Vec::with_capacity((BOMB_RANGE * 2 + 1).pow(2) as usize - 12); - let own_worm_positions: ArrayVec<[Point2d; 3]> = self.players[player_index] - .worms - .iter() - .map(|w| w.position) - .collect(); - let opponent_worm_positions: ArrayVec<[Point2d; 3]> = self.players - [GameBoard::opponent(player_index)] - .worms - .iter() - .map(|w| w.position) - .collect(); - - for y in worm.position.y - BOMB_RANGE..=worm.position.y + BOMB_RANGE { - for x in worm.position.x - BOMB_RANGE..=worm.position.x + BOMB_RANGE { - let target = Point2d::new(x, y); - if self.map.at(target).is_some() - && (worm.position - target).magnitude_squared() - < (BOMB_RANGE + 1).pow(2) - { - let own_affected_worms = own_worm_positions.iter().any(|p| { - (target - *p).magnitude_squared() - <= BOMB_DAMAGE_RANGE * BOMB_DAMAGE_RANGE - }); - let opponent_affected_worms = opponent_worm_positions.iter().any(|p| { - (target - *p).magnitude_squared() - <= BOMB_DAMAGE_RANGE * BOMB_DAMAGE_RANGE - }); - - if !own_affected_worms && opponent_affected_worms { - result.push(Command { - worm: select, - action: Action::Bomb(target), - }); - } - } - } - } - - result - }) - .collect() - } - - fn pruned_valid_snowball_commands(&self, player_index: usize) -> Vec { - self.selects_iter(player_index) - .filter(|(_, worm)| worm.snowballs > 0) - .flat_map(|(select, worm)| { - let mut result = Vec::with_capacity((SNOWBALL_RANGE * 2 + 1).pow(2) as usize - 12); - let own_worm_positions: ArrayVec<[Point2d; 3]> = self.players[player_index] - .worms - .iter() - .map(|w| w.position) - .collect(); - let opponent_worm_positions: ArrayVec<[Point2d; 3]> = self.players - [GameBoard::opponent(player_index)] - .worms - .iter() - .map(|w| w.position) - .collect(); - - for y in worm.position.y - SNOWBALL_RANGE..=worm.position.y + SNOWBALL_RANGE { - for x in worm.position.x - SNOWBALL_RANGE..=worm.position.x + SNOWBALL_RANGE { - let target = Point2d::new(x, y); - if self.map.at(target).is_some() - && (worm.position - target).magnitude_squared() - < (SNOWBALL_RANGE + 1).pow(2) - { - let own_affected_worms = own_worm_positions.iter().any(|p| { - (target - *p).magnitude_squared() - <= SNOWBALL_FREEZE_RANGE * SNOWBALL_FREEZE_RANGE - }); - let opponent_affected_worms = opponent_worm_positions.iter().any(|p| { - (target - *p).magnitude_squared() - <= SNOWBALL_FREEZE_RANGE * SNOWBALL_FREEZE_RANGE - }); - - if !own_affected_worms && opponent_affected_worms { - result.push(Command { - worm: select, - action: Action::Snowball(target), - }); - } - } - } - } - - result - }) - .collect() - } - - fn pruned_valid_shoot_commands(&self, player_index: usize) -> Vec { - self.selects_iter(player_index) - .flat_map(|(select, worm)| { - self.players[GameBoard::opponent(player_index)] - .worms - .iter() - .filter_map(move |w| { - let diff = w.position - worm.position; - if diff.x == 0 && diff.y.abs() <= SHOOT_RANGE { - if diff.y > 0 { - Some((Direction::South, diff.y)) - } else { - Some((Direction::North, -diff.y)) - } - } else if diff.y == 0 && diff.x.abs() <= SHOOT_RANGE { - if diff.x > 0 { - Some((Direction::East, diff.x)) - } else { - Some((Direction::West, -diff.x)) - } - } else if diff.x.abs() == diff.y.abs() - && diff.x.abs() <= SHOOT_RANGE_DIAGONAL - { - match (diff.x > 0, diff.y > 0) { - (true, true) => Some((Direction::SouthEast, diff.x)), - (false, true) => Some((Direction::SouthWest, -diff.x)), - (true, false) => Some((Direction::NorthEast, diff.x)), - (false, false) => Some((Direction::NorthWest, -diff.x)), - } - } else { - None - } - }) - .filter(move |(dir, range)| { - let diff = dir.as_vec(); - // NB: This is up to range EXCLUSIVE, so if there's - // anything in the way, even another good shot, skip. - !(1..*range).any(|distance| { - self.map.at(worm.position + diff * distance) != Some(false) - && !self - .players - .iter() - .flat_map(|p| p.worms.iter()) - .any(|w| w.position == worm.position + diff * distance) - }) - }) - .map(move |(dir, _range)| Command { - worm: select, - action: Action::Shoot(dir), - }) - }) - .collect() - } - - pub fn pruned_valid_moves(&self, player_index: usize) -> Vec { - if self.players[player_index].active_worm_is_frozen_after_tick() { - vec![Command::new(Action::DoNothing)] - } else { - self.pruned_valid_shoot_commands(player_index) - .iter() - .chain(self.pruned_valid_move_commands(player_index).iter()) - .chain(self.pruned_valid_bomb_commands(player_index).iter()) - .chain(self.pruned_valid_snowball_commands(player_index).iter()) - .chain([Command::new(Action::DoNothing)].iter()) - .cloned() - .collect() - } - } -} - -#[cfg(test)] -mod test {} diff --git a/src/game/map.rs b/src/game/map.rs deleted file mode 100644 index 84ec99a..0000000 --- a/src/game/map.rs +++ /dev/null @@ -1,49 +0,0 @@ -use crate::constants::*; -use crate::geometry::*; - -#[derive(Default, Debug, PartialEq, Eq, Clone, Copy)] -pub struct Map { - pub cells: [u64; MAP_U64S], -} - -impl Map { - fn internal_index(p: Point2d) -> Option<(usize, usize)> { - if p.y < 0 || p.y as usize >= MAP_SIZE { - None - } else { - let row_data = &MAP_ROW_SIZE[p.y as usize]; - if p.x < row_data.x_offset as i8 || p.x as usize >= row_data.x_offset + row_data.len() { - None - } else { - let global_bit = row_data.start_bit + p.x as usize - row_data.x_offset; - let integer = global_bit / 64; - let bit = global_bit % 64; - Some((integer, bit)) - } - } - } - - pub fn at(&self, p: Point2d) -> Option { - Map::internal_index(p).map(|(integer, bit)| { - let mask = 1 << bit; - self.cells[integer] & mask != 0 - }) - } - - pub fn set(&mut self, p: Point2d) { - if let Some((integer, bit)) = Map::internal_index(p) { - let mask = 1 << bit; - self.cells[integer] |= mask; - } else { - panic!("Tried to set an out of bounds bit, {:?}", p); - } - } - pub fn clear(&mut self, p: Point2d) { - if let Some((integer, bit)) = Map::internal_index(p) { - let mask = !(1 << bit); - self.cells[integer] &= mask; - } else { - panic!("Tried to set an out of bounds bit, {:?}", p); - } - } -} diff --git a/src/game/player.rs b/src/game/player.rs deleted file mode 100644 index 0874c76..0000000 --- a/src/game/player.rs +++ /dev/null @@ -1,259 +0,0 @@ -use crate::geometry::*; -use arrayvec::ArrayVec; - -#[derive(Debug, PartialEq, Eq, Clone)] -pub struct Player { - pub moves_score: i32, - pub active_worm: usize, - pub select_moves: u8, - pub worms: ArrayVec<[Worm; 3]>, -} - -#[derive(Debug, PartialEq, Eq, Clone)] -pub struct Worm { - pub id: i32, - pub health: i32, - pub position: Point2d, - pub bombs: u8, - pub snowballs: u8, - pub rounds_until_unfrozen: u8, -} - -impl Player { - pub fn find_worm_position(&self, id: i32) -> Option { - self.worms.iter().position(|w| w.id == id) - } - - pub fn find_worm(&self, id: i32) -> Option<&Worm> { - self.worms.iter().find(|w| w.id == id) - } - - pub fn find_worm_mut(&mut self, id: i32) -> Option<&mut Worm> { - self.worms.iter_mut().find(|w| w.id == id) - } - - pub fn active_worm(&self) -> Option<&Worm> { - self.worms.get(self.active_worm) - } - - pub fn active_worm_mut(&mut self) -> Option<&mut Worm> { - self.worms.get_mut(self.active_worm) - } - - pub fn health(&self) -> i32 { - self.worms.iter().map(|w| w.health).sum() - } - - pub fn max_worm_health(&self) -> i32 { - self.worms.iter().map(|w| w.health).max().unwrap_or(0) - } - - pub fn clear_dead_worms(&mut self) { - for worm_index in (0..self.worms.len()).rev() { - if self.worms[worm_index].health <= 0 { - self.worms.remove(worm_index); - if self.active_worm >= worm_index { - self.active_worm = if self.active_worm > 0 { - self.active_worm - 1 - } else if self.worms.len() > 0 { - self.worms.len() - 1 - } else { - 0 - }; - } - } - } - } - - pub fn next_active_worm(&mut self) { - self.active_worm = (self.active_worm + 1) - .checked_rem(self.worms.len()) - .unwrap_or(0); - } - - fn health_score(&self) -> i32 { - self.health() / 3 - } - - pub fn score(&self) -> i32 { - self.moves_score + self.health_score() - } - - pub fn active_worm_is_frozen(&self) -> bool { - self.active_worm() - .map(|worm| worm.rounds_until_unfrozen > 0) - .unwrap_or(false) - } - - pub fn active_worm_is_frozen_after_tick(&self) -> bool { - self.active_worm() - .map(|worm| worm.rounds_until_unfrozen > 1) - .unwrap_or(false) - } - - pub fn bombs(&self) -> u8 { - self.worms.iter().map(|w| w.bombs).sum() - } - - pub fn snowballs(&self) -> u8 { - self.worms.iter().map(|w| w.snowballs).sum() - } -} - -#[cfg(test)] -mod test { - use super::*; - - #[test] - fn clear_dead_worms_after_active_worm() { - let mut worms = ArrayVec::new(); - worms.push(Worm { - id: 1, - health: 50, - position: Point2d::new(0, 0), - rounds_until_unfrozen: 0, - bombs: 0, - snowballs: 0, - }); - worms.push(Worm { - id: 2, - health: 10, - position: Point2d::new(0, 0), - rounds_until_unfrozen: 0, - bombs: 0, - snowballs: 0, - }); - worms.push(Worm { - id: 3, - health: -2, - position: Point2d::new(0, 0), - rounds_until_unfrozen: 0, - bombs: 0, - snowballs: 0, - }); - let mut player = Player { - active_worm: 1, - moves_score: 0, - select_moves: 0, - worms, - }; - - player.clear_dead_worms(); - - assert_eq!(2, player.worms.len()); - assert_eq!(1, player.active_worm); - - assert_eq!(1, player.worms[0].id); - assert_eq!(2, player.worms[1].id); - } - - #[test] - fn clear_dead_worms_before_active_worm() { - let mut worms = ArrayVec::new(); - worms.push(Worm { - id: 1, - health: 0, - position: Point2d::new(0, 0), - rounds_until_unfrozen: 0, - bombs: 0, - snowballs: 0, - }); - worms.push(Worm { - id: 2, - health: 10, - position: Point2d::new(0, 0), - rounds_until_unfrozen: 0, - bombs: 0, - snowballs: 0, - }); - worms.push(Worm { - id: 3, - health: 2, - position: Point2d::new(0, 0), - rounds_until_unfrozen: 0, - bombs: 0, - snowballs: 0, - }); - let mut player = Player { - active_worm: 1, - moves_score: 0, - worms, - select_moves: 0, - }; - - player.clear_dead_worms(); - - assert_eq!(2, player.worms.len()); - assert_eq!(0, player.active_worm); - - assert_eq!(2, player.worms[0].id); - assert_eq!(3, player.worms[1].id); - } - - #[test] - fn clear_dead_worms_before_active_worm_wrapping() { - let mut worms = ArrayVec::new(); - worms.push(Worm { - id: 1, - health: 0, - position: Point2d::new(0, 0), - rounds_until_unfrozen: 0, - bombs: 0, - snowballs: 0, - }); - worms.push(Worm { - id: 2, - health: 10, - position: Point2d::new(0, 0), - rounds_until_unfrozen: 0, - bombs: 0, - snowballs: 0, - }); - worms.push(Worm { - id: 3, - health: 2, - position: Point2d::new(0, 0), - rounds_until_unfrozen: 0, - bombs: 0, - snowballs: 0, - }); - let mut player = Player { - active_worm: 0, - moves_score: 0, - worms, - select_moves: 0, - }; - - player.clear_dead_worms(); - - assert_eq!(2, player.worms.len()); - assert_eq!(1, player.active_worm); - - assert_eq!(2, player.worms[0].id); - assert_eq!(3, player.worms[1].id); - } - - #[test] - fn clear_last_dead_worm() { - let mut worms = ArrayVec::new(); - worms.push(Worm { - id: 1, - health: -10, - position: Point2d::new(0, 0), - rounds_until_unfrozen: 0, - bombs: 0, - snowballs: 0, - }); - let mut player = Player { - active_worm: 0, - moves_score: 0, - worms, - select_moves: 0, - }; - - player.clear_dead_worms(); - - assert_eq!(0, player.worms.len()); - // active worm is undefined in this case, but clearing the worms must not panic. - } -} diff --git a/src/game/powerup.rs b/src/game/powerup.rs deleted file mode 100644 index 47e73a1..0000000 --- a/src/game/powerup.rs +++ /dev/null @@ -1,6 +0,0 @@ -use crate::geometry::*; - -#[derive(Debug, PartialEq, Eq, Clone, Copy)] -pub struct Powerup { - pub position: Point2d, -} diff --git a/src/geometry.rs b/src/geometry.rs deleted file mode 100644 index 1bcdace..0000000 --- a/src/geometry.rs +++ /dev/null @@ -1,6 +0,0 @@ -mod vec; -pub use self::vec::*; -mod point; -pub use self::point::*; -mod direction; -pub use self::direction::*; diff --git a/src/geometry/direction.rs b/src/geometry/direction.rs deleted file mode 100644 index e37f750..0000000 --- a/src/geometry/direction.rs +++ /dev/null @@ -1,67 +0,0 @@ -use crate::geometry::vec::Vec2d; -use std::fmt; - -#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub enum Direction { - North, - NorthEast, - East, - SouthEast, - South, - SouthWest, - West, - NorthWest, -} - -impl fmt::Display for Direction { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - use Direction::*; - let s = match self { - North => "N", - NorthEast => "NE", - East => "E", - SouthEast => "SE", - South => "S", - SouthWest => "SW", - West => "W", - NorthWest => "NW", - }; - f.write_str(s) - } -} - -impl Direction { - pub fn is_diagonal(&self) -> bool { - use Direction::*; - - match self { - NorthEast | SouthEast | SouthWest | NorthWest => true, - _ => false, - } - } - - pub fn as_vec(&self) -> Vec2d { - use Direction::*; - match self { - North => Vec2d::new(0, -1), - NorthEast => Vec2d::new(1, -1), - East => Vec2d::new(1, 0), - SouthEast => Vec2d::new(1, 1), - South => Vec2d::new(0, 1), - SouthWest => Vec2d::new(-1, 1), - West => Vec2d::new(-1, 0), - NorthWest => Vec2d::new(-1, -1), - } - } - - pub const ALL: [Direction; 8] = [ - Direction::North, - Direction::NorthEast, - Direction::East, - Direction::SouthEast, - Direction::South, - Direction::SouthWest, - Direction::West, - Direction::NorthWest, - ]; -} diff --git a/src/geometry/point.rs b/src/geometry/point.rs deleted file mode 100644 index 1ab9b36..0000000 --- a/src/geometry/point.rs +++ /dev/null @@ -1,37 +0,0 @@ -use crate::geometry::vec::*; - -use std::ops::*; - -#[derive(Debug, Default, Clone, Copy, Hash, PartialEq, Eq)] -pub struct Point2d { - pub x: i8, - pub y: i8, -} - -impl Point2d { - pub fn new(x: i8, y: i8) -> Point2d { - Point2d { x, y } - } -} - -impl Add for Point2d { - type Output = Self; - - fn add(self, other: Vec2d) -> Self { - Point2d { - x: self.x.saturating_add(other.x), - y: self.y.saturating_add(other.y), - } - } -} - -impl Sub for Point2d { - type Output = Vec2d; - - fn sub(self, other: Self) -> Vec2d { - Vec2d { - x: self.x.saturating_sub(other.x), - y: self.y.saturating_sub(other.y), - } - } -} diff --git a/src/geometry/vec.rs b/src/geometry/vec.rs deleted file mode 100644 index 375a0f9..0000000 --- a/src/geometry/vec.rs +++ /dev/null @@ -1,62 +0,0 @@ -use std::ops::*; - -#[derive(Debug, Default, Clone, Copy, Hash, PartialEq, Eq)] -pub struct Vec2d { - pub x: i8, - pub y: i8, -} - -impl Vec2d { - pub const fn new(x: i8, y: i8) -> Vec2d { - Vec2d { x, y } - } - pub fn magnitude_squared(&self) -> i8 { - self.x - .saturating_pow(2) - .saturating_add(self.y.saturating_pow(2)) - } -} - -impl Add for Vec2d { - type Output = Self; - - fn add(self, other: Self) -> Self { - Vec2d { - x: self.x.saturating_add(other.x), - y: self.y.saturating_add(other.y), - } - } -} - -impl Sub for Vec2d { - type Output = Self; - - fn sub(self, other: Self) -> Self { - Vec2d { - x: self.x.saturating_sub(other.x), - y: self.y.saturating_sub(other.y), - } - } -} - -impl Mul for Vec2d { - type Output = Self; - - fn mul(self, other: i8) -> Self { - Vec2d { - x: self.x.saturating_mul(other), - y: self.y.saturating_mul(other), - } - } -} - -impl Neg for Vec2d { - type Output = Self; - - fn neg(self) -> Self { - Vec2d { - x: -self.x, - y: -self.y, - } - } -} diff --git a/src/json.rs b/src/json.rs deleted file mode 100644 index a83f102..0000000 --- a/src/json.rs +++ /dev/null @@ -1,554 +0,0 @@ -use std::error::Error; -use std::fs::File; -use std::io::prelude::*; -use std::path::Path; - -use serde::{Deserialize, Serialize}; -use serde_json; - -pub fn read_state_from_json_file(filename: &Path) -> Result> { - let mut file = File::open(filename)?; - let mut content = String::new(); - file.read_to_string(&mut content)?; - let state: State = serde_json::from_str(content.as_ref())?; - - Ok(state) -} - -// TODO: Narrow numeric types -// TODO: comment out stuff I don't want / need - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct State { - pub current_round: u16, - pub max_rounds: u16, - pub pushback_damage: i32, - pub lava_damage: i32, - pub map_size: u8, - pub current_worm_id: i32, - pub consecutive_do_nothing_count: u32, - pub my_player: Player, - pub opponents: Vec, - pub map: Vec>, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct Player { - pub id: i32, - pub score: i32, - pub health: i32, - pub worms: Vec, - pub remaining_worm_selections: u8, -} - -impl Player { - pub fn health_score(&self) -> i32 { - self.health / 3 - } -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct PlayerWorm { - pub id: i32, - pub health: i32, - pub position: Position, - pub digging_range: u32, - pub movement_range: u32, - pub rounds_until_unfrozen: u8, - pub weapon: Weapon, - pub banana_bombs: Option, - pub snowballs: Option, - pub profession: WormType, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct Opponent { - pub id: i32, - pub score: i32, - pub current_worm_id: i32, - pub previous_command: String, - pub worms: Vec, - pub remaining_worm_selections: u8, -} - -impl Opponent { - pub fn health_score(&self) -> i32 { - self.worms.iter().map(|w| w.health).sum::() / 3 - } -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct OpponentWorm { - pub id: i32, - pub health: i32, - pub position: Position, - pub digging_range: u32, - pub movement_range: u32, - pub rounds_until_unfrozen: u8, - pub profession: WormType, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "PascalCase")] -pub enum WormType { - Commando, - Agent, - Technologist, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct Cell { - pub x: i8, - pub y: i8, - #[serde(rename = "type")] - pub cell_type: CellType, - pub occupier: Option, - pub powerup: Option, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "SCREAMING_SNAKE_CASE")] -pub enum CellType { - Air, - Dirt, - Lava, - DeepSpace, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(untagged)] -#[serde(rename_all = "camelCase")] -pub enum CellWorm { - #[serde(rename_all = "camelCase")] - PlayerWorm { - id: i32, - player_id: i32, - health: i32, - position: Position, - digging_range: u32, - movement_range: u32, - weapon: Weapon, - }, - #[serde(rename_all = "camelCase")] - OpponentWorm { - id: i32, - player_id: i32, - health: i32, - position: Position, - digging_range: u32, - movement_range: u32, - }, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct Powerup { - #[serde(rename = "type")] - pub powerup_type: PowerupType, - pub value: i32, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "SCREAMING_SNAKE_CASE")] -pub enum PowerupType { - HealthPack, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct Position { - pub x: i8, - pub y: i8, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct Weapon { - pub damage: i32, - pub range: u8, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct Bomb { - pub damage: i32, - pub range: u8, - pub count: u8, - pub damage_radius: u8, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct Snowball { - pub freeze_duration: u8, - pub range: u8, - pub count: u8, - pub freeze_radius: u8, -} - -impl State { - pub fn active_worm_index(&self) -> Option { - self.my_player - .worms - .iter() - .filter(|w| w.health > 0) - .position(|w| w.id == self.current_worm_id) - } - - pub fn opponent_active_worm_index(&self) -> Option { - self.opponents[0] - .worms - .iter() - .filter(|w| w.health > 0) - .position(|w| w.id == self.opponents[0].current_worm_id) - } -} - -#[cfg(test)] -mod test { - use super::*; - - #[test] - fn example_parses_correctly() { - let example = r#" -{ - "currentRound": 0, - "maxRounds": 200, - "pushbackDamage": 20, - "lavaDamage": 3, - "mapSize": 33, - "currentWormId": 1, - "consecutiveDoNothingCount": 0, - "myPlayer": { - "id": 1, - "score": 100, - "health": 300, - "currentWormId": 1, - "remainingWormSelections": 1, - "worms": [ - { - "id": 1, - "health": 100, - "position": { - "x": 24, - "y": 29 - }, - "weapon": { - "damage": 1, - "range": 3 - }, - "bananaBombs": { - "damage": 20, - "range": 5, - "count": 3, - "damageRadius": 2 - }, - "diggingRange": 1, - "movementRange": 1, - "roundsUntilUnfrozen": 0, - "profession": "Agent" - }, - { - "id": 2, - "health": 150, - "position": { - "x": 1, - "y": 16 - }, - "weapon": { - "damage": 1, - "range": 3 - }, - "diggingRange": 1, - "movementRange": 1, - "roundsUntilUnfrozen": 0, - "profession": "Commando" - }, - { - "id": 3, - "health": 100, - "position": { - "x": 24, - "y": 4 - }, - "weapon": { - "damage": 8, - "range": 4 - }, - "snowballs": { - "freezeDuration": 5, - "range": 5, - "count": 3, - "freezeRadius": 1 - }, - "diggingRange": 1, - "movementRange": 1, - "roundsUntilUnfrozen": 3, - "profession": "Technologist" - } - ] - }, - "opponents": [ - { - "id": 2, - "score": 100, - "currentWormId": 3, - "remainingWormSelections": 2, - "previousCommand": "nothing", - "worms": [ - { - "id": 1, - "health": 100, - "position": { - "x": 31, - "y": 16 - }, - "diggingRange": 1, - "movementRange": 1, - "roundsUntilUnfrozen": 0, - "profession": "Commando" - } - ] - } - ], - "map": [ - [ - { - "x": 0, - "y": 0, - "type": "DEEP_SPACE" - }, - { - "x": 1, - "y": 0, - "type": "AIR" - }, - { - "x": 2, - "y": 0, - "type": "DIRT" - } - ], - [ - { - "x": 0, - "y": 1, - "type": "AIR", - "powerup": { - "type": "HEALTH_PACK", - "value": 5 - } - }, - { - "x": 1, - "y": 1, - "type": "AIR", - "occupier": { - "id": 1, - "playerId": 2, - "health": 100, - "position": { - "x": 1, - "y": 1 - }, - "diggingRange": 1, - "movementRange": 1 - } - }, - { - "x": 2, - "y": 1, - "type": "AIR", - "occupier": { - "id": 1, - "playerId": 1, - "health": 100, - "position": { - "x": 2, - "y": 1 - }, - "weapon": { - "damage": 1, - "range": 3 - }, - "diggingRange": 1, - "movementRange": 1 - } - } - ] - ] -}"#; - - let expected = State { - current_round: 0, - max_rounds: 200, - pushback_damage: 20, - lava_damage: 3, - map_size: 33, - current_worm_id: 1, - consecutive_do_nothing_count: 0, - my_player: Player { - id: 1, - score: 100, - health: 300, - remaining_worm_selections: 1, - worms: vec![ - PlayerWorm { - id: 1, - health: 100, - position: Position { x: 24, y: 29 }, - weapon: Weapon { - damage: 1, - range: 3, - }, - digging_range: 1, - movement_range: 1, - banana_bombs: Some(Bomb { - damage: 20, - range: 5, - count: 3, - damage_radius: 2, - }), - snowballs: None, - rounds_until_unfrozen: 0, - profession: WormType::Agent, - }, - PlayerWorm { - id: 2, - health: 150, - position: Position { x: 1, y: 16 }, - weapon: Weapon { - damage: 1, - range: 3, - }, - digging_range: 1, - movement_range: 1, - banana_bombs: None, - snowballs: None, - rounds_until_unfrozen: 0, - profession: WormType::Commando, - }, - PlayerWorm { - id: 3, - health: 100, - position: Position { x: 24, y: 4 }, - weapon: Weapon { - damage: 8, - range: 4, - }, - digging_range: 1, - movement_range: 1, - banana_bombs: None, - snowballs: Some(Snowball { - freeze_duration: 5, - range: 5, - count: 3, - freeze_radius: 1, - }), - rounds_until_unfrozen: 3, - profession: WormType::Technologist, - }, - ], - }, - opponents: vec![Opponent { - id: 2, - score: 100, - remaining_worm_selections: 2, - current_worm_id: 3, - previous_command: "nothing".into(), - worms: vec![OpponentWorm { - id: 1, - health: 100, - position: Position { x: 31, y: 16 }, - digging_range: 1, - movement_range: 1, - rounds_until_unfrozen: 0, - profession: WormType::Commando, - }], - }], - map: vec![ - vec![ - Cell { - x: 0, - y: 0, - cell_type: CellType::DeepSpace, - occupier: None, - powerup: None, - }, - Cell { - x: 1, - y: 0, - cell_type: CellType::Air, - occupier: None, - powerup: None, - }, - Cell { - x: 2, - y: 0, - cell_type: CellType::Dirt, - occupier: None, - powerup: None, - }, - ], - vec![ - Cell { - x: 0, - y: 1, - cell_type: CellType::Air, - occupier: None, - powerup: Some(Powerup { - powerup_type: PowerupType::HealthPack, - value: 5, - }), - }, - Cell { - x: 1, - y: 1, - cell_type: CellType::Air, - occupier: Some(CellWorm::OpponentWorm { - id: 1, - player_id: 2, - health: 100, - position: Position { x: 1, y: 1 }, - digging_range: 1, - movement_range: 1, - }), - powerup: None, - }, - Cell { - x: 2, - y: 1, - cell_type: CellType::Air, - occupier: Some(CellWorm::PlayerWorm { - id: 1, - player_id: 1, - health: 100, - position: Position { x: 2, y: 1 }, - digging_range: 1, - movement_range: 1, - weapon: Weapon { - damage: 1, - range: 3, - }, - }), - powerup: None, - }, - ], - ], - }; - - let parsed: State = serde_json::from_str(example).unwrap(); - - assert_eq!( - parsed, expected, - "Parsed value did not match the expected value.\nParsed = {:#?}\nExpected = {:#?}", - parsed, expected - ); - } -} diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index 9922cce..0000000 --- a/src/lib.rs +++ /dev/null @@ -1,8 +0,0 @@ -#![warn(clippy::all)] - -pub mod command; -pub mod json; -pub mod geometry; -pub mod game; -pub mod strategy; -pub mod constants; diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index 4f98e75..0000000 --- a/src/main.rs +++ /dev/null @@ -1,46 +0,0 @@ -use std::io::prelude::*; -use std::io::stdin; -use std::path::Path; - -use time::{Duration, PreciseTime}; - -use steam_powered_wyrm::command::{Action, Command}; -use steam_powered_wyrm::game; -use steam_powered_wyrm::json; -use steam_powered_wyrm::strategy::{choose_move, ScoreConfig}; - -fn main() { - let max_time = Duration::milliseconds(900); - let config = ScoreConfig::default(); - - let mut game_board = None; - for line in stdin().lock().lines() { - let start_time = PreciseTime::now(); - - let round_number = line.expect("Failed to read line from stdin: {}"); - - let command = match json::read_state_from_json_file(&Path::new(&format!( - "./rounds/{}/state.json", - round_number - ))) { - Ok(json_state) => match &mut game_board { - None => { - let new_board = game::GameBoard::new(json_state); - let command = choose_move(&new_board, &config, start_time, max_time); - game_board = Some(new_board); - command - } - Some(game_board) => { - game_board.update(json_state); - choose_move(&game_board, &config, start_time, max_time) - } - }, - Err(e) => { - #[cfg(feature = "logging")] - eprintln!("WARN: State file could not be parsed: {}", e); - Command::new(Action::DoNothing) - } - }; - println!("C;{};{}", round_number, command); - } -} diff --git a/src/strategy.rs b/src/strategy.rs deleted file mode 100644 index fce842b..0000000 --- a/src/strategy.rs +++ /dev/null @@ -1,5 +0,0 @@ -//mod mcts; -//pub use mcts::{choose_move, Node}; - -mod minimax; -pub use minimax::{choose_move, choose_move_with_normalized_perf, Node, ScoreConfig}; diff --git a/src/strategy/minimax.rs b/src/strategy/minimax.rs deleted file mode 100644 index 656ee36..0000000 --- a/src/strategy/minimax.rs +++ /dev/null @@ -1,330 +0,0 @@ -use crate::command::{Action, Command}; -use crate::constants::*; -use crate::game::{GameBoard, SimulationOutcome}; - -use fnv::FnvHashMap; -use std::cmp; -use std::ops::*; -use time::{Duration, PreciseTime}; - -#[derive(Debug, Clone)] -pub struct ScoreConfig { - pub max_health_weight: f32, - pub total_health_weight: f32, - pub points_weight: f32, - pub victory_weight: f32, - pub snowball_weight: f32, - pub bomb_weight: f32, - pub explore_exploit_weight: f32, -} - -impl Default for ScoreConfig { - fn default() -> ScoreConfig { - ScoreConfig { - max_health_weight: 100., - total_health_weight: 10., - points_weight: 1., - victory_weight: 4500., - snowball_weight: 10., - bomb_weight: 10., - explore_exploit_weight: 100., - } - } -} - -pub fn choose_move( - state: &GameBoard, - config: &ScoreConfig, - start_time: PreciseTime, - max_time: Duration, -) -> Command { - let mut root_node = Node { - score_sum: ScoreSum::new(), - player_score_sums: [FnvHashMap::default(), FnvHashMap::default()], - unexplored: move_combos(state), - children: FnvHashMap::default(), - }; - - #[cfg(feature = "logging")] - { - let mut max_expand_time = Duration::milliseconds(0); - while start_time.to(PreciseTime::now()) < max_time { - let expand_start_time = PreciseTime::now(); - let _ = expand_tree(&mut root_node, state.clone(), config); - max_expand_time = max_expand_time.max(expand_start_time.to(PreciseTime::now())); - } - eprintln!( - "Max expand time: {:?} ns", - max_expand_time.num_nanoseconds() - ); - } - #[cfg(not(feature = "logging"))] - { - while start_time.to(PreciseTime::now()) < max_time { - let _ = expand_tree(&mut root_node, state.clone(), config); - } - } - - #[cfg(feature = "logging")] - { - eprintln!("Number of simulations: {}", root_node.score_sum.visit_count); - for (command, score_sum) in &root_node.player_score_sums[0] { - eprintln!( - "{} = {} ({} visits)", - command, - score_sum.avg().val, - score_sum.visit_count - ); - } - } - - best_player_move(&root_node, 0) -} - -pub fn choose_move_with_normalized_perf( - state: &GameBoard, - config: &ScoreConfig, - player_index: usize, - iterations: usize, -) -> Command { - let mut root_node = Node { - score_sum: ScoreSum::new(), - player_score_sums: [FnvHashMap::default(), FnvHashMap::default()], - unexplored: move_combos(state), - children: FnvHashMap::default(), - }; - - for _ in 0..iterations { - let _ = expand_tree(&mut root_node, state.clone(), config); - } - - #[cfg(feature = "logging")] - { - eprintln!("Number of simulations: {}", root_node.score_sum.visit_count); - for (command, score_sum) in &root_node.player_score_sums[player_index] { - eprintln!( - "{} = {} ({} visits)", - command, - score_sum.avg().val, - score_sum.visit_count - ); - } - } - - best_player_move(&root_node, player_index) -} - -pub struct Node { - score_sum: ScoreSum, - player_score_sums: [FnvHashMap; 2], - unexplored: Vec<[Command; 2]>, - children: FnvHashMap<[Command; 2], Node>, -} - -#[derive(Clone, Copy, Debug, PartialEq, PartialOrd)] -struct Score { - val: f32, -} - -impl AddAssign for Score { - fn add_assign(&mut self, other: Self) { - self.val = self.val + other.val; - } -} - -impl Div for Score { - type Output = Self; - fn div(self, other: u32) -> Self { - Score { - val: self.val / other as f32, - } - } -} - -impl Mul for Score { - type Output = Self; - fn mul(self, other: f32) -> Self { - Score { - val: self.val * other, - } - } -} - -impl cmp::Eq for Score {} -impl cmp::Ord for Score { - fn cmp(&self, other: &Score) -> cmp::Ordering { - self.val - .partial_cmp(&other.val) - .unwrap_or(cmp::Ordering::Equal) - } -} - -struct ScoreSum { - sum: Score, - visit_count: u32, -} - -impl ScoreSum { - fn new() -> ScoreSum { - ScoreSum { - sum: Score { val: 0. }, - visit_count: 0, - } - } - fn with_initial(score: Score) -> ScoreSum { - ScoreSum { - sum: score, - visit_count: 1, - } - } - fn avg(&self) -> Score { - self.sum / self.visit_count - } -} - -impl AddAssign for ScoreSum { - fn add_assign(&mut self, other: Score) { - self.sum += other; - self.visit_count = self.visit_count.saturating_add(1); - } -} - -fn expand_tree(node: &mut Node, mut state: GameBoard, config: &ScoreConfig) -> Score { - if state.outcome != SimulationOutcome::Continue { - score(&state, config) - } else if let Some(commands) = node.unexplored.pop() { - state.simulate(commands); - let score = score(&state, config); - let unexplored = if state.outcome == SimulationOutcome::Continue { - move_combos(&state) - } else { - Vec::new() - }; - - let new_node = Node { - score_sum: ScoreSum::with_initial(score), - player_score_sums: [FnvHashMap::default(), FnvHashMap::default()], - unexplored, - children: FnvHashMap::default(), - }; - node.children.insert(commands, new_node); - update(node, commands, score); - - score - } else { - let commands = choose_existing(node, config); - state.simulate(commands); - let score = expand_tree( - node.children - .get_mut(&commands) - .expect("The existing node hasn't been tried yet"), - state, - config, - ); - update(node, commands, score); - score - } -} - -fn move_combos(state: &GameBoard) -> Vec<[Command; 2]> { - let player_moves = state.pruned_valid_moves(0); - let opponent_moves = state.pruned_valid_moves(1); - debug_assert!(!player_moves.is_empty(), "No player moves"); - debug_assert!(!opponent_moves.is_empty(), "No opponent moves"); - - let mut result = Vec::with_capacity(player_moves.len() * opponent_moves.len()); - for p in &player_moves { - for o in &opponent_moves { - result.push([*p, *o]); - } - } - - result -} - -fn best_player_move(node: &Node, player_index: usize) -> Command { - let multiplier = if player_index == 0 { 1. } else { -1. }; - node.player_score_sums[player_index] - .iter() - .max_by_key(|(_command, score_sum)| score_sum.avg() * multiplier) - .map(|(command, _score_sum)| *command) - .unwrap_or_else(|| Command::new(Action::DoNothing)) -} - -fn score(state: &GameBoard, config: &ScoreConfig) -> Score { - let max_health = - (state.players[0].max_worm_health() - state.players[1].max_worm_health()) as f32; - let total_health = (state.players[0].health() - state.players[1].health()) as f32; - let points = (state.players[0].score() - state.players[1].score()) as f32; - let victory = match state.outcome { - SimulationOutcome::PlayerWon(0) => 1., - SimulationOutcome::PlayerWon(1) => -1., - _ => 0., - }; - - let time_to_end = MAX_ROUNDS as f32 - state.round as f32 + 1.; - - let snowballs = state.players[0].snowballs() as f32 - state.players[1].snowballs() as f32; - let bombs = state.players[0].bombs() as f32 - state.players[1].bombs() as f32; - - Score { - val: max_health * config.max_health_weight - + total_health * config.total_health_weight - + points * config.points_weight - + victory * config.victory_weight - + snowballs * config.snowball_weight / time_to_end - + bombs * config.bomb_weight / time_to_end, - } -} - -fn choose_existing(node: &Node, config: &ScoreConfig) -> [Command; 2] { - [ - choose_one_existing(node, 0, config), - choose_one_existing(node, 1, config), - ] -} - -fn choose_one_existing(node: &Node, player_index: usize, config: &ScoreConfig) -> Command { - let ln_n = (node.score_sum.visit_count as f32).ln(); - let multiplier = if player_index == 0 { 1. } else { -1. }; - let mut command_confidences = - node.player_score_sums[player_index] - .iter() - .map(|(command, score_sum)| { - ( - command, - (score_sum.avg() * multiplier).val - + config.explore_exploit_weight - * (ln_n / score_sum.visit_count as f32).sqrt(), - ) - }); - - command_confidences - .next() - .map(|first| { - command_confidences - .fold( - first, - |(acc_command, acc_confidence), (next_command, next_confidence)| { - if acc_confidence > next_confidence { - (acc_command, acc_confidence) - } else { - (next_command, next_confidence) - } - }, - ) - .0 - .clone() - }) - .unwrap_or_else(|| Command::new(Action::DoNothing)) -} - -fn update(node: &mut Node, commands: [Command; 2], score: Score) { - *node.player_score_sums[0] - .entry(commands[0]) - .or_insert_with(ScoreSum::new) += score; - *node.player_score_sums[1] - .entry(commands[1]) - .or_insert_with(ScoreSum::new) += score; - node.score_sum += score; -} diff --git a/tests/example-state.json b/tests/example-state.json deleted file mode 100644 index d7a8fa3..0000000 --- a/tests/example-state.json +++ /dev/null @@ -1 +0,0 @@ -{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":1,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":2,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"AIR"},{"x":13,"y":0,"type":"AIR"},{"x":14,"y":0,"type":"AIR"},{"x":15,"y":0,"type":"DIRT"},{"x":16,"y":0,"type":"DIRT"},{"x":17,"y":0,"type":"DIRT"},{"x":18,"y":0,"type":"AIR"},{"x":19,"y":0,"type":"AIR"},{"x":20,"y":0,"type":"AIR"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"DIRT"},{"x":10,"y":1,"type":"DIRT"},{"x":11,"y":1,"type":"DIRT"},{"x":12,"y":1,"type":"AIR"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"DIRT"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"DIRT"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"DIRT"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"AIR"},{"x":21,"y":1,"type":"DIRT"},{"x":22,"y":1,"type":"DIRT"},{"x":23,"y":1,"type":"DIRT"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"AIR"},{"x":12,"y":2,"type":"AIR"},{"x":13,"y":2,"type":"AIR"},{"x":14,"y":2,"type":"AIR"},{"x":15,"y":2,"type":"DIRT"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"DIRT"},{"x":18,"y":2,"type":"AIR"},{"x":19,"y":2,"type":"AIR"},{"x":20,"y":2,"type":"AIR"},{"x":21,"y":2,"type":"AIR"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"AIR"},{"x":12,"y":3,"type":"AIR"},{"x":13,"y":3,"type":"AIR"},{"x":14,"y":3,"type":"AIR"},{"x":15,"y":3,"type":"DIRT"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"DIRT"},{"x":18,"y":3,"type":"AIR"},{"x":19,"y":3,"type":"AIR"},{"x":20,"y":3,"type":"AIR"},{"x":21,"y":3,"type":"AIR"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"AIR"},{"x":5,"y":4,"type":"AIR"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"AIR"},{"x":12,"y":4,"type":"AIR"},{"x":13,"y":4,"type":"DIRT"},{"x":14,"y":4,"type":"DIRT"},{"x":15,"y":4,"type":"DIRT"},{"x":16,"y":4,"type":"AIR"},{"x":17,"y":4,"type":"DIRT"},{"x":18,"y":4,"type":"DIRT"},{"x":19,"y":4,"type":"DIRT"},{"x":20,"y":4,"type":"AIR"},{"x":21,"y":4,"type":"AIR"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"AIR"},{"x":28,"y":4,"type":"AIR"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"AIR"},{"x":5,"y":5,"type":"AIR"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"AIR"},{"x":13,"y":5,"type":"AIR"},{"x":14,"y":5,"type":"AIR"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"AIR"},{"x":19,"y":5,"type":"AIR"},{"x":20,"y":5,"type":"AIR"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"AIR"},{"x":28,"y":5,"type":"AIR"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"AIR"},{"x":4,"y":6,"type":"AIR"},{"x":5,"y":6,"type":"AIR"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"DIRT"},{"x":12,"y":6,"type":"AIR"},{"x":13,"y":6,"type":"AIR"},{"x":14,"y":6,"type":"AIR"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"AIR"},{"x":19,"y":6,"type":"AIR"},{"x":20,"y":6,"type":"AIR"},{"x":21,"y":6,"type":"DIRT"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"AIR"},{"x":28,"y":6,"type":"AIR"},{"x":29,"y":6,"type":"AIR"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"AIR"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"AIR"},{"x":5,"y":7,"type":"AIR"},{"x":6,"y":7,"type":"AIR"},{"x":7,"y":7,"type":"AIR"},{"x":8,"y":7,"type":"AIR"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"AIR"},{"x":12,"y":7,"type":"DIRT"},{"x":13,"y":7,"type":"DIRT"},{"x":14,"y":7,"type":"AIR"},{"x":15,"y":7,"type":"AIR"},{"x":16,"y":7,"type":"DIRT"},{"x":17,"y":7,"type":"AIR"},{"x":18,"y":7,"type":"AIR"},{"x":19,"y":7,"type":"DIRT"},{"x":20,"y":7,"type":"DIRT"},{"x":21,"y":7,"type":"AIR"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"AIR"},{"x":25,"y":7,"type":"AIR"},{"x":26,"y":7,"type":"AIR"},{"x":27,"y":7,"type":"AIR"},{"x":28,"y":7,"type":"AIR"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"AIR"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"DIRT"},{"x":2,"y":8,"type":"DIRT"},{"x":3,"y":8,"type":"AIR"},{"x":4,"y":8,"type":"AIR"},{"x":5,"y":8,"type":"AIR"},{"x":6,"y":8,"type":"AIR"},{"x":7,"y":8,"type":"DIRT"},{"x":8,"y":8,"type":"DIRT"},{"x":9,"y":8,"type":"AIR"},{"x":10,"y":8,"type":"AIR"},{"x":11,"y":8,"type":"AIR"},{"x":12,"y":8,"type":"DIRT"},{"x":13,"y":8,"type":"DIRT"},{"x":14,"y":8,"type":"DIRT"},{"x":15,"y":8,"type":"AIR"},{"x":16,"y":8,"type":"DIRT"},{"x":17,"y":8,"type":"AIR"},{"x":18,"y":8,"type":"DIRT"},{"x":19,"y":8,"type":"DIRT"},{"x":20,"y":8,"type":"DIRT"},{"x":21,"y":8,"type":"AIR"},{"x":22,"y":8,"type":"AIR"},{"x":23,"y":8,"type":"AIR"},{"x":24,"y":8,"type":"DIRT"},{"x":25,"y":8,"type":"DIRT"},{"x":26,"y":8,"type":"AIR"},{"x":27,"y":8,"type":"AIR"},{"x":28,"y":8,"type":"AIR"},{"x":29,"y":8,"type":"AIR"},{"x":30,"y":8,"type":"DIRT"},{"x":31,"y":8,"type":"DIRT"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"DIRT"},{"x":2,"y":9,"type":"DIRT"},{"x":3,"y":9,"type":"AIR"},{"x":4,"y":9,"type":"AIR"},{"x":5,"y":9,"type":"AIR"},{"x":6,"y":9,"type":"DIRT"},{"x":7,"y":9,"type":"AIR"},{"x":8,"y":9,"type":"DIRT"},{"x":9,"y":9,"type":"DIRT"},{"x":10,"y":9,"type":"AIR"},{"x":11,"y":9,"type":"DIRT"},{"x":12,"y":9,"type":"DIRT"},{"x":13,"y":9,"type":"DIRT"},{"x":14,"y":9,"type":"DIRT"},{"x":15,"y":9,"type":"AIR"},{"x":16,"y":9,"type":"DIRT"},{"x":17,"y":9,"type":"AIR"},{"x":18,"y":9,"type":"DIRT"},{"x":19,"y":9,"type":"DIRT"},{"x":20,"y":9,"type":"DIRT"},{"x":21,"y":9,"type":"DIRT"},{"x":22,"y":9,"type":"AIR"},{"x":23,"y":9,"type":"DIRT"},{"x":24,"y":9,"type":"DIRT"},{"x":25,"y":9,"type":"AIR"},{"x":26,"y":9,"type":"DIRT"},{"x":27,"y":9,"type":"AIR"},{"x":28,"y":9,"type":"AIR"},{"x":29,"y":9,"type":"AIR"},{"x":30,"y":9,"type":"DIRT"},{"x":31,"y":9,"type":"DIRT"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"AIR"},{"x":2,"y":10,"type":"AIR"},{"x":3,"y":10,"type":"DIRT"},{"x":4,"y":10,"type":"DIRT"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"DIRT"},{"x":7,"y":10,"type":"AIR"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"DIRT"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"DIRT"},{"x":12,"y":10,"type":"DIRT"},{"x":13,"y":10,"type":"DIRT"},{"x":14,"y":10,"type":"DIRT"},{"x":15,"y":10,"type":"DIRT"},{"x":16,"y":10,"type":"DIRT"},{"x":17,"y":10,"type":"DIRT"},{"x":18,"y":10,"type":"DIRT"},{"x":19,"y":10,"type":"DIRT"},{"x":20,"y":10,"type":"DIRT"},{"x":21,"y":10,"type":"DIRT"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"DIRT"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"AIR"},{"x":26,"y":10,"type":"DIRT"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"DIRT"},{"x":29,"y":10,"type":"DIRT"},{"x":30,"y":10,"type":"AIR"},{"x":31,"y":10,"type":"AIR"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"AIR"},{"x":1,"y":11,"type":"AIR"},{"x":2,"y":11,"type":"DIRT"},{"x":3,"y":11,"type":"DIRT"},{"x":4,"y":11,"type":"DIRT"},{"x":5,"y":11,"type":"AIR"},{"x":6,"y":11,"type":"DIRT"},{"x":7,"y":11,"type":"AIR"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"AIR"},{"x":10,"y":11,"type":"DIRT"},{"x":11,"y":11,"type":"DIRT"},{"x":12,"y":11,"type":"DIRT"},{"x":13,"y":11,"type":"DIRT"},{"x":14,"y":11,"type":"AIR"},{"x":15,"y":11,"type":"AIR"},{"x":16,"y":11,"type":"AIR"},{"x":17,"y":11,"type":"AIR"},{"x":18,"y":11,"type":"AIR"},{"x":19,"y":11,"type":"DIRT"},{"x":20,"y":11,"type":"DIRT"},{"x":21,"y":11,"type":"DIRT"},{"x":22,"y":11,"type":"DIRT"},{"x":23,"y":11,"type":"AIR"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"AIR"},{"x":26,"y":11,"type":"DIRT"},{"x":27,"y":11,"type":"AIR"},{"x":28,"y":11,"type":"DIRT"},{"x":29,"y":11,"type":"DIRT"},{"x":30,"y":11,"type":"DIRT"},{"x":31,"y":11,"type":"AIR"},{"x":32,"y":11,"type":"AIR"}],[{"x":0,"y":12,"type":"AIR"},{"x":1,"y":12,"type":"AIR"},{"x":2,"y":12,"type":"DIRT"},{"x":3,"y":12,"type":"AIR"},{"x":4,"y":12,"type":"AIR"},{"x":5,"y":12,"type":"DIRT"},{"x":6,"y":12,"type":"DIRT"},{"x":7,"y":12,"type":"AIR"},{"x":8,"y":12,"type":"AIR"},{"x":9,"y":12,"type":"AIR"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"DIRT"},{"x":12,"y":12,"type":"DIRT"},{"x":13,"y":12,"type":"AIR"},{"x":14,"y":12,"type":"AIR"},{"x":15,"y":12,"type":"DIRT"},{"x":16,"y":12,"type":"DIRT"},{"x":17,"y":12,"type":"DIRT"},{"x":18,"y":12,"type":"AIR"},{"x":19,"y":12,"type":"AIR"},{"x":20,"y":12,"type":"DIRT"},{"x":21,"y":12,"type":"DIRT"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"AIR"},{"x":24,"y":12,"type":"AIR"},{"x":25,"y":12,"type":"AIR"},{"x":26,"y":12,"type":"DIRT"},{"x":27,"y":12,"type":"DIRT"},{"x":28,"y":12,"type":"AIR"},{"x":29,"y":12,"type":"AIR"},{"x":30,"y":12,"type":"DIRT"},{"x":31,"y":12,"type":"AIR"},{"x":32,"y":12,"type":"AIR"}],[{"x":0,"y":13,"type":"AIR"},{"x":1,"y":13,"type":"AIR"},{"x":2,"y":13,"type":"DIRT"},{"x":3,"y":13,"type":"DIRT"},{"x":4,"y":13,"type":"AIR"},{"x":5,"y":13,"type":"DIRT"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"AIR"},{"x":8,"y":13,"type":"DIRT"},{"x":9,"y":13,"type":"DIRT"},{"x":10,"y":13,"type":"DIRT"},{"x":11,"y":13,"type":"DIRT"},{"x":12,"y":13,"type":"AIR"},{"x":13,"y":13,"type":"AIR"},{"x":14,"y":13,"type":"DIRT"},{"x":15,"y":13,"type":"DIRT"},{"x":16,"y":13,"type":"DIRT"},{"x":17,"y":13,"type":"DIRT"},{"x":18,"y":13,"type":"DIRT"},{"x":19,"y":13,"type":"AIR"},{"x":20,"y":13,"type":"AIR"},{"x":21,"y":13,"type":"DIRT"},{"x":22,"y":13,"type":"DIRT"},{"x":23,"y":13,"type":"DIRT"},{"x":24,"y":13,"type":"DIRT"},{"x":25,"y":13,"type":"AIR"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"DIRT"},{"x":28,"y":13,"type":"AIR"},{"x":29,"y":13,"type":"DIRT"},{"x":30,"y":13,"type":"DIRT"},{"x":31,"y":13,"type":"AIR"},{"x":32,"y":13,"type":"AIR"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"AIR"},{"x":5,"y":14,"type":"AIR"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"AIR"},{"x":8,"y":14,"type":"AIR"},{"x":9,"y":14,"type":"AIR"},{"x":10,"y":14,"type":"AIR"},{"x":11,"y":14,"type":"DIRT"},{"x":12,"y":14,"type":"AIR"},{"x":13,"y":14,"type":"AIR"},{"x":14,"y":14,"type":"DIRT"},{"x":15,"y":14,"type":"DIRT"},{"x":16,"y":14,"type":"AIR"},{"x":17,"y":14,"type":"DIRT"},{"x":18,"y":14,"type":"DIRT"},{"x":19,"y":14,"type":"AIR"},{"x":20,"y":14,"type":"AIR"},{"x":21,"y":14,"type":"DIRT"},{"x":22,"y":14,"type":"AIR"},{"x":23,"y":14,"type":"AIR"},{"x":24,"y":14,"type":"AIR"},{"x":25,"y":14,"type":"AIR"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"AIR"},{"x":28,"y":14,"type":"AIR"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"AIR"},{"x":5,"y":15,"type":"DIRT"},{"x":6,"y":15,"type":"DIRT"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"AIR"},{"x":9,"y":15,"type":"AIR"},{"x":10,"y":15,"type":"AIR"},{"x":11,"y":15,"type":"AIR"},{"x":12,"y":15,"type":"AIR"},{"x":13,"y":15,"type":"AIR"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"AIR"},{"x":16,"y":15,"type":"AIR"},{"x":17,"y":15,"type":"AIR"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"AIR"},{"x":20,"y":15,"type":"AIR"},{"x":21,"y":15,"type":"AIR"},{"x":22,"y":15,"type":"AIR"},{"x":23,"y":15,"type":"AIR"},{"x":24,"y":15,"type":"AIR"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"DIRT"},{"x":27,"y":15,"type":"DIRT"},{"x":28,"y":15,"type":"AIR"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"AIR"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"DIRT"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"DIRT"},{"x":10,"y":16,"type":"AIR"},{"x":11,"y":16,"type":"AIR"},{"x":12,"y":16,"type":"AIR"},{"x":13,"y":16,"type":"AIR"},{"x":14,"y":16,"type":"AIR"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"AIR"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"AIR"},{"x":19,"y":16,"type":"AIR"},{"x":20,"y":16,"type":"AIR"},{"x":21,"y":16,"type":"AIR"},{"x":22,"y":16,"type":"AIR"},{"x":23,"y":16,"type":"DIRT"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"DIRT"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"AIR"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"AIR"},{"x":5,"y":17,"type":"AIR"},{"x":6,"y":17,"type":"AIR"},{"x":7,"y":17,"type":"AIR"},{"x":8,"y":17,"type":"DIRT"},{"x":9,"y":17,"type":"DIRT"},{"x":10,"y":17,"type":"DIRT"},{"x":11,"y":17,"type":"AIR"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"DIRT"},{"x":14,"y":17,"type":"DIRT"},{"x":15,"y":17,"type":"DIRT"},{"x":16,"y":17,"type":"AIR"},{"x":17,"y":17,"type":"DIRT"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"DIRT"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"AIR"},{"x":22,"y":17,"type":"DIRT"},{"x":23,"y":17,"type":"DIRT"},{"x":24,"y":17,"type":"DIRT"},{"x":25,"y":17,"type":"AIR"},{"x":26,"y":17,"type":"AIR"},{"x":27,"y":17,"type":"AIR"},{"x":28,"y":17,"type":"AIR"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"AIR"},{"x":5,"y":18,"type":"AIR"},{"x":6,"y":18,"type":"AIR"},{"x":7,"y":18,"type":"AIR"},{"x":8,"y":18,"type":"DIRT"},{"x":9,"y":18,"type":"DIRT"},{"x":10,"y":18,"type":"DIRT"},{"x":11,"y":18,"type":"AIR"},{"x":12,"y":18,"type":"AIR"},{"x":13,"y":18,"type":"AIR"},{"x":14,"y":18,"type":"DIRT"},{"x":15,"y":18,"type":"AIR"},{"x":16,"y":18,"type":"AIR"},{"x":17,"y":18,"type":"AIR"},{"x":18,"y":18,"type":"DIRT"},{"x":19,"y":18,"type":"AIR"},{"x":20,"y":18,"type":"AIR"},{"x":21,"y":18,"type":"AIR"},{"x":22,"y":18,"type":"DIRT"},{"x":23,"y":18,"type":"DIRT"},{"x":24,"y":18,"type":"DIRT"},{"x":25,"y":18,"type":"AIR"},{"x":26,"y":18,"type":"AIR"},{"x":27,"y":18,"type":"AIR"},{"x":28,"y":18,"type":"AIR"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"DIRT"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"AIR"},{"x":3,"y":19,"type":"AIR"},{"x":4,"y":19,"type":"AIR"},{"x":5,"y":19,"type":"AIR"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"AIR"},{"x":8,"y":19,"type":"AIR"},{"x":9,"y":19,"type":"DIRT"},{"x":10,"y":19,"type":"DIRT"},{"x":11,"y":19,"type":"DIRT"},{"x":12,"y":19,"type":"AIR"},{"x":13,"y":19,"type":"AIR"},{"x":14,"y":19,"type":"DIRT"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"DIRT"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"DIRT"},{"x":19,"y":19,"type":"AIR"},{"x":20,"y":19,"type":"AIR"},{"x":21,"y":19,"type":"DIRT"},{"x":22,"y":19,"type":"DIRT"},{"x":23,"y":19,"type":"DIRT"},{"x":24,"y":19,"type":"AIR"},{"x":25,"y":19,"type":"AIR"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"AIR"},{"x":28,"y":19,"type":"AIR"},{"x":29,"y":19,"type":"AIR"},{"x":30,"y":19,"type":"AIR"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"DIRT"}],[{"x":0,"y":20,"type":"DIRT"},{"x":1,"y":20,"type":"DIRT"},{"x":2,"y":20,"type":"DIRT"},{"x":3,"y":20,"type":"AIR"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"AIR"},{"x":6,"y":20,"type":"AIR"},{"x":7,"y":20,"type":"AIR"},{"x":8,"y":20,"type":"AIR"},{"x":9,"y":20,"type":"DIRT"},{"x":10,"y":20,"type":"DIRT"},{"x":11,"y":20,"type":"DIRT"},{"x":12,"y":20,"type":"AIR"},{"x":13,"y":20,"type":"DIRT"},{"x":14,"y":20,"type":"DIRT"},{"x":15,"y":20,"type":"DIRT"},{"x":16,"y":20,"type":"DIRT"},{"x":17,"y":20,"type":"DIRT"},{"x":18,"y":20,"type":"DIRT"},{"x":19,"y":20,"type":"DIRT"},{"x":20,"y":20,"type":"AIR"},{"x":21,"y":20,"type":"DIRT"},{"x":22,"y":20,"type":"DIRT"},{"x":23,"y":20,"type":"DIRT"},{"x":24,"y":20,"type":"AIR"},{"x":25,"y":20,"type":"AIR"},{"x":26,"y":20,"type":"AIR"},{"x":27,"y":20,"type":"AIR"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"AIR"},{"x":30,"y":20,"type":"DIRT"},{"x":31,"y":20,"type":"DIRT"},{"x":32,"y":20,"type":"DIRT"}],[{"x":0,"y":21,"type":"DIRT"},{"x":1,"y":21,"type":"DIRT"},{"x":2,"y":21,"type":"DIRT"},{"x":3,"y":21,"type":"AIR"},{"x":4,"y":21,"type":"AIR"},{"x":5,"y":21,"type":"DIRT"},{"x":6,"y":21,"type":"DIRT"},{"x":7,"y":21,"type":"DIRT"},{"x":8,"y":21,"type":"AIR"},{"x":9,"y":21,"type":"AIR"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"DIRT"},{"x":12,"y":21,"type":"DIRT"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"DIRT"},{"x":15,"y":21,"type":"DIRT"},{"x":16,"y":21,"type":"AIR"},{"x":17,"y":21,"type":"DIRT"},{"x":18,"y":21,"type":"DIRT"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"DIRT"},{"x":21,"y":21,"type":"DIRT"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"AIR"},{"x":24,"y":21,"type":"AIR"},{"x":25,"y":21,"type":"DIRT"},{"x":26,"y":21,"type":"DIRT"},{"x":27,"y":21,"type":"DIRT"},{"x":28,"y":21,"type":"AIR"},{"x":29,"y":21,"type":"AIR"},{"x":30,"y":21,"type":"DIRT"},{"x":31,"y":21,"type":"DIRT"},{"x":32,"y":21,"type":"DIRT"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"DIRT"},{"x":2,"y":22,"type":"DIRT"},{"x":3,"y":22,"type":"AIR"},{"x":4,"y":22,"type":"DIRT"},{"x":5,"y":22,"type":"AIR"},{"x":6,"y":22,"type":"DIRT"},{"x":7,"y":22,"type":"DIRT"},{"x":8,"y":22,"type":"AIR"},{"x":9,"y":22,"type":"AIR"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"DIRT"},{"x":13,"y":22,"type":"AIR"},{"x":14,"y":22,"type":"AIR"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"AIR"},{"x":19,"y":22,"type":"AIR"},{"x":20,"y":22,"type":"DIRT"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"AIR"},{"x":24,"y":22,"type":"AIR"},{"x":25,"y":22,"type":"DIRT"},{"x":26,"y":22,"type":"DIRT"},{"x":27,"y":22,"type":"AIR"},{"x":28,"y":22,"type":"DIRT"},{"x":29,"y":22,"type":"AIR"},{"x":30,"y":22,"type":"DIRT"},{"x":31,"y":22,"type":"DIRT"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"AIR"},{"x":2,"y":23,"type":"AIR"},{"x":3,"y":23,"type":"AIR"},{"x":4,"y":23,"type":"DIRT"},{"x":5,"y":23,"type":"AIR"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"DIRT"},{"x":8,"y":23,"type":"AIR"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"DIRT"},{"x":13,"y":23,"type":"AIR"},{"x":14,"y":23,"type":"AIR"},{"x":15,"y":23,"type":"AIR"},{"x":16,"y":23,"type":"AIR"},{"x":17,"y":23,"type":"AIR"},{"x":18,"y":23,"type":"AIR"},{"x":19,"y":23,"type":"AIR"},{"x":20,"y":23,"type":"DIRT"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"AIR"},{"x":25,"y":23,"type":"DIRT"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"AIR"},{"x":28,"y":23,"type":"DIRT"},{"x":29,"y":23,"type":"AIR"},{"x":30,"y":23,"type":"AIR"},{"x":31,"y":23,"type":"AIR"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"AIR"},{"x":2,"y":24,"type":"AIR"},{"x":3,"y":24,"type":"AIR"},{"x":4,"y":24,"type":"DIRT"},{"x":5,"y":24,"type":"AIR"},{"x":6,"y":24,"type":"AIR"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"AIR"},{"x":9,"y":24,"type":"DIRT"},{"x":10,"y":24,"type":"DIRT"},{"x":11,"y":24,"type":"AIR"},{"x":12,"y":24,"type":"DIRT"},{"x":13,"y":24,"type":"DIRT"},{"x":14,"y":24,"type":"DIRT"},{"x":15,"y":24,"type":"AIR"},{"x":16,"y":24,"type":"AIR"},{"x":17,"y":24,"type":"AIR"},{"x":18,"y":24,"type":"DIRT"},{"x":19,"y":24,"type":"DIRT"},{"x":20,"y":24,"type":"DIRT"},{"x":21,"y":24,"type":"AIR"},{"x":22,"y":24,"type":"DIRT"},{"x":23,"y":24,"type":"DIRT"},{"x":24,"y":24,"type":"AIR"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"AIR"},{"x":27,"y":24,"type":"AIR"},{"x":28,"y":24,"type":"DIRT"},{"x":29,"y":24,"type":"AIR"},{"x":30,"y":24,"type":"AIR"},{"x":31,"y":24,"type":"AIR"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"AIR"},{"x":3,"y":25,"type":"AIR"},{"x":4,"y":25,"type":"AIR"},{"x":5,"y":25,"type":"AIR"},{"x":6,"y":25,"type":"AIR"},{"x":7,"y":25,"type":"AIR"},{"x":8,"y":25,"type":"DIRT"},{"x":9,"y":25,"type":"DIRT"},{"x":10,"y":25,"type":"AIR"},{"x":11,"y":25,"type":"AIR"},{"x":12,"y":25,"type":"AIR"},{"x":13,"y":25,"type":"AIR"},{"x":14,"y":25,"type":"AIR"},{"x":15,"y":25,"type":"AIR"},{"x":16,"y":25,"type":"AIR"},{"x":17,"y":25,"type":"AIR"},{"x":18,"y":25,"type":"AIR"},{"x":19,"y":25,"type":"AIR"},{"x":20,"y":25,"type":"AIR"},{"x":21,"y":25,"type":"AIR"},{"x":22,"y":25,"type":"AIR"},{"x":23,"y":25,"type":"DIRT"},{"x":24,"y":25,"type":"DIRT"},{"x":25,"y":25,"type":"AIR"},{"x":26,"y":25,"type":"AIR"},{"x":27,"y":25,"type":"AIR"},{"x":28,"y":25,"type":"AIR"},{"x":29,"y":25,"type":"AIR"},{"x":30,"y":25,"type":"AIR"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"AIR"},{"x":5,"y":26,"type":"DIRT"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"DIRT"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"AIR"},{"x":14,"y":26,"type":"AIR"},{"x":15,"y":26,"type":"AIR"},{"x":16,"y":26,"type":"AIR"},{"x":17,"y":26,"type":"AIR"},{"x":18,"y":26,"type":"AIR"},{"x":19,"y":26,"type":"AIR"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"DIRT"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"DIRT"},{"x":28,"y":26,"type":"AIR"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"AIR"},{"x":5,"y":27,"type":"AIR"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"AIR"},{"x":14,"y":27,"type":"AIR"},{"x":15,"y":27,"type":"AIR"},{"x":16,"y":27,"type":"AIR"},{"x":17,"y":27,"type":"AIR"},{"x":18,"y":27,"type":"AIR"},{"x":19,"y":27,"type":"AIR"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"AIR"},{"x":28,"y":27,"type":"AIR"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"AIR"},{"x":5,"y":28,"type":"AIR"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"DIRT"},{"x":12,"y":28,"type":"DIRT"},{"x":13,"y":28,"type":"DIRT"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"AIR"},{"x":16,"y":28,"type":"AIR"},{"x":17,"y":28,"type":"AIR"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"DIRT"},{"x":20,"y":28,"type":"DIRT"},{"x":21,"y":28,"type":"DIRT"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"AIR"},{"x":28,"y":28,"type":"AIR"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"AIR"},{"x":12,"y":29,"type":"AIR"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"DIRT"},{"x":15,"y":29,"type":"AIR"},{"x":16,"y":29,"type":"AIR"},{"x":17,"y":29,"type":"AIR"},{"x":18,"y":29,"type":"DIRT"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"AIR"},{"x":21,"y":29,"type":"AIR"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"AIR"},{"x":12,"y":30,"type":"AIR"},{"x":13,"y":30,"type":"AIR"},{"x":14,"y":30,"type":"DIRT"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"DIRT"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"DIRT"},{"x":19,"y":30,"type":"AIR"},{"x":20,"y":30,"type":"AIR"},{"x":21,"y":30,"type":"AIR"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"AIR"},{"x":9,"y":31,"type":"AIR"},{"x":10,"y":31,"type":"AIR"},{"x":11,"y":31,"type":"DIRT"},{"x":12,"y":31,"type":"DIRT"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"AIR"},{"x":16,"y":31,"type":"DIRT"},{"x":17,"y":31,"type":"AIR"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"DIRT"},{"x":21,"y":31,"type":"DIRT"},{"x":22,"y":31,"type":"AIR"},{"x":23,"y":31,"type":"AIR"},{"x":24,"y":31,"type":"AIR"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"DIRT"},{"x":12,"y":32,"type":"DIRT"},{"x":13,"y":32,"type":"DIRT"},{"x":14,"y":32,"type":"AIR"},{"x":15,"y":32,"type":"AIR"},{"x":16,"y":32,"type":"AIR"},{"x":17,"y":32,"type":"AIR"},{"x":18,"y":32,"type":"AIR"},{"x":19,"y":32,"type":"DIRT"},{"x":20,"y":32,"type":"DIRT"},{"x":21,"y":32,"type":"DIRT"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/tests/import-replay.sh b/tests/import-replay.sh deleted file mode 100755 index 216c235..0000000 --- a/tests/import-replay.sh +++ /dev/null @@ -1,12 +0,0 @@ -#/bin/sh - -# $1: The match-log directory -# Should be run from the tests directory. - -logname=$(basename $1) - -mkdir replays/$logname -cp $1/A*.csv replays/$logname/A-log.csv -cp $1/B*.csv replays/$logname/B-log.csv -cp $1/Round\ 001/A*/JsonMap.json replays/$logname/A-init.json -cp $1/Round\ 001/B*/JsonMap.json replays/$logname/B-init.json diff --git a/tests/official-runner-matching.rs b/tests/official-runner-matching.rs deleted file mode 100644 index 1b62088..0000000 --- a/tests/official-runner-matching.rs +++ /dev/null @@ -1,238 +0,0 @@ -use steam_powered_wyrm::command::{Action, Command}; -use steam_powered_wyrm::constants::*; -use steam_powered_wyrm::game::*; -use steam_powered_wyrm::geometry::*; -use steam_powered_wyrm::json; - -use std::fs::File; -use std::io::prelude::*; -use std::path::Path; - -#[test] -fn simulates_the_same_match() { - let replays = Path::new("tests/replays/"); - for replay in replays.read_dir().expect("read_dir failed") { - let replay = replay.expect("error on replay").path(); - - let mut game_board = GameBoard::new( - json::read_state_from_json_file(&replay.join(Path::new("A-init.json"))) - .expect("Failed to read initial state"), - ); - let player_csv = read_file_lines(&replay.join(Path::new("A-log.csv")), 1); - let opponent_csv = read_file_lines(&replay.join(Path::new("B-log.csv")), 1); - - for round in 0..player_csv.len() { - println!("Testing round {}", round); - - let player = split_csv(&player_csv[round]); - let opponent = split_csv(&opponent_csv[round]); - - assert_eq!( - round + 1, - player[0] - .parse::() - .expect(&format!("Invalid player input on round {}", round)) - ); - assert_eq!( - round + 1, - opponent[0] - .parse::() - .expect(&format!("Invalid opponent input on round {}", round)) - ); - - if round != 0 { - let player_move = read_move( - &player, - game_board.players[0].worms[game_board.players[0].active_worm].id, - ); - let opponent_move = read_move( - &opponent, - game_board.players[1].worms[game_board.players[1].active_worm].id, - ); - let _ = game_board.simulate([player_move, opponent_move]); - if player[1] == "invalid" { - game_board.players[0].moves_score -= INVALID_COMMAND_SCORE_PENALTY; - } - if opponent[1] == "invalid" { - game_board.players[1].moves_score -= INVALID_COMMAND_SCORE_PENALTY; - } - } - - for player_index in 0..2 { - let csv_row = match player_index { - 0 => &player, - _ => &opponent, - }; - assert_eq!( - csv_row[4].parse::().unwrap(), - game_board.players[player_index].score(), - "Score is incorrect for player {}, Row: {:?}", - player_index, - csv_row - ); - for worm_index in 0..3 { - let worm_id = worm_index as i32 + 1; - - match game_board.players[player_index].find_worm(worm_id) { - Some(worm) => { - assert_eq!( - csv_row[6 + worm_index * 3].parse::().unwrap(), - worm.health, - "Worm health is incorrect for worm {} on player {}, Row: {:?}", - worm_id, - player_index, - csv_row - ); - assert_eq!( - csv_row[7 + worm_index * 3].parse::().unwrap(), - worm.position.x, - "Worm x is incorrect for worm {} on player {}, Row: {:?}", - worm_id, - player_index, - csv_row - ); - assert_eq!( - csv_row[8 + worm_index * 3].parse::().unwrap(), - worm.position.y, - "Worm y is incorrect for worm {} on player {}, Row: {:?}", - worm_id, - player_index, - csv_row - ); - } - None => { - // If the worms don't appear in my state, they should be dead - assert!( - csv_row[6 + worm_index * 3].parse::().unwrap() <= 0, - "Worm is not actually dead" - ); - } - } - } - } - } - } -} - -fn read_file_lines(path: &Path, skip: usize) -> Vec { - let mut file = File::open(path).unwrap(); - let mut contents = String::new(); - file.read_to_string(&mut contents).unwrap(); - contents - .split("\n") - .skip(skip) - .map(String::from) - .filter(|s| !s.is_empty()) - .collect() -} - -fn split_csv(input: &str) -> Vec { - let mut result = Vec::new(); - let mut next = Vec::new(); - let mut quoted = false; - - for c in input.chars() { - match c { - '"' => { - quoted = !quoted; - } - ',' if !quoted => { - result.push(next.iter().collect()); - next = Vec::new(); - } - c => { - next.push(c); - } - } - } - result.push(next.iter().collect()); - result -} - -fn read_move(csv_line: &[String], expected_worm_id: i32) -> Command { - let worm_id = csv_line[3].parse::().unwrap(); - let select = if worm_id == expected_worm_id { - None - } else { - Some(worm_id) - }; - match csv_line[1].as_ref() { - "move" => { - let (x, y) = read_xy_pair(&csv_line[2]); - Command { - worm: select, - action: Action::Move(Point2d::new(x, y)), - } - } - "dig" => { - let (x, y) = read_xy_pair(&csv_line[2]); - Command { - worm: select, - action: Action::Dig(Point2d::new(x, y)), - } - } - "banana" => { - let (x, y) = read_xy_pair(&csv_line[2]); - Command { - worm: select, - action: Action::Bomb(Point2d::new(x, y)), - } - } - "snowball" => { - let (x, y) = read_xy_pair(&csv_line[2]); - Command { - worm: select, - action: Action::Snowball(Point2d::new(x, y)), - } - } - "nothing" | "invalid" => Command { - worm: select, - action: Action::DoNothing, - }, - "shoot" => { - use steam_powered_wyrm::geometry::Direction::*; - - let dir = match csv_line[2].as_ref() { - "shoot N" => North, - "shoot NE" => NorthEast, - "shoot E" => East, - "shoot SE" => SouthEast, - "shoot S" => South, - "shoot SW" => SouthWest, - "shoot W" => West, - "shoot NW" => NorthWest, - _ => panic!("Unknown shoot direction: {}", csv_line[2]), - }; - Command { - worm: select, - action: Action::Shoot(dir), - } - } - x => { - panic!("Unknown command {}", x); - } - } -} - -fn read_xy_pair(input: &str) -> (i8, i8) { - let mut char_iter = input.chars(); - let _ = char_iter - .by_ref() - .take_while(|c| *c != ' ') - .collect::(); - let x = char_iter - .by_ref() - .take_while(|c| *c != ' ') - .collect::() - .trim() - .parse::() - .unwrap(); - let y = char_iter - .by_ref() - .take_while(|c| *c != ' ') - .collect::() - .trim() - .parse::() - .unwrap(); - (x, y) -} diff --git a/tests/replays/2019.08.19.21.15.02/A-init.json b/tests/replays/2019.08.19.21.15.02/A-init.json deleted file mode 100644 index ea2e948..0000000 --- a/tests/replays/2019.08.19.21.15.02/A-init.json +++ /dev/null @@ -1 +0,0 @@ -{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":1,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":2,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"AIR"},{"x":13,"y":0,"type":"DIRT"},{"x":14,"y":0,"type":"DIRT"},{"x":15,"y":0,"type":"DIRT"},{"x":16,"y":0,"type":"AIR"},{"x":17,"y":0,"type":"DIRT"},{"x":18,"y":0,"type":"DIRT"},{"x":19,"y":0,"type":"DIRT"},{"x":20,"y":0,"type":"AIR"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"AIR"},{"x":10,"y":1,"type":"AIR"},{"x":11,"y":1,"type":"AIR"},{"x":12,"y":1,"type":"AIR"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"DIRT"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"AIR"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"DIRT"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"AIR"},{"x":21,"y":1,"type":"AIR"},{"x":22,"y":1,"type":"AIR"},{"x":23,"y":1,"type":"AIR"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"DIRT"},{"x":12,"y":2,"type":"DIRT"},{"x":13,"y":2,"type":"AIR"},{"x":14,"y":2,"type":"AIR"},{"x":15,"y":2,"type":"DIRT"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"DIRT"},{"x":18,"y":2,"type":"AIR"},{"x":19,"y":2,"type":"AIR"},{"x":20,"y":2,"type":"DIRT"},{"x":21,"y":2,"type":"DIRT"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"DIRT"},{"x":12,"y":3,"type":"DIRT"},{"x":13,"y":3,"type":"DIRT"},{"x":14,"y":3,"type":"AIR"},{"x":15,"y":3,"type":"AIR"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"AIR"},{"x":18,"y":3,"type":"AIR"},{"x":19,"y":3,"type":"DIRT"},{"x":20,"y":3,"type":"DIRT"},{"x":21,"y":3,"type":"DIRT"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"DIRT"},{"x":5,"y":4,"type":"DIRT"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"DIRT"},{"x":12,"y":4,"type":"DIRT"},{"x":13,"y":4,"type":"DIRT"},{"x":14,"y":4,"type":"DIRT"},{"x":15,"y":4,"type":"AIR"},{"x":16,"y":4,"type":"DIRT"},{"x":17,"y":4,"type":"AIR"},{"x":18,"y":4,"type":"DIRT"},{"x":19,"y":4,"type":"DIRT"},{"x":20,"y":4,"type":"DIRT"},{"x":21,"y":4,"type":"DIRT"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"DIRT"},{"x":28,"y":4,"type":"DIRT"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"AIR"},{"x":5,"y":5,"type":"AIR"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"DIRT"},{"x":13,"y":5,"type":"DIRT"},{"x":14,"y":5,"type":"DIRT"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"DIRT"},{"x":19,"y":5,"type":"DIRT"},{"x":20,"y":5,"type":"DIRT"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"AIR"},{"x":28,"y":5,"type":"AIR"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"DIRT"},{"x":4,"y":6,"type":"DIRT"},{"x":5,"y":6,"type":"AIR"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"DIRT"},{"x":12,"y":6,"type":"DIRT"},{"x":13,"y":6,"type":"DIRT"},{"x":14,"y":6,"type":"DIRT"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"DIRT"},{"x":19,"y":6,"type":"DIRT"},{"x":20,"y":6,"type":"DIRT"},{"x":21,"y":6,"type":"DIRT"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"AIR"},{"x":28,"y":6,"type":"DIRT"},{"x":29,"y":6,"type":"DIRT"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"AIR"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"DIRT"},{"x":5,"y":7,"type":"AIR"},{"x":6,"y":7,"type":"AIR"},{"x":7,"y":7,"type":"DIRT"},{"x":8,"y":7,"type":"DIRT"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"DIRT"},{"x":12,"y":7,"type":"DIRT"},{"x":13,"y":7,"type":"AIR"},{"x":14,"y":7,"type":"AIR"},{"x":15,"y":7,"type":"AIR"},{"x":16,"y":7,"type":"DIRT"},{"x":17,"y":7,"type":"AIR"},{"x":18,"y":7,"type":"AIR"},{"x":19,"y":7,"type":"AIR"},{"x":20,"y":7,"type":"DIRT"},{"x":21,"y":7,"type":"DIRT"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"DIRT"},{"x":25,"y":7,"type":"DIRT"},{"x":26,"y":7,"type":"AIR"},{"x":27,"y":7,"type":"AIR"},{"x":28,"y":7,"type":"DIRT"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"AIR"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"AIR"},{"x":2,"y":8,"type":"AIR"},{"x":3,"y":8,"type":"AIR"},{"x":4,"y":8,"type":"AIR"},{"x":5,"y":8,"type":"DIRT"},{"x":6,"y":8,"type":"DIRT"},{"x":7,"y":8,"type":"DIRT"},{"x":8,"y":8,"type":"DIRT"},{"x":9,"y":8,"type":"DIRT"},{"x":10,"y":8,"type":"DIRT"},{"x":11,"y":8,"type":"DIRT"},{"x":12,"y":8,"type":"DIRT"},{"x":13,"y":8,"type":"AIR"},{"x":14,"y":8,"type":"AIR"},{"x":15,"y":8,"type":"DIRT"},{"x":16,"y":8,"type":"DIRT"},{"x":17,"y":8,"type":"DIRT"},{"x":18,"y":8,"type":"AIR"},{"x":19,"y":8,"type":"AIR"},{"x":20,"y":8,"type":"DIRT"},{"x":21,"y":8,"type":"DIRT"},{"x":22,"y":8,"type":"DIRT"},{"x":23,"y":8,"type":"DIRT"},{"x":24,"y":8,"type":"DIRT"},{"x":25,"y":8,"type":"DIRT"},{"x":26,"y":8,"type":"DIRT"},{"x":27,"y":8,"type":"DIRT"},{"x":28,"y":8,"type":"AIR"},{"x":29,"y":8,"type":"AIR"},{"x":30,"y":8,"type":"AIR"},{"x":31,"y":8,"type":"AIR"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"AIR"},{"x":2,"y":9,"type":"AIR"},{"x":3,"y":9,"type":"AIR"},{"x":4,"y":9,"type":"DIRT"},{"x":5,"y":9,"type":"DIRT"},{"x":6,"y":9,"type":"DIRT"},{"x":7,"y":9,"type":"DIRT"},{"x":8,"y":9,"type":"DIRT"},{"x":9,"y":9,"type":"DIRT"},{"x":10,"y":9,"type":"DIRT"},{"x":11,"y":9,"type":"AIR"},{"x":12,"y":9,"type":"DIRT"},{"x":13,"y":9,"type":"AIR"},{"x":14,"y":9,"type":"AIR"},{"x":15,"y":9,"type":"DIRT"},{"x":16,"y":9,"type":"DIRT"},{"x":17,"y":9,"type":"DIRT"},{"x":18,"y":9,"type":"AIR"},{"x":19,"y":9,"type":"AIR"},{"x":20,"y":9,"type":"DIRT"},{"x":21,"y":9,"type":"AIR"},{"x":22,"y":9,"type":"DIRT"},{"x":23,"y":9,"type":"DIRT"},{"x":24,"y":9,"type":"DIRT"},{"x":25,"y":9,"type":"DIRT"},{"x":26,"y":9,"type":"DIRT"},{"x":27,"y":9,"type":"DIRT"},{"x":28,"y":9,"type":"DIRT"},{"x":29,"y":9,"type":"AIR"},{"x":30,"y":9,"type":"AIR"},{"x":31,"y":9,"type":"AIR"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"AIR"},{"x":2,"y":10,"type":"AIR"},{"x":3,"y":10,"type":"AIR"},{"x":4,"y":10,"type":"AIR"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"DIRT"},{"x":7,"y":10,"type":"DIRT"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"DIRT"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"AIR"},{"x":12,"y":10,"type":"DIRT"},{"x":13,"y":10,"type":"DIRT"},{"x":14,"y":10,"type":"DIRT"},{"x":15,"y":10,"type":"DIRT"},{"x":16,"y":10,"type":"AIR"},{"x":17,"y":10,"type":"DIRT"},{"x":18,"y":10,"type":"DIRT"},{"x":19,"y":10,"type":"DIRT"},{"x":20,"y":10,"type":"DIRT"},{"x":21,"y":10,"type":"AIR"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"DIRT"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"DIRT"},{"x":26,"y":10,"type":"DIRT"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"AIR"},{"x":29,"y":10,"type":"AIR"},{"x":30,"y":10,"type":"AIR"},{"x":31,"y":10,"type":"AIR"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"DIRT"},{"x":1,"y":11,"type":"DIRT"},{"x":2,"y":11,"type":"AIR"},{"x":3,"y":11,"type":"AIR"},{"x":4,"y":11,"type":"AIR"},{"x":5,"y":11,"type":"AIR"},{"x":6,"y":11,"type":"DIRT"},{"x":7,"y":11,"type":"DIRT"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"DIRT"},{"x":10,"y":11,"type":"AIR"},{"x":11,"y":11,"type":"AIR"},{"x":12,"y":11,"type":"DIRT"},{"x":13,"y":11,"type":"DIRT"},{"x":14,"y":11,"type":"DIRT"},{"x":15,"y":11,"type":"AIR"},{"x":16,"y":11,"type":"AIR"},{"x":17,"y":11,"type":"AIR"},{"x":18,"y":11,"type":"DIRT"},{"x":19,"y":11,"type":"DIRT"},{"x":20,"y":11,"type":"DIRT"},{"x":21,"y":11,"type":"AIR"},{"x":22,"y":11,"type":"AIR"},{"x":23,"y":11,"type":"DIRT"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"DIRT"},{"x":26,"y":11,"type":"DIRT"},{"x":27,"y":11,"type":"AIR"},{"x":28,"y":11,"type":"AIR"},{"x":29,"y":11,"type":"AIR"},{"x":30,"y":11,"type":"AIR"},{"x":31,"y":11,"type":"DIRT"},{"x":32,"y":11,"type":"DIRT"}],[{"x":0,"y":12,"type":"AIR"},{"x":1,"y":12,"type":"AIR"},{"x":2,"y":12,"type":"AIR"},{"x":3,"y":12,"type":"AIR"},{"x":4,"y":12,"type":"AIR"},{"x":5,"y":12,"type":"AIR"},{"x":6,"y":12,"type":"AIR"},{"x":7,"y":12,"type":"DIRT"},{"x":8,"y":12,"type":"DIRT"},{"x":9,"y":12,"type":"DIRT"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"AIR"},{"x":12,"y":12,"type":"AIR"},{"x":13,"y":12,"type":"DIRT"},{"x":14,"y":12,"type":"DIRT"},{"x":15,"y":12,"type":"AIR"},{"x":16,"y":12,"type":"AIR"},{"x":17,"y":12,"type":"AIR"},{"x":18,"y":12,"type":"DIRT"},{"x":19,"y":12,"type":"DIRT"},{"x":20,"y":12,"type":"AIR"},{"x":21,"y":12,"type":"AIR"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"DIRT"},{"x":24,"y":12,"type":"DIRT"},{"x":25,"y":12,"type":"DIRT"},{"x":26,"y":12,"type":"AIR"},{"x":27,"y":12,"type":"AIR"},{"x":28,"y":12,"type":"AIR"},{"x":29,"y":12,"type":"AIR"},{"x":30,"y":12,"type":"AIR"},{"x":31,"y":12,"type":"AIR"},{"x":32,"y":12,"type":"AIR"}],[{"x":0,"y":13,"type":"AIR"},{"x":1,"y":13,"type":"AIR"},{"x":2,"y":13,"type":"AIR"},{"x":3,"y":13,"type":"AIR"},{"x":4,"y":13,"type":"DIRT"},{"x":5,"y":13,"type":"DIRT"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"DIRT"},{"x":8,"y":13,"type":"DIRT"},{"x":9,"y":13,"type":"DIRT"},{"x":10,"y":13,"type":"DIRT"},{"x":11,"y":13,"type":"AIR"},{"x":12,"y":13,"type":"DIRT"},{"x":13,"y":13,"type":"DIRT"},{"x":14,"y":13,"type":"DIRT"},{"x":15,"y":13,"type":"AIR"},{"x":16,"y":13,"type":"AIR"},{"x":17,"y":13,"type":"AIR"},{"x":18,"y":13,"type":"DIRT"},{"x":19,"y":13,"type":"DIRT"},{"x":20,"y":13,"type":"DIRT"},{"x":21,"y":13,"type":"AIR"},{"x":22,"y":13,"type":"DIRT"},{"x":23,"y":13,"type":"DIRT"},{"x":24,"y":13,"type":"DIRT"},{"x":25,"y":13,"type":"DIRT"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"DIRT"},{"x":28,"y":13,"type":"DIRT"},{"x":29,"y":13,"type":"AIR"},{"x":30,"y":13,"type":"AIR"},{"x":31,"y":13,"type":"AIR"},{"x":32,"y":13,"type":"AIR"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"DIRT"},{"x":5,"y":14,"type":"DIRT"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"DIRT"},{"x":8,"y":14,"type":"DIRT"},{"x":9,"y":14,"type":"DIRT"},{"x":10,"y":14,"type":"AIR"},{"x":11,"y":14,"type":"AIR"},{"x":12,"y":14,"type":"AIR"},{"x":13,"y":14,"type":"DIRT"},{"x":14,"y":14,"type":"AIR"},{"x":15,"y":14,"type":"AIR"},{"x":16,"y":14,"type":"AIR"},{"x":17,"y":14,"type":"AIR"},{"x":18,"y":14,"type":"AIR"},{"x":19,"y":14,"type":"DIRT"},{"x":20,"y":14,"type":"AIR"},{"x":21,"y":14,"type":"AIR"},{"x":22,"y":14,"type":"AIR"},{"x":23,"y":14,"type":"DIRT"},{"x":24,"y":14,"type":"DIRT"},{"x":25,"y":14,"type":"DIRT"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"DIRT"},{"x":28,"y":14,"type":"DIRT"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"DIRT"},{"x":5,"y":15,"type":"DIRT"},{"x":6,"y":15,"type":"AIR"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"AIR"},{"x":9,"y":15,"type":"AIR"},{"x":10,"y":15,"type":"AIR"},{"x":11,"y":15,"type":"AIR"},{"x":12,"y":15,"type":"AIR"},{"x":13,"y":15,"type":"AIR"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"AIR"},{"x":16,"y":15,"type":"AIR"},{"x":17,"y":15,"type":"AIR"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"AIR"},{"x":20,"y":15,"type":"AIR"},{"x":21,"y":15,"type":"AIR"},{"x":22,"y":15,"type":"AIR"},{"x":23,"y":15,"type":"AIR"},{"x":24,"y":15,"type":"AIR"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"AIR"},{"x":27,"y":15,"type":"DIRT"},{"x":28,"y":15,"type":"DIRT"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"DIRT"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"AIR"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"AIR"},{"x":10,"y":16,"type":"DIRT"},{"x":11,"y":16,"type":"DIRT"},{"x":12,"y":16,"type":"DIRT"},{"x":13,"y":16,"type":"AIR"},{"x":14,"y":16,"type":"AIR"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"AIR"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"AIR"},{"x":19,"y":16,"type":"AIR"},{"x":20,"y":16,"type":"DIRT"},{"x":21,"y":16,"type":"DIRT"},{"x":22,"y":16,"type":"DIRT"},{"x":23,"y":16,"type":"AIR"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"AIR"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"DIRT"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"DIRT"},{"x":5,"y":17,"type":"DIRT"},{"x":6,"y":17,"type":"AIR"},{"x":7,"y":17,"type":"AIR"},{"x":8,"y":17,"type":"DIRT"},{"x":9,"y":17,"type":"DIRT"},{"x":10,"y":17,"type":"AIR"},{"x":11,"y":17,"type":"AIR"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"DIRT"},{"x":14,"y":17,"type":"AIR"},{"x":15,"y":17,"type":"AIR"},{"x":16,"y":17,"type":"DIRT"},{"x":17,"y":17,"type":"AIR"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"DIRT"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"AIR"},{"x":22,"y":17,"type":"AIR"},{"x":23,"y":17,"type":"DIRT"},{"x":24,"y":17,"type":"DIRT"},{"x":25,"y":17,"type":"AIR"},{"x":26,"y":17,"type":"AIR"},{"x":27,"y":17,"type":"DIRT"},{"x":28,"y":17,"type":"DIRT"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"DIRT"},{"x":5,"y":18,"type":"AIR"},{"x":6,"y":18,"type":"AIR"},{"x":7,"y":18,"type":"DIRT"},{"x":8,"y":18,"type":"DIRT"},{"x":9,"y":18,"type":"DIRT"},{"x":10,"y":18,"type":"AIR"},{"x":11,"y":18,"type":"AIR"},{"x":12,"y":18,"type":"AIR"},{"x":13,"y":18,"type":"DIRT"},{"x":14,"y":18,"type":"DIRT"},{"x":15,"y":18,"type":"AIR"},{"x":16,"y":18,"type":"DIRT"},{"x":17,"y":18,"type":"AIR"},{"x":18,"y":18,"type":"DIRT"},{"x":19,"y":18,"type":"DIRT"},{"x":20,"y":18,"type":"AIR"},{"x":21,"y":18,"type":"AIR"},{"x":22,"y":18,"type":"AIR"},{"x":23,"y":18,"type":"DIRT"},{"x":24,"y":18,"type":"DIRT"},{"x":25,"y":18,"type":"DIRT"},{"x":26,"y":18,"type":"AIR"},{"x":27,"y":18,"type":"AIR"},{"x":28,"y":18,"type":"DIRT"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"AIR"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"AIR"},{"x":3,"y":19,"type":"AIR"},{"x":4,"y":19,"type":"DIRT"},{"x":5,"y":19,"type":"DIRT"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"AIR"},{"x":8,"y":19,"type":"DIRT"},{"x":9,"y":19,"type":"AIR"},{"x":10,"y":19,"type":"AIR"},{"x":11,"y":19,"type":"AIR"},{"x":12,"y":19,"type":"DIRT"},{"x":13,"y":19,"type":"DIRT"},{"x":14,"y":19,"type":"AIR"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"AIR"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"AIR"},{"x":19,"y":19,"type":"DIRT"},{"x":20,"y":19,"type":"DIRT"},{"x":21,"y":19,"type":"AIR"},{"x":22,"y":19,"type":"AIR"},{"x":23,"y":19,"type":"AIR"},{"x":24,"y":19,"type":"DIRT"},{"x":25,"y":19,"type":"AIR"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"DIRT"},{"x":28,"y":19,"type":"DIRT"},{"x":29,"y":19,"type":"AIR"},{"x":30,"y":19,"type":"AIR"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"AIR"}],[{"x":0,"y":20,"type":"DIRT"},{"x":1,"y":20,"type":"AIR"},{"x":2,"y":20,"type":"AIR"},{"x":3,"y":20,"type":"AIR"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"DIRT"},{"x":6,"y":20,"type":"DIRT"},{"x":7,"y":20,"type":"AIR"},{"x":8,"y":20,"type":"AIR"},{"x":9,"y":20,"type":"AIR"},{"x":10,"y":20,"type":"DIRT"},{"x":11,"y":20,"type":"DIRT"},{"x":12,"y":20,"type":"DIRT"},{"x":13,"y":20,"type":"DIRT"},{"x":14,"y":20,"type":"DIRT"},{"x":15,"y":20,"type":"AIR"},{"x":16,"y":20,"type":"AIR"},{"x":17,"y":20,"type":"AIR"},{"x":18,"y":20,"type":"DIRT"},{"x":19,"y":20,"type":"DIRT"},{"x":20,"y":20,"type":"DIRT"},{"x":21,"y":20,"type":"DIRT"},{"x":22,"y":20,"type":"DIRT"},{"x":23,"y":20,"type":"AIR"},{"x":24,"y":20,"type":"AIR"},{"x":25,"y":20,"type":"AIR"},{"x":26,"y":20,"type":"DIRT"},{"x":27,"y":20,"type":"DIRT"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"AIR"},{"x":30,"y":20,"type":"AIR"},{"x":31,"y":20,"type":"AIR"},{"x":32,"y":20,"type":"DIRT"}],[{"x":0,"y":21,"type":"DIRT"},{"x":1,"y":21,"type":"AIR"},{"x":2,"y":21,"type":"AIR"},{"x":3,"y":21,"type":"AIR"},{"x":4,"y":21,"type":"AIR"},{"x":5,"y":21,"type":"DIRT"},{"x":6,"y":21,"type":"DIRT"},{"x":7,"y":21,"type":"DIRT"},{"x":8,"y":21,"type":"AIR"},{"x":9,"y":21,"type":"DIRT"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"DIRT"},{"x":12,"y":21,"type":"DIRT"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"AIR"},{"x":15,"y":21,"type":"AIR"},{"x":16,"y":21,"type":"DIRT"},{"x":17,"y":21,"type":"AIR"},{"x":18,"y":21,"type":"AIR"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"DIRT"},{"x":21,"y":21,"type":"DIRT"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"DIRT"},{"x":24,"y":21,"type":"AIR"},{"x":25,"y":21,"type":"DIRT"},{"x":26,"y":21,"type":"DIRT"},{"x":27,"y":21,"type":"DIRT"},{"x":28,"y":21,"type":"AIR"},{"x":29,"y":21,"type":"AIR"},{"x":30,"y":21,"type":"AIR"},{"x":31,"y":21,"type":"AIR"},{"x":32,"y":21,"type":"DIRT"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"AIR"},{"x":2,"y":22,"type":"AIR"},{"x":3,"y":22,"type":"DIRT"},{"x":4,"y":22,"type":"DIRT"},{"x":5,"y":22,"type":"DIRT"},{"x":6,"y":22,"type":"DIRT"},{"x":7,"y":22,"type":"DIRT"},{"x":8,"y":22,"type":"DIRT"},{"x":9,"y":22,"type":"DIRT"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"DIRT"},{"x":13,"y":22,"type":"DIRT"},{"x":14,"y":22,"type":"AIR"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"AIR"},{"x":19,"y":22,"type":"DIRT"},{"x":20,"y":22,"type":"DIRT"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"DIRT"},{"x":24,"y":22,"type":"DIRT"},{"x":25,"y":22,"type":"DIRT"},{"x":26,"y":22,"type":"DIRT"},{"x":27,"y":22,"type":"DIRT"},{"x":28,"y":22,"type":"DIRT"},{"x":29,"y":22,"type":"DIRT"},{"x":30,"y":22,"type":"AIR"},{"x":31,"y":22,"type":"AIR"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"AIR"},{"x":2,"y":23,"type":"DIRT"},{"x":3,"y":23,"type":"DIRT"},{"x":4,"y":23,"type":"DIRT"},{"x":5,"y":23,"type":"AIR"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"DIRT"},{"x":8,"y":23,"type":"DIRT"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"DIRT"},{"x":13,"y":23,"type":"AIR"},{"x":14,"y":23,"type":"AIR"},{"x":15,"y":23,"type":"DIRT"},{"x":16,"y":23,"type":"DIRT"},{"x":17,"y":23,"type":"DIRT"},{"x":18,"y":23,"type":"AIR"},{"x":19,"y":23,"type":"AIR"},{"x":20,"y":23,"type":"DIRT"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"DIRT"},{"x":25,"y":23,"type":"DIRT"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"AIR"},{"x":28,"y":23,"type":"DIRT"},{"x":29,"y":23,"type":"DIRT"},{"x":30,"y":23,"type":"DIRT"},{"x":31,"y":23,"type":"AIR"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"DIRT"},{"x":2,"y":24,"type":"DIRT"},{"x":3,"y":24,"type":"DIRT"},{"x":4,"y":24,"type":"DIRT"},{"x":5,"y":24,"type":"AIR"},{"x":6,"y":24,"type":"AIR"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"DIRT"},{"x":9,"y":24,"type":"AIR"},{"x":10,"y":24,"type":"DIRT"},{"x":11,"y":24,"type":"DIRT"},{"x":12,"y":24,"type":"DIRT"},{"x":13,"y":24,"type":"AIR"},{"x":14,"y":24,"type":"DIRT"},{"x":15,"y":24,"type":"DIRT"},{"x":16,"y":24,"type":"DIRT"},{"x":17,"y":24,"type":"DIRT"},{"x":18,"y":24,"type":"DIRT"},{"x":19,"y":24,"type":"AIR"},{"x":20,"y":24,"type":"DIRT"},{"x":21,"y":24,"type":"DIRT"},{"x":22,"y":24,"type":"DIRT"},{"x":23,"y":24,"type":"AIR"},{"x":24,"y":24,"type":"DIRT"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"AIR"},{"x":27,"y":24,"type":"AIR"},{"x":28,"y":24,"type":"DIRT"},{"x":29,"y":24,"type":"DIRT"},{"x":30,"y":24,"type":"DIRT"},{"x":31,"y":24,"type":"DIRT"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"DIRT"},{"x":3,"y":25,"type":"DIRT"},{"x":4,"y":25,"type":"DIRT"},{"x":5,"y":25,"type":"DIRT"},{"x":6,"y":25,"type":"DIRT"},{"x":7,"y":25,"type":"DIRT"},{"x":8,"y":25,"type":"DIRT"},{"x":9,"y":25,"type":"DIRT"},{"x":10,"y":25,"type":"DIRT"},{"x":11,"y":25,"type":"DIRT"},{"x":12,"y":25,"type":"DIRT"},{"x":13,"y":25,"type":"DIRT"},{"x":14,"y":25,"type":"DIRT"},{"x":15,"y":25,"type":"DIRT"},{"x":16,"y":25,"type":"AIR"},{"x":17,"y":25,"type":"DIRT"},{"x":18,"y":25,"type":"DIRT"},{"x":19,"y":25,"type":"DIRT"},{"x":20,"y":25,"type":"DIRT"},{"x":21,"y":25,"type":"DIRT"},{"x":22,"y":25,"type":"DIRT"},{"x":23,"y":25,"type":"DIRT"},{"x":24,"y":25,"type":"DIRT"},{"x":25,"y":25,"type":"DIRT"},{"x":26,"y":25,"type":"DIRT"},{"x":27,"y":25,"type":"DIRT"},{"x":28,"y":25,"type":"DIRT"},{"x":29,"y":25,"type":"DIRT"},{"x":30,"y":25,"type":"DIRT"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"DIRT"},{"x":5,"y":26,"type":"DIRT"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"AIR"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"DIRT"},{"x":14,"y":26,"type":"AIR"},{"x":15,"y":26,"type":"AIR"},{"x":16,"y":26,"type":"AIR"},{"x":17,"y":26,"type":"AIR"},{"x":18,"y":26,"type":"AIR"},{"x":19,"y":26,"type":"DIRT"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"AIR"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"DIRT"},{"x":28,"y":26,"type":"DIRT"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"DIRT"},{"x":5,"y":27,"type":"DIRT"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"DIRT"},{"x":14,"y":27,"type":"AIR"},{"x":15,"y":27,"type":"AIR"},{"x":16,"y":27,"type":"DIRT"},{"x":17,"y":27,"type":"AIR"},{"x":18,"y":27,"type":"AIR"},{"x":19,"y":27,"type":"DIRT"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"DIRT"},{"x":28,"y":27,"type":"DIRT"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"DIRT"},{"x":5,"y":28,"type":"DIRT"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"DIRT"},{"x":12,"y":28,"type":"DIRT"},{"x":13,"y":28,"type":"DIRT"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"DIRT"},{"x":16,"y":28,"type":"DIRT"},{"x":17,"y":28,"type":"DIRT"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"DIRT"},{"x":20,"y":28,"type":"DIRT"},{"x":21,"y":28,"type":"DIRT"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"DIRT"},{"x":28,"y":28,"type":"DIRT"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"AIR"},{"x":12,"y":29,"type":"DIRT"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"AIR"},{"x":15,"y":29,"type":"DIRT"},{"x":16,"y":29,"type":"AIR"},{"x":17,"y":29,"type":"DIRT"},{"x":18,"y":29,"type":"AIR"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"DIRT"},{"x":21,"y":29,"type":"AIR"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"AIR"},{"x":12,"y":30,"type":"DIRT"},{"x":13,"y":30,"type":"AIR"},{"x":14,"y":30,"type":"AIR"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"DIRT"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"AIR"},{"x":19,"y":30,"type":"AIR"},{"x":20,"y":30,"type":"DIRT"},{"x":21,"y":30,"type":"AIR"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"AIR"},{"x":9,"y":31,"type":"DIRT"},{"x":10,"y":31,"type":"AIR"},{"x":11,"y":31,"type":"AIR"},{"x":12,"y":31,"type":"AIR"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"DIRT"},{"x":16,"y":31,"type":"DIRT"},{"x":17,"y":31,"type":"DIRT"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"AIR"},{"x":21,"y":31,"type":"AIR"},{"x":22,"y":31,"type":"AIR"},{"x":23,"y":31,"type":"DIRT"},{"x":24,"y":31,"type":"AIR"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"AIR"},{"x":12,"y":32,"type":"AIR"},{"x":13,"y":32,"type":"AIR"},{"x":14,"y":32,"type":"AIR"},{"x":15,"y":32,"type":"DIRT"},{"x":16,"y":32,"type":"AIR"},{"x":17,"y":32,"type":"DIRT"},{"x":18,"y":32,"type":"AIR"},{"x":19,"y":32,"type":"AIR"},{"x":20,"y":32,"type":"AIR"},{"x":21,"y":32,"type":"AIR"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/tests/replays/2019.08.19.21.15.02/A-log.csv b/tests/replays/2019.08.19.21.15.02/A-log.csv deleted file mode 100644 index 373de29..0000000 --- a/tests/replays/2019.08.19.21.15.02/A-log.csv +++ /dev/null @@ -1,298 +0,0 @@ -Round,LastCommandType,LastCommand,ActiveWorm,Score,Health,Worm1 Health,Worm1 x,Worm1 y,Worm2 Health,Worm2 x,Worm2 y,Worm3 Health,Worm3 x,Worm3 y -1,null,"null",1,116,350,150,24,4,100,24,28,100,1,16 -2,move,"move 23 3",1,121,350,150,23,3,100,24,28,100,1,16 -3,move,"move 23 28",2,126,350,150,23,3,100,23,28,100,1,16 -4,move,"move 2 16",3,131,350,150,23,3,100,23,28,100,2,16 -5,dig,"dig 22 3",1,138,350,150,23,3,100,23,28,100,2,16 -6,dig,"dig 22 28",2,145,350,150,23,3,100,23,28,100,2,16 -7,dig,"dig 3 16",3,152,350,150,23,3,100,23,28,100,2,16 -8,move,"move 22 3",1,157,350,150,22,3,100,23,28,100,2,16 -9,move,"move 22 28",2,162,350,150,22,3,100,22,28,100,2,16 -10,move,"move 2 15",3,167,350,150,22,3,100,22,28,100,2,15 -11,move,"move 23 3",1,172,350,150,23,3,100,22,28,100,2,15 -12,move,"move 23 28",2,177,350,150,23,3,100,23,28,100,2,15 -13,move,"move 2 16",3,182,350,150,23,3,100,23,28,100,2,16 -14,move,"move 22 3",1,187,350,150,22,3,100,23,28,100,2,16 -15,move,"move 22 28",2,192,350,150,22,3,100,22,28,100,2,16 -16,move,"move 2 15",3,197,350,150,22,3,100,22,28,100,2,15 -17,move,"move 23 3",1,202,350,150,23,3,100,22,28,100,2,15 -18,move,"move 23 28",2,207,350,150,23,3,100,23,28,100,2,15 -19,move,"move 2 16",3,212,350,150,23,3,100,23,28,100,2,16 -20,move,"move 22 3",1,217,350,150,22,3,100,23,28,100,2,16 -21,move,"move 22 28",2,222,350,150,22,3,100,22,28,100,2,16 -22,move,"move 2 15",3,227,350,150,22,3,100,22,28,100,2,15 -23,move,"move 23 3",1,232,350,150,23,3,100,22,28,100,2,15 -24,move,"move 23 28",2,237,350,150,23,3,100,23,28,100,2,15 -25,move,"move 2 16",3,242,350,150,23,3,100,23,28,100,2,16 -26,move,"move 22 3",1,247,350,150,22,3,100,23,28,100,2,16 -27,move,"move 22 28",2,252,350,150,22,3,100,22,28,100,2,16 -28,move,"move 2 15",3,257,350,150,22,3,100,22,28,100,2,15 -29,move,"move 23 3",1,262,350,150,23,3,100,22,28,100,2,15 -30,move,"move 23 28",2,267,350,150,23,3,100,23,28,100,2,15 -31,move,"move 2 16",3,272,350,150,23,3,100,23,28,100,2,16 -32,move,"move 22 3",1,277,350,150,22,3,100,23,28,100,2,16 -33,move,"move 22 28",2,282,350,150,22,3,100,22,28,100,2,16 -34,move,"move 2 15",3,287,350,150,22,3,100,22,28,100,2,15 -35,move,"move 23 3",1,292,350,150,23,3,100,22,28,100,2,15 -36,move,"move 23 28",2,297,350,150,23,3,100,23,28,100,2,15 -37,move,"move 2 16",3,302,350,150,23,3,100,23,28,100,2,16 -38,move,"move 24 3",1,307,350,150,24,3,100,23,28,100,2,16 -39,move,"move 22 28",2,312,350,150,24,3,100,22,28,100,2,16 -40,move,"move 2 15",3,317,350,150,24,3,100,22,28,100,2,15 -41,move,"move 24 4",1,322,350,150,24,4,100,22,28,100,2,15 -42,dig,"dig 21 27",2,329,350,150,24,4,100,22,28,100,2,15 -43,move,"move 1 16",3,334,350,150,24,4,100,22,28,100,1,16 -44,move,"move 25 3",1,339,350,150,25,3,100,22,28,100,1,16 -45,move,"move 23 28",2,344,350,150,25,3,100,23,28,100,1,16 -46,move,"move 2 16",3,349,350,150,25,3,100,23,28,100,2,16 -47,dig,"dig 25 2",1,356,350,150,25,3,100,23,28,100,2,16 -48,move,"move 22 28",2,361,350,150,25,3,100,22,28,100,2,16 -49,move,"move 2 15",3,366,350,150,25,3,100,22,28,100,2,15 -50,move,"move 24 3",1,371,350,150,24,3,100,22,28,100,2,15 -51,move,"move 23 28",2,376,350,150,24,3,100,23,28,100,2,15 -52,dig,"dig 1 14",3,383,350,150,24,3,100,23,28,100,2,15 -53,dig,"dig 24 2",1,390,350,150,24,3,100,23,28,100,2,15 -54,move,"move 24 27",2,395,350,150,24,3,100,24,27,100,2,15 -55,move,"move 2 16",3,400,350,150,24,3,100,24,27,100,2,16 -56,move,"move 23 3",1,405,350,150,23,3,100,24,27,100,2,16 -57,move,"move 23 28",2,410,350,150,23,3,100,23,28,100,2,16 -58,move,"move 2 15",3,415,350,150,23,3,100,23,28,100,2,15 -59,move,"move 24 2",1,420,350,150,24,2,100,23,28,100,2,15 -60,move,"move 22 28",2,425,350,150,24,2,100,22,28,100,2,15 -61,move,"move 2 16",3,430,350,150,24,2,100,22,28,100,2,16 -62,move,"move 23 3",1,435,350,150,23,3,100,22,28,100,2,16 -63,move,"move 23 28",2,440,350,150,23,3,100,23,28,100,2,16 -64,move,"move 2 15",3,445,350,150,23,3,100,23,28,100,2,15 -65,move,"move 24 2",1,450,350,150,24,2,100,23,28,100,2,15 -66,move,"move 22 28",2,455,350,150,24,2,100,22,28,100,2,15 -67,move,"move 2 16",3,460,350,150,24,2,100,22,28,100,2,16 -68,move,"move 23 3",1,465,350,150,23,3,100,22,28,100,2,16 -69,move,"move 23 28",2,470,350,150,23,3,100,23,28,100,2,16 -70,move,"move 2 15",3,475,350,150,23,3,100,23,28,100,2,15 -71,move,"move 24 2",1,480,350,150,24,2,100,23,28,100,2,15 -72,move,"move 22 28",2,485,350,150,24,2,100,22,28,100,2,15 -73,move,"move 2 16",3,490,350,150,24,2,100,22,28,100,2,16 -74,move,"move 23 3",1,495,350,150,23,3,100,22,28,100,2,16 -75,move,"move 23 28",2,500,350,150,23,3,100,23,28,100,2,16 -76,dig,"dig 3 17",3,507,350,150,23,3,100,23,28,100,2,16 -77,move,"move 24 2",1,512,350,150,24,2,100,23,28,100,2,16 -78,move,"move 22 28",2,517,350,150,24,2,100,22,28,100,2,16 -79,move,"move 2 15",3,522,350,150,24,2,100,22,28,100,2,15 -80,move,"move 25 3",1,527,350,150,25,3,100,22,28,100,2,15 -81,dig,"dig 22 27",2,534,350,150,25,3,100,22,28,100,2,15 -82,dig,"dig 2 14",3,541,350,150,25,3,100,22,28,100,2,15 -83,move,"move 25 2",1,546,350,150,25,2,100,22,28,100,2,15 -84,move,"move 23 28",2,551,350,150,25,2,100,23,28,100,2,15 -85,dig,"dig 3 14",3,558,350,150,25,2,100,23,28,100,2,15 -86,move,"move 25 3",1,563,350,150,25,3,100,23,28,100,2,15 -87,move,"move 24 28",2,568,350,150,25,3,100,24,28,100,2,15 -88,nothing,"nothing "Player chose to do nothing"",3,568,350,150,25,3,100,24,28,100,2,15 -89,move,"move 25 2",1,573,350,150,25,2,100,24,28,100,2,15 -90,move,"move 23 28",2,578,350,150,25,2,100,23,28,100,2,15 -91,move,"move 1 16",3,583,350,150,25,2,100,23,28,100,1,16 -92,move,"move 24 3",1,588,350,150,24,3,100,23,28,100,1,16 -93,move,"move 23 29",2,587,330,130,24,3,100,23,29,100,1,16 -94,move,"move 2 16",3,592,330,130,24,3,100,23,29,100,2,16 -95,move,"move 23 4",1,597,330,130,23,4,100,23,29,100,2,16 -96,move,"move 22 28",2,595,310,110,23,4,100,22,28,100,2,16 -97,move,"move 1 16",3,600,310,110,23,4,100,22,28,100,1,16 -98,move,"move 22 3",1,600,310,110,23,4,100,22,28,100,1,16 -99,shoot,"shoot S",1,593,290,90,23,4,100,22,28,100,1,16 -100,shoot,"shoot S",1,591,282,82,23,4,100,22,28,100,1,16 -101,shoot,"shoot S",1,588,274,74,23,4,100,22,28,100,1,16 -102,shoot,"shoot S",1,601,266,66,23,4,100,22,28,100,1,16 -103,shoot,"shoot S",1,615,258,58,23,4,100,22,28,100,1,16 -104,dig,"dig 21 28",2,619,250,50,23,4,100,22,28,100,1,16 -105,nothing,"nothing "Player chose to do nothing"",3,619,250,50,23,4,100,22,28,100,1,16 -106,move,"move 24 3",1,624,250,50,24,3,100,22,28,100,1,16 -107,nothing,"nothing "Player chose to do nothing"",2,624,250,50,24,3,100,22,28,100,1,16 -108,move,"move 2 17",3,629,250,50,24,3,100,22,28,100,2,17 -109,move,"move 25 4",1,629,250,50,24,3,100,22,28,100,2,17 -110,move,"move 23 28",2,634,250,50,24,3,100,23,28,100,2,17 -111,move,"move 1 17",3,636,242,42,24,3,100,23,28,100,1,17 -112,move,"move 25 4",1,641,242,42,25,4,100,23,28,100,1,17 -113,move,"move 23 27",2,646,242,42,25,4,100,23,27,100,1,17 -114,move,"move 2 16",3,649,234,34,25,4,100,23,27,100,2,16 -115,shoot,"shoot W",1,649,234,34,25,4,100,23,27,100,2,16 -116,move,"move 22 28",2,651,226,26,25,4,100,22,28,100,2,16 -117,move,"move 3 16",3,652,215,15,25,4,100,22,28,100,3,16 -118,shoot,"shoot W",1,667,212,12,25,4,100,22,28,100,3,16 -119,move,"move 23 27",2,669,201,1,25,4,100,23,27,100,3,16 -120,move,"move 2 17",3,673,200,-10,25,4,100,23,27,100,2,17 -121,move,"move 24 27",2,678,200,-10,25,4,100,24,27,100,2,17 -122,move,"move 2 16",3,683,200,-10,25,4,100,24,27,100,2,16 -123,dig,"dig 25 26",2,690,200,-10,25,4,100,24,27,100,2,16 -124,move,"move 3 17",3,695,200,-10,25,4,100,24,27,100,3,17 -125,move,"move 23 28",2,700,200,-10,25,4,100,23,28,100,3,17 -126,move,"move 2 17",3,705,200,-10,25,4,100,23,28,100,2,17 -127,move,"move 22 28",2,710,200,-10,25,4,100,22,28,100,2,17 -128,dig,"dig 3 18",3,717,200,-10,25,4,100,22,28,100,2,17 -129,move,"move 23 28",2,722,200,-10,25,4,100,23,28,100,2,17 -130,move,"move 3 18",3,727,200,-10,25,4,100,23,28,100,3,18 -131,move,"move 22 28",2,732,200,-10,25,4,100,22,28,100,3,18 -132,move,"move 3 19",3,737,200,-10,25,4,100,22,28,100,3,19 -133,move,"move 22 27",2,742,200,-10,25,4,100,22,27,100,3,19 -134,move,"move 4 20",3,747,200,-10,25,4,100,22,27,100,4,20 -135,move,"move 21 26",2,752,200,-10,25,4,100,21,26,100,4,20 -136,move,"move 4 21",3,757,200,-10,25,4,100,21,26,100,4,21 -137,dig,"dig 20 25",2,764,200,-10,25,4,100,21,26,100,4,21 -138,nothing,"nothing "Player chose to do nothing"",3,764,200,-10,25,4,100,21,26,100,4,21 -139,move,"move 22 27",2,769,200,-10,25,4,100,22,27,100,4,21 -140,dig,"dig 5 20",3,776,200,-10,25,4,100,22,27,100,4,21 -141,move,"move 23 27",2,781,200,-10,25,4,100,23,27,100,4,21 -142,move,"move 4 20",3,786,200,-10,25,4,100,23,27,100,4,20 -143,nothing,"nothing "Player chose to do nothing"",2,786,200,-10,25,4,100,23,27,100,4,20 -144,move,"move 5 20",3,791,200,-10,25,4,100,23,27,100,5,20 -145,dig,"dig 23 26",2,798,200,-10,25,4,100,23,27,100,5,20 -146,dig,"dig 6 21",3,805,200,-10,25,4,100,23,27,100,5,20 -147,move,"move 23 26",2,810,200,-10,25,4,100,23,26,100,5,20 -148,dig,"dig 6 20",3,817,200,-10,25,4,100,23,26,100,5,20 -149,dig,"dig 22 25",2,824,200,-10,25,4,100,23,26,100,5,20 -150,dig,"dig 5 21",3,831,200,-10,25,4,100,23,26,100,5,20 -151,dig,"dig 24 25",2,838,200,-10,25,4,100,23,26,100,5,20 -152,move,"move 5 21",3,843,200,-10,25,4,100,23,26,100,5,21 -153,nothing,"nothing "Player chose to do nothing"",2,843,200,-10,25,4,100,23,26,100,5,21 -154,move,"move 5 20",3,848,200,-10,25,4,100,23,26,100,5,20 -155,dig,"dig 24 26",2,855,200,-10,25,4,100,23,26,100,5,20 -156,nothing,"nothing "Player chose to do nothing"",3,855,200,-10,25,4,100,23,26,100,5,20 -157,dig,"dig 22 26",2,862,200,-10,25,4,100,23,26,100,5,20 -158,move,"move 6 19",3,867,200,-10,25,4,100,23,26,100,6,19 -159,move,"move 24 25",2,872,200,-10,25,4,100,24,25,100,6,19 -160,move,"move 5 18",3,877,200,-10,25,4,100,24,25,100,5,18 -161,move,"move 23 24",2,882,200,-10,25,4,100,23,24,100,5,18 -162,dig,"dig 4 19",3,889,200,-10,25,4,100,23,24,100,5,18 -163,dig,"dig 22 24",2,896,200,-10,25,4,100,23,24,100,5,18 -164,dig,"dig 5 19",3,903,200,-10,25,4,100,23,24,100,5,18 -165,banana,"banana 23 19",2,952,200,-10,25,4,100,23,24,100,5,18 -166,move,"move 6 19",3,957,200,-10,25,4,100,23,24,100,6,19 -167,banana,"banana 23 19",2,997,200,-10,25,4,100,23,24,100,6,19 -168,move,"move 7 19",3,1002,200,-10,25,4,100,23,24,100,7,19 -169,banana,"banana 23 19",2,1056,200,-10,25,4,100,23,24,100,7,19 -170,dig,"dig 7 18",3,1063,200,-10,25,4,100,23,24,100,7,19 -171,dig,"dig 23 23",2,1070,200,-10,25,4,100,23,24,100,7,19 -172,move,"move 7 18",3,1075,200,-10,25,4,100,23,24,100,7,18 -173,move,"move 22 24",2,1080,200,-10,25,4,100,22,24,100,7,18 -174,move,"move 7 17",3,1085,200,-10,25,4,100,22,24,100,7,17 -175,dig,"dig 21 25",2,1092,200,-10,25,4,100,22,24,100,7,17 -176,dig,"dig 8 18",3,1099,200,-10,25,4,100,22,24,100,7,17 -177,dig,"dig 21 23",2,1106,200,-10,25,4,100,22,24,100,7,17 -178,dig,"dig 8 17",3,1113,200,-10,25,4,100,22,24,100,7,17 -179,move,"move 21 25",2,1118,200,-10,25,4,100,21,25,100,7,17 -180,nothing,"nothing "Player chose to do nothing"",3,1118,200,-10,25,4,100,21,25,100,7,17 -181,move,"move 20 25",2,1123,200,-10,25,4,100,20,25,100,7,17 -182,nothing,"nothing "Player chose to do nothing"",3,1123,200,-10,25,4,100,20,25,100,7,17 -183,move,"move 19 24",2,1128,200,-10,25,4,100,19,24,100,7,17 -184,move,"move 8 18",3,1133,200,-10,25,4,100,19,24,100,8,18 -185,move,"move 20 25",2,1138,200,-10,25,4,100,20,25,100,8,18 -186,move,"move 8 17",3,1143,200,-10,25,4,100,20,25,100,8,17 -187,move,"move 19 24",2,1148,200,-10,25,4,100,19,24,100,8,17 -188,dig,"dig 9 18",3,1155,200,-10,25,4,100,19,24,100,8,17 -189,shoot,"shoot NE",2,1171,200,-10,25,4,100,19,24,100,8,17 -190,move,"move 8 18",3,1174,192,-10,25,4,92,19,24,100,8,18 -191,shoot,"shoot NE",2,1190,192,-10,25,4,92,19,24,100,8,18 -192,move,"move 9 18",3,1195,192,-10,25,4,92,19,24,100,9,18 -193,shoot,"shoot NE",2,1208,184,-10,25,4,84,19,24,100,9,18 -194,move,"move 9 19",3,1213,184,-10,25,4,84,19,24,100,9,19 -195,move,"move 18 23",2,1218,184,-10,25,4,84,18,23,100,9,19 -196,move,"move 10 19",3,1223,184,-10,25,4,84,18,23,100,10,19 -197,shoot,"shoot NE",2,1236,176,-10,25,4,76,18,23,100,10,19 -198,move,"move 9 20",3,1239,168,-10,25,4,68,18,23,100,9,20 -199,shoot,"shoot E",2,1255,168,-10,25,4,68,18,23,100,9,20 -200,dig,"dig 10 20",3,1259,160,-10,25,4,60,18,23,100,9,20 -201,move,"move 17 22",2,1264,160,-10,25,4,60,17,22,100,9,20 -202,move,"move 10 20",3,1269,160,-10,25,4,60,17,22,100,10,20 -203,shoot,"shoot E",2,1285,160,-10,25,4,60,17,22,100,10,20 -204,move,"move 9 20",3,1290,160,-10,25,4,60,17,22,100,9,20 -205,move,"move 16 22",2,1295,160,-10,25,4,60,16,22,100,9,20 -206,dig,"dig 9 21",3,1299,152,-10,25,4,52,16,22,100,9,20 -207,shoot,"shoot E",2,1315,152,-10,25,4,52,16,22,100,9,20 -208,move,"move 10 19",3,1320,152,-10,25,4,52,16,22,100,10,19 -209,shoot,"shoot E",2,1334,144,-10,25,4,44,16,22,100,10,19 -210,move,"move 11 19",3,1339,144,-10,25,4,44,16,22,100,11,19 -211,shoot,"shoot E",2,1355,144,-10,25,4,44,16,22,100,11,19 -212,move,"move 11 18",3,1360,144,-10,25,4,44,16,22,100,11,18 -213,shoot,"shoot NE",2,1373,136,-10,25,4,36,16,22,100,11,18 -214,snowball,"snowball 16 20",3,1390,136,-10,25,4,36,16,22,100,11,18 -215,shoot,"shoot E",2,1406,136,-10,25,4,36,16,22,100,11,18 -216,dig,"dig 12 17",3,1410,128,-10,25,4,28,16,22,100,11,18 -217,shoot,"shoot E",2,1426,128,-10,25,4,28,16,22,100,11,18 -218,snowball,"snowball 16 20",3,1443,128,-10,25,4,28,16,22,100,11,18 -219,shoot,"shoot E",2,1457,120,-10,25,4,20,16,22,100,11,18 -220,snowball,"snowball 16 20",3,1474,120,-10,25,4,20,16,22,100,11,18 -221,move,"move 15 21",2,1479,120,-10,25,4,20,15,21,100,11,18 -222,invalid,"invalid",3,1475,120,-10,25,4,20,15,21,100,11,18 -223,shoot,"shoot E",2,1491,120,-10,25,4,20,15,21,100,11,18 -224,move,"move 12 17",3,1496,120,-10,25,4,20,15,21,100,12,17 -225,shoot,"shoot E",2,1512,120,-10,25,4,20,15,21,100,12,17 -226,dig,"dig 13 18",3,1519,120,-10,25,4,20,15,21,100,12,17 -227,shoot,"shoot E",2,1535,120,-10,25,4,20,15,21,100,12,17 -228,move,"move 13 18",3,1537,112,-10,25,4,12,15,21,100,13,18 -229,shoot,"shoot E",2,1553,112,-10,25,4,12,15,21,100,13,18 -230,shoot,"shoot SE",3,1569,112,-10,25,4,12,15,21,100,13,18 -231,shoot,"shoot E",2,1582,104,-10,25,4,4,15,21,100,13,18 -232,shoot,"shoot SE",3,1598,104,-10,25,4,4,15,21,100,13,18 -233,shoot,"shoot E",2,1614,104,-10,25,4,4,15,21,100,13,18 -234,move,"move 14 17",3,1618,100,-10,25,4,-4,15,21,100,14,17 -235,invalid,"invalid",3,1614,100,-10,25,4,-4,15,21,100,14,17 -236,move,"move 15 18",3,1619,100,-10,25,4,-4,15,21,100,15,18 -237,move,"move 15 19",3,1624,100,-10,25,4,-4,15,21,100,15,19 -238,shoot,"shoot SE",3,1640,100,-10,25,4,-4,15,21,100,15,19 -239,shoot,"shoot S",3,1653,92,-10,25,4,-4,15,21,92,15,19 -240,shoot,"shoot SE",3,1667,84,-10,25,4,-4,15,21,84,15,19 -241,shoot,"shoot SE",3,1683,84,-10,25,4,-4,15,21,84,15,19 -242,move,"move 16 19",3,1688,84,-10,25,4,-4,15,21,84,16,19 -243,move,"move 17 20",3,1693,84,-10,25,4,-4,15,21,84,17,20 -244,shoot,"shoot S",3,1709,84,-10,25,4,-4,15,21,84,17,20 -245,shoot,"shoot W",3,1722,76,-10,25,4,-4,15,21,76,17,20 -246,shoot,"shoot S",3,1738,76,-10,25,4,-4,15,21,76,17,20 -247,move,"move 18 19",3,1743,76,-10,25,4,-4,15,21,76,18,19 -248,move,"move 17 19",3,1748,76,-10,25,4,-4,15,21,76,17,19 -249,shoot,"shoot SW",3,1764,76,-10,25,4,-4,15,21,76,17,19 -250,move,"move 18 19",3,1769,76,-10,25,4,-4,15,21,76,18,19 -251,move,"move 17 19",3,1774,76,-10,25,4,-4,15,21,76,17,19 -252,shoot,"shoot SE",3,1790,76,-10,25,4,-4,15,21,76,17,19 -253,move,"move 17 18",3,1795,76,-10,25,4,-4,15,21,76,17,18 -254,shoot,"shoot SW",3,1851,76,-10,25,4,-4,15,21,76,17,18 -255,shoot,"shoot S",3,1867,76,-10,25,4,-4,15,21,76,17,18 -256,move,"move 18 17",3,1872,76,-10,25,4,-4,15,21,76,18,17 -257,move,"move 18 16",3,1877,76,-10,25,4,-4,15,21,76,18,16 -258,move,"move 18 17",3,1882,76,-10,25,4,-4,15,21,76,18,17 -259,shoot,"shoot S",3,1938,76,-10,25,4,-4,15,21,76,18,17 -260,move,"move 17 18",3,1943,76,-10,25,4,-4,15,21,76,17,18 -261,move,"move 18 18",3,1948,76,-10,25,4,-4,15,21,76,18,18 -262,move,"move 17 18",3,1953,76,-10,25,4,-4,15,21,76,17,18 -263,move,"move 18 18",3,1958,76,-10,25,4,-4,15,21,76,18,18 -264,move,"move 17 18",3,1963,76,-10,25,4,-4,15,21,76,17,18 -265,move,"move 18 18",3,1968,76,-10,25,4,-4,15,21,76,18,18 -266,move,"move 17 19",3,1973,76,-10,25,4,-4,15,21,76,17,19 -267,move,"move 17 20",3,1978,76,-10,25,4,-4,15,21,76,17,20 -268,move,"move 17 19",3,1983,76,-10,25,4,-4,15,21,76,17,19 -269,move,"move 17 20",3,1988,76,-10,25,4,-4,15,21,76,17,20 -270,move,"move 17 19",3,1993,76,-10,25,4,-4,15,21,76,17,19 -271,move,"move 17 20",3,1998,76,-10,25,4,-4,15,21,76,17,20 -272,move,"move 17 19",3,2003,76,-10,25,4,-4,15,21,76,17,19 -273,move,"move 17 20",3,2008,76,-10,25,4,-4,15,21,76,17,20 -274,move,"move 17 19",3,2013,76,-10,25,4,-4,15,21,76,17,19 -275,move,"move 18 20",3,2018,76,-10,25,4,-4,15,21,76,18,20 -276,move,"move 17 20",3,2023,76,-10,25,4,-4,15,21,76,17,20 -277,move,"move 17 19",3,2028,76,-10,25,4,-4,15,21,76,17,19 -278,move,"move 17 20",3,2033,76,-10,25,4,-4,15,21,76,17,20 -279,move,"move 18 20",3,2038,76,-10,25,4,-4,15,21,76,18,20 -280,move,"move 17 20",3,2043,76,-10,25,4,-4,15,21,76,17,20 -281,move,"move 17 19",3,2048,76,-10,25,4,-4,15,21,76,17,19 -282,move,"move 17 20",3,2053,76,-10,25,4,-4,15,21,76,17,20 -283,move,"move 17 19",3,2058,76,-10,25,4,-4,15,21,76,17,19 -284,move,"move 17 20",3,2063,76,-10,25,4,-4,15,21,76,17,20 -285,move,"move 17 19",3,2068,76,-10,25,4,-4,15,21,76,17,19 -286,move,"move 18 20",3,2073,76,-10,25,4,-4,15,21,76,18,20 -287,move,"move 17 19",3,2077,73,-10,25,4,-4,15,21,73,17,19 -288,move,"move 18 20",3,2082,73,-10,25,4,-4,15,21,73,18,20 -289,move,"move 17 19",3,2086,70,-10,25,4,-4,15,21,70,17,19 -290,move,"move 18 20",3,2091,70,-10,25,4,-4,15,21,70,18,20 -291,move,"move 17 19",3,2095,67,-10,25,4,-4,15,21,67,17,19 -292,move,"move 18 20",3,2100,67,-10,25,4,-4,15,21,67,18,20 -293,move,"move 17 19",3,2104,64,-10,25,4,-4,15,21,64,17,19 -294,move,"move 18 20",3,2109,64,-10,25,4,-4,15,21,64,18,20 -295,move,"move 17 20",3,2113,61,-10,25,4,-4,15,21,61,17,20 -296,move,"move 18 20",3,2117,58,-10,25,4,-4,15,21,58,18,20 -297,move,"move 17 20",3,2121,55,-10,25,4,-4,15,21,55,17,20 diff --git a/tests/replays/2019.08.19.21.15.02/B-init.json b/tests/replays/2019.08.19.21.15.02/B-init.json deleted file mode 100644 index 8889378..0000000 --- a/tests/replays/2019.08.19.21.15.02/B-init.json +++ /dev/null @@ -1 +0,0 @@ -{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":2,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":8,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":4},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":31,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":1,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":24,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":1,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"AIR"},{"x":13,"y":0,"type":"DIRT"},{"x":14,"y":0,"type":"DIRT"},{"x":15,"y":0,"type":"DIRT"},{"x":16,"y":0,"type":"AIR"},{"x":17,"y":0,"type":"DIRT"},{"x":18,"y":0,"type":"DIRT"},{"x":19,"y":0,"type":"DIRT"},{"x":20,"y":0,"type":"AIR"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"AIR"},{"x":10,"y":1,"type":"AIR"},{"x":11,"y":1,"type":"AIR"},{"x":12,"y":1,"type":"AIR"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"DIRT"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"AIR"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"DIRT"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"AIR"},{"x":21,"y":1,"type":"AIR"},{"x":22,"y":1,"type":"AIR"},{"x":23,"y":1,"type":"AIR"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"DIRT"},{"x":12,"y":2,"type":"DIRT"},{"x":13,"y":2,"type":"AIR"},{"x":14,"y":2,"type":"AIR"},{"x":15,"y":2,"type":"DIRT"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"DIRT"},{"x":18,"y":2,"type":"AIR"},{"x":19,"y":2,"type":"AIR"},{"x":20,"y":2,"type":"DIRT"},{"x":21,"y":2,"type":"DIRT"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"DIRT"},{"x":12,"y":3,"type":"DIRT"},{"x":13,"y":3,"type":"DIRT"},{"x":14,"y":3,"type":"AIR"},{"x":15,"y":3,"type":"AIR"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"AIR"},{"x":18,"y":3,"type":"AIR"},{"x":19,"y":3,"type":"DIRT"},{"x":20,"y":3,"type":"DIRT"},{"x":21,"y":3,"type":"DIRT"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"DIRT"},{"x":5,"y":4,"type":"DIRT"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":4},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"DIRT"},{"x":12,"y":4,"type":"DIRT"},{"x":13,"y":4,"type":"DIRT"},{"x":14,"y":4,"type":"DIRT"},{"x":15,"y":4,"type":"AIR"},{"x":16,"y":4,"type":"DIRT"},{"x":17,"y":4,"type":"AIR"},{"x":18,"y":4,"type":"DIRT"},{"x":19,"y":4,"type":"DIRT"},{"x":20,"y":4,"type":"DIRT"},{"x":21,"y":4,"type":"DIRT"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"DIRT"},{"x":28,"y":4,"type":"DIRT"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"AIR"},{"x":5,"y":5,"type":"AIR"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"DIRT"},{"x":13,"y":5,"type":"DIRT"},{"x":14,"y":5,"type":"DIRT"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"DIRT"},{"x":19,"y":5,"type":"DIRT"},{"x":20,"y":5,"type":"DIRT"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"AIR"},{"x":28,"y":5,"type":"AIR"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"DIRT"},{"x":4,"y":6,"type":"DIRT"},{"x":5,"y":6,"type":"AIR"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"DIRT"},{"x":12,"y":6,"type":"DIRT"},{"x":13,"y":6,"type":"DIRT"},{"x":14,"y":6,"type":"DIRT"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"DIRT"},{"x":19,"y":6,"type":"DIRT"},{"x":20,"y":6,"type":"DIRT"},{"x":21,"y":6,"type":"DIRT"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"AIR"},{"x":28,"y":6,"type":"DIRT"},{"x":29,"y":6,"type":"DIRT"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"AIR"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"DIRT"},{"x":5,"y":7,"type":"AIR"},{"x":6,"y":7,"type":"AIR"},{"x":7,"y":7,"type":"DIRT"},{"x":8,"y":7,"type":"DIRT"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"DIRT"},{"x":12,"y":7,"type":"DIRT"},{"x":13,"y":7,"type":"AIR"},{"x":14,"y":7,"type":"AIR"},{"x":15,"y":7,"type":"AIR"},{"x":16,"y":7,"type":"DIRT"},{"x":17,"y":7,"type":"AIR"},{"x":18,"y":7,"type":"AIR"},{"x":19,"y":7,"type":"AIR"},{"x":20,"y":7,"type":"DIRT"},{"x":21,"y":7,"type":"DIRT"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"DIRT"},{"x":25,"y":7,"type":"DIRT"},{"x":26,"y":7,"type":"AIR"},{"x":27,"y":7,"type":"AIR"},{"x":28,"y":7,"type":"DIRT"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"AIR"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"AIR"},{"x":2,"y":8,"type":"AIR"},{"x":3,"y":8,"type":"AIR"},{"x":4,"y":8,"type":"AIR"},{"x":5,"y":8,"type":"DIRT"},{"x":6,"y":8,"type":"DIRT"},{"x":7,"y":8,"type":"DIRT"},{"x":8,"y":8,"type":"DIRT"},{"x":9,"y":8,"type":"DIRT"},{"x":10,"y":8,"type":"DIRT"},{"x":11,"y":8,"type":"DIRT"},{"x":12,"y":8,"type":"DIRT"},{"x":13,"y":8,"type":"AIR"},{"x":14,"y":8,"type":"AIR"},{"x":15,"y":8,"type":"DIRT"},{"x":16,"y":8,"type":"DIRT"},{"x":17,"y":8,"type":"DIRT"},{"x":18,"y":8,"type":"AIR"},{"x":19,"y":8,"type":"AIR"},{"x":20,"y":8,"type":"DIRT"},{"x":21,"y":8,"type":"DIRT"},{"x":22,"y":8,"type":"DIRT"},{"x":23,"y":8,"type":"DIRT"},{"x":24,"y":8,"type":"DIRT"},{"x":25,"y":8,"type":"DIRT"},{"x":26,"y":8,"type":"DIRT"},{"x":27,"y":8,"type":"DIRT"},{"x":28,"y":8,"type":"AIR"},{"x":29,"y":8,"type":"AIR"},{"x":30,"y":8,"type":"AIR"},{"x":31,"y":8,"type":"AIR"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"AIR"},{"x":2,"y":9,"type":"AIR"},{"x":3,"y":9,"type":"AIR"},{"x":4,"y":9,"type":"DIRT"},{"x":5,"y":9,"type":"DIRT"},{"x":6,"y":9,"type":"DIRT"},{"x":7,"y":9,"type":"DIRT"},{"x":8,"y":9,"type":"DIRT"},{"x":9,"y":9,"type":"DIRT"},{"x":10,"y":9,"type":"DIRT"},{"x":11,"y":9,"type":"AIR"},{"x":12,"y":9,"type":"DIRT"},{"x":13,"y":9,"type":"AIR"},{"x":14,"y":9,"type":"AIR"},{"x":15,"y":9,"type":"DIRT"},{"x":16,"y":9,"type":"DIRT"},{"x":17,"y":9,"type":"DIRT"},{"x":18,"y":9,"type":"AIR"},{"x":19,"y":9,"type":"AIR"},{"x":20,"y":9,"type":"DIRT"},{"x":21,"y":9,"type":"AIR"},{"x":22,"y":9,"type":"DIRT"},{"x":23,"y":9,"type":"DIRT"},{"x":24,"y":9,"type":"DIRT"},{"x":25,"y":9,"type":"DIRT"},{"x":26,"y":9,"type":"DIRT"},{"x":27,"y":9,"type":"DIRT"},{"x":28,"y":9,"type":"DIRT"},{"x":29,"y":9,"type":"AIR"},{"x":30,"y":9,"type":"AIR"},{"x":31,"y":9,"type":"AIR"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"AIR"},{"x":2,"y":10,"type":"AIR"},{"x":3,"y":10,"type":"AIR"},{"x":4,"y":10,"type":"AIR"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"DIRT"},{"x":7,"y":10,"type":"DIRT"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"DIRT"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"AIR"},{"x":12,"y":10,"type":"DIRT"},{"x":13,"y":10,"type":"DIRT"},{"x":14,"y":10,"type":"DIRT"},{"x":15,"y":10,"type":"DIRT"},{"x":16,"y":10,"type":"AIR"},{"x":17,"y":10,"type":"DIRT"},{"x":18,"y":10,"type":"DIRT"},{"x":19,"y":10,"type":"DIRT"},{"x":20,"y":10,"type":"DIRT"},{"x":21,"y":10,"type":"AIR"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"DIRT"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"DIRT"},{"x":26,"y":10,"type":"DIRT"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"AIR"},{"x":29,"y":10,"type":"AIR"},{"x":30,"y":10,"type":"AIR"},{"x":31,"y":10,"type":"AIR"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"DIRT"},{"x":1,"y":11,"type":"DIRT"},{"x":2,"y":11,"type":"AIR"},{"x":3,"y":11,"type":"AIR"},{"x":4,"y":11,"type":"AIR"},{"x":5,"y":11,"type":"AIR"},{"x":6,"y":11,"type":"DIRT"},{"x":7,"y":11,"type":"DIRT"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"DIRT"},{"x":10,"y":11,"type":"AIR"},{"x":11,"y":11,"type":"AIR"},{"x":12,"y":11,"type":"DIRT"},{"x":13,"y":11,"type":"DIRT"},{"x":14,"y":11,"type":"DIRT"},{"x":15,"y":11,"type":"AIR"},{"x":16,"y":11,"type":"AIR"},{"x":17,"y":11,"type":"AIR"},{"x":18,"y":11,"type":"DIRT"},{"x":19,"y":11,"type":"DIRT"},{"x":20,"y":11,"type":"DIRT"},{"x":21,"y":11,"type":"AIR"},{"x":22,"y":11,"type":"AIR"},{"x":23,"y":11,"type":"DIRT"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"DIRT"},{"x":26,"y":11,"type":"DIRT"},{"x":27,"y":11,"type":"AIR"},{"x":28,"y":11,"type":"AIR"},{"x":29,"y":11,"type":"AIR"},{"x":30,"y":11,"type":"AIR"},{"x":31,"y":11,"type":"DIRT"},{"x":32,"y":11,"type":"DIRT"}],[{"x":0,"y":12,"type":"AIR"},{"x":1,"y":12,"type":"AIR"},{"x":2,"y":12,"type":"AIR"},{"x":3,"y":12,"type":"AIR"},{"x":4,"y":12,"type":"AIR"},{"x":5,"y":12,"type":"AIR"},{"x":6,"y":12,"type":"AIR"},{"x":7,"y":12,"type":"DIRT"},{"x":8,"y":12,"type":"DIRT"},{"x":9,"y":12,"type":"DIRT"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"AIR"},{"x":12,"y":12,"type":"AIR"},{"x":13,"y":12,"type":"DIRT"},{"x":14,"y":12,"type":"DIRT"},{"x":15,"y":12,"type":"AIR"},{"x":16,"y":12,"type":"AIR"},{"x":17,"y":12,"type":"AIR"},{"x":18,"y":12,"type":"DIRT"},{"x":19,"y":12,"type":"DIRT"},{"x":20,"y":12,"type":"AIR"},{"x":21,"y":12,"type":"AIR"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"DIRT"},{"x":24,"y":12,"type":"DIRT"},{"x":25,"y":12,"type":"DIRT"},{"x":26,"y":12,"type":"AIR"},{"x":27,"y":12,"type":"AIR"},{"x":28,"y":12,"type":"AIR"},{"x":29,"y":12,"type":"AIR"},{"x":30,"y":12,"type":"AIR"},{"x":31,"y":12,"type":"AIR"},{"x":32,"y":12,"type":"AIR"}],[{"x":0,"y":13,"type":"AIR"},{"x":1,"y":13,"type":"AIR"},{"x":2,"y":13,"type":"AIR"},{"x":3,"y":13,"type":"AIR"},{"x":4,"y":13,"type":"DIRT"},{"x":5,"y":13,"type":"DIRT"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"DIRT"},{"x":8,"y":13,"type":"DIRT"},{"x":9,"y":13,"type":"DIRT"},{"x":10,"y":13,"type":"DIRT"},{"x":11,"y":13,"type":"AIR"},{"x":12,"y":13,"type":"DIRT"},{"x":13,"y":13,"type":"DIRT"},{"x":14,"y":13,"type":"DIRT"},{"x":15,"y":13,"type":"AIR"},{"x":16,"y":13,"type":"AIR"},{"x":17,"y":13,"type":"AIR"},{"x":18,"y":13,"type":"DIRT"},{"x":19,"y":13,"type":"DIRT"},{"x":20,"y":13,"type":"DIRT"},{"x":21,"y":13,"type":"AIR"},{"x":22,"y":13,"type":"DIRT"},{"x":23,"y":13,"type":"DIRT"},{"x":24,"y":13,"type":"DIRT"},{"x":25,"y":13,"type":"DIRT"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"DIRT"},{"x":28,"y":13,"type":"DIRT"},{"x":29,"y":13,"type":"AIR"},{"x":30,"y":13,"type":"AIR"},{"x":31,"y":13,"type":"AIR"},{"x":32,"y":13,"type":"AIR"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"DIRT"},{"x":5,"y":14,"type":"DIRT"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"DIRT"},{"x":8,"y":14,"type":"DIRT"},{"x":9,"y":14,"type":"DIRT"},{"x":10,"y":14,"type":"AIR"},{"x":11,"y":14,"type":"AIR"},{"x":12,"y":14,"type":"AIR"},{"x":13,"y":14,"type":"DIRT"},{"x":14,"y":14,"type":"AIR"},{"x":15,"y":14,"type":"AIR"},{"x":16,"y":14,"type":"AIR"},{"x":17,"y":14,"type":"AIR"},{"x":18,"y":14,"type":"AIR"},{"x":19,"y":14,"type":"DIRT"},{"x":20,"y":14,"type":"AIR"},{"x":21,"y":14,"type":"AIR"},{"x":22,"y":14,"type":"AIR"},{"x":23,"y":14,"type":"DIRT"},{"x":24,"y":14,"type":"DIRT"},{"x":25,"y":14,"type":"DIRT"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"DIRT"},{"x":28,"y":14,"type":"DIRT"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"DIRT"},{"x":5,"y":15,"type":"DIRT"},{"x":6,"y":15,"type":"AIR"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"AIR"},{"x":9,"y":15,"type":"AIR"},{"x":10,"y":15,"type":"AIR"},{"x":11,"y":15,"type":"AIR"},{"x":12,"y":15,"type":"AIR"},{"x":13,"y":15,"type":"AIR"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"AIR"},{"x":16,"y":15,"type":"AIR"},{"x":17,"y":15,"type":"AIR"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"AIR"},{"x":20,"y":15,"type":"AIR"},{"x":21,"y":15,"type":"AIR"},{"x":22,"y":15,"type":"AIR"},{"x":23,"y":15,"type":"AIR"},{"x":24,"y":15,"type":"AIR"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"AIR"},{"x":27,"y":15,"type":"DIRT"},{"x":28,"y":15,"type":"DIRT"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":1,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"DIRT"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"AIR"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"AIR"},{"x":10,"y":16,"type":"DIRT"},{"x":11,"y":16,"type":"DIRT"},{"x":12,"y":16,"type":"DIRT"},{"x":13,"y":16,"type":"AIR"},{"x":14,"y":16,"type":"AIR"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"AIR"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"AIR"},{"x":19,"y":16,"type":"AIR"},{"x":20,"y":16,"type":"DIRT"},{"x":21,"y":16,"type":"DIRT"},{"x":22,"y":16,"type":"DIRT"},{"x":23,"y":16,"type":"AIR"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"AIR"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"DIRT"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":31,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"DIRT"},{"x":5,"y":17,"type":"DIRT"},{"x":6,"y":17,"type":"AIR"},{"x":7,"y":17,"type":"AIR"},{"x":8,"y":17,"type":"DIRT"},{"x":9,"y":17,"type":"DIRT"},{"x":10,"y":17,"type":"AIR"},{"x":11,"y":17,"type":"AIR"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"DIRT"},{"x":14,"y":17,"type":"AIR"},{"x":15,"y":17,"type":"AIR"},{"x":16,"y":17,"type":"DIRT"},{"x":17,"y":17,"type":"AIR"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"DIRT"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"AIR"},{"x":22,"y":17,"type":"AIR"},{"x":23,"y":17,"type":"DIRT"},{"x":24,"y":17,"type":"DIRT"},{"x":25,"y":17,"type":"AIR"},{"x":26,"y":17,"type":"AIR"},{"x":27,"y":17,"type":"DIRT"},{"x":28,"y":17,"type":"DIRT"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"DIRT"},{"x":5,"y":18,"type":"AIR"},{"x":6,"y":18,"type":"AIR"},{"x":7,"y":18,"type":"DIRT"},{"x":8,"y":18,"type":"DIRT"},{"x":9,"y":18,"type":"DIRT"},{"x":10,"y":18,"type":"AIR"},{"x":11,"y":18,"type":"AIR"},{"x":12,"y":18,"type":"AIR"},{"x":13,"y":18,"type":"DIRT"},{"x":14,"y":18,"type":"DIRT"},{"x":15,"y":18,"type":"AIR"},{"x":16,"y":18,"type":"DIRT"},{"x":17,"y":18,"type":"AIR"},{"x":18,"y":18,"type":"DIRT"},{"x":19,"y":18,"type":"DIRT"},{"x":20,"y":18,"type":"AIR"},{"x":21,"y":18,"type":"AIR"},{"x":22,"y":18,"type":"AIR"},{"x":23,"y":18,"type":"DIRT"},{"x":24,"y":18,"type":"DIRT"},{"x":25,"y":18,"type":"DIRT"},{"x":26,"y":18,"type":"AIR"},{"x":27,"y":18,"type":"AIR"},{"x":28,"y":18,"type":"DIRT"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"AIR"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"AIR"},{"x":3,"y":19,"type":"AIR"},{"x":4,"y":19,"type":"DIRT"},{"x":5,"y":19,"type":"DIRT"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"AIR"},{"x":8,"y":19,"type":"DIRT"},{"x":9,"y":19,"type":"AIR"},{"x":10,"y":19,"type":"AIR"},{"x":11,"y":19,"type":"AIR"},{"x":12,"y":19,"type":"DIRT"},{"x":13,"y":19,"type":"DIRT"},{"x":14,"y":19,"type":"AIR"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"AIR"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"AIR"},{"x":19,"y":19,"type":"DIRT"},{"x":20,"y":19,"type":"DIRT"},{"x":21,"y":19,"type":"AIR"},{"x":22,"y":19,"type":"AIR"},{"x":23,"y":19,"type":"AIR"},{"x":24,"y":19,"type":"DIRT"},{"x":25,"y":19,"type":"AIR"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"DIRT"},{"x":28,"y":19,"type":"DIRT"},{"x":29,"y":19,"type":"AIR"},{"x":30,"y":19,"type":"AIR"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"AIR"}],[{"x":0,"y":20,"type":"DIRT"},{"x":1,"y":20,"type":"AIR"},{"x":2,"y":20,"type":"AIR"},{"x":3,"y":20,"type":"AIR"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"DIRT"},{"x":6,"y":20,"type":"DIRT"},{"x":7,"y":20,"type":"AIR"},{"x":8,"y":20,"type":"AIR"},{"x":9,"y":20,"type":"AIR"},{"x":10,"y":20,"type":"DIRT"},{"x":11,"y":20,"type":"DIRT"},{"x":12,"y":20,"type":"DIRT"},{"x":13,"y":20,"type":"DIRT"},{"x":14,"y":20,"type":"DIRT"},{"x":15,"y":20,"type":"AIR"},{"x":16,"y":20,"type":"AIR"},{"x":17,"y":20,"type":"AIR"},{"x":18,"y":20,"type":"DIRT"},{"x":19,"y":20,"type":"DIRT"},{"x":20,"y":20,"type":"DIRT"},{"x":21,"y":20,"type":"DIRT"},{"x":22,"y":20,"type":"DIRT"},{"x":23,"y":20,"type":"AIR"},{"x":24,"y":20,"type":"AIR"},{"x":25,"y":20,"type":"AIR"},{"x":26,"y":20,"type":"DIRT"},{"x":27,"y":20,"type":"DIRT"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"AIR"},{"x":30,"y":20,"type":"AIR"},{"x":31,"y":20,"type":"AIR"},{"x":32,"y":20,"type":"DIRT"}],[{"x":0,"y":21,"type":"DIRT"},{"x":1,"y":21,"type":"AIR"},{"x":2,"y":21,"type":"AIR"},{"x":3,"y":21,"type":"AIR"},{"x":4,"y":21,"type":"AIR"},{"x":5,"y":21,"type":"DIRT"},{"x":6,"y":21,"type":"DIRT"},{"x":7,"y":21,"type":"DIRT"},{"x":8,"y":21,"type":"AIR"},{"x":9,"y":21,"type":"DIRT"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"DIRT"},{"x":12,"y":21,"type":"DIRT"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"AIR"},{"x":15,"y":21,"type":"AIR"},{"x":16,"y":21,"type":"DIRT"},{"x":17,"y":21,"type":"AIR"},{"x":18,"y":21,"type":"AIR"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"DIRT"},{"x":21,"y":21,"type":"DIRT"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"DIRT"},{"x":24,"y":21,"type":"AIR"},{"x":25,"y":21,"type":"DIRT"},{"x":26,"y":21,"type":"DIRT"},{"x":27,"y":21,"type":"DIRT"},{"x":28,"y":21,"type":"AIR"},{"x":29,"y":21,"type":"AIR"},{"x":30,"y":21,"type":"AIR"},{"x":31,"y":21,"type":"AIR"},{"x":32,"y":21,"type":"DIRT"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"AIR"},{"x":2,"y":22,"type":"AIR"},{"x":3,"y":22,"type":"DIRT"},{"x":4,"y":22,"type":"DIRT"},{"x":5,"y":22,"type":"DIRT"},{"x":6,"y":22,"type":"DIRT"},{"x":7,"y":22,"type":"DIRT"},{"x":8,"y":22,"type":"DIRT"},{"x":9,"y":22,"type":"DIRT"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"DIRT"},{"x":13,"y":22,"type":"DIRT"},{"x":14,"y":22,"type":"AIR"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"AIR"},{"x":19,"y":22,"type":"DIRT"},{"x":20,"y":22,"type":"DIRT"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"DIRT"},{"x":24,"y":22,"type":"DIRT"},{"x":25,"y":22,"type":"DIRT"},{"x":26,"y":22,"type":"DIRT"},{"x":27,"y":22,"type":"DIRT"},{"x":28,"y":22,"type":"DIRT"},{"x":29,"y":22,"type":"DIRT"},{"x":30,"y":22,"type":"AIR"},{"x":31,"y":22,"type":"AIR"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"AIR"},{"x":2,"y":23,"type":"DIRT"},{"x":3,"y":23,"type":"DIRT"},{"x":4,"y":23,"type":"DIRT"},{"x":5,"y":23,"type":"AIR"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"DIRT"},{"x":8,"y":23,"type":"DIRT"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"DIRT"},{"x":13,"y":23,"type":"AIR"},{"x":14,"y":23,"type":"AIR"},{"x":15,"y":23,"type":"DIRT"},{"x":16,"y":23,"type":"DIRT"},{"x":17,"y":23,"type":"DIRT"},{"x":18,"y":23,"type":"AIR"},{"x":19,"y":23,"type":"AIR"},{"x":20,"y":23,"type":"DIRT"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"DIRT"},{"x":25,"y":23,"type":"DIRT"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"AIR"},{"x":28,"y":23,"type":"DIRT"},{"x":29,"y":23,"type":"DIRT"},{"x":30,"y":23,"type":"DIRT"},{"x":31,"y":23,"type":"AIR"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"DIRT"},{"x":2,"y":24,"type":"DIRT"},{"x":3,"y":24,"type":"DIRT"},{"x":4,"y":24,"type":"DIRT"},{"x":5,"y":24,"type":"AIR"},{"x":6,"y":24,"type":"AIR"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"DIRT"},{"x":9,"y":24,"type":"AIR"},{"x":10,"y":24,"type":"DIRT"},{"x":11,"y":24,"type":"DIRT"},{"x":12,"y":24,"type":"DIRT"},{"x":13,"y":24,"type":"AIR"},{"x":14,"y":24,"type":"DIRT"},{"x":15,"y":24,"type":"DIRT"},{"x":16,"y":24,"type":"DIRT"},{"x":17,"y":24,"type":"DIRT"},{"x":18,"y":24,"type":"DIRT"},{"x":19,"y":24,"type":"AIR"},{"x":20,"y":24,"type":"DIRT"},{"x":21,"y":24,"type":"DIRT"},{"x":22,"y":24,"type":"DIRT"},{"x":23,"y":24,"type":"AIR"},{"x":24,"y":24,"type":"DIRT"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"AIR"},{"x":27,"y":24,"type":"AIR"},{"x":28,"y":24,"type":"DIRT"},{"x":29,"y":24,"type":"DIRT"},{"x":30,"y":24,"type":"DIRT"},{"x":31,"y":24,"type":"DIRT"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"DIRT"},{"x":3,"y":25,"type":"DIRT"},{"x":4,"y":25,"type":"DIRT"},{"x":5,"y":25,"type":"DIRT"},{"x":6,"y":25,"type":"DIRT"},{"x":7,"y":25,"type":"DIRT"},{"x":8,"y":25,"type":"DIRT"},{"x":9,"y":25,"type":"DIRT"},{"x":10,"y":25,"type":"DIRT"},{"x":11,"y":25,"type":"DIRT"},{"x":12,"y":25,"type":"DIRT"},{"x":13,"y":25,"type":"DIRT"},{"x":14,"y":25,"type":"DIRT"},{"x":15,"y":25,"type":"DIRT"},{"x":16,"y":25,"type":"AIR"},{"x":17,"y":25,"type":"DIRT"},{"x":18,"y":25,"type":"DIRT"},{"x":19,"y":25,"type":"DIRT"},{"x":20,"y":25,"type":"DIRT"},{"x":21,"y":25,"type":"DIRT"},{"x":22,"y":25,"type":"DIRT"},{"x":23,"y":25,"type":"DIRT"},{"x":24,"y":25,"type":"DIRT"},{"x":25,"y":25,"type":"DIRT"},{"x":26,"y":25,"type":"DIRT"},{"x":27,"y":25,"type":"DIRT"},{"x":28,"y":25,"type":"DIRT"},{"x":29,"y":25,"type":"DIRT"},{"x":30,"y":25,"type":"DIRT"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"DIRT"},{"x":5,"y":26,"type":"DIRT"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"AIR"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"DIRT"},{"x":14,"y":26,"type":"AIR"},{"x":15,"y":26,"type":"AIR"},{"x":16,"y":26,"type":"AIR"},{"x":17,"y":26,"type":"AIR"},{"x":18,"y":26,"type":"AIR"},{"x":19,"y":26,"type":"DIRT"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"AIR"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"DIRT"},{"x":28,"y":26,"type":"DIRT"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"DIRT"},{"x":5,"y":27,"type":"DIRT"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"DIRT"},{"x":14,"y":27,"type":"AIR"},{"x":15,"y":27,"type":"AIR"},{"x":16,"y":27,"type":"DIRT"},{"x":17,"y":27,"type":"AIR"},{"x":18,"y":27,"type":"AIR"},{"x":19,"y":27,"type":"DIRT"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"DIRT"},{"x":28,"y":27,"type":"DIRT"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"DIRT"},{"x":5,"y":28,"type":"DIRT"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":8,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"DIRT"},{"x":12,"y":28,"type":"DIRT"},{"x":13,"y":28,"type":"DIRT"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"DIRT"},{"x":16,"y":28,"type":"DIRT"},{"x":17,"y":28,"type":"DIRT"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"DIRT"},{"x":20,"y":28,"type":"DIRT"},{"x":21,"y":28,"type":"DIRT"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":24,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"DIRT"},{"x":28,"y":28,"type":"DIRT"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"AIR"},{"x":12,"y":29,"type":"DIRT"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"AIR"},{"x":15,"y":29,"type":"DIRT"},{"x":16,"y":29,"type":"AIR"},{"x":17,"y":29,"type":"DIRT"},{"x":18,"y":29,"type":"AIR"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"DIRT"},{"x":21,"y":29,"type":"AIR"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"AIR"},{"x":12,"y":30,"type":"DIRT"},{"x":13,"y":30,"type":"AIR"},{"x":14,"y":30,"type":"AIR"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"DIRT"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"AIR"},{"x":19,"y":30,"type":"AIR"},{"x":20,"y":30,"type":"DIRT"},{"x":21,"y":30,"type":"AIR"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"AIR"},{"x":9,"y":31,"type":"DIRT"},{"x":10,"y":31,"type":"AIR"},{"x":11,"y":31,"type":"AIR"},{"x":12,"y":31,"type":"AIR"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"DIRT"},{"x":16,"y":31,"type":"DIRT"},{"x":17,"y":31,"type":"DIRT"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"AIR"},{"x":21,"y":31,"type":"AIR"},{"x":22,"y":31,"type":"AIR"},{"x":23,"y":31,"type":"DIRT"},{"x":24,"y":31,"type":"AIR"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"AIR"},{"x":12,"y":32,"type":"AIR"},{"x":13,"y":32,"type":"AIR"},{"x":14,"y":32,"type":"AIR"},{"x":15,"y":32,"type":"DIRT"},{"x":16,"y":32,"type":"AIR"},{"x":17,"y":32,"type":"DIRT"},{"x":18,"y":32,"type":"AIR"},{"x":19,"y":32,"type":"AIR"},{"x":20,"y":32,"type":"AIR"},{"x":21,"y":32,"type":"AIR"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/tests/replays/2019.08.19.21.15.02/B-log.csv b/tests/replays/2019.08.19.21.15.02/B-log.csv deleted file mode 100644 index 04d9660..0000000 --- a/tests/replays/2019.08.19.21.15.02/B-log.csv +++ /dev/null @@ -1,298 +0,0 @@ -Round,LastCommandType,LastCommand,ActiveWorm,Score,Health,Worm1 Health,Worm1 x,Worm1 y,Worm2 Health,Worm2 x,Worm2 y,Worm3 Health,Worm3 x,Worm3 y -1,null,"null",1,116,350,150,8,28,100,8,4,100,31,16 -2,move,"move 9 27",1,121,350,150,9,27,100,8,4,100,31,16 -3,move,"move 9 5",2,126,350,150,9,27,100,9,5,100,31,16 -4,move,"move 30 17",3,131,350,150,9,27,100,9,5,100,30,17 -5,dig,"dig 10 26",1,138,350,150,9,27,100,9,5,100,30,17 -6,dig,"dig 10 6",2,145,350,150,9,27,100,9,5,100,30,17 -7,dig,"dig 29 17",3,152,350,150,9,27,100,9,5,100,30,17 -8,move,"move 10 26",1,157,350,150,10,26,100,9,5,100,30,17 -9,move,"move 10 6",2,162,350,150,10,26,100,10,6,100,30,17 -10,move,"move 29 17",3,167,350,150,10,26,100,10,6,100,29,17 -11,dig,"dig 11 25",1,174,350,150,10,26,100,10,6,100,29,17 -12,dig,"dig 11 7",2,181,350,150,10,26,100,10,6,100,29,17 -13,dig,"dig 28 17",3,188,350,150,10,26,100,10,6,100,29,17 -14,move,"move 11 25",1,193,350,150,11,25,100,10,6,100,29,17 -15,move,"move 11 7",2,198,350,150,11,25,100,11,7,100,29,17 -16,move,"move 28 17",3,203,350,150,11,25,100,11,7,100,28,17 -17,dig,"dig 12 24",1,210,350,150,11,25,100,11,7,100,28,17 -18,dig,"dig 12 8",2,217,350,150,11,25,100,11,7,100,28,17 -19,dig,"dig 27 17",3,224,350,150,11,25,100,11,7,100,28,17 -20,move,"move 12 24",1,229,350,150,12,24,100,11,7,100,28,17 -21,move,"move 12 8",2,234,350,150,12,24,100,12,8,100,28,17 -22,move,"move 27 17",3,239,350,150,12,24,100,12,8,100,27,17 -23,move,"move 13 23",1,244,350,150,13,23,100,12,8,100,27,17 -24,move,"move 13 9",2,249,350,150,13,23,100,13,9,100,27,17 -25,move,"move 26 17",3,254,350,150,13,23,100,13,9,100,26,17 -26,move,"move 14 22",1,259,350,150,14,22,100,13,9,100,26,17 -27,dig,"dig 14 10",2,266,350,150,14,22,100,13,9,100,26,17 -28,move,"move 25 17",3,271,350,150,14,22,100,13,9,100,25,17 -29,move,"move 15 21",1,276,350,150,15,21,100,13,9,100,25,17 -30,move,"move 14 10",2,281,350,150,15,21,100,14,10,100,25,17 -31,dig,"dig 24 17",3,288,350,150,15,21,100,14,10,100,25,17 -32,move,"move 16 20",1,293,350,150,16,20,100,14,10,100,25,17 -33,dig,"dig 14 11",2,300,350,150,16,20,100,14,10,100,25,17 -34,move,"move 24 17",3,305,350,150,16,20,100,14,10,100,24,17 -35,move,"move 17 19",1,310,350,150,17,19,100,14,10,100,24,17 -36,move,"move 14 11",2,315,350,150,17,19,100,14,11,100,24,17 -37,dig,"dig 23 17",3,322,350,150,17,19,100,14,11,100,24,17 -38,dig,"dig 18 18",1,329,350,150,17,19,100,14,11,100,24,17 -39,dig,"dig 14 12",2,336,350,150,17,19,100,14,11,100,24,17 -40,move,"move 23 17",3,341,350,150,17,19,100,14,11,100,23,17 -41,move,"move 18 18",1,346,350,150,18,18,100,14,11,100,23,17 -42,move,"move 14 12",2,351,350,150,18,18,100,14,12,100,23,17 -43,move,"move 22 17",3,356,350,150,18,18,100,14,12,100,22,17 -44,move,"move 18 17",1,365,360,160,18,17,100,14,12,100,22,17 -45,dig,"dig 14 13",2,372,360,160,18,17,100,14,12,100,22,17 -46,dig,"dig 21 16",3,379,360,160,18,17,100,14,12,100,22,17 -47,move,"move 17 16",1,384,360,160,17,16,100,14,12,100,22,17 -48,move,"move 14 13",2,389,360,160,17,16,100,14,13,100,22,17 -49,move,"move 21 16",3,394,360,160,17,16,100,14,13,100,21,16 -50,move,"move 16 15",1,399,360,160,16,15,100,14,13,100,21,16 -51,move,"move 14 14",2,404,360,160,16,15,100,14,14,100,21,16 -52,move,"move 20 15",3,409,360,160,16,15,100,14,14,100,20,15 -53,move,"move 15 15",1,414,360,160,15,15,100,14,14,100,20,15 -54,move,"move 14 15",2,422,370,160,15,15,110,14,15,100,20,15 -55,move,"move 21 14",3,427,370,160,15,15,110,14,15,100,21,14 -56,move,"move 16 14",1,432,370,160,16,14,110,14,15,100,21,14 -57,move,"move 15 14",2,437,370,160,16,14,110,15,14,100,21,14 -58,dig,"dig 22 13",3,444,370,160,16,14,110,15,14,100,21,14 -59,move,"move 17 13",1,449,370,160,17,13,110,15,14,100,21,14 -60,move,"move 16 13",2,454,370,160,17,13,110,16,13,100,21,14 -61,move,"move 22 13",3,459,370,160,17,13,110,16,13,100,22,13 -62,dig,"dig 18 12",1,466,370,160,17,13,110,16,13,100,22,13 -63,move,"move 17 12",2,471,370,160,17,13,110,17,12,100,22,13 -64,dig,"dig 23 12",3,478,370,160,17,13,110,17,12,100,22,13 -65,move,"move 18 12",1,483,370,160,18,12,110,17,12,100,22,13 -66,dig,"dig 18 11",2,490,370,160,18,12,110,17,12,100,22,13 -67,move,"move 23 12",3,495,370,160,18,12,110,17,12,100,23,12 -68,dig,"dig 19 11",1,502,370,160,18,12,110,17,12,100,23,12 -69,move,"move 18 11",2,507,370,160,18,12,110,18,11,100,23,12 -70,dig,"dig 23 11",3,514,370,160,18,12,110,18,11,100,23,12 -71,move,"move 19 11",1,519,370,160,19,11,110,18,11,100,23,12 -72,dig,"dig 19 10",2,526,370,160,19,11,110,18,11,100,23,12 -73,move,"move 24 11",3,531,370,160,19,11,110,18,11,100,24,11 -74,dig,"dig 20 10",1,538,370,160,19,11,110,18,11,100,24,11 -75,move,"move 19 10",2,543,370,160,19,11,110,19,10,100,24,11 -76,dig,"dig 23 10",3,550,370,160,19,11,110,19,10,100,24,11 -77,move,"move 20 10",1,555,370,160,20,10,110,19,10,100,24,11 -78,dig,"dig 20 9",2,562,370,160,20,10,110,19,10,100,24,11 -79,move,"move 24 10",3,567,370,160,20,10,110,19,10,100,24,10 -80,move,"move 21 9",1,572,370,160,21,9,110,19,10,100,24,10 -81,move,"move 20 9",2,577,370,160,21,9,110,20,9,100,24,10 -82,dig,"dig 25 9",3,584,370,160,21,9,110,20,9,100,24,10 -83,dig,"dig 22 8",1,591,370,160,21,9,110,20,9,100,24,10 -84,dig,"dig 21 8",2,598,370,160,21,9,110,20,9,100,24,10 -85,move,"move 25 9",3,603,370,160,21,9,110,20,9,100,25,9 -86,move,"move 22 8",1,608,370,160,22,8,110,20,9,100,25,9 -87,move,"move 21 8",2,613,370,160,22,8,110,21,8,100,25,9 -88,dig,"dig 25 8",3,620,370,160,22,8,110,21,8,100,25,9 -89,move,"move 23 7",1,625,370,160,23,7,110,21,8,100,25,9 -90,move,"move 22 7",2,630,370,160,23,7,110,22,7,100,25,9 -91,move,"move 25 8",3,635,370,160,23,7,110,22,7,100,25,8 -92,dig,"dig 24 6",1,642,370,160,23,7,110,22,7,100,25,8 -93,banana,"banana 24 3",2,703,370,160,23,7,110,22,7,100,25,8 -94,dig,"dig 24 7",3,710,370,160,23,7,110,22,7,100,25,8 -95,move,"move 24 6",1,715,370,160,24,6,110,22,7,100,25,8 -96,banana,"banana 23 4",2,783,370,160,24,6,110,22,7,100,25,8 -97,snowball,"snowball 23 4",3,800,370,160,24,6,110,22,7,100,25,8 -98,move,"move 23 5",1,805,370,160,23,5,110,22,7,100,25,8 -99,banana,"banana 23 4",2,815,357,147,23,5,110,22,7,100,25,8 -100,shoot,"shoot N",1,831,357,147,23,5,110,22,7,100,25,8 -101,shoot,"shoot N",1,847,357,147,23,5,110,22,7,100,25,8 -102,shoot,"shoot N",1,860,349,139,23,5,110,22,7,100,25,8 -103,shoot,"shoot N",1,873,341,131,23,5,110,22,7,100,25,8 -104,shoot,"shoot N",1,889,341,131,23,5,110,22,7,100,25,8 -105,move,"move 23 6",2,894,341,131,23,5,110,23,6,100,25,8 -106,snowball,"snowball 23 4",3,894,341,131,23,5,110,23,6,100,25,8 -107,move,"move 24 4",1,894,341,131,23,5,110,23,6,100,25,8 -108,move,"move 24 5",2,899,341,131,23,5,110,24,5,100,25,8 -109,move,"move 24 7",3,904,341,131,23,5,110,24,5,100,24,7 -110,move,"move 24 4",1,904,341,131,23,5,110,24,5,100,24,7 -111,shoot,"shoot N",2,920,341,131,23,5,110,24,5,100,24,7 -112,snowball,"snowball 24 3",3,937,341,131,23,5,110,24,5,100,24,7 -113,move,"move 24 4",1,942,341,131,24,4,110,24,5,100,24,7 -114,shoot,"shoot NE",2,958,341,131,24,4,110,24,5,100,24,7 -115,dig,"dig 25 6",3,965,341,131,24,4,110,24,5,100,24,7 -116,shoot,"shoot E",1,981,341,131,24,4,110,24,5,100,24,7 -117,shoot,"shoot NE",2,997,341,131,24,4,110,24,5,100,24,7 -118,move,"move 25 6",3,1000,333,123,24,4,110,24,5,100,25,6 -119,shoot,"shoot E",1,1016,333,123,24,4,110,24,5,100,25,6 -120,shoot,"shoot NE",2,1072,333,123,24,4,110,24,5,100,25,6 -121,move,"move 24 7",3,1077,333,123,24,4,110,24,5,100,24,7 -122,nothing,"nothing "Player chose to do nothing"",1,1077,333,123,24,4,110,24,5,100,24,7 -123,move,"move 24 6",2,1082,333,123,24,4,110,24,6,100,24,7 -124,dig,"dig 24 8",3,1089,333,123,24,4,110,24,6,100,24,7 -125,move,"move 24 5",1,1094,333,123,24,5,110,24,6,100,24,7 -126,move,"move 23 7",2,1099,333,123,24,5,110,23,7,100,24,7 -127,dig,"dig 23 8",3,1106,333,123,24,5,110,23,7,100,24,7 -128,move,"move 23 6",1,1111,333,123,23,6,110,23,7,100,24,7 -129,move,"move 22 8",2,1116,333,123,23,6,110,22,8,100,24,7 -130,move,"move 23 8",3,1121,333,123,23,6,110,22,8,100,23,8 -131,move,"move 23 7",1,1126,333,123,23,7,110,22,8,100,23,8 -132,dig,"dig 22 9",2,1133,333,123,23,7,110,22,8,100,23,8 -133,move,"move 22 9",3,1138,333,123,23,7,110,22,8,100,22,9 -134,move,"move 22 7",1,1143,333,123,22,7,110,22,8,100,22,9 -135,move,"move 21 9",2,1148,333,123,22,7,110,21,9,100,22,9 -136,move,"move 21 10",3,1153,333,123,22,7,110,21,9,100,21,10 -137,move,"move 21 8",1,1158,333,123,21,8,110,21,9,100,21,10 -138,invalid,"invalid",2,1154,333,123,21,8,110,21,9,100,21,10 -139,move,"move 21 11",3,1159,333,123,21,8,110,21,9,100,21,11 -140,move,"move 22 9",1,1164,333,123,22,9,110,21,9,100,21,11 -141,dig,"dig 22 10",2,1171,333,123,22,9,110,21,9,100,21,11 -142,move,"move 22 12",3,1176,333,123,22,9,110,21,9,100,22,12 -143,move,"move 23 10",1,1181,333,123,23,10,110,21,9,100,22,12 -144,move,"move 22 10",2,1186,333,123,23,10,110,22,10,100,22,12 -145,dig,"dig 23 13",3,1193,333,123,23,10,110,22,10,100,22,12 -146,move,"move 23 11",1,1198,333,123,23,11,110,22,10,100,22,12 -147,move,"move 21 9",2,1203,333,123,23,11,110,21,9,100,22,12 -148,move,"move 23 13",3,1208,333,123,23,11,110,21,9,100,23,13 -149,move,"move 23 12",1,1213,333,123,23,12,110,21,9,100,23,13 -150,move,"move 22 10",2,1218,333,123,23,12,110,22,10,100,23,13 -151,dig,"dig 23 14",3,1225,333,123,23,12,110,22,10,100,23,13 -152,move,"move 22 13",1,1230,333,123,22,13,110,22,10,100,23,13 -153,move,"move 23 11",2,1235,333,123,22,13,110,23,11,100,23,13 -154,move,"move 23 14",3,1240,333,123,22,13,110,23,11,100,23,14 -155,move,"move 23 13",1,1245,333,123,23,13,110,23,11,100,23,14 -156,move,"move 23 12",2,1250,333,123,23,13,110,23,12,100,23,14 -157,move,"move 23 15",3,1255,333,123,23,13,110,23,12,100,23,15 -158,move,"move 23 14",1,1260,333,123,23,14,110,23,12,100,23,15 -159,move,"move 23 13",2,1265,333,123,23,14,110,23,13,100,23,15 -160,move,"move 24 16",3,1270,333,123,23,14,110,23,13,100,24,16 -161,move,"move 24 15",1,1275,333,123,24,15,110,23,13,100,24,16 -162,move,"move 23 14",2,1280,333,123,24,15,110,23,14,100,24,16 -163,move,"move 23 17",3,1285,333,123,24,15,110,23,14,100,23,17 -164,move,"move 23 16",1,1290,333,123,23,16,110,23,14,100,23,17 -165,move,"move 23 15",2,1292,326,123,23,16,110,23,15,93,23,17 -166,move,"move 23 18",3,1297,326,123,23,16,110,23,15,93,23,18 -167,move,"move 23 17",1,1296,306,116,23,17,110,23,15,80,23,18 -168,move,"move 23 16",2,1301,306,116,23,17,110,23,16,80,23,18 -169,move,"move 23 19",3,1297,279,109,23,17,110,23,16,60,23,19 -170,move,"move 23 18",1,1302,279,109,23,18,110,23,16,60,23,19 -171,move,"move 23 17",2,1307,279,109,23,18,110,23,17,60,23,19 -172,move,"move 23 20",3,1312,279,109,23,18,110,23,17,60,23,20 -173,move,"move 23 19",1,1317,279,109,23,19,110,23,17,60,23,20 -174,move,"move 22 18",2,1322,279,109,23,19,110,22,18,60,23,20 -175,dig,"dig 22 21",3,1329,279,109,23,19,110,22,18,60,23,20 -176,move,"move 22 20",1,1334,279,109,22,20,110,22,18,60,23,20 -177,move,"move 22 19",2,1339,279,109,22,20,110,22,19,60,23,20 -178,move,"move 22 21",3,1344,279,109,22,20,110,22,19,60,22,21 -179,invalid,"invalid",1,1340,279,109,22,20,110,22,19,60,22,21 -180,dig,"dig 21 20",2,1347,279,109,22,20,110,22,19,60,22,21 -181,dig,"dig 21 22",3,1354,279,109,22,20,110,22,19,60,22,21 -182,dig,"dig 21 21",1,1361,279,109,22,20,110,22,19,60,22,21 -183,move,"move 21 20",2,1366,279,109,22,20,110,21,20,60,22,21 -184,move,"move 21 22",3,1371,279,109,22,20,110,21,20,60,21,22 -185,move,"move 21 21",1,1376,279,109,21,21,110,21,20,60,21,22 -186,dig,"dig 20 21",2,1383,279,109,21,21,110,21,20,60,21,22 -187,dig,"dig 20 23",3,1390,279,109,21,21,110,21,20,60,21,22 -188,dig,"dig 20 22",1,1397,279,109,21,21,110,21,20,60,21,22 -189,move,"move 20 21",2,1399,271,109,21,21,110,20,21,52,21,22 -190,shoot,"shoot SW",3,1415,271,109,21,21,110,20,21,52,21,22 -191,move,"move 20 22",1,1417,263,109,20,22,110,20,21,44,21,22 -192,dig,"dig 19 22",2,1424,263,109,20,22,110,20,21,44,21,22 -193,shoot,"shoot SW",3,1438,255,109,20,22,110,20,21,36,21,22 -194,move,"move 19 23",1,1443,255,109,19,23,110,20,21,36,21,22 -195,move,"move 19 22",2,1448,255,109,19,23,110,19,22,36,21,22 -196,move,"move 20 23",3,1453,255,109,19,23,110,19,22,36,20,23 -197,shoot,"shoot W",1,1466,247,109,19,23,102,19,22,36,20,23 -198,shoot,"shoot SW",2,1482,247,109,19,23,102,19,22,36,20,23 -199,invalid,"invalid",3,1475,239,101,19,23,102,19,22,36,20,23 -200,shoot,"shoot W",1,1491,239,101,19,23,102,19,22,36,20,23 -201,shoot,"shoot SW",2,1493,239,101,19,23,102,19,22,36,20,23 -202,move,"move 19 24",3,1498,239,101,19,23,102,19,22,36,19,24 -203,move,"move 18 22",1,1501,231,93,18,22,102,19,22,36,19,24 -204,dig,"dig 19 21",2,1508,231,93,18,22,102,19,22,36,19,24 -205,shoot,"shoot NW",3,1510,231,93,18,22,102,19,22,36,19,24 -206,shoot,"shoot W",1,1526,231,93,18,22,102,19,22,36,19,24 -207,move,"move 18 23",2,1528,223,85,18,22,102,18,23,36,19,24 -208,dig,"dig 18 25",3,1535,223,85,18,22,102,18,23,36,19,24 -209,shoot,"shoot W",1,1548,215,77,18,22,102,18,23,36,19,24 -210,move,"move 17 22",2,1553,215,77,18,22,102,17,22,36,19,24 -211,move,"move 18 23",3,1556,207,77,18,22,94,17,22,36,18,23 -212,move,"move 17 21",1,1561,207,77,17,21,94,17,22,36,18,23 -213,shoot,"shoot W",2,1574,199,69,17,21,94,17,22,36,18,23 -214,move,"move 19 23",3,1579,199,69,17,21,94,17,22,36,19,23 -215,shoot,"shoot SW",1,1576,191,69,17,21,86,17,22,36,19,23 -216,shoot,"shoot W",2,1592,191,69,17,21,86,17,22,36,19,23 -217,move,"move 18 22",3,1595,183,69,17,21,78,17,22,36,18,22 -218,shoot,"shoot SW",1,1595,183,69,17,21,78,17,22,36,18,22 -219,shoot,"shoot W",2,1608,175,69,17,21,70,17,22,36,18,22 -220,invalid,"invalid",3,1604,175,69,17,21,70,17,22,36,18,22 -221,shoot,"shoot SW",1,1604,175,69,17,21,70,17,22,36,18,22 -222,dig,"dig 16 21",2,1611,175,69,17,21,70,17,22,36,18,22 -223,move,"move 18 23",3,1613,167,61,17,21,70,17,22,36,18,23 -224,shoot,"shoot W",1,1613,167,61,17,21,70,17,22,36,18,23 -225,move,"move 16 21",2,1616,159,61,17,21,62,16,21,36,18,23 -226,move,"move 17 22",3,1621,159,61,17,21,62,16,21,36,17,22 -227,move,"move 18 21",1,1623,151,61,18,21,54,16,21,36,17,22 -228,shoot,"shoot W",2,1639,151,61,18,21,54,16,21,36,17,22 -229,dig,"dig 17 23",3,1643,143,61,18,21,46,16,21,36,17,22 -230,move,"move 17 21",1,1646,135,61,17,21,38,16,21,36,17,22 -231,shoot,"shoot W",2,1659,127,61,17,21,30,16,21,36,17,22 -232,invalid,"invalid",3,1652,119,61,17,21,22,16,21,36,17,22 -233,move,"move 18 22",1,1655,111,61,18,22,14,16,21,36,17,22 -234,shoot,"shoot W",2,1711,111,61,18,22,14,16,21,36,17,22 -235,move,"move 17 23",3,1716,111,61,18,22,14,16,21,36,17,23 -236,move,"move 17 21",1,1721,111,61,17,21,14,16,21,36,17,23 -237,move,"move 15 20",2,1726,111,61,17,21,14,15,20,36,17,23 -238,move,"move 16 22",3,1728,103,53,17,21,14,15,20,36,16,22 -239,shoot,"shoot NW",1,1741,95,53,17,21,6,15,20,36,16,22 -240,shoot,"shoot N",2,1755,87,45,17,21,6,15,20,36,16,22 -241,move,"move 15 21",3,1757,79,37,17,21,6,15,20,36,15,21 -242,shoot,"shoot NW",1,1759,79,37,17,21,6,15,20,36,15,21 -243,shoot,"shoot NE",2,1761,79,37,17,21,6,15,20,36,15,21 -244,move,"move 16 20",3,1763,71,29,17,21,6,15,20,36,16,20 -245,shoot,"shoot N",1,1777,63,29,17,21,6,15,20,28,16,20 -246,move,"move 15 21",2,1779,55,21,17,21,6,15,21,28,16,20 -247,shoot,"shoot E",3,1781,55,21,17,21,6,15,21,28,16,20 -248,dig,"dig 18 20",1,1788,55,21,17,21,6,15,21,28,16,20 -249,dig,"dig 14 20",2,1792,47,21,17,21,6,15,21,20,16,20 -250,shoot,"shoot NE",3,1794,47,21,17,21,6,15,21,20,16,20 -251,move,"move 18 20",1,1799,47,21,18,20,6,15,21,20,16,20 -252,move,"move 14 21",2,1802,39,13,18,20,6,14,21,20,16,20 -253,shoot,"shoot NE",3,1804,39,13,18,20,6,14,21,20,16,20 -254,move,"move 17 19",1,1807,33,13,17,19,-2,14,21,20,16,20 -255,move,"move 16 21",3,1809,25,5,17,19,-2,14,21,20,16,21 -256,shoot,"shoot N",1,1811,25,5,17,19,-2,14,21,20,16,21 -257,move,"move 17 20",3,1816,25,5,17,19,-2,14,21,20,17,20 -258,move,"move 18 18",1,1821,25,5,18,18,-2,14,21,20,17,20 -259,move,"move 18 19",3,1824,20,-3,18,18,-2,14,21,20,18,19 -260,shoot,"shoot N",3,1826,20,-3,18,18,-2,14,21,20,18,19 -261,shoot,"shoot NW",3,1828,20,-3,18,18,-2,14,21,20,18,19 -262,shoot,"shoot N",3,1830,20,-3,18,18,-2,14,21,20,18,19 -263,shoot,"shoot NW",3,1832,20,-3,18,18,-2,14,21,20,18,19 -264,shoot,"shoot N",3,1834,20,-3,18,18,-2,14,21,20,18,19 -265,shoot,"shoot NW",3,1836,20,-3,18,18,-2,14,21,20,18,19 -266,shoot,"shoot N",3,1838,20,-3,18,18,-2,14,21,20,18,19 -267,shoot,"shoot W",3,1840,20,-3,18,18,-2,14,21,20,18,19 -268,shoot,"shoot SW",3,1842,20,-3,18,18,-2,14,21,20,18,19 -269,shoot,"shoot W",3,1844,20,-3,18,18,-2,14,21,20,18,19 -270,shoot,"shoot SW",3,1846,20,-3,18,18,-2,14,21,20,18,19 -271,shoot,"shoot W",3,1848,20,-3,18,18,-2,14,21,20,18,19 -272,shoot,"shoot SW",3,1850,20,-3,18,18,-2,14,21,20,18,19 -273,shoot,"shoot W",3,1852,20,-3,18,18,-2,14,21,20,18,19 -274,shoot,"shoot SW",3,1854,20,-3,18,18,-2,14,21,20,18,19 -275,shoot,"shoot W",3,1856,20,-3,18,18,-2,14,21,20,18,19 -276,shoot,"shoot S",3,1858,20,-3,18,18,-2,14,21,20,18,19 -277,shoot,"shoot SW",3,1860,20,-3,18,18,-2,14,21,20,18,19 -278,shoot,"shoot W",3,1862,20,-3,18,18,-2,14,21,20,18,19 -279,shoot,"shoot SW",3,1864,20,-3,18,18,-2,14,21,20,18,19 -280,shoot,"shoot S",3,1866,20,-3,18,18,-2,14,21,20,18,19 -281,shoot,"shoot SW",3,1868,20,-3,18,18,-2,14,21,20,18,19 -282,shoot,"shoot W",3,1870,20,-3,18,18,-2,14,21,20,18,19 -283,shoot,"shoot SW",3,1872,20,-3,18,18,-2,14,21,20,18,19 -284,shoot,"shoot W",3,1874,20,-3,18,18,-2,14,21,20,18,19 -285,shoot,"shoot SW",3,1876,20,-3,18,18,-2,14,21,20,18,19 -286,shoot,"shoot W",3,1878,20,-3,18,18,-2,14,21,20,18,19 -287,shoot,"shoot S",3,1880,20,-3,18,18,-2,14,21,20,18,19 -288,shoot,"shoot W",3,1882,20,-3,18,18,-2,14,21,20,18,19 -289,shoot,"shoot S",3,1884,20,-3,18,18,-2,14,21,20,18,19 -290,shoot,"shoot W",3,1886,20,-3,18,18,-2,14,21,20,18,19 -291,shoot,"shoot S",3,1888,20,-3,18,18,-2,14,21,20,18,19 -292,shoot,"shoot W",3,1890,20,-3,18,18,-2,14,21,20,18,19 -293,shoot,"shoot S",3,1892,20,-3,18,18,-2,14,21,20,18,19 -294,shoot,"shoot W",3,1894,20,-3,18,18,-2,14,21,20,18,19 -295,shoot,"shoot S",3,1895,17,-3,18,18,-2,14,21,17,18,19 -296,shoot,"shoot SW",3,1896,14,-3,18,18,-2,14,21,14,18,19 -297,shoot,"shoot S",3,1897,11,-3,18,18,-2,14,21,11,18,19 diff --git a/tests/replays/2019.08.19.21.31.16/A-init.json b/tests/replays/2019.08.19.21.31.16/A-init.json deleted file mode 100644 index 31546d4..0000000 --- a/tests/replays/2019.08.19.21.31.16/A-init.json +++ /dev/null @@ -1 +0,0 @@ -{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":1,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":2,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"DIRT"},{"x":13,"y":0,"type":"DIRT"},{"x":14,"y":0,"type":"AIR"},{"x":15,"y":0,"type":"AIR"},{"x":16,"y":0,"type":"DIRT"},{"x":17,"y":0,"type":"AIR"},{"x":18,"y":0,"type":"AIR"},{"x":19,"y":0,"type":"DIRT"},{"x":20,"y":0,"type":"DIRT"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"DIRT"},{"x":10,"y":1,"type":"DIRT"},{"x":11,"y":1,"type":"DIRT"},{"x":12,"y":1,"type":"DIRT"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"AIR"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"DIRT"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"AIR"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"DIRT"},{"x":21,"y":1,"type":"DIRT"},{"x":22,"y":1,"type":"DIRT"},{"x":23,"y":1,"type":"DIRT"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"DIRT"},{"x":12,"y":2,"type":"DIRT"},{"x":13,"y":2,"type":"DIRT"},{"x":14,"y":2,"type":"DIRT"},{"x":15,"y":2,"type":"AIR"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"AIR"},{"x":18,"y":2,"type":"DIRT"},{"x":19,"y":2,"type":"DIRT"},{"x":20,"y":2,"type":"DIRT"},{"x":21,"y":2,"type":"DIRT"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"DIRT"},{"x":12,"y":3,"type":"AIR"},{"x":13,"y":3,"type":"DIRT"},{"x":14,"y":3,"type":"DIRT"},{"x":15,"y":3,"type":"AIR"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"AIR"},{"x":18,"y":3,"type":"DIRT"},{"x":19,"y":3,"type":"DIRT"},{"x":20,"y":3,"type":"AIR"},{"x":21,"y":3,"type":"DIRT"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"AIR"},{"x":5,"y":4,"type":"AIR"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"AIR"},{"x":12,"y":4,"type":"AIR"},{"x":13,"y":4,"type":"AIR"},{"x":14,"y":4,"type":"AIR"},{"x":15,"y":4,"type":"AIR"},{"x":16,"y":4,"type":"AIR"},{"x":17,"y":4,"type":"AIR"},{"x":18,"y":4,"type":"AIR"},{"x":19,"y":4,"type":"AIR"},{"x":20,"y":4,"type":"AIR"},{"x":21,"y":4,"type":"AIR"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"AIR"},{"x":28,"y":4,"type":"AIR"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"AIR"},{"x":5,"y":5,"type":"AIR"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"AIR"},{"x":13,"y":5,"type":"AIR"},{"x":14,"y":5,"type":"AIR"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"AIR"},{"x":19,"y":5,"type":"AIR"},{"x":20,"y":5,"type":"AIR"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"AIR"},{"x":28,"y":5,"type":"AIR"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"AIR"},{"x":4,"y":6,"type":"AIR"},{"x":5,"y":6,"type":"AIR"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"DIRT"},{"x":12,"y":6,"type":"AIR"},{"x":13,"y":6,"type":"AIR"},{"x":14,"y":6,"type":"AIR"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"AIR"},{"x":19,"y":6,"type":"AIR"},{"x":20,"y":6,"type":"AIR"},{"x":21,"y":6,"type":"DIRT"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"AIR"},{"x":28,"y":6,"type":"AIR"},{"x":29,"y":6,"type":"AIR"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"AIR"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"AIR"},{"x":5,"y":7,"type":"DIRT"},{"x":6,"y":7,"type":"AIR"},{"x":7,"y":7,"type":"AIR"},{"x":8,"y":7,"type":"AIR"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"AIR"},{"x":12,"y":7,"type":"AIR"},{"x":13,"y":7,"type":"DIRT"},{"x":14,"y":7,"type":"AIR"},{"x":15,"y":7,"type":"AIR"},{"x":16,"y":7,"type":"AIR"},{"x":17,"y":7,"type":"AIR"},{"x":18,"y":7,"type":"AIR"},{"x":19,"y":7,"type":"DIRT"},{"x":20,"y":7,"type":"AIR"},{"x":21,"y":7,"type":"AIR"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"AIR"},{"x":25,"y":7,"type":"AIR"},{"x":26,"y":7,"type":"AIR"},{"x":27,"y":7,"type":"DIRT"},{"x":28,"y":7,"type":"AIR"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"AIR"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"AIR"},{"x":2,"y":8,"type":"AIR"},{"x":3,"y":8,"type":"DIRT"},{"x":4,"y":8,"type":"DIRT"},{"x":5,"y":8,"type":"DIRT"},{"x":6,"y":8,"type":"AIR"},{"x":7,"y":8,"type":"AIR"},{"x":8,"y":8,"type":"AIR"},{"x":9,"y":8,"type":"AIR"},{"x":10,"y":8,"type":"AIR"},{"x":11,"y":8,"type":"AIR"},{"x":12,"y":8,"type":"AIR"},{"x":13,"y":8,"type":"DIRT"},{"x":14,"y":8,"type":"AIR"},{"x":15,"y":8,"type":"AIR"},{"x":16,"y":8,"type":"AIR"},{"x":17,"y":8,"type":"AIR"},{"x":18,"y":8,"type":"AIR"},{"x":19,"y":8,"type":"DIRT"},{"x":20,"y":8,"type":"AIR"},{"x":21,"y":8,"type":"AIR"},{"x":22,"y":8,"type":"AIR"},{"x":23,"y":8,"type":"AIR"},{"x":24,"y":8,"type":"AIR"},{"x":25,"y":8,"type":"AIR"},{"x":26,"y":8,"type":"AIR"},{"x":27,"y":8,"type":"DIRT"},{"x":28,"y":8,"type":"DIRT"},{"x":29,"y":8,"type":"DIRT"},{"x":30,"y":8,"type":"AIR"},{"x":31,"y":8,"type":"AIR"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"DIRT"},{"x":2,"y":9,"type":"AIR"},{"x":3,"y":9,"type":"DIRT"},{"x":4,"y":9,"type":"DIRT"},{"x":5,"y":9,"type":"AIR"},{"x":6,"y":9,"type":"AIR"},{"x":7,"y":9,"type":"DIRT"},{"x":8,"y":9,"type":"AIR"},{"x":9,"y":9,"type":"AIR"},{"x":10,"y":9,"type":"DIRT"},{"x":11,"y":9,"type":"AIR"},{"x":12,"y":9,"type":"DIRT"},{"x":13,"y":9,"type":"DIRT"},{"x":14,"y":9,"type":"AIR"},{"x":15,"y":9,"type":"DIRT"},{"x":16,"y":9,"type":"AIR"},{"x":17,"y":9,"type":"DIRT"},{"x":18,"y":9,"type":"AIR"},{"x":19,"y":9,"type":"DIRT"},{"x":20,"y":9,"type":"DIRT"},{"x":21,"y":9,"type":"AIR"},{"x":22,"y":9,"type":"DIRT"},{"x":23,"y":9,"type":"AIR"},{"x":24,"y":9,"type":"AIR"},{"x":25,"y":9,"type":"DIRT"},{"x":26,"y":9,"type":"AIR"},{"x":27,"y":9,"type":"AIR"},{"x":28,"y":9,"type":"DIRT"},{"x":29,"y":9,"type":"DIRT"},{"x":30,"y":9,"type":"AIR"},{"x":31,"y":9,"type":"DIRT"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"DIRT"},{"x":2,"y":10,"type":"AIR"},{"x":3,"y":10,"type":"AIR"},{"x":4,"y":10,"type":"DIRT"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"DIRT"},{"x":7,"y":10,"type":"DIRT"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"AIR"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"DIRT"},{"x":12,"y":10,"type":"DIRT"},{"x":13,"y":10,"type":"DIRT"},{"x":14,"y":10,"type":"AIR"},{"x":15,"y":10,"type":"AIR"},{"x":16,"y":10,"type":"AIR"},{"x":17,"y":10,"type":"AIR"},{"x":18,"y":10,"type":"AIR"},{"x":19,"y":10,"type":"DIRT"},{"x":20,"y":10,"type":"DIRT"},{"x":21,"y":10,"type":"DIRT"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"AIR"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"DIRT"},{"x":26,"y":10,"type":"DIRT"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"DIRT"},{"x":29,"y":10,"type":"AIR"},{"x":30,"y":10,"type":"AIR"},{"x":31,"y":10,"type":"DIRT"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"DIRT"},{"x":1,"y":11,"type":"DIRT"},{"x":2,"y":11,"type":"DIRT"},{"x":3,"y":11,"type":"AIR"},{"x":4,"y":11,"type":"AIR"},{"x":5,"y":11,"type":"AIR"},{"x":6,"y":11,"type":"AIR"},{"x":7,"y":11,"type":"AIR"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"AIR"},{"x":10,"y":11,"type":"AIR"},{"x":11,"y":11,"type":"AIR"},{"x":12,"y":11,"type":"AIR"},{"x":13,"y":11,"type":"DIRT"},{"x":14,"y":11,"type":"AIR"},{"x":15,"y":11,"type":"DIRT"},{"x":16,"y":11,"type":"DIRT"},{"x":17,"y":11,"type":"DIRT"},{"x":18,"y":11,"type":"AIR"},{"x":19,"y":11,"type":"DIRT"},{"x":20,"y":11,"type":"AIR"},{"x":21,"y":11,"type":"AIR"},{"x":22,"y":11,"type":"AIR"},{"x":23,"y":11,"type":"AIR"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"AIR"},{"x":26,"y":11,"type":"AIR"},{"x":27,"y":11,"type":"AIR"},{"x":28,"y":11,"type":"AIR"},{"x":29,"y":11,"type":"AIR"},{"x":30,"y":11,"type":"DIRT"},{"x":31,"y":11,"type":"DIRT"},{"x":32,"y":11,"type":"DIRT"}],[{"x":0,"y":12,"type":"DIRT"},{"x":1,"y":12,"type":"DIRT"},{"x":2,"y":12,"type":"DIRT"},{"x":3,"y":12,"type":"DIRT"},{"x":4,"y":12,"type":"DIRT"},{"x":5,"y":12,"type":"AIR"},{"x":6,"y":12,"type":"AIR"},{"x":7,"y":12,"type":"AIR"},{"x":8,"y":12,"type":"DIRT"},{"x":9,"y":12,"type":"DIRT"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"AIR"},{"x":12,"y":12,"type":"AIR"},{"x":13,"y":12,"type":"AIR"},{"x":14,"y":12,"type":"DIRT"},{"x":15,"y":12,"type":"DIRT"},{"x":16,"y":12,"type":"DIRT"},{"x":17,"y":12,"type":"DIRT"},{"x":18,"y":12,"type":"DIRT"},{"x":19,"y":12,"type":"AIR"},{"x":20,"y":12,"type":"AIR"},{"x":21,"y":12,"type":"AIR"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"DIRT"},{"x":24,"y":12,"type":"DIRT"},{"x":25,"y":12,"type":"AIR"},{"x":26,"y":12,"type":"AIR"},{"x":27,"y":12,"type":"AIR"},{"x":28,"y":12,"type":"DIRT"},{"x":29,"y":12,"type":"DIRT"},{"x":30,"y":12,"type":"DIRT"},{"x":31,"y":12,"type":"DIRT"},{"x":32,"y":12,"type":"DIRT"}],[{"x":0,"y":13,"type":"DIRT"},{"x":1,"y":13,"type":"DIRT"},{"x":2,"y":13,"type":"AIR"},{"x":3,"y":13,"type":"DIRT"},{"x":4,"y":13,"type":"DIRT"},{"x":5,"y":13,"type":"AIR"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"AIR"},{"x":8,"y":13,"type":"DIRT"},{"x":9,"y":13,"type":"DIRT"},{"x":10,"y":13,"type":"AIR"},{"x":11,"y":13,"type":"AIR"},{"x":12,"y":13,"type":"AIR"},{"x":13,"y":13,"type":"AIR"},{"x":14,"y":13,"type":"DIRT"},{"x":15,"y":13,"type":"DIRT"},{"x":16,"y":13,"type":"DIRT"},{"x":17,"y":13,"type":"DIRT"},{"x":18,"y":13,"type":"DIRT"},{"x":19,"y":13,"type":"AIR"},{"x":20,"y":13,"type":"AIR"},{"x":21,"y":13,"type":"AIR"},{"x":22,"y":13,"type":"AIR"},{"x":23,"y":13,"type":"DIRT"},{"x":24,"y":13,"type":"DIRT"},{"x":25,"y":13,"type":"AIR"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"AIR"},{"x":28,"y":13,"type":"DIRT"},{"x":29,"y":13,"type":"DIRT"},{"x":30,"y":13,"type":"AIR"},{"x":31,"y":13,"type":"DIRT"},{"x":32,"y":13,"type":"DIRT"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"DIRT"},{"x":5,"y":14,"type":"AIR"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"AIR"},{"x":8,"y":14,"type":"DIRT"},{"x":9,"y":14,"type":"DIRT"},{"x":10,"y":14,"type":"DIRT"},{"x":11,"y":14,"type":"AIR"},{"x":12,"y":14,"type":"AIR"},{"x":13,"y":14,"type":"AIR"},{"x":14,"y":14,"type":"AIR"},{"x":15,"y":14,"type":"AIR"},{"x":16,"y":14,"type":"DIRT"},{"x":17,"y":14,"type":"AIR"},{"x":18,"y":14,"type":"AIR"},{"x":19,"y":14,"type":"AIR"},{"x":20,"y":14,"type":"AIR"},{"x":21,"y":14,"type":"AIR"},{"x":22,"y":14,"type":"DIRT"},{"x":23,"y":14,"type":"DIRT"},{"x":24,"y":14,"type":"DIRT"},{"x":25,"y":14,"type":"AIR"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"AIR"},{"x":28,"y":14,"type":"DIRT"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"AIR"},{"x":5,"y":15,"type":"AIR"},{"x":6,"y":15,"type":"AIR"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"DIRT"},{"x":9,"y":15,"type":"DIRT"},{"x":10,"y":15,"type":"DIRT"},{"x":11,"y":15,"type":"DIRT"},{"x":12,"y":15,"type":"AIR"},{"x":13,"y":15,"type":"AIR"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"DIRT"},{"x":16,"y":15,"type":"DIRT"},{"x":17,"y":15,"type":"DIRT"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"AIR"},{"x":20,"y":15,"type":"AIR"},{"x":21,"y":15,"type":"DIRT"},{"x":22,"y":15,"type":"DIRT"},{"x":23,"y":15,"type":"DIRT"},{"x":24,"y":15,"type":"DIRT"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"AIR"},{"x":27,"y":15,"type":"AIR"},{"x":28,"y":15,"type":"AIR"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"DIRT"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"DIRT"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"AIR"},{"x":10,"y":16,"type":"AIR"},{"x":11,"y":16,"type":"DIRT"},{"x":12,"y":16,"type":"DIRT"},{"x":13,"y":16,"type":"AIR"},{"x":14,"y":16,"type":"AIR"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"DIRT"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"AIR"},{"x":19,"y":16,"type":"AIR"},{"x":20,"y":16,"type":"DIRT"},{"x":21,"y":16,"type":"DIRT"},{"x":22,"y":16,"type":"AIR"},{"x":23,"y":16,"type":"AIR"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"DIRT"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"DIRT"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"DIRT"},{"x":5,"y":17,"type":"DIRT"},{"x":6,"y":17,"type":"DIRT"},{"x":7,"y":17,"type":"AIR"},{"x":8,"y":17,"type":"AIR"},{"x":9,"y":17,"type":"AIR"},{"x":10,"y":17,"type":"AIR"},{"x":11,"y":17,"type":"DIRT"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"AIR"},{"x":14,"y":17,"type":"AIR"},{"x":15,"y":17,"type":"AIR"},{"x":16,"y":17,"type":"DIRT"},{"x":17,"y":17,"type":"AIR"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"AIR"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"DIRT"},{"x":22,"y":17,"type":"AIR"},{"x":23,"y":17,"type":"AIR"},{"x":24,"y":17,"type":"AIR"},{"x":25,"y":17,"type":"AIR"},{"x":26,"y":17,"type":"DIRT"},{"x":27,"y":17,"type":"DIRT"},{"x":28,"y":17,"type":"DIRT"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"DIRT"},{"x":5,"y":18,"type":"DIRT"},{"x":6,"y":18,"type":"DIRT"},{"x":7,"y":18,"type":"AIR"},{"x":8,"y":18,"type":"AIR"},{"x":9,"y":18,"type":"AIR"},{"x":10,"y":18,"type":"DIRT"},{"x":11,"y":18,"type":"DIRT"},{"x":12,"y":18,"type":"DIRT"},{"x":13,"y":18,"type":"DIRT"},{"x":14,"y":18,"type":"DIRT"},{"x":15,"y":18,"type":"DIRT"},{"x":16,"y":18,"type":"DIRT"},{"x":17,"y":18,"type":"DIRT"},{"x":18,"y":18,"type":"DIRT"},{"x":19,"y":18,"type":"DIRT"},{"x":20,"y":18,"type":"DIRT"},{"x":21,"y":18,"type":"DIRT"},{"x":22,"y":18,"type":"DIRT"},{"x":23,"y":18,"type":"AIR"},{"x":24,"y":18,"type":"AIR"},{"x":25,"y":18,"type":"AIR"},{"x":26,"y":18,"type":"DIRT"},{"x":27,"y":18,"type":"DIRT"},{"x":28,"y":18,"type":"DIRT"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"AIR"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"AIR"},{"x":3,"y":19,"type":"DIRT"},{"x":4,"y":19,"type":"DIRT"},{"x":5,"y":19,"type":"AIR"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"DIRT"},{"x":8,"y":19,"type":"DIRT"},{"x":9,"y":19,"type":"AIR"},{"x":10,"y":19,"type":"AIR"},{"x":11,"y":19,"type":"DIRT"},{"x":12,"y":19,"type":"DIRT"},{"x":13,"y":19,"type":"AIR"},{"x":14,"y":19,"type":"AIR"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"DIRT"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"AIR"},{"x":19,"y":19,"type":"AIR"},{"x":20,"y":19,"type":"DIRT"},{"x":21,"y":19,"type":"DIRT"},{"x":22,"y":19,"type":"AIR"},{"x":23,"y":19,"type":"AIR"},{"x":24,"y":19,"type":"DIRT"},{"x":25,"y":19,"type":"DIRT"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"AIR"},{"x":28,"y":19,"type":"DIRT"},{"x":29,"y":19,"type":"DIRT"},{"x":30,"y":19,"type":"AIR"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"AIR"}],[{"x":0,"y":20,"type":"DIRT"},{"x":1,"y":20,"type":"AIR"},{"x":2,"y":20,"type":"AIR"},{"x":3,"y":20,"type":"AIR"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"AIR"},{"x":6,"y":20,"type":"AIR"},{"x":7,"y":20,"type":"DIRT"},{"x":8,"y":20,"type":"DIRT"},{"x":9,"y":20,"type":"AIR"},{"x":10,"y":20,"type":"AIR"},{"x":11,"y":20,"type":"AIR"},{"x":12,"y":20,"type":"AIR"},{"x":13,"y":20,"type":"AIR"},{"x":14,"y":20,"type":"AIR"},{"x":15,"y":20,"type":"AIR"},{"x":16,"y":20,"type":"DIRT"},{"x":17,"y":20,"type":"AIR"},{"x":18,"y":20,"type":"AIR"},{"x":19,"y":20,"type":"AIR"},{"x":20,"y":20,"type":"AIR"},{"x":21,"y":20,"type":"AIR"},{"x":22,"y":20,"type":"AIR"},{"x":23,"y":20,"type":"AIR"},{"x":24,"y":20,"type":"DIRT"},{"x":25,"y":20,"type":"DIRT"},{"x":26,"y":20,"type":"AIR"},{"x":27,"y":20,"type":"AIR"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"AIR"},{"x":30,"y":20,"type":"AIR"},{"x":31,"y":20,"type":"AIR"},{"x":32,"y":20,"type":"DIRT"}],[{"x":0,"y":21,"type":"AIR"},{"x":1,"y":21,"type":"AIR"},{"x":2,"y":21,"type":"AIR"},{"x":3,"y":21,"type":"AIR"},{"x":4,"y":21,"type":"AIR"},{"x":5,"y":21,"type":"AIR"},{"x":6,"y":21,"type":"AIR"},{"x":7,"y":21,"type":"AIR"},{"x":8,"y":21,"type":"DIRT"},{"x":9,"y":21,"type":"DIRT"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"AIR"},{"x":12,"y":21,"type":"AIR"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"DIRT"},{"x":15,"y":21,"type":"AIR"},{"x":16,"y":21,"type":"AIR"},{"x":17,"y":21,"type":"AIR"},{"x":18,"y":21,"type":"DIRT"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"AIR"},{"x":21,"y":21,"type":"AIR"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"DIRT"},{"x":24,"y":21,"type":"DIRT"},{"x":25,"y":21,"type":"AIR"},{"x":26,"y":21,"type":"AIR"},{"x":27,"y":21,"type":"AIR"},{"x":28,"y":21,"type":"AIR"},{"x":29,"y":21,"type":"AIR"},{"x":30,"y":21,"type":"AIR"},{"x":31,"y":21,"type":"AIR"},{"x":32,"y":21,"type":"AIR"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"AIR"},{"x":2,"y":22,"type":"DIRT"},{"x":3,"y":22,"type":"DIRT"},{"x":4,"y":22,"type":"AIR"},{"x":5,"y":22,"type":"AIR"},{"x":6,"y":22,"type":"AIR"},{"x":7,"y":22,"type":"AIR"},{"x":8,"y":22,"type":"AIR"},{"x":9,"y":22,"type":"DIRT"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"AIR"},{"x":13,"y":22,"type":"DIRT"},{"x":14,"y":22,"type":"DIRT"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"DIRT"},{"x":19,"y":22,"type":"DIRT"},{"x":20,"y":22,"type":"AIR"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"DIRT"},{"x":24,"y":22,"type":"AIR"},{"x":25,"y":22,"type":"AIR"},{"x":26,"y":22,"type":"AIR"},{"x":27,"y":22,"type":"AIR"},{"x":28,"y":22,"type":"AIR"},{"x":29,"y":22,"type":"DIRT"},{"x":30,"y":22,"type":"DIRT"},{"x":31,"y":22,"type":"AIR"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"AIR"},{"x":2,"y":23,"type":"DIRT"},{"x":3,"y":23,"type":"DIRT"},{"x":4,"y":23,"type":"AIR"},{"x":5,"y":23,"type":"AIR"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"AIR"},{"x":8,"y":23,"type":"AIR"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"AIR"},{"x":13,"y":23,"type":"DIRT"},{"x":14,"y":23,"type":"DIRT"},{"x":15,"y":23,"type":"AIR"},{"x":16,"y":23,"type":"DIRT"},{"x":17,"y":23,"type":"AIR"},{"x":18,"y":23,"type":"DIRT"},{"x":19,"y":23,"type":"DIRT"},{"x":20,"y":23,"type":"AIR"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"AIR"},{"x":25,"y":23,"type":"AIR"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"AIR"},{"x":28,"y":23,"type":"AIR"},{"x":29,"y":23,"type":"DIRT"},{"x":30,"y":23,"type":"DIRT"},{"x":31,"y":23,"type":"AIR"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"AIR"},{"x":2,"y":24,"type":"DIRT"},{"x":3,"y":24,"type":"DIRT"},{"x":4,"y":24,"type":"AIR"},{"x":5,"y":24,"type":"AIR"},{"x":6,"y":24,"type":"DIRT"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"AIR"},{"x":9,"y":24,"type":"AIR"},{"x":10,"y":24,"type":"AIR"},{"x":11,"y":24,"type":"AIR"},{"x":12,"y":24,"type":"AIR"},{"x":13,"y":24,"type":"AIR"},{"x":14,"y":24,"type":"AIR"},{"x":15,"y":24,"type":"AIR"},{"x":16,"y":24,"type":"DIRT"},{"x":17,"y":24,"type":"AIR"},{"x":18,"y":24,"type":"AIR"},{"x":19,"y":24,"type":"AIR"},{"x":20,"y":24,"type":"AIR"},{"x":21,"y":24,"type":"AIR"},{"x":22,"y":24,"type":"AIR"},{"x":23,"y":24,"type":"AIR"},{"x":24,"y":24,"type":"AIR"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"DIRT"},{"x":27,"y":24,"type":"AIR"},{"x":28,"y":24,"type":"AIR"},{"x":29,"y":24,"type":"DIRT"},{"x":30,"y":24,"type":"DIRT"},{"x":31,"y":24,"type":"AIR"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"AIR"},{"x":3,"y":25,"type":"AIR"},{"x":4,"y":25,"type":"DIRT"},{"x":5,"y":25,"type":"AIR"},{"x":6,"y":25,"type":"AIR"},{"x":7,"y":25,"type":"AIR"},{"x":8,"y":25,"type":"AIR"},{"x":9,"y":25,"type":"AIR"},{"x":10,"y":25,"type":"AIR"},{"x":11,"y":25,"type":"AIR"},{"x":12,"y":25,"type":"AIR"},{"x":13,"y":25,"type":"AIR"},{"x":14,"y":25,"type":"AIR"},{"x":15,"y":25,"type":"AIR"},{"x":16,"y":25,"type":"DIRT"},{"x":17,"y":25,"type":"AIR"},{"x":18,"y":25,"type":"AIR"},{"x":19,"y":25,"type":"AIR"},{"x":20,"y":25,"type":"AIR"},{"x":21,"y":25,"type":"AIR"},{"x":22,"y":25,"type":"AIR"},{"x":23,"y":25,"type":"AIR"},{"x":24,"y":25,"type":"AIR"},{"x":25,"y":25,"type":"AIR"},{"x":26,"y":25,"type":"AIR"},{"x":27,"y":25,"type":"AIR"},{"x":28,"y":25,"type":"DIRT"},{"x":29,"y":25,"type":"AIR"},{"x":30,"y":25,"type":"AIR"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"AIR"},{"x":5,"y":26,"type":"AIR"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"AIR"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"DIRT"},{"x":14,"y":26,"type":"DIRT"},{"x":15,"y":26,"type":"AIR"},{"x":16,"y":26,"type":"DIRT"},{"x":17,"y":26,"type":"AIR"},{"x":18,"y":26,"type":"DIRT"},{"x":19,"y":26,"type":"DIRT"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"AIR"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"AIR"},{"x":28,"y":26,"type":"AIR"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"AIR"},{"x":5,"y":27,"type":"AIR"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"DIRT"},{"x":14,"y":27,"type":"DIRT"},{"x":15,"y":27,"type":"AIR"},{"x":16,"y":27,"type":"AIR"},{"x":17,"y":27,"type":"AIR"},{"x":18,"y":27,"type":"DIRT"},{"x":19,"y":27,"type":"DIRT"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"AIR"},{"x":28,"y":27,"type":"AIR"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"DIRT"},{"x":5,"y":28,"type":"DIRT"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"AIR"},{"x":12,"y":28,"type":"AIR"},{"x":13,"y":28,"type":"DIRT"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"AIR"},{"x":16,"y":28,"type":"AIR"},{"x":17,"y":28,"type":"AIR"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"DIRT"},{"x":20,"y":28,"type":"AIR"},{"x":21,"y":28,"type":"AIR"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"DIRT"},{"x":28,"y":28,"type":"DIRT"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"AIR"},{"x":12,"y":29,"type":"DIRT"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"DIRT"},{"x":15,"y":29,"type":"AIR"},{"x":16,"y":29,"type":"DIRT"},{"x":17,"y":29,"type":"AIR"},{"x":18,"y":29,"type":"DIRT"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"DIRT"},{"x":21,"y":29,"type":"AIR"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"DIRT"},{"x":12,"y":30,"type":"DIRT"},{"x":13,"y":30,"type":"DIRT"},{"x":14,"y":30,"type":"AIR"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"DIRT"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"AIR"},{"x":19,"y":30,"type":"DIRT"},{"x":20,"y":30,"type":"DIRT"},{"x":21,"y":30,"type":"DIRT"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"AIR"},{"x":9,"y":31,"type":"AIR"},{"x":10,"y":31,"type":"AIR"},{"x":11,"y":31,"type":"AIR"},{"x":12,"y":31,"type":"DIRT"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"DIRT"},{"x":16,"y":31,"type":"DIRT"},{"x":17,"y":31,"type":"DIRT"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"DIRT"},{"x":21,"y":31,"type":"AIR"},{"x":22,"y":31,"type":"AIR"},{"x":23,"y":31,"type":"AIR"},{"x":24,"y":31,"type":"AIR"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"AIR"},{"x":12,"y":32,"type":"DIRT"},{"x":13,"y":32,"type":"DIRT"},{"x":14,"y":32,"type":"DIRT"},{"x":15,"y":32,"type":"DIRT"},{"x":16,"y":32,"type":"DIRT"},{"x":17,"y":32,"type":"DIRT"},{"x":18,"y":32,"type":"DIRT"},{"x":19,"y":32,"type":"DIRT"},{"x":20,"y":32,"type":"DIRT"},{"x":21,"y":32,"type":"AIR"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/tests/replays/2019.08.19.21.31.16/A-log.csv b/tests/replays/2019.08.19.21.31.16/A-log.csv deleted file mode 100644 index 14e4b3c..0000000 --- a/tests/replays/2019.08.19.21.31.16/A-log.csv +++ /dev/null @@ -1,274 +0,0 @@ -Round,LastCommandType,LastCommand,ActiveWorm,Score,Health,Worm1 Health,Worm1 x,Worm1 y,Worm2 Health,Worm2 x,Worm2 y,Worm3 Health,Worm3 x,Worm3 y -1,null,"null",1,116,350,150,24,4,100,24,28,100,1,16 -2,move,"move 23 3",1,121,350,150,23,3,100,24,28,100,1,16 -3,move,"move 23 28",2,126,350,150,23,3,100,23,28,100,1,16 -4,move,"move 2 16",3,131,350,150,23,3,100,23,28,100,2,16 -5,dig,"dig 22 3",1,138,350,150,23,3,100,23,28,100,2,16 -6,dig,"dig 22 28",2,145,350,150,23,3,100,23,28,100,2,16 -7,dig,"dig 3 16",3,152,350,150,23,3,100,23,28,100,2,16 -8,move,"move 22 3",1,157,350,150,22,3,100,23,28,100,2,16 -9,move,"move 22 28",2,162,350,150,22,3,100,22,28,100,2,16 -10,move,"move 2 15",3,167,350,150,22,3,100,22,28,100,2,15 -11,move,"move 23 3",1,172,350,150,23,3,100,22,28,100,2,15 -12,move,"move 23 28",2,177,350,150,23,3,100,23,28,100,2,15 -13,move,"move 2 16",3,182,350,150,23,3,100,23,28,100,2,16 -14,move,"move 22 3",1,187,350,150,22,3,100,23,28,100,2,16 -15,move,"move 22 28",2,192,350,150,22,3,100,22,28,100,2,16 -16,move,"move 2 15",3,197,350,150,22,3,100,22,28,100,2,15 -17,move,"move 23 3",1,202,350,150,23,3,100,22,28,100,2,15 -18,move,"move 23 28",2,207,350,150,23,3,100,23,28,100,2,15 -19,move,"move 2 16",3,212,350,150,23,3,100,23,28,100,2,16 -20,move,"move 22 3",1,217,350,150,22,3,100,23,28,100,2,16 -21,move,"move 22 28",2,222,350,150,22,3,100,22,28,100,2,16 -22,move,"move 2 15",3,227,350,150,22,3,100,22,28,100,2,15 -23,move,"move 23 3",1,232,350,150,23,3,100,22,28,100,2,15 -24,move,"move 23 28",2,237,350,150,23,3,100,23,28,100,2,15 -25,move,"move 2 16",3,242,350,150,23,3,100,23,28,100,2,16 -26,move,"move 22 3",1,247,350,150,22,3,100,23,28,100,2,16 -27,move,"move 22 28",2,252,350,150,22,3,100,22,28,100,2,16 -28,move,"move 2 15",3,257,350,150,22,3,100,22,28,100,2,15 -29,move,"move 23 3",1,262,350,150,23,3,100,22,28,100,2,15 -30,move,"move 23 28",2,267,350,150,23,3,100,23,28,100,2,15 -31,move,"move 2 16",3,272,350,150,23,3,100,23,28,100,2,16 -32,move,"move 22 3",1,277,350,150,22,3,100,23,28,100,2,16 -33,move,"move 22 28",2,282,350,150,22,3,100,22,28,100,2,16 -34,move,"move 2 15",3,287,350,150,22,3,100,22,28,100,2,15 -35,move,"move 23 3",1,292,350,150,23,3,100,22,28,100,2,15 -36,move,"move 23 28",2,297,350,150,23,3,100,23,28,100,2,15 -37,move,"move 2 16",3,302,350,150,23,3,100,23,28,100,2,16 -38,move,"move 22 3",1,307,350,150,22,3,100,23,28,100,2,16 -39,move,"move 22 28",2,312,350,150,22,3,100,22,28,100,2,16 -40,move,"move 2 15",3,317,350,150,22,3,100,22,28,100,2,15 -41,move,"move 23 3",1,322,350,150,23,3,100,22,28,100,2,15 -42,move,"move 23 28",2,327,350,150,23,3,100,23,28,100,2,15 -43,move,"move 1 16",3,332,350,150,23,3,100,23,28,100,1,16 -44,dig,"dig 22 2",1,339,350,150,23,3,100,23,28,100,1,16 -45,move,"move 23 27",2,344,350,150,23,3,100,23,27,100,1,16 -46,move,"move 1 15",3,349,350,150,23,3,100,23,27,100,1,15 -47,dig,"dig 22 4",1,356,350,150,23,3,100,23,27,100,1,15 -48,move,"move 22 28",2,361,350,150,23,3,100,22,28,100,1,15 -49,move,"move 2 16",3,366,350,150,23,3,100,22,28,100,2,16 -50,move,"move 22 3",1,371,350,150,22,3,100,22,28,100,2,16 -51,move,"move 23 28",2,376,350,150,22,3,100,23,28,100,2,16 -52,move,"move 2 15",3,381,350,150,22,3,100,23,28,100,2,15 -53,move,"move 23 3",1,386,350,150,23,3,100,23,28,100,2,15 -54,move,"move 22 28",2,391,350,150,23,3,100,22,28,100,2,15 -55,move,"move 2 16",3,396,350,150,23,3,100,22,28,100,2,16 -56,move,"move 22 3",1,401,350,150,22,3,100,22,28,100,2,16 -57,move,"move 23 28",2,406,350,150,22,3,100,23,28,100,2,16 -58,move,"move 2 15",3,411,350,150,22,3,100,23,28,100,2,15 -59,move,"move 23 3",1,416,350,150,23,3,100,23,28,100,2,15 -60,move,"move 22 28",2,421,350,150,23,3,100,22,28,100,2,15 -61,move,"move 2 16",3,426,350,150,23,3,100,22,28,100,2,16 -62,move,"move 22 3",1,431,350,150,22,3,100,22,28,100,2,16 -63,move,"move 23 28",2,436,350,150,22,3,100,23,28,100,2,16 -64,nothing,"nothing "Player chose to do nothing"",3,436,350,150,22,3,100,23,28,100,2,16 -65,move,"move 23 3",1,441,350,150,23,3,100,23,28,100,2,16 -66,move,"move 24 29",2,446,350,150,23,3,100,24,29,100,2,16 -67,move,"move 1 17",3,451,350,150,23,3,100,24,29,100,1,17 -68,move,"move 24 3",1,456,350,150,24,3,100,24,29,100,1,17 -69,dig,"dig 24 30",2,463,350,150,24,3,100,24,29,100,1,17 -70,dig,"dig 1 18",3,470,350,150,24,3,100,24,29,100,1,17 -71,move,"move 23 3",1,475,350,150,23,3,100,24,29,100,1,17 -72,move,"move 25 28",2,480,350,150,23,3,100,25,28,100,1,17 -73,move,"move 1 18",3,485,350,150,23,3,100,25,28,100,1,18 -74,move,"move 22 2",1,490,350,150,22,2,100,25,28,100,1,18 -75,dig,"dig 26 29",2,497,350,150,22,2,100,25,28,100,1,18 -76,move,"move 0 19",3,502,350,150,22,2,100,25,28,100,0,19 -77,nothing,"nothing "Player chose to do nothing"",1,502,350,150,22,2,100,25,28,100,0,19 -78,move,"move 24 29",2,507,350,150,22,2,100,24,29,100,0,19 -79,nothing,"nothing "Player chose to do nothing"",3,507,350,150,22,2,100,24,29,100,0,19 -80,dig,"dig 21 1",1,514,350,150,22,2,100,24,29,100,0,19 -81,move,"move 23 28",2,519,350,150,22,2,100,23,28,100,0,19 -82,dig,"dig 0 20",3,526,350,150,22,2,100,23,28,100,0,19 -83,move,"move 21 1",1,531,350,150,21,1,100,23,28,100,0,19 -84,move,"move 24 27",2,536,350,150,21,1,100,24,27,100,0,19 -85,dig,"dig 0 18",3,543,350,150,21,1,100,24,27,100,0,19 -86,nothing,"nothing "Player chose to do nothing"",1,543,350,150,21,1,100,24,27,100,0,19 -87,dig,"dig 23 26",2,550,350,150,21,1,100,24,27,100,0,19 -88,move,"move 0 20",3,555,350,150,21,1,100,24,27,100,0,20 -89,nothing,"nothing "Player chose to do nothing"",1,555,350,150,21,1,100,24,27,100,0,20 -90,move,"move 24 28",2,560,350,150,21,1,100,24,28,100,0,20 -91,move,"move 1 21",3,565,350,150,21,1,100,24,28,100,1,21 -92,dig,"dig 22 1",1,572,350,150,21,1,100,24,28,100,1,21 -93,move,"move 23 28",2,577,350,150,21,1,100,23,28,100,1,21 -94,move,"move 1 22",3,582,350,150,21,1,100,23,28,100,1,22 -95,dig,"dig 20 2",1,589,350,150,21,1,100,23,28,100,1,22 -96,dig,"dig 22 29",2,596,350,150,21,1,100,23,28,100,1,22 -97,dig,"dig 2 23",3,603,350,150,21,1,100,23,28,100,1,22 -98,dig,"dig 21 2",1,610,350,150,21,1,100,23,28,100,1,22 -99,shoot,"shoot S",1,620,330,130,21,1,100,23,28,100,1,22 -100,shoot,"shoot S",1,633,322,122,21,1,100,23,28,100,1,22 -101,shoot,"shoot S",1,641,299,102,21,1,100,23,28,97,1,22 -102,shoot,"shoot S",1,654,288,94,21,1,100,23,28,94,1,22 -103,shoot,"shoot S",1,662,265,74,21,1,100,23,28,91,1,22 -104,move,"move 22 28",2,662,251,63,21,1,100,22,28,88,1,22 -105,move,"move 2 21",3,663,237,52,21,1,100,22,28,85,2,21 -106,move,"move 22 2",1,667,234,49,22,2,100,22,28,85,2,21 -107,move,"move 23 29",2,672,234,49,22,2,100,23,29,85,2,21 -108,move,"move 3 21",3,677,234,49,22,2,100,23,29,85,3,21 -109,shoot,"shoot S",1,693,234,49,22,2,100,23,29,85,3,21 -110,move,"move 22 28",2,698,234,49,22,2,100,22,28,85,3,21 -111,move,"move 3 20",3,703,234,49,22,2,100,22,28,85,3,20 -112,move,"move 21 2",1,703,234,49,22,2,100,22,28,85,3,20 -113,dig,"dig 22 27",2,710,234,49,22,2,100,22,28,85,3,20 -114,move,"move 4 21",3,714,231,46,22,2,100,22,28,85,4,21 -115,move,"move 21 2",1,713,228,43,22,2,100,22,28,85,4,21 -116,dig,"dig 21 27",2,719,225,40,22,2,100,22,28,85,4,21 -117,move,"move 5 22",3,723,222,37,22,2,100,22,28,85,5,22 -118,shoot,"shoot S",1,722,219,34,22,2,100,22,28,85,5,22 -119,move,"move 21 27",2,726,216,31,22,2,100,21,27,85,5,22 -120,move,"move 6 22",3,730,213,28,22,2,100,21,27,85,6,22 -121,move,"move 21 3",1,729,210,25,22,2,100,21,27,85,6,22 -122,dig,"dig 22 26",2,735,207,22,22,2,100,21,27,85,6,22 -123,move,"move 5 22",3,739,204,19,22,2,100,21,27,85,5,22 -124,move,"move 21 3",1,738,201,16,22,2,100,21,27,85,5,22 -125,nothing,"nothing "Player chose to do nothing"",2,737,198,13,22,2,100,21,27,85,5,22 -126,move,"move 6 21",3,741,195,10,22,2,100,21,27,85,6,21 -127,move,"move 23 3",1,740,192,7,22,2,100,21,27,85,6,21 -128,move,"move 22 26",2,744,189,4,22,2,100,22,26,85,6,21 -129,nothing,"nothing "Player chose to do nothing"",3,743,186,1,22,2,100,22,26,85,6,21 -130,shoot,"shoot S",1,758,185,-10,22,2,100,22,26,85,6,21 -131,move,"move 21 26",2,763,185,-10,22,2,100,21,26,85,6,21 -132,dig,"dig 7 20",3,770,185,-10,22,2,100,21,26,85,6,21 -133,dig,"dig 20 27",2,777,185,-10,22,2,100,21,26,85,6,21 -134,move,"move 5 20",3,782,185,-10,22,2,100,21,26,85,5,20 -135,move,"move 21 25",2,787,185,-10,22,2,100,21,25,85,5,20 -136,move,"move 4 20",3,792,185,-10,22,2,100,21,25,85,4,20 -137,move,"move 20 25",2,797,185,-10,22,2,100,20,25,85,4,20 -138,nothing,"nothing "Player chose to do nothing"",3,797,185,-10,22,2,100,20,25,85,4,20 -139,dig,"dig 19 26",2,804,185,-10,22,2,100,20,25,85,4,20 -140,nothing,"nothing "Player chose to do nothing"",3,804,185,-10,22,2,100,20,25,85,4,20 -141,move,"move 21 25",2,809,185,-10,22,2,100,21,25,85,4,20 -142,nothing,"nothing "Player chose to do nothing"",3,809,185,-10,22,2,100,21,25,85,4,20 -143,move,"move 21 26",2,814,185,-10,22,2,100,21,26,85,4,20 -144,move,"move 5 20",3,819,185,-10,22,2,100,21,26,85,5,20 -145,move,"move 20 27",2,824,185,-10,22,2,100,20,27,85,5,20 -146,move,"move 6 21",3,829,185,-10,22,2,100,20,27,85,6,21 -147,dig,"dig 20 26",2,836,185,-10,22,2,100,20,27,85,6,21 -148,move,"move 5 22",3,841,185,-10,22,2,100,20,27,85,5,22 -149,move,"move 19 26",2,846,185,-10,22,2,100,19,26,85,5,22 -150,move,"move 6 22",3,851,185,-10,22,2,100,19,26,85,6,22 -151,dig,"dig 19 27",2,858,185,-10,22,2,100,19,26,85,6,22 -152,move,"move 7 21",3,863,185,-10,22,2,100,19,26,85,7,21 -153,move,"move 20 25",2,868,185,-10,22,2,100,20,25,85,7,21 -154,move,"move 6 22",3,873,185,-10,22,2,100,20,25,85,6,22 -155,move,"move 19 24",2,878,185,-10,22,2,100,19,24,85,6,22 -156,move,"move 5 21",3,883,185,-10,22,2,100,19,24,85,5,21 -157,nothing,"nothing "Player chose to do nothing"",2,883,185,-10,22,2,100,19,24,85,5,21 -158,move,"move 6 20",3,888,185,-10,22,2,100,19,24,85,6,20 -159,dig,"dig 18 23",2,895,185,-10,22,2,100,19,24,85,6,20 -160,move,"move 5 21",3,900,185,-10,22,2,100,19,24,85,5,21 -161,move,"move 20 23",2,905,185,-10,22,2,100,20,23,85,5,21 -162,move,"move 6 22",3,910,185,-10,22,2,100,20,23,85,6,22 -163,move,"move 20 22",2,915,185,-10,22,2,100,20,22,85,6,22 -164,move,"move 7 21",3,920,185,-10,22,2,100,20,22,85,7,21 -165,move,"move 21 21",2,925,185,-10,22,2,100,21,21,85,7,21 -166,nothing,"nothing "Player chose to do nothing"",3,925,185,-10,22,2,100,21,21,85,7,21 -167,banana,"banana 20 16",2,967,185,-10,22,2,100,21,21,85,7,21 -168,move,"move 6 21",3,972,185,-10,22,2,100,21,21,85,6,21 -169,move,"move 21 20",2,977,185,-10,22,2,100,21,20,85,6,21 -170,nothing,"nothing "Player chose to do nothing"",3,977,185,-10,22,2,100,21,20,85,6,21 -171,banana,"banana 21 15",2,1043,185,-10,22,2,100,21,20,85,6,21 -172,move,"move 6 20",3,1048,185,-10,22,2,100,21,20,85,6,20 -173,banana,"banana 21 16",2,1121,185,-10,22,2,100,21,20,85,6,20 -174,dig,"dig 7 19",3,1128,185,-10,22,2,100,21,20,85,6,20 -175,nothing,"nothing "Player chose to do nothing"",2,1128,185,-10,22,2,100,21,20,85,6,20 -176,move,"move 7 19",3,1133,185,-10,22,2,100,21,20,85,7,19 -177,move,"move 21 21",2,1138,185,-10,22,2,100,21,21,85,7,19 -178,move,"move 8 18",3,1143,185,-10,22,2,100,21,21,85,8,18 -179,move,"move 20 22",2,1148,185,-10,22,2,100,20,22,85,8,18 -180,move,"move 9 17",3,1153,185,-10,22,2,100,20,22,85,9,17 -181,move,"move 20 21",2,1158,185,-10,22,2,100,20,21,85,9,17 -182,move,"move 9 16",3,1163,185,-10,22,2,100,20,21,85,9,16 -183,shoot,"shoot N",2,1179,185,-10,22,2,100,20,21,85,9,16 -184,dig,"dig 10 15",3,1186,185,-10,22,2,100,20,21,85,9,16 -185,shoot,"shoot N",2,1202,185,-10,22,2,100,20,21,85,9,16 -186,move,"move 10 16",3,1207,185,-10,22,2,100,20,21,85,10,16 -187,move,"move 21 21",2,1212,185,-10,22,2,100,21,21,85,10,16 -188,dig,"dig 11 17",3,1219,185,-10,22,2,100,21,21,85,10,16 -189,shoot,"shoot N",2,1235,185,-10,22,2,100,21,21,85,10,16 -190,dig,"dig 11 15",3,1242,185,-10,22,2,100,21,21,85,10,16 -191,shoot,"shoot N",2,1258,185,-10,22,2,100,21,21,85,10,16 -192,dig,"dig 9 15",3,1265,185,-10,22,2,100,21,21,85,10,16 -193,move,"move 22 20",2,1270,185,-10,22,2,100,22,20,85,10,16 -194,dig,"dig 11 16",3,1277,185,-10,22,2,100,22,20,85,10,16 -195,move,"move 23 19",2,1282,185,-10,22,2,100,23,19,85,10,16 -196,move,"move 11 17",3,1287,185,-10,22,2,100,23,19,85,11,17 -197,shoot,"shoot W",2,1303,185,-10,22,2,100,23,19,85,11,17 -198,dig,"dig 12 16",3,1310,185,-10,22,2,100,23,19,85,11,17 -199,move,"move 23 18",2,1315,185,-10,22,2,100,23,18,85,11,17 -200,nothing,"nothing "Player chose to do nothing"",3,1315,185,-10,22,2,100,23,18,85,11,17 -201,move,"move 23 17",2,1320,185,-10,22,2,100,23,17,85,11,17 -202,dig,"dig 12 18",3,1327,185,-10,22,2,100,23,17,85,11,17 -203,shoot,"shoot S",2,1343,185,-10,22,2,100,23,17,85,11,17 -204,dig,"dig 12 17",3,1350,185,-10,22,2,100,23,17,85,11,17 -205,move,"move 24 16",2,1355,185,-10,22,2,100,24,16,85,11,17 -206,move,"move 10 16",3,1360,185,-10,22,2,100,24,16,85,10,16 -207,shoot,"shoot W",2,1376,185,-10,22,2,100,24,16,85,10,16 -208,move,"move 9 15",3,1381,185,-10,22,2,100,24,16,85,9,15 -209,move,"move 23 15",2,1386,185,-10,22,2,100,23,15,85,9,15 -210,dig,"dig 8 15",3,1393,185,-10,22,2,100,23,15,85,9,15 -211,move,"move 22 14",2,1398,185,-10,22,2,100,22,14,85,9,15 -212,move,"move 10 15",3,1403,185,-10,22,2,100,22,14,85,10,15 -213,shoot,"shoot S",2,1419,185,-10,22,2,100,22,14,85,10,15 -214,nothing,"nothing "Player chose to do nothing"",3,1419,185,-10,22,2,100,22,14,85,10,15 -215,move,"move 21 13",2,1424,185,-10,22,2,100,21,13,85,10,15 -216,move,"move 11 15",3,1429,185,-10,22,2,100,21,13,85,11,15 -217,nothing,"nothing "Player chose to do nothing"",2,1429,185,-10,22,2,100,21,13,85,11,15 -218,move,"move 12 15",3,1434,185,-10,22,2,100,21,13,85,12,15 -219,shoot,"shoot S",2,1450,185,-10,22,2,100,21,13,85,12,15 -220,move,"move 12 16",3,1455,185,-10,22,2,100,21,13,85,12,16 -221,move,"move 22 12",2,1460,185,-10,22,2,100,22,12,85,12,16 -222,move,"move 12 17",3,1465,185,-10,22,2,100,22,12,85,12,17 -223,move,"move 22 11",2,1470,185,-10,22,2,100,22,11,85,12,17 -224,dig,"dig 13 18",3,1477,185,-10,22,2,100,22,11,85,12,17 -225,shoot,"shoot S",2,1493,185,-10,22,2,100,22,11,85,12,17 -226,nothing,"nothing "Player chose to do nothing"",3,1493,185,-10,22,2,100,22,11,85,12,17 -227,move,"move 21 11",2,1498,185,-10,22,2,100,21,11,85,12,17 -228,nothing,"nothing "Player chose to do nothing"",3,1498,185,-10,22,2,100,21,11,85,12,17 -229,move,"move 20 10",2,1503,185,-10,22,2,100,20,10,85,12,17 -230,move,"move 11 16",3,1508,185,-10,22,2,100,20,10,85,11,16 -231,nothing,"nothing "Player chose to do nothing"",2,1508,185,-10,22,2,100,20,10,85,11,16 -232,move,"move 10 16",3,1513,185,-10,22,2,100,20,10,85,10,16 -233,move,"move 19 10",2,1518,185,-10,22,2,100,19,10,85,10,16 -234,move,"move 9 17",3,1523,185,-10,22,2,100,19,10,85,9,17 -235,move,"move 18 10",2,1528,185,-10,22,2,100,18,10,85,9,17 -236,move,"move 10 16",3,1533,185,-10,22,2,100,18,10,85,10,16 -237,move,"move 17 10",2,1538,185,-10,22,2,100,17,10,85,10,16 -238,move,"move 9 15",3,1543,185,-10,22,2,100,17,10,85,9,15 -239,shoot,"shoot SE",2,1559,185,-10,22,2,100,17,10,85,9,15 -240,move,"move 10 16",3,1562,177,-10,22,2,92,17,10,85,10,16 -241,shoot,"shoot SE",2,1575,169,-10,22,2,84,17,10,85,10,16 -242,move,"move 11 15",3,1580,169,-10,22,2,84,17,10,85,11,15 -243,shoot,"shoot SE",2,1593,161,-10,22,2,76,17,10,85,11,15 -244,move,"move 11 14",3,1596,153,-10,22,2,68,17,10,85,11,14 -245,shoot,"shoot SE",2,1612,153,-10,22,2,68,17,10,85,11,14 -246,dig,"dig 10 14",3,1616,145,-10,22,2,60,17,10,85,11,14 -247,shoot,"shoot SE",2,1629,137,-10,22,2,52,17,10,85,11,14 -248,move,"move 11 13",3,1634,137,-10,22,2,52,17,10,85,11,13 -249,shoot,"shoot SE",2,1648,129,-10,22,2,44,17,10,85,11,13 -250,move,"move 12 13",3,1650,121,-10,22,2,36,17,10,85,12,13 -251,shoot,"shoot SE",2,1666,121,-10,22,2,36,17,10,85,12,13 -252,move,"move 11 14",3,1668,113,-10,22,2,28,17,10,85,11,14 -253,shoot,"shoot SE",2,1682,105,-10,22,2,20,17,10,85,11,14 -254,move,"move 12 15",3,1687,105,-10,22,2,20,17,10,85,12,15 -255,move,"move 16 10",2,1692,105,-10,22,2,20,16,10,85,12,15 -256,move,"move 13 14",3,1697,105,-10,22,2,20,16,10,85,13,14 -257,dig,"dig 15 11",2,1701,97,-10,22,2,12,16,10,85,13,14 -258,move,"move 12 14",3,1702,86,-10,22,2,1,16,10,85,12,14 -259,shoot,"shoot E",2,1718,85,-10,22,2,-10,16,10,85,12,14 -260,move,"move 13 15",3,1723,85,-10,22,2,-10,16,10,85,13,15 -261,move,"move 13 16",3,1728,85,-10,22,2,-10,16,10,85,13,16 -262,move,"move 12 17",3,1733,85,-10,22,2,-10,16,10,85,12,17 -263,move,"move 12 18",3,1738,85,-10,22,2,-10,16,10,85,12,18 -264,move,"move 13 19",3,1743,85,-10,22,2,-10,16,10,85,13,19 -265,move,"move 14 20",3,1748,85,-10,22,2,-10,16,10,85,14,20 -266,move,"move 15 20",3,1753,85,-10,22,2,-10,16,10,85,15,20 -267,move,"move 16 20",3,1758,85,-10,22,2,-10,16,10,85,16,20 -268,move,"move 15 19",3,1763,85,-10,22,2,-10,16,10,85,15,19 -269,dig,"dig 16 18",3,1770,85,-10,22,2,-10,16,10,85,15,19 -270,move,"move 16 18",3,1775,85,-10,22,2,-10,16,10,85,16,18 -271,move,"move 15 18",3,1780,85,-10,22,2,-10,16,10,85,15,18 -272,move,"move 14 17",3,1785,85,-10,22,2,-10,16,10,85,14,17 -273,shoot,"shoot E",3,1798,77,-10,22,2,-10,16,10,77,14,17 diff --git a/tests/replays/2019.08.19.21.31.16/B-init.json b/tests/replays/2019.08.19.21.31.16/B-init.json deleted file mode 100644 index 373ec6e..0000000 --- a/tests/replays/2019.08.19.21.31.16/B-init.json +++ /dev/null @@ -1 +0,0 @@ -{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":2,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":8,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":4},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":31,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":1,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":24,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":1,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"DIRT"},{"x":13,"y":0,"type":"DIRT"},{"x":14,"y":0,"type":"AIR"},{"x":15,"y":0,"type":"AIR"},{"x":16,"y":0,"type":"DIRT"},{"x":17,"y":0,"type":"AIR"},{"x":18,"y":0,"type":"AIR"},{"x":19,"y":0,"type":"DIRT"},{"x":20,"y":0,"type":"DIRT"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"DIRT"},{"x":10,"y":1,"type":"DIRT"},{"x":11,"y":1,"type":"DIRT"},{"x":12,"y":1,"type":"DIRT"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"AIR"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"DIRT"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"AIR"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"DIRT"},{"x":21,"y":1,"type":"DIRT"},{"x":22,"y":1,"type":"DIRT"},{"x":23,"y":1,"type":"DIRT"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"DIRT"},{"x":12,"y":2,"type":"DIRT"},{"x":13,"y":2,"type":"DIRT"},{"x":14,"y":2,"type":"DIRT"},{"x":15,"y":2,"type":"AIR"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"AIR"},{"x":18,"y":2,"type":"DIRT"},{"x":19,"y":2,"type":"DIRT"},{"x":20,"y":2,"type":"DIRT"},{"x":21,"y":2,"type":"DIRT"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"DIRT"},{"x":12,"y":3,"type":"AIR"},{"x":13,"y":3,"type":"DIRT"},{"x":14,"y":3,"type":"DIRT"},{"x":15,"y":3,"type":"AIR"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"AIR"},{"x":18,"y":3,"type":"DIRT"},{"x":19,"y":3,"type":"DIRT"},{"x":20,"y":3,"type":"AIR"},{"x":21,"y":3,"type":"DIRT"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"AIR"},{"x":5,"y":4,"type":"AIR"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":4},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"AIR"},{"x":12,"y":4,"type":"AIR"},{"x":13,"y":4,"type":"AIR"},{"x":14,"y":4,"type":"AIR"},{"x":15,"y":4,"type":"AIR"},{"x":16,"y":4,"type":"AIR"},{"x":17,"y":4,"type":"AIR"},{"x":18,"y":4,"type":"AIR"},{"x":19,"y":4,"type":"AIR"},{"x":20,"y":4,"type":"AIR"},{"x":21,"y":4,"type":"AIR"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"AIR"},{"x":28,"y":4,"type":"AIR"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"AIR"},{"x":5,"y":5,"type":"AIR"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"AIR"},{"x":13,"y":5,"type":"AIR"},{"x":14,"y":5,"type":"AIR"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"AIR"},{"x":19,"y":5,"type":"AIR"},{"x":20,"y":5,"type":"AIR"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"AIR"},{"x":28,"y":5,"type":"AIR"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"AIR"},{"x":4,"y":6,"type":"AIR"},{"x":5,"y":6,"type":"AIR"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"DIRT"},{"x":12,"y":6,"type":"AIR"},{"x":13,"y":6,"type":"AIR"},{"x":14,"y":6,"type":"AIR"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"AIR"},{"x":19,"y":6,"type":"AIR"},{"x":20,"y":6,"type":"AIR"},{"x":21,"y":6,"type":"DIRT"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"AIR"},{"x":28,"y":6,"type":"AIR"},{"x":29,"y":6,"type":"AIR"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"AIR"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"AIR"},{"x":5,"y":7,"type":"DIRT"},{"x":6,"y":7,"type":"AIR"},{"x":7,"y":7,"type":"AIR"},{"x":8,"y":7,"type":"AIR"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"AIR"},{"x":12,"y":7,"type":"AIR"},{"x":13,"y":7,"type":"DIRT"},{"x":14,"y":7,"type":"AIR"},{"x":15,"y":7,"type":"AIR"},{"x":16,"y":7,"type":"AIR"},{"x":17,"y":7,"type":"AIR"},{"x":18,"y":7,"type":"AIR"},{"x":19,"y":7,"type":"DIRT"},{"x":20,"y":7,"type":"AIR"},{"x":21,"y":7,"type":"AIR"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"AIR"},{"x":25,"y":7,"type":"AIR"},{"x":26,"y":7,"type":"AIR"},{"x":27,"y":7,"type":"DIRT"},{"x":28,"y":7,"type":"AIR"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"AIR"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"AIR"},{"x":2,"y":8,"type":"AIR"},{"x":3,"y":8,"type":"DIRT"},{"x":4,"y":8,"type":"DIRT"},{"x":5,"y":8,"type":"DIRT"},{"x":6,"y":8,"type":"AIR"},{"x":7,"y":8,"type":"AIR"},{"x":8,"y":8,"type":"AIR"},{"x":9,"y":8,"type":"AIR"},{"x":10,"y":8,"type":"AIR"},{"x":11,"y":8,"type":"AIR"},{"x":12,"y":8,"type":"AIR"},{"x":13,"y":8,"type":"DIRT"},{"x":14,"y":8,"type":"AIR"},{"x":15,"y":8,"type":"AIR"},{"x":16,"y":8,"type":"AIR"},{"x":17,"y":8,"type":"AIR"},{"x":18,"y":8,"type":"AIR"},{"x":19,"y":8,"type":"DIRT"},{"x":20,"y":8,"type":"AIR"},{"x":21,"y":8,"type":"AIR"},{"x":22,"y":8,"type":"AIR"},{"x":23,"y":8,"type":"AIR"},{"x":24,"y":8,"type":"AIR"},{"x":25,"y":8,"type":"AIR"},{"x":26,"y":8,"type":"AIR"},{"x":27,"y":8,"type":"DIRT"},{"x":28,"y":8,"type":"DIRT"},{"x":29,"y":8,"type":"DIRT"},{"x":30,"y":8,"type":"AIR"},{"x":31,"y":8,"type":"AIR"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"DIRT"},{"x":2,"y":9,"type":"AIR"},{"x":3,"y":9,"type":"DIRT"},{"x":4,"y":9,"type":"DIRT"},{"x":5,"y":9,"type":"AIR"},{"x":6,"y":9,"type":"AIR"},{"x":7,"y":9,"type":"DIRT"},{"x":8,"y":9,"type":"AIR"},{"x":9,"y":9,"type":"AIR"},{"x":10,"y":9,"type":"DIRT"},{"x":11,"y":9,"type":"AIR"},{"x":12,"y":9,"type":"DIRT"},{"x":13,"y":9,"type":"DIRT"},{"x":14,"y":9,"type":"AIR"},{"x":15,"y":9,"type":"DIRT"},{"x":16,"y":9,"type":"AIR"},{"x":17,"y":9,"type":"DIRT"},{"x":18,"y":9,"type":"AIR"},{"x":19,"y":9,"type":"DIRT"},{"x":20,"y":9,"type":"DIRT"},{"x":21,"y":9,"type":"AIR"},{"x":22,"y":9,"type":"DIRT"},{"x":23,"y":9,"type":"AIR"},{"x":24,"y":9,"type":"AIR"},{"x":25,"y":9,"type":"DIRT"},{"x":26,"y":9,"type":"AIR"},{"x":27,"y":9,"type":"AIR"},{"x":28,"y":9,"type":"DIRT"},{"x":29,"y":9,"type":"DIRT"},{"x":30,"y":9,"type":"AIR"},{"x":31,"y":9,"type":"DIRT"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"DIRT"},{"x":2,"y":10,"type":"AIR"},{"x":3,"y":10,"type":"AIR"},{"x":4,"y":10,"type":"DIRT"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"DIRT"},{"x":7,"y":10,"type":"DIRT"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"AIR"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"DIRT"},{"x":12,"y":10,"type":"DIRT"},{"x":13,"y":10,"type":"DIRT"},{"x":14,"y":10,"type":"AIR"},{"x":15,"y":10,"type":"AIR"},{"x":16,"y":10,"type":"AIR"},{"x":17,"y":10,"type":"AIR"},{"x":18,"y":10,"type":"AIR"},{"x":19,"y":10,"type":"DIRT"},{"x":20,"y":10,"type":"DIRT"},{"x":21,"y":10,"type":"DIRT"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"AIR"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"DIRT"},{"x":26,"y":10,"type":"DIRT"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"DIRT"},{"x":29,"y":10,"type":"AIR"},{"x":30,"y":10,"type":"AIR"},{"x":31,"y":10,"type":"DIRT"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"DIRT"},{"x":1,"y":11,"type":"DIRT"},{"x":2,"y":11,"type":"DIRT"},{"x":3,"y":11,"type":"AIR"},{"x":4,"y":11,"type":"AIR"},{"x":5,"y":11,"type":"AIR"},{"x":6,"y":11,"type":"AIR"},{"x":7,"y":11,"type":"AIR"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"AIR"},{"x":10,"y":11,"type":"AIR"},{"x":11,"y":11,"type":"AIR"},{"x":12,"y":11,"type":"AIR"},{"x":13,"y":11,"type":"DIRT"},{"x":14,"y":11,"type":"AIR"},{"x":15,"y":11,"type":"DIRT"},{"x":16,"y":11,"type":"DIRT"},{"x":17,"y":11,"type":"DIRT"},{"x":18,"y":11,"type":"AIR"},{"x":19,"y":11,"type":"DIRT"},{"x":20,"y":11,"type":"AIR"},{"x":21,"y":11,"type":"AIR"},{"x":22,"y":11,"type":"AIR"},{"x":23,"y":11,"type":"AIR"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"AIR"},{"x":26,"y":11,"type":"AIR"},{"x":27,"y":11,"type":"AIR"},{"x":28,"y":11,"type":"AIR"},{"x":29,"y":11,"type":"AIR"},{"x":30,"y":11,"type":"DIRT"},{"x":31,"y":11,"type":"DIRT"},{"x":32,"y":11,"type":"DIRT"}],[{"x":0,"y":12,"type":"DIRT"},{"x":1,"y":12,"type":"DIRT"},{"x":2,"y":12,"type":"DIRT"},{"x":3,"y":12,"type":"DIRT"},{"x":4,"y":12,"type":"DIRT"},{"x":5,"y":12,"type":"AIR"},{"x":6,"y":12,"type":"AIR"},{"x":7,"y":12,"type":"AIR"},{"x":8,"y":12,"type":"DIRT"},{"x":9,"y":12,"type":"DIRT"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"AIR"},{"x":12,"y":12,"type":"AIR"},{"x":13,"y":12,"type":"AIR"},{"x":14,"y":12,"type":"DIRT"},{"x":15,"y":12,"type":"DIRT"},{"x":16,"y":12,"type":"DIRT"},{"x":17,"y":12,"type":"DIRT"},{"x":18,"y":12,"type":"DIRT"},{"x":19,"y":12,"type":"AIR"},{"x":20,"y":12,"type":"AIR"},{"x":21,"y":12,"type":"AIR"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"DIRT"},{"x":24,"y":12,"type":"DIRT"},{"x":25,"y":12,"type":"AIR"},{"x":26,"y":12,"type":"AIR"},{"x":27,"y":12,"type":"AIR"},{"x":28,"y":12,"type":"DIRT"},{"x":29,"y":12,"type":"DIRT"},{"x":30,"y":12,"type":"DIRT"},{"x":31,"y":12,"type":"DIRT"},{"x":32,"y":12,"type":"DIRT"}],[{"x":0,"y":13,"type":"DIRT"},{"x":1,"y":13,"type":"DIRT"},{"x":2,"y":13,"type":"AIR"},{"x":3,"y":13,"type":"DIRT"},{"x":4,"y":13,"type":"DIRT"},{"x":5,"y":13,"type":"AIR"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"AIR"},{"x":8,"y":13,"type":"DIRT"},{"x":9,"y":13,"type":"DIRT"},{"x":10,"y":13,"type":"AIR"},{"x":11,"y":13,"type":"AIR"},{"x":12,"y":13,"type":"AIR"},{"x":13,"y":13,"type":"AIR"},{"x":14,"y":13,"type":"DIRT"},{"x":15,"y":13,"type":"DIRT"},{"x":16,"y":13,"type":"DIRT"},{"x":17,"y":13,"type":"DIRT"},{"x":18,"y":13,"type":"DIRT"},{"x":19,"y":13,"type":"AIR"},{"x":20,"y":13,"type":"AIR"},{"x":21,"y":13,"type":"AIR"},{"x":22,"y":13,"type":"AIR"},{"x":23,"y":13,"type":"DIRT"},{"x":24,"y":13,"type":"DIRT"},{"x":25,"y":13,"type":"AIR"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"AIR"},{"x":28,"y":13,"type":"DIRT"},{"x":29,"y":13,"type":"DIRT"},{"x":30,"y":13,"type":"AIR"},{"x":31,"y":13,"type":"DIRT"},{"x":32,"y":13,"type":"DIRT"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"DIRT"},{"x":5,"y":14,"type":"AIR"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"AIR"},{"x":8,"y":14,"type":"DIRT"},{"x":9,"y":14,"type":"DIRT"},{"x":10,"y":14,"type":"DIRT"},{"x":11,"y":14,"type":"AIR"},{"x":12,"y":14,"type":"AIR"},{"x":13,"y":14,"type":"AIR"},{"x":14,"y":14,"type":"AIR"},{"x":15,"y":14,"type":"AIR"},{"x":16,"y":14,"type":"DIRT"},{"x":17,"y":14,"type":"AIR"},{"x":18,"y":14,"type":"AIR"},{"x":19,"y":14,"type":"AIR"},{"x":20,"y":14,"type":"AIR"},{"x":21,"y":14,"type":"AIR"},{"x":22,"y":14,"type":"DIRT"},{"x":23,"y":14,"type":"DIRT"},{"x":24,"y":14,"type":"DIRT"},{"x":25,"y":14,"type":"AIR"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"AIR"},{"x":28,"y":14,"type":"DIRT"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"AIR"},{"x":5,"y":15,"type":"AIR"},{"x":6,"y":15,"type":"AIR"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"DIRT"},{"x":9,"y":15,"type":"DIRT"},{"x":10,"y":15,"type":"DIRT"},{"x":11,"y":15,"type":"DIRT"},{"x":12,"y":15,"type":"AIR"},{"x":13,"y":15,"type":"AIR"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"DIRT"},{"x":16,"y":15,"type":"DIRT"},{"x":17,"y":15,"type":"DIRT"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"AIR"},{"x":20,"y":15,"type":"AIR"},{"x":21,"y":15,"type":"DIRT"},{"x":22,"y":15,"type":"DIRT"},{"x":23,"y":15,"type":"DIRT"},{"x":24,"y":15,"type":"DIRT"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"AIR"},{"x":27,"y":15,"type":"AIR"},{"x":28,"y":15,"type":"AIR"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":1,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"DIRT"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"DIRT"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"AIR"},{"x":10,"y":16,"type":"AIR"},{"x":11,"y":16,"type":"DIRT"},{"x":12,"y":16,"type":"DIRT"},{"x":13,"y":16,"type":"AIR"},{"x":14,"y":16,"type":"AIR"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"DIRT"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"AIR"},{"x":19,"y":16,"type":"AIR"},{"x":20,"y":16,"type":"DIRT"},{"x":21,"y":16,"type":"DIRT"},{"x":22,"y":16,"type":"AIR"},{"x":23,"y":16,"type":"AIR"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"DIRT"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"DIRT"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":31,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"DIRT"},{"x":5,"y":17,"type":"DIRT"},{"x":6,"y":17,"type":"DIRT"},{"x":7,"y":17,"type":"AIR"},{"x":8,"y":17,"type":"AIR"},{"x":9,"y":17,"type":"AIR"},{"x":10,"y":17,"type":"AIR"},{"x":11,"y":17,"type":"DIRT"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"AIR"},{"x":14,"y":17,"type":"AIR"},{"x":15,"y":17,"type":"AIR"},{"x":16,"y":17,"type":"DIRT"},{"x":17,"y":17,"type":"AIR"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"AIR"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"DIRT"},{"x":22,"y":17,"type":"AIR"},{"x":23,"y":17,"type":"AIR"},{"x":24,"y":17,"type":"AIR"},{"x":25,"y":17,"type":"AIR"},{"x":26,"y":17,"type":"DIRT"},{"x":27,"y":17,"type":"DIRT"},{"x":28,"y":17,"type":"DIRT"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"DIRT"},{"x":5,"y":18,"type":"DIRT"},{"x":6,"y":18,"type":"DIRT"},{"x":7,"y":18,"type":"AIR"},{"x":8,"y":18,"type":"AIR"},{"x":9,"y":18,"type":"AIR"},{"x":10,"y":18,"type":"DIRT"},{"x":11,"y":18,"type":"DIRT"},{"x":12,"y":18,"type":"DIRT"},{"x":13,"y":18,"type":"DIRT"},{"x":14,"y":18,"type":"DIRT"},{"x":15,"y":18,"type":"DIRT"},{"x":16,"y":18,"type":"DIRT"},{"x":17,"y":18,"type":"DIRT"},{"x":18,"y":18,"type":"DIRT"},{"x":19,"y":18,"type":"DIRT"},{"x":20,"y":18,"type":"DIRT"},{"x":21,"y":18,"type":"DIRT"},{"x":22,"y":18,"type":"DIRT"},{"x":23,"y":18,"type":"AIR"},{"x":24,"y":18,"type":"AIR"},{"x":25,"y":18,"type":"AIR"},{"x":26,"y":18,"type":"DIRT"},{"x":27,"y":18,"type":"DIRT"},{"x":28,"y":18,"type":"DIRT"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"AIR"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"AIR"},{"x":3,"y":19,"type":"DIRT"},{"x":4,"y":19,"type":"DIRT"},{"x":5,"y":19,"type":"AIR"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"DIRT"},{"x":8,"y":19,"type":"DIRT"},{"x":9,"y":19,"type":"AIR"},{"x":10,"y":19,"type":"AIR"},{"x":11,"y":19,"type":"DIRT"},{"x":12,"y":19,"type":"DIRT"},{"x":13,"y":19,"type":"AIR"},{"x":14,"y":19,"type":"AIR"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"DIRT"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"AIR"},{"x":19,"y":19,"type":"AIR"},{"x":20,"y":19,"type":"DIRT"},{"x":21,"y":19,"type":"DIRT"},{"x":22,"y":19,"type":"AIR"},{"x":23,"y":19,"type":"AIR"},{"x":24,"y":19,"type":"DIRT"},{"x":25,"y":19,"type":"DIRT"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"AIR"},{"x":28,"y":19,"type":"DIRT"},{"x":29,"y":19,"type":"DIRT"},{"x":30,"y":19,"type":"AIR"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"AIR"}],[{"x":0,"y":20,"type":"DIRT"},{"x":1,"y":20,"type":"AIR"},{"x":2,"y":20,"type":"AIR"},{"x":3,"y":20,"type":"AIR"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"AIR"},{"x":6,"y":20,"type":"AIR"},{"x":7,"y":20,"type":"DIRT"},{"x":8,"y":20,"type":"DIRT"},{"x":9,"y":20,"type":"AIR"},{"x":10,"y":20,"type":"AIR"},{"x":11,"y":20,"type":"AIR"},{"x":12,"y":20,"type":"AIR"},{"x":13,"y":20,"type":"AIR"},{"x":14,"y":20,"type":"AIR"},{"x":15,"y":20,"type":"AIR"},{"x":16,"y":20,"type":"DIRT"},{"x":17,"y":20,"type":"AIR"},{"x":18,"y":20,"type":"AIR"},{"x":19,"y":20,"type":"AIR"},{"x":20,"y":20,"type":"AIR"},{"x":21,"y":20,"type":"AIR"},{"x":22,"y":20,"type":"AIR"},{"x":23,"y":20,"type":"AIR"},{"x":24,"y":20,"type":"DIRT"},{"x":25,"y":20,"type":"DIRT"},{"x":26,"y":20,"type":"AIR"},{"x":27,"y":20,"type":"AIR"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"AIR"},{"x":30,"y":20,"type":"AIR"},{"x":31,"y":20,"type":"AIR"},{"x":32,"y":20,"type":"DIRT"}],[{"x":0,"y":21,"type":"AIR"},{"x":1,"y":21,"type":"AIR"},{"x":2,"y":21,"type":"AIR"},{"x":3,"y":21,"type":"AIR"},{"x":4,"y":21,"type":"AIR"},{"x":5,"y":21,"type":"AIR"},{"x":6,"y":21,"type":"AIR"},{"x":7,"y":21,"type":"AIR"},{"x":8,"y":21,"type":"DIRT"},{"x":9,"y":21,"type":"DIRT"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"AIR"},{"x":12,"y":21,"type":"AIR"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"DIRT"},{"x":15,"y":21,"type":"AIR"},{"x":16,"y":21,"type":"AIR"},{"x":17,"y":21,"type":"AIR"},{"x":18,"y":21,"type":"DIRT"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"AIR"},{"x":21,"y":21,"type":"AIR"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"DIRT"},{"x":24,"y":21,"type":"DIRT"},{"x":25,"y":21,"type":"AIR"},{"x":26,"y":21,"type":"AIR"},{"x":27,"y":21,"type":"AIR"},{"x":28,"y":21,"type":"AIR"},{"x":29,"y":21,"type":"AIR"},{"x":30,"y":21,"type":"AIR"},{"x":31,"y":21,"type":"AIR"},{"x":32,"y":21,"type":"AIR"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"AIR"},{"x":2,"y":22,"type":"DIRT"},{"x":3,"y":22,"type":"DIRT"},{"x":4,"y":22,"type":"AIR"},{"x":5,"y":22,"type":"AIR"},{"x":6,"y":22,"type":"AIR"},{"x":7,"y":22,"type":"AIR"},{"x":8,"y":22,"type":"AIR"},{"x":9,"y":22,"type":"DIRT"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"AIR"},{"x":13,"y":22,"type":"DIRT"},{"x":14,"y":22,"type":"DIRT"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"DIRT"},{"x":19,"y":22,"type":"DIRT"},{"x":20,"y":22,"type":"AIR"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"DIRT"},{"x":24,"y":22,"type":"AIR"},{"x":25,"y":22,"type":"AIR"},{"x":26,"y":22,"type":"AIR"},{"x":27,"y":22,"type":"AIR"},{"x":28,"y":22,"type":"AIR"},{"x":29,"y":22,"type":"DIRT"},{"x":30,"y":22,"type":"DIRT"},{"x":31,"y":22,"type":"AIR"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"AIR"},{"x":2,"y":23,"type":"DIRT"},{"x":3,"y":23,"type":"DIRT"},{"x":4,"y":23,"type":"AIR"},{"x":5,"y":23,"type":"AIR"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"AIR"},{"x":8,"y":23,"type":"AIR"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"AIR"},{"x":13,"y":23,"type":"DIRT"},{"x":14,"y":23,"type":"DIRT"},{"x":15,"y":23,"type":"AIR"},{"x":16,"y":23,"type":"DIRT"},{"x":17,"y":23,"type":"AIR"},{"x":18,"y":23,"type":"DIRT"},{"x":19,"y":23,"type":"DIRT"},{"x":20,"y":23,"type":"AIR"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"AIR"},{"x":25,"y":23,"type":"AIR"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"AIR"},{"x":28,"y":23,"type":"AIR"},{"x":29,"y":23,"type":"DIRT"},{"x":30,"y":23,"type":"DIRT"},{"x":31,"y":23,"type":"AIR"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"AIR"},{"x":2,"y":24,"type":"DIRT"},{"x":3,"y":24,"type":"DIRT"},{"x":4,"y":24,"type":"AIR"},{"x":5,"y":24,"type":"AIR"},{"x":6,"y":24,"type":"DIRT"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"AIR"},{"x":9,"y":24,"type":"AIR"},{"x":10,"y":24,"type":"AIR"},{"x":11,"y":24,"type":"AIR"},{"x":12,"y":24,"type":"AIR"},{"x":13,"y":24,"type":"AIR"},{"x":14,"y":24,"type":"AIR"},{"x":15,"y":24,"type":"AIR"},{"x":16,"y":24,"type":"DIRT"},{"x":17,"y":24,"type":"AIR"},{"x":18,"y":24,"type":"AIR"},{"x":19,"y":24,"type":"AIR"},{"x":20,"y":24,"type":"AIR"},{"x":21,"y":24,"type":"AIR"},{"x":22,"y":24,"type":"AIR"},{"x":23,"y":24,"type":"AIR"},{"x":24,"y":24,"type":"AIR"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"DIRT"},{"x":27,"y":24,"type":"AIR"},{"x":28,"y":24,"type":"AIR"},{"x":29,"y":24,"type":"DIRT"},{"x":30,"y":24,"type":"DIRT"},{"x":31,"y":24,"type":"AIR"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"AIR"},{"x":3,"y":25,"type":"AIR"},{"x":4,"y":25,"type":"DIRT"},{"x":5,"y":25,"type":"AIR"},{"x":6,"y":25,"type":"AIR"},{"x":7,"y":25,"type":"AIR"},{"x":8,"y":25,"type":"AIR"},{"x":9,"y":25,"type":"AIR"},{"x":10,"y":25,"type":"AIR"},{"x":11,"y":25,"type":"AIR"},{"x":12,"y":25,"type":"AIR"},{"x":13,"y":25,"type":"AIR"},{"x":14,"y":25,"type":"AIR"},{"x":15,"y":25,"type":"AIR"},{"x":16,"y":25,"type":"DIRT"},{"x":17,"y":25,"type":"AIR"},{"x":18,"y":25,"type":"AIR"},{"x":19,"y":25,"type":"AIR"},{"x":20,"y":25,"type":"AIR"},{"x":21,"y":25,"type":"AIR"},{"x":22,"y":25,"type":"AIR"},{"x":23,"y":25,"type":"AIR"},{"x":24,"y":25,"type":"AIR"},{"x":25,"y":25,"type":"AIR"},{"x":26,"y":25,"type":"AIR"},{"x":27,"y":25,"type":"AIR"},{"x":28,"y":25,"type":"DIRT"},{"x":29,"y":25,"type":"AIR"},{"x":30,"y":25,"type":"AIR"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"AIR"},{"x":5,"y":26,"type":"AIR"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"AIR"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"DIRT"},{"x":14,"y":26,"type":"DIRT"},{"x":15,"y":26,"type":"AIR"},{"x":16,"y":26,"type":"DIRT"},{"x":17,"y":26,"type":"AIR"},{"x":18,"y":26,"type":"DIRT"},{"x":19,"y":26,"type":"DIRT"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"AIR"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"AIR"},{"x":28,"y":26,"type":"AIR"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"AIR"},{"x":5,"y":27,"type":"AIR"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"DIRT"},{"x":14,"y":27,"type":"DIRT"},{"x":15,"y":27,"type":"AIR"},{"x":16,"y":27,"type":"AIR"},{"x":17,"y":27,"type":"AIR"},{"x":18,"y":27,"type":"DIRT"},{"x":19,"y":27,"type":"DIRT"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"AIR"},{"x":28,"y":27,"type":"AIR"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"DIRT"},{"x":5,"y":28,"type":"DIRT"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":8,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"AIR"},{"x":12,"y":28,"type":"AIR"},{"x":13,"y":28,"type":"DIRT"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"AIR"},{"x":16,"y":28,"type":"AIR"},{"x":17,"y":28,"type":"AIR"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"DIRT"},{"x":20,"y":28,"type":"AIR"},{"x":21,"y":28,"type":"AIR"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":24,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"DIRT"},{"x":28,"y":28,"type":"DIRT"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"AIR"},{"x":12,"y":29,"type":"DIRT"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"DIRT"},{"x":15,"y":29,"type":"AIR"},{"x":16,"y":29,"type":"DIRT"},{"x":17,"y":29,"type":"AIR"},{"x":18,"y":29,"type":"DIRT"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"DIRT"},{"x":21,"y":29,"type":"AIR"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"DIRT"},{"x":12,"y":30,"type":"DIRT"},{"x":13,"y":30,"type":"DIRT"},{"x":14,"y":30,"type":"AIR"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"DIRT"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"AIR"},{"x":19,"y":30,"type":"DIRT"},{"x":20,"y":30,"type":"DIRT"},{"x":21,"y":30,"type":"DIRT"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"AIR"},{"x":9,"y":31,"type":"AIR"},{"x":10,"y":31,"type":"AIR"},{"x":11,"y":31,"type":"AIR"},{"x":12,"y":31,"type":"DIRT"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"DIRT"},{"x":16,"y":31,"type":"DIRT"},{"x":17,"y":31,"type":"DIRT"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"DIRT"},{"x":21,"y":31,"type":"AIR"},{"x":22,"y":31,"type":"AIR"},{"x":23,"y":31,"type":"AIR"},{"x":24,"y":31,"type":"AIR"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"AIR"},{"x":12,"y":32,"type":"DIRT"},{"x":13,"y":32,"type":"DIRT"},{"x":14,"y":32,"type":"DIRT"},{"x":15,"y":32,"type":"DIRT"},{"x":16,"y":32,"type":"DIRT"},{"x":17,"y":32,"type":"DIRT"},{"x":18,"y":32,"type":"DIRT"},{"x":19,"y":32,"type":"DIRT"},{"x":20,"y":32,"type":"DIRT"},{"x":21,"y":32,"type":"AIR"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/tests/replays/2019.08.19.21.31.16/B-log.csv b/tests/replays/2019.08.19.21.31.16/B-log.csv deleted file mode 100644 index 57ec18e..0000000 --- a/tests/replays/2019.08.19.21.31.16/B-log.csv +++ /dev/null @@ -1,274 +0,0 @@ -Round,LastCommandType,LastCommand,ActiveWorm,Score,Health,Worm1 Health,Worm1 x,Worm1 y,Worm2 Health,Worm2 x,Worm2 y,Worm3 Health,Worm3 x,Worm3 y -1,null,"null",1,116,350,150,8,28,100,8,4,100,31,16 -2,move,"move 9 27",1,121,350,150,9,27,100,8,4,100,31,16 -3,move,"move 9 5",2,126,350,150,9,27,100,9,5,100,31,16 -4,move,"move 30 17",3,131,350,150,9,27,100,9,5,100,30,17 -5,dig,"dig 10 26",1,138,350,150,9,27,100,9,5,100,30,17 -6,dig,"dig 10 6",2,145,350,150,9,27,100,9,5,100,30,17 -7,dig,"dig 29 17",3,152,350,150,9,27,100,9,5,100,30,17 -8,move,"move 10 26",1,157,350,150,10,26,100,9,5,100,30,17 -9,move,"move 10 6",2,162,350,150,10,26,100,10,6,100,30,17 -10,move,"move 29 17",3,167,350,150,10,26,100,10,6,100,29,17 -11,move,"move 11 25",1,172,350,150,11,25,100,10,6,100,29,17 -12,move,"move 11 7",2,177,350,150,11,25,100,11,7,100,29,17 -13,dig,"dig 28 17",3,184,350,150,11,25,100,11,7,100,29,17 -14,move,"move 12 24",1,189,350,150,12,24,100,11,7,100,29,17 -15,move,"move 12 8",2,194,350,150,12,24,100,12,8,100,29,17 -16,move,"move 28 17",3,199,350,150,12,24,100,12,8,100,28,17 -17,dig,"dig 13 23",1,206,350,150,12,24,100,12,8,100,28,17 -18,dig,"dig 13 9",2,213,350,150,12,24,100,12,8,100,28,17 -19,dig,"dig 27 17",3,220,350,150,12,24,100,12,8,100,28,17 -20,move,"move 13 23",1,225,350,150,13,23,100,12,8,100,28,17 -21,move,"move 13 9",2,230,350,150,13,23,100,13,9,100,28,17 -22,move,"move 27 17",3,235,350,150,13,23,100,13,9,100,27,17 -23,dig,"dig 14 22",1,242,350,150,13,23,100,13,9,100,27,17 -24,move,"move 14 10",2,247,350,150,13,23,100,14,10,100,27,17 -25,dig,"dig 26 17",3,254,350,150,13,23,100,14,10,100,27,17 -26,move,"move 14 22",1,259,350,150,14,22,100,14,10,100,27,17 -27,move,"move 14 11",2,264,350,150,14,22,100,14,11,100,27,17 -28,move,"move 26 17",3,269,350,150,14,22,100,14,11,100,26,17 -29,move,"move 15 21",1,274,350,150,15,21,100,14,11,100,26,17 -30,dig,"dig 14 12",2,281,350,150,15,21,100,14,11,100,26,17 -31,move,"move 25 17",3,286,350,150,15,21,100,14,11,100,25,17 -32,dig,"dig 16 20",1,293,350,150,15,21,100,14,11,100,25,17 -33,move,"move 14 12",2,298,350,150,15,21,100,14,12,100,25,17 -34,move,"move 24 17",3,303,350,150,15,21,100,14,12,100,24,17 -35,move,"move 16 20",1,308,350,150,16,20,100,14,12,100,24,17 -36,dig,"dig 14 13",2,315,350,150,16,20,100,14,12,100,24,17 -37,move,"move 23 17",3,320,350,150,16,20,100,14,12,100,23,17 -38,move,"move 17 19",1,325,350,150,17,19,100,14,12,100,23,17 -39,move,"move 14 13",2,330,350,150,17,19,100,14,13,100,23,17 -40,move,"move 22 17",3,335,350,150,17,19,100,14,13,100,22,17 -41,dig,"dig 18 18",1,342,350,150,17,19,100,14,13,100,22,17 -42,move,"move 14 14",2,347,350,150,17,19,100,14,14,100,22,17 -43,dig,"dig 21 17",3,354,350,150,17,19,100,14,14,100,22,17 -44,move,"move 18 18",1,359,350,150,18,18,100,14,14,100,22,17 -45,move,"move 14 15",2,368,360,150,18,18,110,14,15,100,22,17 -46,move,"move 21 17",3,373,360,150,18,18,110,14,15,100,21,17 -47,move,"move 18 17",1,381,370,160,18,17,110,14,15,100,21,17 -48,move,"move 15 14",2,386,370,160,18,17,110,15,14,100,21,17 -49,move,"move 22 16",3,391,370,160,18,17,110,15,14,100,22,16 -50,move,"move 19 16",1,396,370,160,19,16,110,15,14,100,22,16 -51,dig,"dig 16 13",2,403,370,160,19,16,110,15,14,100,22,16 -52,dig,"dig 22 15",3,410,370,160,19,16,110,15,14,100,22,16 -53,move,"move 20 15",1,415,370,160,20,15,110,15,14,100,22,16 -54,move,"move 16 13",2,420,370,160,20,15,110,16,13,100,22,16 -55,dig,"dig 23 15",3,427,370,160,20,15,110,16,13,100,22,16 -56,move,"move 21 14",1,432,370,160,21,14,110,16,13,100,22,16 -57,dig,"dig 17 12",2,439,370,160,21,14,110,16,13,100,22,16 -58,move,"move 22 15",3,444,370,160,21,14,110,16,13,100,22,15 -59,move,"move 22 13",1,449,370,160,22,13,110,16,13,100,22,15 -60,move,"move 17 12",2,454,370,160,22,13,110,17,12,100,22,15 -61,dig,"dig 23 14",3,461,370,160,22,13,110,17,12,100,22,15 -62,dig,"dig 23 12",1,468,370,160,22,13,110,17,12,100,22,15 -63,move,"move 18 11",2,473,370,160,22,13,110,18,11,100,22,15 -64,dig,"dig 22 14",3,480,370,160,22,13,110,18,11,100,22,15 -65,move,"move 22 12",1,485,370,160,22,12,110,18,11,100,22,15 -66,dig,"dig 19 10",2,492,370,160,22,12,110,18,11,100,22,15 -67,move,"move 23 14",3,497,370,160,22,12,110,18,11,100,23,14 -68,move,"move 23 11",1,502,370,160,23,11,110,18,11,100,23,14 -69,move,"move 19 10",2,507,370,160,23,11,110,19,10,100,23,14 -70,dig,"dig 24 13",3,514,370,160,23,11,110,19,10,100,23,14 -71,move,"move 24 10",1,519,370,160,24,10,110,19,10,100,23,14 -72,dig,"dig 20 9",2,526,370,160,24,10,110,19,10,100,23,14 -73,dig,"dig 23 13",3,533,370,160,24,10,110,19,10,100,23,14 -74,move,"move 23 9",1,538,370,160,23,9,110,19,10,100,23,14 -75,move,"move 20 9",2,543,370,160,23,9,110,20,9,100,23,14 -76,move,"move 22 13",3,548,370,160,23,9,110,20,9,100,22,13 -77,move,"move 22 8",1,553,370,160,22,8,110,20,9,100,22,13 -78,move,"move 21 8",2,558,370,160,22,8,110,21,8,100,22,13 -79,move,"move 22 12",3,563,370,160,22,8,110,21,8,100,22,12 -80,move,"move 22 7",1,568,370,160,22,7,110,21,8,100,22,12 -81,move,"move 20 7",2,573,370,160,22,7,110,20,7,100,22,12 -82,move,"move 22 11",3,578,370,160,22,7,110,20,7,100,22,11 -83,dig,"dig 22 6",1,585,370,160,22,7,110,20,7,100,22,11 -84,dig,"dig 21 6",2,592,370,160,22,7,110,20,7,100,22,11 -85,dig,"dig 21 10",3,599,370,160,22,7,110,20,7,100,22,11 -86,move,"move 21 6",1,604,370,160,21,6,110,20,7,100,22,11 -87,dig,"dig 19 8",2,611,370,160,21,6,110,20,7,100,22,11 -88,move,"move 21 10",3,616,370,160,21,6,110,20,7,100,21,10 -89,dig,"dig 21 5",1,623,370,160,21,6,110,20,7,100,21,10 -90,move,"move 21 8",2,628,370,160,21,6,110,21,8,100,21,10 -91,move,"move 21 9",3,633,370,160,21,6,110,21,8,100,21,9 -92,move,"move 21 5",1,638,370,160,21,5,110,21,8,100,21,9 -93,move,"move 21 7",2,643,370,160,21,5,110,21,7,100,21,9 -94,move,"move 21 8",3,648,370,160,21,5,110,21,7,100,21,8 -95,move,"move 21 4",1,653,370,160,21,4,110,21,7,100,21,8 -96,move,"move 21 6",2,658,370,160,21,4,110,21,6,100,21,8 -97,move,"move 21 7",3,663,370,160,21,4,110,21,6,100,21,7 -98,dig,"dig 21 3",1,670,370,160,21,4,110,21,6,100,21,7 -99,banana,"banana 21 1",2,735,362,152,21,4,110,21,6,100,21,7 -100,shoot,"shoot N",1,749,354,144,21,4,110,21,6,100,21,7 -101,banana,"banana 21 1",2,786,346,136,21,4,110,21,6,100,21,7 -102,shoot,"shoot N",1,799,338,128,21,4,110,21,6,100,21,7 -103,banana,"banana 21 1",2,837,330,120,21,4,110,21,6,100,21,7 -104,shoot,"shoot N",1,853,330,120,21,4,110,21,6,100,21,7 -105,shoot,"shoot N",1,869,330,120,21,4,110,21,6,100,21,7 -106,shoot,"shoot N",1,871,330,120,21,4,110,21,6,100,21,7 -107,dig,"dig 22 5",2,878,330,120,21,4,110,21,6,100,21,7 -108,move,"move 22 6",3,883,330,120,21,4,110,21,6,100,22,6 -109,move,"move 22 3",1,885,322,112,22,3,110,21,6,100,22,6 -110,move,"move 22 5",2,890,322,112,22,3,110,22,5,100,22,6 -111,snowball,"snowball 22 2",3,890,322,112,22,3,110,22,5,100,22,6 -112,shoot,"shoot N",1,890,322,112,22,3,110,22,5,100,22,6 -113,move,"move 22 4",2,895,322,112,22,3,110,22,4,100,22,6 -114,move,"move 22 5",3,900,322,112,22,3,110,22,4,100,22,5 -115,shoot,"shoot N",1,900,322,112,22,3,110,22,4,100,22,5 -116,invalid,"invalid",2,896,322,112,22,3,110,22,4,100,22,5 -117,snowball,"snowball 22 2",3,896,322,112,22,3,110,22,4,100,22,5 -118,shoot,"shoot N",1,896,322,112,22,3,110,22,4,100,22,5 -119,move,"move 23 4",2,901,322,112,22,3,110,23,4,100,22,5 -120,move,"move 22 4",3,906,322,112,22,3,110,23,4,100,22,4 -121,shoot,"shoot N",1,906,322,112,22,3,110,23,4,100,22,4 -122,invalid,"invalid",2,902,322,112,22,3,110,23,4,100,22,4 -123,snowball,"snowball 22 2",3,902,322,112,22,3,110,23,4,100,22,4 -124,shoot,"shoot N",1,902,322,112,22,3,110,23,4,100,22,4 -125,move,"move 23 5",2,907,322,112,22,3,110,23,5,100,22,4 -126,move,"move 21 4",3,912,322,112,22,3,110,23,5,100,21,4 -127,shoot,"shoot N",1,912,322,112,22,3,110,23,5,100,21,4 -128,move,"move 22 4",2,916,319,109,22,3,110,22,4,100,21,4 -129,move,"move 20 4",3,920,316,106,22,3,110,22,4,100,20,4 -130,shoot,"shoot N",1,972,305,95,22,3,110,22,4,100,20,4 -131,move,"move 22 5",2,976,302,92,22,3,110,22,5,100,20,4 -132,move,"move 21 5",3,980,299,89,22,3,110,22,5,100,21,5 -133,move,"move 21 4",1,984,296,86,21,4,110,22,5,100,21,5 -134,move,"move 21 6",2,989,296,86,21,4,110,21,6,100,21,5 -135,move,"move 22 4",3,994,296,86,21,4,110,21,6,100,22,4 -136,move,"move 21 5",1,999,296,86,21,5,110,21,6,100,22,4 -137,move,"move 21 7",2,1004,296,86,21,5,110,21,7,100,22,4 -138,move,"move 23 5",3,1009,296,86,21,5,110,21,7,100,23,5 -139,move,"move 20 6",1,1014,296,86,20,6,110,21,7,100,23,5 -140,move,"move 20 8",2,1019,296,86,20,6,110,20,8,100,23,5 -141,move,"move 22 6",3,1024,296,86,20,6,110,20,8,100,22,6 -142,move,"move 21 7",1,1029,296,86,21,7,110,20,8,100,22,6 -143,move,"move 21 9",2,1034,296,86,21,7,110,21,9,100,22,6 -144,move,"move 21 5",3,1039,296,86,21,7,110,21,9,100,21,5 -145,move,"move 21 8",1,1044,296,86,21,8,110,21,9,100,21,5 -146,dig,"dig 20 10",2,1051,296,86,21,8,110,21,9,100,21,5 -147,move,"move 20 6",3,1056,296,86,21,8,110,21,9,100,20,6 -148,move,"move 20 9",1,1061,296,86,20,9,110,21,9,100,20,6 -149,move,"move 20 10",2,1066,296,86,20,9,110,20,10,100,20,6 -150,dig,"dig 19 7",3,1073,296,86,20,9,110,20,10,100,20,6 -151,move,"move 19 10",1,1078,296,86,19,10,110,20,10,100,20,6 -152,dig,"dig 19 11",2,1085,296,86,19,10,110,20,10,100,20,6 -153,move,"move 19 7",3,1090,296,86,19,10,110,20,10,100,19,7 -154,move,"move 20 11",1,1095,296,86,20,11,110,20,10,100,19,7 -155,move,"move 21 11",2,1100,296,86,20,11,110,21,11,100,19,7 -156,move,"move 20 8",3,1105,296,86,20,11,110,21,11,100,20,8 -157,move,"move 19 12",1,1110,296,86,19,12,110,21,11,100,20,8 -158,move,"move 20 12",2,1115,296,86,19,12,110,20,12,100,20,8 -159,dig,"dig 19 9",3,1122,296,86,19,12,110,20,12,100,20,8 -160,move,"move 19 13",1,1127,296,86,19,13,110,20,12,100,20,8 -161,move,"move 20 11",2,1132,296,86,19,13,110,20,11,100,20,8 -162,move,"move 19 9",3,1137,296,86,19,13,110,20,11,100,19,9 -163,move,"move 20 14",1,1142,296,86,20,14,110,20,11,100,19,9 -164,move,"move 20 12",2,1147,296,86,20,14,110,20,12,100,19,9 -165,move,"move 20 10",3,1152,296,86,20,14,110,20,12,100,20,10 -166,dig,"dig 21 15",1,1159,296,86,20,14,110,20,12,100,20,10 -167,move,"move 21 13",2,1162,289,79,20,14,110,21,13,100,20,10 -168,move,"move 20 11",3,1167,289,79,20,14,110,21,13,100,20,11 -169,move,"move 21 15",1,1172,289,79,21,15,110,21,13,100,20,11 -170,move,"move 21 14",2,1177,289,79,21,15,110,21,14,100,20,11 -171,move,"move 21 12",3,1171,256,59,21,15,97,21,14,100,21,12 -172,move,"move 21 16",1,1176,256,59,21,16,97,21,14,100,21,12 -173,move,"move 21 15",2,1170,223,39,21,16,84,21,15,100,21,12 -174,move,"move 21 13",3,1175,223,39,21,16,84,21,15,100,21,13 -175,move,"move 21 17",1,1180,223,39,21,17,84,21,15,100,21,13 -176,move,"move 21 16",2,1185,223,39,21,17,84,21,16,100,21,13 -177,move,"move 21 14",3,1190,223,39,21,17,84,21,16,100,21,14 -178,move,"move 21 18",1,1195,223,39,21,18,84,21,16,100,21,14 -179,move,"move 21 17",2,1200,223,39,21,18,84,21,17,100,21,14 -180,move,"move 21 15",3,1205,223,39,21,18,84,21,17,100,21,15 -181,dig,"dig 20 19",1,1212,223,39,21,18,84,21,17,100,21,15 -182,move,"move 20 18",2,1217,223,39,21,18,84,20,18,100,21,15 -183,move,"move 20 16",3,1219,215,39,21,18,76,20,18,100,20,16 -184,move,"move 20 19",1,1224,215,39,20,19,76,20,18,100,20,16 -185,dig,"dig 21 19",2,1229,207,31,20,19,76,20,18,100,20,16 -186,move,"move 20 17",3,1234,207,31,20,19,76,20,18,100,20,17 -187,shoot,"shoot S",1,1236,207,31,20,19,76,20,18,100,20,17 -188,move,"move 21 19",2,1241,207,31,20,19,76,21,19,100,20,17 -189,move,"move 21 18",3,1243,199,31,20,19,68,21,19,100,21,18 -190,move,"move 21 20",1,1248,199,31,21,20,68,21,19,100,21,18 -191,move,"move 20 18",2,1250,191,23,21,20,68,20,18,100,21,18 -192,move,"move 21 19",3,1255,191,23,21,20,68,20,18,100,21,19 -193,shoot,"shoot S",1,1257,191,23,21,20,68,20,18,100,21,19 -194,invalid,"invalid",2,1253,191,23,21,20,68,20,18,100,21,19 -195,shoot,"shoot SE",3,1255,191,23,21,20,68,20,18,100,21,19 -196,move,"move 22 19",1,1260,191,23,22,19,68,20,18,100,21,19 -197,move,"move 20 17",2,1263,183,15,22,19,68,20,17,100,21,19 -198,move,"move 22 20",3,1268,183,15,22,19,68,20,17,100,22,20 -199,shoot,"shoot E",1,1270,183,15,22,19,68,20,17,100,22,20 -200,move,"move 21 18",2,1275,183,15,22,19,68,21,18,100,22,20 -201,move,"move 23 19",3,1280,183,15,22,19,68,21,18,100,23,19 -202,move,"move 23 18",1,1285,183,15,23,18,68,21,18,100,23,19 -203,move,"move 22 17",2,1287,175,7,23,18,68,22,17,100,23,19 -204,move,"move 22 19",3,1292,175,7,23,18,68,22,17,100,22,19 -205,shoot,"shoot N",1,1294,175,7,23,18,68,22,17,100,22,19 -206,move,"move 23 16",2,1299,175,7,23,18,68,23,16,100,22,19 -207,move,"move 23 20",3,1301,167,7,23,18,60,23,16,100,23,20 -208,move,"move 24 17",1,1306,167,7,24,17,60,23,16,100,23,20 -209,shoot,"shoot E",2,1308,167,7,24,17,60,23,16,100,23,20 -210,dig,"dig 24 19",3,1315,167,7,24,17,60,23,16,100,23,20 -211,move,"move 23 17",1,1320,167,7,23,17,60,23,16,100,23,20 -212,move,"move 22 15",2,1325,167,7,23,17,60,22,15,100,23,20 -213,move,"move 22 19",3,1328,159,7,23,17,52,22,15,100,22,19 -214,move,"move 22 16",1,1333,159,7,22,16,52,22,15,100,22,19 -215,shoot,"shoot N",2,1335,159,7,22,16,52,22,15,100,22,19 -216,move,"move 21 18",3,1340,159,7,22,16,52,22,15,100,21,18 -217,move,"move 21 15",1,1345,159,7,21,15,52,22,15,100,21,18 -218,move,"move 21 14",2,1350,159,7,21,15,52,21,14,100,21,18 -219,move,"move 21 17",3,1352,151,7,21,15,44,21,14,100,21,17 -220,move,"move 20 14",1,1357,151,7,20,14,44,21,14,100,21,17 -221,shoot,"shoot N",2,1359,151,7,20,14,44,21,14,100,21,17 -222,move,"move 20 16",3,1364,151,7,20,14,44,21,14,100,20,16 -223,shoot,"shoot NE",1,1366,151,7,20,14,44,21,14,100,20,16 -224,move,"move 22 13",2,1371,151,7,20,14,44,22,13,100,20,16 -225,move,"move 21 15",3,1373,143,7,20,14,36,22,13,100,21,15 -226,move,"move 21 13",1,1378,143,7,21,13,36,22,13,100,21,15 -227,shoot,"shoot N",2,1380,143,7,21,13,36,22,13,100,21,15 -228,move,"move 21 14",3,1385,143,7,21,13,36,22,13,100,21,14 -229,shoot,"shoot N",1,1387,143,7,21,13,36,22,13,100,21,14 -230,move,"move 21 12",2,1392,143,7,21,13,36,21,12,100,21,14 -231,move,"move 20 13",3,1397,143,7,21,13,36,21,12,100,20,13 -232,move,"move 20 12",1,1402,143,7,20,12,36,21,12,100,20,13 -233,move,"move 20 11",2,1407,143,7,20,12,36,20,11,100,20,13 -234,move,"move 19 12",3,1412,143,7,20,12,36,20,11,100,19,12 -235,move,"move 19 11",1,1417,143,7,19,11,36,20,11,100,19,12 -236,move,"move 19 10",2,1422,143,7,19,11,36,19,10,100,19,12 -237,move,"move 18 11",3,1427,143,7,19,11,36,19,10,100,18,11 -238,move,"move 18 10",1,1432,143,7,18,10,36,19,10,100,18,11 -239,move,"move 20 10",2,1435,135,7,18,10,36,20,10,92,18,11 -240,shoot,"shoot NW",3,1450,132,7,18,10,33,20,10,92,18,11 -241,shoot,"shoot W",1,1462,121,7,18,10,30,20,10,84,18,11 -242,move,"move 19 10",2,1466,118,7,18,10,27,19,10,84,18,11 -243,shoot,"shoot NW",3,1479,110,7,18,10,27,19,10,76,18,11 -244,shoot,"shoot W",1,1495,110,7,18,10,27,19,10,76,18,11 -245,invalid,"invalid",2,1489,102,7,18,10,27,19,10,68,18,11 -246,shoot,"shoot NW",3,1505,102,7,18,10,27,19,10,68,18,11 -247,shoot,"shoot W",1,1517,91,7,18,10,24,19,10,60,18,11 -248,nothing,"nothing "Player chose to do nothing"",2,1516,88,7,18,10,21,19,10,60,18,11 -249,shoot,"shoot NW",3,1528,77,7,18,10,18,19,10,52,18,11 -250,shoot,"shoot W",1,1543,74,7,18,10,15,19,10,52,18,11 -251,nothing,"nothing "Player chose to do nothing"",2,1540,63,7,18,10,12,19,10,44,18,11 -252,shoot,"shoot NW",3,1555,60,7,18,10,9,19,10,44,18,11 -253,shoot,"shoot W",1,1566,46,4,18,10,6,19,10,36,18,11 -254,nothing,"nothing "Player chose to do nothing"",2,1564,40,1,18,10,3,19,10,36,18,11 -255,shoot,"shoot NW",3,1565,36,-2,18,10,0,19,10,36,18,11 -256,move,"move 17 10",3,1570,36,-2,18,10,0,19,10,36,17,10 -257,shoot,"shoot W",3,1585,33,-2,18,10,0,19,10,33,17,10 -258,shoot,"shoot W",3,1600,30,-2,18,10,0,19,10,30,17,10 -259,shoot,"shoot W",3,1652,19,-2,18,10,0,19,10,19,17,10 -260,dig,"dig 16 11",3,1658,16,-2,18,10,0,19,10,16,17,10 -261,move,"move 16 11",3,1662,13,-2,18,10,0,19,10,13,16,11 -262,dig,"dig 15 12",3,1669,13,-2,18,10,0,19,10,13,16,11 -263,move,"move 15 12",3,1674,13,-2,18,10,0,19,10,13,15,12 -264,move,"move 14 13",3,1679,13,-2,18,10,0,19,10,13,14,13 -265,move,"move 13 14",3,1684,13,-2,18,10,0,19,10,13,13,14 -266,move,"move 14 15",3,1689,13,-2,18,10,0,19,10,13,14,15 -267,move,"move 15 16",3,1694,13,-2,18,10,0,19,10,13,15,16 -268,dig,"dig 16 17",3,1701,13,-2,18,10,0,19,10,13,15,16 -269,move,"move 15 17",3,1706,13,-2,18,10,0,19,10,13,15,17 -270,dig,"dig 15 18",3,1713,13,-2,18,10,0,19,10,13,15,17 -271,shoot,"shoot SE",3,1715,13,-2,18,10,0,19,10,13,15,17 -272,shoot,"shoot S",3,1717,13,-2,18,10,0,19,10,13,15,17 -273,shoot,"shoot W",3,1730,5,-2,18,10,0,19,10,5,15,17 diff --git a/tests/replays/2019.08.19.21.57.04/A-init.json b/tests/replays/2019.08.19.21.57.04/A-init.json deleted file mode 100644 index b8ed313..0000000 --- a/tests/replays/2019.08.19.21.57.04/A-init.json +++ /dev/null @@ -1 +0,0 @@ -{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":1,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":2,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"DIRT"},{"x":13,"y":0,"type":"DIRT"},{"x":14,"y":0,"type":"AIR"},{"x":15,"y":0,"type":"AIR"},{"x":16,"y":0,"type":"DIRT"},{"x":17,"y":0,"type":"AIR"},{"x":18,"y":0,"type":"AIR"},{"x":19,"y":0,"type":"DIRT"},{"x":20,"y":0,"type":"DIRT"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"DIRT"},{"x":10,"y":1,"type":"AIR"},{"x":11,"y":1,"type":"DIRT"},{"x":12,"y":1,"type":"DIRT"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"AIR"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"DIRT"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"AIR"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"DIRT"},{"x":21,"y":1,"type":"DIRT"},{"x":22,"y":1,"type":"AIR"},{"x":23,"y":1,"type":"DIRT"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"DIRT"},{"x":12,"y":2,"type":"DIRT"},{"x":13,"y":2,"type":"DIRT"},{"x":14,"y":2,"type":"DIRT"},{"x":15,"y":2,"type":"AIR"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"AIR"},{"x":18,"y":2,"type":"DIRT"},{"x":19,"y":2,"type":"DIRT"},{"x":20,"y":2,"type":"DIRT"},{"x":21,"y":2,"type":"DIRT"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"DIRT"},{"x":12,"y":3,"type":"DIRT"},{"x":13,"y":3,"type":"DIRT"},{"x":14,"y":3,"type":"AIR"},{"x":15,"y":3,"type":"AIR"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"AIR"},{"x":18,"y":3,"type":"AIR"},{"x":19,"y":3,"type":"DIRT"},{"x":20,"y":3,"type":"DIRT"},{"x":21,"y":3,"type":"DIRT"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"DIRT"},{"x":5,"y":4,"type":"DIRT"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"DIRT"},{"x":12,"y":4,"type":"AIR"},{"x":13,"y":4,"type":"AIR"},{"x":14,"y":4,"type":"AIR"},{"x":15,"y":4,"type":"AIR"},{"x":16,"y":4,"type":"AIR"},{"x":17,"y":4,"type":"AIR"},{"x":18,"y":4,"type":"AIR"},{"x":19,"y":4,"type":"AIR"},{"x":20,"y":4,"type":"AIR"},{"x":21,"y":4,"type":"DIRT"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":4},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"DIRT"},{"x":28,"y":4,"type":"DIRT"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"DIRT"},{"x":5,"y":5,"type":"DIRT"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"DIRT"},{"x":13,"y":5,"type":"DIRT"},{"x":14,"y":5,"type":"AIR"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"AIR"},{"x":19,"y":5,"type":"DIRT"},{"x":20,"y":5,"type":"DIRT"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"DIRT"},{"x":28,"y":5,"type":"DIRT"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"AIR"},{"x":4,"y":6,"type":"DIRT"},{"x":5,"y":6,"type":"DIRT"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"AIR"},{"x":12,"y":6,"type":"AIR"},{"x":13,"y":6,"type":"DIRT"},{"x":14,"y":6,"type":"DIRT"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"DIRT"},{"x":19,"y":6,"type":"DIRT"},{"x":20,"y":6,"type":"AIR"},{"x":21,"y":6,"type":"AIR"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"DIRT"},{"x":28,"y":6,"type":"DIRT"},{"x":29,"y":6,"type":"AIR"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"DIRT"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"DIRT"},{"x":5,"y":7,"type":"DIRT"},{"x":6,"y":7,"type":"DIRT"},{"x":7,"y":7,"type":"AIR"},{"x":8,"y":7,"type":"AIR"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"DIRT"},{"x":12,"y":7,"type":"DIRT"},{"x":13,"y":7,"type":"DIRT"},{"x":14,"y":7,"type":"DIRT"},{"x":15,"y":7,"type":"DIRT"},{"x":16,"y":7,"type":"AIR"},{"x":17,"y":7,"type":"DIRT"},{"x":18,"y":7,"type":"DIRT"},{"x":19,"y":7,"type":"DIRT"},{"x":20,"y":7,"type":"DIRT"},{"x":21,"y":7,"type":"DIRT"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"AIR"},{"x":25,"y":7,"type":"AIR"},{"x":26,"y":7,"type":"DIRT"},{"x":27,"y":7,"type":"DIRT"},{"x":28,"y":7,"type":"DIRT"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"DIRT"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"DIRT"},{"x":2,"y":8,"type":"DIRT"},{"x":3,"y":8,"type":"AIR"},{"x":4,"y":8,"type":"AIR"},{"x":5,"y":8,"type":"DIRT"},{"x":6,"y":8,"type":"DIRT"},{"x":7,"y":8,"type":"AIR"},{"x":8,"y":8,"type":"AIR"},{"x":9,"y":8,"type":"AIR"},{"x":10,"y":8,"type":"AIR"},{"x":11,"y":8,"type":"DIRT"},{"x":12,"y":8,"type":"DIRT"},{"x":13,"y":8,"type":"AIR"},{"x":14,"y":8,"type":"AIR"},{"x":15,"y":8,"type":"AIR"},{"x":16,"y":8,"type":"DIRT"},{"x":17,"y":8,"type":"AIR"},{"x":18,"y":8,"type":"AIR"},{"x":19,"y":8,"type":"AIR"},{"x":20,"y":8,"type":"DIRT"},{"x":21,"y":8,"type":"DIRT"},{"x":22,"y":8,"type":"AIR"},{"x":23,"y":8,"type":"AIR"},{"x":24,"y":8,"type":"AIR"},{"x":25,"y":8,"type":"AIR"},{"x":26,"y":8,"type":"DIRT"},{"x":27,"y":8,"type":"DIRT"},{"x":28,"y":8,"type":"AIR"},{"x":29,"y":8,"type":"AIR"},{"x":30,"y":8,"type":"DIRT"},{"x":31,"y":8,"type":"DIRT"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"DIRT"},{"x":2,"y":9,"type":"DIRT"},{"x":3,"y":9,"type":"AIR"},{"x":4,"y":9,"type":"AIR"},{"x":5,"y":9,"type":"DIRT"},{"x":6,"y":9,"type":"DIRT"},{"x":7,"y":9,"type":"AIR"},{"x":8,"y":9,"type":"AIR"},{"x":9,"y":9,"type":"AIR"},{"x":10,"y":9,"type":"DIRT"},{"x":11,"y":9,"type":"DIRT"},{"x":12,"y":9,"type":"AIR"},{"x":13,"y":9,"type":"AIR"},{"x":14,"y":9,"type":"DIRT"},{"x":15,"y":9,"type":"AIR"},{"x":16,"y":9,"type":"DIRT"},{"x":17,"y":9,"type":"AIR"},{"x":18,"y":9,"type":"DIRT"},{"x":19,"y":9,"type":"AIR"},{"x":20,"y":9,"type":"AIR"},{"x":21,"y":9,"type":"DIRT"},{"x":22,"y":9,"type":"DIRT"},{"x":23,"y":9,"type":"AIR"},{"x":24,"y":9,"type":"AIR"},{"x":25,"y":9,"type":"AIR"},{"x":26,"y":9,"type":"DIRT"},{"x":27,"y":9,"type":"DIRT"},{"x":28,"y":9,"type":"AIR"},{"x":29,"y":9,"type":"AIR"},{"x":30,"y":9,"type":"DIRT"},{"x":31,"y":9,"type":"DIRT"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"DIRT"},{"x":2,"y":10,"type":"DIRT"},{"x":3,"y":10,"type":"DIRT"},{"x":4,"y":10,"type":"DIRT"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"AIR"},{"x":7,"y":10,"type":"AIR"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"AIR"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"AIR"},{"x":12,"y":10,"type":"AIR"},{"x":13,"y":10,"type":"AIR"},{"x":14,"y":10,"type":"DIRT"},{"x":15,"y":10,"type":"AIR"},{"x":16,"y":10,"type":"AIR"},{"x":17,"y":10,"type":"AIR"},{"x":18,"y":10,"type":"DIRT"},{"x":19,"y":10,"type":"AIR"},{"x":20,"y":10,"type":"AIR"},{"x":21,"y":10,"type":"AIR"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"AIR"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"AIR"},{"x":26,"y":10,"type":"AIR"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"DIRT"},{"x":29,"y":10,"type":"DIRT"},{"x":30,"y":10,"type":"DIRT"},{"x":31,"y":10,"type":"DIRT"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"DIRT"},{"x":1,"y":11,"type":"DIRT"},{"x":2,"y":11,"type":"DIRT"},{"x":3,"y":11,"type":"DIRT"},{"x":4,"y":11,"type":"DIRT"},{"x":5,"y":11,"type":"DIRT"},{"x":6,"y":11,"type":"AIR"},{"x":7,"y":11,"type":"AIR"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"AIR"},{"x":10,"y":11,"type":"AIR"},{"x":11,"y":11,"type":"AIR"},{"x":12,"y":11,"type":"AIR"},{"x":13,"y":11,"type":"AIR"},{"x":14,"y":11,"type":"DIRT"},{"x":15,"y":11,"type":"DIRT"},{"x":16,"y":11,"type":"DIRT"},{"x":17,"y":11,"type":"DIRT"},{"x":18,"y":11,"type":"DIRT"},{"x":19,"y":11,"type":"AIR"},{"x":20,"y":11,"type":"AIR"},{"x":21,"y":11,"type":"AIR"},{"x":22,"y":11,"type":"AIR"},{"x":23,"y":11,"type":"AIR"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"AIR"},{"x":26,"y":11,"type":"AIR"},{"x":27,"y":11,"type":"DIRT"},{"x":28,"y":11,"type":"DIRT"},{"x":29,"y":11,"type":"DIRT"},{"x":30,"y":11,"type":"DIRT"},{"x":31,"y":11,"type":"DIRT"},{"x":32,"y":11,"type":"DIRT"}],[{"x":0,"y":12,"type":"DIRT"},{"x":1,"y":12,"type":"DIRT"},{"x":2,"y":12,"type":"AIR"},{"x":3,"y":12,"type":"DIRT"},{"x":4,"y":12,"type":"DIRT"},{"x":5,"y":12,"type":"DIRT"},{"x":6,"y":12,"type":"DIRT"},{"x":7,"y":12,"type":"AIR"},{"x":8,"y":12,"type":"AIR"},{"x":9,"y":12,"type":"AIR"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"AIR"},{"x":12,"y":12,"type":"DIRT"},{"x":13,"y":12,"type":"DIRT"},{"x":14,"y":12,"type":"AIR"},{"x":15,"y":12,"type":"AIR"},{"x":16,"y":12,"type":"DIRT"},{"x":17,"y":12,"type":"AIR"},{"x":18,"y":12,"type":"AIR"},{"x":19,"y":12,"type":"DIRT"},{"x":20,"y":12,"type":"DIRT"},{"x":21,"y":12,"type":"AIR"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"AIR"},{"x":24,"y":12,"type":"AIR"},{"x":25,"y":12,"type":"AIR"},{"x":26,"y":12,"type":"DIRT"},{"x":27,"y":12,"type":"DIRT"},{"x":28,"y":12,"type":"DIRT"},{"x":29,"y":12,"type":"DIRT"},{"x":30,"y":12,"type":"AIR"},{"x":31,"y":12,"type":"DIRT"},{"x":32,"y":12,"type":"DIRT"}],[{"x":0,"y":13,"type":"DIRT"},{"x":1,"y":13,"type":"AIR"},{"x":2,"y":13,"type":"AIR"},{"x":3,"y":13,"type":"DIRT"},{"x":4,"y":13,"type":"DIRT"},{"x":5,"y":13,"type":"DIRT"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"AIR"},{"x":8,"y":13,"type":"AIR"},{"x":9,"y":13,"type":"AIR"},{"x":10,"y":13,"type":"AIR"},{"x":11,"y":13,"type":"AIR"},{"x":12,"y":13,"type":"DIRT"},{"x":13,"y":13,"type":"DIRT"},{"x":14,"y":13,"type":"AIR"},{"x":15,"y":13,"type":"AIR"},{"x":16,"y":13,"type":"AIR"},{"x":17,"y":13,"type":"AIR"},{"x":18,"y":13,"type":"AIR"},{"x":19,"y":13,"type":"DIRT"},{"x":20,"y":13,"type":"DIRT"},{"x":21,"y":13,"type":"AIR"},{"x":22,"y":13,"type":"AIR"},{"x":23,"y":13,"type":"AIR"},{"x":24,"y":13,"type":"AIR"},{"x":25,"y":13,"type":"AIR"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"DIRT"},{"x":28,"y":13,"type":"DIRT"},{"x":29,"y":13,"type":"DIRT"},{"x":30,"y":13,"type":"AIR"},{"x":31,"y":13,"type":"AIR"},{"x":32,"y":13,"type":"DIRT"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"DIRT"},{"x":5,"y":14,"type":"DIRT"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"AIR"},{"x":8,"y":14,"type":"AIR"},{"x":9,"y":14,"type":"DIRT"},{"x":10,"y":14,"type":"DIRT"},{"x":11,"y":14,"type":"DIRT"},{"x":12,"y":14,"type":"DIRT"},{"x":13,"y":14,"type":"DIRT"},{"x":14,"y":14,"type":"DIRT"},{"x":15,"y":14,"type":"AIR"},{"x":16,"y":14,"type":"AIR"},{"x":17,"y":14,"type":"AIR"},{"x":18,"y":14,"type":"DIRT"},{"x":19,"y":14,"type":"DIRT"},{"x":20,"y":14,"type":"DIRT"},{"x":21,"y":14,"type":"DIRT"},{"x":22,"y":14,"type":"DIRT"},{"x":23,"y":14,"type":"DIRT"},{"x":24,"y":14,"type":"AIR"},{"x":25,"y":14,"type":"AIR"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"DIRT"},{"x":28,"y":14,"type":"DIRT"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"DIRT"},{"x":5,"y":15,"type":"AIR"},{"x":6,"y":15,"type":"AIR"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"DIRT"},{"x":9,"y":15,"type":"AIR"},{"x":10,"y":15,"type":"DIRT"},{"x":11,"y":15,"type":"DIRT"},{"x":12,"y":15,"type":"DIRT"},{"x":13,"y":15,"type":"DIRT"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"AIR"},{"x":16,"y":15,"type":"DIRT"},{"x":17,"y":15,"type":"AIR"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"DIRT"},{"x":20,"y":15,"type":"DIRT"},{"x":21,"y":15,"type":"DIRT"},{"x":22,"y":15,"type":"DIRT"},{"x":23,"y":15,"type":"AIR"},{"x":24,"y":15,"type":"DIRT"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"AIR"},{"x":27,"y":15,"type":"AIR"},{"x":28,"y":15,"type":"DIRT"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":1,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"AIR"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"DIRT"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"DIRT"},{"x":10,"y":16,"type":"DIRT"},{"x":11,"y":16,"type":"DIRT"},{"x":12,"y":16,"type":"DIRT"},{"x":13,"y":16,"type":"DIRT"},{"x":14,"y":16,"type":"DIRT"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"DIRT"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"DIRT"},{"x":19,"y":16,"type":"DIRT"},{"x":20,"y":16,"type":"DIRT"},{"x":21,"y":16,"type":"DIRT"},{"x":22,"y":16,"type":"DIRT"},{"x":23,"y":16,"type":"DIRT"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"DIRT"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"AIR"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":31,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"DIRT"},{"x":5,"y":17,"type":"DIRT"},{"x":6,"y":17,"type":"DIRT"},{"x":7,"y":17,"type":"DIRT"},{"x":8,"y":17,"type":"AIR"},{"x":9,"y":17,"type":"DIRT"},{"x":10,"y":17,"type":"DIRT"},{"x":11,"y":17,"type":"AIR"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"DIRT"},{"x":14,"y":17,"type":"DIRT"},{"x":15,"y":17,"type":"AIR"},{"x":16,"y":17,"type":"AIR"},{"x":17,"y":17,"type":"AIR"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"DIRT"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"AIR"},{"x":22,"y":17,"type":"DIRT"},{"x":23,"y":17,"type":"DIRT"},{"x":24,"y":17,"type":"AIR"},{"x":25,"y":17,"type":"DIRT"},{"x":26,"y":17,"type":"DIRT"},{"x":27,"y":17,"type":"DIRT"},{"x":28,"y":17,"type":"DIRT"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"DIRT"},{"x":5,"y":18,"type":"DIRT"},{"x":6,"y":18,"type":"DIRT"},{"x":7,"y":18,"type":"DIRT"},{"x":8,"y":18,"type":"DIRT"},{"x":9,"y":18,"type":"AIR"},{"x":10,"y":18,"type":"AIR"},{"x":11,"y":18,"type":"DIRT"},{"x":12,"y":18,"type":"DIRT"},{"x":13,"y":18,"type":"DIRT"},{"x":14,"y":18,"type":"AIR"},{"x":15,"y":18,"type":"AIR"},{"x":16,"y":18,"type":"AIR"},{"x":17,"y":18,"type":"AIR"},{"x":18,"y":18,"type":"AIR"},{"x":19,"y":18,"type":"DIRT"},{"x":20,"y":18,"type":"DIRT"},{"x":21,"y":18,"type":"DIRT"},{"x":22,"y":18,"type":"AIR"},{"x":23,"y":18,"type":"AIR"},{"x":24,"y":18,"type":"DIRT"},{"x":25,"y":18,"type":"DIRT"},{"x":26,"y":18,"type":"DIRT"},{"x":27,"y":18,"type":"DIRT"},{"x":28,"y":18,"type":"DIRT"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"AIR"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"DIRT"},{"x":3,"y":19,"type":"AIR"},{"x":4,"y":19,"type":"AIR"},{"x":5,"y":19,"type":"AIR"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"AIR"},{"x":8,"y":19,"type":"DIRT"},{"x":9,"y":19,"type":"AIR"},{"x":10,"y":19,"type":"AIR"},{"x":11,"y":19,"type":"DIRT"},{"x":12,"y":19,"type":"DIRT"},{"x":13,"y":19,"type":"AIR"},{"x":14,"y":19,"type":"AIR"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"AIR"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"AIR"},{"x":19,"y":19,"type":"AIR"},{"x":20,"y":19,"type":"DIRT"},{"x":21,"y":19,"type":"DIRT"},{"x":22,"y":19,"type":"AIR"},{"x":23,"y":19,"type":"AIR"},{"x":24,"y":19,"type":"DIRT"},{"x":25,"y":19,"type":"AIR"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"AIR"},{"x":28,"y":19,"type":"AIR"},{"x":29,"y":19,"type":"AIR"},{"x":30,"y":19,"type":"DIRT"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"AIR"}],[{"x":0,"y":20,"type":"AIR"},{"x":1,"y":20,"type":"AIR"},{"x":2,"y":20,"type":"DIRT"},{"x":3,"y":20,"type":"DIRT"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"AIR"},{"x":6,"y":20,"type":"AIR"},{"x":7,"y":20,"type":"AIR"},{"x":8,"y":20,"type":"AIR"},{"x":9,"y":20,"type":"AIR"},{"x":10,"y":20,"type":"AIR"},{"x":11,"y":20,"type":"DIRT"},{"x":12,"y":20,"type":"DIRT"},{"x":13,"y":20,"type":"DIRT"},{"x":14,"y":20,"type":"AIR"},{"x":15,"y":20,"type":"AIR"},{"x":16,"y":20,"type":"AIR"},{"x":17,"y":20,"type":"AIR"},{"x":18,"y":20,"type":"AIR"},{"x":19,"y":20,"type":"DIRT"},{"x":20,"y":20,"type":"DIRT"},{"x":21,"y":20,"type":"DIRT"},{"x":22,"y":20,"type":"AIR"},{"x":23,"y":20,"type":"AIR"},{"x":24,"y":20,"type":"AIR"},{"x":25,"y":20,"type":"AIR"},{"x":26,"y":20,"type":"AIR"},{"x":27,"y":20,"type":"AIR"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"DIRT"},{"x":30,"y":20,"type":"DIRT"},{"x":31,"y":20,"type":"AIR"},{"x":32,"y":20,"type":"AIR"}],[{"x":0,"y":21,"type":"AIR"},{"x":1,"y":21,"type":"DIRT"},{"x":2,"y":21,"type":"DIRT"},{"x":3,"y":21,"type":"DIRT"},{"x":4,"y":21,"type":"DIRT"},{"x":5,"y":21,"type":"AIR"},{"x":6,"y":21,"type":"AIR"},{"x":7,"y":21,"type":"AIR"},{"x":8,"y":21,"type":"AIR"},{"x":9,"y":21,"type":"AIR"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"DIRT"},{"x":12,"y":21,"type":"DIRT"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"DIRT"},{"x":15,"y":21,"type":"AIR"},{"x":16,"y":21,"type":"AIR"},{"x":17,"y":21,"type":"AIR"},{"x":18,"y":21,"type":"DIRT"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"DIRT"},{"x":21,"y":21,"type":"DIRT"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"AIR"},{"x":24,"y":21,"type":"AIR"},{"x":25,"y":21,"type":"AIR"},{"x":26,"y":21,"type":"AIR"},{"x":27,"y":21,"type":"AIR"},{"x":28,"y":21,"type":"DIRT"},{"x":29,"y":21,"type":"DIRT"},{"x":30,"y":21,"type":"DIRT"},{"x":31,"y":21,"type":"DIRT"},{"x":32,"y":21,"type":"AIR"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"DIRT"},{"x":2,"y":22,"type":"AIR"},{"x":3,"y":22,"type":"DIRT"},{"x":4,"y":22,"type":"DIRT"},{"x":5,"y":22,"type":"AIR"},{"x":6,"y":22,"type":"AIR"},{"x":7,"y":22,"type":"AIR"},{"x":8,"y":22,"type":"AIR"},{"x":9,"y":22,"type":"AIR"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"AIR"},{"x":13,"y":22,"type":"AIR"},{"x":14,"y":22,"type":"DIRT"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"DIRT"},{"x":19,"y":22,"type":"AIR"},{"x":20,"y":22,"type":"AIR"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"AIR"},{"x":24,"y":22,"type":"AIR"},{"x":25,"y":22,"type":"AIR"},{"x":26,"y":22,"type":"AIR"},{"x":27,"y":22,"type":"AIR"},{"x":28,"y":22,"type":"DIRT"},{"x":29,"y":22,"type":"DIRT"},{"x":30,"y":22,"type":"AIR"},{"x":31,"y":22,"type":"DIRT"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"DIRT"},{"x":2,"y":23,"type":"AIR"},{"x":3,"y":23,"type":"DIRT"},{"x":4,"y":23,"type":"DIRT"},{"x":5,"y":23,"type":"DIRT"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"AIR"},{"x":8,"y":23,"type":"DIRT"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"AIR"},{"x":13,"y":23,"type":"AIR"},{"x":14,"y":23,"type":"DIRT"},{"x":15,"y":23,"type":"AIR"},{"x":16,"y":23,"type":"AIR"},{"x":17,"y":23,"type":"AIR"},{"x":18,"y":23,"type":"DIRT"},{"x":19,"y":23,"type":"AIR"},{"x":20,"y":23,"type":"AIR"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"DIRT"},{"x":25,"y":23,"type":"AIR"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"DIRT"},{"x":28,"y":23,"type":"DIRT"},{"x":29,"y":23,"type":"DIRT"},{"x":30,"y":23,"type":"AIR"},{"x":31,"y":23,"type":"DIRT"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"DIRT"},{"x":2,"y":24,"type":"DIRT"},{"x":3,"y":24,"type":"DIRT"},{"x":4,"y":24,"type":"DIRT"},{"x":5,"y":24,"type":"DIRT"},{"x":6,"y":24,"type":"AIR"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"DIRT"},{"x":9,"y":24,"type":"AIR"},{"x":10,"y":24,"type":"AIR"},{"x":11,"y":24,"type":"AIR"},{"x":12,"y":24,"type":"AIR"},{"x":13,"y":24,"type":"AIR"},{"x":14,"y":24,"type":"DIRT"},{"x":15,"y":24,"type":"DIRT"},{"x":16,"y":24,"type":"DIRT"},{"x":17,"y":24,"type":"DIRT"},{"x":18,"y":24,"type":"DIRT"},{"x":19,"y":24,"type":"AIR"},{"x":20,"y":24,"type":"AIR"},{"x":21,"y":24,"type":"AIR"},{"x":22,"y":24,"type":"AIR"},{"x":23,"y":24,"type":"AIR"},{"x":24,"y":24,"type":"DIRT"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"AIR"},{"x":27,"y":24,"type":"DIRT"},{"x":28,"y":24,"type":"DIRT"},{"x":29,"y":24,"type":"DIRT"},{"x":30,"y":24,"type":"DIRT"},{"x":31,"y":24,"type":"DIRT"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"DIRT"},{"x":3,"y":25,"type":"AIR"},{"x":4,"y":25,"type":"DIRT"},{"x":5,"y":25,"type":"DIRT"},{"x":6,"y":25,"type":"AIR"},{"x":7,"y":25,"type":"AIR"},{"x":8,"y":25,"type":"DIRT"},{"x":9,"y":25,"type":"DIRT"},{"x":10,"y":25,"type":"AIR"},{"x":11,"y":25,"type":"AIR"},{"x":12,"y":25,"type":"AIR"},{"x":13,"y":25,"type":"AIR"},{"x":14,"y":25,"type":"DIRT"},{"x":15,"y":25,"type":"AIR"},{"x":16,"y":25,"type":"DIRT"},{"x":17,"y":25,"type":"AIR"},{"x":18,"y":25,"type":"DIRT"},{"x":19,"y":25,"type":"AIR"},{"x":20,"y":25,"type":"AIR"},{"x":21,"y":25,"type":"AIR"},{"x":22,"y":25,"type":"AIR"},{"x":23,"y":25,"type":"DIRT"},{"x":24,"y":25,"type":"DIRT"},{"x":25,"y":25,"type":"AIR"},{"x":26,"y":25,"type":"AIR"},{"x":27,"y":25,"type":"DIRT"},{"x":28,"y":25,"type":"DIRT"},{"x":29,"y":25,"type":"AIR"},{"x":30,"y":25,"type":"DIRT"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"AIR"},{"x":5,"y":26,"type":"AIR"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"AIR"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"AIR"},{"x":14,"y":26,"type":"AIR"},{"x":15,"y":26,"type":"DIRT"},{"x":16,"y":26,"type":"DIRT"},{"x":17,"y":26,"type":"DIRT"},{"x":18,"y":26,"type":"AIR"},{"x":19,"y":26,"type":"AIR"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"AIR"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"AIR"},{"x":28,"y":26,"type":"AIR"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"AIR"},{"x":5,"y":27,"type":"AIR"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"AIR"},{"x":14,"y":27,"type":"AIR"},{"x":15,"y":27,"type":"DIRT"},{"x":16,"y":27,"type":"DIRT"},{"x":17,"y":27,"type":"DIRT"},{"x":18,"y":27,"type":"AIR"},{"x":19,"y":27,"type":"AIR"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"AIR"},{"x":28,"y":27,"type":"AIR"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"AIR"},{"x":5,"y":28,"type":"AIR"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":8,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"DIRT"},{"x":12,"y":28,"type":"AIR"},{"x":13,"y":28,"type":"AIR"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"DIRT"},{"x":16,"y":28,"type":"DIRT"},{"x":17,"y":28,"type":"DIRT"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"AIR"},{"x":20,"y":28,"type":"AIR"},{"x":21,"y":28,"type":"DIRT"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":24,"y":28},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"AIR"},{"x":28,"y":28,"type":"AIR"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"DIRT"},{"x":12,"y":29,"type":"AIR"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"DIRT"},{"x":15,"y":29,"type":"DIRT"},{"x":16,"y":29,"type":"DIRT"},{"x":17,"y":29,"type":"DIRT"},{"x":18,"y":29,"type":"DIRT"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"AIR"},{"x":21,"y":29,"type":"DIRT"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"DIRT"},{"x":12,"y":30,"type":"AIR"},{"x":13,"y":30,"type":"AIR"},{"x":14,"y":30,"type":"DIRT"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"AIR"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"DIRT"},{"x":19,"y":30,"type":"AIR"},{"x":20,"y":30,"type":"AIR"},{"x":21,"y":30,"type":"DIRT"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"DIRT"},{"x":9,"y":31,"type":"DIRT"},{"x":10,"y":31,"type":"DIRT"},{"x":11,"y":31,"type":"DIRT"},{"x":12,"y":31,"type":"AIR"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"AIR"},{"x":16,"y":31,"type":"AIR"},{"x":17,"y":31,"type":"AIR"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"AIR"},{"x":21,"y":31,"type":"DIRT"},{"x":22,"y":31,"type":"DIRT"},{"x":23,"y":31,"type":"DIRT"},{"x":24,"y":31,"type":"DIRT"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"DIRT"},{"x":12,"y":32,"type":"DIRT"},{"x":13,"y":32,"type":"DIRT"},{"x":14,"y":32,"type":"AIR"},{"x":15,"y":32,"type":"AIR"},{"x":16,"y":32,"type":"DIRT"},{"x":17,"y":32,"type":"AIR"},{"x":18,"y":32,"type":"AIR"},{"x":19,"y":32,"type":"DIRT"},{"x":20,"y":32,"type":"DIRT"},{"x":21,"y":32,"type":"DIRT"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/tests/replays/2019.08.19.21.57.04/A-log.csv b/tests/replays/2019.08.19.21.57.04/A-log.csv deleted file mode 100644 index f620e90..0000000 --- a/tests/replays/2019.08.19.21.57.04/A-log.csv +++ /dev/null @@ -1,214 +0,0 @@ -Round,LastCommandType,LastCommand,ActiveWorm,Score,Health,Worm1 Health,Worm1 x,Worm1 y,Worm2 Health,Worm2 x,Worm2 y,Worm3 Health,Worm3 x,Worm3 y -1,null,"null",1,116,350,150,24,4,100,24,28,100,1,16 -2,move,"move 23 3",1,121,350,150,23,3,100,24,28,100,1,16 -3,move,"move 23 28",2,126,350,150,23,3,100,23,28,100,1,16 -4,move,"move 2 16",3,131,350,150,23,3,100,23,28,100,2,16 -5,dig,"dig 22 3",1,138,350,150,23,3,100,23,28,100,2,16 -6,dig,"dig 22 28",2,145,350,150,23,3,100,23,28,100,2,16 -7,dig,"dig 3 16",3,152,350,150,23,3,100,23,28,100,2,16 -8,move,"move 22 3",1,157,350,150,22,3,100,23,28,100,2,16 -9,move,"move 22 28",2,162,350,150,22,3,100,22,28,100,2,16 -10,move,"move 2 15",3,167,350,150,22,3,100,22,28,100,2,15 -11,move,"move 23 3",1,172,350,150,23,3,100,22,28,100,2,15 -12,move,"move 23 28",2,177,350,150,23,3,100,23,28,100,2,15 -13,move,"move 2 16",3,182,350,150,23,3,100,23,28,100,2,16 -14,move,"move 22 3",1,187,350,150,22,3,100,23,28,100,2,16 -15,move,"move 22 28",2,192,350,150,22,3,100,22,28,100,2,16 -16,move,"move 2 15",3,197,350,150,22,3,100,22,28,100,2,15 -17,move,"move 23 3",1,202,350,150,23,3,100,22,28,100,2,15 -18,move,"move 23 28",2,207,350,150,23,3,100,23,28,100,2,15 -19,move,"move 2 16",3,212,350,150,23,3,100,23,28,100,2,16 -20,move,"move 22 3",1,217,350,150,22,3,100,23,28,100,2,16 -21,move,"move 22 28",2,222,350,150,22,3,100,22,28,100,2,16 -22,move,"move 2 15",3,227,350,150,22,3,100,22,28,100,2,15 -23,move,"move 23 3",1,232,350,150,23,3,100,22,28,100,2,15 -24,move,"move 23 28",2,237,350,150,23,3,100,23,28,100,2,15 -25,move,"move 2 16",3,242,350,150,23,3,100,23,28,100,2,16 -26,move,"move 22 3",1,247,350,150,22,3,100,23,28,100,2,16 -27,move,"move 22 28",2,252,350,150,22,3,100,22,28,100,2,16 -28,move,"move 2 15",3,257,350,150,22,3,100,22,28,100,2,15 -29,move,"move 23 3",1,262,350,150,23,3,100,22,28,100,2,15 -30,move,"move 23 28",2,267,350,150,23,3,100,23,28,100,2,15 -31,move,"move 2 16",3,272,350,150,23,3,100,23,28,100,2,16 -32,move,"move 22 3",1,277,350,150,22,3,100,23,28,100,2,16 -33,move,"move 22 28",2,282,350,150,22,3,100,22,28,100,2,16 -34,move,"move 2 15",3,287,350,150,22,3,100,22,28,100,2,15 -35,dig,"dig 22 2",1,294,350,150,22,3,100,22,28,100,2,15 -36,move,"move 23 27",2,299,350,150,22,3,100,23,27,100,2,15 -37,move,"move 1 16",3,304,350,150,22,3,100,23,27,100,1,16 -38,move,"move 22 2",1,309,350,150,22,2,100,23,27,100,1,16 -39,move,"move 22 28",2,314,350,150,22,2,100,22,28,100,1,16 -40,move,"move 2 16",3,319,350,150,22,2,100,22,28,100,2,16 -41,move,"move 23 3",1,324,350,150,23,3,100,22,28,100,2,16 -42,move,"move 23 28",2,329,350,150,23,3,100,23,28,100,2,16 -43,move,"move 2 15",3,334,350,150,23,3,100,23,28,100,2,15 -44,move,"move 22 3",1,339,350,150,22,3,100,23,28,100,2,15 -45,move,"move 22 28",2,344,350,150,22,3,100,22,28,100,2,15 -46,move,"move 2 16",3,349,350,150,22,3,100,22,28,100,2,16 -47,move,"move 23 3",1,354,350,150,23,3,100,22,28,100,2,16 -48,move,"move 23 28",2,359,350,150,23,3,100,23,28,100,2,16 -49,move,"move 3 16",3,364,350,150,23,3,100,23,28,100,3,16 -50,move,"move 23 4",1,369,350,150,23,4,100,23,28,100,3,16 -51,move,"move 24 27",2,374,350,150,23,4,100,24,27,100,3,16 -52,move,"move 2 16",3,379,350,150,23,4,100,24,27,100,2,16 -53,move,"move 23 3",1,384,350,150,23,3,100,24,27,100,2,16 -54,move,"move 23 28",2,389,350,150,23,3,100,23,28,100,2,16 -55,move,"move 2 15",3,394,350,150,23,3,100,23,28,100,2,15 -56,move,"move 22 3",1,399,350,150,22,3,100,23,28,100,2,15 -57,move,"move 22 28",2,404,350,150,22,3,100,22,28,100,2,15 -58,move,"move 2 16",3,409,350,150,22,3,100,22,28,100,2,16 -59,move,"move 23 3",1,414,350,150,23,3,100,22,28,100,2,16 -60,move,"move 23 28",2,419,350,150,23,3,100,23,28,100,2,16 -61,move,"move 2 15",3,424,350,150,23,3,100,23,28,100,2,15 -62,move,"move 22 3",1,429,350,150,22,3,100,23,28,100,2,15 -63,move,"move 22 28",2,434,350,150,22,3,100,22,28,100,2,15 -64,move,"move 2 16",3,439,350,150,22,3,100,22,28,100,2,16 -65,move,"move 23 4",1,444,350,150,23,4,100,22,28,100,2,16 -66,dig,"dig 22 29",2,451,350,150,23,4,100,22,28,100,2,16 -67,dig,"dig 3 15",3,458,350,150,23,4,100,22,28,100,2,16 -68,move,"move 24 4",1,463,350,150,24,4,100,22,28,100,2,16 -69,move,"move 23 28",2,468,350,150,24,4,100,23,28,100,2,16 -70,nothing,"nothing "Player chose to do nothing"",3,468,350,150,24,4,100,23,28,100,2,16 -71,move,"move 25 3",1,473,350,150,25,3,100,23,28,100,2,16 -72,move,"move 23 29",2,478,350,150,25,3,100,23,29,100,2,16 -73,move,"move 1 15",3,483,350,150,25,3,100,23,29,100,1,15 -74,dig,"dig 24 2",1,490,350,150,25,3,100,23,29,100,1,15 -75,move,"move 22 29",2,495,350,150,25,3,100,22,29,100,1,15 -76,dig,"dig 2 14",3,502,350,150,25,3,100,22,29,100,1,15 -77,nothing,"nothing "Player chose to do nothing"",1,502,350,150,25,3,100,22,29,100,1,15 -78,move,"move 23 28",2,507,350,150,25,3,100,23,28,100,1,15 -79,move,"move 2 16",3,512,350,150,25,3,100,23,28,100,2,16 -80,dig,"dig 25 2",1,512,350,150,25,3,100,23,28,100,2,16 -81,move,"move 22 29",2,517,350,150,25,3,100,22,29,100,2,16 -82,move,"move 3 15",3,522,350,150,25,3,100,22,29,100,3,15 -83,move,"move 25 4",1,522,350,150,25,3,100,22,29,100,3,15 -84,move,"move 23 29",2,521,330,130,25,3,100,23,29,100,3,15 -85,dig,"dig 4 14",3,528,330,130,25,3,100,23,29,100,3,15 -86,move,"move 24 4",1,525,322,122,25,3,100,23,29,100,3,15 -87,shoot,"shoot S",1,538,314,114,25,3,100,23,29,100,3,15 -88,shoot,"shoot S",1,552,306,106,25,3,100,23,29,100,3,15 -89,shoot,"shoot S",1,565,298,98,25,3,100,23,29,100,3,15 -90,shoot,"shoot S",1,578,290,90,25,3,100,23,29,100,3,15 -91,move,"move 24 29",2,583,290,90,25,3,100,24,29,100,3,15 -92,shoot,"shoot S",1,593,270,70,25,3,100,24,29,100,3,15 -93,move,"move 25 29",2,598,270,70,25,3,100,25,29,100,3,15 -94,move,"move 2 16",3,600,262,62,25,3,100,25,29,100,2,16 -95,move,"move 24 2",1,593,242,42,25,3,100,25,29,100,2,16 -96,move,"move 24 29",2,598,242,42,25,3,100,24,29,100,2,16 -97,move,"move 2 15",3,601,234,34,25,3,100,24,29,100,2,15 -98,shoot,"shoot S",1,617,234,34,25,3,100,24,29,100,2,15 -99,dig,"dig 24 30",2,624,234,34,25,3,100,24,29,100,2,15 -100,move,"move 2 16",3,626,226,26,25,3,100,24,29,100,2,16 -101,shoot,"shoot S",1,642,226,26,25,3,100,24,29,100,2,16 -102,move,"move 24 28",2,647,226,26,25,3,100,24,28,100,2,16 -103,move,"move 2 15",3,649,218,18,25,3,100,24,28,100,2,15 -104,shoot,"shoot S",1,664,215,15,25,3,100,24,28,100,2,15 -105,move,"move 25 28",2,668,212,12,25,3,100,25,28,100,2,15 -106,move,"move 2 16",3,670,201,1,25,3,100,25,28,100,2,16 -107,shoot,"shoot S",1,685,200,-2,25,3,100,25,28,100,2,16 -108,move,"move 25 27",2,690,200,-2,25,3,100,25,27,100,2,16 -109,dig,"dig 3 17",3,697,200,-2,25,3,100,25,27,100,2,16 -110,move,"move 24 27",2,702,200,-2,25,3,100,24,27,100,2,16 -111,nothing,"nothing "Player chose to do nothing"",3,702,200,-2,25,3,100,24,27,100,2,16 -112,move,"move 25 28",2,707,200,-2,25,3,100,25,28,100,2,16 -113,move,"move 1 17",3,712,200,-2,25,3,100,25,28,100,1,17 -114,move,"move 25 27",2,717,200,-2,25,3,100,25,27,100,1,17 -115,move,"move 2 17",3,722,200,-2,25,3,100,25,27,100,2,17 -116,dig,"dig 24 26",2,729,200,-2,25,3,100,25,27,100,2,17 -117,move,"move 3 17",3,734,200,-2,25,3,100,25,27,100,3,17 -118,move,"move 24 26",2,739,200,-2,25,3,100,24,26,100,3,17 -119,move,"move 3 16",3,744,200,-2,25,3,100,24,26,100,3,16 -120,move,"move 25 25",2,749,200,-2,25,3,100,25,25,100,3,16 -121,move,"move 4 16",3,754,200,-2,25,3,100,25,25,100,4,16 -122,move,"move 26 25",2,759,200,-2,25,3,100,26,25,100,4,16 -123,move,"move 3 17",3,764,200,-2,25,3,100,26,25,100,3,17 -124,move,"move 25 24",2,769,200,-2,25,3,100,25,24,100,3,17 -125,move,"move 2 16",3,774,200,-2,25,3,100,25,24,100,2,16 -126,move,"move 26 24",2,779,200,-2,25,3,100,26,24,100,2,16 -127,move,"move 3 17",3,784,200,-2,25,3,100,26,24,100,3,17 -128,dig,"dig 27 24",2,791,200,-2,25,3,100,26,24,100,3,17 -129,dig,"dig 3 18",3,798,200,-2,25,3,100,26,24,100,3,17 -130,move,"move 25 23",2,803,200,-2,25,3,100,25,23,100,3,17 -131,move,"move 4 16",3,808,200,-2,25,3,100,25,23,100,4,16 -132,move,"move 26 24",2,813,200,-2,25,3,100,26,24,100,4,16 -133,dig,"dig 4 15",3,820,200,-2,25,3,100,26,24,100,4,16 -134,move,"move 26 23",2,825,200,-2,25,3,100,26,23,100,4,16 -135,move,"move 5 15",3,830,200,-2,25,3,100,26,23,100,5,15 -136,move,"move 26 22",2,835,200,-2,25,3,100,26,22,100,5,15 -137,dig,"dig 5 16",3,842,200,-2,25,3,100,26,22,100,5,15 -138,move,"move 25 21",2,847,200,-2,25,3,100,25,21,100,5,15 -139,dig,"dig 5 14",3,854,200,-2,25,3,100,25,21,100,5,15 -140,banana,"banana 25 16",2,937,200,-2,25,3,100,25,21,100,5,15 -141,move,"move 5 14",3,942,200,-2,25,3,100,25,21,100,5,14 -142,banana,"banana 25 16",2,1022,200,-2,25,3,100,25,21,100,5,14 -143,dig,"dig 4 13",3,1029,200,-2,25,3,100,25,21,100,5,14 -144,banana,"banana 26 16",2,1094,200,-2,25,3,100,25,21,100,5,14 -145,nothing,"nothing "Player chose to do nothing"",3,1094,200,-2,25,3,100,25,21,100,5,14 -146,shoot,"shoot N",2,1110,200,-2,25,3,100,25,21,100,5,14 -147,move,"move 5 15",3,1113,192,-2,25,3,92,25,21,100,5,15 -148,shoot,"shoot N",2,1129,192,-2,25,3,92,25,21,100,5,15 -149,move,"move 6 14",3,1134,192,-2,25,3,92,25,21,100,6,14 -150,shoot,"shoot N",2,1147,184,-2,25,3,84,25,21,100,6,14 -151,move,"move 7 14",3,1152,184,-2,25,3,84,25,21,100,7,14 -152,shoot,"shoot N",2,1208,184,-2,25,3,84,25,21,100,7,14 -153,invalid,"invalid",3,1204,184,-2,25,3,84,25,21,100,7,14 -154,shoot,"shoot N",2,1220,184,-2,25,3,84,25,21,100,7,14 -155,move,"move 7 13",3,1222,176,-2,25,3,76,25,21,100,7,13 -156,shoot,"shoot N",2,1238,176,-2,25,3,76,25,21,100,7,13 -157,move,"move 6 14",3,1241,168,-2,25,3,68,25,21,100,6,14 -158,shoot,"shoot N",2,1257,168,-2,25,3,68,25,21,100,6,14 -159,move,"move 5 15",3,1259,160,-2,25,3,60,25,21,100,5,15 -160,shoot,"shoot N",2,1275,160,-2,25,3,60,25,21,100,5,15 -161,move,"move 4 16",3,1277,152,-2,25,3,52,25,21,100,4,16 -162,shoot,"shoot N",2,1293,152,-2,25,3,52,25,21,100,4,16 -163,move,"move 5 15",3,1296,144,-2,25,3,44,25,21,100,5,15 -164,shoot,"shoot N",2,1312,144,-2,25,3,44,25,21,100,5,15 -165,move,"move 5 14",3,1314,136,-2,25,3,36,25,21,100,5,14 -166,shoot,"shoot N",2,1330,136,-2,25,3,36,25,21,100,5,14 -167,move,"move 6 15",3,1335,136,-2,25,3,36,25,21,100,6,15 -168,shoot,"shoot N",2,1348,128,-2,25,3,28,25,21,100,6,15 -169,dig,"dig 6 16",3,1355,128,-2,25,3,28,25,21,100,6,15 -170,shoot,"shoot N",2,1371,128,-2,25,3,28,25,21,100,6,15 -171,move,"move 6 16",3,1374,120,-2,25,3,20,25,21,100,6,16 -172,shoot,"shoot N",2,1390,120,-2,25,3,20,25,21,100,6,16 -173,move,"move 7 16",3,1392,112,-2,25,3,12,25,21,100,7,16 -174,shoot,"shoot N",2,1408,112,-2,25,3,12,25,21,100,7,16 -175,move,"move 8 16",3,1410,104,-2,25,3,4,25,21,100,8,16 -176,shoot,"shoot N",2,1466,104,-2,25,3,4,25,21,100,8,16 -177,nothing,"nothing "Player chose to do nothing"",3,1466,104,-2,25,3,4,25,21,100,8,16 -178,shoot,"shoot N",2,1481,100,-2,25,3,-4,25,21,100,8,16 -179,dig,"dig 7 17",3,1488,100,-2,25,3,-4,25,21,100,8,16 -180,dig,"dig 8 15",3,1495,100,-2,25,3,-4,25,21,100,8,16 -181,move,"move 8 15",3,1500,100,-2,25,3,-4,25,21,100,8,15 -182,move,"move 9 15",3,1505,100,-2,25,3,-4,25,21,100,9,15 -183,dig,"dig 10 15",3,1512,100,-2,25,3,-4,25,21,100,9,15 -184,move,"move 10 15",3,1517,100,-2,25,3,-4,25,21,100,10,15 -185,nothing,"nothing "Player chose to do nothing"",3,1517,100,-2,25,3,-4,25,21,100,10,15 -186,dig,"dig 10 16",3,1524,100,-2,25,3,-4,25,21,100,10,15 -187,dig,"dig 10 14",3,1531,100,-2,25,3,-4,25,21,100,10,15 -188,dig,"dig 11 16",3,1538,100,-2,25,3,-4,25,21,100,10,15 -189,move,"move 9 15",3,1543,100,-2,25,3,-4,25,21,100,9,15 -190,nothing,"nothing "Player chose to do nothing"",3,1543,100,-2,25,3,-4,25,21,100,9,15 -191,move,"move 8 15",3,1548,100,-2,25,3,-4,25,21,100,8,15 -192,move,"move 8 16",3,1553,100,-2,25,3,-4,25,21,100,8,16 -193,move,"move 8 17",3,1558,100,-2,25,3,-4,25,21,100,8,17 -194,move,"move 7 17",3,1563,100,-2,25,3,-4,25,21,100,7,17 -195,dig,"dig 7 18",3,1570,100,-2,25,3,-4,25,21,100,7,17 -196,move,"move 7 18",3,1575,100,-2,25,3,-4,25,21,100,7,18 -197,nothing,"nothing "Player chose to do nothing"",3,1575,100,-2,25,3,-4,25,21,100,7,18 -198,nothing,"nothing "Player chose to do nothing"",3,1575,100,-2,25,3,-4,25,21,100,7,18 -199,move,"move 7 17",3,1580,100,-2,25,3,-4,25,21,100,7,17 -200,move,"move 8 17",3,1585,100,-2,25,3,-4,25,21,100,8,17 -201,move,"move 8 16",3,1590,100,-2,25,3,-4,25,21,100,8,16 -202,snowball,"snowball 11 17",3,1607,100,-2,25,3,-4,25,21,100,8,16 -203,snowball,"snowball 10 16",3,1624,100,-2,25,3,-4,25,21,100,8,16 -204,snowball,"snowball 10 16",3,1641,100,-2,25,3,-4,25,21,100,8,16 -205,move,"move 8 17",3,1646,100,-2,25,3,-4,25,21,100,8,17 -206,dig,"dig 8 18",3,1653,100,-2,25,3,-4,25,21,100,8,17 -207,move,"move 9 18",3,1658,100,-2,25,3,-4,25,21,100,9,18 -208,move,"move 9 19",3,1663,100,-2,25,3,-4,25,21,100,9,19 -209,move,"move 10 19",3,1668,100,-2,25,3,-4,25,21,100,10,19 -210,shoot,"shoot N",3,1681,92,-2,25,3,-4,25,21,92,10,19 -211,shoot,"shoot N",3,1695,84,-2,25,3,-4,25,21,84,10,19 -212,shoot,"shoot N",3,1708,76,-2,25,3,-4,25,21,76,10,19 -213,move,"move 11 18",3,1713,76,-2,25,3,-4,25,21,76,11,18 diff --git a/tests/replays/2019.08.19.21.57.04/B-init.json b/tests/replays/2019.08.19.21.57.04/B-init.json deleted file mode 100644 index 2d71d9a..0000000 --- a/tests/replays/2019.08.19.21.57.04/B-init.json +++ /dev/null @@ -1 +0,0 @@ -{"currentRound":1,"maxRounds":400,"pushbackDamage":20,"lavaDamage":3,"mapSize":33,"currentWormId":1,"consecutiveDoNothingCount":0,"myPlayer":{"id":2,"score":116,"health":350,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":8,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":8,"y":4},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":31,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]},"opponents":[{"id":1,"score":116,"currentWormId":1,"remainingWormSelections":5,"previousCommand":"nothing","worms":[{"id":1,"health":150,"position":{"x":24,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"},{"id":2,"health":100,"position":{"x":24,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"},{"id":3,"health":100,"position":{"x":1,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}]}],"map":[[{"x":0,"y":0,"type":"DEEP_SPACE"},{"x":1,"y":0,"type":"DEEP_SPACE"},{"x":2,"y":0,"type":"DEEP_SPACE"},{"x":3,"y":0,"type":"DEEP_SPACE"},{"x":4,"y":0,"type":"DEEP_SPACE"},{"x":5,"y":0,"type":"DEEP_SPACE"},{"x":6,"y":0,"type":"DEEP_SPACE"},{"x":7,"y":0,"type":"DEEP_SPACE"},{"x":8,"y":0,"type":"DEEP_SPACE"},{"x":9,"y":0,"type":"DEEP_SPACE"},{"x":10,"y":0,"type":"DEEP_SPACE"},{"x":11,"y":0,"type":"DIRT"},{"x":12,"y":0,"type":"DIRT"},{"x":13,"y":0,"type":"DIRT"},{"x":14,"y":0,"type":"AIR"},{"x":15,"y":0,"type":"AIR"},{"x":16,"y":0,"type":"DIRT"},{"x":17,"y":0,"type":"AIR"},{"x":18,"y":0,"type":"AIR"},{"x":19,"y":0,"type":"DIRT"},{"x":20,"y":0,"type":"DIRT"},{"x":21,"y":0,"type":"DIRT"},{"x":22,"y":0,"type":"DEEP_SPACE"},{"x":23,"y":0,"type":"DEEP_SPACE"},{"x":24,"y":0,"type":"DEEP_SPACE"},{"x":25,"y":0,"type":"DEEP_SPACE"},{"x":26,"y":0,"type":"DEEP_SPACE"},{"x":27,"y":0,"type":"DEEP_SPACE"},{"x":28,"y":0,"type":"DEEP_SPACE"},{"x":29,"y":0,"type":"DEEP_SPACE"},{"x":30,"y":0,"type":"DEEP_SPACE"},{"x":31,"y":0,"type":"DEEP_SPACE"},{"x":32,"y":0,"type":"DEEP_SPACE"}],[{"x":0,"y":1,"type":"DEEP_SPACE"},{"x":1,"y":1,"type":"DEEP_SPACE"},{"x":2,"y":1,"type":"DEEP_SPACE"},{"x":3,"y":1,"type":"DEEP_SPACE"},{"x":4,"y":1,"type":"DEEP_SPACE"},{"x":5,"y":1,"type":"DEEP_SPACE"},{"x":6,"y":1,"type":"DEEP_SPACE"},{"x":7,"y":1,"type":"DEEP_SPACE"},{"x":8,"y":1,"type":"DIRT"},{"x":9,"y":1,"type":"DIRT"},{"x":10,"y":1,"type":"AIR"},{"x":11,"y":1,"type":"DIRT"},{"x":12,"y":1,"type":"DIRT"},{"x":13,"y":1,"type":"AIR"},{"x":14,"y":1,"type":"AIR"},{"x":15,"y":1,"type":"DIRT"},{"x":16,"y":1,"type":"DIRT"},{"x":17,"y":1,"type":"DIRT"},{"x":18,"y":1,"type":"AIR"},{"x":19,"y":1,"type":"AIR"},{"x":20,"y":1,"type":"DIRT"},{"x":21,"y":1,"type":"DIRT"},{"x":22,"y":1,"type":"AIR"},{"x":23,"y":1,"type":"DIRT"},{"x":24,"y":1,"type":"DIRT"},{"x":25,"y":1,"type":"DEEP_SPACE"},{"x":26,"y":1,"type":"DEEP_SPACE"},{"x":27,"y":1,"type":"DEEP_SPACE"},{"x":28,"y":1,"type":"DEEP_SPACE"},{"x":29,"y":1,"type":"DEEP_SPACE"},{"x":30,"y":1,"type":"DEEP_SPACE"},{"x":31,"y":1,"type":"DEEP_SPACE"},{"x":32,"y":1,"type":"DEEP_SPACE"}],[{"x":0,"y":2,"type":"DEEP_SPACE"},{"x":1,"y":2,"type":"DEEP_SPACE"},{"x":2,"y":2,"type":"DEEP_SPACE"},{"x":3,"y":2,"type":"DEEP_SPACE"},{"x":4,"y":2,"type":"DEEP_SPACE"},{"x":5,"y":2,"type":"DEEP_SPACE"},{"x":6,"y":2,"type":"DEEP_SPACE"},{"x":7,"y":2,"type":"DIRT"},{"x":8,"y":2,"type":"DIRT"},{"x":9,"y":2,"type":"DIRT"},{"x":10,"y":2,"type":"DIRT"},{"x":11,"y":2,"type":"DIRT"},{"x":12,"y":2,"type":"DIRT"},{"x":13,"y":2,"type":"DIRT"},{"x":14,"y":2,"type":"DIRT"},{"x":15,"y":2,"type":"AIR"},{"x":16,"y":2,"type":"AIR"},{"x":17,"y":2,"type":"AIR"},{"x":18,"y":2,"type":"DIRT"},{"x":19,"y":2,"type":"DIRT"},{"x":20,"y":2,"type":"DIRT"},{"x":21,"y":2,"type":"DIRT"},{"x":22,"y":2,"type":"DIRT"},{"x":23,"y":2,"type":"DIRT"},{"x":24,"y":2,"type":"DIRT"},{"x":25,"y":2,"type":"DIRT"},{"x":26,"y":2,"type":"DEEP_SPACE"},{"x":27,"y":2,"type":"DEEP_SPACE"},{"x":28,"y":2,"type":"DEEP_SPACE"},{"x":29,"y":2,"type":"DEEP_SPACE"},{"x":30,"y":2,"type":"DEEP_SPACE"},{"x":31,"y":2,"type":"DEEP_SPACE"},{"x":32,"y":2,"type":"DEEP_SPACE"}],[{"x":0,"y":3,"type":"DEEP_SPACE"},{"x":1,"y":3,"type":"DEEP_SPACE"},{"x":2,"y":3,"type":"DEEP_SPACE"},{"x":3,"y":3,"type":"DEEP_SPACE"},{"x":4,"y":3,"type":"DEEP_SPACE"},{"x":5,"y":3,"type":"DEEP_SPACE"},{"x":6,"y":3,"type":"DIRT"},{"x":7,"y":3,"type":"AIR"},{"x":8,"y":3,"type":"AIR"},{"x":9,"y":3,"type":"AIR"},{"x":10,"y":3,"type":"DIRT"},{"x":11,"y":3,"type":"DIRT"},{"x":12,"y":3,"type":"DIRT"},{"x":13,"y":3,"type":"DIRT"},{"x":14,"y":3,"type":"AIR"},{"x":15,"y":3,"type":"AIR"},{"x":16,"y":3,"type":"AIR"},{"x":17,"y":3,"type":"AIR"},{"x":18,"y":3,"type":"AIR"},{"x":19,"y":3,"type":"DIRT"},{"x":20,"y":3,"type":"DIRT"},{"x":21,"y":3,"type":"DIRT"},{"x":22,"y":3,"type":"DIRT"},{"x":23,"y":3,"type":"AIR"},{"x":24,"y":3,"type":"AIR"},{"x":25,"y":3,"type":"AIR"},{"x":26,"y":3,"type":"DIRT"},{"x":27,"y":3,"type":"DEEP_SPACE"},{"x":28,"y":3,"type":"DEEP_SPACE"},{"x":29,"y":3,"type":"DEEP_SPACE"},{"x":30,"y":3,"type":"DEEP_SPACE"},{"x":31,"y":3,"type":"DEEP_SPACE"},{"x":32,"y":3,"type":"DEEP_SPACE"}],[{"x":0,"y":4,"type":"DEEP_SPACE"},{"x":1,"y":4,"type":"DEEP_SPACE"},{"x":2,"y":4,"type":"DEEP_SPACE"},{"x":3,"y":4,"type":"DEEP_SPACE"},{"x":4,"y":4,"type":"DIRT"},{"x":5,"y":4,"type":"DIRT"},{"x":6,"y":4,"type":"DIRT"},{"x":7,"y":4,"type":"AIR"},{"x":8,"y":4,"type":"AIR","occupier":{"id":2,"playerId":2,"health":100,"position":{"x":8,"y":4},"weapon":{"damage":8,"range":4},"bananaBombs":{"damage":20,"range":5,"count":3,"damageRadius":2},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":9,"y":4,"type":"AIR"},{"x":10,"y":4,"type":"DIRT"},{"x":11,"y":4,"type":"DIRT"},{"x":12,"y":4,"type":"AIR"},{"x":13,"y":4,"type":"AIR"},{"x":14,"y":4,"type":"AIR"},{"x":15,"y":4,"type":"AIR"},{"x":16,"y":4,"type":"AIR"},{"x":17,"y":4,"type":"AIR"},{"x":18,"y":4,"type":"AIR"},{"x":19,"y":4,"type":"AIR"},{"x":20,"y":4,"type":"AIR"},{"x":21,"y":4,"type":"DIRT"},{"x":22,"y":4,"type":"DIRT"},{"x":23,"y":4,"type":"AIR"},{"x":24,"y":4,"type":"AIR","occupier":{"id":1,"playerId":1,"health":150,"position":{"x":24,"y":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":25,"y":4,"type":"AIR"},{"x":26,"y":4,"type":"DIRT"},{"x":27,"y":4,"type":"DIRT"},{"x":28,"y":4,"type":"DIRT"},{"x":29,"y":4,"type":"DEEP_SPACE"},{"x":30,"y":4,"type":"DEEP_SPACE"},{"x":31,"y":4,"type":"DEEP_SPACE"},{"x":32,"y":4,"type":"DEEP_SPACE"}],[{"x":0,"y":5,"type":"DEEP_SPACE"},{"x":1,"y":5,"type":"DEEP_SPACE"},{"x":2,"y":5,"type":"DEEP_SPACE"},{"x":3,"y":5,"type":"DEEP_SPACE"},{"x":4,"y":5,"type":"DIRT"},{"x":5,"y":5,"type":"DIRT"},{"x":6,"y":5,"type":"DIRT"},{"x":7,"y":5,"type":"AIR"},{"x":8,"y":5,"type":"AIR"},{"x":9,"y":5,"type":"AIR"},{"x":10,"y":5,"type":"DIRT"},{"x":11,"y":5,"type":"DIRT"},{"x":12,"y":5,"type":"DIRT"},{"x":13,"y":5,"type":"DIRT"},{"x":14,"y":5,"type":"AIR"},{"x":15,"y":5,"type":"AIR"},{"x":16,"y":5,"type":"AIR"},{"x":17,"y":5,"type":"AIR"},{"x":18,"y":5,"type":"AIR"},{"x":19,"y":5,"type":"DIRT"},{"x":20,"y":5,"type":"DIRT"},{"x":21,"y":5,"type":"DIRT"},{"x":22,"y":5,"type":"DIRT"},{"x":23,"y":5,"type":"AIR"},{"x":24,"y":5,"type":"AIR"},{"x":25,"y":5,"type":"AIR"},{"x":26,"y":5,"type":"DIRT"},{"x":27,"y":5,"type":"DIRT"},{"x":28,"y":5,"type":"DIRT"},{"x":29,"y":5,"type":"DEEP_SPACE"},{"x":30,"y":5,"type":"DEEP_SPACE"},{"x":31,"y":5,"type":"DEEP_SPACE"},{"x":32,"y":5,"type":"DEEP_SPACE"}],[{"x":0,"y":6,"type":"DEEP_SPACE"},{"x":1,"y":6,"type":"DEEP_SPACE"},{"x":2,"y":6,"type":"DEEP_SPACE"},{"x":3,"y":6,"type":"AIR"},{"x":4,"y":6,"type":"DIRT"},{"x":5,"y":6,"type":"DIRT"},{"x":6,"y":6,"type":"DIRT"},{"x":7,"y":6,"type":"DIRT"},{"x":8,"y":6,"type":"DIRT"},{"x":9,"y":6,"type":"DIRT"},{"x":10,"y":6,"type":"DIRT"},{"x":11,"y":6,"type":"AIR"},{"x":12,"y":6,"type":"AIR"},{"x":13,"y":6,"type":"DIRT"},{"x":14,"y":6,"type":"DIRT"},{"x":15,"y":6,"type":"AIR"},{"x":16,"y":6,"type":"AIR"},{"x":17,"y":6,"type":"AIR"},{"x":18,"y":6,"type":"DIRT"},{"x":19,"y":6,"type":"DIRT"},{"x":20,"y":6,"type":"AIR"},{"x":21,"y":6,"type":"AIR"},{"x":22,"y":6,"type":"DIRT"},{"x":23,"y":6,"type":"DIRT"},{"x":24,"y":6,"type":"DIRT"},{"x":25,"y":6,"type":"DIRT"},{"x":26,"y":6,"type":"DIRT"},{"x":27,"y":6,"type":"DIRT"},{"x":28,"y":6,"type":"DIRT"},{"x":29,"y":6,"type":"AIR"},{"x":30,"y":6,"type":"DEEP_SPACE"},{"x":31,"y":6,"type":"DEEP_SPACE"},{"x":32,"y":6,"type":"DEEP_SPACE"}],[{"x":0,"y":7,"type":"DEEP_SPACE"},{"x":1,"y":7,"type":"DEEP_SPACE"},{"x":2,"y":7,"type":"DIRT"},{"x":3,"y":7,"type":"AIR"},{"x":4,"y":7,"type":"DIRT"},{"x":5,"y":7,"type":"DIRT"},{"x":6,"y":7,"type":"DIRT"},{"x":7,"y":7,"type":"AIR"},{"x":8,"y":7,"type":"AIR"},{"x":9,"y":7,"type":"AIR"},{"x":10,"y":7,"type":"AIR"},{"x":11,"y":7,"type":"DIRT"},{"x":12,"y":7,"type":"DIRT"},{"x":13,"y":7,"type":"DIRT"},{"x":14,"y":7,"type":"DIRT"},{"x":15,"y":7,"type":"DIRT"},{"x":16,"y":7,"type":"AIR"},{"x":17,"y":7,"type":"DIRT"},{"x":18,"y":7,"type":"DIRT"},{"x":19,"y":7,"type":"DIRT"},{"x":20,"y":7,"type":"DIRT"},{"x":21,"y":7,"type":"DIRT"},{"x":22,"y":7,"type":"AIR"},{"x":23,"y":7,"type":"AIR"},{"x":24,"y":7,"type":"AIR"},{"x":25,"y":7,"type":"AIR"},{"x":26,"y":7,"type":"DIRT"},{"x":27,"y":7,"type":"DIRT"},{"x":28,"y":7,"type":"DIRT"},{"x":29,"y":7,"type":"AIR"},{"x":30,"y":7,"type":"DIRT"},{"x":31,"y":7,"type":"DEEP_SPACE"},{"x":32,"y":7,"type":"DEEP_SPACE"}],[{"x":0,"y":8,"type":"DEEP_SPACE"},{"x":1,"y":8,"type":"DIRT"},{"x":2,"y":8,"type":"DIRT"},{"x":3,"y":8,"type":"AIR"},{"x":4,"y":8,"type":"AIR"},{"x":5,"y":8,"type":"DIRT"},{"x":6,"y":8,"type":"DIRT"},{"x":7,"y":8,"type":"AIR"},{"x":8,"y":8,"type":"AIR"},{"x":9,"y":8,"type":"AIR"},{"x":10,"y":8,"type":"AIR"},{"x":11,"y":8,"type":"DIRT"},{"x":12,"y":8,"type":"DIRT"},{"x":13,"y":8,"type":"AIR"},{"x":14,"y":8,"type":"AIR"},{"x":15,"y":8,"type":"AIR"},{"x":16,"y":8,"type":"DIRT"},{"x":17,"y":8,"type":"AIR"},{"x":18,"y":8,"type":"AIR"},{"x":19,"y":8,"type":"AIR"},{"x":20,"y":8,"type":"DIRT"},{"x":21,"y":8,"type":"DIRT"},{"x":22,"y":8,"type":"AIR"},{"x":23,"y":8,"type":"AIR"},{"x":24,"y":8,"type":"AIR"},{"x":25,"y":8,"type":"AIR"},{"x":26,"y":8,"type":"DIRT"},{"x":27,"y":8,"type":"DIRT"},{"x":28,"y":8,"type":"AIR"},{"x":29,"y":8,"type":"AIR"},{"x":30,"y":8,"type":"DIRT"},{"x":31,"y":8,"type":"DIRT"},{"x":32,"y":8,"type":"DEEP_SPACE"}],[{"x":0,"y":9,"type":"DEEP_SPACE"},{"x":1,"y":9,"type":"DIRT"},{"x":2,"y":9,"type":"DIRT"},{"x":3,"y":9,"type":"AIR"},{"x":4,"y":9,"type":"AIR"},{"x":5,"y":9,"type":"DIRT"},{"x":6,"y":9,"type":"DIRT"},{"x":7,"y":9,"type":"AIR"},{"x":8,"y":9,"type":"AIR"},{"x":9,"y":9,"type":"AIR"},{"x":10,"y":9,"type":"DIRT"},{"x":11,"y":9,"type":"DIRT"},{"x":12,"y":9,"type":"AIR"},{"x":13,"y":9,"type":"AIR"},{"x":14,"y":9,"type":"DIRT"},{"x":15,"y":9,"type":"AIR"},{"x":16,"y":9,"type":"DIRT"},{"x":17,"y":9,"type":"AIR"},{"x":18,"y":9,"type":"DIRT"},{"x":19,"y":9,"type":"AIR"},{"x":20,"y":9,"type":"AIR"},{"x":21,"y":9,"type":"DIRT"},{"x":22,"y":9,"type":"DIRT"},{"x":23,"y":9,"type":"AIR"},{"x":24,"y":9,"type":"AIR"},{"x":25,"y":9,"type":"AIR"},{"x":26,"y":9,"type":"DIRT"},{"x":27,"y":9,"type":"DIRT"},{"x":28,"y":9,"type":"AIR"},{"x":29,"y":9,"type":"AIR"},{"x":30,"y":9,"type":"DIRT"},{"x":31,"y":9,"type":"DIRT"},{"x":32,"y":9,"type":"DEEP_SPACE"}],[{"x":0,"y":10,"type":"DEEP_SPACE"},{"x":1,"y":10,"type":"DIRT"},{"x":2,"y":10,"type":"DIRT"},{"x":3,"y":10,"type":"DIRT"},{"x":4,"y":10,"type":"DIRT"},{"x":5,"y":10,"type":"DIRT"},{"x":6,"y":10,"type":"AIR"},{"x":7,"y":10,"type":"AIR"},{"x":8,"y":10,"type":"AIR"},{"x":9,"y":10,"type":"AIR"},{"x":10,"y":10,"type":"DIRT"},{"x":11,"y":10,"type":"AIR"},{"x":12,"y":10,"type":"AIR"},{"x":13,"y":10,"type":"AIR"},{"x":14,"y":10,"type":"DIRT"},{"x":15,"y":10,"type":"AIR"},{"x":16,"y":10,"type":"AIR"},{"x":17,"y":10,"type":"AIR"},{"x":18,"y":10,"type":"DIRT"},{"x":19,"y":10,"type":"AIR"},{"x":20,"y":10,"type":"AIR"},{"x":21,"y":10,"type":"AIR"},{"x":22,"y":10,"type":"DIRT"},{"x":23,"y":10,"type":"AIR"},{"x":24,"y":10,"type":"AIR"},{"x":25,"y":10,"type":"AIR"},{"x":26,"y":10,"type":"AIR"},{"x":27,"y":10,"type":"DIRT"},{"x":28,"y":10,"type":"DIRT"},{"x":29,"y":10,"type":"DIRT"},{"x":30,"y":10,"type":"DIRT"},{"x":31,"y":10,"type":"DIRT"},{"x":32,"y":10,"type":"DEEP_SPACE"}],[{"x":0,"y":11,"type":"DIRT"},{"x":1,"y":11,"type":"DIRT"},{"x":2,"y":11,"type":"DIRT"},{"x":3,"y":11,"type":"DIRT"},{"x":4,"y":11,"type":"DIRT"},{"x":5,"y":11,"type":"DIRT"},{"x":6,"y":11,"type":"AIR"},{"x":7,"y":11,"type":"AIR"},{"x":8,"y":11,"type":"AIR"},{"x":9,"y":11,"type":"AIR"},{"x":10,"y":11,"type":"AIR"},{"x":11,"y":11,"type":"AIR"},{"x":12,"y":11,"type":"AIR"},{"x":13,"y":11,"type":"AIR"},{"x":14,"y":11,"type":"DIRT"},{"x":15,"y":11,"type":"DIRT"},{"x":16,"y":11,"type":"DIRT"},{"x":17,"y":11,"type":"DIRT"},{"x":18,"y":11,"type":"DIRT"},{"x":19,"y":11,"type":"AIR"},{"x":20,"y":11,"type":"AIR"},{"x":21,"y":11,"type":"AIR"},{"x":22,"y":11,"type":"AIR"},{"x":23,"y":11,"type":"AIR"},{"x":24,"y":11,"type":"AIR"},{"x":25,"y":11,"type":"AIR"},{"x":26,"y":11,"type":"AIR"},{"x":27,"y":11,"type":"DIRT"},{"x":28,"y":11,"type":"DIRT"},{"x":29,"y":11,"type":"DIRT"},{"x":30,"y":11,"type":"DIRT"},{"x":31,"y":11,"type":"DIRT"},{"x":32,"y":11,"type":"DIRT"}],[{"x":0,"y":12,"type":"DIRT"},{"x":1,"y":12,"type":"DIRT"},{"x":2,"y":12,"type":"AIR"},{"x":3,"y":12,"type":"DIRT"},{"x":4,"y":12,"type":"DIRT"},{"x":5,"y":12,"type":"DIRT"},{"x":6,"y":12,"type":"DIRT"},{"x":7,"y":12,"type":"AIR"},{"x":8,"y":12,"type":"AIR"},{"x":9,"y":12,"type":"AIR"},{"x":10,"y":12,"type":"AIR"},{"x":11,"y":12,"type":"AIR"},{"x":12,"y":12,"type":"DIRT"},{"x":13,"y":12,"type":"DIRT"},{"x":14,"y":12,"type":"AIR"},{"x":15,"y":12,"type":"AIR"},{"x":16,"y":12,"type":"DIRT"},{"x":17,"y":12,"type":"AIR"},{"x":18,"y":12,"type":"AIR"},{"x":19,"y":12,"type":"DIRT"},{"x":20,"y":12,"type":"DIRT"},{"x":21,"y":12,"type":"AIR"},{"x":22,"y":12,"type":"AIR"},{"x":23,"y":12,"type":"AIR"},{"x":24,"y":12,"type":"AIR"},{"x":25,"y":12,"type":"AIR"},{"x":26,"y":12,"type":"DIRT"},{"x":27,"y":12,"type":"DIRT"},{"x":28,"y":12,"type":"DIRT"},{"x":29,"y":12,"type":"DIRT"},{"x":30,"y":12,"type":"AIR"},{"x":31,"y":12,"type":"DIRT"},{"x":32,"y":12,"type":"DIRT"}],[{"x":0,"y":13,"type":"DIRT"},{"x":1,"y":13,"type":"AIR"},{"x":2,"y":13,"type":"AIR"},{"x":3,"y":13,"type":"DIRT"},{"x":4,"y":13,"type":"DIRT"},{"x":5,"y":13,"type":"DIRT"},{"x":6,"y":13,"type":"AIR"},{"x":7,"y":13,"type":"AIR"},{"x":8,"y":13,"type":"AIR"},{"x":9,"y":13,"type":"AIR"},{"x":10,"y":13,"type":"AIR"},{"x":11,"y":13,"type":"AIR"},{"x":12,"y":13,"type":"DIRT"},{"x":13,"y":13,"type":"DIRT"},{"x":14,"y":13,"type":"AIR"},{"x":15,"y":13,"type":"AIR"},{"x":16,"y":13,"type":"AIR"},{"x":17,"y":13,"type":"AIR"},{"x":18,"y":13,"type":"AIR"},{"x":19,"y":13,"type":"DIRT"},{"x":20,"y":13,"type":"DIRT"},{"x":21,"y":13,"type":"AIR"},{"x":22,"y":13,"type":"AIR"},{"x":23,"y":13,"type":"AIR"},{"x":24,"y":13,"type":"AIR"},{"x":25,"y":13,"type":"AIR"},{"x":26,"y":13,"type":"AIR"},{"x":27,"y":13,"type":"DIRT"},{"x":28,"y":13,"type":"DIRT"},{"x":29,"y":13,"type":"DIRT"},{"x":30,"y":13,"type":"AIR"},{"x":31,"y":13,"type":"AIR"},{"x":32,"y":13,"type":"DIRT"}],[{"x":0,"y":14,"type":"DIRT"},{"x":1,"y":14,"type":"DIRT"},{"x":2,"y":14,"type":"DIRT"},{"x":3,"y":14,"type":"DIRT"},{"x":4,"y":14,"type":"DIRT"},{"x":5,"y":14,"type":"DIRT"},{"x":6,"y":14,"type":"AIR"},{"x":7,"y":14,"type":"AIR"},{"x":8,"y":14,"type":"AIR"},{"x":9,"y":14,"type":"DIRT"},{"x":10,"y":14,"type":"DIRT"},{"x":11,"y":14,"type":"DIRT"},{"x":12,"y":14,"type":"DIRT"},{"x":13,"y":14,"type":"DIRT"},{"x":14,"y":14,"type":"DIRT"},{"x":15,"y":14,"type":"AIR"},{"x":16,"y":14,"type":"AIR"},{"x":17,"y":14,"type":"AIR"},{"x":18,"y":14,"type":"DIRT"},{"x":19,"y":14,"type":"DIRT"},{"x":20,"y":14,"type":"DIRT"},{"x":21,"y":14,"type":"DIRT"},{"x":22,"y":14,"type":"DIRT"},{"x":23,"y":14,"type":"DIRT"},{"x":24,"y":14,"type":"AIR"},{"x":25,"y":14,"type":"AIR"},{"x":26,"y":14,"type":"AIR"},{"x":27,"y":14,"type":"DIRT"},{"x":28,"y":14,"type":"DIRT"},{"x":29,"y":14,"type":"DIRT"},{"x":30,"y":14,"type":"DIRT"},{"x":31,"y":14,"type":"DIRT"},{"x":32,"y":14,"type":"DIRT"}],[{"x":0,"y":15,"type":"AIR"},{"x":1,"y":15,"type":"AIR"},{"x":2,"y":15,"type":"AIR"},{"x":3,"y":15,"type":"DIRT"},{"x":4,"y":15,"type":"DIRT"},{"x":5,"y":15,"type":"AIR"},{"x":6,"y":15,"type":"AIR"},{"x":7,"y":15,"type":"AIR"},{"x":8,"y":15,"type":"DIRT"},{"x":9,"y":15,"type":"AIR"},{"x":10,"y":15,"type":"DIRT"},{"x":11,"y":15,"type":"DIRT"},{"x":12,"y":15,"type":"DIRT"},{"x":13,"y":15,"type":"DIRT"},{"x":14,"y":15,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":15,"y":15,"type":"AIR"},{"x":16,"y":15,"type":"DIRT"},{"x":17,"y":15,"type":"AIR"},{"x":18,"y":15,"type":"AIR"},{"x":19,"y":15,"type":"DIRT"},{"x":20,"y":15,"type":"DIRT"},{"x":21,"y":15,"type":"DIRT"},{"x":22,"y":15,"type":"DIRT"},{"x":23,"y":15,"type":"AIR"},{"x":24,"y":15,"type":"DIRT"},{"x":25,"y":15,"type":"AIR"},{"x":26,"y":15,"type":"AIR"},{"x":27,"y":15,"type":"AIR"},{"x":28,"y":15,"type":"DIRT"},{"x":29,"y":15,"type":"DIRT"},{"x":30,"y":15,"type":"AIR"},{"x":31,"y":15,"type":"AIR"},{"x":32,"y":15,"type":"AIR"}],[{"x":0,"y":16,"type":"AIR"},{"x":1,"y":16,"type":"AIR","occupier":{"id":3,"playerId":1,"health":100,"position":{"x":1,"y":16},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":2,"y":16,"type":"AIR"},{"x":3,"y":16,"type":"DIRT"},{"x":4,"y":16,"type":"AIR"},{"x":5,"y":16,"type":"DIRT"},{"x":6,"y":16,"type":"DIRT"},{"x":7,"y":16,"type":"AIR"},{"x":8,"y":16,"type":"AIR"},{"x":9,"y":16,"type":"DIRT"},{"x":10,"y":16,"type":"DIRT"},{"x":11,"y":16,"type":"DIRT"},{"x":12,"y":16,"type":"DIRT"},{"x":13,"y":16,"type":"DIRT"},{"x":14,"y":16,"type":"DIRT"},{"x":15,"y":16,"type":"AIR"},{"x":16,"y":16,"type":"DIRT"},{"x":17,"y":16,"type":"AIR"},{"x":18,"y":16,"type":"DIRT"},{"x":19,"y":16,"type":"DIRT"},{"x":20,"y":16,"type":"DIRT"},{"x":21,"y":16,"type":"DIRT"},{"x":22,"y":16,"type":"DIRT"},{"x":23,"y":16,"type":"DIRT"},{"x":24,"y":16,"type":"AIR"},{"x":25,"y":16,"type":"AIR"},{"x":26,"y":16,"type":"DIRT"},{"x":27,"y":16,"type":"DIRT"},{"x":28,"y":16,"type":"AIR"},{"x":29,"y":16,"type":"DIRT"},{"x":30,"y":16,"type":"AIR"},{"x":31,"y":16,"type":"AIR","occupier":{"id":3,"playerId":2,"health":100,"position":{"x":31,"y":16},"weapon":{"damage":8,"range":4},"snowballs":{"freezeDuration":5,"range":5,"count":3,"freezeRadius":1},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Technologist"}},{"x":32,"y":16,"type":"AIR"}],[{"x":0,"y":17,"type":"AIR"},{"x":1,"y":17,"type":"AIR"},{"x":2,"y":17,"type":"AIR"},{"x":3,"y":17,"type":"DIRT"},{"x":4,"y":17,"type":"DIRT"},{"x":5,"y":17,"type":"DIRT"},{"x":6,"y":17,"type":"DIRT"},{"x":7,"y":17,"type":"DIRT"},{"x":8,"y":17,"type":"AIR"},{"x":9,"y":17,"type":"DIRT"},{"x":10,"y":17,"type":"DIRT"},{"x":11,"y":17,"type":"AIR"},{"x":12,"y":17,"type":"DIRT"},{"x":13,"y":17,"type":"DIRT"},{"x":14,"y":17,"type":"DIRT"},{"x":15,"y":17,"type":"AIR"},{"x":16,"y":17,"type":"AIR"},{"x":17,"y":17,"type":"AIR"},{"x":18,"y":17,"type":"AIR","powerup":{"type":"HEALTH_PACK","value":10}},{"x":19,"y":17,"type":"DIRT"},{"x":20,"y":17,"type":"DIRT"},{"x":21,"y":17,"type":"AIR"},{"x":22,"y":17,"type":"DIRT"},{"x":23,"y":17,"type":"DIRT"},{"x":24,"y":17,"type":"AIR"},{"x":25,"y":17,"type":"DIRT"},{"x":26,"y":17,"type":"DIRT"},{"x":27,"y":17,"type":"DIRT"},{"x":28,"y":17,"type":"DIRT"},{"x":29,"y":17,"type":"DIRT"},{"x":30,"y":17,"type":"AIR"},{"x":31,"y":17,"type":"AIR"},{"x":32,"y":17,"type":"AIR"}],[{"x":0,"y":18,"type":"DIRT"},{"x":1,"y":18,"type":"DIRT"},{"x":2,"y":18,"type":"DIRT"},{"x":3,"y":18,"type":"DIRT"},{"x":4,"y":18,"type":"DIRT"},{"x":5,"y":18,"type":"DIRT"},{"x":6,"y":18,"type":"DIRT"},{"x":7,"y":18,"type":"DIRT"},{"x":8,"y":18,"type":"DIRT"},{"x":9,"y":18,"type":"AIR"},{"x":10,"y":18,"type":"AIR"},{"x":11,"y":18,"type":"DIRT"},{"x":12,"y":18,"type":"DIRT"},{"x":13,"y":18,"type":"DIRT"},{"x":14,"y":18,"type":"AIR"},{"x":15,"y":18,"type":"AIR"},{"x":16,"y":18,"type":"AIR"},{"x":17,"y":18,"type":"AIR"},{"x":18,"y":18,"type":"AIR"},{"x":19,"y":18,"type":"DIRT"},{"x":20,"y":18,"type":"DIRT"},{"x":21,"y":18,"type":"DIRT"},{"x":22,"y":18,"type":"AIR"},{"x":23,"y":18,"type":"AIR"},{"x":24,"y":18,"type":"DIRT"},{"x":25,"y":18,"type":"DIRT"},{"x":26,"y":18,"type":"DIRT"},{"x":27,"y":18,"type":"DIRT"},{"x":28,"y":18,"type":"DIRT"},{"x":29,"y":18,"type":"DIRT"},{"x":30,"y":18,"type":"DIRT"},{"x":31,"y":18,"type":"DIRT"},{"x":32,"y":18,"type":"DIRT"}],[{"x":0,"y":19,"type":"AIR"},{"x":1,"y":19,"type":"AIR"},{"x":2,"y":19,"type":"DIRT"},{"x":3,"y":19,"type":"AIR"},{"x":4,"y":19,"type":"AIR"},{"x":5,"y":19,"type":"AIR"},{"x":6,"y":19,"type":"AIR"},{"x":7,"y":19,"type":"AIR"},{"x":8,"y":19,"type":"DIRT"},{"x":9,"y":19,"type":"AIR"},{"x":10,"y":19,"type":"AIR"},{"x":11,"y":19,"type":"DIRT"},{"x":12,"y":19,"type":"DIRT"},{"x":13,"y":19,"type":"AIR"},{"x":14,"y":19,"type":"AIR"},{"x":15,"y":19,"type":"AIR"},{"x":16,"y":19,"type":"AIR"},{"x":17,"y":19,"type":"AIR"},{"x":18,"y":19,"type":"AIR"},{"x":19,"y":19,"type":"AIR"},{"x":20,"y":19,"type":"DIRT"},{"x":21,"y":19,"type":"DIRT"},{"x":22,"y":19,"type":"AIR"},{"x":23,"y":19,"type":"AIR"},{"x":24,"y":19,"type":"DIRT"},{"x":25,"y":19,"type":"AIR"},{"x":26,"y":19,"type":"AIR"},{"x":27,"y":19,"type":"AIR"},{"x":28,"y":19,"type":"AIR"},{"x":29,"y":19,"type":"AIR"},{"x":30,"y":19,"type":"DIRT"},{"x":31,"y":19,"type":"AIR"},{"x":32,"y":19,"type":"AIR"}],[{"x":0,"y":20,"type":"AIR"},{"x":1,"y":20,"type":"AIR"},{"x":2,"y":20,"type":"DIRT"},{"x":3,"y":20,"type":"DIRT"},{"x":4,"y":20,"type":"AIR"},{"x":5,"y":20,"type":"AIR"},{"x":6,"y":20,"type":"AIR"},{"x":7,"y":20,"type":"AIR"},{"x":8,"y":20,"type":"AIR"},{"x":9,"y":20,"type":"AIR"},{"x":10,"y":20,"type":"AIR"},{"x":11,"y":20,"type":"DIRT"},{"x":12,"y":20,"type":"DIRT"},{"x":13,"y":20,"type":"DIRT"},{"x":14,"y":20,"type":"AIR"},{"x":15,"y":20,"type":"AIR"},{"x":16,"y":20,"type":"AIR"},{"x":17,"y":20,"type":"AIR"},{"x":18,"y":20,"type":"AIR"},{"x":19,"y":20,"type":"DIRT"},{"x":20,"y":20,"type":"DIRT"},{"x":21,"y":20,"type":"DIRT"},{"x":22,"y":20,"type":"AIR"},{"x":23,"y":20,"type":"AIR"},{"x":24,"y":20,"type":"AIR"},{"x":25,"y":20,"type":"AIR"},{"x":26,"y":20,"type":"AIR"},{"x":27,"y":20,"type":"AIR"},{"x":28,"y":20,"type":"AIR"},{"x":29,"y":20,"type":"DIRT"},{"x":30,"y":20,"type":"DIRT"},{"x":31,"y":20,"type":"AIR"},{"x":32,"y":20,"type":"AIR"}],[{"x":0,"y":21,"type":"AIR"},{"x":1,"y":21,"type":"DIRT"},{"x":2,"y":21,"type":"DIRT"},{"x":3,"y":21,"type":"DIRT"},{"x":4,"y":21,"type":"DIRT"},{"x":5,"y":21,"type":"AIR"},{"x":6,"y":21,"type":"AIR"},{"x":7,"y":21,"type":"AIR"},{"x":8,"y":21,"type":"AIR"},{"x":9,"y":21,"type":"AIR"},{"x":10,"y":21,"type":"DIRT"},{"x":11,"y":21,"type":"DIRT"},{"x":12,"y":21,"type":"DIRT"},{"x":13,"y":21,"type":"DIRT"},{"x":14,"y":21,"type":"DIRT"},{"x":15,"y":21,"type":"AIR"},{"x":16,"y":21,"type":"AIR"},{"x":17,"y":21,"type":"AIR"},{"x":18,"y":21,"type":"DIRT"},{"x":19,"y":21,"type":"DIRT"},{"x":20,"y":21,"type":"DIRT"},{"x":21,"y":21,"type":"DIRT"},{"x":22,"y":21,"type":"DIRT"},{"x":23,"y":21,"type":"AIR"},{"x":24,"y":21,"type":"AIR"},{"x":25,"y":21,"type":"AIR"},{"x":26,"y":21,"type":"AIR"},{"x":27,"y":21,"type":"AIR"},{"x":28,"y":21,"type":"DIRT"},{"x":29,"y":21,"type":"DIRT"},{"x":30,"y":21,"type":"DIRT"},{"x":31,"y":21,"type":"DIRT"},{"x":32,"y":21,"type":"AIR"}],[{"x":0,"y":22,"type":"DEEP_SPACE"},{"x":1,"y":22,"type":"DIRT"},{"x":2,"y":22,"type":"AIR"},{"x":3,"y":22,"type":"DIRT"},{"x":4,"y":22,"type":"DIRT"},{"x":5,"y":22,"type":"AIR"},{"x":6,"y":22,"type":"AIR"},{"x":7,"y":22,"type":"AIR"},{"x":8,"y":22,"type":"AIR"},{"x":9,"y":22,"type":"AIR"},{"x":10,"y":22,"type":"DIRT"},{"x":11,"y":22,"type":"DIRT"},{"x":12,"y":22,"type":"AIR"},{"x":13,"y":22,"type":"AIR"},{"x":14,"y":22,"type":"DIRT"},{"x":15,"y":22,"type":"AIR"},{"x":16,"y":22,"type":"AIR"},{"x":17,"y":22,"type":"AIR"},{"x":18,"y":22,"type":"DIRT"},{"x":19,"y":22,"type":"AIR"},{"x":20,"y":22,"type":"AIR"},{"x":21,"y":22,"type":"DIRT"},{"x":22,"y":22,"type":"DIRT"},{"x":23,"y":22,"type":"AIR"},{"x":24,"y":22,"type":"AIR"},{"x":25,"y":22,"type":"AIR"},{"x":26,"y":22,"type":"AIR"},{"x":27,"y":22,"type":"AIR"},{"x":28,"y":22,"type":"DIRT"},{"x":29,"y":22,"type":"DIRT"},{"x":30,"y":22,"type":"AIR"},{"x":31,"y":22,"type":"DIRT"},{"x":32,"y":22,"type":"DEEP_SPACE"}],[{"x":0,"y":23,"type":"DEEP_SPACE"},{"x":1,"y":23,"type":"DIRT"},{"x":2,"y":23,"type":"AIR"},{"x":3,"y":23,"type":"DIRT"},{"x":4,"y":23,"type":"DIRT"},{"x":5,"y":23,"type":"DIRT"},{"x":6,"y":23,"type":"AIR"},{"x":7,"y":23,"type":"AIR"},{"x":8,"y":23,"type":"DIRT"},{"x":9,"y":23,"type":"DIRT"},{"x":10,"y":23,"type":"DIRT"},{"x":11,"y":23,"type":"DIRT"},{"x":12,"y":23,"type":"AIR"},{"x":13,"y":23,"type":"AIR"},{"x":14,"y":23,"type":"DIRT"},{"x":15,"y":23,"type":"AIR"},{"x":16,"y":23,"type":"AIR"},{"x":17,"y":23,"type":"AIR"},{"x":18,"y":23,"type":"DIRT"},{"x":19,"y":23,"type":"AIR"},{"x":20,"y":23,"type":"AIR"},{"x":21,"y":23,"type":"DIRT"},{"x":22,"y":23,"type":"DIRT"},{"x":23,"y":23,"type":"DIRT"},{"x":24,"y":23,"type":"DIRT"},{"x":25,"y":23,"type":"AIR"},{"x":26,"y":23,"type":"AIR"},{"x":27,"y":23,"type":"DIRT"},{"x":28,"y":23,"type":"DIRT"},{"x":29,"y":23,"type":"DIRT"},{"x":30,"y":23,"type":"AIR"},{"x":31,"y":23,"type":"DIRT"},{"x":32,"y":23,"type":"DEEP_SPACE"}],[{"x":0,"y":24,"type":"DEEP_SPACE"},{"x":1,"y":24,"type":"DIRT"},{"x":2,"y":24,"type":"DIRT"},{"x":3,"y":24,"type":"DIRT"},{"x":4,"y":24,"type":"DIRT"},{"x":5,"y":24,"type":"DIRT"},{"x":6,"y":24,"type":"AIR"},{"x":7,"y":24,"type":"AIR"},{"x":8,"y":24,"type":"DIRT"},{"x":9,"y":24,"type":"AIR"},{"x":10,"y":24,"type":"AIR"},{"x":11,"y":24,"type":"AIR"},{"x":12,"y":24,"type":"AIR"},{"x":13,"y":24,"type":"AIR"},{"x":14,"y":24,"type":"DIRT"},{"x":15,"y":24,"type":"DIRT"},{"x":16,"y":24,"type":"DIRT"},{"x":17,"y":24,"type":"DIRT"},{"x":18,"y":24,"type":"DIRT"},{"x":19,"y":24,"type":"AIR"},{"x":20,"y":24,"type":"AIR"},{"x":21,"y":24,"type":"AIR"},{"x":22,"y":24,"type":"AIR"},{"x":23,"y":24,"type":"AIR"},{"x":24,"y":24,"type":"DIRT"},{"x":25,"y":24,"type":"AIR"},{"x":26,"y":24,"type":"AIR"},{"x":27,"y":24,"type":"DIRT"},{"x":28,"y":24,"type":"DIRT"},{"x":29,"y":24,"type":"DIRT"},{"x":30,"y":24,"type":"DIRT"},{"x":31,"y":24,"type":"DIRT"},{"x":32,"y":24,"type":"DEEP_SPACE"}],[{"x":0,"y":25,"type":"DEEP_SPACE"},{"x":1,"y":25,"type":"DEEP_SPACE"},{"x":2,"y":25,"type":"DIRT"},{"x":3,"y":25,"type":"AIR"},{"x":4,"y":25,"type":"DIRT"},{"x":5,"y":25,"type":"DIRT"},{"x":6,"y":25,"type":"AIR"},{"x":7,"y":25,"type":"AIR"},{"x":8,"y":25,"type":"DIRT"},{"x":9,"y":25,"type":"DIRT"},{"x":10,"y":25,"type":"AIR"},{"x":11,"y":25,"type":"AIR"},{"x":12,"y":25,"type":"AIR"},{"x":13,"y":25,"type":"AIR"},{"x":14,"y":25,"type":"DIRT"},{"x":15,"y":25,"type":"AIR"},{"x":16,"y":25,"type":"DIRT"},{"x":17,"y":25,"type":"AIR"},{"x":18,"y":25,"type":"DIRT"},{"x":19,"y":25,"type":"AIR"},{"x":20,"y":25,"type":"AIR"},{"x":21,"y":25,"type":"AIR"},{"x":22,"y":25,"type":"AIR"},{"x":23,"y":25,"type":"DIRT"},{"x":24,"y":25,"type":"DIRT"},{"x":25,"y":25,"type":"AIR"},{"x":26,"y":25,"type":"AIR"},{"x":27,"y":25,"type":"DIRT"},{"x":28,"y":25,"type":"DIRT"},{"x":29,"y":25,"type":"AIR"},{"x":30,"y":25,"type":"DIRT"},{"x":31,"y":25,"type":"DEEP_SPACE"},{"x":32,"y":25,"type":"DEEP_SPACE"}],[{"x":0,"y":26,"type":"DEEP_SPACE"},{"x":1,"y":26,"type":"DEEP_SPACE"},{"x":2,"y":26,"type":"DEEP_SPACE"},{"x":3,"y":26,"type":"AIR"},{"x":4,"y":26,"type":"AIR"},{"x":5,"y":26,"type":"AIR"},{"x":6,"y":26,"type":"DIRT"},{"x":7,"y":26,"type":"DIRT"},{"x":8,"y":26,"type":"DIRT"},{"x":9,"y":26,"type":"DIRT"},{"x":10,"y":26,"type":"DIRT"},{"x":11,"y":26,"type":"AIR"},{"x":12,"y":26,"type":"DIRT"},{"x":13,"y":26,"type":"AIR"},{"x":14,"y":26,"type":"AIR"},{"x":15,"y":26,"type":"DIRT"},{"x":16,"y":26,"type":"DIRT"},{"x":17,"y":26,"type":"DIRT"},{"x":18,"y":26,"type":"AIR"},{"x":19,"y":26,"type":"AIR"},{"x":20,"y":26,"type":"DIRT"},{"x":21,"y":26,"type":"AIR"},{"x":22,"y":26,"type":"DIRT"},{"x":23,"y":26,"type":"DIRT"},{"x":24,"y":26,"type":"DIRT"},{"x":25,"y":26,"type":"DIRT"},{"x":26,"y":26,"type":"DIRT"},{"x":27,"y":26,"type":"AIR"},{"x":28,"y":26,"type":"AIR"},{"x":29,"y":26,"type":"AIR"},{"x":30,"y":26,"type":"DEEP_SPACE"},{"x":31,"y":26,"type":"DEEP_SPACE"},{"x":32,"y":26,"type":"DEEP_SPACE"}],[{"x":0,"y":27,"type":"DEEP_SPACE"},{"x":1,"y":27,"type":"DEEP_SPACE"},{"x":2,"y":27,"type":"DEEP_SPACE"},{"x":3,"y":27,"type":"DEEP_SPACE"},{"x":4,"y":27,"type":"AIR"},{"x":5,"y":27,"type":"AIR"},{"x":6,"y":27,"type":"DIRT"},{"x":7,"y":27,"type":"AIR"},{"x":8,"y":27,"type":"AIR"},{"x":9,"y":27,"type":"AIR"},{"x":10,"y":27,"type":"DIRT"},{"x":11,"y":27,"type":"DIRT"},{"x":12,"y":27,"type":"DIRT"},{"x":13,"y":27,"type":"AIR"},{"x":14,"y":27,"type":"AIR"},{"x":15,"y":27,"type":"DIRT"},{"x":16,"y":27,"type":"DIRT"},{"x":17,"y":27,"type":"DIRT"},{"x":18,"y":27,"type":"AIR"},{"x":19,"y":27,"type":"AIR"},{"x":20,"y":27,"type":"DIRT"},{"x":21,"y":27,"type":"DIRT"},{"x":22,"y":27,"type":"DIRT"},{"x":23,"y":27,"type":"AIR"},{"x":24,"y":27,"type":"AIR"},{"x":25,"y":27,"type":"AIR"},{"x":26,"y":27,"type":"DIRT"},{"x":27,"y":27,"type":"AIR"},{"x":28,"y":27,"type":"AIR"},{"x":29,"y":27,"type":"DEEP_SPACE"},{"x":30,"y":27,"type":"DEEP_SPACE"},{"x":31,"y":27,"type":"DEEP_SPACE"},{"x":32,"y":27,"type":"DEEP_SPACE"}],[{"x":0,"y":28,"type":"DEEP_SPACE"},{"x":1,"y":28,"type":"DEEP_SPACE"},{"x":2,"y":28,"type":"DEEP_SPACE"},{"x":3,"y":28,"type":"DEEP_SPACE"},{"x":4,"y":28,"type":"AIR"},{"x":5,"y":28,"type":"AIR"},{"x":6,"y":28,"type":"DIRT"},{"x":7,"y":28,"type":"AIR"},{"x":8,"y":28,"type":"AIR","occupier":{"id":1,"playerId":2,"health":150,"position":{"x":8,"y":28},"weapon":{"damage":8,"range":4},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Commando"}},{"x":9,"y":28,"type":"AIR"},{"x":10,"y":28,"type":"DIRT"},{"x":11,"y":28,"type":"DIRT"},{"x":12,"y":28,"type":"AIR"},{"x":13,"y":28,"type":"AIR"},{"x":14,"y":28,"type":"AIR"},{"x":15,"y":28,"type":"DIRT"},{"x":16,"y":28,"type":"DIRT"},{"x":17,"y":28,"type":"DIRT"},{"x":18,"y":28,"type":"AIR"},{"x":19,"y":28,"type":"AIR"},{"x":20,"y":28,"type":"AIR"},{"x":21,"y":28,"type":"DIRT"},{"x":22,"y":28,"type":"DIRT"},{"x":23,"y":28,"type":"AIR"},{"x":24,"y":28,"type":"AIR","occupier":{"id":2,"playerId":1,"health":100,"position":{"x":24,"y":28},"diggingRange":1,"movementRange":1,"roundsUntilUnfrozen":0,"profession":"Agent"}},{"x":25,"y":28,"type":"AIR"},{"x":26,"y":28,"type":"DIRT"},{"x":27,"y":28,"type":"AIR"},{"x":28,"y":28,"type":"AIR"},{"x":29,"y":28,"type":"DEEP_SPACE"},{"x":30,"y":28,"type":"DEEP_SPACE"},{"x":31,"y":28,"type":"DEEP_SPACE"},{"x":32,"y":28,"type":"DEEP_SPACE"}],[{"x":0,"y":29,"type":"DEEP_SPACE"},{"x":1,"y":29,"type":"DEEP_SPACE"},{"x":2,"y":29,"type":"DEEP_SPACE"},{"x":3,"y":29,"type":"DEEP_SPACE"},{"x":4,"y":29,"type":"DEEP_SPACE"},{"x":5,"y":29,"type":"DEEP_SPACE"},{"x":6,"y":29,"type":"DIRT"},{"x":7,"y":29,"type":"AIR"},{"x":8,"y":29,"type":"AIR"},{"x":9,"y":29,"type":"AIR"},{"x":10,"y":29,"type":"DIRT"},{"x":11,"y":29,"type":"DIRT"},{"x":12,"y":29,"type":"AIR"},{"x":13,"y":29,"type":"DIRT"},{"x":14,"y":29,"type":"DIRT"},{"x":15,"y":29,"type":"DIRT"},{"x":16,"y":29,"type":"DIRT"},{"x":17,"y":29,"type":"DIRT"},{"x":18,"y":29,"type":"DIRT"},{"x":19,"y":29,"type":"DIRT"},{"x":20,"y":29,"type":"AIR"},{"x":21,"y":29,"type":"DIRT"},{"x":22,"y":29,"type":"DIRT"},{"x":23,"y":29,"type":"AIR"},{"x":24,"y":29,"type":"AIR"},{"x":25,"y":29,"type":"AIR"},{"x":26,"y":29,"type":"DIRT"},{"x":27,"y":29,"type":"DEEP_SPACE"},{"x":28,"y":29,"type":"DEEP_SPACE"},{"x":29,"y":29,"type":"DEEP_SPACE"},{"x":30,"y":29,"type":"DEEP_SPACE"},{"x":31,"y":29,"type":"DEEP_SPACE"},{"x":32,"y":29,"type":"DEEP_SPACE"}],[{"x":0,"y":30,"type":"DEEP_SPACE"},{"x":1,"y":30,"type":"DEEP_SPACE"},{"x":2,"y":30,"type":"DEEP_SPACE"},{"x":3,"y":30,"type":"DEEP_SPACE"},{"x":4,"y":30,"type":"DEEP_SPACE"},{"x":5,"y":30,"type":"DEEP_SPACE"},{"x":6,"y":30,"type":"DEEP_SPACE"},{"x":7,"y":30,"type":"DIRT"},{"x":8,"y":30,"type":"DIRT"},{"x":9,"y":30,"type":"DIRT"},{"x":10,"y":30,"type":"DIRT"},{"x":11,"y":30,"type":"DIRT"},{"x":12,"y":30,"type":"AIR"},{"x":13,"y":30,"type":"AIR"},{"x":14,"y":30,"type":"DIRT"},{"x":15,"y":30,"type":"DIRT"},{"x":16,"y":30,"type":"AIR"},{"x":17,"y":30,"type":"DIRT"},{"x":18,"y":30,"type":"DIRT"},{"x":19,"y":30,"type":"AIR"},{"x":20,"y":30,"type":"AIR"},{"x":21,"y":30,"type":"DIRT"},{"x":22,"y":30,"type":"DIRT"},{"x":23,"y":30,"type":"DIRT"},{"x":24,"y":30,"type":"DIRT"},{"x":25,"y":30,"type":"DIRT"},{"x":26,"y":30,"type":"DEEP_SPACE"},{"x":27,"y":30,"type":"DEEP_SPACE"},{"x":28,"y":30,"type":"DEEP_SPACE"},{"x":29,"y":30,"type":"DEEP_SPACE"},{"x":30,"y":30,"type":"DEEP_SPACE"},{"x":31,"y":30,"type":"DEEP_SPACE"},{"x":32,"y":30,"type":"DEEP_SPACE"}],[{"x":0,"y":31,"type":"DEEP_SPACE"},{"x":1,"y":31,"type":"DEEP_SPACE"},{"x":2,"y":31,"type":"DEEP_SPACE"},{"x":3,"y":31,"type":"DEEP_SPACE"},{"x":4,"y":31,"type":"DEEP_SPACE"},{"x":5,"y":31,"type":"DEEP_SPACE"},{"x":6,"y":31,"type":"DEEP_SPACE"},{"x":7,"y":31,"type":"DEEP_SPACE"},{"x":8,"y":31,"type":"DIRT"},{"x":9,"y":31,"type":"DIRT"},{"x":10,"y":31,"type":"DIRT"},{"x":11,"y":31,"type":"DIRT"},{"x":12,"y":31,"type":"AIR"},{"x":13,"y":31,"type":"AIR"},{"x":14,"y":31,"type":"AIR"},{"x":15,"y":31,"type":"AIR"},{"x":16,"y":31,"type":"AIR"},{"x":17,"y":31,"type":"AIR"},{"x":18,"y":31,"type":"AIR"},{"x":19,"y":31,"type":"AIR"},{"x":20,"y":31,"type":"AIR"},{"x":21,"y":31,"type":"DIRT"},{"x":22,"y":31,"type":"DIRT"},{"x":23,"y":31,"type":"DIRT"},{"x":24,"y":31,"type":"DIRT"},{"x":25,"y":31,"type":"DEEP_SPACE"},{"x":26,"y":31,"type":"DEEP_SPACE"},{"x":27,"y":31,"type":"DEEP_SPACE"},{"x":28,"y":31,"type":"DEEP_SPACE"},{"x":29,"y":31,"type":"DEEP_SPACE"},{"x":30,"y":31,"type":"DEEP_SPACE"},{"x":31,"y":31,"type":"DEEP_SPACE"},{"x":32,"y":31,"type":"DEEP_SPACE"}],[{"x":0,"y":32,"type":"DEEP_SPACE"},{"x":1,"y":32,"type":"DEEP_SPACE"},{"x":2,"y":32,"type":"DEEP_SPACE"},{"x":3,"y":32,"type":"DEEP_SPACE"},{"x":4,"y":32,"type":"DEEP_SPACE"},{"x":5,"y":32,"type":"DEEP_SPACE"},{"x":6,"y":32,"type":"DEEP_SPACE"},{"x":7,"y":32,"type":"DEEP_SPACE"},{"x":8,"y":32,"type":"DEEP_SPACE"},{"x":9,"y":32,"type":"DEEP_SPACE"},{"x":10,"y":32,"type":"DEEP_SPACE"},{"x":11,"y":32,"type":"DIRT"},{"x":12,"y":32,"type":"DIRT"},{"x":13,"y":32,"type":"DIRT"},{"x":14,"y":32,"type":"AIR"},{"x":15,"y":32,"type":"AIR"},{"x":16,"y":32,"type":"DIRT"},{"x":17,"y":32,"type":"AIR"},{"x":18,"y":32,"type":"AIR"},{"x":19,"y":32,"type":"DIRT"},{"x":20,"y":32,"type":"DIRT"},{"x":21,"y":32,"type":"DIRT"},{"x":22,"y":32,"type":"DEEP_SPACE"},{"x":23,"y":32,"type":"DEEP_SPACE"},{"x":24,"y":32,"type":"DEEP_SPACE"},{"x":25,"y":32,"type":"DEEP_SPACE"},{"x":26,"y":32,"type":"DEEP_SPACE"},{"x":27,"y":32,"type":"DEEP_SPACE"},{"x":28,"y":32,"type":"DEEP_SPACE"},{"x":29,"y":32,"type":"DEEP_SPACE"},{"x":30,"y":32,"type":"DEEP_SPACE"},{"x":31,"y":32,"type":"DEEP_SPACE"},{"x":32,"y":32,"type":"DEEP_SPACE"}]],"visualizerEvents":[]} \ No newline at end of file diff --git a/tests/replays/2019.08.19.21.57.04/B-log.csv b/tests/replays/2019.08.19.21.57.04/B-log.csv deleted file mode 100644 index cc2bfa5..0000000 --- a/tests/replays/2019.08.19.21.57.04/B-log.csv +++ /dev/null @@ -1,214 +0,0 @@ -Round,LastCommandType,LastCommand,ActiveWorm,Score,Health,Worm1 Health,Worm1 x,Worm1 y,Worm2 Health,Worm2 x,Worm2 y,Worm3 Health,Worm3 x,Worm3 y -1,null,"null",1,116,350,150,8,28,100,8,4,100,31,16 -2,move,"move 9 27",1,121,350,150,9,27,100,8,4,100,31,16 -3,move,"move 9 5",2,126,350,150,9,27,100,9,5,100,31,16 -4,move,"move 30 17",3,131,350,150,9,27,100,9,5,100,30,17 -5,dig,"dig 10 26",1,138,350,150,9,27,100,9,5,100,30,17 -6,dig,"dig 10 6",2,145,350,150,9,27,100,9,5,100,30,17 -7,dig,"dig 29 17",3,152,350,150,9,27,100,9,5,100,30,17 -8,move,"move 10 26",1,157,350,150,10,26,100,9,5,100,30,17 -9,move,"move 10 6",2,162,350,150,10,26,100,10,6,100,30,17 -10,move,"move 29 17",3,167,350,150,10,26,100,10,6,100,29,17 -11,move,"move 11 25",1,172,350,150,11,25,100,10,6,100,29,17 -12,dig,"dig 11 7",2,179,350,150,11,25,100,10,6,100,29,17 -13,dig,"dig 28 17",3,186,350,150,11,25,100,10,6,100,29,17 -14,move,"move 12 24",1,191,350,150,12,24,100,10,6,100,29,17 -15,move,"move 11 7",2,196,350,150,12,24,100,11,7,100,29,17 -16,move,"move 28 17",3,201,350,150,12,24,100,11,7,100,28,17 -17,move,"move 13 23",1,206,350,150,13,23,100,11,7,100,28,17 -18,dig,"dig 12 8",2,213,350,150,13,23,100,11,7,100,28,17 -19,dig,"dig 27 17",3,220,350,150,13,23,100,11,7,100,28,17 -20,dig,"dig 14 22",1,227,350,150,13,23,100,11,7,100,28,17 -21,move,"move 12 8",2,232,350,150,13,23,100,12,8,100,28,17 -22,move,"move 27 17",3,237,350,150,13,23,100,12,8,100,27,17 -23,move,"move 14 22",1,242,350,150,14,22,100,12,8,100,27,17 -24,move,"move 13 9",2,247,350,150,14,22,100,13,9,100,27,17 -25,dig,"dig 26 17",3,254,350,150,14,22,100,13,9,100,27,17 -26,move,"move 15 21",1,259,350,150,15,21,100,13,9,100,27,17 -27,dig,"dig 14 10",2,266,350,150,15,21,100,13,9,100,27,17 -28,move,"move 26 17",3,271,350,150,15,21,100,13,9,100,26,17 -29,move,"move 16 20",1,276,350,150,16,20,100,13,9,100,26,17 -30,move,"move 14 10",2,281,350,150,16,20,100,14,10,100,26,17 -31,dig,"dig 25 17",3,288,350,150,16,20,100,14,10,100,26,17 -32,move,"move 17 19",1,293,350,150,17,19,100,14,10,100,26,17 -33,dig,"dig 14 11",2,300,350,150,17,19,100,14,10,100,26,17 -34,move,"move 25 17",3,305,350,150,17,19,100,14,10,100,25,17 -35,move,"move 18 18",1,310,350,150,18,18,100,14,10,100,25,17 -36,move,"move 14 11",2,315,350,150,18,18,100,14,11,100,25,17 -37,move,"move 24 17",3,320,350,150,18,18,100,14,11,100,24,17 -38,move,"move 18 17",1,329,360,160,18,17,100,14,11,100,24,17 -39,move,"move 14 12",2,334,360,160,18,17,100,14,12,100,24,17 -40,dig,"dig 23 16",3,341,360,160,18,17,100,14,12,100,24,17 -41,move,"move 17 16",1,346,360,160,17,16,100,14,12,100,24,17 -42,move,"move 14 13",2,351,360,160,17,16,100,14,13,100,24,17 -43,move,"move 23 16",3,356,360,160,17,16,100,14,13,100,23,16 -44,dig,"dig 16 15",1,363,360,160,17,16,100,14,13,100,23,16 -45,dig,"dig 14 14",2,370,360,160,17,16,100,14,13,100,23,16 -46,dig,"dig 22 15",3,377,360,160,17,16,100,14,13,100,23,16 -47,move,"move 16 15",1,382,360,160,16,15,100,14,13,100,23,16 -48,move,"move 14 14",2,387,360,160,16,15,100,14,14,100,23,16 -49,move,"move 22 15",3,392,360,160,16,15,100,14,14,100,22,15 -50,move,"move 15 15",1,397,360,160,15,15,100,14,14,100,22,15 -51,move,"move 14 15",2,405,370,160,15,15,110,14,15,100,22,15 -52,dig,"dig 23 14",3,412,370,160,15,15,110,14,15,100,22,15 -53,move,"move 16 14",1,417,370,160,16,14,110,14,15,100,22,15 -54,move,"move 15 14",2,422,370,160,16,14,110,15,14,100,22,15 -55,move,"move 23 14",3,427,370,160,16,14,110,15,14,100,23,14 -56,move,"move 17 13",1,432,370,160,17,13,110,15,14,100,23,14 -57,move,"move 16 13",2,437,370,160,17,13,110,16,13,100,23,14 -58,move,"move 22 13",3,442,370,160,17,13,110,16,13,100,22,13 -59,move,"move 18 12",1,447,370,160,18,12,110,16,13,100,22,13 -60,move,"move 17 12",2,452,370,160,18,12,110,17,12,100,22,13 -61,move,"move 23 12",3,457,370,160,18,12,110,17,12,100,23,12 -62,move,"move 19 11",1,462,370,160,19,11,110,17,12,100,23,12 -63,dig,"dig 18 11",2,469,370,160,19,11,110,17,12,100,23,12 -64,move,"move 22 11",3,474,370,160,19,11,110,17,12,100,22,11 -65,move,"move 20 10",1,479,370,160,20,10,110,17,12,100,22,11 -66,move,"move 18 11",2,484,370,160,20,10,110,18,11,100,22,11 -67,move,"move 23 10",3,489,370,160,20,10,110,18,11,100,23,10 -68,dig,"dig 21 9",1,496,370,160,20,10,110,18,11,100,23,10 -69,move,"move 19 10",2,501,370,160,20,10,110,19,10,100,23,10 -70,move,"move 24 9",3,506,370,160,20,10,110,19,10,100,24,9 -71,move,"move 21 9",1,511,370,160,21,9,110,19,10,100,24,9 -72,move,"move 20 9",2,516,370,160,21,9,110,20,9,100,24,9 -73,move,"move 25 8",3,521,370,160,21,9,110,20,9,100,25,8 -74,move,"move 22 8",1,526,370,160,22,8,110,20,9,100,25,8 -75,dig,"dig 21 8",2,533,370,160,22,8,110,20,9,100,25,8 -76,snowball,"snowball 25 3",3,550,370,160,22,8,110,20,9,100,25,8 -77,move,"move 23 7",1,555,370,160,23,7,110,20,9,100,25,8 -78,move,"move 21 8",2,560,370,160,23,7,110,21,8,100,25,8 -79,move,"move 25 7",3,565,370,160,23,7,110,21,8,100,25,7 -80,dig,"dig 24 6",1,572,370,160,23,7,110,21,8,100,25,7 -81,move,"move 22 7",2,577,370,160,23,7,110,22,7,100,25,7 -82,snowball,"snowball 25 3",3,594,370,160,23,7,110,22,7,100,25,7 -83,move,"move 24 6",1,599,370,160,24,6,110,22,7,100,25,7 -84,banana,"banana 25 3",2,660,370,160,24,6,110,22,7,100,25,7 -85,dig,"dig 25 6",3,667,370,160,24,6,110,22,7,100,25,7 -86,shoot,"shoot N",3,683,370,160,24,6,110,22,7,100,25,7 -87,shoot,"shoot N",3,696,362,160,24,6,110,22,7,92,25,7 -88,shoot,"shoot N",3,710,354,160,24,6,110,22,7,84,25,7 -89,shoot,"shoot N",3,723,346,160,24,6,110,22,7,76,25,7 -90,shoot,"shoot N",3,736,338,160,24,6,110,22,7,68,25,7 -91,move,"move 25 5",1,741,338,160,25,5,110,22,7,68,25,7 -92,banana,"banana 25 3",2,762,323,145,25,5,110,22,7,68,25,7 -93,snowball,"snowball 25 3",3,779,323,145,25,5,110,22,7,68,25,7 -94,shoot,"shoot N",1,795,323,145,25,5,110,22,7,68,25,7 -95,banana,"banana 25 3",2,819,316,138,25,5,110,22,7,68,25,7 -96,move,"move 25 6",3,824,316,138,25,5,110,22,7,68,25,6 -97,shoot,"shoot N",1,840,316,138,25,5,110,22,7,68,25,6 -98,dig,"dig 23 6",2,844,308,130,25,5,110,22,7,68,25,6 -99,move,"move 25 7",3,849,308,130,25,5,110,22,7,68,25,7 -100,shoot,"shoot N",1,865,308,130,25,5,110,22,7,68,25,7 -101,move,"move 23 6",2,868,300,122,25,5,110,23,6,68,25,7 -102,move,"move 25 6",3,873,300,122,25,5,110,23,6,68,25,6 -103,shoot,"shoot N",1,889,300,122,25,5,110,23,6,68,25,6 -104,move,"move 24 5",2,891,292,114,25,5,110,24,5,68,25,6 -105,move,"move 24 7",3,896,292,114,25,5,110,24,5,68,24,7 -106,shoot,"shoot N",1,912,292,114,25,5,110,24,5,68,24,7 -107,move,"move 25 4",2,914,284,114,25,5,102,25,4,68,24,7 -108,move,"move 25 8",3,919,284,114,25,5,102,25,4,68,25,8 -109,move,"move 25 6",1,924,284,114,25,6,102,25,4,68,25,8 -110,move,"move 25 5",2,929,284,114,25,6,102,25,5,68,25,8 -111,move,"move 24 9",3,934,284,114,25,6,102,25,5,68,24,9 -112,move,"move 24 7",1,939,284,114,24,7,102,25,5,68,24,9 -113,move,"move 25 6",2,944,284,114,24,7,102,25,6,68,24,9 -114,move,"move 25 10",3,949,284,114,24,7,102,25,6,68,25,10 -115,move,"move 25 8",1,954,284,114,25,8,102,25,6,68,25,10 -116,move,"move 25 7",2,959,284,114,25,8,102,25,7,68,25,10 -117,move,"move 25 11",3,964,284,114,25,8,102,25,7,68,25,11 -118,move,"move 25 9",1,969,284,114,25,9,102,25,7,68,25,11 -119,move,"move 24 8",2,974,284,114,25,9,102,24,8,68,25,11 -120,move,"move 24 12",3,979,284,114,25,9,102,24,8,68,24,12 -121,move,"move 25 10",1,984,284,114,25,10,102,24,8,68,24,12 -122,move,"move 25 9",2,989,284,114,25,10,102,25,9,68,24,12 -123,move,"move 25 13",3,994,284,114,25,10,102,25,9,68,25,13 -124,move,"move 26 11",1,999,284,114,26,11,102,25,9,68,25,13 -125,move,"move 25 10",2,1004,284,114,26,11,102,25,10,68,25,13 -126,move,"move 25 14",3,1009,284,114,26,11,102,25,10,68,25,14 -127,dig,"dig 26 12",1,1016,284,114,26,11,102,25,10,68,25,14 -128,move,"move 24 10",2,1021,284,114,26,11,102,24,10,68,25,14 -129,move,"move 26 13",3,1026,284,114,26,11,102,24,10,68,26,13 -130,move,"move 26 12",1,1031,284,114,26,12,102,24,10,68,26,13 -131,move,"move 25 11",2,1036,284,114,26,12,102,25,11,68,26,13 -132,move,"move 25 14",3,1041,284,114,26,12,102,25,11,68,25,14 -133,move,"move 26 13",1,1046,284,114,26,13,102,25,11,68,25,14 -134,move,"move 26 12",2,1051,284,114,26,13,102,26,12,68,25,14 -135,move,"move 26 15",3,1056,284,114,26,13,102,26,12,68,26,15 -136,move,"move 26 14",1,1061,284,114,26,14,102,26,12,68,26,15 -137,move,"move 26 13",2,1066,284,114,26,14,102,26,13,68,26,15 -138,dig,"dig 26 16",3,1073,284,114,26,14,102,26,13,68,26,15 -139,move,"move 25 15",1,1078,284,114,25,15,102,26,13,68,26,15 -140,move,"move 25 14",2,1073,253,101,25,15,95,25,14,57,26,15 -141,move,"move 25 16",3,1078,253,101,25,15,95,25,14,57,25,16 -142,invalid,"invalid",1,1061,213,88,25,15,88,25,14,37,25,16 -143,move,"move 26 14",2,1066,213,88,25,15,88,26,14,37,25,16 -144,move,"move 25 17",3,1061,184,77,25,15,81,26,14,26,25,17 -145,move,"move 25 16",1,1066,184,77,25,16,81,26,14,26,25,17 -146,move,"move 25 15",2,1068,176,77,25,16,81,25,15,18,25,17 -147,shoot,"shoot S",3,1084,176,77,25,16,81,25,15,18,25,17 -148,move,"move 24 15",1,1087,168,77,24,15,81,25,15,10,25,17 -149,move,"move 25 16",2,1092,168,77,24,15,81,25,16,10,25,17 -150,shoot,"shoot S",3,1105,160,77,24,15,81,25,16,2,25,17 -151,move,"move 24 16",1,1110,160,77,24,16,81,25,16,2,25,17 -152,move,"move 24 15",2,1114,158,77,24,16,81,24,15,-6,25,17 -153,move,"move 25 17",1,1119,158,77,25,17,81,24,15,-6,25,17 -154,move,"move 25 16",2,1122,150,69,25,17,81,25,16,-6,25,17 -155,shoot,"shoot S",1,1138,150,69,25,17,81,25,16,-6,25,17 -156,move,"move 24 15",2,1140,142,61,25,17,81,24,15,-6,25,17 -157,shoot,"shoot S",1,1156,142,61,25,17,81,24,15,-6,25,17 -158,move,"move 25 16",2,1158,134,53,25,17,81,25,16,-6,25,17 -159,shoot,"shoot S",1,1174,134,53,25,17,81,25,16,-6,25,17 -160,move,"move 24 15",2,1177,126,45,25,17,81,24,15,-6,25,17 -161,shoot,"shoot S",1,1193,126,45,25,17,81,24,15,-6,25,17 -162,move,"move 25 16",2,1195,118,37,25,17,81,25,16,-6,25,17 -163,shoot,"shoot S",1,1211,118,37,25,17,81,25,16,-6,25,17 -164,move,"move 24 17",2,1213,110,29,25,17,81,24,17,-6,25,17 -165,shoot,"shoot S",1,1229,110,29,25,17,81,24,17,-6,25,17 -166,move,"move 25 18",2,1232,102,29,25,17,73,25,18,-6,25,17 -167,move,"move 26 18",1,1237,102,29,26,18,73,25,18,-6,25,17 -168,shoot,"shoot S",2,1250,94,29,26,18,65,25,18,-6,25,17 -169,move,"move 25 19",1,1255,94,29,25,19,65,25,18,-6,25,17 -170,dig,"dig 24 18",2,1259,86,21,25,19,65,25,18,-6,25,17 -171,shoot,"shoot S",1,1275,86,21,25,19,65,25,18,-6,25,17 -172,move,"move 25 17",2,1278,78,13,25,19,65,25,17,-6,25,17 -173,shoot,"shoot S",1,1294,78,13,25,19,65,25,17,-6,25,17 -174,move,"move 25 18",2,1296,70,5,25,19,65,25,18,-6,25,17 -175,shoot,"shoot S",1,1312,70,5,25,19,65,25,18,-6,25,17 -176,move,"move 24 17",2,1315,65,-3,25,19,65,24,17,-6,25,17 -177,move,"move 25 18",2,1320,65,-3,25,19,65,25,18,-6,25,17 -178,shoot,"shoot S",2,1374,57,-3,25,19,57,25,18,-6,25,17 -179,move,"move 24 17",2,1379,57,-3,25,19,57,24,17,-6,25,17 -180,move,"move 23 16",2,1384,57,-3,25,19,57,23,16,-6,25,17 -181,dig,"dig 22 16",2,1391,57,-3,25,19,57,23,16,-6,25,17 -182,move,"move 22 15",2,1396,57,-3,25,19,57,22,15,-6,25,17 -183,dig,"dig 21 15",2,1403,57,-3,25,19,57,22,15,-6,25,17 -184,move,"move 21 15",2,1408,57,-3,25,19,57,21,15,-6,25,17 -185,dig,"dig 20 15",2,1415,57,-3,25,19,57,21,15,-6,25,17 -186,move,"move 20 15",2,1420,57,-3,25,19,57,20,15,-6,25,17 -187,dig,"dig 19 15",2,1427,57,-3,25,19,57,20,15,-6,25,17 -188,move,"move 19 15",2,1432,57,-3,25,19,57,19,15,-6,25,17 -189,move,"move 18 15",2,1437,57,-3,25,19,57,18,15,-6,25,17 -190,move,"move 17 15",2,1442,57,-3,25,19,57,17,15,-6,25,17 -191,move,"move 16 15",2,1447,57,-3,25,19,57,16,15,-6,25,17 -192,move,"move 15 15",2,1452,57,-3,25,19,57,15,15,-6,25,17 -193,dig,"dig 14 16",2,1459,57,-3,25,19,57,15,15,-6,25,17 -194,move,"move 14 16",2,1464,57,-3,25,19,57,14,16,-6,25,17 -195,dig,"dig 13 17",2,1471,57,-3,25,19,57,14,16,-6,25,17 -196,move,"move 13 17",2,1476,57,-3,25,19,57,13,17,-6,25,17 -197,dig,"dig 12 18",2,1483,57,-3,25,19,57,13,17,-6,25,17 -198,move,"move 12 18",2,1488,57,-3,25,19,57,12,18,-6,25,17 -199,dig,"dig 11 18",2,1495,57,-3,25,19,57,12,18,-6,25,17 -200,move,"move 11 17",2,1500,57,-3,25,19,57,11,17,-6,25,17 -201,dig,"dig 10 17",2,1507,57,-3,25,19,57,11,17,-6,25,17 -202,move,"move 10 16",2,1512,57,-3,25,19,57,10,16,-6,25,17 -203,dig,"dig 9 16",2,1512,57,-3,25,19,57,10,16,-6,25,17 -204,dig,"dig 9 16",2,1512,57,-3,25,19,57,10,16,-6,25,17 -205,dig,"dig 9 16",2,1512,57,-3,25,19,57,10,16,-6,25,17 -206,dig,"dig 9 17",2,1512,57,-3,25,19,57,10,16,-6,25,17 -207,dig,"dig 9 17",2,1512,57,-3,25,19,57,10,16,-6,25,17 -208,dig,"dig 9 17",2,1512,57,-3,25,19,57,10,16,-6,25,17 -209,dig,"dig 9 17",2,1519,57,-3,25,19,57,10,16,-6,25,17 -210,shoot,"shoot S",2,1532,49,-3,25,19,49,10,16,-6,25,17 -211,shoot,"shoot S",2,1545,41,-3,25,19,41,10,16,-6,25,17 -212,shoot,"shoot S",2,1559,33,-3,25,19,33,10,16,-6,25,17 -213,shoot,"shoot S",2,1561,33,-3,25,19,33,10,16,-6,25,17 diff --git a/tests/strategy.rs b/tests/strategy.rs deleted file mode 100644 index 7088099..0000000 --- a/tests/strategy.rs +++ /dev/null @@ -1,27 +0,0 @@ -use std::path::Path; - -use steam_powered_wyrm::game; -use steam_powered_wyrm::json; -use steam_powered_wyrm::strategy::{choose_move_with_normalized_perf, ScoreConfig}; - -#[test] -fn strategy_is_implemented_symetrically() { - let state = game::GameBoard::new( - json::read_state_from_json_file(&Path::new(&format!("./tests/example-state.json"))) - .unwrap(), - ); - let depth = 100; - - let config = ScoreConfig::default(); - let flipped_state = { - let mut flipped_state = state.clone(); - flipped_state.players[0] = state.players[1].clone(); - flipped_state.players[1] = state.players[0].clone(); - flipped_state - }; - - let position_one_move = choose_move_with_normalized_perf(&state, &config, 0, depth); - let position_two_move = choose_move_with_normalized_perf(&flipped_state, &config, 1, depth); - - assert_eq!(position_one_move, position_two_move); -} -- cgit v1.2.3